NiCMidi 1.1.0
A MIDI library derived from J.D.Koftinoff jdksmidi
MIDI Enumerations

These are the enum used by the library to avoid MIDI hexadecimal values. More...

Channel status bytes

enum  : unsigned char {
  NOTE_OFF =0x80 , NOTE_ON =0x90 , POLY_PRESSURE =0xa0 , CONTROL_CHANGE =0xb0 ,
  PROGRAM_CHANGE =0xc0 , CHANNEL_PRESSURE =0xd0 , PITCH_BEND =0xe0 , SYSEX_START =0xf0 ,
  MTC =0xf1 , SONG_POSITION =0xf2 , SONG_SELECT =0xf3 , TUNE_REQUEST =0xf6 ,
  SYSEX_END =0xf7 , RESET =0xff , META_EVENT =0xff
}
 These are the type values for a MIDI channel message. More...
 

MIDI Real Time Messages

enum  : unsigned char {
  RT_TIMING_CLOCK =0xf8 , RT_MEASURE_END =0xf9 , RT_START =0xfa , RT_CONTINUE =0xfb ,
  RT_STOP =0xfc , RT_ACTIVE_SENSE =0xfe
}
 These bytes are used for quick one-byte messages intended to be sent during playback. More...
 

GM Controller Numbers

enum  : unsigned char {
  C_LSB =0x20 , C_GM_BANK =0x00 , C_MODULATION =0x01 , C_BREATH =0x02 ,
  C_FOOT =0x04 , C_PORTA_TIME =0x05 , C_DATA_ENTRY =0x06 , C_MAIN_VOLUME =0x07 ,
  C_BALANCE =0x08 , C_PAN =0x0a , C_EXPRESSION =0x0b , C_GENERAL_1 =0x10 ,
  C_GENERAL_2 =0x11 , C_GENERAL_3 =0x12 , C_GENERAL_4 =0x13 , C_DAMPER =0x40 ,
  C_PORTA =0x41 , C_SOSTENUTO =0x42 , C_SOFT_PEDAL =0x43 , C_HOLD_2 =0x45 ,
  C_GENERAL_5 =0x50 , C_GENERAL_6 =0x51 , C_GENERAL_7 =0x52 , C_GENERAL_8 =0x53 ,
  C_EFFECT_DEPTH =0x5b , C_TREMELO_DEPTH =0x5c , C_CHORUS_DEPTH =0x5d , C_CELESTE_DEPTH =0x5e ,
  C_PHASER_DEPTH =0x5f , C_DATA_INC =0x60 , C_DATA_DEC =0x61 , C_NRPN_LSB =0x62 ,
  C_NRPN_MSB =0x63 , C_RPN_LSB =0x64 , C_RPN_MSB =0x65 , C_ALL_SOUND_OFF =0x78 ,
  C_RESET =0x79 , C_LOCAL =0x7a , C_ALL_NOTES_OFF =0x7b , C_OMNI_OFF =0x7c ,
  C_OMNI_ON =0x7d , C_MONO =0x7e , C_POLY =0x7f
}
 General MIDI standardized controller numbers. More...
 

Registered Parameter Numbers

enum  : unsigned char { RPN_BEND_WIDTH =0x00 , RPN_FINE_TUNE =0x01 , RPN_COARSE_TUNE =0x02 }
 These bytes are used by the GS standard in a RPN Control Change message. More...
 

META Event types

enum  : unsigned char {
  META_SEQUENCE_NUMBER = 0x00 , META_GENERIC_TEXT = 0x01 , META_COPYRIGHT = 0x02 , META_TRACK_NAME = 0x03 ,
  META_INSTRUMENT_NAME = 0x04 , META_LYRIC_TEXT = 0x05 , META_MARKER_TEXT = 0x06 , META_CUE_TEXT = 0x07 ,
  META_PROGRAM_NAME = 0x08 , META_DEVICE_NAME = 0x09 , META_GENERIC_TEXT_A = 0x0A , META_GENERIC_TEXT_B = 0x0B ,
  META_GENERIC_TEXT_C = 0x0C , META_GENERIC_TEXT_D = 0x0D , META_GENERIC_TEXT_E = 0x0E , META_GENERIC_TEXT_F = 0x0F ,
  META_CHANNEL_PREFIX = 0x20 , META_OUTPUT_CABLE = 0x21 , META_END_OF_TRACK = 0x2F , META_TEMPO = 0x51 ,
  META_SMPTE = 0x54 , META_TIMESIG = 0x58 , META_KEYSIG = 0x59 , META_SEQUENCER_SPECIFIC = 0x7F
}
 This is the byte 1 (after the status) of a message with status 0xff (MIDI meta event). More...
 

