There was something that was on my (private) TODO list for quite some time now : being able to record music, mix and output a single song from multiple recorded tracks. For that you need a Digital Audio Workstation DAW.
I have several instruments at home (electric guitars, bass, digital piano and also drums) but due to lack of (free) time I never investigated the DAW part on Linux and especially CentOS. So having some "offline" days during the holidays helped me investigating that and also being able to setup a small DAW on a recycled machine. Let's consider the hardware and software parts.
Hardware support
I personally still own a Line6 TonePort UX2 interface which is now more than 10 years old, and that I used in the past on a iMac. The iMac still runs, but exclusively with CentOS 7 those days, and the TonePort was just collecting dust. When I tried to plug it , it wasn't really detected, but just mainly because of the kernel config, so I asked (gently) Toracat to enable the required kernel module in the centos-plus kernel and with the centos-plus kernel, the toneport ux2 is seen as an external sound card. Good :
geonosis kernel: usb 3-2: new full-speed USB device number 2 using xhci_hcd
geonosis kernel: usb 3-2: New USB device found, idVendor=0e41, idProduct=4142
geonosis kernel: usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
geonosis kernel: usb 3-2: Product: TonePort UX2
geonosis kernel: usb 3-2: Manufacturer: Line 6
geonosis mtp-probe: checking bus 3, device 2: "/sys/devices/pci0000:00/0000:00:14.0/
usb3/3-2"
geonosis mtp-probe: bus: 3, device: 2 was not an MTP device
geonosis kernel: line6usb: module is from the staging directory, the quality is unkn
own, you have been warned.
geonosis kernel: line6usb 3-2:1.0: Line6 TonePort UX2 found
geonosis kernel: line6usb: module is from the staging directory, the quality is unkn
own, you have been warned.
geonosis kernel: line6usb 3-2:1.0: Line6 TonePort UX2 now attached
geonosis kernel: line6usb 3-2:1.1: Line6 TonePort UX2 found
geonosis kernel: usbcore: registered new interface driver line6usb
geonosis kernel: usbcore: registered new interface driver snd_usb_toneport
I also recently offered myself a small gift to play with : a small Fender Mustang guitar amplifier : small enough to fit under my desk in my home office, and with amps/effects emulation built-in, plus usb output to redirect sound directly to computer. (Easier for easy recording, than setting up a microphone in front my other Fender Custom vibrolux reverb tube amp, and my neighbors are also grateful for that decision)
The good news is that it's directly recognized as another sound card without any kernel module to activate/enable :
geonosis kernel: usb 3-1: new full-speed USB device number 3 using xhci_hcd
geonosis kernel: usb 3-1: New USB device found, idVendor=1ed8, idProduct=0014
geonosis kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
geonosis kernel: usb 3-1: Product: Mustang Amplifier
geonosis kernel: usb 3-1: Manufacturer: FMIC
geonosis kernel: usb 3-1: SerialNumber: 05D7FF373837594743075518
geonosis kernel: hid-generic 0003:1ED8:0014.0001: hiddev0,hidraw0: USB HID v1.10 Device [FMIC Mustang Amplifier] on usb-0000:00:14.0-1/input0
geonosis mtp-probe: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
geonosis mtp-probe: bus: 3, device: 3 was not an MTP device
geonosis kernel: usbcore: registered new interface driver snd-usb-audio
With those two additional sound cards detected, it looks now like this :
[arrfab@geonosis ~]$ cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xd2530000 irq 32
1 [TonePortUX2 ]: line6usb - TonePort UX2
Line6 TonePort UX2 at USB 3-2:1.0
2 [Amplifier ]: USB-Audio - Mustang Amplifier
FMIC Mustang Amplifier at usb-0000:00:14.0-1, full speed
Great, now let's have a look at the software part !
Software
There are multiple ways to record quickly any sound from a sound card on Linux, and Audacity is well known for this, as it comes with several effects, you can import, edit , cut, paste (and more !) quickly sounds (and even multiple tracks). But when it comes to music recording, especially if you want to also play with MIDI , you need a proper sequencer. It's really great to see that on Linux you have multiple alternatives, but one that seems to be very popular in the Free and open source world is Ardour. As nothing was built for CentOS 7, I decided to create a DAW-7 COPR repository that has everything I need ( when combined with EPEL and/or Nux-Dextop )
I so (re)built (thanks to upstream Fedora maintainers !) in that copr repository multiple packages, including (but not limited to) :
- Ardour 5.5 : sequencer
- Qjackctl : frontend for needed jack-audio-connection-kit
- Calf : very good effects/plugins for jack and so that can be used directly within ardour
- LV2 : other effects/plugins
- Guitarix : guitar/bass amp+effect simulator
- LMMS : other sequencer but more oriented for midi/loops but not really audio recording from external devices
- Hydrogen : Drum machine when you can't record real drums but you can program your own pattern[s]
- ... and much more ... :-)
After having tested multiple settings (there are a lot to learn around this), I found myself comfortable with this :
sudo su -c 'curl https://copr.fedorainfracloud.org/coprs/arrfab/DAW-7/repo/epel-7/arrfab-DAW-7-epel-7.repo > /etc/yum.repos.d/arrfab-daw.repo'
sudo yum install -y ardour5 calf lmms hydrogen qjackctl jack-audio-connection-kit jack_capture guitarix lv2-abGate lv2-calf-plugins lv2-drumgizmo lv2-drumkv1 lv2-fomp-plugins lv2-guitarix-plugins lv2-invada-plugins lv2-vocoder-plugins lv2-x42-plugins fluid-soundfont-gm fluid-soundfont-gs
One thing that you have to know (but read all the tutorials/documentation around this) is that your user needs to be part of the jackuser and audio groups in Linux to be able to use the needed Jack sound server (which you have to also master, but once you understand it, it's just a virtual view of what you'd need to do with real cables plugging in/out into various hardware elements) :
sudo usermod --groups jackuser,audio --append $your_username
One website I recommend you to read is LibreMusicProduction as it has tons of howtos and also video tutorials about Ardour and other settings. Something else worth mentioning if you just want drum loops : you can find some on Google but I found some real good ones to start with (and licensed in a way that you can reuse those) on Looperman, Drumslive and Freesound.
Who said that CentOS 7 was only for servers in datacenters and the Cloud ? :-)
Have fun on your CentOS 7 DAW.