BANK SELECT
-MIDI spec supports 128 channels
-Bank switching mechanism used to access larger array of programs in today's synths
-Bank select is either control 0 or 32
-Combined with program change, sends value to change message
-Some MIDI devices support bank select 0, some 32, some both

SYSTEM EXCLUSIVE
-Start Sysex Message: (0xF0)
	Manufacturer ID: 1-3 bytes
	Actual data: however long 
End Sysex Message: (0xF7)

-Sysex keeps the MIDI spec open ended.
-For anticipated technology changes, and manufacturer specific needs
-Allows manufacturers to embed their own hardware specific commands within the data stream.
-First byte zero in sysex means its a manufacturer ID.
-Manufactuers get ID from MMA
-Implementations: External Patch editing, dump of all patches to storage, selections of effects parameters

RPNs and NRPNs
-RPN: Registered Parameter Number -specified by MIDI
-NRPN: Non-Registered Parameter Number -specified by manufacturer

-Four RPNS:
1. Pitch bend sensitivity (0, 0)
2. Master Fine Tuning (0, 1)
3. Master Coarse Tuning (0, 2)
4. RPN Null (127, 127)

-RPNs select parameters through controllers 100 and 101 (two parameters of RPN)
-NRPNs select parameter through Controllers 98 and 99 	(two parameters of NRPN)
-6 sets parameter value
-37 optionally used for fine adjustment
-96 is data increment
-97 is data decrement
-send NULL when done editing parameters
-messages for RPNs and NRPNS: 0xBn(Command for Controller Change), Parameter Number (98, 99, 100, 100), value number.  (n refers to device's basic channel)
-NRPNs allow editing of more than the 128 given parameters

CHANNEL MODE MESSAGES
-Channel mode messages change the behavior of a receiving device
-Change processing of voice messages
-Use controller's 120-127
-Sent to basic channel (also global channel) of target device.  
-Channel mode status byte: 0xBn
-Four Device Modes:  Omni on/Poly, Omni on/Mono, Omni off/Poly, Omni Off/Mono, set using 124-127
-Omni On/Off: MIDI messages sent to all channels while on, sent only to basic/global while off
-Poly/Mono: Poly, multiple notes can be played, mono one note at a time can be played.

SYSTEM MESSAGES
-Coordinate non-musical, low level control functions of devices
-Not channel specific.
-Categories: System Common, System Real-time, System Exclusive

SYSTEM COMMON:
-Help coordinate multiple MIDI devices

Status:	Data			Definition
0xF1		Value			Quarter Frame MTC
0xF2		14 bit value		Song Position Pointer
0xF3		Song #		Song Select
0xF4					Undefined
0xF5					Undefined
0xF6					Tuning Request

Quarter Frame MIDI Time Code (0xF1)-Transmits SMPTE time code info.  4 messages sent for each frame.  
Song Position Pointer (SPP) (0xF2)-14 bit value counting 16th notes since beginning, tells sequencer where to start playback.
Song Select (0xF3)- Selects a particular song on a sequencer, byte transmits song #
Tune Request  (0xF6)-Tells Analog synth to retune oscillators
(0xF4 and 0xF5) -Undefined for use for later additions to specs

SYSTEM REAL-TIME
-Can appear anywhere in MIDI data, even between status and data of channel voice
-Single byte, used for timing and song base synch
MIDI Clock (0xF8)-Sent 24 times per quarter note, syched to tempo, can synch multiple devices
Song Start (0xFA)-Start sequencer from beinning of selected song.
Song ontinue (0xFB)-Song continues playing from current position
Song Stop(0xFC)-Stops playback/recording
Active Sensing(0xFE)-Sends every 300 ms while idle.  If no other data sent, send active sensing.  If active sensing stops, active notes turn off.
System Reset(0xFF)-Recieving unit resets itself.  Notes turned off, status cleared, RAM erased, default settings.