manual/include/generic-midi-and-encoders.html

64 lines
2.5 KiB
HTML

<p>
Encoders are showing up more frequently on controllers. However, they use
the same MIDI events as Continuous Controllers and they have no standard
way of sending that information as MIDI events.
</p>
<p>
Encoders that send the same continuous values as a pot would are not
discussed here as they are already supported by <code>ctl</code>.
</p>
<P>
Encoders as this page talks about them send direction and offset that the
DAW will add to or subtract from the current value.
</p>
<p>
The 4 kinds of 7 bit encoders supported are:
</p>
<ul>
<li>
enc-r: Relative Signed Bit. If the most sign bit is set, Then
the offset is positive. The lower 6 significant bits are the
offset. <code>&lt;Binding channel="1" enc-r="13" &hellip;</code>
The offset value is formed as <code>0svvvvvv</code>. Where s is the
sign or direction and vvvvvv is the number of ticks turned.
</li>
<li>
enc-l: Relative Signed Bit 2". If the most sign bit is unset,
Then the offset is positive. The lower 6 significant bits are the
offset. This is the same as enc-r but with the direction of turn
reversed. This is the method the Mackie Control Protocol
uses. <code>&lt;Binding channel="1" enc-l="13" &hellip;</code>
The offset value is formed as <code>0svvvvvv</code>. Where s is the
sign or direction and vvvvvv is the number of ticks turned.</li>
<li>
enc-2: Relative 2s Complement. Positive offsets are sent as normal
from 1 to 64 and negative offsets are sent as 2s complement negative
numbers. This is a signed 7 bit int.
<code>&lt;Binding channel="1" enc-2="13" &hellip;</code>
</li>
<li>
enc-b: Relative Binary Offset. Positive offsets are sent as offset
plus 64 and negative offsets are sent as 64 minus offset. 64 is zero,
65 is +1, 63 is -1. <code>&lt;Binding channel="1" enc-b="13" &hellip;</code>
</li>
</ul>
<p>
If the wrong one is chosen, either the positive or negative side will act
incorrectly. It is not really possible to auto detect which one the
controller is using. Trial and error is the only way if the specification
of the controller is not known.
</p>
<p>
Many controllers have more than one choice as well, check the manual for
the surface.
</p>
14 bit encoders are also supported with:
<ul>
<li>rpn-delta - The value is expected to be a signed 14bit value
that is added to the current value. For use with encoders</li>
<li>nrpn-delta - The value is expected to be a signed 14bit value
that is added to the current value. For use with encoders</li>
</ul>