First in a series…

One of my favourite whipping horses on both Reddit, Discord and even the Ableton’s own bug/suggestion tracker is for Ableton Live to be ported to Linux. And why shouldn’t they? Have you ever been inside the Ableton Live program folder and perused some of it’s contents? There is a plethora of open source, cross-platform libraries involved that makes Ableton what it is. They even have their own Github account(1, 2), where you can find some of the projects they use for certain Ableton Live functionality, though you can mostly find libraries for their web service infrastructure. Don’t know what Open Source is? Just a music maker? Well let me quickly get you caught up to speed… for those in the know, or who don’t care how programs are built:

you can skip this part…

WHAT IS CODE!? Baby don’t bore me…

For the uninitiated reader let’s ask the basic question and test my knowledge (I’ll probably be taken to task when people read this article): what is a “program” or an “app” really?

A program is generally speaking a binary created by way of several or many human readable text files, called the “source code”. This source code is fed to a program known as a “compiler”, which then combines and converts these human readable text files into machine language, forming binary files that your operating systems can interpret and run. This source can be reliant upon other external “libraries” (containing general functionality), such as for example varying C++ libraries, the Cocoa framework on mac OS and the .NET frameworks on Windows (among many others). You also have scripting systems, whereby the source code is not really compiled, but “parsed”. This means that the code runs directly, which has some performance penalties, but is sometimes preferable depending upon the task at hand. Ableton uses both approaches in it’s program, which we’ll get to…

Now that you’ve gotten up to speed in basic terms what it means to build a program, what is “Open Source”? Open source is just source code released publicly using one (or two) of many licenses to either protect the author from liability, attributing the authors and substantiating copyright for names and brands, and maybe even force certain conditions upon the person who wants to use said code. For instance, a company like Ableton who developes proprietary software largely prefers to use the MIT license — which is a license that allows the user of the source code to do pretty much whatever they want with the code without sharing their secret sauce. Also they don’t need to contribute back if they don’t want to. In contrast you have the more “restrictive” GNU license, coined as being “copy-left”. It sets restrictions and demands about what you can do with the code, how it should be developed and that you should contribute back to the project or face the very letigious GNU organization and it’s patron saint: Richard Stallman (*choir sounds*). This license is for free (or “libre”) software enthusiasts, who believe some software should be developed transparently, controlled by communities, protected from misuse by proprietary instances and to be generally widely available. You’ve also got middle grounds, like the Apache license and so on. All these approaches to licensing each serves their purpose.

Get on with it…!

After all that… where are we, in regards to this PROGRAM THAT MAKES MUSIC… Thor! Well, let’s summarize some integral parts of the Ableton Live program to see what Open Source projects are involved. I’d like to stress that the libraries listed and my reasons for them being used in Ableton Live is purely speculative and that I in no way, shape or form represent Ableton AG or that I’m an afluent programmer. Here we go...

QT/QML :

QT (sometimes pronounced “cute”) is arguably the most portable, cross-platform C/C++ application development framework in existence. It has so many parts that you can pick and choose from, to the point where you could build entire desktops suite using this framework alone. In recent times it’s become partly commercial, but that’s only for companies who really want their code to be secret sauce. Originally developed by TrollTech as a multi-library for building visual applications used on freighters, QT/QML has been the main framework behind the Plasma desktop, but also integral in the operating systems of Blackberry 10, Tesla Model S, the applications Adobe Photoshop Elements, AutoDesk Maya, VLC and a metric fudge ton of other notable applications. It is highly versatile cross-platform development framework, which is solid and quick (if you know what you’re doing). A comparative framework would be Apple’s Cocoa, which also is a system-wide do-it-all framework, but that’s where the comparisons end. QT is much more versatile, with all it’s bells and whistles, and it is not locked down to one specific platform. No doubt this framework is probably a great chunk of Ableton Live‘s foundation, GUI, some Push 2 functionality and general runtime as well, coupled with a handfull of other C++ libraries…

: QT (sometimes pronounced “cute”) is arguably the most portable, cross-platform C/C++ application development framework in existence. It has so many parts that you can pick and choose from, to the point where you could build entire desktops suite using this framework alone. In recent times it’s become partly commercial, but that’s only for companies who really want their code to be secret sauce. Originally developed by TrollTech as a multi-library for building visual applications used on freighters, QT/QML has been the main framework behind the Plasma desktop, but also integral in the operating systems of Blackberry 10, Tesla Model S, the applications Adobe Photoshop Elements, AutoDesk Maya, VLC and a metric fudge ton of other notable applications. It is highly versatile cross-platform development framework, which is solid and quick (if you know what you’re doing). A comparative framework would be Apple’s Cocoa, which also is a system-wide do-it-all framework, but that’s where the comparisons end. QT is much more versatile, with all it’s bells and whistles, and it is not locked down to one specific platform. No doubt this framework is probably a great chunk of Ableton Live‘s foundation, GUI, some Push 2 functionality and general runtime as well, coupled with a handfull of other C++ libraries… OpenGL/MESA libraries:

LibEGL and LibGLES are apart of the OpenGL suite of libraries, which stands for “Open Graphical Layer” — an open initiative to bring graphical rendering to any and all platforms. It’s an alternative to Direct2D/Direct3D (Windows) and Metal (macOS/iOS, which formerly used OpenGL by default). What OpenGL libraries and drivers does is take care of the fundamental of creating and manipulating graphics, which back in the day you had to do on your own after having put about a gazillion years extra on to your development time. They are probably bundled along with QT/QML.

