libfluidsynth  1.1.8
Functions
ramsfont.h File Reference

API for creating and managing SoundFont instruments in RAM. More...

Functions

FLUIDSYNTH_API fluid_sfont_tfluid_ramsfont_create_sfont (void)
 Create a fluid_sfont_t wrapping a fluid_ramsfont_t. More...
 
FLUIDSYNTH_API int fluid_ramsfont_set_name (fluid_ramsfont_t *sfont, const char *name)
 Set a RAM SoundFont name. More...
 
FLUIDSYNTH_API int fluid_ramsfont_add_izone (fluid_ramsfont_t *sfont, unsigned int bank, unsigned int num, fluid_sample_t *sample, int lokey, int hikey)
 Creates one instrument zone for the sample inside the preset defined by bank and num. More...
 
FLUIDSYNTH_API int fluid_ramsfont_remove_izone (fluid_ramsfont_t *sfont, unsigned int bank, unsigned int num, fluid_sample_t *sample)
 Removes the instrument zone corresponding to bank, num and sample. More...
 
FLUIDSYNTH_API int fluid_ramsfont_izone_set_gen (fluid_ramsfont_t *sfont, unsigned int bank, unsigned int num, fluid_sample_t *sample, int gen_type, float value)
 Sets a generator on an instrument zone identified by bank, num and sample. More...
 
FLUIDSYNTH_API int fluid_ramsfont_izone_set_loop (fluid_ramsfont_t *sfont, unsigned int bank, unsigned int num, fluid_sample_t *sample, int on, float loopstart, float loopend)
 Sets loop start/end values of the instrument zone identified by bank, num and sample. More...
 
FLUIDSYNTH_API fluid_sample_tnew_fluid_ramsample (void)
 Create new RAM SoundFont sample. More...
 
FLUIDSYNTH_API int delete_fluid_ramsample (fluid_sample_t *sample)
 Delete a RAM SoundFont sample. More...
 
FLUIDSYNTH_API int fluid_sample_set_name (fluid_sample_t *sample, const char *name)
 Set the name of a RAM SoundFont sample. More...
 
FLUIDSYNTH_API int fluid_sample_set_sound_data (fluid_sample_t *sample, short *data, unsigned int nbframes, short copy_data, int rootkey)
 Assign sample data to a RAM SoundFont sample. More...
 

Detailed Description

API for creating and managing SoundFont instruments in RAM.

RAM SoundFonts live in ram. The samples are loaded from files or from RAM. A minimal API manages a soundFont structure, with presets, each preset having only one preset-zone, which instrument has potentially many instrument-zones. No global zones, and nor generator nor modulator other than the default ones are permitted. This may be extensible in the future.

Function Documentation

◆ fluid_ramsfont_create_sfont()

FLUIDSYNTH_API fluid_sfont_t* fluid_ramsfont_create_sfont ( void  )

◆ fluid_ramsfont_set_name()

FLUIDSYNTH_API int fluid_ramsfont_set_name ( fluid_ramsfont_t sfont,
const char *  name 
)

Set a RAM SoundFont name.

Parameters
sfontRAM SoundFont
nameName to assign (should be 20 chars in length with a NULL terminator)
Returns
FLUID_OK

References FLUID_OK.

◆ fluid_ramsfont_add_izone()

FLUIDSYNTH_API int fluid_ramsfont_add_izone ( fluid_ramsfont_t sfont,
unsigned int  bank,
unsigned int  num,
fluid_sample_t sample,
int  lokey,
int  hikey 
)

Creates one instrument zone for the sample inside the preset defined by bank and num.

Parameters
sfontRAM SoundFont
bankPreset bank number
numPreset program number
sampleSample to use for instrument zone
lokeyLower MIDI key range of zone (0-127, <= hikey)
hikeyUpper MIDI key range of zone (0-127, >= lokey)
Returns
FLUID_OK on success, FLUID_FAILED otherwise

References FLUID_FAILED, and FLUID_OK.

◆ fluid_ramsfont_remove_izone()

FLUIDSYNTH_API int fluid_ramsfont_remove_izone ( fluid_ramsfont_t sfont,
unsigned int  bank,
unsigned int  num,
fluid_sample_t sample 
)

Removes the instrument zone corresponding to bank, num and sample.

Parameters
sfontRAM SoundFont
bankPreset bank number
numPreset program number
sampleSample of the preset zone
Returns
FLUID_OK on success, FLUID_FAILED otherwise

References FLUID_FAILED, and FLUID_OK.

◆ fluid_ramsfont_izone_set_gen()

