New Tuning Method: Difference between revisions

Wikispaces>TallKite
**Imported revision 453577030 - Original comment: **
Wikispaces>TallKite
**Imported revision 453859880 - Original comment: **
Line 1: Line 1:
<h2>IMPORTED REVISION FROM WIKISPACES</h2>
<h2>IMPORTED REVISION FROM WIKISPACES</h2>
This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br>
This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br>
: This revision was by author [[User:TallKite|TallKite]] and made on <tt>2013-09-23 21:12:41 UTC</tt>.<br>
: This revision was by author [[User:TallKite|TallKite]] and made on <tt>2013-09-24 17:58:59 UTC</tt>.<br>
: The original revision id was <tt>453577030</tt>.<br>
: The original revision id was <tt>453859880</tt>.<br>
: The revision comment was: <tt></tt><br>
: The revision comment was: <tt></tt><br>
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br>
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br>
Line 20: Line 20:
This means that synths created with SynthEdit, CSoundAV, Jesusonic or SonicBirth can't implement MTS. Any synth that does implement MTS won't do so if hosted in Abelton Live or FL Studio. Also, Kontakt instruments can't be scripted to respond to MTS. For these reasons microtonalists have been considering alternatives to MTS sysexes.
This means that synths created with SynthEdit, CSoundAV, Jesusonic or SonicBirth can't implement MTS. Any synth that does implement MTS won't do so if hosted in Abelton Live or FL Studio. Also, Kontakt instruments can't be scripted to respond to MTS. For these reasons microtonalists have been considering alternatives to MTS sysexes.


The powers that be will probably never change the midi spec to give us what we want, a non-sysex method for tuning individual notes. So we've decided to simply create a new unofficial microtuning method. The plan is to have the new method supported by all the major midi tuning software packages, aka "retuners": Alt-tuner, Bounce, Custom Scale Editor, Fractal Tune Smithy, LMSO, Scala, etc.
The powers that be will probably never change the midi spec to give us what we want, a non-sysex method for tuning individual notes. So we've decided to simply create a new unofficial microtuning method. The plan is to have the new method supported by all the major midi tuning software packages, aka **retuners**: Alt-tuner, Bounce, Custom Scale Editor, Fractal Tune Smithy, LMSO, Scala, etc.


The obstacle to any retuning method is convincing the developers of VSTi's and other softsynths, as well as the designers of hardware sound modules and keyboards, who generally have no personal interest in microtonalism, to invest their time and energy in implementing it. To this end, any new tuning method should be as easy to implement by synth developers and designers as possible. Even small impediments like converting pitch bends from the usual midi format to the MTS format should be avoided. The sysex format should be avoided entirely because of the above considerations and because of the added difficulties of parsing variable-length midi messages.
The obstacle to any retuning method is convincing the developers of VSTi's and other softsynths, as well as the designers of hardware sound modules and keyboards, who generally have no personal interest in microtonalism, to invest their time and energy in implementing it. To this end, any new tuning method should be as easy to implement by synth developers and designers as possible. Even small impediments like converting pitch bends from the usual midi format to the MTS format should be avoided. The sysex format should be avoided entirely because of the poor support and because of the added difficulties of parsing variable-length midi messages.


