]> Shamusworld >> Repos - ardour-manual-diverged/commitdiff
OSC: Updates for Ardour 5.5
authorLen Ovens <len@ovenwerks.net>
Wed, 30 Nov 2016 04:37:38 +0000 (20:37 -0800)
committerLen Ovens <len@ovenwerks.net>
Wed, 30 Nov 2016 04:37:38 +0000 (20:37 -0800)
_manual/22_using-control-surfaces/01_controlling-ardour-with-osc.html
_manual/22_using-control-surfaces/01_controlling-ardour-with-osc/02_feedback-in-osc.html
_manual/22_using-control-surfaces/01_controlling-ardour-with-osc/03_calculating-feedback-and-strip-types-values.html
_manual/22_using-control-surfaces/01_controlling-ardour-with-osc/06_osc-setup-dialog.html
_manual/22_using-control-surfaces/01_controlling-ardour-with-osc/07_querying-ardour-with-osc.html [new file with mode: 0644]
source/images/osc-dialog.png [new file with mode: 0644]
source/images/osc-feedbackdefault.png [new file with mode: 0644]
source/images/osc-strip-types.png [new file with mode: 0644]

index 8d7fda10e9c27dbddba8738e12686f5f691ba1da..f79afa222f1861c88cd955e401e61d3703e34b76 100644 (file)
@@ -172,6 +172,14 @@ here</em>"/&gt;</kbd>
 <p class="note">
        Gain mode can also be set with <em>/set_surface/gainmode gainmode.</em>
 </p>
+
+<h2>Querying Ardour for information</h2>
+<p>
+  The control Surface may wish to control the type a frequency of
+  updates it receives. It can do this with querying commands. See: <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a>
+</p>
   
 <h2>List of OSC messages</h2>
 <p class="note">
@@ -367,15 +375,40 @@ here</em>"/&gt;</kbd>
   <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan position of the track</dd>
   <dt><kbd class="osc">/strip/pan_stereo_width <em>ssid</em> <em>width</em></kbd></dt>
   <dd>where <em>width</em> is a float ranging from 0 to 1 representing the desired pan width of the track</dd>
-  <dt><kbd class="osc">/strip/plugin/parameter <em>ssid</em> <em>piid</em> <em>param</em> <em>value</em></kbd></dt>
-  <dd>where <em>piid</em> = nth Plugin, <em>param</em> = nth param, <em>value</em>
-  is a float ranging from 0 to 1 representing the desired parameter value</dd>
-  <dt><kbd class="osc">/strip/send/gain", <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dt><kbd class="osc">/strip/send/gain <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
   <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
   ranging from -193 to +6 representing the desired gain in dB for the send</dd>
-  <dt><kbd class="osc">/strip/send/fader", <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dt><kbd class="osc">/strip/send/fader <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
   <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
   ranging from 0 to 1 representing the desired position for the send as a fader</dd>
+  <dt><kbd class="osc">/strip/send/enable <em>ssid</em> <em>sendid</em> <em>state</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>state</em> is 1 for enabled and 0 for disabled</dd>
+  <dt><kbd class="osc">/strip/list </kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/sends <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/receives <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/plugin/list <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/plugin/descriptor <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/plugin/reset <em>ssid</em> <em>piid</em> </kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, will reset all values to the plugin's original values</dd>
+  <dt><kbd class="osc">/strip/plugin/activate <em>ssid</em> <em>piid</em> </kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, will set the plugin's state to active</dd>
+  <dt><kbd class="osc">/strip/plugin/deactivate <em>ssid</em> <em>piid</em> </kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, will set the plugin's state to inactive</dd>
+  <dt><kbd class="osc">/strip/plugin/parameter <em>ssid</em> <em>piid</em> <em>param</em> <em>value</em></kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, <em>param</em> = nth param, <em>value</em>
+  is a float ranging from 0 to 1 representing the desired parameter value</dd>
+  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>name</em></kbd></dt>
+  <dd>where <em>name</em> is a string for the desired name of the track</dd>
 </dl>
 <h3>Selected Strip Operations</h3>
 <p>