FLUIDSYNTH_API int fluid_ramsfont_izone_set_gen ( fluid_ramsfont_t sfont,
unsigned int  bank,
unsigned int  num,
fluid_sample_t sample,
int  gen_type,
float  value 
)

Sets a generator on an instrument zone identified by bank, num and sample.

Parameters
sfontRAM SoundFont
bankPreset bank number
numPreset program number
sampleSample of the instrument zone.
gen_typeGenerator ID (fluid_gen_type)
valueGenerator value
Returns
FLUID_OK on success, FLUID_FAILED otherwise

References FLUID_FAILED.

◆ fluid_ramsfont_izone_set_loop()

FLUIDSYNTH_API int fluid_ramsfont_izone_set_loop ( fluid_ramsfont_t sfont,
unsigned int  bank,
unsigned int  num,
fluid_sample_t sample,
int  on,
float  loopstart,
float  loopend 
)

Sets loop start/end values of the instrument zone identified by bank, num and sample.

Parameters
sfontRAM SoundFont
bankPreset bank number
numPreset program number
sampleSample of the instrument zone
onTRUE to enable looping, FALSE for one shot (loopstart and loopend not used)
loopstartLoop start, in frames (counted from 0)
loopendLoop end, in frames (counted from last frame, thus is < 0)
Returns
FLUID_OK on success, FLUID_FAILED otherwise

References _fluid_mod_t::amount, _fluid_preset_t::data, FLUID_ERR, FLUID_FAILED, fluid_mod_test_identity(), FLUID_NUM_MOD, FLUID_OK, fluid_synth_alloc_voice(), fluid_synth_start_voice(), FLUID_VOICE_ADD, fluid_voice_gen_incr(), fluid_voice_gen_set(), fluid_voice_get_id(), fluid_voice_is_playing(), FLUID_VOICE_OVERWRITE, fluid_voice_update_param(), GEN_ENDADDRCOARSEOFS, GEN_ENDADDROFS, GEN_ENDLOOPADDRCOARSEOFS, GEN_ENDLOOPADDROFS, GEN_EXCLUSIVECLASS, GEN_KEYNUM, GEN_LAST, GEN_OVERRIDEROOTKEY, GEN_SAMPLEMODE, GEN_SET, GEN_STARTADDRCOARSEOFS, GEN_STARTADDROFS, GEN_STARTLOOPADDRCOARSEOFS, GEN_STARTLOOPADDROFS, GEN_UNUSED, GEN_VELOCITY, and _fluid_sample_t::name.

◆ new_fluid_ramsample()

FLUIDSYNTH_API fluid_sample_t* new_fluid_ramsample ( void  )

Create new RAM SoundFont sample.

Returns
New RAM SoundFont sample or NULL if out of memory

References FLUID_ERR.

◆ delete_fluid_ramsample()

FLUIDSYNTH_API int delete_fluid_ramsample ( fluid_sample_t sample)

Delete a RAM SoundFont sample.

Parameters
sampleSample to delete
Returns
FLUID_OK

References _fluid_sample_t::data, and FLUID_OK.

Referenced by fluid_ramsfont_create_sfont().

◆ fluid_sample_set_name()

FLUIDSYNTH_API int fluid_sample_set_name ( fluid_sample_t sample,
const char *  name 
)

Set the name of a RAM SoundFont sample.

Parameters
sampleRAM SoundFont sample
nameName to assign to sample (20 chars in length, 0 terminated)
Returns
FLUID_OK

References FLUID_OK, and _fluid_sample_t::name.

◆ fluid_sample_set_sound_data()

FLUIDSYNTH_API int fluid_sample_set_sound_data ( fluid_sample_t sample,
short *  data,
unsigned int  nbframes,
short  copy_data,
int  rootkey 
)

Assign sample data to a RAM SoundFont sample.

Parameters
sampleRAM SoundFont sample
dataBuffer containing 16 bit audio sample data
nbframesNumber of samples in data
copy_dataTRUE to copy the data, FALSE to use it directly
rootkeyRoot MIDI note of sample (0-127)
Returns
FLUID_OK on success, FLUID_FAILED otherwise

WARNING: If copy_data is FALSE, data should have 8 unused frames at start and 8 unused frames at the end.

References _fluid_sample_t::data, _fluid_sample_t::end, FLUID_ERR, FLUID_FAILED, FLUID_OK, FLUID_SAMPLETYPE_MONO, _fluid_sample_t::loopend, _fluid_sample_t::loopstart, _fluid_sample_t::origpitch, _fluid_sample_t::pitchadj, _fluid_sample_t::samplerate, _fluid_sample_t::sampletype, _fluid_sample_t::start, and _fluid_sample_t::valid.