---
layout: default
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.
Ardour does feedback by sending the same path back that is used to
control the same function. As such any controls that have feedback
have a parameter that is the value of the control or it's state
(on or off). In the case of OSC paths listed on the main OSC page
as having no parameter, if they have feedback, they will also work
with a 1 for button press and 0 for button release. This is because
many OSC controllers will only use exactly the same path for feedback
as for control. For example:
- /transport_stop
can be used also in the form:
- /transport_stop press
- where press is an int/bool indicating if the button is pressed or not.
The feedback does not have the same meaning as the control message.
Rather, the feedback will be:
- /transport_stop state
- where state is an int/bool indicating if the transport is stopped or not.
List of OSC feedback messages
Feedback only
These messages are feedback only. They are sent as status from Ardour
and some of them may be enabled separately from other feedback. See:
Calculating Feedback and Strip-types Values.
See strip section below for info about ssid and wrapping it into the
path.
- /strip/name ssid track_name
- where track_name is a string representing the name of the track
- /session_name session_name
- where session_name is a string representing the name of the session
- /strip/meter ssid meter
- where meter is a value repesenting the current audio level.
(the exact math used is determined by the feedback bits set)
- /strip/signal ssid signal
- where signal is a float indicating the instantainious
audio level is -40dB or higher.
- /timecode time
- where time is a string with the current play head time.
- /bar_beat beat
- where beat is a string with the current play head bar/beat.
- /heartbeat LED
- where LED is a float that cycles 1/0 at 1 second intervals.
- /record_tally state
- Some record enable is true or "ready to record"
Transport Control
- /transport_stop state
- /transport_play state
- /ffwd state
- /rewind state
- /loop_toggle state
Recording control
- /rec_enable_toggle state
- Master record enabled.
Master and monitor strips
Master and monitor strips are similar to track strips but do not use
the SSID. Rather they use their name as part of the path:
- /master/gain dB
- where dB is a float ranging from -193 to +6 representing the actual gain of master in dB
- /master/fader position
- where position is an int ranging from 0 to 1023 representing the fader control position
- /master/trimdB dB
- where dB is a float ranging from -20 to +20 representing the actual trim for master in dB
- /master/pan_stereo_position position
- where position is a float ranging from 0 to 1 representing the actual pan position for master
- /master/mute yn
- where yn is a bool/int representing the actual mute state of the Master strip
- /monitor/gain dB
- where dB is a float ranging from -193 to 6 representing the actual gain of monitor in dB
- /monitor/fader position
- where position is an int ranging from 0 to 1023 representing the fader control position
Track specific operations
For each of the following, ssid is the surface strip ID for the track
Some Surfaces (many Android applets) are not able to deal with more
than one parameter in a command. However, the two parameter commands
below can also be sent as /strip/command/ssid param. Feedback can be
set to match this with the /set_surface/feedback state
command. See
Calculating Feedback and Strip-types Values.
- /strip/name ssid track_name
- where track_name is a string representing the name of the track
(note there is no coresponding command to set the track name)
- /strip/mute ssid mute_st
- where mute_st is a bool/int representing the actual mute state of the track
- /strip/solo ssid solo_st
- where solo_st is a bool/int representing the actual solo state of the track
- /strip/monitor_input ssid monitor_st
- where monitor_st is a bool/int. True/1 meaning the track is force to monitor input
- /strip/monitor_disk ssid monitor_st
- where monitor_st is a bool/int. True/1 meaning the track is force to monitor disk,
where both disk and input are false/0, auto monitoring is used.
- /strip/recenable ssid rec_st
- where rec_st is a bool/int representing the actual rec state of the track
- /strip/record_safe ssid rec_st
- where rec_st is a bool/int representing the actual record safe state of the track
- /strip/gain ssid gain
- where gain is a float ranging from -193 to 6 representing the actual gain of the track in dB.
- /strip/fader ssid position
- where position is an int ranging from 0 to 1023 representing the actual gain of the track in dB.
- /strip/trimdB ssid trim_db
- where trim_db is a float ranging from -20 to 20 representing the actual trim of the track in dB.
- /strip/pan_stereo_position ssid position
- where position is a float ranging from 0 to 1 representing the actual pan position of the track
Menu actions
Every single menu item in Ardour's GUI is accessible via OSC. However,
there is no provision for returning the state of anything set this way.
This is not a bad thing as most menu items either do not have an on/off
state or that state is quite visible. Binding that affect other parameters
that OSC does track will show on those OSC controls. Examples of this
might be track record enable for tracks 1 to 32, play or stop.