lom_batch
Combine multiple Ableton Live get, set, and call operations into a single round trip to reduce latency. Run up to 1000 operations in order, with optional stop-on-error behavior.
Instructions
Execute multiple raw LOM operations (get, set, call) in a single round trip.
Returns:
Dictionary containing ordered results for each operation.
Note:
A batch runs inside one handler call, synchronously on Live's main thread, and is
capped at 1000 operations (max_ops=1000): a larger one is rejected upfront and never
truncated. Measured 2026-09-16 against Live 12.4.5 (macOS 26.6.2, four-track set):
one request costs about 400 ms whatever its size, with 200 ops at 500 ms, 1600 mixed
reads at 1506 ms and 3200 song.tempo gets at 1718 ms, error_count 0 throughout; past
the 200-op point the marginal cost is about 0.72 ms per mixed real read and 0.44 ms
per song.tempo get. Write and call ops were not measured and cost more.
Nothing Live recomputes between operations is visible to a later operation in the
same batch: a read after a transport jump still reports the position from before the
move, and four jumps interleaved with four reads returned four identical pre-jump
values and no error. That is the failure shape to expect here. It does not raise. It
returns a clean set of numbers that look like a measurement of a parameter which
never changes, and the conclusion drawn from them is wrong. Sample a moving
transport with one call per position, never inside a batch.
An end_marker write on an Arrangement clip is refused here rather than sent.
Observed once, 2026-09-10 against Live 12.4.5: the write was accepted without an
error and end_time did not move; what it read back was never recorded, and
docs/limits.md section 5 carries the probe that would settle it. ``atomic`` stops at
the first error but undoes nothing, so read the state back after a partial failure.
Prefer a dedicated tool where one exists: get_session, get_track, get_devices and
set_mix batch their own reads and verify, which this does not.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | The operations to run, in order (at most 1000 operations). Each one declares its own op, path and payload; the item schema carries the field meanings. | |
| atomic | No | True stops at the first error, leaving the operations before it applied and the ones after it untried. False runs every operation and reports each result. Neither rolls anything back. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||