Okay, all good now! I’ll document my final setup here, in case someone tries to do the same.
First, since I have the 4GB RAM version of the Pi 4, I needed to dial in some swap so that the compilation could work, otherwise it would produce the fatal error right around trying to compile fluid_libmanipulation (see above). I added 4 GB to swap, but looking back probably 1 GB could have been enough.
Then I did everything according to the flucoma-pd docs & compile guide.
And it worked without errors (once I had enough RAM/swap). But somehow Pd v0.55 did NOT like it. And so somewhat hastily I did not test what @weefuzzy suggested above (sorry!), but just wiped the build folder and tried again, adding the flag (ARM version) mentioned here, which is -DCMAKE_CXX_FLAGS=-mcpu=native. My final build command looked like this:
cmake -DPD_PATH="/home/dietpi/pure-data" -DDOCS=OFF -DCMAKE_CXX_FLAGS=-mcpu=native ..
Now comes the extra-messy part: earlier, as a 0th step I actually just naively tried the pre-compiled linux distribution of flucoma-pd from here for lolz which did not work hence I tried to compile it locally. So I still had that FluidCorpusManipulation folder with all the abstractions, docs, data, and the incompatible externals. I noticed that this folder structure is slightly different from the one I got from the cloned repo (and not knowing whether Pd would be annoyed by that), notably that the externals do not live in the top-level folder, but under the pd_objects folder. So I decided to just copy over the contents of this pd_objects folder to that above-mentioned FluidCorpusManipulation folder to overwrite those incompatible externals with the freshly compiled ones like this:
cp -a /home/dietpi/flucoma-pd-rpi/flucoma-pd/pd_objects/. /home/dietpi/FluidCorpusManipulation/
Finally, as a test I wanted to load the overview patch and see if everything gets loaded successfully. From my /home/dietpi user folder:
pd -stderr -nogui -verbose -audiodev 0 -midiindev 2 -midioutdev 2 -path "./FluidCorpusManipulation" -lib "fluid_libmanipulation" ./FluidCorpusManipulation/FluidCorpusManipulationOverview.pd
This worked, but I haven’t tested anything else yet. But I guess this is a very good sign! ![]()
If you do all this like I did, don’t panic in the end (like I did not), when you load the patch and seemingly get lots of failure logs like so:
EDIT: reached the comment character limit with this one, so will try to post it in the next comment.
As I have definitely noticed on the first try, you too can notice that Pd tries to load various extensions for the externals in a certain order and will fail until it tries the .pd_linux extension, or just the .pd one in case of an abstraction.
Another notable thing is that after it successfully loaded fluid.plotter and fluid.waveform, in both cases it printed out what looks like the source code for those? Curious. I don’t plan to try using GUI stuff on the RPI, so I can’t verify if this is anything to be afraid of, but it’s documented now.
Thanks for the help, I am super curious to see the potential of Flucoma on a small computer like this. ![]()