So there is already a thread about the nanoKONTROL but it’s a bit old and Ardour has changed a lot since then. I’ll start a new thread to keep this cleaner and less confusing.
I have recently setup Ubuntu Studio 18.04 and started playing with Ardour 5.12. I’m really impressed. This is amazing software.
I decided a control surface was an absolute must and settled on the Korg nanoKONTROL2 as an inexpensive option. It’s quite nice and very much worth the price.
It was extremely easy to setup with Ardour and over all I’m very happy with the entire process.
That being said, however, there is one small issue I’m not able to figure out.
Everything works, however I can’t seem to get the S/M/R lights to stay on. This thing comes from the factory with all the buttons set to momentary. This works the way I want in Ardor (one push on, one push off). If I change the buttons to toggle the lights do indeed stay lit after I’ve pushed them, however this doesn’t work correctly with Ardour. With the buttons set to toggle the second push turns the light off but doesn’t change the setting in ardor, I need to push it a third time and then the light comes back on even though the function is off in Ardour.
I tried adding momentary=no to the midi mapping file, but that had no effect.
This is (sadly, in a way) already fixed in the git repo, but not in any release. We’re a long way from releasing a new version. THe problem originated in an assumption of mine, cited in a comment in the old code:
* (0x40). It is hard to imagine why anyone would make
* a MIDI controller button that sent 0x0 when pressed.
Not sure what I was thinking. Short story: you can’t make this work with the current release. Sorry about that.
And don’t beat yourself up too badly. Shortsighted decisions like that are a part of software development. I try not to count how many times I’ve done similar things.
It’s been a while since I’ve done MIDI, but shouldn’t you be able to control the lights on the control surface in response to what Ardour is doing? That would actually be a better solution because if I click the record button in Ardour with my mouse the surface would update its light to match the change. I’ve got “MIDI control out” connected to the MIDI input for the surface but it doesn’t magically work sadly.
our “Generic MIDI” control surface support doesn’t include the notion of much talk-back to the surface, although there is a feedback option which does send messages back to the surface when the parameters being controlled are modified. There is no way to alter or control those messages, however. They will be a perfect match for what the device would send if it was trying to set the parameter.
For devices like the Push 2, the various FaderPorts, and the Maschine we have dedicated surface support code that understands precisely how to “talk back” to the device to make sure its current state reflects Ardour’s state.
The thing is, if you set the surface in Sonar mode (I haven’t tried this in other modes, so I don’t know if it’s the only one) using Generic MIDI> nanoKONTROL2 settings, nothing will work unless you assign controls manually. Once you’ve done that, S, M and R buttons will stay lit after you push them (playback controls won’t even light up). How is that possible?
There is a difference between if the surface is sending CC events or Note On events. The MIDI standard is that Note events are momentary and that CC events are a setting. That is a CC event sets a parameter to a value. There are three ways (that I know of) that control surfaces send data for a switch:
As a Note where press is Note on with velocity over 64 and release is a note off or note on with a velocity less than 63. - Ardour deals with this just fine toggling from one state to the other. (probably what you want)
As CC event where press gives 127 and release gives 0 - Ardour can’t use this in the current release
As a CC event where only press is sent and the first press send a 127 and the second press sends a 0. Release is not used. Most control surfaces call this toggle mode.
So in Sonar mode, the surface does not send a CC 127 for press and a CC 0 for release, It does something else.
The reality is that MIDI in its original intent was not made for mixer control but people have managed to use it that way very successfully anyway. However, the default standards around how events are used are not always the best for control surfaces and sometimes the default way they are set up is not the right way. That is why most control surfaces allow editing what each switch sends… and why Ardour has expanded into more non standard uses as well in Version 6.*
Paul, I’m assuming you mean that the fix would be in releases made since June 2018. Am I correct? And if so, which “mode” would map the expected behavior for the shipped midi map? The map shipped in 6.5.0 still contains the “Set the main “RECORD”, “loop” and the track “Solo” “Mute” and “Record” button to toggle” comment, but that was present prior to 2018 (see https://github.com/Ardour/ardour/commit/5e7f172f967f775540e9091052a99738e839304e).
Running on 6.5.0 with the buttons set to “toggle” has the lights get out of sync with the actual state in Ardour, as reported by @bechinger.
Indeed, nothing has been done because this is not a bug. Doing what people want requires dedicated code to support the nanoKontrol. It cannot be done with our Generic MIDI support, for reasons that are explained above.