LibEGL and LibGLES are apart of the OpenGL suite of libraries, which stands for “Open Graphical Layer” — an open initiative to bring graphical rendering to any and all platforms. It’s an alternative to Direct2D/Direct3D (Windows) and Metal (macOS/iOS, which formerly used OpenGL by default). What OpenGL libraries and drivers does is take care of the fundamental of creating and manipulating graphics, which back in the day you had to do on your own after having put about a gazillion years extra on to your development time. They are probably bundled along with QT/QML. Python :

The interpretive programming worlds most versatile snek. You can find Python on pretty much every platform and it’s used to create (among other things) the “Remote Scripts” in Ableton to give functionality to external hardware, such as the Push 2. Python is a scripting language, but uses a byte-code compiler to create Python files that run inside of the python virtual machine, so that the interpretive code runs faster. It’s sort of a best-of-both worlds approach to coding. People can develop remote scripts for Ableton Live without the need of an SDK (“software development kit”) and a compiler. Python is often used in web services and on servers, but is also found in many applications.

: The interpretive programming worlds most versatile snek. You can find Python on pretty much every platform and it’s used to create (among other things) the “Remote Scripts” in Ableton to give functionality to external hardware, such as the Push 2. Python is a scripting language, but uses a byte-code compiler to create Python files that run inside of the python virtual machine, so that the interpretive code runs faster. It’s sort of a best-of-both worlds approach to coding. People can develop remote scripts for Ableton Live without the need of an SDK (“software development kit”) and a compiler. Python is often used in web services and on servers, but is also found in many applications. libusb :

This one is obvious. It’s a cross-platform USB library, so that Ableton only needs to write one set of code to communicate via USB on all platforms. Very smart, very cool.

: This one is obvious. It’s a cross-platform USB library, so that Ableton only needs to write one set of code to communicate via USB on all platforms. Very smart, very cool. SoXR :

One of the selling points a friend of mine gave me when he first introduced me to Ableton Live was that you could do per-channel resampling, which is really neat (but kind of normalized nowadays). This is done through the SoX Resampling library.

: One of the selling points a friend of mine gave me when he first introduced me to Ableton Live was that you could do per-channel resampling, which is really neat (but kind of normalized nowadays). This is done through the SoX Resampling library. LAME

A recent addition to Ableton Live, LAME (“Lame Ain’t An MP3 Encoder”) was originally a reverse engineering project to encode and decode MPEG audio files. Largely MP3s were contingent upon roylties and people like Microsoft and Apple had to pay the MPEG group to implement this functionality into their software. LAME was an initiative to bring MPEGs over to open platforms, in regions where it was legal to do so outside of paying royalties. But in 2017 the patents for distributing mp3 encoders/decoders had expired and Ableton could finally bundle LAME with Ableton Live to convert WAV files to MP3s without having to pay royalties. LAME is now considered the best MPEG encoder there is out there for mid and high bitrates. Open Source at it’s best.

Honourable mentions (to keep this list short): Boost (C++ library), cucumber-cpp (another C++ library), Valgrind (testing and debugging), cURL (fetching files and info through URLs), OpenSSL (secure and encrypted communication over the internet), FreeType2 (font rendering), Ogg Vorbis (audio format and codec), WAVPACK (lossless converter), etc, etc, etc…

Too many to list, really. Some of these are recursive dependencies, like how cURL would need OpenSSL to securely fetch files and info over the internet. You can find the long list of libraries used in the Ableton Live program folder for those that are interested (“Legal/Licensing Information.pdf”).

Why Ableton uses Open Source

Open Source software and libraries are at the heart of Ableton Live. And why wouldn’t they be? For any given modern company dealing with programming, going Open Source has it’s benifits. You could of course go for proprietary libraries, as some software manufacturers do and Ableton does this as well — but in both cases the goal is to cut development cost (in some cases: severely) and focus on the important goals of an application rather than reinventing the wheel all the time. I would argue that with Open Source software you have many more learning and implementation resources for the development of your application and freedom to distribute as Ableton sees fit. Not to mention, many Open Source developers make an effort to make sure their solutions are cross-platform, unlike certain proprietary libraries that are made and caters to their specific platforms (*COUGH*Cocoa*COUGH*UWP*COUGH*).

This is why Ableton Live can work in both mac OS and Windows without much further ado. If they couldn’t rely on third party and open-source libraries, Ableton Live would most likely lack some very important functionality for it’s purpose and would also most likely be bound to one operating system. If Ableton didn’t use open source in their development of Ableton Live the tasks laid ahead would be much more expensive, cumbersome and restrictive. I’d even wager that without Open Source it’s highly unlikely that Ableton Live would exist at all — or at the very least as the increasingly expansive and versatile DAW we all know and love.

Conclusion

So now that I’ve covered why Ableton (obviously) loves Open Source, why it’s possible to port the application to any given system, I’ve laid the groundwork for my next articles, where I’ll stake my reasons as to why it might NOT be feasible at all to port Ableton Live to Linux, much to this penguin lovers detriment. I mean, If it was such a no-brainer it would have already been ported. But there are a few problems, most notably with Linux as a desktop operating system, how it’s lacking and why it might be a dangerous proposition for Ableton in the first place.

Untill next time, dear reader!