MIDI 192

Relative Button

Polyharp can send MIDI messages instead of using its internal synthesizer.

MIDI now officially supports a standard called MPE, the idea of which is to bring more features to individual notes that are normally assigned to channels, for instance, pitch bends, CC values, and the like. This gives lots of Polyphonic Expression where it wasn't supported before. MPE works in a backward compatible manner by leveraging note assignment to put each note on its own channel, with all expression (like pitch bends) preset for it.

This is flexible, but it subject to subtleties associated with note assignment. MPE also divides the 16 MIDI channels into "zones", with one channel per zone reserved to receive commands and behave like each single channel normally would, but applied to all the channels in that zone. MPE software sits on top of MIDI and if you have a legacy device or set of devices that can do non-OMNI mode polyphonic multi-timbralism, like some old General MIDI synthesizers, you can play some microtonal music on them without any firmware changes.

While this is a powerful general solution, it has a big problem: it maxes out at 15 note polyphony. More than that and it'll start stealing notes.

PolyHarp is a polyphonic microtonal synthesizer. That means each virtual string can be set to a pitch that has nothing to do with the 12ED2 system that is hard coded into MIDI (and much other western music). PolyHarp's internal synthesizer doesn't care about 12ED2, it'll play any old pitches. But when acting as a MIDI controller, it has to be more careful. But beside microtonality, PolyHarps other big feature is massive polyphony. This is what lets it detune strings or make super dense chords. Limiting it to 15 notes is indeed limiting.

So I came up with another compromise that I call MIDI 192. Like MPE, it channelizes notes to get the pitch bends that apply to it. Unlike MPE, it cannot play an arbitrary microtonal pitch perfectly. MIDI 192 lets you set up a subset of the 16 channels and assigns each channel to a degree of an equal division of a semitone for each of the number of channels it uses. The subset is so it can exclude some channels that don't care much about pitch anyway, like channel 10, used often for percussion. Ths is done by tapping the appropriate channel buttons in the routing controller.

Like MPE, you have to use a polyphonic, multitimbral, non OMNI channeled MIDI synthesizer as teh destination. These are a little hard to come by, but BS-16 (Bismarck) works well.

When using all 16 channels, instead of 12 notes per octave, you get 192 notes per octave (whence the name). This means that for an arbitrary tuning, you are within 100/16 cents of the real pitch, 6.25 cents, and actually because it rounds it, its more like 3.125 cents or better. While not perfect, it's pretty good, and has no polyphony limit other than what the synth can handle. And for some equal temperaments that are multiples of 12, like 24, 72, 96 , it IS perfect, at least in theory. Just overtones perform pretty well up to a point (11/8 and 13/8 are pretty close to quartertones). Basically, it'll try to squeeze whichever tuning you use into 192ED2.

On the downside, intriguing PolyHarp effects like clusters of very close intervals on multi-string courses are not going to work. Also since it depends on all its used channels setting up the same program and otehr properties, the channel assignment for multiple String Areas is not going to work. MPE could handle some of those issues, but not withthe amount of polyphony that PolyHarp craves.

Every channel that's used gets a pitch bend sent to it when the MIDI 192 system is chosen. This amount is based on how much a "real" pitch bend, from the wheel, should bend. I'm using 6 semitones. There's some tweaking that goes on when a real pitch bend is sent - it adds the preset bend to the new bend and transmits it to all affected channels. Because of the polyphony, you can't bend individual notes though.

These settings, like the MIDI Routing, are currently not saved with I may add MPE in a later version, though.