I have an old Kurzweil Midiboard that I really like the feel of and its my main controller. I’m trying to setup a couple of the buttons to control the transport in Ardour but not having much luck. I created a Kurzweil midimap file and put it in the “.config/ardour/midi_maps” folder… here are the contents:
<?xml version="1.0" encoding="UTF-8"?>
It does show up on the General Midi list and I can select it. So far, that all seems to be ok (assuming I have the control I think I do in the file).
On my Midiboard, I have one of the buttons set to toggle state that I want to start the transport by pressing the button, and stop it by pressing it again. The parameters for the button are set as:
Mode: 1 (toggle)
Channel: 1
On Down Value: 11 // I’m hoping this will send the start message I defined in the midimap
On Up Value: 12 // again, hoping this will send the stop message
What doesn’t seem right is that I don’t seem to be making a connection to the controller ID, which I’m not really sure of. I’ve read that there are standard Midi numbers, 35/36/37 for these transport functions, but can’t figure out a way to map it. I can also see the messages coming in on the Midi View window and that output is:
ctrl 1 00 0B // this is the on message
ctrl 1 00 0C // the off message
The 00 in the middle bothers me and seems to be incomplete but I don’t seem to have control over those bits on my controller. I do not believe there is a way for the Midiboard to map a sysex message to those button functions either, just on setup changes.
I’m almost positive I had this working a few years ago in the Ardour 5 series, but I tend to get busy with other stuff and it takes a while before I get back into it. I’ve also tried to use your Midi Learn function to do the mapping, but I can’t tie it to the toggle function I want, and even trying to use two buttons hasn’t had much success. It seems to get confused by what button is doing what.
Ok, as usual, as soon as I give up I figure it out. Couple things…
The second parameter in the Midiboard button list was the controller ID, not the channel.
I needed to add “1” to the Midiboard number to match the number in the midi map file.
And unfortunately, I can’t set the buttons to toggle functionality, just turn it on, and another button is needed to turn it off, if desired.
Once I did that, it started working. There may be one bug in Ardour though. The function ‘transport-stop’ does not just stop the rolling, it rewinds back to the last cursor marker. Maybe that’s intended, but I would prefer it to just stop where I was and not rewind, and have a different transport command to rewind. But it seems to be working now. For reference, here is the final configuration:
But then Ardour doesn’t respond at all to it. Neither record-enable or transport-roll will trigger it’s function. The record I can somewhat understand since there is an actual rec-disable command and not sure what it is supposed to do on the release function, unless it means it will automatically act as if the same button was clicked on again, which would stop recording… But transport-roll takes another button to actually stop moving the playhead, so these two functions both act differently in the GUI.
Is there another function I should add to the statement for the release? Or are you saying that Ardour is smart enough to undo the function that was selected?
Either way, setting it to ctl-toggle breaks the function. Willing to help debug this if it is inside ardour, or hopefully just on my side.
Chris, I am not seeing a specific setting to move the playhead back when stopping the roll… which I don’t seem to able to do directly. The setting I see about autorewinding the head relate to FF/Rewind operations. Am I missing something? I’m in v6.9 and looking at the transport, transport-chase and transport-generate menus.