SoundFont Compiler is a command-line tool for creating soundfonts. Unlike most other tools, it isn't designed around a workflow of editing soundfonts. Instead, the soundfont binary is generated from "source code" comprising text and audio files.
Breaking the soundfont into separate files and defining parameters in a text-based format makes collaboration and version control much easier.
The project in its current state is a barely working proof of concept. The output from compiling the example project is good enough to be parsed by RustySynth.
You should be somewhat familiar with the SoundFont 2 format.
The quickest explanation
Hierarchy:
preset -> instrument -> sample
- A soundfont contains one or more presets.
- A preset contains one or more instruments.
- An instrument contains one or more samples.
The naming can be confusing. The preset is the unit visible from outside. In this context, when you choose a "patch," or "sound," you're choosing a preset, not an instrument. Instruments are internal to the soundfont. A preset may layer multiple instruments over each other to create a specific sound, and instruments can do the same with samples.
.
├── instruments/
│ └── AcousticGuitar.toml
├── presets/
│ └── 025_AcousticGuitar.toml
├── samples/
│ ├── guitarpluck_l.wav
│ └── guitarpluck_r.wav
└── SoundFont.toml
Samples are loose WAVE files. Presets, instruments and parameters are defined in TOML-files. See the example project.