Intro
It appears it's quite hard to get Tidal running properly on a 32 bit system when it's low-spec. I've been trying some ideas and also been reading the topic Tidal on Raspberry Pi 4 with Ubuntu? where @renzo.rospigliosi explained he had to switch to a 64 bit system on the raspi to get it to finally work. I, however, have no option with the computer which I'm trying to get Tidal to work on.
System
OS: Debian GNU/Linux 11 (bullseye) i686
Kernel: 4.9.0-279-antix.1-486-smp
Host: ASUS Eee PC 1000HA
CPU: Intel Atom N270 (2 cores) @ 1.600GHz
GPU: Intel Mobile 945GM/GMS/GME, 943/940GML Express
Memory: 992MiB
Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio Controller (rev 02)
Audio Device Subsystem: ASUSTeK Computer Inc. NM10/ICH7 Family High Definition Audio Controller
Problem
My main problem right now is XRuns. They are constant when certain patterns are being played. I'm not sure what the common factor is between the patterns that start the XRuns, like, no idea at all. Of course high polyphony and using lots of effects generate them quite quickly but sometimes I get XRuns on very simple patterns.
JackEngine::XRun: client = SuperCollider was not finished, state = Running
However
When the XRuns are happening the CPU isn't at 100% usage as one would asume. There's spare CPU time from what I can see on htop.
Current most-effective setup
CPU
The cpu is set to performance mode using cpupower.
$ sudo cpupower frequency-set --governor performance
Which means for this system that the CPU clock speed will be constantly 1.6GHz
Jackd
Jackdmp version 1.9.17 tmpdir /dev/shm protocol 8
$ jackd -R -d alsa -S -p 256 -n 4 -i 0
- Realtime mode activated
- Alsa backend
- 16 bit little-endian
- 48000 Hz (default)
- 256 frames per period
- 4 periods for playback
- 0 inputs
Note that I tried higher frame and period sizes, even insanely high sizes. I tried using lower frame sizes as suggested by @yaxu on the discord server and it helped a little bit or so it seems.
SuperCollider
SuperCollider 3.11.2 - loaded via terminal
Has realtime priority.
s.options.numBuffers = 1024 * 128;
s.options.memSize = 8192 * 32;
s.options.numWireBufs = 64;
s.options.maxNodes = 1024*32;
s.options.numOutputBusChannels = 2;
s.options.numInputBusChannels = 0;
Note
My audio device does have inputs, I'm just telling SC to ignore them.
SuperDirt
SuperDirt 1.7.3
~dirt = SuperDirt.new(1, s);
~dirt.doNotReadYet = true;
~numberOfOrbits = 8;
s.sync;
~dirt.start(57120, 0!~numberOfOrbits);
Running in mono just to see if it helps lower resource demand (although this doesn't seem to be the issue, since as explained earlier, there's spare CPU time).
Tidal
Tidal 1.8.0
tidal <- startTidal (superdirtTarget {oLatency = 1.0, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cVerbose = True, cFrameTimespan = 1/5})
Editor
- nvim
- tidal-vim
Environment
I've tried both using i3 with RoxTERM and using the tty's without loading any WM.
Other things I've tried
- Disabling wireless internet connection
- I should clarify I am on the machine's audio group
End note
What should I try now? Using something other than alsa? Any ideas?