The new tuning method is currently still being hashed out on the facebook group [[@https://www.facebook.com/groups/xenharmonic2/]]. Once completed, we will have a more enticing sales pitch for synth developers and designers: Add this simple easy method of retuning and you will sell more synths to microtonalists.
The new tuning method is currently still being hashed out on the facebook group [[@https://www.facebook.com/groups/xenharmonic2/]]. Once completed, we will have a more enticing sales pitch for synth developers and designers: Add this simple easy method of retuning and you will sell more synths to microtonalists.
Line 42: Line 42:
This might be easier to understand if a hardware implementation is visualized. Imagine a 10-and-a-half octave keyboard with 128 keys. Behind each key is a tiny transposing slider and a tiny pitch bend wheel. The slider runs from 0 to 127 and sets that key's output pitch. The slider doesn't travel smoothly, rather it clicks into place on the whole numbers. The pitch bend wheel runs from -200¢ to 200¢ and sets the bend. When the keyboard is first turned on, all these wheels are set to center and all the sliders are set to match the key -- the lowest key's slider is 0, the 2nd one is 1, etc. Unlike the usual pitch bend wheel, which this keyboard also has, the tiny wheels don't have a spring that returns them to center. If one is moved to +30¢, it stays there until moved again. Using the sliders and wheels, any key on the keyboard can be set to play any pitch in the entire 10-and-a-half octave midi range. The synth's job is to produce whatever pitches are required by the keys and sliders and wheels, which may be further bent by the usual pitch bend wheel.
This might be easier to understand if a hardware implementation is visualized. Imagine a 10-and-a-half octave keyboard with 128 keys. Behind each key is a tiny transposing slider and a tiny pitch bend wheel. The slider runs from 0 to 127 and sets that key's output pitch. The slider doesn't travel smoothly, rather it clicks into place on the whole numbers. The pitch bend wheel runs from -200¢ to 200¢ and sets the bend. When the keyboard is first turned on, all these wheels are set to center and all the sliders are set to match the key -- the lowest key's slider is 0, the 2nd one is 1, etc. Unlike the usual pitch bend wheel, which this keyboard also has, the tiny wheels don't have a spring that returns them to center. If one is moved to +30¢, it stays there until moved again. Using the sliders and wheels, any key on the keyboard can be set to play any pitch in the entire 10-and-a-half octave midi range. The synth's job is to produce whatever pitches are required by the keys and sliders and wheels, which may be further bent by the usual pitch bend wheel.


Sometimes the keyboard will actually be a touchscreen device, and instead of pressing a key, the musician simply touches the screen to play a note, with the touch's location determining the pitch. Dragging one's fingers along the surface generates ultra-wide pitch bends. This is a polyphonic device, with each finger being in effect a separate "key". There may be no retuning software, because the controller (or iPad app) will generate its own tuning messages. The imaginary keyboard analogous to this device has no tiny wheels and each tiny slider can travel freely without clicks. From the synth's point of view, the midi stream is the same as from a standard controller: note-ons and note-offs mixed with tuning messages and perhaps standard pitch bends.
Sometimes the keyboard will actually be a touchscreen device, and instead of pressing a key, the musician simply touches the screen to play a note, with the touch's location determining the pitch. Dragging one's fingers along the surface generates ultra-wide pitch bends. This is a polyphonic device, with each finger being in effect a separate "key". There may be no retuner, because the controller (or iPad app) will generate its own tuning messages. The imaginary keyboard analogous to this device has no tiny wheels and each tiny slider can travel freely without clicks. From the synth's point of view, the midi stream is the same as from a keyed controller: note-ons and note-offs mixed with tuning messages and perhaps standard pitch bends. A touchscreen device may also be used with a retuner; thus there are 3 possible setups that would use this tuning method:
* keyed controller --&gt; retuner --&gt; synth
* touchscreen controller --&gt; synth
* touchscreen controller --&gt; retuner --&gt; synth


Multi-timbral synths should be able to handle as many as 16 of these keyboards at once, one per channel. A multi-timbral synth should be one of 3 types: mono-tunable, multi-tunable, or switchable. Mono-tunable synths force all channels to adhere to one tuning. Channel information in tuning messages is ignored, comparable to midi's omni mode. Multi-tunable synths permit all 16 channels to be tuned independently. Switchable synths can be switched between the two modes. The advantages of mono-tunable are a reduction in the volume of the midi traffic for the common situation of identical tunings in all channels, as well as easier implementation. The advantages of multi-tunable are the ability to combine different tunings, and also a pitch glide on one keyboard won't affect the tuning of another keyboard. For software synths, the advantages of multi-tunable can be achieved with mono-tunable synths by using multiple instances of the synth. Switchable synths will respond to a special tuning message that sets the synth to either mono-tunable or multi-tunable. Switchable synths should default to the multi-tunable setting. Mono-timbral synths will obviously be mono-tunable.
Multi-timbral synths should be able to handle as many as 16 of these keyboards at once, one per channel. A multi-timbral synth should be one of 3 types: mono-tunable, multi-tunable, or switchable. Mono-tunable synths force all channels to adhere to one tuning. Channel information in tuning messages is ignored, comparable to midi's omni mode. Multi-tunable synths permit all 16 channels to be tuned independently. Switchable synths can be switched between the two modes. The advantages of mono-tunable are a reduction in the volume of the midi traffic for the common situation of identical tunings in all channels, as well as easier implementation. The advantages of multi-tunable are the ability to combine different tunings, and also a pitch glide on one keyboard won't affect the tuning of another keyboard. For software synths, the advantages of multi-tunable can be achieved with mono-tunable synths by using multiple instances of the synth. Switchable synths will respond to a special tuning message that sets the synth to either mono-tunable or multi-tunable. Switchable synths should default to the multi-tunable setting. Mono-timbral synths will obviously be mono-tunable.
Line 50: Line 53:
**__Implementation__:**
**__Implementation__:**


The new method uses keyswitches for the 5 highest keys, 123-127. If middle C is C4, these are notes D#9 to G9. The velocity of the keyswitches carries 1 byte of tuning information. Keyswitch F#9 is the input note, keyswitch F9 is the output note, and keyswitches E9 and D#9 are the pitch bend, in the exact same format as the standard midi pitch bend message. This makes it easier for the synth developer or designer, because he has already written code that deals with physical pitch bend wheel movement, and can just reuse it to deal with tuning keyswitches. To bend note nn on channel c to note mm with bend of yyzz would take up to 4 midi note-on messages. In hexadecimal the midi looks like this:
The new method uses keyswitches for the 5 highest keys, 123-127. If middle C is C4, these are notes D#9 to G9. These keyswitches are generated by software, not played by the musician. The velocity of the keyswitches is not actually a velocity, but 1 byte of tuning information. Keyswitch F#9's velocity is actually the input note, keyswitch F9's velocity is the output note, and keyswitches E9 and D#9's velocities are the pitch bend, in the exact same 2-byte format as the standard midi pitch bend message. This makes it easier for the synth developer or designer, because he has already written code that handles physical pitch bend wheel movement, and can just reuse it to handle tuning keyswitches. To bend note nn on channel c to note mm with bend of yyzz would take up to 4 midi note-on messages. In hexadecimal the midi looks like this:


F#9 note-on: 9c FE nn (input note, only needs to be sent when the input note changes)
F#9 note-on: 9c FE nn (input note, only needs to be sent when the input note changes)
Line 59: Line 62:
(//There may be an additional "ultra-fine bend" message added - Ed.//)
(//There may be an additional "ultra-fine bend" message added - Ed.//)


These messages are always sent in this order. If the F#9 input note keyswitch is omitted, additional output note and bend messages continue to affect the current input note, overwriting previous output note and bend messages. If no F#9 keyswitch is received, the current input note defaults to note #0. The output note keyswitch is optional and would generally be omitted for 12-notes-per-octave tunings. The coarse bend could be omitted for slight pitch bends that don't change the MSB of the pitch bend. The required fine bend keyswitch functions as an "end of tuning message" marker and the synth waits until receiving this keyswitch to actually apply the new tuning. In general, the retuning software will limit the pitch bends to +/- 50¢. The midi stream for pitch glides will be reduced to mostly fine bends, with coarse bends whenever the MSB boundary is crossed, and output note updates whenever the note boundary is crossed.
These messages are always sent in this order. If the F#9 input note keyswitch is omitted, additional output note and bend messages continue to affect the current input note, overwriting previous output note and bend messages. If no F#9 keyswitch is received, the current input note defaults to note #0. The F9 output note keyswitch is optional and would generally be omitted for 12-notes-per-octave tunings. The E9 coarse bend could be omitted for slight pitch bends that don't change the MSB of the pitch bend. The required D#9 fine bend functions as an "end of tuning message" marker, and the synth waits until receiving this keyswitch to actually apply the new tuning. In general, the retuning software will limit the pitch bends to +/- 50¢. The midi stream for pitch glides will be reduced to mostly fine bends, with coarse bends whenever the MSB boundary is crossed, and output note updates whenever the note boundary is crossed.


The note-ons need to have matching note-offs to avoid being misinterpreted and possibly blocked by the DAW or other environment. To this end, the note-ons for each keyswitch are alternated with note-offs. Thus if one input note message is 9c FE nn, the next one will be of the form 8c FE nn.
The note-ons need to have matching note-offs to avoid being misinterpreted and possibly blocked by the DAW or other environment. To this end, the note-ons for each keyswitch are alternated with note-offs. Thus if one input note message is 9c FE nn, the next one will be of the form 8c FE nn.
Line 164: Line 167:
&lt;ul&gt;&lt;li&gt;Abelton Live filters out sysexes from the midi stream and keeps them from any VST it hosts.&lt;/li&gt;&lt;li&gt;FL Studio also does not allow VST plugins it hosts to receive sysex data. (see footnote)&lt;/li&gt;&lt;li&gt;Kontakt does not provide sysex support in its scripting language.&lt;/li&gt;&lt;li&gt;SynthEdit can't receive sysexes. &lt;a class="wiki_link_ext" href="http://www.synthedit.com/members/version-1-1-faq/" rel="nofollow" target="_blank"&gt;www.synthedit.com/members/version-1-1-faq/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;CSoundAV (CSound in real time) can't receive sysexes.&lt;/li&gt;&lt;li&gt;Jesusonic (Reaper's built-in programming language) can't receive sysexes.&lt;/li&gt;&lt;li&gt;SonicBirth (an AU maker) doesn't even mention sysexes in its manual.&lt;/li&gt;&lt;/ul&gt;This means that synths created with SynthEdit, CSoundAV, Jesusonic or SonicBirth can't implement MTS. Any synth that does implement MTS won't do so if hosted in Abelton Live or FL Studio. Also, Kontakt instruments can't be scripted to respond to MTS. For these reasons microtonalists have been considering alternatives to MTS sysexes.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Abelton Live filters out sysexes from the midi stream and keeps them from any VST it hosts.&lt;/li&gt;&lt;li&gt;FL Studio also does not allow VST plugins it hosts to receive sysex data. (see footnote)&lt;/li&gt;&lt;li&gt;Kontakt does not provide sysex support in its scripting language.&lt;/li&gt;&lt;li&gt;SynthEdit can't receive sysexes. &lt;a class="wiki_link_ext" href="http://www.synthedit.com/members/version-1-1-faq/" rel="nofollow" target="_blank"&gt;www.synthedit.com/members/version-1-1-faq/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;CSoundAV (CSound in real time) can't receive sysexes.&lt;/li&gt;&lt;li&gt;Jesusonic (Reaper's built-in programming language) can't receive sysexes.&lt;/li&gt;&lt;li&gt;SonicBirth (an AU maker) doesn't even mention sysexes in its manual.&lt;/li&gt;&lt;/ul&gt;This means that synths created with SynthEdit, CSoundAV, Jesusonic or SonicBirth can't implement MTS. Any synth that does implement MTS won't do so if hosted in Abelton Live or FL Studio. Also, Kontakt instruments can't be scripted to respond to MTS. For these reasons microtonalists have been considering alternatives to MTS sysexes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The powers that be will probably never change the midi spec to give us what we want, a non-sysex method for tuning individual notes. So we've decided to simply create a new unofficial microtuning method. The plan is to have the new method supported by all the major midi tuning software packages, aka &amp;quot;retuners&amp;quot;: Alt-tuner, Bounce, Custom Scale Editor, Fractal Tune Smithy, LMSO, Scala, etc.&lt;br /&gt;
The powers that be will probably never change the midi spec to give us what we want, a non-sysex method for tuning individual notes. So we've decided to simply create a new unofficial microtuning method. The plan is to have the new method supported by all the major midi tuning software packages, aka &lt;strong&gt;retuners&lt;/strong&gt;: Alt-tuner, Bounce, Custom Scale Editor, Fractal Tune Smithy, LMSO, Scala, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The obstacle to any retuning method is convincing the developers of VSTi's and other softsynths, as well as the designers of hardware sound modules and keyboards, who generally have no personal interest in microtonalism, to invest their time and energy in implementing it. To this end, any new tuning method should be as easy to implement by synth developers and designers as possible. Even small impediments like converting pitch bends from the usual midi format to the MTS format should be avoided. The sysex format should be avoided entirely because of the above considerations and because of the added difficulties of parsing variable-length midi messages.&lt;br /&gt;
The obstacle to any retuning method is convincing the developers of VSTi's and other softsynths, as well as the designers of hardware sound modules and keyboards, who generally have no personal interest in microtonalism, to invest their time and energy in implementing it. To this end, any new tuning method should be as easy to implement by synth developers and designers as possible. Even small impediments like converting pitch bends from the usual midi format to the MTS format should be avoided. The sysex format should be avoided entirely because of the poor support and because of the added difficulties of parsing variable-length midi messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new tuning method is currently still being hashed out on the facebook group &lt;a class="wiki_link_ext" href="https://www.facebook.com/groups/xenharmonic2/" rel="nofollow" target="_blank"&gt;https://www.facebook.com/groups/xenharmonic2/&lt;/a&gt;. Once completed, we will have a more enticing sales pitch for synth developers and designers: Add this simple easy method of retuning and you will sell more synths to microtonalists.&lt;br /&gt;
The new tuning method is currently still being hashed out on the facebook group &lt;a class="wiki_link_ext" href="https://www.facebook.com/groups/xenharmonic2/" rel="nofollow" target="_blank"&gt;https://www.facebook.com/groups/xenharmonic2/&lt;/a&gt;. Once completed, we will have a more enticing sales pitch for synth developers and designers: Add this simple easy method of retuning and you will sell more synths to microtonalists.&lt;br /&gt;
Line 186: Line 189:
This might be easier to understand if a hardware implementation is visualized. Imagine a 10-and-a-half octave keyboard with 128 keys. Behind each key is a tiny transposing slider and a tiny pitch bend wheel. The slider runs from 0 to 127 and sets that key's output pitch. The slider doesn't travel smoothly, rather it clicks into place on the whole numbers. The pitch bend wheel runs from -200¢ to 200¢ and sets the bend. When the keyboard is first turned on, all these wheels are set to center and all the sliders are set to match the key -- the lowest key's slider is 0, the 2nd one is 1, etc. Unlike the usual pitch bend wheel, which this keyboard also has, the tiny wheels don't have a spring that returns them to center. If one is moved to +30¢, it stays there until moved again. Using the sliders and wheels, any key on the keyboard can be set to play any pitch in the entire 10-and-a-half octave midi range. The synth's job is to produce whatever pitches are required by the keys and sliders and wheels, which may be further bent by the usual pitch bend wheel.&lt;br /&gt;
This might be easier to understand if a hardware implementation is visualized. Imagine a 10-and-a-half octave keyboard with 128 keys. Behind each key is a tiny transposing slider and a tiny pitch bend wheel. The slider runs from 0 to 127 and sets that key's output pitch. The slider doesn't travel smoothly, rather it clicks into place on the whole numbers. The pitch bend wheel runs from -200¢ to 200¢ and sets the bend. When the keyboard is first turned on, all these wheels are set to center and all the sliders are set to match the key -- the lowest key's slider is 0, the 2nd one is 1, etc. Unlike the usual pitch bend wheel, which this keyboard also has, the tiny wheels don't have a spring that returns them to center. If one is moved to +30¢, it stays there until moved again. Using the sliders and wheels, any key on the keyboard can be set to play any pitch in the entire 10-and-a-half octave midi range. The synth's job is to produce whatever pitches are required by the keys and sliders and wheels, which may be further bent by the usual pitch bend wheel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sometimes the keyboard will actually be a touchscreen device, and instead of pressing a key, the musician simply touches the screen to play a note, with the touch's location determining the pitch. Dragging one's fingers along the surface generates ultra-wide pitch bends. This is a polyphonic device, with each finger being in effect a separate &amp;quot;key&amp;quot;. There may be no retuning software, because the controller (or iPad app) will generate its own tuning messages. The imaginary keyboard analogous to this device has no tiny wheels and each tiny slider can travel freely without clicks. From the synth's point of view, the midi stream is the same as from a standard controller: note-ons and note-offs mixed with tuning messages and perhaps standard pitch bends.&lt;br /&gt;
Sometimes the keyboard will actually be a touchscreen device, and instead of pressing a key, the musician simply touches the screen to play a note, with the touch's location determining the pitch. Dragging one's fingers along the surface generates ultra-wide pitch bends. This is a polyphonic device, with each finger being in effect a separate &amp;quot;key&amp;quot;. There may be no retuner, because the controller (or iPad app) will generate its own tuning messages. The imaginary keyboard analogous to this device has no tiny wheels and each tiny slider can travel freely without clicks. From the synth's point of view, the midi stream is the same as from a keyed controller: note-ons and note-offs mixed with tuning messages and perhaps standard pitch bends. A touchscreen device may also be used with a retuner; thus there are 3 possible setups that would use this tuning method:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;keyed controller --&amp;gt; retuner --&amp;gt; synth&lt;/li&gt;&lt;li&gt;touchscreen controller --&amp;gt; synth&lt;/li&gt;&lt;li&gt;touchscreen controller --&amp;gt; retuner --&amp;gt; synth&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Multi-timbral synths should be able to handle as many as 16 of these keyboards at once, one per channel. A multi-timbral synth should be one of 3 types: mono-tunable, multi-tunable, or switchable. Mono-tunable synths force all channels to adhere to one tuning. Channel information in tuning messages is ignored, comparable to midi's omni mode. Multi-tunable synths permit all 16 channels to be tuned independently. Switchable synths can be switched between the two modes. The advantages of mono-tunable are a reduction in the volume of the midi traffic for the common situation of identical tunings in all channels, as well as easier implementation. The advantages of multi-tunable are the ability to combine different tunings, and also a pitch glide on one keyboard won't affect the tuning of another keyboard. For software synths, the advantages of multi-tunable can be achieved with mono-tunable synths by using multiple instances of the synth. Switchable synths will respond to a special tuning message that sets the synth to either mono-tunable or multi-tunable. Switchable synths should default to the multi-tunable setting. Mono-timbral synths will obviously be mono-tunable.&lt;br /&gt;
Multi-timbral synths should be able to handle as many as 16 of these keyboards at once, one per channel. A multi-timbral synth should be one of 3 types: mono-tunable, multi-tunable, or switchable. Mono-tunable synths force all channels to adhere to one tuning. Channel information in tuning messages is ignored, comparable to midi's omni mode. Multi-tunable synths permit all 16 channels to be tuned independently. Switchable synths can be switched between the two modes. The advantages of mono-tunable are a reduction in the volume of the midi traffic for the common situation of identical tunings in all channels, as well as easier implementation. The advantages of multi-tunable are the ability to combine different tunings, and also a pitch glide on one keyboard won't affect the tuning of another keyboard. For software synths, the advantages of multi-tunable can be achieved with mono-tunable synths by using multiple instances of the synth. Switchable synths will respond to a special tuning message that sets the synth to either mono-tunable or multi-tunable. Switchable synths should default to the multi-tunable setting. Mono-timbral synths will obviously be mono-tunable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 194: Line 197:
&lt;strong&gt;&lt;u&gt;Implementation&lt;/u&gt;:&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Implementation&lt;/u&gt;:&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new method uses keyswitches for the 5 highest keys, 123-127. If middle C is C4, these are notes D#9 to G9. The velocity of the keyswitches carries 1 byte of tuning information. Keyswitch F#9 is the input note, keyswitch F9 is the output note, and keyswitches E9 and D#9 are the pitch bend, in the exact same format as the standard midi pitch bend message. This makes it easier for the synth developer or designer, because he has already written code that deals with physical pitch bend wheel movement, and can just reuse it to deal with tuning keyswitches. To bend note nn on channel c to note mm with bend of yyzz would take up to 4 midi note-on messages. In hexadecimal the midi looks like this:&lt;br /&gt;
The new method uses keyswitches for the 5 highest keys, 123-127. If middle C is C4, these are notes D#9 to G9. These keyswitches are generated by software, not played by the musician. The velocity of the keyswitches is not actually a velocity, but 1 byte of tuning information. Keyswitch F#9's velocity is actually the input note, keyswitch F9's velocity is the output note, and keyswitches E9 and D#9's velocities are the pitch bend, in the exact same 2-byte format as the standard midi pitch bend message. This makes it easier for the synth developer or designer, because he has already written code that handles physical pitch bend wheel movement, and can just reuse it to handle tuning keyswitches. To bend note nn on channel c to note mm with bend of yyzz would take up to 4 midi note-on messages. In hexadecimal the midi looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F#9 note-on: 9c FE nn (input note, only needs to be sent when the input note changes)&lt;br /&gt;
F#9 note-on: 9c FE nn (input note, only needs to be sent when the input note changes)&lt;br /&gt;
Line 203: Line 206:
(&lt;em&gt;There may be an additional &amp;quot;ultra-fine bend&amp;quot; message added - Ed.&lt;/em&gt;)&lt;br /&gt;
(&lt;em&gt;There may be an additional &amp;quot;ultra-fine bend&amp;quot; message added - Ed.&lt;/em&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These messages are always sent in this order. If the F#9 input note keyswitch is omitted, additional output note and bend messages continue to affect the current input note, overwriting previous output note and bend messages. If no F#9 keyswitch is received, the current input note defaults to note #0. The output note keyswitch is optional and would generally be omitted for 12-notes-per-octave tunings. The coarse bend could be omitted for slight pitch bends that don't change the MSB of the pitch bend. The required fine bend keyswitch functions as an &amp;quot;end of tuning message&amp;quot; marker and the synth waits until receiving this keyswitch to actually apply the new tuning. In general, the retuning software will limit the pitch bends to +/- 50¢. The midi stream for pitch glides will be reduced to mostly fine bends, with coarse bends whenever the MSB boundary is crossed, and output note updates whenever the note boundary is crossed.&lt;br /&gt;
These messages are always sent in this order. If the F#9 input note keyswitch is omitted, additional output note and bend messages continue to affect the current input note, overwriting previous output note and bend messages. If no F#9 keyswitch is received, the current input note defaults to note #0. The F9 output note keyswitch is optional and would generally be omitted for 12-notes-per-octave tunings. The E9 coarse bend could be omitted for slight pitch bends that don't change the MSB of the pitch bend. The required D#9 fine bend functions as an &amp;quot;end of tuning message&amp;quot; marker, and the synth waits until receiving this keyswitch to actually apply the new tuning. In general, the retuning software will limit the pitch bends to +/- 50¢. The midi stream for pitch glides will be reduced to mostly fine bends, with coarse bends whenever the MSB boundary is crossed, and output note updates whenever the note boundary is crossed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The note-ons need to have matching note-offs to avoid being misinterpreted and possibly blocked by the DAW or other environment. To this end, the note-ons for each keyswitch are alternated with note-offs. Thus if one input note message is 9c FE nn, the next one will be of the form 8c FE nn.&lt;br /&gt;
The note-ons need to have matching note-offs to avoid being misinterpreted and possibly blocked by the DAW or other environment. To this end, the note-ons for each keyswitch are alternated with note-offs. Thus if one input note message is 9c FE nn, the next one will be of the form 8c FE nn.&lt;br /&gt;
Line 237: Line 240:
&lt;br /&gt;
&lt;br /&gt;
Footnote on FL Studio sysex compatibility.&lt;br /&gt;
Footnote on FL Studio sysex compatibility.&lt;br /&gt;
&lt;!-- ws:start:WikiTextUrlRule:164:http://forum.image-line.com/viewtopic.php?p=824112 --&gt;&lt;a class="wiki_link_ext" href="http://forum.image-line.com/viewtopic.php?p=824112" rel="nofollow"&gt;http://forum.image-line.com/viewtopic.php?p=824112&lt;/a&gt;&lt;!-- ws:end:WikiTextUrlRule:164 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextUrlRule:172:http://forum.image-line.com/viewtopic.php?p=824112 --&gt;&lt;a class="wiki_link_ext" href="http://forum.image-line.com/viewtopic.php?p=824112" rel="nofollow"&gt;http://forum.image-line.com/viewtopic.php?p=824112&lt;/a&gt;&lt;!-- ws:end:WikiTextUrlRule:172 --&gt;&lt;br /&gt;
(official FL Studio forum, must register to view the full thread)&lt;br /&gt;
(official FL Studio forum, must register to view the full thread)&lt;br /&gt;
Excerpted from a July 2013 conversation with &amp;quot;Reflex&amp;quot;, a site admin:&lt;br /&gt;
Excerpted from a July 2013 conversation with &amp;quot;Reflex&amp;quot;, a site admin:&lt;br /&gt;