index 3e006afa3699c44278e27c786a3e6d553ab8727d..2214d0d4ce28d4c11dd8cd4fae29c5bdd779c8a4 100644 (file)
@@ -7,10 +7,10 @@ title: OSC Feedback With Ardour
   Feedback from the Ardour to the the control surface is very useful for
   a number of things. Motor faders need to know where the the track
   they have been attached to is at before they were assigned otherwise
-  they will jump to where the local fader is. Likewise, the buttons on
-  each strip need to know what there value is so they can light there LED
-  correctly. Transport controls should let you know if they are active
-  too. This is what feedback is all about.
+  the DAW fader will jump to where the controller fader is. Likewise, 
+  the buttons on each strip need to know what their value is so they can
+  light their LED correctly. Transport controls should let you know if
+  they are active too. This is what feedback is all about.
 </p>
 <p>
   Ardour does feedback by sending the same path back that is used to
@@ -36,7 +36,9 @@ title: OSC Feedback With Ardour
 
 <p>
   The feedback does not have the same meaning as the control message.
-  Rather, the feedback will be:
+  Where the button release sent to Ardour will be ignored and has no
+  meaning. Both states have meaning in feedback to the controller.
+  The feedback will be:
 </p>
 
 <dl class="bindings">
@@ -52,6 +54,19 @@ title: OSC Feedback With Ardour
   That is with pan width at 100% (or -100%) there is no pan position
   movement available.
 </p>
+<p>
+  It may come as a surprise, but feedback often generates more network
+  traffic than control itself does. Some things are more obvious like
+  head position or meters. But even a simple button push like transport
+  start sends not only a signal to turn on the play LED, but also one to
+  turn off the stop LED, the Rewind LED, the Fast Forward LED and the
+  Loop LED. That is still minor, think instead of a surface refresh
+  such as happens when the surface is first connected and then most of
+  that happens every time the fader strips are banked. This is why
+  feedback is enabled in sections so that as little feedback as is
+  actually needed is sent. This is also a consideration if the surface
+  is connected via wifi.
+</p>
 <h2>List of OSC feedback messages</h2>
 
 <h3>Feedback only</h3>
index dcc16dab1d23073983a8240b5e6ded7f13282740..6e8340c1f4e269ee9c097c9c77b8a61970b1bc63 100644 (file)
@@ -46,6 +46,9 @@ title: Calculating Feedback and Strip-types Values
        <li>
                64      - Monitor.
        </li>
+       <li>
+               128     - Audio Aux.
+       </li>
        <li>
                256     - Selected.
        </li>
@@ -70,6 +73,21 @@ title: Calculating Feedback and Strip-types Values
   on a group or a set of user selected strips. Hidden shows strips the
   GUI has hidden.
 </p>
+<p class-"note">
+  Audio Aux? say what? I am sure most people will have noticed that they
+  can find no <em>Aux</em> strips in the Ardour mixer. There are none.
+  There are buses that can be used a number of ways. From analog days,
+  in OSC a bus is something that gets used as a sub mix before ending up
+  going to Master. An auxiliary bus is used like a separate mixer and
+  it's output goes outside the program or computer to be used as:
+  a monitor mix, a back up recording, or what have you. In OSC where
+  controller strips may be limited, it may be useful not to use up a
+  strip for an aux that is not really a part of the mix. It is also
+  useful to get a list of only aux buses if the control surface is a
+  phone used to provide talent monitor mix control on stage. Each
+  performer would be able to mix their own monitor. The user is free
+  to enable both buses and auxes if they would prefer.
+</p>
 
 <h3>feedback</h3> 
 <p>Feedback is an integer made up of bits. The easy way to
index 7512fad3dc8d34de5b598585155b08b53bd72e21..ffa9948c813c52e22ccb62086b1d989ade670981 100644 (file)
@@ -26,6 +26,10 @@ title: Using the OSC Setup Dialog
 </p>
 <h2>Dialog settings</h2>
 <h3>OSC setup tab</h3>
