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: (added in Ardour 5.5)
/strip/list | Ask for a list of strips |
---|---|
/strip/sends ssid | Asks for a list of sends on the strip ssid |
/strip/receives ssid | Asks for a list of tracks that have sends to the strip ssid points to |
/strip/plugin/list ssid | Asks for a list of plug-ins for strip ssid. |
/strip/plugin/descriptor ssid piid | Asks for a list of descriptors for plug-in piid on strip ssid |
/set_surface | Ask for the current surface setting. Reply is in the same form as setting the surface would be. |
/surface/list | Print a list of known surfaces and Link Sets to the log window. |
/strip/list
asks Ardour for a list of strips that the
current session has. Ardour replies with a message for each
strip with the following information:
end_route_list
The /set_surface
should be set before this is called. That way
The right set of strips will be sent in return (though the default is good
for most uses) and feedback will start correctly.
If the surface is using /strip/list
, the surface needs to know
if the strips have changed. This would be true if a strip gets moved, created or
deleted. When this happens Ardour sends /strip/list
to the surfaces
that have previously requested a /strip/list
. This lets the
surface know that its list of strips is no longer valid.
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 responsibility to deal with this.
/strip/sends ssid
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:
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.
/strip/receives ssid
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 connected to this
bus:
/strip/plugin/list ssid
will return a list of
plug-ins that strip ssid has. The reply will contain the following
information:
/strip/plugin/descriptor ssid piid
will
return the plug-in parameters for ppid plug-in on the ssid strip. The
reply will be sent as a number of messages, one for each parameter.
Each message will contain the following information:
After all the parameters have been sent this way, one final message"
/strip/plugin/descriptor_end
is sent with these parameters:
The flag bitset above has been defined as (from lsb):
While this seems complex, it is really not that bad. Minimum, maximum and value will in most cases give you all you need. For simpler access to plug-ins, the /select/plugin/ set of commands will handle most needs.
Ardour can work with more than one OSC control surface at a time.
Sometimes it is useful to know the information stored about all
surfaces. Sending /surface/list
from any surface or selecting:
Print surface information to Log window from
the Debug dropdown in the OSC setup dialog,
will list all the information Ardour uses to calculate the feedback
it sends. The Log window can be opened from the menu with
Window > Log.
This would be useful information to include with any OSC
related Bug report. The output is printed in this format: