Midi control learning

Trying the last git version (and earlier), I wanted to assign my Oxygen 25 control keys to ardour controls.

I made what is needed: conntect midi keyboard on “midi control”, Set General Midi to control in parameters, then press CTRL+Middle Mouse on ardour control.

The popup appears, I press (for example) the “play” button on my m-audio keyboard and the popup disapears. So, I guess Ardour has assigned the control binding.

But when I press the play button on the keyboard… the song doesn’t start. It’s the same for the whole controls I assigned.

Note that:

  • midi console shows midi event when I press "play", "stop", etc... on m-audio oxygen25
  • popups disapear when I press the oxygen 25 button after pressing CTRL+Middle on a control

So, I’m sure that midi events are sent and captured. Any Idea ? or it’s a bug ?

You should use the MIDI Tracer (Windows > MIDI Tracer) to find out what messages the Oxygen sends. It is probably sending something not usable for this purpose (and quite likely something that Ardour can use without any need to set up a binding).

You should use the MIDI Tracer (Windows > MIDI Tracer)

This is what I meant by saying “midi console shows midi event when I press “play”, “stop”, etc… on m-audio oxygen25”. Events are ok, messages are typed “control” with event ids… Whould you like I post them ?

Sure, that would be a good idea, along with some comments on what is sent when you press what button.

Ok this is what I’ve got pressing my controls on my Oxygen25:

Loop (first press gives 7c value)
00:56:58.979152 Controller chn 16 00 7f
Loop again (toggle off so…)
00:56:59.299193 Controller chn 16 00 00

Rewind button
00:57:00.045853 Controller chn 16 72 7f
00:57:00.152486 Controller chn 16 72 00

Forward button
00:57:00.941686 Controller chn 16 73 7f
00:57:01.005838 Controller chn 16 73 00

Stop button
00:57:01.390034 Controller chn 16 74 7f
00:57:01.475004 Controller chn 16 74 00

Play button
00:57:01.731671 Controller chn 16 75 7f
00:57:01.816607 Controller chn 16 75 00

Record button
00:57:02.094203 Controller chn 16 76 7f
00:57:02.158363 Controller chn 16 76 00

Record button has no toggle state

Oh, and I wanted to mention that it might be worth it to reset the device to factory settings (hold + and - when powering on) to make sure the programming for the loop key is correct. But only do this, of course, if you don’t mind to reset all keys to their default programming.

@Quixmoz thanks a lot for your answer. I will try in 5-6 hours (I’m at work for now :wink: ) to connect MMC also. I didn’t read the whole Oxygen manual (shame on me :p) but I realized that I should.

I did some factory reset to be sure, but I will do it again if your solution won’t work.

Thanks again to you (both of you)

Oh and just to precise, therically the Oxygen 49 and 25 are quasi identical.
So It should work as your hardware here.
There are exactly the same control buttons, same number of wheele buttons (8). The only difference is the slider buttons, you’ve got 9, I have only one, and the number of note keys (25 vs 49).

Loop (first press gives 7c value) ===> sorry, I wanted to type “7f” or course (127)

Hi Metal3d,

I have recently been working with the Oxygen 49 (3rd gen) in Ardour (and I am new to Ardour), with pretty good success after some stumbling. I think I can help you out.

If you reprogram (on the Oxygen itself) the transport buttons to send standard MMC messages, they “just work.” The process for doing this is described in the Oxygen manual. Make sure you connect the MIDI output of the controller to both the MIDI control and MMC inputs in Ardour (via Patchage, Qjackctl, Ardour or whatever). However, since there is no MMC command for something like “loop” you can leave the controls on the Oxygen for this button unchanged. But, I think that this is normally sending control 0x71 when pressed, while the output you pasted shows it is sending 0x00. If you make an XML file for the MIDI mapping then you can do something like Binding msg=“bf 71 7f” function=“loop-toggle” to make this key work (see section 19.1 of the FLOSS manual). If you want I can post what I have later; it’s possible I am remembering something wrong here (and I don’t have access to the file right now).

Good luck

I tried but nothing works at this time… I connected both the MIDI control and MMC inputs in Ardour and, as expected, the midi window shows events (it seems that I made a mistake last time, the “loop” button send 7f value on press, there is no toggle state).

I tried to setup buttons by clicking CTRL+Middle, there is a popup showing "operate controller now’. I press button, popup disapears but a new press on this button do nothing…

I guess I have to create an XML file but it’s strongly strange that an Oxygen 49 (that have the same buttons, same brand, same controllers and same events) works and not mine…

And I checked if I had a manual in my Oxygen 25 (3rd gen too), and… no… no manual instead of a poor 2 pages manual for connetion in “Pro tools”…

To be continue…

@Metal3d I think in terms of MIDI they really are identical. I also had problems with the MIDI learn feature, particularly with the buttons (which send one event when pressed, and a second event while depressed). However, for fixing the gain to a slider via the MIDI learn function, for example, I had no problems. Try fixing the master gain to your slider, then move the slider slowly through all values.

Try using this map with the factory defaults (i.e. do not reprogram the transport buttons to send MMC messages). Judging by what you pasted from the MIDI tracer, this should work (this is more or less what I’m using on the Oxy49): http://pastebin.com/2nKX65ys

Also the console utility jack-midi-dump might help you out.

@Quimoz :slight_smile: I just did an XML very closed to yours 10 minutes before reading your answer and I came here to say “it works !”

No MMC connection for me, I only conneted Midi control, the controls work like a charm.

I prefer to leave wheels buttons out of ardour. ZynAddSubFX (for example) can use them to control some effects as the slider button (for volume). The only problem was the controls that works rignt now.

It’s now very confortable.

A big thanks !

And maybe Paul can add it to the git repository (or maybe can I do a pull-request ?)

PS: I will try to use some Android mixer now :stuck_out_tongue: there are some that seems to be nice (on tablet)

Added, but I note that the existing oxygen 8 binding map has many more bindings in it …

@paul right, I really have to check the whol oxygen files to be sure.

Oxygen 8 and 25 are very close, but whe I ask ardour3 to use Oxygen 8 bindings, something goes wrong… The xml file given by Quximoz makes the controls button working. But the knobs are not assigned -> this is not a problem for me, because I’m using it on other synth.

I will check the existing binding for Oxygen8 and I will check what’s wrong with my keyboard.

Anyway: Thanks a lot