+<p>
+<img alt="the OSC configuration dialog"
+     src="/images/osc-dialog.png">
+</p>
 <h4>Connection:</h4>
 <p>
   This field is informational only. It shows where Ardour will receive
@@ -93,6 +97,10 @@ title: Using the OSC Setup Dialog
   so having correct defaults allows one "Connect" button rather than 4.
 </p>
 <h3>Default Strip Types tab</h3>
+<p>
+<img alt="the Default Strip Types tab"
+     src="/images/osc-strip-types.png">
+</p>
 <p>
   This allows selecting which of Ardour's mixer strips will be available
   for control. The Factory default is all strips except master, monitor
@@ -105,6 +113,10 @@ title: Using the OSC Setup Dialog
   controlled by a VCA are hidden, but one of those tracks needs a tweak.
 </p>
 <h3>Default Feedback tab</h3>
+<p>
+<img alt="the Default Feedback tab"
+     src="/images/osc-feedbackdefault.png">
+</p>
 <p>
   This allows setting up which controls provide feedback. The Factory
   default is none. If the controller is unable to receive feedback, this
diff --git a/_manual/22_using-control-surfaces/01_controlling-ardour-with-osc/07_querying-ardour-with-osc.html b/_manual/22_using-control-surfaces/01_controlling-ardour-with-osc/07_querying-ardour-with-osc.html
new file mode 100644 (file)
index 0000000..3ad110f
--- /dev/null
@@ -0,0 +1,153 @@
+---
+layout: default
+title: Querying Ardour with OSC
+---                        
+
+<p>
+  In order to make a custom controller that knows what strips Ardour
+  has, the controller needs to be able to query Ardour for that
+  information. These set of commands are for smarter control surfaces
+  That have the logic to figure out what to do with the information.
+  These are not of value for mapped controllers like touchOSC and
+  friends. The controller will need to send these queries to ardour
+  as often as it needs this information. It may well make sense to use
+  regular feedback for things that need to be updated often such as
+  position or metering.
+  Here are the commands used to query Ardour:
+</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/strip/list</kbd></dt>
+  <dd>Ask for a list of strips</dd>
+  <dt><kbd class="osc">/strip/sends <em>ssid</em></kbd></dt>
+  <dd>Asks for a list of sends on the strip <em>ssid</em></dd>
+  <dt><kbd class="osc">/strip/receives <em>ssid</em></kbd></dt>
+  <dd>Asks for a list of tracks that have sends to the strip <em>ssid</em> points to</dd>
+  <dt><kbd class="osc">/strip/plugin/list <em>ssid</em></kbd></dt>
+  <dd>Asks for a list of plug-ins for strip <em>ssid.</em></dd>
+  <dt><kbd class="osc">/plugin/descriptor <em>ssid</em> <em>piid</em></kbd></dt>
+  <dd>Asks for a list of descriptors for plug-in <em>piid</em> on strip <em>ssid</em></dd>
+</dl>
+
+<h3>A list of strips</h3>
+
+<p>
+  <code>/strip/list</code> asks Ardour for a list of strips that the
+  current session has. Ardour replies with a message for each
+  strip with the following information:
+  <ul>
+    <li>Strip type</li>
+    <li>Strip name</li>
+    <li>Number of inputs</li>
+    <li>Number of outputs</li>
+    <li>Muted (bool)</li>
+    <li>Soloed (bool)</li>
+    <li>Ssid (strip number)</li>
+    <li>Record enabled (bool)</li>
+  </ul>
+  After all the strip messages have been sent, one final message is
+  sent with:
+  <ul>
+    <li>The text <code>end_route_list</code></li>
+    <li>The session frame rate</li>
+    <li>The last frame number of the session</li>
+  </ul>
+</p>
+<p class="note">A bus will not have a record enable and so a bus message
+  will have one less parameter than a track. It is the controllers
+  responsability to deal with this.
+</p>
+
+<h3>A list of sends</h3>
+<p>
+  <code>/strip/sends <em>ssid</em></code> asks Ardour for a list of
+  sends for strip number ssid. The reply is sent back to the
+  controller as one message with the following information:
+  <ul>
+    <li>Ssid that information is for</li>
+    <li>Each send's information:</li>
+    <ul>
+      <li>The send's target bus ssid</li>
+      <li>The send's target bus name</li>
+      <li>The send id for this strip</li>
+      <li>The send gain as a fader possition</li>
+      <li>The Send's enable state</li>
+    </ul>
+  </ul>
+</p>
+<p>
+  The controller can tell how many sends there are from the number of
+  parameters as each send has 5 parameters and there is one extra for
+  ssid.
+</p>
+
+<h3>A list if tracks that send audio to a bus</h3>
+<p>
+  <code>/strip/receives <em>ssid</em></code> will return a list of
+  tracks that have sends to the bus at the ssid. The reply will
+  contain the following information for each track conntected to this
+  bus:
+  <ul>
+    <li>The ssid of the track sending</li>
+    <li>The name of the sending track</li>
+    <li>The id of the send at that track</li>
+    <li>It's gain in fader possition</li>
+    <li>The send's enable state</li>
+  </ul>
+</p>
+
+<h3>A list of plug-ins for strip</h3>
+<p>
+  <code>/strip/plugin/list <em>ssid</em></code> will return a list of
+  plug-ins that strip ssid has. The reply will contain the following
+  information:
+  <ul>
+    <li>Ssid that information is for</li>
+    <li>Each plugin's information:</li>
+    <ul>
+      <li>The plug-in's id</li>
+      <li>The plug-in's name</li>
+    </ul>
+  </ul>
+</p>
+
+<h3>A list of a plug-in's parameters</h3>
+<p>
+  <code>/plugin/descriptor <em>ssid</em> <em>piid</em></code> will
+  return the plug-in parameters for ppid plug-in on the ssid strip. The
+  reply will contain the following information:
+  <ul>
+    <li>Ssid of the strip the plug-in is in</li>
+    <li>The plug-in id for the plug-in</li>
+    <li>The plug-in's name</li>
+    <li>Information about each parameter</li>
+    <ul>
+      <li>The parameter id</li>
+      <li>The parameter's name</li>
+      <li>A bitset of flags (see below)</li>
+      <li>Data type</li>
+      <li>Minimum value</li>
+      <li>Maximum value</li>
+      <li>The number of scale points</li>
+      <li>zero or more scale points of one value and one string each</li>
+      <li>The current parameter value</li>
+    </ul>
+  </ul>
+</p>
+<p>
+  The flag bitset above has been defined as (from lsb):
+  <ul>
+    <li>0 - enumeration</li>
+    <li>1 - integer step</li>
+    <li>2 - logarithmic</li>
+    <li>3 - max unbound</li>
+    <li>4 - min unbound</li>
+    <li>5 - sample rate dependent</li>
+    <li>6 - toggled</li>
+    <li>7 - controllable</li>
+  </ul>
+</p>
+<p>
+       While this seems complex, it is really not that bad. Minimum,
+       maximum and value will in most cases give you all you need.
+</p>
diff --git a/source/images/osc-dialog.png b/source/images/osc-dialog.png
new file mode 100644 (file)
index 0000000..27f0539
Binary files /dev/null and b/source/images/osc-dialog.png differ
diff --git a/source/images/osc-feedbackdefault.png b/source/images/osc-feedbackdefault.png
new file mode 100644 (file)
index 0000000..e920dd4
Binary files /dev/null and b/source/images/osc-feedbackdefault.png differ
diff --git a/source/images/osc-strip-types.png b/source/images/osc-strip-types.png
new file mode 100644 (file)
index 0000000..7401a4b
Binary files /dev/null and b/source/images/osc-strip-types.png differ