Detailed Description

These are the enum used by the library to avoid MIDI hexadecimal values.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : unsigned char

#include <midi.h>

These are the type values for a MIDI channel message.

For a channel message (with status byte between 0x80 ... 0xef) only the upper four bits of the status determine its type (while lower four bits represent the channel); all status bytes between 0xf0 ... 0xff are considered system messages. You can use these in the MIDIMessage::SetType() method.

Enumerator
NOTE_OFF 

Note off.

NOTE_ON 

Note on.

POLY_PRESSURE 

Polyphonic (aftertouch) pressure.

CONTROL_CHANGE 

Control change.

PROGRAM_CHANGE 

Program (patch) change.

CHANNEL_PRESSURE 

Channel (afertouch) pressure.

PITCH_BEND 

Pitch bend.

SYSEX_START 

Start of a sysex.

MTC 

MIDI Time Code.

SONG_POSITION 

Song Position pointer.

SONG_SELECT 

Song Select Pointer.

TUNE_REQUEST 

Tune request.

SYSEX_END 

End of a sysex.

RESET 

0xff never used as reset in a MIDIMessage

META_EVENT 

Meta event.

◆ anonymous enum

anonymous enum : unsigned char

#include <midi.h>

These bytes are used for quick one-byte messages intended to be sent during playback.

Enumerator
RT_TIMING_CLOCK 

MIDI Real time clock.

RT_MEASURE_END 

Proposed measure end byte UNUSED.

RT_START 

Sequencer start.

RT_CONTINUE 

Sequencer continue.

RT_STOP 

Sequencer stop.

RT_ACTIVE_SENSE 

MIDI Active sensing.

◆ anonymous enum

anonymous enum : unsigned char

#include <midi.h>

General MIDI standardized controller numbers.

They are stored in the first data byte of a Control Change message; the last ones (between 0x78 ... 0x7f) are the channel mode messages. You can use these in the MIDIMessage::SetController() method.

Enumerator
C_LSB 

add this to a non-switch controller to access the LSB.

C_GM_BANK 

General Midi bank select.

C_MODULATION 

modulation

C_BREATH 

breath controller

C_FOOT 

foot controller

C_PORTA_TIME 

portamento time

C_DATA_ENTRY 

data entry value

C_MAIN_VOLUME 

main volume control

C_BALANCE 

balance control

C_PAN 

panpot stereo control

C_EXPRESSION 

expression control

C_GENERAL_1 

general purpose controller 1

C_GENERAL_2 

general purpose controller 2

C_GENERAL_3 

general purpose controller 3

C_GENERAL_4 

general purpose controller 4

C_DAMPER 

hold pedal (sustain)

C_PORTA 

portamento switch

C_SOSTENUTO 

sostenuto switch

C_SOFT_PEDAL 

soft pedal

C_HOLD_2 

hold pedal 2

C_GENERAL_5 

general purpose controller 5

C_GENERAL_6 

general purpose controller 6

C_GENERAL_7 

general purpose controller 7

C_GENERAL_8 

general purpose controller 8

C_EFFECT_DEPTH 

external effects depth

C_TREMELO_DEPTH 

tremelo depth

C_CHORUS_DEPTH 

chorus depth

C_CELESTE_DEPTH 

celeste (detune) depth

C_PHASER_DEPTH 

phaser effect depth

C_DATA_INC 

increment data value

C_DATA_DEC 

decrement data value

C_NRPN_LSB 

non registered parameter LSB

C_NRPN_MSB 

non registered parameter MSB

C_RPN_LSB 

registered parameter LSB

C_RPN_MSB 

registered parameter MSB

C_ALL_SOUND_OFF 

all sound off

C_RESET 

reset all controllers

C_LOCAL 

