This package provides a python interface for controlling the versatile, cross-platform, and free FluidSynth software synthesizer. Rather than simply wrapping all the C functions in the FluidSynth API, it provides a higher-level interface for loading and switching between patches - groups of settings including:
- soundfonts and presets per channel
- effect settings
- MIDI routing rules
- sequencers, arpeggiators, MIDI file players
- LADSPA effect plugins
Patches are written in YAML format in human-readable and -editable bank files. Bank files can easily be copied and used in FluidPatcher programs written for different platforms and purposes. Two programs are included in the scripts/
directory of this repository - a command-line synth and a graphical synth/editor. FluidPatcher is the default synth engine used by the SquishBox Raspberry Pi-based sound module.
See the official documentation for full details.
- Python >= 3.9
- PyYAML python package
- FluidSynth >= 2.2.0, can be obtained in various ways depending on platform:
- Windows: download latest release from github and add its location to your Windows
%PATH%
, or copy it to the same folder as your scripts - Linux, Mac OS: install using your system's package manager
- build the latest version from source
- Windows: download latest release from github and add its location to your Windows
Copy the fluidpatcher/
folder from the github repository to to the same directory as any python scripts that use it. For example, to use the included scripts, use the folder structure below:
📁 scripts/
├── 📄 fluidpatcher_gui.pyw
├── 📄 fluidpatcher_cli.py
├── 📁 config/
│ ├── 📁 banks/
│ ├── 📁 midi/
│ ├── 📁 sf2/
│ └── 📄 fluidpatcherconf.yaml
└── 📁 fluidpatcher/
In future, a setup.py
file or PyPI package may be available.
To understand how to use the included scripts and adjust config files for your system, read Basic Usage.
To learn how to add sounds and create your own patches and bank files, see Soundfonts, Creating Banks, and Plugins.
To write your own programs using FluidPatcher, study the API Reference and the code of the included scripts.
Ask questions, suggest improvements, and/or share your successes in Discussions. If you think you've found a bug, report an Issue.