I had a further look: many libraries are already built for ARM (Bela's architecture, more precisely armv7) and are available via Deken. A possible Deken workflow to obtain pre-built libraries this way from Deken:
- open the most recent Pd on your desktop
- open the "Help -> Find Externals" dialog (aka Deken)
- at the bottom click "More -> Preferences"
- in the "Install externals to directory" section, check which one is the currently selected directory. Make a note of it somewhere else as you'll want to restore it later on. Click the
...
button. create a new folder in a convenient location (e.g.: Desktop), called pd-externals-for-bela
, select this and close the file picker; make sure this stays selected in the radio button selection
- in "platform settings" make sure "hide foreign architectures" is ticked
- in "platform settings" select "User-defined-platform" and enter (exactly)
Linux-armv7-32
- close the dialog with "OK"
- now search for libraries you need for Bela and if a result is produced, click on it and it will "install" it in the folder you selected above. You can do this for several libraries one after the other.
- once done, revert the settings in the "Install externals to directory" section and in "Platform settings" select "Default platform". Note that the above will not have installed those libraries in such a way that they are usable from Pd on the host. You can repeat the same procedure at the previous step to install them on the host (if you haven't already) now that you have restored the settings.
Now, you can install these libraries on Bela with a single command:
ssh root@bela.local mkdir -p Bela/projects/pd-externals # creates the pd-externals dummy project if needed
scp -r root@bela.local ~/Desktop/pd-externals-for-bela/* root@bela.local:Bela/projects/pd-externals/
(amend the path to the ~/Desktop/pd-externals-for-bela
folder if you used a different one ).
Note that you will need to use [declare -lib]
and/or [declare -path]
for the libraries and externals to become available on Bela. I recommend you do the same on the host (i.e.: remove any non-standard paths from Preferences->Paths and any libraries from Preferences->Startup).
In particular, iemlib
ships with a combination of abstractions and a single-file library, so you will need two declares, a -lib
for externals and a -path
for abstractions. If this is confusing, the official documentation tries to explain it.
In your case:
[declare -lib iemlib]
[declare -path iemlib]
[sparse_FIR~] // "external" verify it creates
[unsig~] // "abstraction" verify it creates
while moonlib
is a multi-file library so you should just need
[declare -path moonlib]
[char2f] // verify it creates