libfluidsynth  2.3.5
Sequencer Events

Create, modify, query and destroy sequencer events. More...

Enumerations

enum  fluid_seq_event_type {
  FLUID_SEQ_NOTE = 0 ,
  FLUID_SEQ_NOTEON ,
  FLUID_SEQ_NOTEOFF ,
  FLUID_SEQ_ALLSOUNDSOFF ,
  FLUID_SEQ_ALLNOTESOFF ,
  FLUID_SEQ_BANKSELECT ,
  FLUID_SEQ_PROGRAMCHANGE ,
  FLUID_SEQ_PROGRAMSELECT ,
  FLUID_SEQ_PITCHBEND ,
  FLUID_SEQ_PITCHWHEELSENS ,
  FLUID_SEQ_MODULATION ,
  FLUID_SEQ_SUSTAIN ,
  FLUID_SEQ_CONTROLCHANGE ,
  FLUID_SEQ_PAN ,
  FLUID_SEQ_VOLUME ,
  FLUID_SEQ_REVERBSEND ,
  FLUID_SEQ_CHORUSSEND ,
  FLUID_SEQ_TIMER ,
  FLUID_SEQ_CHANNELPRESSURE ,
  FLUID_SEQ_KEYPRESSURE ,
  FLUID_SEQ_SYSTEMRESET ,
  FLUID_SEQ_UNREGISTERING ,
  FLUID_SEQ_SCALE ,
  FLUID_SEQ_LASTEVENT
}
 Sequencer event type enumeration. More...
 

