+++ /dev/null
-# -*- coding: ISO-8859-1 -*-\r
-\r
-###################################################\r
-## Definitions of the different midi events\r
-\r
-\r
-\r
-###################################################\r
-## Midi channel events (The most usual events)\r
-## also called "Channel Voice Messages"\r
-\r
-NOTE_OFF = 0x80\r
-# 1000cccc 0nnnnnnn 0vvvvvvv (channel, note, velocity)\r
-\r
-NOTE_ON = 0x90\r
-# 1001cccc 0nnnnnnn 0vvvvvvv (channel, note, velocity)\r
-\r
-AFTERTOUCH = 0xA0\r
-# 1010cccc 0nnnnnnn 0vvvvvvv (channel, note, velocity)\r
-\r
-CONTINUOUS_CONTROLLER = 0xB0 # see Channel Mode Messages!!!\r
-# 1011cccc 0ccccccc 0vvvvvvv (channel, controller, value)\r
-\r
-PATCH_CHANGE = 0xC0\r
-# 1100cccc 0ppppppp (channel, program)\r
-\r
-CHANNEL_PRESSURE = 0xD0\r
-# 1101cccc 0ppppppp (channel, pressure)\r
-\r
-PITCH_BEND = 0xE0\r
-# 1110cccc 0vvvvvvv 0wwwwwww (channel, value-lo, value-hi)\r
-\r
-\r
-###################################################\r
-## Channel Mode Messages (Continuous Controller)\r
-## They share a status byte.\r
-## The controller makes the difference here\r
-\r
-# High resolution continuous controllers (MSB)\r
-\r
-BANK_SELECT = 0x00\r
-MODULATION_WHEEL = 0x01\r
-BREATH_CONTROLLER = 0x02\r
-FOOT_CONTROLLER = 0x04\r
-PORTAMENTO_TIME = 0x05\r
-DATA_ENTRY = 0x06\r
-CHANNEL_VOLUME = 0x07\r
-BALANCE = 0x08\r
-PAN = 0x0A\r
-EXPRESSION_CONTROLLER = 0x0B\r
-EFFECT_CONTROL_1 = 0x0C\r
-EFFECT_CONTROL_2 = 0x0D\r
-GEN_PURPOSE_CONTROLLER_1 = 0x10\r
-GEN_PURPOSE_CONTROLLER_2 = 0x11\r
-GEN_PURPOSE_CONTROLLER_3 = 0x12\r
-GEN_PURPOSE_CONTROLLER_4 = 0x13\r
-\r
-# High resolution continuous controllers (LSB)\r
-\r
-BANK_SELECT = 0x20\r
-MODULATION_WHEEL = 0x21\r
-BREATH_CONTROLLER = 0x22\r
-FOOT_CONTROLLER = 0x24\r
-PORTAMENTO_TIME = 0x25\r
-DATA_ENTRY = 0x26\r
-CHANNEL_VOLUME = 0x27\r
-BALANCE = 0x28\r
-PAN = 0x2A\r
-EXPRESSION_CONTROLLER = 0x2B\r
-EFFECT_CONTROL_1 = 0x2C\r
-EFFECT_CONTROL_2 = 0x2D\r
-GENERAL_PURPOSE_CONTROLLER_1 = 0x30\r
-GENERAL_PURPOSE_CONTROLLER_2 = 0x31\r
-GENERAL_PURPOSE_CONTROLLER_3 = 0x32\r
-GENERAL_PURPOSE_CONTROLLER_4 = 0x33\r
-\r
-# Switches\r
-\r
-SUSTAIN_ONOFF = 0x40\r
-PORTAMENTO_ONOFF = 0x41\r
-SOSTENUTO_ONOFF = 0x42\r
-SOFT_PEDAL_ONOFF = 0x43\r
-LEGATO_ONOFF = 0x44\r
-HOLD_2_ONOFF = 0x45\r
-\r
-# Low resolution continuous controllers\r
-\r
-SOUND_CONTROLLER_1 = 0x46 # (TG: Sound Variation; FX: Exciter On/Off)\r
-SOUND_CONTROLLER_2 = 0x47 # (TG: Harmonic Content; FX: Compressor On/Off)\r
-SOUND_CONTROLLER_3 = 0x48 # (TG: Release Time; FX: Distortion On/Off)\r
-SOUND_CONTROLLER_4 = 0x49 # (TG: Attack Time; FX: EQ On/Off)\r
-SOUND_CONTROLLER_5 = 0x4A # (TG: Brightness; FX: Expander On/Off)75 SOUND_CONTROLLER_6 (TG: Undefined; FX: Reverb OnOff)\r
-SOUND_CONTROLLER_7 = 0x4C # (TG: Undefined; FX: Delay OnOff)\r
-SOUND_CONTROLLER_8 = 0x4D # (TG: Undefined; FX: Pitch Transpose OnOff)\r
-SOUND_CONTROLLER_9 = 0x4E # (TG: Undefined; FX: Flange/Chorus OnOff)\r
-SOUND_CONTROLLER_10 = 0x4F # (TG: Undefined; FX: Special Effects OnOff)\r
-GENERAL_PURPOSE_CONTROLLER_5 = 0x50\r
-GENERAL_PURPOSE_CONTROLLER_6 = 0x51\r
-GENERAL_PURPOSE_CONTROLLER_7 = 0x52\r
-GENERAL_PURPOSE_CONTROLLER_8 = 0x53\r
-PORTAMENTO_CONTROL = 0x54 # (PTC) (0vvvvvvv is the source Note number) (Detail)\r
-EFFECTS_1 = 0x5B # (Ext. Effects Depth)\r
-EFFECTS_2 = 0x5C # (Tremelo Depth)\r
-EFFECTS_3 = 0x5D # (Chorus Depth)\r
-EFFECTS_4 = 0x5E # (Celeste Depth)\r
-EFFECTS_5 = 0x5F # (Phaser Depth)\r
-DATA_INCREMENT = 0x60 # (0vvvvvvv is n/a; use 0)\r
-DATA_DECREMENT = 0x61 # (0vvvvvvv is n/a; use 0)\r
-NON_REGISTERED_PARAMETER_NUMBER = 0x62 # (LSB)\r
-NON_REGISTERED_PARAMETER_NUMBER = 0x63 # (MSB)\r
-REGISTERED_PARAMETER_NUMBER = 0x64 # (LSB)\r
-REGISTERED_PARAMETER_NUMBER = 0x65 # (MSB)\r
-\r
-# Channel Mode messages - (Detail)\r
-\r
-ALL_SOUND_OFF = 0x78\r
-RESET_ALL_CONTROLLERS = 0x79\r
-LOCAL_CONTROL_ONOFF = 0x7A\r
-ALL_NOTES_OFF = 0x7B\r
-OMNI_MODE_OFF = 0x7C # (also causes ANO)\r
-OMNI_MODE_ON = 0x7D # (also causes ANO)\r
-MONO_MODE_ON = 0x7E # (Poly Off; also causes ANO)\r
-POLY_MODE_ON = 0x7F # (Mono Off; also causes ANO)\r
-\r
-\r
-\r
-###################################################\r
-## System Common Messages, for all channels\r
-\r
-SYSTEM_EXCLUSIVE = 0xF0\r
-# 11110000 0iiiiiii 0ddddddd ... 11110111\r
-\r
-MTC = 0xF1 # MIDI Time Code Quarter Frame\r
-# 11110001\r
-\r
-SONG_POSITION_POINTER = 0xF2\r
-# 11110010 0vvvvvvv 0wwwwwww (lo-position, hi-position)\r
-\r
-SONG_SELECT = 0xF3\r
-# 11110011 0sssssss (songnumber)\r
-\r
-#UNDEFINED = 0xF4\r
-## 11110100\r
-\r
-#UNDEFINED = 0xF5\r
-## 11110101\r
-\r
-TUNING_REQUEST = 0xF6\r
-# 11110110\r
-\r
-END_OFF_EXCLUSIVE = 0xF7 # terminator\r
-# 11110111 # End of system exclusive\r
-\r
-\r
-###################################################\r
-## Midifile meta-events\r
-\r
-SEQUENCE_NUMBER = 0x00 # 00 02 ss ss (seq-number)\r
-TEXT = 0x01 # 01 len text...\r
-COPYRIGHT = 0x02 # 02 len text...\r
-SEQUENCE_NAME = 0x03 # 03 len text...\r
-INSTRUMENT_NAME = 0x04 # 04 len text...\r
-LYRIC = 0x05 # 05 len text...\r
-MARKER = 0x06 # 06 len text...\r
-CUEPOINT = 0x07 # 07 len text...\r
-PROGRAM_NAME = 0x08 # 08 len text...\r
-DEVICE_NAME = 0x09 # 09 len text...\r
-\r
-MIDI_CH_PREFIX = 0x20 # MIDI channel prefix assignment (unofficial)\r
-\r
-MIDI_PORT = 0x21 # 21 01 port, legacy stuff but still used\r
-END_OF_TRACK = 0x2F # 2f 00\r
-TEMPO = 0x51 # 51 03 tt tt tt (tempo in us/quarternote)\r
-SMTP_OFFSET = 0x54 # 54 05 hh mm ss ff xx\r
-TIME_SIGNATURE = 0x58 # 58 04 nn dd cc bb\r
-KEY_SIGNATURE = 0x59 # ??? len text...\r
-SPECIFIC = 0x7F # Sequencer specific event\r
-\r
-FILE_HEADER = 'MThd'\r
-TRACK_HEADER = 'MTrk'\r
-\r
-###################################################\r
-## System Realtime messages\r
-## I don't supose these are to be found in midi files?!\r
-\r
-TIMING_CLOCK = 0xF8\r
-# undefined = 0xF9\r
-SONG_START = 0xFA\r
-SONG_CONTINUE = 0xFB\r
-SONG_STOP = 0xFC\r
-# undefined = 0xFD\r
-ACTIVE_SENSING = 0xFE\r
-SYSTEM_RESET = 0xFF\r
-\r
-\r
-###################################################\r
-## META EVENT, it is used only in midi files.\r
-## In transmitted data it means system reset!!!\r
-\r
-META_EVENT = 0xFF\r
-# 11111111\r
-\r
-\r
-###################################################\r
-## Helper functions\r
-\r
-def is_status(byte):\r
- return (byte & 0x80) == 0x80 # 1000 0000\r
-\r
-\r