Hello friends, strangers and foes (whatever group you count yourself in),
I would like to do some (hobby level) audio production on my Pi 3 B. I got ardour running so far but there are some minor issues remaining. What did I do so far?
+ Compiled the 4.4.8+ kernel with low-latency-desktop option and 1 kHz timer
Why? I want Jack to run in realtime mode, and while the standard kernel seems to already support this in some way (is this actually true?), I wanted to have the option for lower latencies. The magic word here seems to be Kernel Preempting.
+ raised /proc/sys/vm/dirty_expire_centisecs, dirty_writeback_centisecs to increase the amount of time that data remains in the disk cache
+ raised dirty_background_ratio to keep more data in the disk cache
Why? Ardour was complaining about my file system being to slow, now it can work in the cache directly. I could (up to now) record four tracks to the SD Card simultaneously that way, but now I also connected an USB HDD to spare the little fellow the data traffic.
Four tracks is a little out of my requirements though, two should be enough.
+ Experimented with some values for jackd until I found good working ones.
Why? Jack was reporting XRUNS or relatively high latencies until I fiddled with the command line parameters a little. Sampling rates, periods, number of bits per sample ...
+ Connected my USB microphone to an USB HUB and used dwc_otg.fiq_fsm_mask=0xF in cmdline.txt.
Why? This got rid of an annoying error (about FIQ reporting NYET on my microphone, whatever that means) which flooded my /var/log/messages. I also stopped the usbhid module from claiming the mic with usbhid.quirks=0x0909:0x001c:0x4 in cmdline.txt. This is the USB vendor/device id which lsusb reports followed by 0x4, wich in my interpretation probably means 'don't claim'.
+ Setting my CPU frequency governors to 'performance', following this guide:
I also disabled the eth0 turbo mode. However, I could not stop most of the demons mentioned because I want to work with an desktop (for ardour and friends).
Do these deeds make sense? Do you have any other tips or tricks? How did you configure your system?
A remaining problem is that my guitar amplifier (a Fender Mustang I) can only be used as a capture device under Jack. I can use alsa_out to send the output to another device, but I suddenly get lots of XRUNS then. Also I could configure the amplifier for capture with jack and another device for output (monitoring), but I was warned the devices will not be in sync. Do you have any experience with this?
Cheers! (guitar face)
PS: Why do this at all? Imagine sitting in the living room with your guitar/mic and being able to record songs on your TV without any background noise from PC fan etc. I like this idea very much, at least for recording demos/ideas!