Lifecycle Functions for Sequencer Event_linebr@{

fluid_event_tnew_fluid_event (void)
 Create a new sequencer event structure. More...
 
void delete_fluid_event (fluid_event_t *evt)
 Delete a sequencer event structure. More...
 

Functions

void fluid_event_all_notes_off (fluid_event_t *evt, int channel)
 Set a sequencer event to be a all notes off event. More...
 
void fluid_event_all_sounds_off (fluid_event_t *evt, int channel)
 Set a sequencer event to be an all sounds off event. More...
 
void fluid_event_bank_select (fluid_event_t *evt, int channel, short bank_num)
 Set a sequencer event to be a bank select event. More...
 
void fluid_event_channel_pressure (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a channel-wide aftertouch event. More...
 
void fluid_event_chorus_send (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a chorus send event. More...
 
void fluid_event_control_change (fluid_event_t *evt, int channel, short control, int val)
 Set a sequencer event to be a MIDI control change event. More...
 
int fluid_event_from_midi_event (fluid_event_t *, const fluid_midi_event_t *)
 Transforms an incoming MIDI event (from a MIDI driver or MIDI router) to a sequencer event. More...
 
short fluid_event_get_bank (fluid_event_t *evt)
 Get the MIDI bank field from a sequencer event structure. More...
 
int fluid_event_get_channel (fluid_event_t *evt)
 Get the MIDI channel field from a sequencer event structure. More...
 
short fluid_event_get_control (fluid_event_t *evt)
 Get the MIDI control number field from a sequencer event structure. More...
 
void * fluid_event_get_data (fluid_event_t *evt)
 Get the data field from a sequencer event structure. More...
 
fluid_seq_id_t fluid_event_get_dest (fluid_event_t *evt)
 Get the dest sequencer client from a sequencer event structure. More...
 
unsigned int fluid_event_get_duration (fluid_event_t *evt)
 Get the duration field from a sequencer event structure. More...
 
short fluid_event_get_key (fluid_event_t *evt)
 Get the MIDI note field from a sequencer event structure. More...
 
int fluid_event_get_pitch (fluid_event_t *evt)
 Get the pitch field from a sequencer event structure. More...
 
int fluid_event_get_program (fluid_event_t *evt)
 Get the MIDI program field from a sequencer event structure. More...
 
double fluid_event_get_scale (fluid_event_t *evt)
 Gets time scale field from a sequencer event structure. More...
 
unsigned int fluid_event_get_sfont_id (fluid_event_t *evt)
 Get the SoundFont ID field from a sequencer event structure. More...
 
fluid_seq_id_t fluid_event_get_source (fluid_event_t *evt)
 Get the source sequencer client from a sequencer event structure. More...
 
int fluid_event_get_type (fluid_event_t *evt)
 Get the event type (fluid_seq_event_type) field from a sequencer event structure. More...
 
int fluid_event_get_value (fluid_event_t *evt)
 Get the value field from a sequencer event structure. More...
 
short fluid_event_get_velocity (fluid_event_t *evt)
 Get the MIDI velocity field from a sequencer event structure. More...
 
void fluid_event_key_pressure (fluid_event_t *evt, int channel, short key, int val)
 Set a sequencer event to be a polyphonic aftertouch event. More...
 
void fluid_event_modulation (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a modulation event. More...
 
void fluid_event_note (fluid_event_t *evt, int channel, short key, short vel, unsigned int duration)
 Set a sequencer event to be a note duration event. More...
 
void fluid_event_noteoff (fluid_event_t *evt, int channel, short key)
 Set a sequencer event to be a note off event. More...
 
void fluid_event_noteon (fluid_event_t *evt, int channel, short key, short vel)
 Set a sequencer event to be a note on event. More...
 
void fluid_event_pan (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a stereo pan event. More...
 
void fluid_event_pitch_bend (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a pitch bend event. More...
 
void fluid_event_pitch_wheelsens (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a pitch wheel sensitivity event. More...
 
void fluid_event_program_change (fluid_event_t *evt, int channel, int preset_num)
 Set a sequencer event to be a program change event. More...
 
void fluid_event_program_select (fluid_event_t *evt, int channel, unsigned int sfont_id, short bank_num, short preset_num)
 Set a sequencer event to be a program select event. More...
 
void fluid_event_reverb_send (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a reverb send event. More...
 
void fluid_event_scale (fluid_event_t *evt, double new_scale)
 Set a sequencer event to be a scale change event. More...
 
void fluid_event_set_dest (fluid_event_t *evt, fluid_seq_id_t dest)
 Set destination of this sequencer event, i.e. More...
 
void fluid_event_set_source (fluid_event_t *evt, fluid_seq_id_t src)
 Set source of a sequencer event. More...
 
void fluid_event_sustain (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a MIDI sustain event. More...
 
void fluid_event_system_reset (fluid_event_t *evt)
 Set a sequencer event to be a midi system reset event. More...
 
void fluid_event_timer (fluid_event_t *evt, void *data)
 Set a sequencer event to be a timer event. More...
 
void fluid_event_unregistering (fluid_event_t *evt)
 Set a sequencer event to be an unregistering event. More...
 
void fluid_event_volume (fluid_event_t *evt, int channel, int val)
 Set a sequencer event to be a volume event. More...
 

Detailed Description

Create, modify, query and destroy sequencer events.

Enumeration Type Documentation

◆ fluid_seq_event_type

Sequencer event type enumeration.

Enumerator
FLUID_SEQ_NOTE 

Note event with duration.

FLUID_SEQ_NOTEON 

Note on event.

FLUID_SEQ_NOTEOFF 

Note off event.

FLUID_SEQ_ALLSOUNDSOFF 

All sounds off event.

FLUID_SEQ_ALLNOTESOFF 

All notes off event.

FLUID_SEQ_BANKSELECT 

Bank select message.

FLUID_SEQ_PROGRAMCHANGE 

Program change message.

FLUID_SEQ_PROGRAMSELECT 

Program select message.

FLUID_SEQ_PITCHBEND 

Pitch bend message.

FLUID_SEQ_PITCHWHEELSENS 

Pitch wheel sensitivity set message.

Since
1.1.0 was misspelled previously
FLUID_SEQ_MODULATION 

Modulation controller event.

FLUID_SEQ_SUSTAIN 

Sustain controller event.

FLUID_SEQ_CONTROLCHANGE 

MIDI control change event.

FLUID_SEQ_PAN 

Stereo pan set event.

FLUID_SEQ_VOLUME 

Volume set event.

FLUID_SEQ_REVERBSEND 

Reverb send set event.

FLUID_SEQ_CHORUSSEND 

Chorus send set event.

FLUID_SEQ_TIMER 

Timer event (useful for giving a callback at a certain time)

FLUID_SEQ_CHANNELPRESSURE 

Channel aftertouch event.

Since
1.1.0
FLUID_SEQ_KEYPRESSURE 

Polyphonic aftertouch event.

Since
2.0.0
FLUID_SEQ_SYSTEMRESET 

System reset event.

Since
1.1.0
FLUID_SEQ_UNREGISTERING 

Called when a sequencer client is being unregistered.

Since
1.1.0
FLUID_SEQ_SCALE 

Sets a new time scale for the sequencer.

Since
2.2.0

Function Documentation

◆ delete_fluid_event()

void delete_fluid_event ( fluid_event_t evt)

Delete a sequencer event structure.

Parameters
evtSequencer event structure created by new_fluid_event().
Examples
fluidsynth_arpeggio.c, and fluidsynth_metronome.c.

◆ fluid_event_all_notes_off()

void fluid_event_all_notes_off ( fluid_event_t evt,
int  channel 
)

Set a sequencer event to be a all notes off event.

Parameters
evtSequencer event structure
channelMIDI channel number

◆ fluid_event_all_sounds_off()

void fluid_event_all_sounds_off ( fluid_event_t evt,
int  channel 
)

Set a sequencer event to be an all sounds off event.

Parameters
evtSequencer event structure
channelMIDI channel number

◆ fluid_event_bank_select()

void fluid_event_bank_select ( fluid_event_t evt,
int  channel,
short  bank_num 
)

Set a sequencer event to be a bank select event.

Parameters
evtSequencer event structure
channelMIDI channel number
bank_numMIDI bank number (0-16383)

◆ fluid_event_channel_pressure()

void fluid_event_channel_pressure ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a channel-wide aftertouch event.

Parameters
evtSequencer event structure
channelMIDI channel number
valAftertouch amount (0-127)
Since
1.1.0

◆ fluid_event_chorus_send()

void fluid_event_chorus_send ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a chorus send event.

Parameters
evtSequencer event structure
channelMIDI channel number
valChorus amount (0-127)

◆ fluid_event_control_change()

void fluid_event_control_change ( fluid_event_t evt,
int  channel,
short  control,
int  val 
)

Set a sequencer event to be a MIDI control change event.

Parameters
evtSequencer event structure
channelMIDI channel number
controlMIDI control number (0-127)
valMIDI control value (0-127)

◆ fluid_event_from_midi_event()

int fluid_event_from_midi_event ( fluid_event_t evt,
const fluid_midi_event_t event 
)

Transforms an incoming MIDI event (from a MIDI driver or MIDI router) to a sequencer event.

Parameters
evtSequencer event structure
eventMIDI event
Returns
FLUID_OK or FLUID_FAILED
Note
This function copies the fields of the MIDI event into the provided sequencer event. Calling applications must create the sequencer event and set additional fields such as the source and destination of the sequencer event.
// ... get MIDI event, e.g. using player_callback()
// Send MIDI event to sequencer to play
fluid_sequencer_send_at(sequencer, evt, 50, 0); // relative time
struct _fluid_event_t fluid_event_t
Sequencer event.
Definition: types.h:56
void fluid_event_set_source(fluid_event_t *evt, fluid_seq_id_t src)
Set source of a sequencer event.
Definition: fluid_event.c:112
int fluid_event_from_midi_event(fluid_event_t *, const fluid_midi_event_t *)
Transforms an incoming MIDI event (from a MIDI driver or MIDI router) to a sequencer event.
Definition: fluid_event.c:607
void fluid_event_set_dest(fluid_event_t *evt, fluid_seq_id_t dest)
Set destination of this sequencer event, i.e.
Definition: fluid_event.c:123
fluid_event_t * new_fluid_event(void)
Create a new sequencer event structure.
Definition: fluid_event.c:59
void delete_fluid_event(fluid_event_t *evt)
Delete a sequencer event structure.
Definition: fluid_event.c:81
int fluid_sequencer_send_at(fluid_sequencer_t *seq, fluid_event_t *evt, unsigned int time, int absolute)
Schedule an event for sending at a later time.
Definition: fluid_seq.c:476
Since
2.2.7

◆ fluid_event_get_bank()

short fluid_event_get_bank ( fluid_event_t evt)

Get the MIDI bank field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI bank number (0-16383)

Used by the FLUID_SEQ_BANKSELECT and FLUID_SEQ_PROGRAMSELECT event types.

◆ fluid_event_get_channel()

int fluid_event_get_channel ( fluid_event_t evt)

Get the MIDI channel field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI zero-based channel number

◆ fluid_event_get_control()

short fluid_event_get_control ( fluid_event_t evt)

Get the MIDI control number field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI control number (0-127)

◆ fluid_event_get_data()

void* fluid_event_get_data ( fluid_event_t evt)

Get the data field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
Data field of event.

Used by the FLUID_SEQ_TIMER event type.

◆ fluid_event_get_dest()

fluid_seq_id_t fluid_event_get_dest ( fluid_event_t evt)

Get the dest sequencer client from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
dest field of the sequencer event

◆ fluid_event_get_duration()

unsigned int fluid_event_get_duration ( fluid_event_t evt)

Get the duration field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
Note duration value in the time scale used by the sequencer (by default milliseconds)

Used by the FLUID_SEQ_NOTE event type.

◆ fluid_event_get_key()

short fluid_event_get_key ( fluid_event_t evt)

Get the MIDI note field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI note number (0-127)

◆ fluid_event_get_pitch()

int fluid_event_get_pitch ( fluid_event_t evt)

Get the pitch field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI pitch bend pitch value (0-16383, 8192 = no bend)

Used by the FLUID_SEQ_PITCHBEND event type.

◆ fluid_event_get_program()

int fluid_event_get_program ( fluid_event_t evt)

Get the MIDI program field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI program number (0-127)

Used by the FLUID_SEQ_PROGRAMCHANGE and FLUID_SEQ_PROGRAMSELECT event types.

◆ fluid_event_get_scale()

double fluid_event_get_scale ( fluid_event_t evt)

Gets time scale field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
SoundFont identifier value.

Used by the FLUID_SEQ_SCALE event type.

◆ fluid_event_get_sfont_id()

unsigned int fluid_event_get_sfont_id ( fluid_event_t evt)

Get the SoundFont ID field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
SoundFont identifier value.

Used by the FLUID_SEQ_PROGRAMSELECT event type.

◆ fluid_event_get_source()

fluid_seq_id_t fluid_event_get_source ( fluid_event_t evt)

Get the source sequencer client from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
source field of the sequencer event

◆ fluid_event_get_type()

int fluid_event_get_type ( fluid_event_t evt)

Get the event type (fluid_seq_event_type) field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
Event type (fluid_seq_event_type).

◆ fluid_event_get_value()

int fluid_event_get_value ( fluid_event_t evt)

Get the value field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
Value field of event.

The Value field is used by the following event types: FLUID_SEQ_PROGRAMCHANGE, FLUID_SEQ_PROGRAMSELECT (preset_num), FLUID_SEQ_PITCHWHEELSENS, FLUID_SEQ_MODULATION, FLUID_SEQ_SUSTAIN, FLUID_SEQ_CONTROLCHANGE, FLUID_SEQ_PAN, FLUID_SEQ_VOLUME, FLUID_SEQ_REVERBSEND, FLUID_SEQ_CHORUSSEND.

◆ fluid_event_get_velocity()

short fluid_event_get_velocity ( fluid_event_t evt)

Get the MIDI velocity field from a sequencer event structure.

Parameters
evtSequencer event structure
Returns
MIDI velocity value (0-127)

◆ fluid_event_key_pressure()

void fluid_event_key_pressure ( fluid_event_t evt,
int  channel,
short  key,
int  val 
)

Set a sequencer event to be a polyphonic aftertouch event.

Parameters
evtSequencer event structure
channelMIDI channel number
keyMIDI note number (0-127)
valAftertouch amount (0-127)
Since
2.0.0

◆ fluid_event_modulation()

void fluid_event_modulation ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a modulation event.

Parameters
evtSequencer event structure
channelMIDI channel number
valMIDI modulation value (0-127)

◆ fluid_event_note()

void fluid_event_note ( fluid_event_t evt,
int  channel,
short  key,
short  vel,
unsigned int  duration 
)

Set a sequencer event to be a note duration event.

Before fluidsynth 2.2.0, this event type was naively implemented when used in conjunction with fluid_sequencer_register_fluidsynth(), because it simply enqueued a fluid_event_noteon() and fluid_event_noteoff(). A handling for overlapping notes was not implemented. Starting with 2.2.0, this changes: If a fluid_event_note() is already playing, while another fluid_event_note() arrives on the same channel and key, the earlier event will be canceled.

Parameters
evtSequencer event structure
channelMIDI channel number
keyMIDI note number (0-127)
velMIDI velocity value (1-127)
durationDuration of note in the time scale used by the sequencer
Note
The application should decide whether to use only Notes with duration, or separate NoteOn and NoteOff events.
Warning
Calling this function with vel or duration being zero results in undefined behavior!

◆ fluid_event_noteoff()

void fluid_event_noteoff ( fluid_event_t evt,
int  channel,
short  key 
)

Set a sequencer event to be a note off event.

Parameters
evtSequencer event structure
channelMIDI channel number
keyMIDI note number (0-127)
Examples
fluidsynth_arpeggio.c.

◆ fluid_event_noteon()

void fluid_event_noteon ( fluid_event_t evt,
int  channel,
short  key,
short  vel 
)

Set a sequencer event to be a note on event.

Parameters
evtSequencer event structure
channelMIDI channel number
keyMIDI note number (0-127)
velMIDI velocity value (0-127)
Note
Since fluidsynth 2.2.2, this function will give you a FLUID_SEQ_NOTEOFF when called with vel being zero.
Examples
fluidsynth_arpeggio.c, and fluidsynth_metronome.c.

◆ fluid_event_pan()

void fluid_event_pan ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a stereo pan event.

Parameters
evtSequencer event structure
channelMIDI channel number
valMIDI panning value (0-127, 0=left, 64 = middle, 127 = right)

◆ fluid_event_pitch_bend()

void fluid_event_pitch_bend ( fluid_event_t evt,
int  channel,
int  pitch 
)

Set a sequencer event to be a pitch bend event.

Parameters
evtSequencer event structure
channelMIDI channel number
pitchMIDI pitch bend value (0-16383, 8192 = no bend)

◆ fluid_event_pitch_wheelsens()

void fluid_event_pitch_wheelsens ( fluid_event_t evt,
int  channel,
int  value 
)

Set a sequencer event to be a pitch wheel sensitivity event.

Parameters
evtSequencer event structure
channelMIDI channel number
valueMIDI pitch wheel sensitivity value in semitones

◆ fluid_event_program_change()

void fluid_event_program_change ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a program change event.

Parameters
evtSequencer event structure
channelMIDI channel number
valMIDI program number (0-127)

◆ fluid_event_program_select()

void fluid_event_program_select ( fluid_event_t evt,
int  channel,
unsigned int  sfont_id,
short  bank_num,
short  preset_num 
)

Set a sequencer event to be a program select event.

Parameters
evtSequencer event structure
channelMIDI channel number
sfont_idSoundFont ID number
bank_numMIDI bank number (0-16383)
preset_numMIDI preset number (0-127)

◆ fluid_event_reverb_send()

void fluid_event_reverb_send ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a reverb send event.

Parameters
evtSequencer event structure
channelMIDI channel number
valReverb amount (0-127)

◆ fluid_event_scale()

void fluid_event_scale ( fluid_event_t evt,
double  new_scale 
)

Set a sequencer event to be a scale change event.

Useful for scheduling tempo changes.

Parameters
evtSequencer event structure
new_scaleThe new time scale to apply to the sequencer, see fluid_sequencer_set_time_scale()
Since
2.2.0

◆ fluid_event_set_dest()

void fluid_event_set_dest ( fluid_event_t evt,
fluid_seq_id_t  dest 
)

Set destination of this sequencer event, i.e.

the sequencer client this event will be sent to. dest must be a unique sequencer ID.

Parameters
evtSequencer event structure
destThe destination unique sequencer ID
Examples
fluidsynth_arpeggio.c, and fluidsynth_metronome.c.

◆ fluid_event_set_source()

void fluid_event_set_source ( fluid_event_t evt,
fluid_seq_id_t  src 
)

Set source of a sequencer event.

src must be a unique sequencer ID or -1 if not set.

Parameters
evtSequencer event structure
srcUnique sequencer ID
Examples
fluidsynth_arpeggio.c, and fluidsynth_metronome.c.

◆ fluid_event_sustain()

void fluid_event_sustain ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a MIDI sustain event.

Parameters
evtSequencer event structure
channelMIDI channel number
valMIDI sustain value (0-127)

◆ fluid_event_system_reset()

void fluid_event_system_reset ( fluid_event_t evt)

Set a sequencer event to be a midi system reset event.

Parameters
evtSequencer event structure
Since
1.1.0

◆ fluid_event_timer()

void fluid_event_timer ( fluid_event_t evt,
void *  data 
)

Set a sequencer event to be a timer event.

Parameters
evtSequencer event structure
dataUser supplied data pointer
Examples
fluidsynth_arpeggio.c, and fluidsynth_metronome.c.

◆ fluid_event_unregistering()

void fluid_event_unregistering ( fluid_event_t evt)

Set a sequencer event to be an unregistering event.

Parameters
evtSequencer event structure
Since
1.1.0

◆ fluid_event_volume()

void fluid_event_volume ( fluid_event_t evt,
int  channel,
int  val 
)

Set a sequencer event to be a volume event.

Parameters
evtSequencer event structure
channelMIDI channel number
valVolume value (0-127)

◆ new_fluid_event()

fluid_event_t* new_fluid_event ( void  )

Create a new sequencer event structure.

Returns
New sequencer event structure or NULL if out of memory
Examples
fluidsynth_arpeggio.c, and fluidsynth_metronome.c.