SEQUENCER
3.2 Event types
3.2.1 Note events
SND_SEQ_EVENT_NOTE 1 /* note with pitch, velocity and duration */
SND_SEQ_EVENT_NOTEON 2 /* Note On with pitch, velocity */
SND_SEQ_EVENT_NOTEOFF 3 /* Note Off with pitch, velocity */
- note = 0..127
- velocity = 0..127
- duration = 32 bits, either real-time or song ticks (depending on
timestamp format for the event). For real-time events the duration is
specified in ms.
Data structure used for note events:
/* note event */
typedef struct {
unsigned char note;
unsigned char velocity;
unsigned int duration;
} snd_seq_ev_note;
3.2.2 Controller
SND_SEQ_EVENT_KEYPRESS 10 /* Poly Key Pressure with pitch and pressure */
SND_SEQ_EVENT_CONTROLLER 11 /* Control Change with controller ID and value */
SND_SEQ_EVENT_PGMCHANGE 12 /* Program Change with program ID number */
SND_SEQ_EVENT_CHANPRESS 13 /* Channel Pressure with pressure value */
SND_SEQ_EVENT_PITCHBEND 14 /* Pitch Bend Change with LSB and MSB values */
SND_SEQ_EVENT_CONTROL14 15 /* controller no. 0..31, 14 bit value
SND_SEQ_EVENT_NONREGPARAM 16 /* 14 bit controller, 14 bit value
SND_SEQ_EVENT_REGPARAM 17 /* 14 bit controller, 14 bit value */
Data structure used for controller events:
/* controller event */
typedef struct {
unsigned int param;
signed int value;
} snd_seq_ev_ctrl;
3.2.3 Synchronisation
\#define typeSongPos 8 /* Song Position Pointer with LSB and MSB values
\#define typeSongSel 9 /* Song Select with song ID number
\#define typeClock 10 /* midi Real Time Clock message
\#define typeStart 11 /* midi Real Time Start message
\#define typeContinue 12 /* midi Real Time Continue message
\#define typeStop 13 /* midi Real Time Stop message
\#define typeQuarterFrame 130 /* Midi time code quarter frame
3.2.4 Sysex
\#define typeSysEx 17 /* System Exclusive (only data bytes)
3.2.5 Misc
\#define typeTune 14 /* midi Real Time Tune Request (who uses this these days???)
\#define typeActiveSens 15 /* Active Sensing
\#define typeReset 16 /* midi Real Time Reset
\#define typeStream 18 /* arbitrary stream of bytes
\#define typeApplication xxx /* used for applications internal use, eg. generating delayed call-backs
3.2.6 SMF - Standard MIDI File events
These are events from the MidiFile 1.0 specification
\#define typeSeqNum 134 /* SMF sequence number (0..65535)
\#define typeTextual 135 /* SMF text event
\#define typeCopyright 136 /* SMF copyright message
\#define typeSeqName 137 /* SMF sequence name event
\#define typeInstrName 138 /* SMF instrument name
\#define typeLyric 139 /* SMF lyric event
\#define typeMarker 140 /* SMF marker
\#define typeCuePoint 141 /* SMF cue point
\#define typeChanPrefix 142 /* SMF Midi Channel Prefix
\#define typeEndTrack 143 /* SMF end of track event
\#define typeSMPTEOffset 145 /* SMF SMPTE offset
\#define typeSpecific 148 /* SMF sequencer specific meta event
\#define typeTempo 144 /* SMF Tempo event
\#define typeTimeSign 146 /* SMF Time Signature event
\#define typeKeySign 147 /* SMF Key Signature event
3.2.7 Patch download
- sds (how to handle multi-samples???)
- riff