+<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 are coming soon... check for more info sometime. For now
+ just use 0 (or anything else) as this is ignored. I don't know the bit
+ order just yet, but it will work similar to feedback below. Strip Types
+ will determine What kind of strips will be included in a bank. This would
+ include: Audio, MIDI, busses, VCAs, Master, Monitor and hopefully
+ hidden or selected strips.
+</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>
+ <ul>
+ <li>
+ 1 - feedback values of controls in strips.
+ </li>
+ <li>
+ 2 - Send meter values (not coded yet).
+ </li>
+ <li>
+ 4 - Send timecode (not coded yet).
+ </li>
+ <li>
+ 8 - Send Bar and Beat (not coded yet).
+ </li>
+ <li>
+ 16 - Enable master section feedback.
+ </li>
+ </ul>
+<p>
+ So using a value of 17 would turn on feedback for strip and master
+ controls, but leave meters, timecode and bar/beat feedback off.
+</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>
+