Tip: Manually Programming Transport Buttons M-Audio Oxygen 25

Author
Beepster
Max Output Level: 0 dBFS
  • Total Posts : 17933
  • Joined: 2012/05/11 19:11:24
  • Status: offline
2015/01/05 16:33:27 (permalink)

Tip: Manually Programming Transport Buttons M-Audio Oxygen 25

=============================================================================

Edit: This is the correct procedure to fix double triggering caused by the Transport buttons on the M-Audio Oxygen controller series. I had originally posted something that did work but was flawed in many ways as I soon learned so this after a few days of very productive tinkering and learning here is a MUCH better way to fix the problem. This does NOT need to be done in Sonar as far as I can tell (at least not in X1) because Sonar seems to read the default button signals correctly (I just tested it with X1 and everything works as it should when using the Cakewalk Generic Control Surface setting and mapping the buttons normally using the Learn function). So if you use Sonar with the Oxygen this likely does not affect you. It will show you how to change the internal settings of the Oxygen controllers if you need to. I only stumbled on this issue because I'm using another DAW on my laptop for screwing around with (Sonar chokes out this POS system).
 
What this fixes:

The problem is that in this specific DAW, and I'm assuming others,  when using the Transport buttons it triggers the paramater twice causing erratic and unwanted behavior. This is a well documented annoyance based on my searches for solutions and the solutions that ARE offered tend to cause even more annoying problems. Here is a list of what each button's issues are.

Record: Record will start but you have to hold down the button or recording will stop. This is because a second trigger is sent when you release the button thus stopping recording. Very annoying.

Play: This is very noticeable on quick button hits but again a double trigger occurs making playback start twice. If you hold the Play button for a few seconds then release it then playback starts over again. Starting playback twice very quickly can cause crashes in my experience.

Stop: This doesn't seem to cause problems because once you are stopped you are stopped.

FFW: The Now Time jumps ahead twice instead of just once. So once on the initial press of the button and then again upon release.

RRW: Same problem as the FFW button but in reverse.

Loop: I haven't tried this button with looping (I map that button to other stuff) but I'd imagine the results are undesirable and for the stuff I map it to it is again a problem.

So if you are getting these problems the fix is to manually program each button from within the Oxygen so that it is not sending the same instructions twice. I'm posting this here mostly as a reminder for myself about the procedure but since it is a common device and I saw many complaints about this on other forums (with no clear instructions as to the fix) I figure it would be useful to have it online for anyone searching for a solution.

Here are the step by step instructions so you can simply fix it and then below are some details about what exactly is happening and some other stuff that might be useful to anyone using this series of controllers. By the way mine is the older Oxygen 25 without the extra pads. I don't know if the newer models have the same issue:

I'll start with the Record button because that is the most annoying one of the bunch. When I type Button I mean the rubber buttons on case (we will only be using the Advanced button and whatever Transport button we are reprogramming). When I type Key I mean the keyboard keys which all have a descriptive label screenprinted above them (the larger Oxygen controllers like the 49 have some keys without a label but they do still have all the same labels as the 25). For example "press the Key labelled ENTER".

1) With the controller turned on press the "Record" button then press the "Advanced" button. This is how you select a button for editing. In the LED display you should see the number 1.4.6. (the decimals/dots in between the numbers let's you know that the button is in editing mode. If you do not see those dots try again.)

2) Press the Key labelled CTRL ASSGN (the first key on the left). The number 1.4.6. should still be displayed.

3) Move to the Keys labelled with numbers (the keys on the far right of the keyboard) and press the keys labelled "1", "1" and "8". You should now see the LED display showing 1.1.8.

4) Press the Key labelled Enter (the very last key on the right of the keyboard). The dots between the numbers should go away.

And that's it. Now the Record button will behave normally (if you were having the problems I described earlier).

It should be noted that if you have already set up these controller buttons with your DAW (whether manually or using MIDI learn) you may have to set them up again with the newly programmed buttons.

