libfluidsynth  2.2.4
Synthesizer

SoundFont synthesizer. More...

Modules

 Audio Rendering
 The functions in this section can be used to render audio directly to memory buffers.
 
 Effect - Chorus
 Functions for configuring the built-in chorus effect.
 
 Effect - IIR Filter
 Functions for configuring the built-in IIR filter effect.
 
 Effect - LADSPA
 Functions for configuring the LADSPA effects unit.
 
 Effect - Reverb
 Functions for configuring the built-in reverb effect.
 
 MIDI Channel Messages
 The MIDI channel message functions are mostly directly named after their counterpart MIDI messages.
 
 MIDI Channel Setup
 The functions in this section provide interfaces to change the channel type and to configure basic channels, legato and portamento setups.
 
 MIDI Tuning
 The functions in this section implement the MIDI Tuning Standard interface.
 
 SoundFont Management
 Functions to load and unload SoundFonts.
 
 Synthesis Parameters
 Functions to control and query synthesis parameters like gain and polyphony count.
 
 Synthesis Voice Control
 Low-level access to synthesis voices.
 

Lifecycle Functions for Synthesizer

fluid_synth_tnew_fluid_synth (fluid_settings_t *settings)
 Create new FluidSynth instance. More...
 
void delete_fluid_synth (fluid_synth_t *synth)
 Delete a FluidSynth instance. More...
 

Functions

const char * fluid_synth_error (fluid_synth_t *synth)
 Get a textual representation of the last error. More...
 
double fluid_synth_get_cpu_load (fluid_synth_t *synth)
 Get the synth CPU load value. More...
 

Detailed Description

SoundFont synthesizer.

You create a new synthesizer with new_fluid_synth() and you destroy it with delete_fluid_synth(). Use the fluid_settings_t structure to specify the synthesizer characteristics.

You have to load a SoundFont in order to hear any sound. For that you use the fluid_synth_sfload() function.

You can use the audio driver functions to open the audio device and create a background audio thread.

The API for sending MIDI events is probably what you expect: fluid_synth_noteon(), fluid_synth_noteoff(), ...

Function Documentation

◆ delete_fluid_synth()

void delete_fluid_synth ( fluid_synth_t synth)

Delete a FluidSynth instance.

Parameters
synthFluidSynth instance to delete
Note
Other users of a synthesizer instance, such as audio and MIDI drivers, should be deleted prior to freeing the FluidSynth instance.
Examples:
example.c, fluidsynth_arpeggio.c, fluidsynth_fx.c, fluidsynth_metronome.c, fluidsynth_register_adriver.c, fluidsynth_sfload_mem.c, and fluidsynth_simple.c.

◆ fluid_synth_error()

const char* fluid_synth_error ( fluid_synth_t synth)

Get a textual representation of the last error.

Parameters
synthFluidSynth instance
Returns
Pointer to string of last error message. Valid until the same calling thread calls another FluidSynth function which fails. String is internal and should not be modified or freed.
Deprecated:
This function is not thread-safe and does not work with multiple synths. It has been deprecated. It may return "" in a future release and will eventually be removed.

◆ fluid_synth_get_cpu_load()

double fluid_synth_get_cpu_load ( fluid_synth_t synth)

Get the synth CPU load value.

Parameters
synthFluidSynth instance
Returns
Estimated CPU load value in percent (0-100)

◆ new_fluid_synth()

fluid_synth_t* new_fluid_synth ( fluid_settings_t settings)

Create new FluidSynth instance.

Parameters
settingsConfiguration parameters to use (used directly).
Returns
New FluidSynth instance or NULL on error
Note
The settings parameter is used directly, but the synth does not take ownership of it. Hence, the caller is responsible for freeing it, when no longer needed. Further note that you may modify FluidSettings of the settings instance. However, only those FluidSettings marked as 'realtime' will affect the synth immediately. See the Settings Reference for more details.
Warning
The settings object should only be used by a single synth at a time. I.e. creating multiple synth instances with a single settings object causes undefined behavior. Once the "single synth" has been deleted, you may use the settings object again for another synth.
Examples:
example.c, fluidsynth_arpeggio.c, fluidsynth_fx.c, fluidsynth_metronome.c, fluidsynth_register_adriver.c, fluidsynth_sfload_mem.c, and fluidsynth_simple.c.