Mike Slinn

Live_set - Debug Tool For Ableton Live Sets

Published 2024-03-20. Last modified 2024-03-21.
Time to read: 4 minutes.

This page is part of the 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:

  1. Make a copy of an Ableton Live 12 set and save it in Live 11 format.
  2. Report the version compatibility of an Ableton Live set.
  3. Detect environmental problems, for example, unwanted directories called Ableton Project Info in parent directories.
  4. Display the location and size of the samples in each track.
  5. Clearly show if a Live set is ready to be transferred to a Push 3 Standalone, and what needs to be changed if not.
    1. Detects sets that are too large to be frozen, which means they are too large to transfer to Push 3 Standalone.
    2. Shows audio tracks that are not frozen, which means they are not ready to be transferred to Push 3 Standalone.
    3. 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:

Shell
$ gem install live_set

If the above does not work because you need to install Ruby, please follow these instructions.

Upgrading

Simply type:

Shell
$ gem upgrade live_set

Usage

Help Messages

Shell
$ 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
Shell
$ 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:

Shell
$ 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:

Shell
$ 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:

Shell
$ 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.

  1. Create a new Live set: CTRL-N. The default Ableton Live set has 2 empty MIDI tracks and 2 empty Audio tracks.
  2. 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.
  3. Click on the new clip and disable Warp down below in the Clip panel.
  4. Save the new Live set. I saved to E:\media\Ableton\Projects\Test1, which caused Ableton Live to create a directory called E:\media\Ableton\Projects\Test1 Project. The directory listing was:
    Shell
    $ ls -1
    'Ableton Project Info'/
    Desktop.ini*
    Test1.als*
  5. 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.
  6. Use the File / Collect All and Save menu item.
  7. 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 called Samples/Imported/.
  8. Now that a copy of the MP3 file resides within the Live set directory tree, we can freeze the track.
  9. 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
Step 7 above shows us that Ableton’s documentation is incorrect; it states, “Any audio files used are copied to 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 using gzip, 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 called AProject.ico to be placed inside.

    Note that a Live set’s parent directories should not contain any Ableton Project Info subdirectories. Extra Ableton Project Info subdirectories can cause Live to become confused as to what the boundaries of a Live set are. The Live_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:

Shell
$ 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.

  1. 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">
  2. Delete the <ContentLanes/>, <ExpressionLanes/>, <InstrumentMeld/>, <Roar/> and <MxPatchRef/> sections.
  3. Change all instances of AudioOut/Main to AudioOut/Master. Must we be so ridiculously woke? Others agree with my sentiment.
  4. Save the modified XML as a new file. This new file is only needed for the next step.
  5. Compress the XML file using gzip and save it in the same directory with an .als file type.
  6. 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:

Shell
$ git clone https://github.com/mslinn/live_set
$ cd live_set
$ bin/setup
$ code . # Run Visual Studio Code

Run the Tests

Shell
$ 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.

Shell
$ VO_DEBUGGING=true ruby exe/live_set /path/to/my_set.als

Interactive Session

The following will allow you to experiment:

Shell
$ bin/console

Local Installation

To install this gem onto your local machine, type:

Shell
$ 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:

Shell
$ bundle exec rake release
* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.