To program the rest of the buttons the procedure is exactly the same EXCEPT you obviously select the desired button before pressing the Advanced button to enter editing mode. Not so obviously you do NOT input the same number as you did for the Record button otherwise they would all be sending the same controller message (that 118 is the CC#) and that will overide any previous MIDI learn actions in the DAW for that CC.

The correct numbers to input for each button are, from left to right:

Loop Button         = 113
Rewind Button       = 114
Fast Forward Button = 115
Stop Button         = 116
Play Button         = 117
Record Button       = 118
 
So use the same procedure but for each button use the corresponding number from the list above. As an example here is how you would program the Play button:

1) With the controller turned on press the "Play" button then press the "Advanced" button. This is how you select a button for editing. In the LED display you should see the number 1.4.6. (the decimals/dots in between the numbers let's you know that the button is in editing mode. If you do not see those dots try again.)

2) Press the Key labelled CTRL ASSGN (the first key on the left). The number 1.4.6. should still be displayed.

3) Move to the Keys labelled with numbers (the keys on the far right of the keyboard) and press the keys labelled "1", "1" and "7". You should now see the LED display showing 1.1.7.

4) Press the Key labelled Enter (the very last key on the right of the keyboard). The dots between the numbers should go away.

As you can see I just copy/pasted the same instructions and replace "Record" with "Play" and 118 with 117. Simple.
 

If you make a mistake while in editing mode you can safely cancel anything you have done by simply pressing the "Advanced" button again and all changes will be discarded (on the larger Oxygen models there is a Key labelled "Cancel" that will do the same thing). This ONLY cancels the currently active edits. Everything else programmed on the controller is safe.


*WARNING!! The following will wipe out any user created presets you may have programmed into the controller!!

If you program this in but you do not like the results you can restore the Oxygen to its factory defaults by turning off the device, pressing and holding the "+" and "-" buttons (the plus and minus buttons) then turning the Oxygen back on while continuing to hold down theose buttons for a few seconds. THIS WILL ERASE ALL USER CREATED PRESETS!!

If you DO have user presets programmed into the Oxygen and do not want to do a factory default restore you can reverse the edits to the Transport buttons by doing the following for all the buttons you changed.

1) With the controller turned on press the transport button you want to set back to it's default state then press the "Advanced" button. This will select the button for editing. For each button you will see the number you changed it to (for example when selected the Record button will now show 1.1.8.).

2) Press the Key labelled CTRL ASSGN (the first key on the left). The number of the currently selected button should still be displayed (for example 1.1.8. for the Record button)

3) Move to the Keys labelled with numbers (the keys on the far right of the keyboard) and press the keys labelled "1", "4" and "6". You should now see the LED display showing 1.4.6.

4) Press the Key labelled Enter (the very last key on the right of the keyboard). The dots between the numbers should go away.


Do this for all the Transport buttons you changed (use the number 1.4.6. for each one) and the transport buttons will be set up exactly as they were before you began editing them. No need to use the factory default function at all.

===================================================================================================================

The short explanation of what the heck you just did:


The short story is you just stripped out an "Assignable MIDI CC#" that was telling the Oxygen controller's transport buttons to behave as an On/Off switch which for some reason actually sends two "On" signals to the DAW I was using. That was the 146 number we kept changing. By doing that we were simply removing that onboard instruction leaving only the actual standard MIDI controller message sent by each button. That second number is the one sent to the DAW to trigger whatever function you have the button mapped to. For example the CC# being sent to the DAW by the Record button is CC# 118 by default (it can be changed though). Then when you use MIDI learn to map the Record function to the Record button on the controller it will assign it to CC# 118. For the Play button it is CC# 117 by default. That is why, even though we could have used different CC#s when programming the buttons I stuck with those because they were already being used by the controller to transmit to the DAW.

The reasons why the 146 was showing up where it was is much more complicated and frankly is a very weird design by M-Audio. It's confusing as heck and honestly I want to type up a thorugh explanation today but I have other stuff to do. Just know you didn't break anything or use up extra CC#s. Nothing has changed except how the buttons on the Oxygen behave internally.

In the meantime here is a specific chart showing ALL the default CC#s for all the controls on the M-Audio Oxygen 25.

From left to right are

a) The control's "name" as labelled on the device. This has nothing to do with CC#s or anything. It is just a number assigned by M-Audio to that control. It is just a descriptive name.

b) What type of control it is (knob, fader, wheel, button).

C) The default CC# being transmitted by that control. This is what will show up in your DAW.

d) The General MIDI parameter that control's default CC# will manipulate on a device or soft synth set up to receive General MIDI messages.



