+<p>
+ Ardour sends any feedback to the port and address that sent any
+ feedback request. The port does not have to match Ardour's port. In
+ fact it is better not to. This means that Ardour can deal with more
+ than one controller at a time. The two controllers can bank
+ independantly and even use different math for faders. This could be
+ used to allow talent to adjust their own monitor mix using a tablet
+ or phone that can run an OSC controller. For a full explanation of
+ how Ardour's feedback works please read <a
+ href="/using-control-surfaces/controlling-ardour-with-osc/feedback-in-osc/">
+ OSC feedback In Ardour.</a>
+</p>
+
+<h2>Control Surface Set Up</h2>
+
+<p>
+ Control surface set up allows the controller to tell Ardour about it's
+ capabilities. The surface can tell Ardour how many control strips it
+ has for banking, if it is capable of setting it's faders or buttons
+ to valuse set by Aurdour's GUI or automation, What kind of math the
+ faders use and more.
+</p>
+<p>
+ Any time the <em>/set_surface</em> command is sent, the current bank
+ is recalculated and if feedback is turned on, the values of each
+ strip's controls are sent (or refreshed) as well. This will also
+ refresh the Master feedback setup.
+</p>
+<p>If /set_surface is not sent, the default values are used:
+ <ul>
+ <li><em>Bank Size</em>: 0 - No banking (or infinite bank size).</li>
+ <li><em>Strip Types</em>: All strip types except hidden and special.</li>
+ <li><em>Feedback</em>: Off.</li>
+ <li><em>Fader Mode</em>: 0 - gain in dB</li>
+ </ul>
+ These values give the same behaviour as prior versions of Ardour. (or the closest possible)
+</p>
+<dl class="bindings">
+ <dt><kbd class="osc">/set_surface <em>bank_size</em> <em>strip_types</em>
+ <em>feedback</em> <em>fadermode</em></kbd></dt>
+ <dd>
+ See below for an explaination of each parameter.
+ </dd>
+</dl>
+<h3>bank_size</h3>
+<p>
+ Bank Size is the number of channel strips the controller supports
+ without banking. Setting this to 0 turns banking off by setting the
+ bank size to infinite.
+</p>
+<h3>strip_types</h3>
+<p>
+ strip_types is an integer made up of bits. The easy way to
+ deal with this is to think of strip_types items being worth a number and
+ then adding all those numbers together for a value to send.
+ Strip Types will determine What kind of strips will be included in
+ bank. This would include: Audio, MIDI, busses, VCAs, Master, Monitor
+ and hidden or selected strips.
+</p>
+<p>Please see: <a
+ href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
+ Calculating Feedback and Strip-types Values.</a></p>
+<h3>feedback</h3>
+<p>Feedback is an integer made up of bits. The easy way to
+ deal with this is to think of feedback items being worth a number and
+ then adding all those numbers together for a value to send.
+</p>
+<p>Please see: <a
+ href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
+ Calculating Feedback and Strip-types Values.</a></p>
+
+<h3>gainmode</h3>
+<p>
+ Gainmode is a an int that acts as a bool:
+ <ul>
+ <li><em>0 (or false)</em> dB value as a float from -193 to +6. Sent as
+ /strip/gain RID value. (-193 or below are the same as -inf)</li>
+ <li><em>1 (or true)</em> A positional fader based on the same math as
+ Ardour's GUI. An Integer from 0 to 1023 (1024 values). Sent as
+ /strip/fader RID value</li>
+ </ul>
+</p>
+