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 install jackd jack-tools jack-keyboard qjackctl pulseaudio-module-jack a2jmidid patchage
# PulseAudio helpers
apt install pulseaudio pulseaudio-module-jack pavucontrol pulseaudio-utils
# Synths
apt install zynaddsubfx qsynth fluid-soundfont-gm fluid-soundfont-gs
# Ardour, mixing
apt install ardour3 swh-lv2 calf-plugins tap-plugins
# Monitor & Visualize
apt install meterbridge freqtweak
# Overtone
apt install clojure1.4 leiningen
# Misc
apt 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.
Jack-related software:
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