Ableton publishes no specification for this format. What follows comes from programs that read real sets: dawtool (Live 8 to 12), PyAbleton, and published notes on the XML. The layout changes between Live versions, and a reader should expect elements it does not know.
The gzip wrapper
An .als file is one gzip member, so
it starts with the bytes 1F 8B 08. PRONOM records the format as gzipped
XML from Live 8.2.1 onwards and says earlier versions may differ. Unpacked, the document
starts with the XML declaration <?xml version="1.0"
encoding="UTF-8"?>, then the Ableton element.
The usual way to edit a set by hand is to unpack it, change the XML and pack it again; one published note warns that Live may report a corrupt project if the file is not compressed again.
The root element
The document has one root, Ableton, holding one LiveSet.
Its attributes say which program wrote the file.
| Attribute | Example | Meaning |
|---|---|---|
MajorVersion | 5 | 5 in a Live 12 set, so it is not Live’s major version. Its meaning is not documented. |
MinorVersion | 12.1_12115 | Written a.b_c. The number before the point is the Live major version, which readers use to choose element paths. |
SchemaChangeCount | 3 | Unconfirmed; the name suggests a count of schema changes. |
Creator | Ableton Live 12.1.5 Suite | The program, version and edition that saved the set. |
Revision | empty | A revision identifier, sometimes empty. |
<?xml version="1.0" encoding="UTF-8"?>
<Ableton MajorVersion="5" MinorVersion="12.1_12115" SchemaChangeCount="3"
Creator="Ableton Live 12.1.5 Suite" Revision="">
<LiveSet>
…
</LiveSet>
</Ableton>
How values are written
In the published examples, almost every value is an element with a
Value attribute, rather than text between tags:
<LomId Value="0" />
<UserName Value="Bass" />
<IsExpanded Value="true" />
| Convention | Meaning |
|---|---|
Value | The value of a leaf element. Booleans are true or false. |
Id | On list members (tracks, clips, scenes, key tracks, automation events), the object’s number within the set. |
LomId, LomIdView | Live Object Model identifiers, 0 in saved files in the published examples. |
Manual | The value of a parameter when no automation drives it, as in Tempo/Manual. |
AutomationTarget | A parameter’s automation address. Its Id is what an envelope’s EnvelopeTarget/PointeeId names. See automation. |
NextPointeeId | In LiveSet: the next free pointee number. Tools that add automation targets must keep this above every id used. |
Time
Positions and lengths in the arrangement, in clips and on locators are in beats, as real numbers, not seconds. Converting to seconds needs the tempo and any tempo automation. In dawtool’s reading of sets, the tempo automation’s first event sits at a large negative time (about −63072000) and holds the starting tempo.
Not confirmed
- What
SchemaChangeCountcounts, and what each value means. - How the document differs before Live 8.2.1, or in the older versions of Live.