Raspberry pi 3B+ install

I'm trying to install tidalcycles on the raspberry pi 3B+, but cabal v1-install tidal --ghc-options="-opta-march=armv7-a" seems to take a crazily long time. I haven't gotten to the end of the install even after a few hours.

Previously a cabal install tidal would also entail a very long wait. And at the end of it, tidal wasn't installed as well. Has anyone tried this recently? Also does it even work? I thought of trying this out, ever since all my 3 macbooks got hosed by motherboard issues shorting out the usb ports.

Or is there a way of cross compiling tidal to an arm device using a x86_64?

I've been using cabal install -j2 tidal, but after a long while, running tidal gives, undefined reference to __sync_fetch etc. Any insight will be much appreciated.

It also appears if you use cabal install tidal, it will use all the cores of the raspberry pi and there'll be a bunch of processes waiting to write to the sd card and that tends to extend the build process.

ok so there's 2 types of package managers and cabal install will not update the package list of the ghc-pkg. The end result of which is when using ghci, any cabal related modules aren't importable. Using cabal v1-install will help with this.

Still getting the failed lookup for __sync_fetch error when running tidal. ghci seems to be able to import the various Sound.Tidal.* modules

There's also a bunch of options in the .cabal/config file to specify flags. But! Looking at the compiler that is being used, it's llc-11 but there's no entry for that.

Ok, so i've tried to cabal v1-install -j2 tidal on a older raspberry pi os from 2020 - raspbian buster. It's the same as with the raspbian bullseye: tidal has a failed lookup __sync_fetch.

At the moment, on the raspbian bullseye aarch64, using a cabal v1-install -j1 tidal, there's a bunch of zombiefied llc-11 compiler processes that seems to hang the entire system.

All this is pretty weird, since whatever small number of blogs that write about using tidal on a raspberry pi, uses cabal install tidal and that seems to work out of the box.

Another annoying thing is cabal seems to use plaintext http to do transfers.

Turns out I should have read through the tidalcycles set of installation pages again. The tidal binary placed in the .cabal/bin file that's generating the sync_fetch errors isn't really needed ( i could be wrong ).

The tidal process is started by either emacs/vim/code/atom etc by calling the interpreter and loading up the tidal haskell file. I should've remembered this from the last time i tried to start tidal when there wasn't any real documentation. On the other hand, the install documentation should have had a clearer picture on the entire process. I'll leave this hear so i can remind future me when i need to reinstall again.

Also ghc doesn't allow an easy way to upgrade an installed package from say 1.7 to 1.8. Either remove the entire .ghc and .cabal directory, and rebuild, or use cabal v1-install and reregister the package.

Time to start those patterns ...

Right so, tried out some tidalcycles on a raspberry pi3B+ bullseye. And it's not great. The soundcard is one of those usb behringer uphorias.

At it's most stripped down, the 0404raspberry pi bullseye was running autologin to the console, with supercollider running in console mode, and pipewire with pulseaudio totally stopped, and jack2 as the primary audio layer. Superdirt was running with d1-d4 2 channel audio each, and with only 808 kits loaded. jackd was running with a priority of -75 on a non-realtime kernel.

With d1-d4 channels running patterns, everything started to glitch out, mostly because of late values clogging up a screen. Once there's a write to a screen, the audio will start to glitch. This is doubly true in a desktop environment. I'm not sure how anyone can juggle the resources on a raspberry pi 3 and below to get this to work.

Maybe the raspberry pi 4 will fare much better at this.

Yes superdirt is quite heavy, I've run it fine on pi 4. I've had good experience using the original dirt on raspberry pi, down to pi zero:

To use it with Tidal, change the superdirtTarget in your BootTidal.hs to something like:

tidal <- startTidal (dirtTarget {oLatency = 0.1}) (defaultConfig {cVerbose = True, cFrameTimespan = 1/20})

Interesting, do all tidalcycles effects like room,delay work on dirt?

No not all.. 'classic' dirt doesn't have reverb, so no room/size. I think delay is there. I actually much prefer the original vowel filter though! Not that by default classic dirt has really heavy compression. I like it but you might prefer to switch it off (there's a commandline option).