]> Shamusworld >> Repos - ardour-manual/blob - _manual/22_using-control-surfaces/01_controlling-ardour-with-osc/02_feedback-in-osc.html
Tempo and meter - more class="note" goodness.
[ardour-manual] / _manual / 22_using-control-surfaces / 01_controlling-ardour-with-osc / 02_feedback-in-osc.html
1 ---
2 layout: default
3 title: OSC Feedback With Ardour
4 ---                        
5   
6 <p>
7   Feedback from the Ardour to the the control surface is very useful for
8   a number of things. Motor faders need to know where the the track
9   they have been attached to is at before they were assigned otherwise
10   they will jump to where the local fader is. Likewise, the buttons on
11   each strip need to know what there value is so they can light there LED
12   correctly. Transport controls should let you know if they are active
13   too. This is what feedback is all about.
14 </p>
15 <p>
16   Ardour does feedback by sending the same path back that is used to
17   control the same function. As such any controls that have feedback
18   have a parameter that is the value of the control or it's state
19   (on or off). In the case of OSC paths listed on the main OSC page
20   as having no parameter, if they have feedback, they will also work
21   with a 1 for button press and 0 for button release. This is because
22   many OSC controllers will only use exactly the same path for feedback
23   as for control. For example:
24 </p>
25
26 <dl class="bindings">
27   <dt><kbd class="osc">/transport_stop</kbd></dt>
28   <dd></dd>
29 </dl>
30 <p>can be used also in the form:</p>
31
32 <dl class="bindings">
33   <dt><kbd class="osc">/transport_stop <em>press</em></kbd></dt>
34   <dd>where <em>press</em> is an int/bool indicating if the button is pressed or not.</dd>
35 </dl>
36
37 <p>
38   The feedback does not have the same meaning as the control message.
39   Rather, the feedback will be:
40 </p>
41
42 <dl class="bindings">
43   <dt><kbd class="osc">/transport_stop <em>state</em></kbd></dt>
44   <dd>where <em>state</em> is an int/bool indicating if the transport is stopped or not.</dd>
45 </dl>
46
47 <h2>List of OSC feedback messages</h2>
48
49 <h3>Feedback only</h3>
50 <p>
51   These messages are feedback only. They are sent as status from Ardour
52   and some of them may be enabled separately from other feedback. See:
53   <a href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
54   Calculating Feedback and Strip-types Values.</a>
55 </p>
56 <p class="note">
57   See strip section below for info about ssid and wrapping it into the
58   path.
59 </p>
60 <dl class="bindings">
61   <dt><kbd class="osc">/strip/name <em>ssid</em> <em>track_name</em></kbd></dt>
62   <dd>where <em>track_name</em> is a string representing the name of the track</dd>
63   <dt><kbd class="osc">/session_name <em>session_name</em></kbd></dt>
64   <dd>where <em>session_name</em> is a string representing the name of the session</dd>
65   <dt><kbd class="osc">/strip/meter <em>ssid</em> <em>meter</em></kbd></dt>
66   <dd>where <em>meter</em> is a value repesenting the current audio level.
67   (the exact math used is determined by the feedback bits set)</dd>
68   <dt><kbd class="osc">/strip/signal <em>ssid</em> <em>signal</em></kbd></dt>
69   <dd>where <em>signal</em> is a float indicating the instantainious
70   audio level is -40dB or higher.</dd>
71   <dt><kbd class="osc">/timecode <em>time</em></kbd></dt>
72   <dd>where <em>time</em> is a string with the current play head time.</dd>
73   <dt><kbd class="osc">/bar_beat <em>beat</em></kbd></dt>
74   <dd>where <em>beat</em> is a string with the current play head bar/beat.</dd>
75   <dt><kbd class="osc">/heartbeat <em>LED</em></kbd></dt>
76   <dd>where <em>LED</em> is a float that cycles 1/0 at 1 second intervals.</dd>
77   <dt><kbd class="osc">/record_tally <em>state</em></kbd></dt>
78   <dd>Some record enable is true or "ready to record"</dd>
79 </dl>
80
81 <h3>Transport Control</h3>
82 <dl class="bindings">
83   <dt><kbd class="osc">/transport_stop <em>state</em></kbd></dt>
84   <dd></dd>
85   <dt><kbd class="osc">/transport_play <em>state</em></kbd></dt>
86   <dd></dd>
87   <dt><kbd class="osc">/ffwd <em>state</em></kbd></dt>
88   <dd></dd>
89   <dt><kbd class="osc">/rewind <em>state</em></kbd></dt>
90   <dd></dd>
91   <dt><kbd class="osc">/loop_toggle <em>state</em></kbd></dt>
92   <dd></dd>
93 </dl>
94
95 <h3>Recording control</h3>
96 <dl class="bindings">
97   <!--dt><kbd class="osc">/toggle_punch_in</kbd></dt>
98   <dd></dd>
99   <dt><kbd class="osc">/toggle_punch_out</kbd></dt>
100   <dd></dd-->
101   <dt><kbd class="osc">/rec_enable_toggle <em>state</em></kbd></dt>
102   <dd>Master record enabled.</dd>
103 </dl>
104
105 <h3>Master and monitor strips</h3>
106 <p>
107   Master and monitor strips are similar to track strips but do not use
108   the SSID. Rather they use their name as part of the path:
109 </p>
110 <dl class="bindings">
111   <dt><kbd class="osc">/master/gain <em>dB</em></kbd></dt>
112   <dd>where <em>dB</em> is a float ranging from -193 to +6 representing the actual gain of master in dB</dd>
113   <dt><kbd class="osc">/master/fader  <em>position</em></kbd></dt>
114   <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the fader control position</dd>
115   <dt><kbd class="osc">/master/trimdB <em>dB</em></kbd></dt>
116   <dd>where <em>dB</em> is a float ranging from -20 to +20 representing the actual trim for master in dB</dd>
117   <dt><kbd class="osc">/master/pan_stereo_position <em>position</em></kbd></dt>
118   <dd>where <em>position</em> is a float ranging from 0 to 1 representing the actual pan position for master</dd>
119   <dt><kbd class="osc">/master/mute  <em>yn</em></kbd></dt>
120   <dd>where <em>yn</em> is a bool/int representing the actual mute state of the Master strip</dd>
121   <dt><kbd class="osc">/monitor/gain <em>dB</em></kbd></dt>
122   <dd>where <em>dB</em> is a float ranging from -193 to 6 representing the actual gain of monitor in dB</dd>
123   <dt><kbd class="osc">/monitor/fader  <em>position</em></kbd></dt>
124   <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the fader control position</dd>
125 </dl>
126
127 <h3>Track specific operations</h3>
128 <p>
129   For each of the following, <em>ssid</em> is the surface strip ID for the track
130 </p>
131 <p class="note">
132   Some Surfaces (many Android applets) are not able to deal with more
133   than one parameter in a command. However, the two parameter commands
134   below can also be sent as /strip/command/ssid param. Feedback can be
135   set to match this with the /set_surface/feedback <em>state</em>
136   command. See <a
137   href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
138   Calculating Feedback and Strip-types Values.</a>
139 </p>
140
141 <dl class="bindings">
142   <dt><kbd class="osc">/strip/name <em>ssid</em> <em>track_name</em></kbd></dt>
143   <dd>where <em>track_name</em> is a string representing the name of the track 
144   (note there is no coresponding command to set the track name)</dd>
145   <dt><kbd class="osc">/strip/mute <em>ssid</em> <em>mute_st</em></kbd></dt>
146   <dd>where <em>mute_st</em> is a bool/int representing the actual mute state of the track</dd>
147   <dt><kbd class="osc">/strip/solo <em>ssid</em> <em>solo_st</em></kbd></dt>
148   <dd>where <em>solo_st</em> is a bool/int representing the actual solo state of the track</dd>
149   <dt><kbd class="osc">/strip/monitor_input <em>ssid</em> <em>monitor_st</em></kbd></dt>
150   <dd>where <em>monitor_st</em> is a bool/int. True/1 meaning the track is force to monitor input</dd>
151   <dt><kbd class="osc">/strip/monitor_disk <em>ssid</em> <em>monitor_st</em></kbd></dt>
152   <dd>where <em>monitor_st</em> is a bool/int. True/1 meaning the track is force to monitor disk,
153   where both disk and input are false/0, auto monitoring is used.</dd>
154   <dt><kbd class="osc">/strip/recenable <em>ssid</em> <em>rec_st</em></kbd></dt>
155   <dd>where <em>rec_st</em> is a bool/int representing the actual rec state of the track</dd>
156   <dt><kbd class="osc">/strip/record_safe <em>ssid</em> <em>rec_st</em></kbd></dt>
157   <dd>where <em>rec_st</em> is a bool/int representing the actual record safe state of the track</dd>
158   <dt><kbd class="osc">/strip/gain <em>ssid</em> <em>gain</em></kbd></dt>
159   <dd>where <em>gain</em> is a float ranging from -193 to 6 representing the actual gain of the track in dB.</dd>
160   <dt><kbd class="osc">/strip/fader <em>ssid</em>  <em>position</em></kbd></dt>
161   <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the actual gain of the track in dB.</dd>
162   <dt><kbd class="osc">/strip/trimdB <em>ssid</em>  <em>trim_db</em></kbd></dt>
163   <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the actual trim of the track in dB.</dd>
164   <dt><kbd class="osc">/strip/pan_stereo_position <em>ssid</em> <em>position</em></kbd></dt>
165   <dd>where <em>position</em> is a float ranging from 0 to 1 representing the actual pan position of the track</dd>
166 </dl>
167
168 <h3>Menu actions</h3>
169 <p>
170   Every single menu item in Ardour's GUI is accessible via OSC. However,
171   there is no provision for returning the state of anything set this way.
172   This is not a bad thing as most menu items either do not have an on/off
173   state or that state is quite visible. Binding that affect other parameters
174   that OSC does track will show on those OSC controls. Examples of this
175   might be track record enable for tracks 1 to 32, play or stop.
176 </p>