als file format
als file format
an Ableton Live set (.als) is a gzip-compressed XML document. gunzip -c set.als yields a few MB of readable <Ableton><LiveSet>…. it reflects the last save, not the live state.
arrangement automation is in the file, joined by id
the API does not expose arrangement-lane breakpoints, but the file does:
- each automatable parameter element carries an
<AutomationTarget Id="N">child (next to its<Manual Value=…>current value). - each track has
<AutomationEnvelopes><Envelopes><AutomationEnvelope>whose<EnvelopeTarget><PointeeId Value="N"/>names that id, and whose<Automation><Events>holdsFloatEvent/BoolEvent/EnumEventbreakpoints withTime(beats) andValue, optionally bezier handlesCurveControl1X/Y,CurveControl2X/Y. aTime="-63072000"event is the pre-roll initial value.
so: walk the tree once indexing every AutomationTarget id by its enclosing track (MidiTrack/AudioTrack/ReturnTrack/MainTrack, name in Name/EffectiveName), device (the child of a <Devices> container; name in UserName or the tag, e.g. Eq8, Compressor2, DrumGroupDevice) and parameter element (the tag; rack macros are MacroControls.N, named by the sibling MacroDisplayNames.N). mixer parameters sit under DeviceChain/Mixer (Volume, Pan, Sends, and on the main track Tempo, TimeSignature). then join envelopes to that index.
values are the file's native units (mixer volume 0–1 where 0.85 is 0 dB, gains in dB, on/off as bools, enums as ints), not Live's display strings.
prior art
existing parsers (pyableton, dawtool, loive) model the schema or read tempo automation; none resolve envelopes to arbitrary device parameters, but the join above is ~150 lines of ElementTree.
sources
- github.com/zzstoatzz/ableton-mcp —
MCP_Server/als.py, 2026-08-23 (Live 12.4.3 set, MajorVersion 5 / MinorVersion 12.0)
Did you enjoy this article?
Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.