Crate midi_fundsp
source ·Expand description
This crate enables the construction of synthesizers with live MIDI input and sound synthesis using fundsp.
It is organized as follows:
- The crate root contains functions and data structures useful for constucting fundsp
sounds.
- MIDI input messages are
converted into
SharedMidiState
objects that translate the sounds represented by those messages into fundspShared
atomic variables. SynthFunc
functions translateSharedMidiState
objects into specific fundsp audio graphs.
- MIDI input messages are
converted into
- The
io
module contains functions and data types for obtaining messages from MIDI devices and playing
fundsp audio graphs through the computer’s speakers. - The
sound_builders
module contains functions that wrap fundsp audio graphs intoSynthFunc
functions with a variety of properties. - The
sounds
module containsSynthFunc
functions that produce a variety of live sounds.
The following example programs show how these components interact to produce a working synthesizer:
basic_demo.rs
opens the first MIDI device it finds and plays a simple triangle waveform sound in response to MIDI events.stereo_demo.rs
also opens the first MIDI device it finds. It plays notes below middle C through the left speaker using a Moog Pulse sound, and notes at Middle C or higher through the right speaker using a Moog Triangle sound.choice_demo.rs
allows the user to choose one from among all connected MIDI devices. The user can then choose any sound from thesounds
module for the program’s response to MIDI events.
Modules§
Macros§
- Convenience macro to build a
ProgramTable
. Given a sequence of tuples of&str
objects andSynthFunc
objects, it returns a properProgramTable
.
Structs§
SharedMidiState
objects represent as fundspShared
atomic variables the following MIDI events:- When designing sounds, it can be useful to understand their typical output levels.
SoundTestResult
objects track the minimum, maximum, and mean output levels.
Constants§
- Control value in response to
Note Off
event. - Control value in response to
Note On
event. - Duration of test for
SoundTestResult
. - MIDI values for pitch and velocity range from 0 to 127.
- Total quantity of distinct MIDI values.
- Sample rate of 44.1 kHz for use in
SoundTestResult
.
Functions§
- Converts MIDI pitch-bend message to frequency multiplier over +/- 1 semitone using this algorithm.
- Converts MIDI pitch-bend message to +/- 1 semitone using this algorithm.