Repository navigation
fix: arrangement clip create targets the new clip; clarify set-display - #133
Conversation
- arrangement clip create wrote --notes-* into clips[before_count], the last clip in start-time order, so a clip created before existing clips got no notes. Audio creation set the length on that same wrong clip, and arrangement from-session wrote notes there too. All three now find the new clip by its start time. - audio loudness/spectrum analyze rejected MP3 and other non-WAV input. Non-WAV files are now decoded to 24-bit PCM through ffmpeg for the sample metrics. - device parameter set-display help now says the value is a bare number in the display unit, and that negatives go after --. - Document the GUI step to turn Back to Arrangement off after session capture. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # src/ableton_cli/audio_analysis/io.py # src/ableton_cli/audio_analysis/loudness.py # src/ableton_cli/audio_analysis/spectrum.py # tests/test_audio_ebur128.py
Checked in Live 12 SuiteThis is a local, unpushed merge of this branch with #132. I installed its Remote Script and started Live fresh. MIDI: notes go to the clip just created. On track 0, I created clips out of start-time order. Each had a single note: beat 8 → pitch 72, then beat 0 → 60, then beat 4 → 64. Reading each clip back with
Before the fix, the beat-0 clip's notes went to the beat-8 clip. Audio: Separate, pre-existing issue (same code on main). Live refuses 🤖 Generated with Claude Code |
What this changes for you
These fixes come from the bug notes taken during the HyperFlip v3 build (
bugs.md).arrangement clip create --notes-*writes the notes into the clip it just created. Live keepsarrangement_clipsin start-time order, but the backend pickedclips[before_count]. When the new clip started before existing clips, it got no notes and the track's last clip got them instead. This was hit throughlive-deemute plan --replace. The same lookup had two more consequences:arrangement clip createset--lengthon the wrong clip;arrangement from-sessionwrote repeated notes to the wrong clip when cursor positions were not in order.All three paths now share
_created_arrangement_clip_index, which finds the new clip bystart_time. If it does not find exactly one clip, it fails withINVALID_ARGUMENTinstead of picking a neighbour.device parameter set-displayhelp says what the value is. The value is a bare number in the display unit:180for 180 ms,2000for 2.00 s,-6for -6 dB. Unit text is rejected, and negatives go after--. The README says the same.Computer Use docs.
docs/computer-use/cli-gaps.mdnow lists the GUI-only step of turning Back to Arrangement off aftersession capture, with a playbook inableton-live.md.Not fixed here (follow-ups)
device parameters list --device-refwithout a track selector. A device ref could carry its track, but that changes the wire protocol for every device command, so it needs its own change.session capturecan clean up after itself. It needs a new Remote Script command, verified in a running Live.session capturestarts (already detected and reported, so a retry works), the bar-0 pre-roll limit, the Wavetable unison/wavetable gap (a Live API limit, already documented), and the unwarp length glitch, which was not reproduced on its own.Public contract impact
This is an intentional change, limited to help text.
command_surface_snapshot.jsonchanges only in theset-displayVALUE help. Commands, envelopes, exit codes and protocol are unchanged.public_contract_snapshot.jsonhas no diff.Update after the plugin split
Main moved offline audio analysis (
audio loudness/spectrum/reference) into the ableton-cli-analysis plugin (#136). This PR's non-WAV support was inloudness.py/spectrum.py, which no longer exist in core. That part now lives in 6uclz1/ableton-cli-analysis#1. This PR keeps the arrangement clip fix, theset-displayhelp and the Computer Use docs. Core'saudio_analysis/io.pyis main's version unchanged.After merging main: full pytest 1523 passed,
dev_checks/ruff check/ruff format --checkpass, the quality harness reports 0 failures (407 warnings), andgenerate_skill_docs.pyproduces no diff.Verification (original)
dev_checks,ruff checkandruff format --checkpass. Full pytest: 1456 passed. The quality harness exits 0 with 0 failures and warnings stay at 416.generate_skill_docs.pyproduces no diff. The Remote Script runtime check passes.🤖 Generated with Claude Code