I have a behringer CMD studio4A and this controller has 2 buttons (labelled A&C/B&D) on each deck (1&3/2&4). But internally in VDJ both buttons on each side are registered as one button i can bind, LEFTDECK and RIGHTDECK. So no matter if i press the A or C button, they both get registered as LEFTDECK.
I'd like to be able to bind both buttons to something else, say the A button to deck 1&3 cycle, and the C button to quantize. Is that possible even though they're both registered as LEFTDECK?
The default bind for LEFTDECK is:[ action_deck 1 ? deck 1 leftdeck & deck 1 select : deck 3 leftdeck & deck 3 select ] if it helps
I'd like to be able to bind both buttons to something else, say the A button to deck 1&3 cycle, and the C button to quantize. Is that possible even though they're both registered as LEFTDECK?
The default bind for LEFTDECK is:[ action_deck 1 ? deck 1 leftdeck & deck 1 select : deck 3 leftdeck & deck 3 select ] if it helps
Posted Tue 22 Sep 26 @ 4:06 am
Yes, but you should use the same logic: action_deck 1 ? this : action_deck 3 ? that
Which in human language would be A button pressed ? this : C button pressed ? that
Keep in mind that the buttons have their "deck" assigned implicitly to them.
So, if you remap them like action_deck 1 ? play : action_deck 3 ? loop it becomes essentially
action_deck 1 ? DECK 1 play : action_deck 3 ? DECK 3 loop
So depending on what you want to do you may need to remap them by overriding the deck, like this:
action_deck 1 ? DECK LEFT play : action_deck 3 ? DECK LEFT loop
Which in human language would be A button pressed ? this : C button pressed ? that
Keep in mind that the buttons have their "deck" assigned implicitly to them.
So, if you remap them like action_deck 1 ? play : action_deck 3 ? loop it becomes essentially
action_deck 1 ? DECK 1 play : action_deck 3 ? DECK 3 loop
So depending on what you want to do you may need to remap them by overriding the deck, like this:
action_deck 1 ? DECK LEFT play : action_deck 3 ? DECK LEFT loop
Posted Tue 22 Sep 26 @ 6:12 am
I did >kinda< manage to make it work with your help. might be a bit to much but i got the A button to cycle through deck 1 and 3 with:
action_deck 1 ? DECK LEFT cycle '$leftdeckselect' 2 & var_equal '$leftdeckselect' 0 ? deck 1 leftdeck & deck 1 select : var_equal '$leftdeckselect' 1 ? deck 3 leftdeck & deck 3 select : action_deck 3 ? DECK LEFT loop
(sorry if formatting is bad)
Now that make the A (deck 1) button cycle decks 1&3.
Now heres where the problem starts. While it does cycle and sets the deck as active in VDJ (same as clicking the A/C button in VDJ pro/performance skin). The play button (or any other left deck feature) on my controller will still only play deck A, even if C is selected, the same play_pause bind on my keyboard will work properly however.
The second part is the "action_deck 3 ? DECK LEFT loop" in my bind gets ignored and that button does not loop, but actually activates deck 3, even though there's nothing left of that code, and even if the VDJ skin doesn't switch to it. I tried binding this to other buttons too and its the same problem. Now the third part of this problem is, if i use your bind:
action_deck 1 ? DECK LEFT play_pause : action_deck 3 ? DECK LEFT loop
Button A will play/pause as many times as i want. but button C will work once, before needing button A to be pressed first for button C to work again.
Now this makes me believe the controller is hardcoded in some way. And this is kinda above my skill level, so unless there's some simple solution to this I think I'll ignore this problem and thank for your help!
action_deck 1 ? DECK LEFT cycle '$leftdeckselect' 2 & var_equal '$leftdeckselect' 0 ? deck 1 leftdeck & deck 1 select : var_equal '$leftdeckselect' 1 ? deck 3 leftdeck & deck 3 select : action_deck 3 ? DECK LEFT loop
(sorry if formatting is bad)
Now that make the A (deck 1) button cycle decks 1&3.
Now heres where the problem starts. While it does cycle and sets the deck as active in VDJ (same as clicking the A/C button in VDJ pro/performance skin). The play button (or any other left deck feature) on my controller will still only play deck A, even if C is selected, the same play_pause bind on my keyboard will work properly however.
The second part is the "action_deck 3 ? DECK LEFT loop" in my bind gets ignored and that button does not loop, but actually activates deck 3, even though there's nothing left of that code, and even if the VDJ skin doesn't switch to it. I tried binding this to other buttons too and its the same problem. Now the third part of this problem is, if i use your bind:
action_deck 1 ? DECK LEFT play_pause : action_deck 3 ? DECK LEFT loop
Button A will play/pause as many times as i want. but button C will work once, before needing button A to be pressed first for button C to work again.
Now this makes me believe the controller is hardcoded in some way. And this is kinda above my skill level, so unless there's some simple solution to this I think I'll ignore this problem and thank for your help!
Posted Thu 24 Sep 26 @ 7:30 pm
action_deck 1 ? DECK LEFT cycle '$leftdeckselect' 2 & var_equal '$leftdeckselect' 0 ? deck 1 leftdeck & deck 1 select : var_equal '$leftdeckselect' 1 ? deck 3 leftdeck & deck 3 select : action_deck 3 ? DECK LEFT loop
1) The last part doesn't execute because your query is not normalized.
Think of queries as questions that always ask "Is this true ? do this : do that"
Now when you ask multiple questions in a row, you create "nested" do this else do that cases. That's fine as long as you don't mess where each "else that" part belongs on your script.
We will do more corrections, but on your example above the solution to make the last part work is simple:
action_deck 1 ? deck left cycle '$leftdeckselect' 2 & var_equal '$leftdeckselect' 0 ? deck 1 leftdeck & deck 1 select : var_equal '$leftdeckselect' 1 ? deck 3 leftdeck & deck 3 select : NOTHING : action_deck 3 ? deck left loop
PS: You don't need to use caps anywhere on your code/script. I used caps both on my previous post and above, just to emphasize where you should pay attention.
Now, your controller is a 4 decks controller.
This means that indeed, some things are "hardcoded" but not from VirtualDJ.
The A/C buttons on your controller also change what MIDI channels your controller uses when you press buttons. Selecting a left or right deck on software, does not change the active "layer" of your controller.
There are solutions to that, but first let's try another approach:
action_deck 1 ? invert_deck 'left' : NOTHING : deck left loop
Test this script, and if it works, we can discuss what it does and why it works.
If not, we can discuss other ways to achieve the same result
1) The last part doesn't execute because your query is not normalized.
Think of queries as questions that always ask "Is this true ? do this : do that"
Now when you ask multiple questions in a row, you create "nested" do this else do that cases. That's fine as long as you don't mess where each "else that" part belongs on your script.
We will do more corrections, but on your example above the solution to make the last part work is simple:
action_deck 1 ? deck left cycle '$leftdeckselect' 2 & var_equal '$leftdeckselect' 0 ? deck 1 leftdeck & deck 1 select : var_equal '$leftdeckselect' 1 ? deck 3 leftdeck & deck 3 select : NOTHING : action_deck 3 ? deck left loop
PS: You don't need to use caps anywhere on your code/script. I used caps both on my previous post and above, just to emphasize where you should pay attention.
Now, your controller is a 4 decks controller.
This means that indeed, some things are "hardcoded" but not from VirtualDJ.
The A/C buttons on your controller also change what MIDI channels your controller uses when you press buttons. Selecting a left or right deck on software, does not change the active "layer" of your controller.
There are solutions to that, but first let's try another approach:
action_deck 1 ? invert_deck 'left' : NOTHING : deck left loop
Test this script, and if it works, we can discuss what it does and why it works.
If not, we can discuss other ways to achieve the same result
Posted Fri 25 Sep 26 @ 7:03 am
I tried your examples now. The correction of my code works better, the A button cycles the A/C deck (in the VDJ skin only) and the C button loops (but only once if the A button was the previously selected deck, afterwards i need to press A to make C work (once) again)
Your code "action_deck 1 ? invert_deck 'left' : NOTHING : deck left loop" switches the deck in VDJ, but does not activate it in VDJ (aka it does not highlight the C button), it only brings that deck to the front. And the last function (loop) does nothing.
All "hardcoded" thing are like before.
Your code "action_deck 1 ? invert_deck 'left' : NOTHING : deck left loop" switches the deck in VDJ, but does not activate it in VDJ (aka it does not highlight the C button), it only brings that deck to the front. And the last function (loop) does nothing.
All "hardcoded" thing are like before.
Posted Sat 03 Oct 26 @ 4:57 pm





