I’ve put together a headless implementation of FluidPatcher that works on a Raspberry Pi without the need for any extras (i.e. buttons/screens) by polling for specific CC messages to change patches. Just another way people can try out the code and come up with their own use cases. I like to think of someone just dropping a caseless Pi on the stage at a show and plugging a long headphone cable from it to the mixer – punk AF.
Author: white2rnado
-
MIDI Filtering
I want a way for FluidPatcher to listen to incoming messages so I can map something to inc/dec patch and select patch. NS if there’s a way to “listen” to an input port that’s already connected to FluidSynth – patcher.py would have to pass messages back and forth. Tried with Mido but there’s too much latency. Python-rtmidi might work, but it doesn’t seem to see the FluidSynth port on Windows, and that’s where I mostly want it. Hmmm maybe something else..
-
This is How We Do it
I’ve spent the last week working up a wxpython implementation of fluidpatcher that works as a cross-platform editor and player of patches. This makes it easy to quickly create, test, and use complex and interesting patch setups! I also made a downloadable installer for windows that includes the latest version of FluidSynth and posted it on SourceForge, so more people should be able to try out the platform. More implementations coming soon — perhaps VSTs or other DAW plugins? FluidPatcher everywhere!
-
Faster Startup
-
Site Updates
I’ve been making a lot of updates to the site, spurred on by releasing FluidPatcher and trying to get some actual helpful/archival content out into cloudspace. Unfortunately, I am a slow writer – or maybe just ploddingly methodical. Assuming anyone out there has an eye on this, feel free to drop a suggestion/request/encouragement – and thanks!
-
SquishBox setup notes
setting up in debian buster
- write image, save ssh, wpa_supplicant.conf to /boot
sudo apt-get update/upgradesudo apt-get install fluidsynth- build newest fluid: get source; edit /etc/apt/sources.list uncomment deb-src line;
sudo apt-get build-dep fluidsynth --no-install-recommends;mkdir build;cmake ..;make - install nginx – (https://www.raspberrypi.org/documentation/remote-access/web-server/nginx.md) – lots of stuff
sudo apt-get install nginx;sudo apt-get install php-fpm; edit /etc/nginx/sites-enabled/default
allow large files to upload: add to http context in /etc/nginx/nginx.conf:client_max_body_size 900M;<br>in /etc/php/7.0/fpm/php.ini:memory_limit = 32M?<br>upload_max_filesize = 900M<br>post_max_size = 999M sudo apt-get install python3-pipsudo apt-get autoremovesudo apt-get cleansudo pip3 install oyaml RPi.GPIO RPLCD mido- install dac: add
dtoverlay=hifiberry-dacand#dtparam=audio=onto /boot/config.txt - upload squishbox code
chmod a+x squishbox.py- realtime audio:
sudo usermod -a -G audio pi
sudo vi /etc/security/limits.d/audio.conf:@audio - rtprio 80<br>@audio - memlock unlimited - web panel stuff tinyfilemanager
- add www-data to pi group and
chmod -R g+rw /home/pi - edit /lib/systemd/system/php7.3-fpm.service –
umask 0002to [Service] - create systemd service
www.reddit.com/r/raspberry_pi/comments/4vhofs/creating_a_systemd_daemon_so_you_can_run_a_python/
create /etc/systemd/system/squishbox.service:[Unit]<br>Description=SquishBox<br>After=multi-user.target [Service]<br>Type=simple<br>ExecStart=/home/pi/squishbox.py<br>User=root<br>WorkingDirectory=/home/pi<br>Restart=on-failure [Install]<br>WantedBy=multi-user.target<br>sudo systemctl enable squishbox.service<br>sudo systemctl daemon-reload<br>sudo systemctl start squishbox.service
-
New Plan
okay new plan because why ever finish this
release my own pyfluidsynth that is more compatible with fluidsynth 2 and python3
also has a dict attribute that tracks the loaded soundfonts, ids
maybe other stuff too
rewrite squishbox.py to use objects so we don’t have messy globals
maybe part the bank/patch stuff into a separate patcher.py script, fold the stompboxpi stuff into the main script, write a curses gui that uses patcher.py
bindings.py
fluidwrap.py
patcher.py
squishbox.py -
Mods/Upgrades
- use tinyfilemanager (https://github.com/prasathmani/tinyfilemanager) for web interface
- new yaml format, script to convert old->new easy
- directory structure: scripts in ~/SquishBox directory
- soundfonts
- banks
- speed up boot time
- look into some kind of bare-metal fluidsynth build?
- fast but less mod-able
- separate service to start LCD with version + maybe progress bar
- midi routing – expand with mido
- also mido for connecting midi devices?
- midi out for recording?
- use sequencer?
- polyphone or other soundfont editor on squishbox?
- separate fluidsynth/patch functionality from stompbox interface so code can have more general use?
- maybe patches could be used in DAW
- allows other options for display/interface – screen, indicators, MIDI only
- maybe start with curses GUI to make development/hacking easier
-
Squishbox how-to video: adding/modifying patches
I’ve posted a video on YouTube explaining how to add/modify patches on the squishbox, what the patches do, and how to use additional soundfonts beyond the fluidsynth general midi font (FluidR3_GM.sf2).
