Hi,
I am using a pair of Pioneer CDJ-400's as MIDI controllers on VirtualDJ v7.05b. VirtualDJ has the MIDI keymap's preconfigured for these controllers. Specifically, the 'EJECT' key is mapped to 'invert controllers', which is fine normally.
I am starting to experiment with a 4 deck setup, and I'd like to change the mapping for the EJECT button so that pressing it on the left controller changes the active deck on the LEFT SIDE ONLY. So it would alternate between deck 1 and deck 3. Similarly for the right controller, I want the eject button to alternate between decks 2 and 4.
What is the best way to achieve this?
At first I thought I'd simply customize the existing keymap configuration, but the same keymap is used for both controllers, so I can't specify a key to perform an action on 'leftdeck' without also forcing the other controller to use the same keymap. Also, there doesn't appear to be a way to make custom keymap (i.e. a copy of the existing one with slight modifications), nor set a controller to use a specific keymap.
Any thoughts on how to accomplish this would be most appreciated!
I am using a pair of Pioneer CDJ-400's as MIDI controllers on VirtualDJ v7.05b. VirtualDJ has the MIDI keymap's preconfigured for these controllers. Specifically, the 'EJECT' key is mapped to 'invert controllers', which is fine normally.
I am starting to experiment with a 4 deck setup, and I'd like to change the mapping for the EJECT button so that pressing it on the left controller changes the active deck on the LEFT SIDE ONLY. So it would alternate between deck 1 and deck 3. Similarly for the right controller, I want the eject button to alternate between decks 2 and 4.
What is the best way to achieve this?
At first I thought I'd simply customize the existing keymap configuration, but the same keymap is used for both controllers, so I can't specify a key to perform an action on 'leftdeck' without also forcing the other controller to use the same keymap. Also, there doesn't appear to be a way to make custom keymap (i.e. a copy of the existing one with slight modifications), nor set a controller to use a specific keymap.
Any thoughts on how to accomplish this would be most appreciated!
Posté Sat 26 May 12 @ 5:39 pm
You should use "action_deck" verb.
Something like this:
action_deck 1 ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
If you want to include the invert command so that you can re-arrange the decks layout then you can try this:
holding ? invert_controllers : action_deck 1 ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
Something like this:
action_deck 1 ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
If you want to include the invert command so that you can re-arrange the decks layout then you can try this:
holding ? invert_controllers : action_deck 1 ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
Posté Sun 27 May 12 @ 3:12 pm
PhantomDeejay wrote :
You should use "action_deck" verb.
Something like this:
action_deck 1 ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
...
Something like this:
action_deck 1 ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
...
I tried your suggestion, but it didn't work. However, it looks like it *should* work, and theory is sound. I looked into the list of available VirtualDJ commands and tried to modify your statement to use 'assign_controller' instead. But that didn't work either.
I tried assigning the following simple test command to EJECT:
"deck 3 assign_controller 'CDJ400' 1"
which should assign at least one of the controllers to deck 3. However, both controllers stayed firmly stuck at their original assignments (deck 1 and deck 2). I even assigned this same command to the keyboard (letter 'j'), and it still does not work.
What's weird is that the test command is almost identical to the one given as an example in the Mappers window for 'assign_controller'.
This looks like a bug. Can anyone else confirm?
It's Virtual DJ v7.0.5b Pro (b380) on Windows 7 x64.
Posté Mon 28 May 12 @ 5:03 am
try this instead
holding ? invert_controllers : device_side 'left' ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
djdad has confirmed that there is a bug with "assign_controller" to me in the past, I was told it would be looked at and fixed in version 8.
holding ? invert_controllers : device_side 'left' ? deck 1 leftdeck ? deck 3 leftdeck : deck 1 leftdeck : deck 2 rightdeck ? deck 4 rightdeck : deck 2 rightdeck
djdad has confirmed that there is a bug with "assign_controller" to me in the past, I was told it would be looked at and fixed in version 8.
Posté Mon 28 May 12 @ 5:11 am
Try the same script with "device_side" instead of "action_deck"
However "action_deck" should work too... It works with my DN-S3700...
However "action_deck" should work too... It works with my DN-S3700...
Posté Mon 28 May 12 @ 5:17 am
PhantomDeejay wrote :
Try the same script with "device_side" instead of "action_deck"
However "action_deck" should work too... It works with my DN-S3700...
However "action_deck" should work too... It works with my DN-S3700...
I don't think the problem is with the "action_deck" keyword - I setup a simple test with just this command and it worked as expected. It seems the issue is with the commands that follow it:
deck 1 leftdeck
deck 3 leftdeck
don't appear to do anything. This means that synthet1c's suggestion also doesn't work. :-(
PhantomDeejay - can you post the exact command you're using for your DN-S3700 with the expected results so I can try it on mine? I'll substitute DN-S3700 with CDJ400 for my setup.
Thanks!
Posté Mon 28 May 12 @ 7:43 am
djnanite wrote :
It seems the issue is with the commands that follow it:
deck 1 leftdeck
deck 3 leftdeck
don't appear to do anything.
deck 1 leftdeck
deck 3 leftdeck
don't appear to do anything.
You should configure your CDJ400's to control the "LEFT" and the "RIGHT" deck (from the drop down menu in the mappers tab) and then use the script I wrote above to control which is the left and which is the right deck.
If you explicitly assign a CDJ to a specific deck (eg deck 1) from the drop down menu then it will "always" work with that deck no matter which one is the "leftdeck"
PS: I can't "give" you my code to test it because I don't use a button to switch between decks. I use a 2 deck setup with my S3700. However I use the "action_deck" verb to assign different commands on the same buttons between the two decks.
Posté Mon 28 May 12 @ 10:18 am
PhantomDeejay wrote :
You should configure your CDJ400's to control the "LEFT" and the "RIGHT" deck (from the drop down menu in the mappers tab) and then use the script I wrote above to control which is the left and which is the right deck.
You should configure your CDJ400's to control the "LEFT" and the "RIGHT" deck (from the drop down menu in the mappers tab) and then use the script I wrote above to control which is the left and which is the right deck.
I'm not sure what you mean here. The drop down menu in my mappers tab has just 2 options:
Keyboard
Pioneer CDJ-400
I can't see an option to assign each controller to "LEFT" or "RIGHT". Should there be a second Pioneer CDJ-400 in that list? Even so, how would I assign it to use a particular 'side'? The menu button next to it allows me to assign the 2 CDJ400's to one of 5 options:
Default
Deck 1
Deck 2
Deck 3
Deck 4
If I assign both controllers to 'default', then they both end up controlling the same deck, and no command is able to separate them. The code you suggested doesn't work with this configuration, and the 'invert_controllers' command merely switches both controllers so that they both control deck 2, deck 3, etc... simultaneously.
I can only seem to make Virtual DJ distinguish between the 2 controllers by explicitly assigning them to a different deck number each. Then the standard EJECT behaviour (invert_controllers) allows me to cycle them both up through the deck numbers, but without giving me the option of limiting one side to certain deck numbers only.
PhantomDeejay wrote :
If you explicitly assign a CDJ to a specific deck (eg deck 1) from the drop down menu then it will "always" work with that deck no matter which one is the "leftdeck"
If you explicitly assign a CDJ to a specific deck (eg deck 1) from the drop down menu then it will "always" work with that deck no matter which one is the "leftdeck"
If I understand this correctly, explicitly assigning a deck number to a controller overrides the command sent to it that you suggested in your original post - correct?
If so, then the problem is not with your code, but with the fact that my Virtual DJ is not able to distinguish between the 2 separate controllers. I can only make it aware of the different sides by explicitly assigning them to different deck numbers through the menu option.
Posté Tue 29 May 12 @ 2:09 am
Looking into this in a bit more depth, I'm not sure 'deck 1 leftdeck' or 'deck 3 leftdeck' is the right command here. That will assign a deck to a particular side (useful for 6 decks where the side is not so obvious), but this doesn't look like it's intended to map back to the controller.
I really need assign_controller to work, as this would allow me to explicitly set a controller to use a particular deck number. I should be able to use the following command:
action_deck 1 ? deck 3 assign_controller "CDJ400" 1: action_deck 2 ? deck 4 assign_controller "CDJ400" 2 : action_deck 3 ? deck 1 assign_controller "CDJ400" 1: action_deck 4 ? deck 2 assign_controller "CDJ400" 2
So the first CDJ400 flips between deck 1 and 3, and the second CDJ400 flips between deck 2 and 4.
But assign_controller doesn't appear to work at all - has anyone tested this?
I really need assign_controller to work, as this would allow me to explicitly set a controller to use a particular deck number. I should be able to use the following command:
action_deck 1 ? deck 3 assign_controller "CDJ400" 1: action_deck 2 ? deck 4 assign_controller "CDJ400" 2 : action_deck 3 ? deck 1 assign_controller "CDJ400" 1: action_deck 4 ? deck 2 assign_controller "CDJ400" 2
So the first CDJ400 flips between deck 1 and 3, and the second CDJ400 flips between deck 2 and 4.
But assign_controller doesn't appear to work at all - has anyone tested this?
Posté Tue 29 May 12 @ 2:37 am
Give me a couple hours...
Posté Tue 29 May 12 @ 4:12 am
If the CDJs are the only midi controllers you have in your system, try using
deck 1 assign_controller 1 (not sure if this will work)
instead of
deck 1 assign_controller "CDJ400" 1 (which is currently not working (the bug will be fixed in next version))
deck 1 assign_controller 1 (not sure if this will work)
instead of
deck 1 assign_controller "CDJ400" 1 (which is currently not working (the bug will be fixed in next version))
Posté Tue 29 May 12 @ 12:37 pm
djdad wrote :
If the CDJs are the only midi controllers you have in your system, try using
deck 1 assign_controller 1 (not sure if this will work)
deck 1 assign_controller 1 (not sure if this will work)
Correct - it didn't work.
I think we can safely say that assign_controller is a dead command.
Is there an estimate on when Virtual DJ 8 is going to be released? Can we expect an update to Virtual DJ 7 in the meantime?
Posté Wed 30 May 12 @ 1:36 am
Please see: http://www.virtualdj.com/wiki/When%20will%20the%20next%20version%20of%20VirtualDJ%20be%20released.html
You could try mapping the EJECT button to:
invert_controllers & invert_controllers & refresh_controller "CDJ400"
You could try mapping the EJECT button to:
invert_controllers & invert_controllers & refresh_controller "CDJ400"
Posté Wed 30 May 12 @ 6:12 am
Support staff wrote :
You could try mapping the EJECT button to:
invert_controllers & invert_controllers & refresh_controller "CDJ400"
invert_controllers & invert_controllers & refresh_controller "CDJ400"
That only half works.
It'll switch the left controller between deck 1 and 3, but it will also switch the right controller between decks 2 and 4 at the same time. That means I'd never be able to mix between decks 1 and 4, nor decks 2 and 3.
Posté Wed 30 May 12 @ 7:13 am