Open Live Mixing System - Don't buy a mixer: do it instead

Thank @seablade for your feedback. I appreciate

You are absolutely right about the cost-effectiveness and the challenges of sustaining a project like this.

At this point, OLMS is less of a serious business venture and more of a passion project and an open architecture experiment. The initial business idea largely dissolved when the extreme difficulty of achieving genuinely professional, ultra-low-latency / zero x-run performance was fully realized.

However, the architecture remains fascinating, and we can’t predict what new low-level APIs or hardware tools might emerge in the future that could pair perfectly with this software core.

So, why not keep building it? I’ll see where the journey takes me.

Cheers!
Francesco

It is already possible in the current release.

It’s way to early too look into tech details; but if you want, there is…

Example Code

You can do this form the track’s point of view:

track = Session:route_by_name("Track 1") -- get Track 1
assert (track) -- ensure that the track exists
track:input():disconnect_all (nil) -- disconnect all its input ports 
track:input():audio(0):connect ("system:capture_10") -- connect first (here, 0 = left) input to the sound-card's 10th audio source.

or like JACK connect/disconnect, globally on engine level. e.g.

audioengine = Session:engine()
_, t = audioengine:get_ports (ARDOUR.DataType("AUDIO"), ARDOUR.PortList()) -- get a list of al Audio ports
for p in t[2]:iter() do  -- iterate over all  audio ports
  print (p:name())
  if p:name () == "Track 1/audio_in 1" then
     p:connect  ("system:capture_10")
  end
end

To test, you can urn both in Ardour Menu > Window > Scripting

PS. Loading partial state is somewhere on the ToDo list.
Ardour v9.0 includes a feature to set plugin/processor state, leaving everything else as-is.

2 Likes