Controlling Ardour

@jean-emmanuel First thing first.Thank you so much for this amazing project as well as your efforts and attention to it!
I'm interested in adding some customizations for my particular needs to your Ardour control example. Perhaps the need is more common than I expect. Anyway, our worship leader projects more when he sings than when he talks or prays. I have two scenarios in mind to gain(no pun intended) a consistent volume change.
Ideally, I'd like to mute my EFX channel and send his channel a volume change in one button, as well as reverse it in another button or a second tap of the same button based on a flag variable. Barring that scenario, I'd duplicate his channel and set that at his speech volume. With that setup, I'd like to mute his vocal channel and unmute for speech, as well as reverse that operation. I'm writing you to get ideas and identifiers within your example I can use. Any suggestions or advice are welcome. Again thank you!

Hi ! Sorry for the late reply. Since you are using the ardour-control project I'd recommend adding a container in the main_panel to store your custom buttons. What you describe seems easily doable with a single button widget in toggle mode, all you need is to send two messages whenever it's value changes using its onValue script:

if (value === 1) { // assuming on property is set to 1
  send('/strip/mute', 1, 1) // mute strip 1
  send('/strip/mute', 2, 0) // unmute strip 2
} else {
  send('/strip/mute', 1, 0) // unmute strip 1
  send('/strip/mute', 2, 1) // mute strip 2

This will work only if the vocal and speech channels are in the current strip bank (here in positions 1 and 2) and this may not be ideal if you're working with a large number of tracks.

As an alternative you could create two mixer scenes (bottom left part of ardour's mixer panel) and recall them depending on the situation. Note that mixer scenes affect more than just the mute states and this may not fit your use case.

if (value === 1) {
  send('/access_action', 'Mixer/recall-mixer-scene-1')
} else {
  send('/access_action', 'Mixer/recall-mixer-scene-2')

Related docs:

Thank you for your efforts. I'm a self taught programmer and tutored the subject for a few years. OSC is, of course, s new one on me. I thanks you for giving me a place to start. Again, beautiful work on this project!