local control on/off

C_ALL_NOTES_OFF 

all notes off

C_OMNI_OFF 

omni off, all notes off

C_OMNI_ON 

omni on, all notes off

C_MONO 

mono on, all notes off

C_POLY 

poly on, all notes off

◆ anonymous enum

anonymous enum : unsigned char

#include <midi.h>

These bytes are used by the GS standard in a RPN Control Change message.

Enumerator
RPN_BEND_WIDTH 

bender sensitivity

RPN_FINE_TUNE 

fine tuning

RPN_COARSE_TUNE 

coarse tuning

◆ anonymous enum

anonymous enum : unsigned char

#include <midi.h>

This is the byte 1 (after the status) of a message with status 0xff (MIDI meta event).

These types are the same as MIDIFile meta-events. When the data length is <= 2 bytes the library stores data in bytes 2 and 3 of the MIDIMessage, otherwise in the MIDISystemExclusive object attached to it. So the format of the meta-events in a MIDIMessage class will be different than the standard MIDIFile meta-events. You can use these in the MIDIMessage::SetMetaType() method.

Enumerator
META_SEQUENCE_NUMBER 

Defines the pattern number of a Type 2 MIDI file or the number of a sequence in a Type 0 or Type 1 MIDI file. Should always have a delta time of 0 and come before all MIDI Channel Events and non-zero delta time events. The data length is 2 bytes.

META_GENERIC_TEXT 

This and the following are used for embedding ascii text in a MIDI file. They have variable data length (stored in the sysex object).

META_COPYRIGHT 

Text: copyright.

META_TRACK_NAME 

Text: track name.

META_INSTRUMENT_NAME 

Text: instrument name.

META_LYRIC_TEXT 

Text: lyric.

META_MARKER_TEXT 

Text: marker.

META_CUE_TEXT 

Text: cue point.

META_PROGRAM_NAME 

Text: program name.

META_DEVICE_NAME 

Text: device name.

META_GENERIC_TEXT_A 

Text: generic a.

META_GENERIC_TEXT_B 

Text: generic b.

META_GENERIC_TEXT_C 

Text: generic c.

META_GENERIC_TEXT_D 

Text: generic d.

META_GENERIC_TEXT_E 

Text: generic e.

META_GENERIC_TEXT_F 

Text: generic f.

META_CHANNEL_PREFIX 

Associates a MIDI channel with following meta events. Its effect is terminated by another MIDI Channel Prefix event or any non-Meta event. It is often used before an Instrument Name Event to specify which channel an instrument name represents. The data length is 1 byte.

META_OUTPUT_CABLE 

This may be used in multiport environments to associate a track with a specific port. The data length is 1 byte.

META_END_OF_TRACK 

The end of track marker in a MIDI file (also used in the MIDITrack object). The data length is 0 byte.

META_TEMPO 

Specifies a tempo change and has a length of 3 bytes. The data is a 3-byte integer, the number of microseconds for a quarter note. The MIDIMessage::GetTempo() method converts it into the usual bpm value (a double).

META_SMPTE 

Specifies the initial SMPTE offset of the beginning of playback. It has 5 data bytes (stored in the sysex object) which denote hours, minutes, second frames and subframes of the SMPTE.

META_TIMESIG 

Specifies a musical time signature change. It has 4 data bytes (stored in the sysex object) which denote the time numerator, the denominator power of two (1->2, 2->4, 3->8 etc), the metronome note(24 = quarter, 12 = eigth, 36 dotted quarter etc) and the number of 32th for a quarter note (usually 8, but you are allowed to change this). The MIDIMessage::GetTimeSigNumerator() and MidiMessage::GetTimeSigDenominator() methods give you the timesig numerator and denominator.

META_KEYSIG 

Specifies a musical key signature change. It has 2 data bytes: the 1st is a signed char denoting the number of accidents (-7 = 7 flats, 0 = no accidents, +7 = 7 sharps), the second is the mode (0 = major, 1 = minor).

META_SEQUENCER_SPECIFIC 

Used to give informations specific to a hardware or software sequencer. The first Data byte (or three bytes if the first byte is 0) specifies the manufacturer's ID and the following bytes contain information specified by the manufacturer. Currently is ignored by the library.