I've been exploring the world of Open Source Music Production! Here I detail my setup.
This is where it starts getting complex. I think I'll just highlight the things that I use on a regular basis.
I use Debian sid. Here's some stuff:
# Jack stuff apt-get install jackd jack-tools jack-keyboard qjackctl pulseaudio-module-jack a2jmidid patchage # PulseAudio helpers apt-get install pulseaudio pulseaudio-module-jack pavucontrol pulseaudio-utils # Synths apt-get install zynaddsubfx qsynth fluid-soundfont-gm fluid-soundfont-gs # Ardour, mixing apt-get install ardour3 swh-lv2 calf-plugins tap-plugins # Monitor & Visualize apt-get install meterbridge freqtweak # Overtone apt-get install clojure1.4 leiningen # Misc apt-get install audacity vorbis-tools vlc
Linux / Open Source music generally follows the unix philosophy of having many tools and open protocols to get them working together. With the command line, that's often sockets and pipes. In linux the main thing is Jack. Jack is basically a software patch-board, allowing you to connect one program to another, so long as they know how to talk to Jack.
I used Audacity for quite a while, but recently got turned on to Ardour. What a fantastic program! I'm using the Ardour3, using it as a multi-track non-destructive editor, mixer, and even midi sequencer a bit.
I've also been using this as the main mixing/mastering tool, hooking it in to filters. I like the LV2 calf plugins, like reverb, compression, etc.
This drum machine / synthesizer is cool. Among others, I recommend getting the BigMono drum kit, in which drum hits are sampled at different velocities.
This connects clojure to SuperCollider. Seems like a cool way to write synths and do other (possibly live) algorithmic composition. I'm also playing with connecting via OSC and midi to external devices.
I have one script named 'musicstuff.sh' what gets things going, primarily Jack. I plug in my hardware first, then fire it up. It differentiates between when I run in laptop-only mode and when I run with my io2 plugged in. I created those two profiles manually in qjackctl and saved them with the given names.
# Jack GUI and jackd itself if grep -q io2 /proc/asound/cards ; then echo "Runing with iO2" qjackctl -s -p io2normal & else echo "Running with onboard sound" qjackctl -s -p laptopmode & fi # Give jack a few seconds to get started sleep 3 # PulseAudio -> Jack pacmd load-module module-jack-source channels=2 pacmd load-module module-jack-sink channels=2 pacmd set-default-sink jack_out # Nice GUI connection manager patchage -A & # Magical bridge between legacy ALSA midi and jack a2jmidid -e &
I also have a shut down script (triggered from qjackctl), which just undoes the PulseAudio -> Jack:
pacmd set-default-sink 0 pactl unload-module module-jack-sink pactl unload-module module-jack-source