MIDI and the organ project

From Fernseher
Revision as of 21:25, 22 February 2009 by Admin (talk | contribs) (New page: MIDI standard is out there. Also good is the RTP-MIDI RFC, for putting MIDI data into a stream and whatnot. The basics, as I think we will be using them: Packet basics: 1 <3: opcode> <...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

MIDI standard is out there. Also good is the RTP-MIDI RFC, for putting MIDI data into a stream and whatnot.

The basics, as I think we will be using them:

Packet basics:

1 <3: opcode> <4: channel> 0 <7: arg1> 0 <7: arg2>

opcodes of relevance:

  • 0x0: key off. arg1 is the key number, arg2 is the velocity. We will always use velocity of 0x40.
  • 0x1: key on. arg1 is the key number, arg2 is the velocity. We will always use the velocity of 0x40.
  • 0x3: control change. arg1 is the control number (0x01 is modulation wheel, 0x0B is the expression pedal), arg2 is the new control value, from 0x00 - 0x7F

For channels, we will use:

  • 0x0: Great (Solo) Manual
  • 0x1: Swell (Accompaniment) Manual
  • 0x2: Choir (below Great) Manual
  • 0x3: Solo (above Swell) Manual
  • 0x4: Echo (above Solo) Manual
  • 0x5: Pedalboard
  • 0x6: Second Pedalboard, if any
  • 0x7: Third Pedalboard. Right.
  • 0x8: Stop channel. If divided, stops for Great
  • 0x9: Stop channel for Swell.
  • 0xA: Stop channel for Choir.
  • 0xB: Stop channel for Solo.
  • 0xC: Stop channel for Echo.
  • 0xD: Stop channel for Pedalboard.
  • 0xE: Stop channel for Second Pedalboard.
  • 0xF: Stop channel for Third Pedalboard.

Each keyboard channel (0x0-0x7) gets its own control set. For our organ, where the modulation wheel and expression pedal control all divisions equally, each control change gets sent for each active channel... or maybe just for great, and the software will figure out that they control all the stuff. Note, we may not hook up the modulation wheel when we begin. It'd be kinda a lot harder to make work right, I think.