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)
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.
Any help or ideas would be appreciated. Thanks.
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:
<ArdourMIDIBindings version="1.0.0" name="Kurzweil Midiboard Controller Functions">
<Binding channel="1" ctl="11" function="rec-enable"/>
<Binding channel="1" ctl="12" function="transport-start"/>
<Binding channel="1" ctl="13" function="transport-roll"/>
<Binding channel="1" ctl="14" function="transport-stop"/>
Mode: 0 (no-toggle)
Control ID 12
On Down Value: 127 // Seems it needed 127 to be on. Didn’t try other non-zero numbers
On Up Value: 0
Buttons 2, 3, and 4 have the same setting just different control IDs.
Thanks for giving me a forum to work this out, even if just in my head! Appreciate all you guys do.
EDIT: Just realized for some reason the contents of the midi_map file are being tuncated out.
MOD_EDIT: Wrapped your XML in ``` tags for you which defines a code block, which in turn causes it to appear – Seablade
the contents vanish because it’s XML, which uses the same syntax as HTML, so all the < and > vanish … wrap it all in a
You might care to carefully read the manual page: The Ardour Manual
EDIT: Did the same for your post Paul:) Otherwise we never see the PRE tags – Seablade
Do you have auto-return selected in playhead options?
Ardour manual page with playhead-options
Thanks for the reply! I figured it was xml doing that, but was a bit lazy to figure out how to stop it from clearing it.
I read that manual page a hundred times but at some point I guess I started glossing over the ctl-toggle. So I set it up in my midimap as:
Binding channel=“1” ctl-toggle=“13” function=“transport-roll”
Binding channel=“1” ctl-toggle=“11” function=“rec-enable”
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.
EDIT: They are not set, BTW.
CTRL+F search for ‘Auto Return’ (It is near the bottom of the page)
I believe the indicator that page in the manual shows is directly on the editor buttons at the top, not in the menus.
@Seablade… d’oh! Ok, yes, it was set on the GUI. I was looking in the preferences. That explains that, thanks.
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.