C1 (Knob 1) = CC# 74 (Cut Off Frequency)
C2 (Knob 2) = CC# 71 (Resonance)
C3 (Knob 3) = CC# 91 (Reverb Depth)
C4 (Knob 4) = CC# 93 (Chorus Depth)
C5 (Knob 5) = CC# 73 (Attack Time)
C6 (Knob 6) = CC# 72 (Release Time)
C7 (Knob 7) = CC# 5  (Porta Time)
C8 (Knob 8) = CC# 84 (Portamento Control)

C9 (Fader)  = CC# 7  (Channel Volume)

*Remember that the Transport buttons use two CC#s by default. They are all set to CC# 146 to turn them all into On/Off buttons and to the Standard CC# that is transmitted to the DAW or device (which is what is listed). You will see that for the parameter being controlled they simply say "Controller" then the CC#. That is because these numbers are not assigned to anything specific in General MIDI making them good candidates for extra controls like transport buttons. Not sure if these controllers are usually used for transport on other devices.

C10 (Loop Button)         = CC# 113 (Controller 113)
C11 (Rewind Button)       = CC# 114 (Controller 114)
C12 (Fast Forward Button) = CC# 115 (Controller 115)
C13 (Stop Button)         = CC# 116 (Controller 116)
C14 (Play Button)         = CC# 117 (Controller 117)
C15 (Record Button)       = CC# 118 (Controller 118)

and finally the Mod and Pitch wheels...

C16 (Pitch Wheel)      = CC# 144 (Pitch Bend)
C17 (Modulation Wheel) = CC# 01  (Modulation)
 
The "Track </>" buttons also transmit CC# data but cannot be edited at ALL within the Oxygen (so they cannot be reassigned
to other CC#s or have their parameter/range settings changed onboard the device). You can however assign them to whatever
you want in your DAW using MIDI learn but usually they are mapped to cycle through the tracks in a project. That way if you
have Track #3 in your project "In Focus" pressing the "<" button would move you to track #2 and pressing the ">" button
would move you to track #4. Again you have to have these buttons mapped in your DAW for this to happen.

The screwy thing is the Oxygen manual is saying that these buttons transmit on CC# 14 for the left "<" track button and CC#
15 for the right ">" track button. However when I map these to the DAW it is telling it is recieving CC# 110 for the left
"<" track button and CC# 111 for the right ">" track button. That's a little whack so I don't know... maybe there is a typo
in the manual or there has been a driver update that changed how the device transmits the messages or I'm just having a
massive brainfart. So I have listed both.

Here are the CC#s and what their designated names are in General MIDI (just generic controller slots like the Transport
button CC#s). Also M-Audio did not give their own name to these controls thus the absence of descriptive C number so I just
put N/A for "Not Applicable".

What it says in the manual:

N/A (Track "<" Button) = CC# 14 (Controller 14)
N/A (Track ">" Button) = CC# 15 (Controller 15)

What it says is being received by the DAW:

N/A (Track "<" Button) = CC# 110 (Controller 110)
N/A (Track ">" Button) = CC# 111 (Controller 111)


None of the other buttons (Transpose/Octave, Advanced, Mute, Select, +/-) seem to transmit any CC# information (I tried).
So as far as I know the above list contains all of the possible MIDI controls on the Oxygen 25. The newer model and the larger
models have extra controls but I don't have those so I cannot make a definitive list for those devices.


 
======================================================================


I'll try to post some more details about programming the Oxygen controllers when I have time.


post edited by Beepster - 2015/01/07 15:14:43
#1

