New Tuning Method: Difference between revisions
Wikispaces>TallKite **Imported revision 453574524 - Original comment: ** |
Wikispaces>TallKite **Imported revision 453575646 - 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: | : This revision was by author [[User:TallKite|TallKite]] and made on <tt>2013-09-23 21:06:07 UTC</tt>.<br> | ||
: The original revision id was <tt> | : The original revision id was <tt>453575646</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 27: | Line 27: | ||
---- | ---- | ||
**__Design__:** | **__Design__:** | ||
| Line 94: | Line 93: | ||
http://forum.image-line.com/viewtopic.php?p=824112 | http://forum.image-line.com/viewtopic.php?p=824112 | ||
(official FL Studio forum, must register to view the full thread) | (official FL Studio forum, must register to view the full thread) | ||
From a July 2013 conversation with " | From a July 2013 conversation with "Reflex", a site admin: | ||
user: "The Voyager PlugSE (VST plugin) from Moog... doesn't work [in FL studio]." | user: "The Voyager PlugSE (VST plugin) from Moog... doesn't work [in FL studio]." | ||
Reflex: "VST plugins can send sysex out of FL, but can't receive it." | |||
user: "Yes I guess it also receives Sysex, and so a bidirectional communication can't be established." | user: "Yes I guess it also receives Sysex, and so a bidirectional communication can't be established." | ||
Reflex: "Then I don't know of any way to make it work in FL." | |||
user: "Is it planned to add support for VST plugin to send Sysex?" | user: "Is it planned to add support for VST plugin to send Sysex?" | ||
Reflex: "They already can. But they can't receive them. And that's not planned." | |||
---- | ---- | ||
**__Older Implementations, now obsolete__:** | **__Older Proposed Implementations, now obsolete__:** | ||
These methods do not work well with Kontakt, as it can't read closely spaced CC messages. | |||
__Undefined CC method__: uses CC #119 for input note, CC #118 for output note, CC #117 for coarse bend, CC #116 for fine bend, and CC #115 for reset, mode changes, etc. Disadvantages: possible conflict with hardware keyboards that use the same CC #s. This would cause accidental mistuning of all synths that use this method. | __Undefined CC method__: uses CC #119 for input note, CC #118 for output note, CC #117 for coarse bend, CC #116 for fine bend, and CC #115 for reset, mode changes, etc. Disadvantages: possible conflict with hardware keyboards that use the same CC #s. This would cause accidental mistuning of all synths that use this method. | ||
__User-selected CC method__: The user decides on 5 CC #s that don't conflict with any midi hardware he/she possesses. The user inputs these 5 CC #s into the retuner. This only needs to be done onc for a given midi setup. The synth must either provide for user input or accept a few RPNs from the retuner that convey this information. The synth must default to no tuning CC #s being in use, to avoid accidental retuning. Disadvantages: greater hassle for the user, more coding for the synth developer, and sacrifice of valuable screen real estate. | __User-selected CC method__: The user decides on 5 CC #s that don't conflict with any midi hardware he/she possesses. The user inputs these 5 CC #s into the retuner. This only needs to be done onc for a given midi setup. The synth must either provide for user input or accept a few RPNs from the retuner that convey this information. The synth must default to no tuning CC #s being in use, to avoid accidental retuning. Disadvantages: greater hassle for the user, more coding for the synth developer, and sacrifice of valuable screen real estate. | ||
__RPN method__: The new method uses RPNs (Registered Parameter Numbers). The technical details: There are about 16,000 possible RPN parameters, and only about a dozen are in use. We can use a block of 128 RPNs, one for each input note number, for retuning. Data MSB and LSB messages for these RPNs contain the cents to retune by, in the exact same format as the standard midi pitch bend message. The retuning is immediate (real-time), just like the standard pitch bend. 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 RPNs. We use another block of 128 RPNs to define the output note. The RPN LSB is again the input note number. The data MSB is the output note number, and the data LSB is not used. If this RPN MSB is 100 = 64 hexadecimal, and the first RPN MSB is 101 = 65 hexadecimal, then to bend note nn on channel c to note mm with bend of yyzz would take up to 6 midi CC (Controller Change) messages. In hexadecimal the midi looks like this: | __RPN method__: The new method uses RPNs (Registered Parameter Numbers). The technical details: There are about 16,000 possible RPN parameters, and only about a dozen are in use. We can use a block of 128 RPNs, one for each input note number, for retuning. Data MSB and LSB messages for these RPNs contain the cents to retune by, in the exact same format as the standard midi pitch bend message. The retuning is immediate (real-time), just like the standard pitch bend. 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 RPNs. We use another block of 128 RPNs to define the output note. The RPN LSB is again the input note number. The data MSB is the output note number, and the data LSB is not used. If this RPN MSB is 100 = 64 hexadecimal, and the first RPN MSB is 101 = 65 hexadecimal, then to bend note nn on channel c to note mm with bend of yyzz would take up to 6 midi CC (Controller Change) messages. In hexadecimal the midi looks like this: | ||
| Line 170: | Line 169: | ||
<br /> | <br /> | ||
<hr /> | <hr /> | ||
<br /> | <br /> | ||
<strong><u>Design</u>:</strong><br /> | <strong><u>Design</u>:</strong><br /> | ||
| Line 235: | Line 233: | ||
<br /> | <br /> | ||
Footnote on FL Studio sysex compatibility.<br /> | Footnote on FL Studio sysex compatibility.<br /> | ||
<!-- ws:start:WikiTextUrlRule: | <!-- ws:start:WikiTextUrlRule:161:http://forum.image-line.com/viewtopic.php?p=824112 --><a class="wiki_link_ext" href="http://forum.image-line.com/viewtopic.php?p=824112" rel="nofollow">http://forum.image-line.com/viewtopic.php?p=824112</a><!-- ws:end:WikiTextUrlRule:161 --><br /> | ||
(official FL Studio forum, must register to view the full thread)<br /> | (official FL Studio forum, must register to view the full thread)<br /> | ||
From a July 2013 conversation with &quot; | From a July 2013 conversation with &quot;Reflex&quot;, a site admin:<br /> | ||
user: &quot;The Voyager PlugSE (VST plugin) from Moog... doesn't work [in FL studio].&quot;<br /> | user: &quot;The Voyager PlugSE (VST plugin) from Moog... doesn't work [in FL studio].&quot;<br /> | ||
Reflex: &quot;VST plugins can send sysex out of FL, but can't receive it.&quot;<br /> | |||
user: &quot;Yes I guess it also receives Sysex, and so a bidirectional communication can't be established.&quot;<br /> | user: &quot;Yes I guess it also receives Sysex, and so a bidirectional communication can't be established.&quot;<br /> | ||
Reflex: &quot;Then I don't know of any way to make it work in FL.&quot;<br /> | |||
user: &quot;Is it planned to add support for VST plugin to send Sysex?&quot;<br /> | user: &quot;Is it planned to add support for VST plugin to send Sysex?&quot;<br /> | ||
Reflex: &quot;They already can. But they can't receive them. And that's not planned.&quot;<br /> | |||
<br /> | <br /> | ||
<hr /> | <hr /> | ||
<br /> | <br /> | ||
<strong><u>Older Implementations, now obsolete</u>:</strong><br /> | <strong><u>Older Proposed Implementations, now obsolete</u>:</strong><br /> | ||
<br /> | |||
These methods do not work well with Kontakt, as it can't read closely spaced CC messages.<br /> | |||
<br /> | <br /> | ||
<u>Undefined CC method</u>: uses CC #119 for input note, CC #118 for output note, CC #117 for coarse bend, CC #116 for fine bend, and CC #115 for reset, mode changes, etc. Disadvantages: possible conflict with hardware keyboards that use the same CC #s. This would cause accidental mistuning of all synths that use this method.<br /> | <u>Undefined CC method</u>: uses CC #119 for input note, CC #118 for output note, CC #117 for coarse bend, CC #116 for fine bend, and CC #115 for reset, mode changes, etc. Disadvantages: possible conflict with hardware keyboards that use the same CC #s. This would cause accidental mistuning of all synths that use this method.<br /> | ||
<br /> | <br /> | ||
<u>User-selected CC method</u>: The user decides on 5 CC #s that don't conflict with any midi hardware he/she possesses. The user inputs these 5 CC #s into the retuner. This only needs to be done onc for a given midi setup. The synth must either provide for user input or accept a few RPNs from the retuner that convey this information. The synth must default to no tuning CC #s being in use, to avoid accidental retuning. Disadvantages: greater hassle for the user, more coding for the synth developer, and sacrifice of valuable screen real estate.<br /> | <u>User-selected CC method</u>: The user decides on 5 CC #s that don't conflict with any midi hardware he/she possesses. The user inputs these 5 CC #s into the retuner. This only needs to be done onc for a given midi setup. The synth must either provide for user input or accept a few RPNs from the retuner that convey this information. The synth must default to no tuning CC #s being in use, to avoid accidental retuning. Disadvantages: greater hassle for the user, more coding for the synth developer, and sacrifice of valuable screen real estate.<br /> | ||
<br /> | <br /> | ||
<u>RPN method</u>: The new method uses RPNs (Registered Parameter Numbers). The technical details: There are about 16,000 possible RPN parameters, and only about a dozen are in use. We can use a block of 128 RPNs, one for each input note number, for retuning. Data MSB and LSB messages for these RPNs contain the cents to retune by, in the exact same format as the standard midi pitch bend message. The retuning is immediate (real-time), just like the standard pitch bend. 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 RPNs. We use another block of 128 RPNs to define the output note. The RPN LSB is again the input note number. The data MSB is the output note number, and the data LSB is not used. If this RPN MSB is 100 = 64 hexadecimal, and the first RPN MSB is 101 = 65 hexadecimal, then to bend note nn on channel c to note mm with bend of yyzz would take up to 6 midi CC (Controller Change) messages. In hexadecimal the midi looks like this:<br /> | <u>RPN method</u>: The new method uses RPNs (Registered Parameter Numbers). The technical details: There are about 16,000 possible RPN parameters, and only about a dozen are in use. We can use a block of 128 RPNs, one for each input note number, for retuning. Data MSB and LSB messages for these RPNs contain the cents to retune by, in the exact same format as the standard midi pitch bend message. The retuning is immediate (real-time), just like the standard pitch bend. 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 RPNs. We use another block of 128 RPNs to define the output note. The RPN LSB is again the input note number. The data MSB is the output note number, and the data LSB is not used. If this RPN MSB is 100 = 64 hexadecimal, and the first RPN MSB is 101 = 65 hexadecimal, then to bend note nn on channel c to note mm with bend of yyzz would take up to 6 midi CC (Controller Change) messages. In hexadecimal the midi looks like this:<br /> | ||