Polytechnic / Grow your own Media Lab : Open Source Audio Links

GNU / Linux

Strictly speaking, Linux refers to the "Linux kernel" which is the core, low-level part of the operating system. GNU refers to the set of applications and utilities that run on top of it. However, Linux is often used to refer to a entire operating system. You can read more on the Linux wikipedia entry.

Linux is normally installed from one of many distributions : see below.

The Linux Kernel & Audio

To get the best audio performance in Linux, it is necessary to have a " Realtime Kernel " (also referred to as " Realtime Preemption " .This is a set of optimisations that allow operations to be completed in a predictable length of time. What this means for Linux audio users is glitch and dropout free audio performance. At present, most standard Linux distributions do not include a real time kernel, and one must be installed seperately. However the latest Linux kernel versions incorporate the realtime features as standard, so upcoming mainstream Linux distributions will begin to include these features over the next few months. It is also worth noting that a standard Linux kernel can give good audio performance under many circumstances.

Distributions:

A distribution is a specific packaging of a Linux kernel and a set of utilities and applications. There are many available, each suited to a particular application - server, desktop, multimedia, etc. Some distributions can be run from a CD or USB memory device, without installing anything on the hard drive of the computer. These are known as Live Distributions or LiveCDs. Here are a few of interest from an audio point of view.

Debian based

http://debian.org

The original Debian multimedia distribution was Agnula / DeMuDi, which is no longer active. 64studio is a multimedia specific distribution lead by one of the DeMuDi developers. It's available for as a version optimised for 64 bit processors, alongside a 32 bit version. The DeMuDi development is now part of Debian Multimedia.

Ubuntu

http://www.ubuntu.com/

Ubuntu is another Debian based system, focusing on ease of installation and comprehensive support networks. They Ubuntu foundation distribute CD's of the latest version for free. The basic Ubuntu installation does not include a multimedia kernel as standard, but there is the Ubuntu Studio project which plans to make another multimedia-specific Ubuntu which include these features. http://ubuntustudio.org/. There are also instructions for building your own realtime multimedia kernel for Ubuntu here: http://help.ubuntu.com/community/HowToVanillaKernelWithRealtimePreemption

dynebolic

http://www.dynebolic.org/

http://www.dyne.org/

http://puredyne.goto10.org/

Dynebolic is a Live CD distribution for multimedia, and Pure:Dyne is a version tailored to realtime work. It is probably the most advanced live CD, with optimisation, access to most audio hardware, clustering of multiple Dynebolic computers over a network etc, all built in. You can even run it on an XBOX. There isn't as much audio software as with A/Demudi, but there are other multimedia programs such as video editors included.

Planet CCRMA

http://ccrma.stanford.edu/planetccrma/software/

Not a distribution as such, but a collection of packages (see below) that can be installed over an existing Fedora Linux installation to add audio capabilities. Includes a realtime kernel.

Other useful links.

Linuxaudio.org is useful for keeping up with developments: http://linuxaudio.org

A pretty comprehensive list of links to Linux audio related software can be found here: http://linux-sound.org

Installing Software in Linux

Packages

The most common system for installing software on Linux is through a packaging system. Packages provide "builds" of software in a format specific to the distribution in use, making them very easy to install, configure and remove. Packages are typically installed through a package manager - the one used in Debian based distributions is APT (Advanced Packaging Tool.) When asked to install a package, APT will check to see if any other packages are required and if any need to be upgrading or removed. It will then confirm the changes that will be made, download, install and configure the software. There is a graphical APT program called Synaptic, but many software installation guides refer to the command line program apt-get.

From Source

Some rapidly developing or cutting-edge software is only available in the form of source-code - ie the "human readable" language that the software is written in. To run the software this code must be compiled - or built into a working application for the computer it is to be run on. This is sometimes easy for the end user, and sometimes not...

The source code will usually contain a set of instructions, and some automated scripts for compiling / building the source code, sometimes these work first time, sometimes they will report an error - such as a dependancy on a software library that is not installed, which can be fixed easily. If this fails, the next option is to search the internet for last the error message you received during installation - the problem may have been resolved. Finally, one could contact the email discussion list for the software an ask the developers directly.

Audio in Linux

ALSA

http://www.alsa-project.org/

The Linux audio subsystem is ALSA - Advanced Linux Sound Architecture. It comes as standard recent modern distributions of Linux. It's not necessary to know too much about it to do audio work, but the website above is useful if you have a problem with ALSA, or to see if your soundcard is compatible.

JACK

http://jackit.sourceforge.net/docs/faq.php

JACK is an audio server - it provides an on-screen representation of the soundcards, MIDI interfaces, and audio applications on the computer. It allows these elements to be connected together - so for example a drum machine could connect to an effects unit, which could then connect through to the physical soundcard outputs. Not all Linux audio software uses JACK, but most do. Jack is also available for Mac OSX. The desktop application for monitor and controlling JACK is called QJackCtl.

Audio Applications

These are all available as packages in A/DeMuDI and Ubuntu.

Hydrogen

http://www.hydrogen-music.org/

Sample based drum machine application. Runs through Jack or ALSA, and also available for Windows.

ZynAddSubFx

http://zynaddsubfx.sourceforge.net/

A very powerful and complicated software synth, with multiple synthesis techniques. It uses JACK and can be sequenced via Midi using Rosegarden.

Linux Sampler

http://www.linuxsampler.org/

A sampler that supports the industry standard Gigasampler format. The GUI front end is called QSampler

Rosegarden

http://www.rosegardenmusic.com/

Rosegarden is an Audio and MIDI sequencer, similiar to Cubase. It can be used in conjunction with the ALSA midi system - accessed through the MIDI tab in QJackCtl, to sequence the above applications, and it can load DSSI and LADSPA plugins. If you have an external MIDI output other devices (hardware synths etc) can be sequenced. It can also be linked to the JACK Transport - this allows other sequencers - such as that in Hydrogen, to be started simultaneously and share a common tempo.

LMMS

http://lmms.sourceforge.net/

Linux Multimedia System. This is an open-source Fruityloops clone. If you compile from the source code, you have the option to provide support for Windows VST instruments and effects, as long as you download the relevant libraries. (see: the lmms wiki page)

Ardour

http://ardour.org

Ardour is a professional standard Digital Audio Workstation. It doesn't have the MIDI sequencing functions of Rosegarden, and is more suited to recording and mastering, particular in combination with JAMin - a suite of open source audio mastering tools. However, to get the best use out of both these tools, a fast computer and a high quality soundcard is advised. The Ardour system requirements page has the info, and provides a useful introduction to tuning Linux audio performance for any application. Available for Apple Mac as well.

DSSI

http://dssi.sourceforge.net/

DSSI is a standard for software synthesizers on Linux. It has the ability to run DSSI synths in applications such as Rosegarden, and host VST synths through the dssi-vst host.

LADSPA effects plugins

LADSPA is a way to provide a consistant standard for audio effect plugins in Linux. LADSPA plugins can be loaded into many pieces of software, and there is Jack Rack which can be used to act as a container for a number of plugins, allowing them to be connected to other applications using Jack.

http://www.ladspa.org/ Ladspa homepage

http://plugin.org.uk/ Links to many LADSPA plugins

http://jack-rack.sourceforge.net/ A host package for LADSPA plugins, so that audio can be routed through effects using Jack.

Recording and Sample Editing

Time Machine

http://plugin.org.uk/timemachine/

Time Machine seems like a simple Jack based audio recorder. Put it alongside your outputs in the Jack connections window and hit the button to record the output of your signal chain. However it has a bit of magic to it: it also captures the 20 seconds of audio BEFORE you hit the button!

Audacity

http://audacity.sourceforge.net/

Audacity is a great sample editor. It doesn't use JACK however - so it's only really suitable for manipulating existing samples or recording direct from your soundcard inputs. Also available for MacOSX and Windows

Audio Programming Environments

A lot of the flexibility in making music using Open Source software comes from the ability to customise software to your own needs. There are many ways to do this, and many programming languages in which this can be achieved. Here's two of the most popular:

Pure Data (PD)

http://puredata.info/

http://pd.iem.at/

"PD (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing." (from puredata.info). It comes from the same roots as Max/MSP

These two sites are the best bet for an overview and further PD links.

http://access.lowtech.org/e-gehirn/pd.html Nice tutorials by Malte Steiner - a little studio that you can plug together.

SuperCollider Server

SuperCollider is a programming language for realtime audio synthesis. It is text based, and runs on Linux, Mac and Windows. The current version is SC Server, and it is the first open source version of SuperCollider (SC1 and SC2 were Apple only and closed source). Info on Supercollider is scattered across many sites on the internet

http://audiosynth.com The SuperCollider Homepage: Download links and more

http://www.psi-o.net/pseudonym/introduction.php An introductory tutorial on synthesis in SuperCollider.

http://www.create.ucsb.edu/mailman/listinfo/sc-users The SuperCollider email discussion list.

http://elists.resynthesize.com/sc-users/ A searchable index of the above - useful for problem solving and bug-fixing

http://sourceforge.net/projects/supercollider/ The SuperCollider Sourceforge project page. Recent Mac and Windows builds

http://sourceforge.net/projects/blackrain-sc3/ Older Mac builds (OS 10.3.9) and related software

http://supercollider.wesleyan.edu/ Up to date builds, with extra 3rd party libraries for OSX

http://www.sciss.de/swingOSC/ SwingOSC - A Cross-platform graphical user interface for SuperCollider and PD

http://www.newscores.com/scforum/ SuperCollider forum - some good code examples

http://artfwo.googlepages.com/sced A SuperCollider plugin for GEdit, a Linux text editor. Allows one to work with SC code in GEdit rather than Emacs

http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6 The SuperCollider Wiki

http://swiki.hfbk-hamburg.de:8888/MusicTechnology/478 Linux pages on the Swiki

http://swiki.hfbk-hamburg.de:8888/MusicTechnology/744 A script for converting SuperCollider's RichText helpfiles into HTML. Very useful.