Does VDJ recognize NRPN signals from MIDI device encoders? I have searched the WIKI with zero results and this leads me to believe that VDJ does not.
发表时间 Sat 29 May 10 @ 7:47 pm
Can you give me an example of what you are trying to do ?
发表时间 Sun 30 May 10 @ 12:02 pm
Well I have an MPD32 that I created a definition for and I posted here:
http://www.virtualdj.com/forums/129174/Hardware_Technical_Support/MPD32_360_Degree_Knob_Mapping_Help_.html
There are some knobs that are 360 degrees. Currently I have them defined as <fullencoders> sending 0 to 127 and I would like to make them INC/DEC similar to that of the jog wheel. In order for the MPD32 to be INC/DEC the Midi information changes to NRPN. I have been unsuccessful in getting VDJ recognizing the <encoder> NRPN as an input.
Honestly, I dont even know if that makes sense because the definition is something that I created out of trial and error. My .xml knowledge is nil but the definition seems to work. I just want to make the knobs INC/DEC instead of an absolute position.
http://www.virtualdj.com/forums/129174/Hardware_Technical_Support/MPD32_360_Degree_Knob_Mapping_Help_.html
There are some knobs that are 360 degrees. Currently I have them defined as <fullencoders> sending 0 to 127 and I would like to make them INC/DEC similar to that of the jog wheel. In order for the MPD32 to be INC/DEC the Midi information changes to NRPN. I have been unsuccessful in getting VDJ recognizing the <encoder> NRPN as an input.
Honestly, I dont even know if that makes sense because the definition is something that I created out of trial and error. My .xml knowledge is nil but the definition seems to work. I just want to make the knobs INC/DEC instead of an absolute position.
发表时间 Sun 30 May 10 @ 6:02 pm
Why do you need to change the mode of the knobs ... isn't increasing 0 to 127 and decreasing 127 to 0 ??
So it all depends on the direction of turn that determines what needs to happen in VirtualDJ.
I think the problem is more in your mapping code ... but leave everything the way you have it :
<fullencoder cc="0x0D" name="K1"/>
<fullencoder cc="0x0E" name="K2"/>
<fullencoder cc="0x0F" name="K3"/>
<fullencoder cc="0x10" name="K4"/>
<fullencoder cc="0x11" name="K5"/>
<fullencoder cc="0x12" name="K6"/>
<fullencoder cc="0x13" name="K7"/>
<fullencoder cc="0x14" name="K8"/>
and if you go to the Config/Mapper tab and press the + then turn the knob does it register?
then map to K1 the simple action of --> effect select
Close out of the Config ... now turn K1 does the effect scroll through the list both turning right then turning left ?
If so not much more to discuss on the definition as it is fine ... but the issue is in your mapping.
So it all depends on the direction of turn that determines what needs to happen in VirtualDJ.
I think the problem is more in your mapping code ... but leave everything the way you have it :
<fullencoder cc="0x0D" name="K1"/>
<fullencoder cc="0x0E" name="K2"/>
<fullencoder cc="0x0F" name="K3"/>
<fullencoder cc="0x10" name="K4"/>
<fullencoder cc="0x11" name="K5"/>
<fullencoder cc="0x12" name="K6"/>
<fullencoder cc="0x13" name="K7"/>
<fullencoder cc="0x14" name="K8"/>
and if you go to the Config/Mapper tab and press the + then turn the knob does it register?
then map to K1 the simple action of --> effect select
Close out of the Config ... now turn K1 does the effect scroll through the list both turning right then turning left ?
If so not much more to discuss on the definition as it is fine ... but the issue is in your mapping.
发表时间 Sun 30 May 10 @ 6:20 pm
Hey cstoll, the MPD32 works perfectly with the definition and my current mapping. I just want to tweak it a bit more.
I use the same eight knobs to adjust what ever effect or video effect is currently active. They move as if there is a "relative" in the mapping when there is not, love it. My dilemma is if I adjust an effect where the knob is at a low position and the next effect is at the higher position the knob reaches its "0" before I can fully adjust the current effect lower.
Prior to getting the MPD32 I used the jogs on my RMX with $var while pressed statements to adjust the current active effect. Now that I have a bank of 360 degree knobs I want to take advantage of them.
I also tried to use the "param_greater 50% ? deck active effect slider 1 +1 : deck active effect slider 1 -1" statement but the problem I ran into here was action 1 had to complete prior to action 2 starting (i.e. physically turning CW and midway thru the slider/knob turning CCW and VDJ would initially go CW but would still go CW while I was turning CCW until VDJ got to the end of the slider/knob and then turn CCW)
Any thoughts?
I use the same eight knobs to adjust what ever effect or video effect is currently active. They move as if there is a "relative" in the mapping when there is not, love it. My dilemma is if I adjust an effect where the knob is at a low position and the next effect is at the higher position the knob reaches its "0" before I can fully adjust the current effect lower.
Prior to getting the MPD32 I used the jogs on my RMX with $var while pressed statements to adjust the current active effect. Now that I have a bank of 360 degree knobs I want to take advantage of them.
I also tried to use the "param_greater 50% ? deck active effect slider 1 +1 : deck active effect slider 1 -1" statement but the problem I ran into here was action 1 had to complete prior to action 2 starting (i.e. physically turning CW and midway thru the slider/knob turning CCW and VDJ would initially go CW but would still go CW while I was turning CCW until VDJ got to the end of the slider/knob and then turn CCW)
Any thoughts?
发表时间 Sun 30 May 10 @ 7:31 pm
Ok ... I am realy confused now ...
... you say that it works fine - "the MPD32 works perfectly"
... you say you use those knobs to already make adjustments - "use the same eight knobs to adjust"
... then you say "where the knob is at a low position and the next effect is at the higher position the knob reaches its "0""
But yet you say you have a bank of 360 degree knobs ??? Are these a different bank of knobs ?
Are these the same 8 knobs? Do they physically stop turning at the 360 degree point?
Because if they physically stop turning then they are not 'endless' encoders which is what the <fullencoder> option is intended to support.
... you say that it works fine - "the MPD32 works perfectly"
... you say you use those knobs to already make adjustments - "use the same eight knobs to adjust"
... then you say "where the knob is at a low position and the next effect is at the higher position the knob reaches its "0""
But yet you say you have a bank of 360 degree knobs ??? Are these a different bank of knobs ?
Are these the same 8 knobs? Do they physically stop turning at the 360 degree point?
Because if they physically stop turning then they are not 'endless' encoders which is what the <fullencoder> option is intended to support.
发表时间 Mon 31 May 10 @ 10:02 am
I knew that I was gonna confuse you. LOL.
1. If I leave everything the way it is now its is "manageable", not "works perfectly". Bad choice of words.
2. Currently with the <fullencoder> definition the knobs transmit 0-127. The 8 knobs (K1-K8) are mapped to active deck effect slider 1-4 and video_fx slider 1-4
3. Because I have them defined as <fullencoder> the knob will send a "0" before the software slider/knob reaches "0" because I am adjustig active deck effect sliders and not "named effect" slider (confusing still?).
4. The bank of knob are K1-K8.
5. Physically the bank of knobs (K1-K8) are endless encoders. Its when I try to define them as endless <encoder> (i.e. INC/DEC NRPN) I have problems. My MIDI monitor shows that the endless encoder is sending INC/DEC signals. Its defining them so that VDJ can understand them as endless encoders.
1. If I leave everything the way it is now its is "manageable", not "works perfectly". Bad choice of words.
2. Currently with the <fullencoder> definition the knobs transmit 0-127. The 8 knobs (K1-K8) are mapped to active deck effect slider 1-4 and video_fx slider 1-4
3. Because I have them defined as <fullencoder> the knob will send a "0" before the software slider/knob reaches "0" because I am adjustig active deck effect sliders and not "named effect" slider (confusing still?).
4. The bank of knob are K1-K8.
5. Physically the bank of knobs (K1-K8) are endless encoders. Its when I try to define them as endless <encoder> (i.e. INC/DEC NRPN) I have problems. My MIDI monitor shows that the endless encoder is sending INC/DEC signals. Its defining them so that VDJ can understand them as endless encoders.
发表时间 Mon 31 May 10 @ 12:28 pm
Ok, well the confusion is from understand how our definitions and scripting works ...
First .. by defining how an item acts on a controller does not change the controllers behavior. The definition is built to explain the controllers behavior to VirtualDJ.
Just because you define something as <fullencoder> does not mean that it always starts at zero ( 0 ).
And when you define an endless encoder with <fullencoder> this is done because the encoder send absolute positions when turned ...
For Example here is the values from an endless 'absolute' encoder ...
B0 24 00 00
B0 24 01 00
B0 24 02 00
B0 24 03 00
B0 24 04 00
B0 24 05 00
B0 24 06 00
B0 24 07 00
B0 24 08 00
B0 24 09 00
B0 24 0A 00
..... all values between 0B and 79
B0 24 7A 00
B0 24 7B 00
B0 24 7C 00
B0 24 7D 00
B0 24 7E 00
B0 24 7F 00
If I stop at a value of 05 then the next turn to the right would be 06 and onward ... if I turn to the left then the value will be 04 and downward ... in either case once I reach 7F going up or 00 going down then the values wrap and repeat to create the 'endless' cycle.
So if your knob is not sending 'absolute' values then <fullencoder> is not the correct definition.
You should only be using <encoder> .... have you used the miditrace program to see what your encoders send as values ??
http://www.virtualdj.com/download/miditrace.exe
Use the MIDITrace program and turn one of the encoders slowly about 4 or 5 positions to the right then back 4 or 5 positions. You should get 1 of 3 possibilities ... 1 that you see the series of values repeat themselves after going to the right then back to the left - this would be absolute. Second, would be that you see 00,01,02,03,etc to the right and then 7F,7E,7D,7C,etc when you go to the left. And lastly you might see 01,01,01,02,01,02,03, etc where depending on how fast you turn to the right you either see the same value 01 or you start to see the other values because of the velocity of turning ... turn left would be similar 7F repeated several times if turned slow enough, but the other values if turned faster.
Of the 3 possibilities you would only use <fullencoder> if your knob sends values like outlined in the first scenario. The other two would require you to define your knob as an <encoder>.
From what you described is happening ... I am leaning for one of the later to scenarios ....
First .. by defining how an item acts on a controller does not change the controllers behavior. The definition is built to explain the controllers behavior to VirtualDJ.
Just because you define something as <fullencoder> does not mean that it always starts at zero ( 0 ).
And when you define an endless encoder with <fullencoder> this is done because the encoder send absolute positions when turned ...
For Example here is the values from an endless 'absolute' encoder ...
B0 24 00 00
B0 24 01 00
B0 24 02 00
B0 24 03 00
B0 24 04 00
B0 24 05 00
B0 24 06 00
B0 24 07 00
B0 24 08 00
B0 24 09 00
B0 24 0A 00
..... all values between 0B and 79
B0 24 7A 00
B0 24 7B 00
B0 24 7C 00
B0 24 7D 00
B0 24 7E 00
B0 24 7F 00
If I stop at a value of 05 then the next turn to the right would be 06 and onward ... if I turn to the left then the value will be 04 and downward ... in either case once I reach 7F going up or 00 going down then the values wrap and repeat to create the 'endless' cycle.
So if your knob is not sending 'absolute' values then <fullencoder> is not the correct definition.
You should only be using <encoder> .... have you used the miditrace program to see what your encoders send as values ??
http://www.virtualdj.com/download/miditrace.exe
Use the MIDITrace program and turn one of the encoders slowly about 4 or 5 positions to the right then back 4 or 5 positions. You should get 1 of 3 possibilities ... 1 that you see the series of values repeat themselves after going to the right then back to the left - this would be absolute. Second, would be that you see 00,01,02,03,etc to the right and then 7F,7E,7D,7C,etc when you go to the left. And lastly you might see 01,01,01,02,01,02,03, etc where depending on how fast you turn to the right you either see the same value 01 or you start to see the other values because of the velocity of turning ... turn left would be similar 7F repeated several times if turned slow enough, but the other values if turned faster.
Of the 3 possibilities you would only use <fullencoder> if your knob sends values like outlined in the first scenario. The other two would require you to define your knob as an <encoder>.
From what you described is happening ... I am leaning for one of the later to scenarios ....
发表时间 Mon 31 May 10 @ 3:56 pm
When I turn the knob CW it get this:
B0 63 7F
B0 62 7F
B0 60 01
B0 63 7F
B0 62 7F
CCW I get this:
B0 63 7F
B0 62 7F
B0 61 01
B0 63 7F
B0 62 7F
This is where I am confused. The bold 7F is customizable on the MPD32 from 00-7F where the "B0 63 NN" is the NRPN MSB and the "B0 62 NN" is the NRPN LSB. How should I define this <encoder> element as it is posted here?
Thanks again cstoll, your help is much appreciated!!
B0 63 7F
B0 62 7F
B0 60 01
B0 63 7F
B0 62 7F
CCW I get this:
B0 63 7F
B0 62 7F
B0 61 01
B0 63 7F
B0 62 7F
This is where I am confused. The bold 7F is customizable on the MPD32 from 00-7F where the "B0 63 NN" is the NRPN MSB and the "B0 62 NN" is the NRPN LSB. How should I define this <encoder> element as it is posted here?
Thanks again cstoll, your help is much appreciated!!
发表时间 Tue 01 Jun 10 @ 3:37 pm
Ok ... so setup the byte 63 for a range of 00 -> 7F ... then you should define the encoder as
<fullencoder cc="0x63" name="Encoder1" /> << name it what ever you like.
We do not yet support 14bit endless encoders - however you can try defining both 63 and 62 as range from 00-7F and try the following -
<fulljog cc="0x62" ccmsb="0x63" full="4096" name="Encoder1" />
<fullencoder cc="0x63" name="Encoder1" /> << name it what ever you like.
We do not yet support 14bit endless encoders - however you can try defining both 63 and 62 as range from 00-7F and try the following -
<fulljog cc="0x62" ccmsb="0x63" full="4096" name="Encoder1" />
发表时间 Tue 01 Jun 10 @ 5:36 pm
I will try it out and post what my findings. Thanks for your help cstoll.
When is VDJ going to support 14bit encoders?
When is VDJ going to support 14bit encoders?
发表时间 Tue 01 Jun 10 @ 6:36 pm
Well I tried the mapping you suggested but the software slider only wants to turn CCW. Fumbling with the CC and CCMSB I was able to get a knob to go CW and at one point I had a separate mapping of the CW and CCW, but It kept crashing VDJ; not to mention the other 7 knobs still needs to be defined and mapped. I guess I will leave them as <fullencoder> until VDJ supports the 14bit MIDI message.
Is the 14bit encoder support up coming?
Thanks again!!
Is the 14bit encoder support up coming?
Thanks again!!
发表时间 Tue 01 Jun 10 @ 11:15 pm
If you can not get it to work with <fullencoder> then it's not a VirtualDJ problem and 14-bit support won't solve it.
What are the values you get when you turn the knob? Can you post an output like you did before?
What are the values you get when you turn the knob? Can you post an output like you did before?
发表时间 Wed 02 Jun 10 @ 5:19 am
Thanks for looking cstoll.
This is what it puts out when I turn it CW (the MSB and LSB are set to 126):
00067.334 B0 63 7E
00067.334 B0 62 7E
00067.334 B0 60 01
00067.334 B0 63 7F
00067.334 B0 62 7F
00067.384 B0 63 7E
00067.384 B0 62 7E
00067.384 B0 60 01
00067.384 B0 63 7F
00067.384 B0 62 7F
00067.450 B0 63 7E
00067.450 B0 62 7E
00067.450 B0 60 01
00067.450 B0 63 7F
00067.450 B0 62 7F
00067.500 B0 63 7E
00067.500 B0 62 7E
00067.500 B0 60 01
00067.500 B0 63 7F
00067.500 B0 62 7F
When I turn it CCW:
00180.017 B0 63 7E
00180.017 B0 62 7E
00180.017 B0 61 01
00180.017 B0 63 7F
00180.017 B0 62 7F
00180.084 B0 63 7E
00180.084 B0 62 7E
00180.084 B0 61 01
00180.084 B0 63 7F
00180.084 B0 62 7F
00180.117 B0 63 7E
00180.117 B0 62 7E
00180.117 B0 61 01
00180.117 B0 63 7F
00180.117 B0 62 7F
00180.167 B0 63 7E
00180.167 B0 62 7E
00180.167 B0 61 01
00180.167 B0 63 7F
00180.167 B0 62 7F
It looks to me like when the knob is turned CW byte 60 is +1 and CCW byte 61 is +1.
Bytes 63 and 62 can be changed to a value between 0 and 127 not a range of values. According to Akai documentation byte 63 is the MSB and byte 62 is the LSB.
The MPD32 documentation says that this output is NRPN.
What do you think?
This is what it puts out when I turn it CW (the MSB and LSB are set to 126):
00067.334 B0 63 7E
00067.334 B0 62 7E
00067.334 B0 60 01
00067.334 B0 63 7F
00067.334 B0 62 7F
00067.384 B0 63 7E
00067.384 B0 62 7E
00067.384 B0 60 01
00067.384 B0 63 7F
00067.384 B0 62 7F
00067.450 B0 63 7E
00067.450 B0 62 7E
00067.450 B0 60 01
00067.450 B0 63 7F
00067.450 B0 62 7F
00067.500 B0 63 7E
00067.500 B0 62 7E
00067.500 B0 60 01
00067.500 B0 63 7F
00067.500 B0 62 7F
When I turn it CCW:
00180.017 B0 63 7E
00180.017 B0 62 7E
00180.017 B0 61 01
00180.017 B0 63 7F
00180.017 B0 62 7F
00180.084 B0 63 7E
00180.084 B0 62 7E
00180.084 B0 61 01
00180.084 B0 63 7F
00180.084 B0 62 7F
00180.117 B0 63 7E
00180.117 B0 62 7E
00180.117 B0 61 01
00180.117 B0 63 7F
00180.117 B0 62 7F
00180.167 B0 63 7E
00180.167 B0 62 7E
00180.167 B0 61 01
00180.167 B0 63 7F
00180.167 B0 62 7F
It looks to me like when the knob is turned CW byte 60 is +1 and CCW byte 61 is +1.
Bytes 63 and 62 can be changed to a value between 0 and 127 not a range of values. According to Akai documentation byte 63 is the MSB and byte 62 is the LSB.
The MPD32 documentation says that this output is NRPN.
What do you think?
发表时间 Fri 04 Jun 10 @ 10:43 pm
Ok ... think you need to look at page 16 ... then go to the CC filed and look at what the 'range' is set to for the CC values of 63 and 62 they need to be at 000 127 for both.
发表时间 Sat 05 Jun 10 @ 8:46 am