FluidPatcher is a Python toolkit for building apps around FluidSynth, a versatile sample-based synthesizer that uses soundfonts and other sample-based file formats.
Patches
FluidPatcher is based around the idea of patches, which are descriptions of what the synth should do and how it should respond to controls, such as:
- "Assign this sound preset to this MIDI channel"
- "Send incoming MIDI notes from this range of the keyboard to this channel"
- "Set this effect parameter to value X"
- "When triggered, use the sequencer to play this pattern of notes"
In an application, patches behave like the different sounds/presets on a synthesizer. Selecting sounds is as simple as:
import fluidpatcher
fp = fluidpatcher.FluidPatcher()
fp.load_bank("set2patches.yaml")
fp.apply_patch("Bass/Synth Split 3")
Advanced Features
FluidPatcher adds classes that leverage FluidSynth's MIDI router, sequencer, built-in effects, and LADSPA plugin hosting capability to create performance features such as:
- Keyboard splits and layers
- Arpeggiators, multi-track sequences, and loopers
- MIDI file players with arbitrary loop/seek
- Multi-channel effect plugin chains
Users can define patches with all of these features in bank files, written in a human-readable YAML format, without having to code. These features can be created/modified programmatically as well, allowing the design of synth apps ranging from simple sample players to things like synths with dozens of keyboard layers/splits, multi-channel non-destructive loopers, or dynamic grooveboxes that respond to note patterns.
Purpose
FluidPatcher grew out of a simple python wrapper around FluidSynth, designed to serve as the synth engine for the SquishBox. As the SquishBox grew into more of a general audio hardware platform, FluidPatcher became more separate and added features, to the point that it is now an independent, cross-platform synthesizer package that works anywhere FluidSynth does.