9 Replies Related Threads

    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/05 16:47:30 (permalink)
    EDIT: Assume the following is incorrect as well until I experiment more and correct it. Sorry.
     
    BTW... and I haven't tried this yet but it should work... I'm assuming if instead of entering "127" for the DATA 2 (or perhaps DATA 3) step of the procedure you could enter "0" (which is an "off" message") to set it back to be a Punch Record button which is obviously useful if you are tracking someone else. It's pretty much useless if you are recording yourself though which is why I wanted to change it.
    post edited by Beepster - 2015/01/05 17:25:51
    #2
    michaelhanson
    Max Output Level: -40 dBFS
    • Total Posts : 3501
    • Joined: 2008/10/31 15:19:56
    • Location: Mesquite, Texas
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/05 21:32:57 (permalink)
    Wow, you are getting into stuff that is way beyond anything that I have tried to program on my Oxygen 49. I usually just choose the Oxygen 49 controller preset and then use ACT to have the unit learn each function.

    My biggest gripe about the whole situation, and the main reason that I don't use the Oxygen 49 as a controller much, is that I will spend hours getting it all set up, then someone in the family will come along and unplug it, so that they can plug in their iPhone. Once the unit is unplugged from the USB port, it seems to wipe out all of my time spent programming the controller. I got so peeved the last time they did this, I have not set it up again.

    Mike

    https://soundcloud.com/michaeljhanson
    https://www.facebook.com/michaeljhanson.music
    iTunes:
    https://itunes.apple.com/us/album/scandalous-grace/id1180730765
     
    Platinum Lifetime, Focusrite 8i6 & 2i4, Gibson LP, ES335, Fender Strat, 4003 Rickenbacker
    BMI
    #3
    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/05 22:04:41 (permalink)
    Hi, Mike. Unfortunately the DAW I'm tinkering with doesn't seem to have a pre programmed map for the Oxygen but even if it did I'd likely still have the problem because of the multiple messages being sent from that single button.
     
    However, in regards to your issue of losing your settings, you can save a bunch of program scenes to the onboard memory. At least I think that is what the manual is saying and I can certainly do that with my other controller (padKontrol). That way it would take a factory default reset to wipe it out. Now I'm not 100% sure about all that but if I take another stab at this tomorrow that was the next thing I was going to try after I figure out some of the weirdness I encoutnered before quitting for the day. The instructions to do this are in the manual but it's a bit confusing so I'll post another step by step if I can get it to work.
     
    Thing is though I turned the controller off and even rebooted a couple times to see if it would retain my settings without saving and it did but that may be because I was working on the first scene bank. IDK... it's a weird peice of rig with weird instructions. I have no idea why using the same velocity number on a completely different CC# would overide my previous work. I may have just missed a step when trying to tweak those other CC#'s or something because I was getting a little brainfried near the end of the day. I mean 15 steps to accomplish such a seemingly simple task is pretty ridiculous. lol
     
    Cheers.
    #4
    michaelhanson
    Max Output Level: -40 dBFS
    • Total Posts : 3501
    • Joined: 2008/10/31 15:19:56
    • Location: Mesquite, Texas
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/06 10:09:02 (permalink)
    Beep,
     
    Are you setting up the controller for Sonar?  If so, the Sonar X3 Reference Guide, starting on page 1326 will pretty much walk you through this proceedure, including how to locate the control surface device in Preferences/ Midi.  When I choose the Oxygen 49 for the list of available controller set ups, it is pretty close to what rotors, faders and buttons available on the Oxy49.  You then turn on ACT and as you move the rotor/fader/button, ACT locates the action and remembers it.  I am not at my DAW, but I know there is an option there for the Oxygen 25, I have scrolled past it to get to mine many times.

    Mike

    https://soundcloud.com/michaeljhanson
    https://www.facebook.com/michaeljhanson.music
    iTunes:
    https://itunes.apple.com/us/album/scandalous-grace/id1180730765
     
    Platinum Lifetime, Focusrite 8i6 & 2i4, Gibson LP, ES335, Fender Strat, 4003 Rickenbacker
    BMI
    #5
    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/06 10:58:31 (permalink)
    I'm actually playing around with this using another DAW on my laptop (Sonar is too much for the system to handle). However I'm doing a combo of programming the DAW to accept certain message for certain actions AND programming the controller because it seems to be sending extra messages. So essentially I'm trying to cram my tiny little noggin' with a pile of new info (I'm teaching myself how to make this DAW work in general too and it works very diferently than Sonar). This is kind of an educational adventure though so I can finally get a good handle on the finer points of MIDI. I want to be able to know all the possible ways to make stuff happen and it bugs me that I don't understand how my equipment works. I did a similar self imposed crash course with my padKontrol and knowing how to get around it a little better has been helpful (but I'm going to go back to it because I barely scratched the surface of what that crazy thing can do). Yesterday I was more just trying to get these transport controls mapped for convenience but now that it's buggering up I'm peeved so I'm going to focus on really ripping the thing apart. There are a ton of advanced operation entries at the end of the manual plus some reference material on MIDI lingo and procedures. I just found another way to do what I'm attempting using MMC and there is a bunch of other interesting stuff I want to try. It's confusing as all heck but I paid for this darned thing so I'm gonna get my bleepin' money's worth out of it. lulz...
     
    I'll be back to edit my OP once I figure things out a little better. I'm mixing up what the 127 means in this procedure. It seems to be either a velocity value or a message number or some other weird thing. Once I nail that down I think I'll have it.
     
    Cheers.
    #6
    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/06 11:29:23 (permalink)
    Ah... I think I see where my problem was. I thought when I was entering 127 after the Ctrl Assign step I was setting a value but that is actually a CC#. It is only after the DATA 2 and DATA 3 steps where the value being sent for press and release is being programmed... in which case I think 127 is an actual value.
     
    Another thing that was screwing me up was the way the buttons are labelled on the controller. They are called C1-C17. I thought those were the actual CC#'s but they seem to have nothing to do with MIDI messages. They are simply what M-Audio calls them for the purposes of selecting the knob/button/fader for programming.
     
    Yeesh. Now to test out my hypothesis.
    #7
    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/06 11:45:51 (permalink)
    Oh and, Mike... I misread your post about you losing your controller settings. I thought they were being lost from the controller but I think you meant the settings in Sonar were being dropped. I'm pretty sure after you get your surface set up how you like in Sonar you can name and save those settings as a controller profile (if that is the correct terminology). Then your custom profile is added to the list of controller options in the ACT thingie. I can't remember the exact procedure but I'm pretty sure Karl covers it in the SWA X2/X3 vids. I can rewatch it (it's pretty short) and post the procedure. I figured that if you hadn't saved it though it would be wiped out as soon as you close Sonar so that's a little weird.
    #8
    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/06 16:58:15 (permalink)
    SUCCESS! I finally figured this stupid bugger out and have all the transport buttons doing EXACTLY what I want them to. The problem was the buttons were assigned to TWO CC#'s each. The first one apparently acts as a "Parameter" setting and in this case was turning them into some kind of "Toggle/Trigger" type thing that was sending one message when pressed and a second one when released (as I described above). The second CC# is the one that is registered to the DAW making it unique from the other buttons and on the controller is named really poorly as DATA1 (while DATA 2 and 3 control paramater values... it's whack). Add to that the dumb names they gave all the controls and it was just a confusing mess for someone who has a hard enough time understanding MIDI as it is.
     
    Anyway... I figured out how to strip out the CC# from all the buttons that were making them "toggle" and make sure they were only using their unique general MIDI numbers and it is working beautifully.
     
    The instructions in my OP will work as a simple solution to the Record button problem but there is a MUCH better way to do this and it applies to all buttons. It takes a bit of explainin' though. Also I hunted through everything and typed up a definitive list of all the control's default CC values and the GM parameters they affect on GM synths. With all the charts and weirdness in that manual I figured they would have provided something like that bu alas no. Still it is a very helpful manual and even though this was a freaking nightmare I think I have a much better handle on MIDI stuff now. Still not great but whatevs.
     
    It's late in the day so I'll type something proper up and post it tomorrow.
     
    Please excuse my idiotic rambling. My intentions were good.
    #9
    Beepster
    Max Output Level: 0 dBFS
    • Total Posts : 17933
    • Joined: 2012/05/11 19:11:24
    • Status: offline
    Re: Tip: Programming Transport Record Button M-Audio Oxygen 25 2015/01/07 13:46:11 (permalink)
    My OP is now updated with the ACTUAL fix to the problem. However after some experimentation with mapping the Transport buttons to X1 using the Generic Control Surface thingie it does not seem to be necessary for Sonar users. Everything worked fine using the factory defaults of the Oxygen 25.
     
    However I tried doing the changes anyway and then tried again using it with Sonar and there was no difference so these settings, as far as I can tell, will not affect anything negatively in Sonar if you apply them (so if you are using Sonar and the "other" DAW like I am then you can set it like this and both will work).
     
    I also provided a little more info on the controller but ran out of steam before typing up a bunch of intensive programming stuff. I'll update this with a more intensive description of programming this little bugger another day. I've got other stuff to do right now though.
     
     
    Cheers, and sorry or the false start on this thread. Forced me to really learn my controller though.
    #10
    Jump to:
    © 2018 APG vNext Commercial Version 5.1