thetzim
(thetzim)
June 27, 2026, 5:53pm
#1
Hi,
I’m looking to use Ardour together with a multi-channel soundcard to replace my aging Yamaha 01V.
I need a way to recall mixing presets automatically from external control sources such as OSC or MIDI Control Change messages.
I’ve looked into Mixer Scenes, and they seem to match what I need for storing mix snapshots. However, I have a few questions:
The number of available scenes (8–12 in the UI) seems too limited for a full live show.
I’m not sure how to trigger scene recall from external sources like MIDI or OSC (or possibly a WebSocket API, if one exists).
Could someone point me in the right direction regarding:
whether Mixer Scenes can be addressed beyond the UI limit
and how they can be triggered externally (MIDI/OSC or otherwise)?
Thanks in advance for any advice.
x42
(Robin Gareus)
June 27, 2026, 11:46pm
#2
Under the hood there is no limit (well, 2^64). Scenes > 12 can currently be triggered via Lua scripting or select ctrl surfaces only.
OSC allows the following messages:
/store_mixer_scene i
/recall_mixer_scene i
e.g. on Unix Terminal, one can run
oscsend osc.udp://localhost:3819 /store_mixer_scene i 12345
oscsend osc.udp://localhost:3819 /recall_mixer_scene i 12345
thetzim
(thetzim)
June 28, 2026, 8:16am
#3
Perfect ! That I did not find in the documentation .
As our show controller can send arbitrary osc messages, it’s what we need.
However, a small lua script allowing to store (and recall) scenes directly from would be useful. Any idea were to start ?
x42
(Robin Gareus)
June 28, 2026, 12:00pm
#4
Ardour comes with a session script (Menu > Edit > Lua Scripts > Script Manager ) to recall scenes as you roll through markers on the timeline. That may also serve as example:
ardour {
["type"] = "session",
name = "Mixer Scene Sequencer",
license = "MIT",
author = "John Devlin, Robin Gareus",
description = [[Recall a Mixer Scene when the playhead passes over a Marker named 'MS <number>' where <number> indicates the scene to recall.]]
}
function factory ()
local MIXER_SCENE_MARKER_PREFIX = "MS "
return function (n_samples)
if (not Session:transport_rolling()) then
-- not rolling, nothing to do.
return
end
local pos = Session:transport_sample() -- current playhead position
local loc = Session:locations() -- all marker locations
This file has been truncated. show original
As for general API, search for “mixer_scene” in the reference manual: The Ardour Manual - Lua Bindings Class Reference
I hope that helps to get you started and don’t hesitate to ask if you need more information.