Published 2024-03-20.
Last modified 2024-03-21.
Time to read: 4 minutes.
av_studio
collection.
I created the free, open-source live_set
project because I was having problems
transferring some Ableton Live sets to Push 3 Standalone.
The information provided by Ableton Live was insufficient to understand what the problems were.
The live_set
project is packaged as a Ruby gem.
Two commands are provided: live_set
and als_delta
.
Although these programs should work to some degree with all versions of Ableton Live, they have only been tested with Live 11 and 12.
Live_set
The live_set
command can:
- Make a copy of an Ableton Live 12 set and save it in Live 11 format.
- Report the version compatibility of an Ableton Live set.
- Detect environmental problems, for example, unwanted directories called
Ableton Project Info
in parent directories. - Display the location and size of the samples in each track.
- Clearly show if a Live set is ready to be transferred to a Push 3 Standalone, and what needs to be changed if not.
- Detects sets that are too large to be frozen, which means they are too large to transfer to Push 3 Standalone.
- Shows audio tracks that are not frozen, which means they are not ready to be transferred to Push 3 Standalone.
- Shows clips that have not been collected within the set’s project directory.
Live_set
has successfully converted the
Ableton Live 12 demo project
to Live 11.
It converts a copy of the original, so the original set is unaltered.
Als_delta
The als_delta
command can show detailed changes to the XML definition for the Live set as you work on the set.
Currently, this command is not yet functional.
Installation
Simply type:
$ gem install live_set
If the above does not work because you need to install Ruby, please follow these instructions.
Upgrading
Simply type:
$ gem upgrade live_set
Usage
Help Messages
$ live_set Displays information about a Live set or converts a copy of a Live 12 set in Live 11 format. Also verifies that 'Ableton Project Info' is in the same directory as the .als file, and there is no parent directory with a directory of that name.
Syntax: live_set OPTIONS PATH_TO_ALS_FILE
Environment variables used in PATH_TO_ALS_FILE are expanded.
Options are: -11 Convert a copy of the Live 12 set to Live 11 format. -f Overwrite any existing Live 11 set. -h Display this help message.
Example: live_set -11 -f $path/to/my_set.als
$ als_delta ls_delta: Shows changes to an .als file. Press enter to compare with the previous version.
Syntax: ls_delta OPTIONS PATH_TO_ALS_FILE
Environment variables used in PATH_TO_ALS_FILE are expanded.
Options are: -k Keep each backup (default is to delete them) -h Display this help message.
Example: ls_delta $path/to/my_v12_set.al
Report
Report information about the Ableton Live 12 Demo Project:
$ live_set "$ableton_media/Projects/Ableton Live 12 Demo Project/Ableton Live 12 Demo.als" /mnt/e/media/Ableton/Projects/Ableton Live 12 Demo Project/Ableton Live 12 Demo.als Created by Ableton Live 12.0 Major version 5 Minor version v12.0_12049 SchemaChangeCount 7 Revision 5094b92fa547974769f44cf233f1474777d9434a Total set size: 312.5 MB Warning: some tracks are not frozen, so this set should not be transferred to Push 3 Standalone. 4 tracks: Track 'Vocal Main' (12 clips, totaling 154.0 MB) Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34 Samples/Imported/Vocal Patience Main.wav 12.8 MB 2024-01-31 22:00:34
Track 'Vocal Harmony' (12 clips, totaling 154.0 MB) Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04 Samples/Imported/Vocal Patience Harmony.wav 12.8 MB 2024-01-31 22:00:04
Track 'Vocal Hum' (1 clips, totaling 2.9 MB) Samples/Imported/Vocal Patience Hum.wav 2.9 MB 2024-01-31 22:03:22
Track 'Vocal Adlib' (2 clips, totaling 1.7 MB) Samples/Imported/Vocal Patience Adlib.wav 827.9 kB 2024-01-31 22:00:22 Samples/Imported/Vocal Patience Adlib.wav 827.9 kB 2024-01-31 22:00:22
Convert
Make a Live 12 set compatible with Live 11 and save as path/to/my_set_11.als
:
$ live_set -11 -f path/to/my_set.als
This command will not convert older versions to Live 11 format; use Ableton Live for that.
When Live 13+ is released, this command is unlikely to convert Live 13 sets to earlier versions correctly unless an update to live_set
is released.
Show Changes
Show changes to path/to/my_set.als
:
$ als_delta path/to/my_set.als
Exploration
Let’s use live_set
to learn exactly what Ableton Live’s File / Collect All and Save menu item does.
- Create a new Live set: CTRL-N. The default Ableton Live set has 2 empty MIDI tracks and 2 empty Audio tracks.
-
Drag an MP3 file into the large center area of Live that says Drop Files and Devices Here.
I dragged in a file called
E:\music\Passacaglia - Kapsberger.mp3
, which was 2.606 MB. - Click on the new clip and disable Warp down below in the Clip panel.
-
Save the new Live set.
I saved to
E:\media\Ableton\Projects\Test1
, which caused Ableton Live to create a directory calledE:\media\Ableton\Projects\Test1 Project
. The directory listing was:Shell$ ls -1 'Ableton Project Info'/ Desktop.ini* Test1.als*
-
Use
live_set
to display the audio tracks in the set:Shell$ live_set Test1.als Test1.als Created by Ableton Live 11.3.22 Major version 5 Minor version v11.0_11300 SchemaChangeCount 3 Revision 86c4913d7978d564614e61d7105424edb3d2ee4b Total set size: 2.7 MB Warning: some tracks are not frozen, so this set should not be transferred to Push 3 Standalone. 3 tracks: Track '3-Audio' (0 clips, totaling 0.0 bytes)
Track '4-Audio' (0 clips, totaling 0.0 bytes)
Track '5-Passacaglia - Kapsberger' (1 clips, totaling 2.7 MB) ../../../../music/Passacaglia - Kapsberger.mp3 2.7 MB 2023-02-23 09:28:31
We can see that the MP3 file does not reside within the Ableton Live set directory. Instead, its path relative to the Live set directory is../../../../music/Passacaglia - Kapsberger.mp3
. -
Use the File / Collect All and Save menu item.
-
Use
live_set
again to display the set:Shell$ live_set Test1.als Test1.als Created by Ableton Live 11.3.22 Major version 5 Minor version v11.0_11300 SchemaChangeCount 3 Revision 86c4913d7978d564614e61d7105424edb3d2ee4b Total set size: 2.7 MB Warning: some tracks are not frozen, so this set should not be transferred to Push 3 Standalone. 3 tracks: Track '3-Audio' (0 clips, totaling 0.0 bytes)
Track '4-Audio' (0 clips, totaling 0.0 bytes)
Track '5-Passacaglia - Kapsberger' (1 clips, totaling 2.7 MB) Samples/Imported/Passacaglia - Kapsberger.mp3 2.7 MB 2023-02-23 09:28:31
We can see that Collect All and Save placed a copy of the MP3 file in a new directory within the Live set calledSamples/Imported/
. - Now that a copy of the MP3 file resides within the Live set directory tree, we can freeze the track.
-
Once the track is frozen,
live_set
shows we are ready to transfer the set to P3S.Shell$ live_set Test1.als Test1.als Created by Ableton Live 11.3.22 Major version 5 Minor version v11.0_11300 SchemaChangeCount 3 Revision 86c4913d7978d564614e61d7105424edb3d2ee4b Ready for transfer to Push 3 Standalone Total set size: 2.7 MB 3 tracks: Track '3-Audio' (0 clips, totaling 0.0 bytes)
Track '4-Audio' (0 clips, totaling 0.0 bytes)
Track '5-Passacaglia - Kapsberger' (1 clips, totaling 2.7 MB) Samples/Imported/Passacaglia - Kapsberger.mp3 2.7 MB 2023-02-23 09:28:31
Samples/Collected/
.”
live_set
shows that audio files are actually copied to Samples/Imported/
.
Background
Gzip Files
Ableton Live .als
files are stored in gzip
format, which
7-zip can open.
If you know how to use the bash command line,
another way to work with gzip
files is to use the
zcat
, zless
, zgrep
and zdiff
commands.
Gzip files are often saved with a .gz
file name extension; however,
other file extensions can be used.
Unlike zip
files, which are portable yet independent file systems that can contain many individual files,
gzip
files merely consist of one compressed file.
Ableton Live Set Directory Structure
A minimal Ableton Live set is a directory tree containing the following:
-
An
.als
file, which defines the structure and some of the content. This file is in XML format, compressed usinggzip
, with an.als
file name extension. -
A subdirectory named
Ableton Project Info
. This directory is merely a marker; Live does not examine its contents. However, it is common for a file calledAProject.ico
to be placed inside.
Note that a Live set’s parent directories should not contain anyAbleton Project Info
subdirectories. ExtraAbleton Project Info
subdirectories can cause Live to become confused as to what the boundaries of a Live set are. TheLive_set
command checks for this problem and, if found, asks if you want the problem to be corrected.
Live projects can also contain other directories and files.
For example, when the menu item File / Collect All and Save is used,
clips stored outside the Live set directory tree that had been dragged into the project will be copied into a subdirectory
called Samples/Imported/
within the Live set directory tree.
Manually Downgrading A Live Set
The following incantation displays the first two lines of a Live set definition file called
path/to/my_set.als
.
The output is folded so you can read it easily:
$ zcat path/to/my_set.als | head -n 2 <?xml version="1.0" encoding="UTF-8"?> <Ableton MajorVersion="5" MinorVersion="12.0_12049" SchemaChangeCount="7" Creator="Ableton Live 12.0" Revision="5094b92fa547974769f44cf233f1474777d9434a">
If a Live 12 set does not use any Live 12 features,
it can be converted to Live 11 format as described in the following steps.
The live_set
command works in a similar manner,
although the program is written in the Ruby language instead of English.
-
Change the second line of the XML file to:
Line 2 of my_set.als
<Ableton MajorVersion="5" MinorVersion="11.0_11300" SchemaChangeCount="3" Creator="Ableton Live 11.3.21" Revision="5ac24cad7c51ea0671d49e6b4885371f15b57c1e">
-
Delete the
<ContentLanes/>
,<ExpressionLanes/>
,<InstrumentMeld/>
,<Roar/>
and<MxPatchRef/>
sections. -
Change all instances of
AudioOut/Main
toAudioOut/Master
. Must we be so ridiculously woke? Others agree with my sentiment. - Save the modified XML as a new file. This new file is only needed for the next step.
-
Compress the XML file using
gzip
and save it in the same directory with an.als
file type. - Delete the uncompressed XML file, unless you want to continue to experiment with it.
Development
After checking out this git repository, install dependencies by running bin/setup
:
$ git clone https://github.com/mslinn/live_set
$ cd live_set
$ bin/setup
$ code . # Run Visual Studio Code
Run the Tests
$ bundle exec rake test
Debug run
Define the VO_DEBUGGING
environment variable so the code is loaded from the project instead of attempting to load the live_set
gem.
$ VO_DEBUGGING=true ruby exe/live_set /path/to/my_set.als
Interactive Session
The following will allow you to experiment:
$ bin/console
Local Installation
To install this gem onto your local machine, type:
$ bundle exec rake install
To Release A New Version
To create a git tag for the new version, push git commits and tags, and push the new version of the gem to rubygems.org
, type:
$ bundle exec rake release