MIDI-OX User Forum (http://www.midiox.com/cgi-bin/yabb/YaBB.pl)
MIDI-OX >> Mapping Questions >> Remote DAW controller
(Message started by: tgorle on Apr 13th, 2008, 10:23pm)

Title: Remote DAW controller
Post by tgorle on Apr 13th, 2008, 10:23pm
I want to use my Behringer DDX3216 digital mixer as a generic remote control for Nuendo 3.2 and Cubase 4.

I've installed MIDI-OX, MidiYoke, VSThost, and a couple different Mackie Control emulators.  

What is the proper method of mapping the midi/sysex data from the DDX3216 so I can assign/translate it into something that Nuendo will recognize?  

The ultimate solution would be creating an XML file and being done with it.
Short of that, it appears I'll need the Yoke and an MCU emulator running in the background all the time.

I can load "major name" device profiles in Nuendo and get random control reactions from moving knobs and faders on the DDX, so I know this is just a matter of sorting through the data and making the right assignments.

Any help or advice on procedure would be appreciated.
Thanks.

Title: Re: Remote DAW controller
Post by tgorle on Apr 17th, 2008, 1:48am
I'm making better progess with an XML script than with any MCU emulator so far.... not too different from old HTML.

My crash course in MIDI is off and running...  I'm having one particular problem with getting the MUTE buttons assigned.
The problem seems to be that the code is backwards from the other MIDI data in terms of "data1" and "data2", and this MUTE function needs two codes for On to OFF.  
Compare these and let me know how I might alter my XML to make it work.

Here's a chunk of typical MIDI from a fader or vPOT:

[ 10  --    176     1   127    1  ---  CC: Breath ]

Here's the XML script that works:

<ctrl><name>Fader 34</name><stat>176</stat><chan>0</chan><addr>34</addr><max>127</max><flags>3</flags></ctrl>

The mixer channels step from 1-61, and data 1 is the range from 0-127... easy enough...

But, here's the DDX3216 Mute MIDI for mixer channel 1:

[ 10  --  176    104    1    1   ---  Control Change ]  (on)
[ 10  --  176    105    1    1   ---  Control Change ]  (off)

Now, the "typical fader mixer channel" (data1) is 104=ON; 105=OFF; and the "data2" is where the mixer channel MUTE is assigned.


Here's the XML I tried for a MUTE ON mixer channel 1
("chan" in XML is midi channel; the mixer channel ID for the MUTE function is in the "max" value bracket):

<ctrl><name>Mute</name><stat>176</stat><chan>0</chan><addr>104</addr><max>1</max><flags>3</flags></ctrl>

Here's the code for MUTE OFF:

<ctrl><name>Mute</name><stat>176</stat><chan>0</chan><addr>105</addr><max>1</max><flags>3</flags></ctrl>

I need to hit the hardware MUTE button twice for the software to make one change, so every other click my hardware shows MUTE ON while the software is OFF.
Another drag is that every other mute button on the mixer will only trigger the first mute in the software mixer with this XML.

Ironically, I can assign a fader or vPot to the mute function just fine...

Wizards, tell me what will fix this XML for the buttons???

Thanks.


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

I've got this Behringer DDX3216 doing 32 flying faders and pans already, as well as lots of command parameter access in Nuendo... but no button mutes...  

The SOLO function is SysEX only, and that's another mystery to solve conversion...

It only takes a 30K XML file imported into Nuendo to get numerous combinations of templates banked for access to different mixer setups and software commands as a Generic Remote.  Pretty cool for a mixer that just happens to have controller functionality.  The less you use the actual channels for mixing audio "out of the box", the more available for control.  

This mixer is capable of 64 flying faders and 40 vPots if used strictly for a controller.
Getting the 64 mutes to work would be a bonus... getting SysEX to translate into MIDI triggers would open dozens of other possibilities.  

You can pick one of these up for about $500 these days...
It's by far the best bang for the buck in this game.

I remember when motorized automated 100mm faders were a $200,000 upgrade to mixing consoles back in the 80's.


Title: Re: Remote DAW controller
Post by Jamie OConnell on Apr 17th, 2008, 1:04pm
Currently, MIDI-OX can only convert TO SysEx, not FROM it.


Quote:
[ 10  --  176    104    1    1   ---  Control Change ]  (on)
[ 10  --  176    105    1    1   ---  Control Change ]  (off)

Now, the "chan" os 104=ON; 105=OFF; and the "data1" is the mixer channel ranging from 1-32


If this display is from MIDI-OX, I  would call 104, 105 the Controller Number (CC#), not channel. MIDI channels only range from 1 - 16 (0 - 15). It appears to be sent on MIDI channel 1.  You seem to call it 'addr' in your xml, and that's probably fine.


Title: Re: Remote DAW controller
Post by tgorle on Apr 18th, 2008, 10:35pm

on 04/17/08 at 13:04:38, Jamie OConnell wrote:
Currently, MIDI-OX can only convert TO SysEx, not FROM it.


If this display is from MIDI-OX, I  would call 104, 105 the Controller Number (CC#), not channel. MIDI channels only range from 1 - 16 (0 - 15). It appears to be sent on MIDI channel 1.  You seem to call it 'addr' in your xml, and that's probably fine.



Ya, I made a typo explaining what the data readouts explained for themselves.  I've edited it for clarity.
So, what's the cure to put this backwards data into an XML format that will work?

104 is the controller number to turn mute ON.
105 is the controller number to turn it OFF.
But, that number column would normally identify a fader or vPot with a moving range of 0-127 in another column.
Writing an XML script for this mute data is not only puzzling because it's doubled for one "activator" due to different ON/OFF numbers, but the data is backwards (swapped columns) in it's relation to where data for faders and vPots would be.
ON is a 104, and the mixer channel it refers to (1-61 in my case) goes in what would otherwise be the range column of a fader.... at least that's what MidiOX indicates.

So far I've been unable to find an XML code of a mixer/controller of any other manufacturer where a similar condition exists that would give me an example of how to modify the script.

The obvious swapping of numbers in the columns as shown in my above post doesn't work.
It results in several combinations of wrong things happening.



Title: Re: Remote DAW controller
Post by Jamie OConnell on Apr 19th, 2008, 1:51pm
I am quite unfamiliar with Nuendo's XML implementation, but would it be easier to map the MUTEs for Nuendo if it was a single controller, that ranged from, say, 0 - 63 for OFF and 64 - 127 for ON? Or even 0 for OFF and > 0 for ON?  If so, how would we identify which MUTE it represented?  I am a bit unclear on how the fader example you showed specifies channel?

Anyway, you could (in MIDI-OX) for example, MAP both the MUTE ON and the MUTE OFF to the same controller# but with varying data values.  Since MUTE ON is already mapped to CC:104, you could just target MUTE OFF and convert that also to CC:104 (from CC:105), but with a resulting value of 0.

Here's a mapping line that would do that:


Code:
Ch Message V1Min V1Max V2Min V2Max C|Ch Message V1Min V1Max V2Min V2Max Ac
1 Ctrl      105   105     1   127  | * Ctrl      104   104     0     0  


Title: Re: Remote DAW controller
Post by tgorle on Apr 19th, 2008, 7:47pm

on 04/19/08 at 13:51:52, Jamie OConnell wrote:
I am quite unfamiliar with Nuendo's XML implementation, but would it be easier to map the MUTEs for Nuendo if it was a single controller, that ranged from, say, 0 - 63 for OFF and 64 - 127 for ON? Or even 0 for OFF and > 0 for ON?  If so, how would we identify which MUTE it represented?  I am a bit unclear on how the fader example you showed specifies channel?

Anyway, you could (in MIDI-OX) for example, MAP both the MUTE ON and the MUTE OFF to the same controller# but with varying data values.  Since MUTE ON is already mapped to CC:104, you could just target MUTE OFF and convert that also to CC:104 (from CC:105), but with a resulting value of 0.

Here's a mapping line that would do that:


Code:
Ch Message V1Min V1Max V2Min V2Max C|Ch Message V1Min V1Max V2Min V2Max Ac
1 Ctrl      105   105     1   127  | * Ctrl      104   104     0     0  



Here's what MidiOX shows from Fader Volume at zero on channel 17:

Code:
STATUS DATA1 DATA2 CHAN|
176    17    0     1|  


Here's what it shows for Mute ON from channel 17:

Code:
STATUS DATA1 DATA2 CHAN|
176    104   17    1|  



And here's Mute OFF from channel 17:

Code:
STATUS DATA1 DATA2 CHAN|
176    105   17    1|  


For channel 26 Mute ON would be this:

Code:
STATUS DATA1 DATA2 CHAN|
176    105   26    1|  



The mute mixer channel assignment data rests in the DATA2 0-127 fader/vPot motion range.

This is creating a situation where the target (mixer channel) is in the variable column, and the variable (104=ON;105=OFF) is in the target column.  Once every mixer channels' mute function is assigned in XML for the generic remote, anything trying to read this sees a 104 controller hitting values between 1-60, and a 105 controller hitting values between 1-60.

Obviously, the software is confused.  It isn't used to treating a 17 in the range column as a target that uses 104 & 105 in a control column as its variable.

Changing the flag combinations for PushButton/Toggle makes the mixer either activate the lowest channel assigned in Nuendo from every mute button on the DDX, or it lights up the DDX like a christmas tree with everey mute activated at once.


By the way, quoting your message gave me the clue on how to make "code" for this forum...  getting the correct spacing gave me plenty of edit practice...  until I looked at it logically.  ;)

Title: Re: Remote DAW controller
Post by tgorle on Apr 20th, 2008, 11:16pm
Here's the XML script for a MUTE ON and OFF for channel 1 and then channel 60:

Code:
<ctrl><name>MuteON 1</name><stat>176</stat><chan>0</chan><addr>104</addr><value>1</value><flags>3</flags></ctrl>
<ctrl><name>MuteOFF 1</name><stat>176</stat><chan>0</chan><addr>105</addr><value>1</value><flags>3</flags></ctrl>


Code:
<ctrl><name>MuteON 1</name><stat>176</stat><chan>0</chan><addr>104</addr><value>60</value><flags>3</flags></ctrl>
<ctrl><name>MuteOFF 1</name><stat>176</stat><chan>0</chan><addr>105</addr><value>60</value><flags>3</flags></ctrl>


Every mixer mute button activates channel 1 mute in Nuendo because a "max" only defines the top of a range, and every other mixer channel button (2-60) gets to operate from 0 up to its "max" number.  I need a way to define these "max" values as individual absolutes per line of code in order to give every mixer channel a unique identity for Mute function.  
The solution isn't just finding a term that enumerates each number as a sole target in XML script; the language must also be understandable by Nuendo.



MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.