After setting up a MIDI map, all the faders, buttons, and knobs are working perfectly. However, the LEDs on the buttons only blink when pressed. I’d like the LEDs to reflect the actual status — for example, showing lit indicators for solo/mute states, and having the start/stop/loop buttons highlighted when active. Is this possible?
Generally speaking, you cannot control the state of a device with a generic MIDI binding map, it requires dedicated code control (a “control surface module”).
The one exception is a device that can be correctly controlled by simply sending it back what it sends us. In the early 2000s there were quite a few of these. Today, there are very few.
Thank you! Just to clarify: is creating a new control surface module a complicated task? Is it well-documented?
As a workaround in my case, I was thinking of setting the channel buttons on my controller to toggle mode using the WORLDE editing tool. It doesn’t work perfectly in WINE, but I have a virtual Windows setup.
P.S. Are the MR’s with the new MIDI maps still welcomed?
It’s not documented any more or less than any of our other code. There are a dozen or so existing control surface modules, and we generally start a new by copying one of the existing ones that is similar to the new device.
Because Ardour is open source, we don’t have some add-on system to support control surfaces - it’s done directly in C++ because the source code is all available.
Well, in some cases, it is possible but I don’t think you would like the “solution” I came up with, it’s quite tailored to my needs and I wouldn’t do this with more complicated controllers. Also note that my controller is meant to drive clip launching in Bitwig, not Ardour, thanks to an extension script developed by Jürgen Mossgraber (drivenbymoss extensions) called “Generic Flexi”.
Bitwig offers a java based API for developing extensions allowing DAW control from say external devices, and the generic flexi extension makes use of this API by exposing a rather user friendly configuration interface where you can map incoming MIDI messages to Bitwig’s functions. One of the thing the extension script offers is to send back the incoming MIDI message to the controller. But what if the controller does not understand such incoming message because its incoming MIDI message mapping follows a specific manufacturer implementation ?
That’s where you can add a midi router in between (I use the midi-router-client app which has linux support) and configure some routes and message translation for these MIDI messages that are echoed back to the controller. My controller is the Morningstar MC8 Pro which I use to control the clip launching in Bitwig from my foot, and in some situations, I want visual indications on the controller when I do something in the clip launcher with say the mouse or another controller in parallel (the MC8 Pro allows me to play an instrument and use my feet to control the clip launching but when I am not playing an instrument, I prefer using a much more refined controller like an APC40). So is this middleman rerouting and translating messages to the controller worth it ? In my case yes because I don’t need much visual feedback on the controller itself. But for complex controllers, I would go another route and probably follow Paul’s advice.