Menu

Tree [063c61] master /
 History

HTTPS access


File Date Author Commit
 SquishBox 2020-04-14 Bill Peterson Bill Peterson [25663c] bug catches while imaging
 images 2020-05-01 Bill Peterson Bill Peterson [3979a4] bugfixes/tweaks for release
 utils 2020-05-01 Bill Peterson Bill Peterson [3979a4] bugfixes/tweaks for release
 .gitattributes 2020-04-04 Bill Peterson Bill Peterson [afc539] Initial commit
 .gitignore 2020-04-04 Bill Peterson Bill Peterson [afc539] Initial commit
 LICENSE 2020-04-04 Bill Peterson Bill Peterson [afc539] Initial commit
 README.md 2020-05-03 Bill Peterson Bill Peterson [063c61] fixes to wxfluidpatcher
 bankedit.py 2020-04-29 Bill Peterson Bill Peterson [fd7d66] added wxfluidpatcher.py implementation
 fluidwrap.py 2020-04-29 Bill Peterson Bill Peterson [fd7d66] added wxfluidpatcher.py implementation
 patcher.py 2020-04-29 Bill Peterson Bill Peterson [fd7d66] added wxfluidpatcher.py implementation
 patcherconf.yaml 2020-05-03 Bill Peterson Bill Peterson [063c61] fixes to wxfluidpatcher
 squishbox.py 2020-04-29 Bill Peterson Bill Peterson [fd7d66] added wxfluidpatcher.py implementation
 stompboxpi.py 2020-04-14 Bill Peterson Bill Peterson [25663c] bug catches while imaging
 wxfluidpatcher.pyw 2020-05-03 Bill Peterson Bill Peterson [063c61] fixes to wxfluidpatcher

Read Me

FluidPatcher

A performance-oriented patch interface for FluidSynth. Fluidsynth is an open source software synthesizer that uses soundfonts - a freely-available and well-documented sound format. A patch is a collection of settings such as soundfont presets for each MIDI channel, control-change/sysex messages to send when the patch is selected, and midi router or effects settings. Groups of patches are stored in banks, which are saved as human-readable and -editable YAML files. This allows a musician to easily create complex combinations of synthesizer settings ahead of time and switch between them on the fly during a performance.

FluidPatcher should work on any operating system on which FluidSynth and Python can be installed. fluidwrap.py provides a Python interface to FluidSynth's C functions, and patcher.py provides the library functions to handle patches and banks, load soundfonts, change FluidSynth settings, etc. This repository includes the following implementations of patcher.py:
- wxfluidpatcher.pyw - a wxpython-based GUI that allows live editing of bank files, playing of patches, and browsing/playing soundfont presets.
- bankedit.py - a curses-(i.e. text-) based bank editor and patch player.
- squishbox.py - a front-end designed to work on a Raspberry Pi with a 16x2 character LCD and two buttons, like the SquishBox designed by Geek Funk Labs.

Check the wiki for more information about using the scripts, bank/config file formats, the API, etc.

Installation

Download and install Python 3. FluidPatcher is not designed to be backwards-compatible with Python 2 (although it will probably work with minor tweaks). If you have Python 2/3 installed side-by-side (e.g. as in most Raspbian distributions), you may have to modify some commands below (e.g. python -> python3 and pip -> pip3).

Use pip to install dependencies (run as root on Linux/OS X):

pip install oyaml wxpython mido python-rtmidi

On Windows, add windows-curses above for bankedit.py.

On a Raspberry Pi, add RPLCD and RPi.GPIO to use squishbox.py.

Install FluidSynth on your system. You can download packages for most systems. Precompiled binaries for some platforms are included in the Releases section. Fluidsynth can also be compiled from source code.

Download the repository and unpack the files where you want to use them. On Windows, the FluidSynth .dll files must be in the same directory as FluidPatcher, or their location must be in your %PATH% environment variable.

Usage

The scripts can be run from a command prompt (Win+R and cmd on Windows). For example

python bankedit.py

In default Python installations, .pyw files will be run as GUI applications as long as the correct Python interpreter is in your path, so double-clicking wxfluidpatcher.pyw should work as well.

The patcherconf.yaml config file contains system-wide settings for FluidPatcher. Uncomment the section corresponding to your platform for best results.

Bank files are stored in the SquishBox/banks directory. The example bank file includes comments to help explain the format and highlight some of the capabilities of patches. Soundfonts are stored in SquishBox/sf2. A few sample fonts are provided, and many more can be found on the internet or created/edited/tweaked with software - such as the excellent Polyphone. The included ModWaves.sf2 soundfont demonstrates using modulators in a soundfont to expose FluidSynth's performance capabilities. In this case, control changes (CC) 70 and 74 are mapped to the filter's cutoff and resonance, allowing these to be controlled dynamically with FluidPatcher.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.