lom_set
Write Ableton Live properties via LOM path and verify read-back, handling out-of-range clamps, quantized values, and Live object references for reliable state changes.
Instructions
Write a property value by LOM path and return verification read-back.
The generic write, and the unvalidated one: set_parameter, set_mix and set_tempo check
the catalog first. lom_call takes a method, lom_batch several writes in one round trip.
Returns:
Dictionary reporting requested, before, after, clamped, and changed status.
For a device parameter it also carries ``display`` and ``is_quantized``.
Note:
An out-of-range value is refused out loud and nothing is stored: ``...volume.value =
1.4`` answers ``live_error "Invalid value. Check the parameters range with
min/max"`` and leaves 0.85 standing, as do tempo 5000 and panning 5. What the
read-back catches is quantised snap: ``<Compressor>.parameters[10].value = 0.4``
(Model: Peak / RMS / Expand) stored 0 and reported ``clamped: true, read_back:
"clamped", is_quantized: true, display: "Peak"``, so a value between two steps
silently becomes another. ``is_quantized`` is what separates a snap to a step
from a clamp to a range.
A write can apply asynchronously, leaving ``read_back`` at ``not_observed``, which
is neither ``clamped`` nor a failure; a method call has no read-back at all; and an
unknown property name is ignored and reported as success, so check ``changed``
rather than ``ok``. A collection like ``song.tracks`` cannot be assigned: set a
property on an element instead.
A Live object cannot travel as a plain value. Where a property holds one
(``song.view.selected_track``, ``song.view.selected_scene``,
``song.view.detail_clip``, ``browser.hotswap_target``, ``clip.groove``, and on a
device ``input_routing_type`` and ``input_routing_channel``) pass
``value={"__path__": "song.tracks[2]"}`` (protocol section 5.4); handed plain JSON
the first five answer ``not_settable``. The two routing properties take their
reference out of ``<device>.available_input_routing_types`` and
``...available_input_routing_channels``, never a name string.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Settable dotted LOM path, e.g. 'song.tempo' or 'song.tracks[0].mixer_device.volume.value'. Note the trailing ``.value``: a mixer control is a DeviceParameter object and the number lives one level inside it. | |
| value | Yes | The value to store. A number, string or boolean for a scalar property; a reference dict {'__path__': 'song.tracks[2]'} for a property whose value is itself a Live object. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||