Re: Decoding ALS file format
Posted: Thu Jan 20, 2011 3:50 am
I know I'm pretty late to the discussion here, but I was just playing with ALS files and discovered they are gzipped XML files. To decompress them you'll need a tool that can handle gzip. My suggestion is to copy the ALS file then decompress with your favorite tool. If you don't know what you're doing with gzip you may permanently damage your ALS files. Use at your own risk.
On Mac OS X you could simply open Terminal, cd to the file location, and execute this: gzip -cd MySong.als > MySong.xml
They are pretty large and complex XML files. For instance, the default template is 2,082 lines, and a simple live set of mine was over 43,000 lines of XML - but the format is very readable and clear. Their engineers obviously know how to write solid code. They are German after all.
Here's a snip to give you an idea of what's in there:
Etc. The <DeviceChain> tag is by far the largest, as it contains the ClipSlot values, gobs of info for each plugin including each parameter and some type of serialized buffer content (big blocks of hexadecimal values).
On Mac OS X you could simply open Terminal, cd to the file location, and execute this: gzip -cd MySong.als > MySong.xml
They are pretty large and complex XML files. For instance, the default template is 2,082 lines, and a simple live set of mine was over 43,000 lines of XML - but the format is very readable and clear. Their engineers obviously know how to write solid code. They are German after all.
Here's a snip to give you an idea of what's in there:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<Ableton MajorVersion="4" MinorVersion="8.1_225">
<LiveSet>
<OverwriteProtectionNumber Value="5" />
<Tracks>
<AudioTrack Id="0">
<EnvelopeModePreferred Value="false" />
<TrackDelay>
<Value Value="0" />
<IsValueSampleBased Value="false" />
</TrackDelay>
<Name>
<UserName Value="Guitar 1" />
<Annotation Value="" />
</Name>
<ColorIndex Value="140" />
<TrackGroupId Value="-1" />
<SavedPlayingSlot Value="-1" />
<SavedPlayingOffset Value="0" />
<MidiFoldIn Value="false" />
<MidiPrelisten Value="false" />
<Freeze Value="false" />
<VelocityDetail Value="0" />
<NeedArrangerRefreeze Value="true" />
<PostProcessFreezeClips Value="0" />
<MidiTargetPrefersFoldOrIsNotUniform Value="false" />
<DeviceChain> ... </DeviceChain>