Skip to content

sevonj/soundfont-compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SoundFont Compiler

What?

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.

Why?

Breaking the soundfont into separate files and defining parameters in a text-based format makes collaboration and version control much easier.

Current state

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.

More details

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.

Example project structure:

.
├── 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.

Releases

No releases published

Packages

No packages published

Languages