Repository navigation
fix: match standard synth/effect keys to Live 12 names; allow browser reads under --read-only - #131
Merged
Conversation
…s under --read-only
The standard wrappers failed on Live 12.4.6 because the spec tables named
parameters that Live 12 factory devices do not have, and the backend test
fixtures used those same invented names, so the tests passed anyway.
- Wavetable: filter_cutoff/filter_resonance now target "Flt 1 Freq"/"Flt 1 Res".
- Drift: filter_resonance now targets "LP Res".
- Utility: gain now targets "Output" (Live 12 has no "Gain"; it shows dB).
- Reverb: Live 12 has one band-pass input filter, not separate cuts, so the
low_cut/high_cut keys become input_filter_freq/input_filter_width
("Input Freq"/"Input Width"). This changes `effect reverb keys`.
A fixture of parameter names captured from Live 12.4.6 factory devices backs a
test that every standard key of every supported type resolves.
`browser search` and `browser tree` were declared as writes when the command
table was transcribed, so --read-only rejected them. Both only read the
browser; they are now reads. The public contract snapshot records the change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes for you
This fixes the three problems found during the live check of #130.
Standard wrappers now work on Live 12.
synth wavetable,synth drift,effect utilityandeffect reverbused to fail on everyobserveandsetwithMissing required standard … keys. The spec tables named parameters that Live 12 factory devices do not have:filter_cutoff/filter_resonanceFilter 1 Freq/Filter 1 ResFlt 1 Freq/Flt 1 Resfilter_resonanceLP ResoLP ResgainGainOutput(displayed in dB)low_cut/high_cutLowCut,In Filter Freq, …Live 12 Reverb has a single band-pass input filter, with a frequency and a width, rather than separate low and high cuts. The two keys are renamed to match:
input_filter_freq→Input Freqandinput_filter_width→Input Width. This changes the output ofeffect reverb keysandmaster effectreverb keys. Those keys were never in the README, the skill docs or the snapshots. Meld, EQ Eight, Limiter, Compressor and Auto Filter already resolved and are unchanged.browser searchandbrowser treework under--read-only. Both only read the browser. They were declaredwritewhen the command table was transcribed ina00979b, so--read-onlyrejected them. They are nowread, which is idempotent.Why the tests did not catch it
The backend test fixtures used the same invented names as the specs, so the tests passed against parameters that do not exist.
tests/fixtures/live_12_device_parameter_names.jsonnow holds the parameter names of all nine factory devices, captured from Live 12.4.6.tests/test_standard_parameter_specs_live12.pyasserts three things:The fixture names in
tests/test_live_backend.pythat no longer resolved were updated to the real names.Public contract impact
This is an intentional change. In
public_contract_snapshot.json,browser searchandbrowser treechange fromside_effect.kindwritetoread, withidempotentset to true. The reverb key names change as described above. The command surface, envelopes, exit codes and protocol are unchanged.Verification
dev_checksandruff checkpass, andruff format --checkis clean. Full pytest: 1453 passed. The quality harness exits 0 with 0 failures; warnings stay at 416 and duplicate groups at 66.generate_skill_docs.pyproduces no diff. The Remote Script runtime check passes.synth_specs/effect_specs. I then loaded the factory Wavetable, Drift, Meld, Utility, EQ Eight, Limiter, Compressor, Auto Filter and Reverb into an empty set.observepasses for all nine types.setpasses for Wavetablefilter_cutoff/filter_resonance, Driftfilter_resonance, Utilitygainand Reverbinput_filter_width. Utilitygain0.2 showsOutputat 7.00 dB.--read-only browser searchand--read-only browser treereturn OK.Left as is
low_cut_freq/high_cut_freqaliases (LowCut Frequency, …) also do not exist in Live 12. The keys fall back to1 Frequency A/8 Frequency A, solow_cut_freqreads the same parameter asband1_freq. They resolve, so this PR leaves them, but the mapping is worth revisiting.effect parameter set <track> <device> <parameter> <value>example indocs/man/ableton-cli.1.instill uses positional selectors.🤖 Generated with Claude Code