FretFind 2-D
       
 

Aside from being virtually omnipresent, MIDI is also quite a capable platform for realizing microtonal music. Numerous microtonal MIDI resources exist on the web. But even with all of the information available, it still took me far too long to learn what I needed to know to make this page. The following is a summary of what I learned. As is often the case, now that I know just a little, I find what I was looking for in many places.

Notes:
MIDI provides 128 notes: 0 (0x00) through 127 (0x7F).
60 (0x3C) is Middle C.
The A above Middle C is 69 (0x45) and generally tuned to 440hz.
A note is played in 1 of 16 channels.

Pitch Bends:
Each channel may be "bent" or retuned independently of the whole system using pitch bend messages.
Pitch bend messages allow notes in a channel to be raised or lowered 8192 graduations of a predefined range.
Channels are bent fully down at 0 (0x0000), centered at 8192 (0x2000 actually 0x40 0x00) and bent fully up at 16383 (0x3FFF actually 0x7F 0x7F).
Pitch bend steps occur logarithmicaly like cents.
The pitch bend range (sensitivity) and the tuning of the whole MIDI system may be adjusted with Registered Parameter Numbers (RPN).

RPNs:
RPNs are adjusted by sending four MIDI controller messages:
Controller 101 (0x65) - the MSB or the parameter identifier,
Controller 100 (0x64) - the LSB of the parameter identifier,
Controller 6 (0x06) - the course adjustment data,
and Controller 38 (0x26) - the fine adjustment data.
RPN 0 (0x0000) sets the pitch bend range.
The course adjustment is in semitones and can range from 0 (0x00) to 24 (0x18).
The fine adjustment is in cents and can range from 0 (0x00) to 100 (0x64).
Maximum granularity for microtonal music could be achieved with a setting of 0 semitones and 50 cents.
Most devices truncate the fine adjustment, thus the maximum achievable precision can be found with 1 semitone and 0 cents.

If you know something about MIDI and you notice a mistake in any of the above please tell me. The mistake has probably made its way into the code below. My sloppy programming abounds here but because I couldn't find PHP scripts that do this anywhere, I'm making the my source available for your use. Downloads are available from the Home page.

midi.class.php - a great tool by Valentin Schmidt
Special thanks to Manuel Op de Coul for the development of Scala