Versioning Ableton Live projects with large files

This is a follow-up of one of the first posts here keep-track-of-versions-of-your-song-with-Ableton. At first this was a bit tricky, because you could choose leave out large files, like .wav recordings and samples and even the .als project files. Or you could defy a warning from Git stating that it doesn’t handle large files well, performance-wise. This will hit you when you push and checkout your repository remotely. Now you can start using the new Large File Storage (LFS) feature, that handles versions of the large files as markers in the Git repository, improving the speed at which Git can handle these large files when getting the latest version remotely. Please note that these versioning tools might work for your DAW too.

But why Git versioning?

Lets go back to the beginning. Why should you consider using Git for versioning of your Ableton Live projects? Version 10 of Ableton Live keeps backups of your project files. If something goes wrong, you can go back 20 or more versions. The problem is, what version on which time and date contains which changes? There is no way to tell. With Git versioning you can attach a message to each set of changes (commit) and you can decide which part of which commit you want to keep. The thing that holds most people back from using Git is its complexity.

Git is even more powerful in combination with a shared remote repository like GitHub or Bitbucket. This will allow you to work together remotely on a shared project with more musicians, while at the same time giving you the liberty to work stand alone. Contact me if you want to hear more about this. Please note that some remote repositories are not free if you want to store private content and collaborate. Otherwise everything you put on it is public. GitHub now allows free private repositories.

Collaborative repository on GitHub
Collaborative repository on GitHub

With its power comes a set of command line instructions that scares the shit out of any musician. For daily use I turn to SourceTree for a more graphical and pleasant Git experience. SourceTree is free and hides most complex command line instructions behind a more useable interface. There will be a time however when you really will have to dive in to the nitty gritty and this post will also dive deep. Fortunately the latest version of SourceTree also understands the new LFS features.

Large File Storage

The first step will be to install Git LFS on top of Git. By the way SourceTree has embedded versions of Git and Git LFS that you can install alongside. I have no idea how powerful these embedded versions are compared to the stand alone versions. Then here the steps you need to take to activate the Large File Storage feature. Open a command line in the project folder where you created your Git repository and type (as marked in bold):

b2fab@STUDIO MINGW64 /d/Documents/Ableton/Goodbye Project (master)
$ git lfs install
Updated git hooks.
Git LFS initialized.

b2fab@STUDIO MINGW64 /d/Documents/Ableton/Goodbye Project (master)
$ git lfs track *.wav
Tracking "B2FAB - Goodbye ft Hanny (Mastered).wav"
Tracking "Goodbye (instrumental).wav"
Tracking "Goodbye ft Hanny (unmastered).wav"
Tracking "Goodbye ft Hanny.wav"
Tracking "Goodbye Hanny (FY).wav"
Tracking "Goodbye.concept.wav"

b2fab@STUDIO MINGW64 /d/Documents/Ableton/Goodbye Project (master)
$ git lfs track *.als
Tracking "Goodbye Hanny (Exp).als"
Tracking "Goodbye Hanny (FY).als"
Tracking "Goodbye Hanny (FYCD).als"
Tracking "Goodbye Hanny Beat.als"
Tracking "Goodbye.concept.als"
Tracking "Goodbye.Hanny.als"
Tracking "Goodbye.instrumental.als"
b2fab@STUDIO MINGW64 /d/Documents/Ableton/Goodbye Project (master)
$

As you can see the install statement just prepares the repository. The track statements marks large file types to be treated as LFS files. From that point you need to commit this change and its .gitattributes and you are good to go. If you want I can go live on Instagram or help you out.

Commit Git LFS in SourceTree
Commit Git LFS in SourceTree

Keep track of versions of your Ableton projects with Git

This is by no means very new, but it might give you some practical hands-on for working with Git and Ableton. I am also aware that you can really integrate more with filters and helpers and all other kinds of tricks, but this article shows you that you can start with versioning your musical work by simple means.

What is Git

Git is about versioning. Keeping versions of your song while it is progressing to its final state. One of the most annoying things that can happen is losing the last best version of your song because of some mishap. DAWs can crash and then when you recover, what if you end up with crap? Aargh! You can accidentally delete stuff and later notice that some vital sound or effect got lost. How to get it back? Is Undo failing you? You did make backups or…?

A backup will bring you one version back, unless you are the kind of person that saves every version with a date/time stamp. And then what do these dates say? Is the Friday version better than the Saturday version?

My solution is to use Git. Git is software that allows versioning at a file level. It saves every file change in a specific folder, or sub folder, in a special internal store, together with a comment that explains what the purpose of the file changes was. Git is at its best with text files, but it can also handle binary files out of the box. Its purpose is grander than just versioning files in folders. It supports team collaboration on versions and its functionality goes well beyond my daily use for music.

How to use Git

The way i use Git is fairly basic. At the end of a session working with Ableton on one song or a set of songs i close down Ableton. Then i let Git take a snapshot of the folder that holds the project. Git can be instructed very specifically on the files to include in this snapshot and which files to leave out. Git calls this snapshot a commit. More or that later. Then i add a comment to this commit, like “Frozen Epica for better performance in the mix”. Ever since i started using this versioning of songs it has saved me many times from losing the “latest greatest” mix.

Git versioning

If you dive in to articles about Git, you will find that working with it is actually very technical, daunting even. For that purpose i use a shell around Git that makes it graphical and easy to use, SourceTree. It is free and can be installed in its most basic form with Git embedded. You do need to register.

Committing projects to your repositories

If you have it up and running you can start adding your projects to Git by creating new repositories for them. Click Clone/New and Create new Repository. Add the folder where your files are, give your repository a name and you are in business. Scanning the folder for files can take time and you might find that a list shows up with lots and lots of files. Maybe you only want to keep track of your “.als” file?

If you want to filter only essential files in the Ableton folders it is best to add a text file named “.gitignore” file in the root folder. My .gitignore file contains the following text:

# Rendered music #
##################
/*.wav
*.asd
*.sfk
/*.mp3
AbletonTmp-*

This leaves out temporary Ableton files and all rendered music files in the root of the folder. At this point Git will only check which files should be committed as part of the snapshot of your song. These files will be marked unstaged, at the bottom of the screen.

Git staging

Click the checkbox left to “Unstaged files” and the files will be moved to the box with staged files. This can also be reversed and set up to stage only individual files. Every staged set of files can then be committed with a comment in the “File Status” tab.

Git commit

If you made it to here, then you have made your first steps in to versioning. Congratulations! You can now go a version back by double clicking any commit in the list. Like what you hear, but not sure if this is going to be final? Make a branch and work on that branch to see if it gets you there. Or you go back to the original version and explore that. The main version is always on a branch named “master”.

Backup your versions

But does this also make a backup of your files? Yes and no. You will find that files will be stored into a special hidden file structure in the same folder (named .git). Are you happy with this as a backup? Well i’m not. If you lose your PC or entire drive you lose it all. Git or no Git. What i do is that i make a backup of all project folders, this also nicely saves the hidden .git file structure and also all versions of all songs. Nice eh?

If you want you can even commit your project changes to a cloud service that supports Git. One option is Github, this is only free if you publish your projects to the whole world. There are cloud storage options that understand Git and allow free and private service, but then you put your trust in a cloud service like Bitbucket. Its up to you. I keep a simple backup with copies of the files in my projects folder on separate disks.

Ups and downs

There is one downside. Ableton does not play nice and needs to be closed, every time you want to commit the latest changes. Also if you want to go back to another version of the song. Tough, but it still works for me. Want to give it a try? Keep me posted!