Author: white2rnado

  • Headless Pi Synth

    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.

  • 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

    considering changing /etc/systemd/system/squishbox.service unit file to get <7s start time

    #After=multi-user.target
    After=local-fs.target
    startup time plot
  • 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/upgrade
    • sudo 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-pip
    • sudo apt-get autoremove
    • sudo apt-get clean
    • sudo pip3 install oyaml RPi.GPIO RPLCD mido
    • install dac: add dtoverlay=hifiberry-dac and #dtparam=audio=on to /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 0002 to [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
  • Commit Time

    just published to github .. only took 3 weeks xP

  • 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).