Previously I was using a DDJ-SX w/ Serato. A neat feature was making a remix on deck 1&3 (tied to the left platterand controls) and another remix on deck 2&4 (tied to the right platter and controls), then being able to mix the first remix into the second remix. The ability to do this was by locking decks 1&3 and/or decks 2&4 so that the given platter would control both decks at the same time to keep the remix together.
Is this possible when using the Rane Four and VirtualDJ? It seems possible, I can certainly make a remix on decks 1&3 for example, but I don't know how to lock those two decks simultaneously to the platter. (meaning any input to the platter, or tempo, or anything else applied simultaneously to both decks 1&3).
Hopefully my question makes sense, I'm not a professional DJ so my jargon isn't very technical. Thanks in advance.
Is this possible when using the Rane Four and VirtualDJ? It seems possible, I can certainly make a remix on decks 1&3 for example, but I don't know how to lock those two decks simultaneously to the platter. (meaning any input to the platter, or tempo, or anything else applied simultaneously to both decks 1&3).
Hopefully my question makes sense, I'm not a professional DJ so my jargon isn't very technical. Thanks in advance.
Posted Mon 18 Nov 24 @ 8:35 pm
In theory, that's exactly what the dualdeckmode and dualdeckmode_decks verbs are trying to achieve.
Read more here: https://www.virtualdj.com/manuals/virtualdj/appendix/vdjscriptverbs.html
I've never tried it myself though with HID/MIDI jogs - devs/others may have more info here on required adjustments to default deck control scripts.
Read more here: https://www.virtualdj.com/manuals/virtualdj/appendix/vdjscriptverbs.html
I've never tried it myself though with HID/MIDI jogs - devs/others may have more info here on required adjustments to default deck control scripts.
Posted Mon 18 Nov 24 @ 9:25 pm
Thank you for the input. I agree, this looks exactly like what I was trying to describe. Now I can do a better search since I know what it's called. Thanks a bunch!
Posted Mon 18 Nov 24 @ 9:31 pm
Actually, just a quick glimpse at the mapping in VirtualDj seems to imply it is somewhat already implemented, although the Hardware Manual doesn't seem to talk about it.
Try the button and what you normally did
in Serato and see if it works as you expect already.
Try the button and what you normally did
in Serato and see if it works as you expect already.
Posted Mon 18 Nov 24 @ 9:35 pm
Curious, if I searched for "dualdeckmode" in the mapping interface of VirtualDJ for the Rane Four and it did not come up with results, does this mean it's simply not mapped in the default map?
Posted Mon 18 Nov 24 @ 9:44 pm
OK, I'll try in Serato. This is something I should have done first, as I have not yet tried the Rane Four with Serato yet (as dumb as that sounds). I'll report back.
Posted Mon 18 Nov 24 @ 9:45 pm
Apologies, I was saying that the DDJ-SX has it mapped. I don't think the Rane Four (at least obviously) has dual deck mappings by default...you'll probably have to map that yourself for the Four.
Posted Mon 18 Nov 24 @ 10:09 pm
I think you're right. I tried the Rane Four with Serato and it appears to have the same mappings/behavior as with VirtualDJ. There's a (kinda?) cool "Stem-Split" button that does something similar by putting the same song on both decks 1 and 3, automatically makes deck 1 vocals and deck 3 instrumentals, and locks the two decks together. Unfortunately for me I want to do the same thing but with two completely different songs. I'll dive into the mapping feature of VirtualDJ, maybe I can re-purpose the "Stem-Split" button to do the "dualdeckmode" command.
Posted Mon 18 Nov 24 @ 10:38 pm
Unless you really don't use stem split, I would personally leave that alone as it's one of the stand out features of the controller. Maybe remap Shift + Stem Split (currently mapped as Silent cue, which is easy to assign to a pad mode/custom button somewhere else).
It's your call at the end of the day - your preferences/style of play is most likely different from mine.
It's your call at the end of the day - your preferences/style of play is most likely different from mine.
Posted Mon 18 Nov 24 @ 10:46 pm
That's a really good idea (obvious in hindsight, lol). Thanks again for the input. Excited to make remixes on the fly with stems.
Posted Mon 18 Nov 24 @ 10:53 pm
After connecting my old DDJ-SX I was able to see the mapping script for the "dual deck" button - "toggle $dualdeckleft" and "toggle $dualdeckright", one for each button on the left or right.
Not sure if this helps for the Rane Four, is there a way to see what is behind the variable(?) $dualdeckleft?
I also came across your post where DJDAD helped you do something similar with your DJM-S11. Those examples also did not seem to work for me.
Also tried simply "dualdeckmode on" and "dualdeckmode_decks on" - neither seemed to do anything as written.
I'll keep digging.
Not sure if this helps for the Rane Four, is there a way to see what is behind the variable(?) $dualdeckleft?
I also came across your post where DJDAD helped you do something similar with your DJM-S11. Those examples also did not seem to work for me.
Also tried simply "dualdeckmode on" and "dualdeckmode_decks on" - neither seemed to do anything as written.
I'll keep digging.
Posted Tue 19 Nov 24 @ 3:29 am
A couple notes:
i.e. You need both - something to toggle 1) and 2) at the beginning each mapping, to make it work.
See thw DJM-S11 mapping and the HOTCUE_PAD mappings as an example.
I'm not entirely sure how the DDJ-SX dual deck mappings work with those global variables (dualdeckleft, dualdeckright). It could be that was the older way of doing things and the newer verbs are potentially setting/checking those variables underneath the covers.
- dualdeckmode toggles the modified behavior for deck operations
It alone however isn't enlugh...you need to ensure 2) - dualdeckmode_deck is included as an action in scripts
It looks like:
dualdeckmode_decks & <deck operation>
i.e. You need both - something to toggle 1) and 2) at the beginning each mapping, to make it work.
See thw DJM-S11 mapping and the HOTCUE_PAD mappings as an example.
I'm not entirely sure how the DDJ-SX dual deck mappings work with those global variables (dualdeckleft, dualdeckright). It could be that was the older way of doing things and the newer verbs are potentially setting/checking those variables underneath the covers.
Posted Tue 19 Nov 24 @ 12:30 pm
On some units (like the original DDJ-SX) the "dualdeck" mode is actually a hardware function.
This means that it's the hardware itself that sends MIDI messages for both "left" or "right" decks when you operate one of them.
That's why DDJ-SX doesn't have any complex mapping about this. It works "out of the box" via the device firmware.
This means that it's the hardware itself that sends MIDI messages for both "left" or "right" decks when you operate one of them.
That's why DDJ-SX doesn't have any complex mapping about this. It works "out of the box" via the device firmware.
Posted Tue 19 Nov 24 @ 8:46 pm
Thanks for that clarification @PhantomDeejay🍺
Posted Tue 19 Nov 24 @ 10:51 pm
I'm going to make another post with a more direct question now that I've learned a bunch in this post. Thank you everyone!
Posted Wed 20 Nov 24 @ 3:40 am
I reached out to Rane support as well. So far they are perplexed as to why a DJ would want to make a remix with two different songs.
As I'm not a DJ, I'd like to ask - is this the general direction of the professional community? Are remixes generally not made with a controller like this? It was so easy with the old DDJ-SX from a century ago, but maybe the thought process has changed.
Am I digging myself into a dead end?
As I'm not a DJ, I'd like to ask - is this the general direction of the professional community? Are remixes generally not made with a controller like this? It was so easy with the old DDJ-SX from a century ago, but maybe the thought process has changed.
Am I digging myself into a dead end?
Posted Wed 20 Nov 24 @ 5:31 pm
You're not...you're just using the controller outside of what they designed it to do with software they see as second class to the software they designed it for, so of course they will not be willing to help.
Did you actually try what was suggested earlier? Start with a mapping for dualdeckmode maybe a custom button for a deck, then change maybe the hotcue pad to have dualdeckmode_decks & in front of its original mapping for each pad button, then check that each pad button controls the adjacent decks accordingly (I know this worked last time I tried it).
Platter manipulation syncing I've never tried so I couldn't help there immediately (would have to try it at home). In theory I would say modify the jog mapping to do dualdeckmode_decks & in front of it's original mapping (if there is a condition, put it in front of the branch action that has touchwheel or similar), but I'm not sure if that works (devs/other mapping experts could help here).
Did you actually try what was suggested earlier? Start with a mapping for dualdeckmode maybe a custom button for a deck, then change maybe the hotcue pad to have dualdeckmode_decks & in front of its original mapping for each pad button, then check that each pad button controls the adjacent decks accordingly (I know this worked last time I tried it).
Platter manipulation syncing I've never tried so I couldn't help there immediately (would have to try it at home). In theory I would say modify the jog mapping to do dualdeckmode_decks & in front of it's original mapping (if there is a condition, put it in front of the branch action that has touchwheel or similar), but I'm not sure if that works (devs/other mapping experts could help here).
Posted Wed 20 Nov 24 @ 5:44 pm
Thanks for the words of encouragement.
I have tried various combinations of what was posted here and also in the thread for your DJM-S11. So far nothing has made any impact of any kind whatsoever (lol) - which makes it hard to build on or learn from. I've also been digging through other controllers to see what the general mapping code looks like, but each controller seems to do all but the simplest things completely different and borderline proprietary. It makes me think the Rane Four (like all the controllers I've studied so far) will need a very proprietary set of commands to get this to work. This is why I reached out to Rane support.
I have high hopes this controller can achieve this. There is a button on the controller named "STEM-SPLIT" which does almost exactly what I want - but only with two of the same song. I just need that modified to do the same thing with two *different* songs. Unfortunately, this is yet another proprietary looking bit of code - it literally just says "stems_split" in the mapping lol. Is there a way to see what code is behind that?
I have tried various combinations of what was posted here and also in the thread for your DJM-S11. So far nothing has made any impact of any kind whatsoever (lol) - which makes it hard to build on or learn from. I've also been digging through other controllers to see what the general mapping code looks like, but each controller seems to do all but the simplest things completely different and borderline proprietary. It makes me think the Rane Four (like all the controllers I've studied so far) will need a very proprietary set of commands to get this to work. This is why I reached out to Rane support.
I have high hopes this controller can achieve this. There is a button on the controller named "STEM-SPLIT" which does almost exactly what I want - but only with two of the same song. I just need that modified to do the same thing with two *different* songs. Unfortunately, this is yet another proprietary looking bit of code - it literally just says "stems_split" in the mapping lol. Is there a way to see what code is behind that?
Posted Wed 20 Nov 24 @ 6:04 pm
To be honest, there's nothing proprietary on the way Rane Four works for this matter.
The "STEM_SPLIT" is just a button that sends MIDI code. You can go on and remap that button to do ANYTHING, and the controller will keep working and be 100% happy with that.
The "stems_split" action you see on the mapping is not proprietary either. It's a function of the software. It's not an alias of some other actions grouped together in order to "hide" what's going on. It's more or less the "same" as "play" or "play_pause" (different functions, each one with it's defined logic)
It is true that most DJ's won't sync and try to manipulate two tracks together at the same time as "DUAL" function did. It was not a popular function and even Pioneer (that introduced it) slowly faded it away on it's own controllers.
Now,
Remapping your Rane Four to "enable" this feature is possible with the tools VirtualDJ provides you.
Pick a button on the controller and remap it to dualdeckmode
Remap your JOG as follows:
Now, when you use the button you remaped above to toggle "dualdeckmode" on, and you move the jog, the jog should respond on both decks (1&3 or 2&4) at the same time.
You can expand the use of dualdeckmode_decks at any other button you wish (like beatjump, play, cue, loop e.t.c.)
There's only one catch:
You can't use it on queries. See the action I posted above for the jog.
shift ? touchwheel 'search' : dualdeckmode_decks & touchwheel <<< This works
dualdeckmode_decks & shift ? touchwheel 'search' : touchwheel <<< This doesn't
The scripts seem almost the same, but they are not. You cannot use dualdeckmode_decks in front of a query. However if you use it AFTER the query, it will work.
The rule is this
QUERY ? THIS IF TRUE : THAT IF FALSE <<< Works
QUERY ? dualdeckmode_decks & THIS IF TRUE : THAT IF FALSE <<< Works
QUERY ? THIS IF TRUE : dualdeckmode_decks & THAT IF FALSE <<< Works
QUERY ? dualdeckmode_decks & THIS IF TRUE : dualdeckmode_decks & THAT IF FALSE <<< Works
dualdeckmode_decks & QUERY ? THIS IF TRUE : THAT IF FALSE <<< Doesn't work
PS: The software "keeps track" from which deck the dualdeckmode action was called in order to know which 2 decks to bind the controls for (1&3 OR 2&4)
Therefore the best practice is to call the dualdeckmode from a button that exists on both of it's sides of your controller. This ensures that VirtualDJ recognizes which deck is calling the action.
In theory it should be possible to call the action from keyboard as well via deck 1 dualdeckmode but it's not advised to do so
The "STEM_SPLIT" is just a button that sends MIDI code. You can go on and remap that button to do ANYTHING, and the controller will keep working and be 100% happy with that.
The "stems_split" action you see on the mapping is not proprietary either. It's a function of the software. It's not an alias of some other actions grouped together in order to "hide" what's going on. It's more or less the "same" as "play" or "play_pause" (different functions, each one with it's defined logic)
It is true that most DJ's won't sync and try to manipulate two tracks together at the same time as "DUAL" function did. It was not a popular function and even Pioneer (that introduced it) slowly faded it away on it's own controllers.
Now,
Remapping your Rane Four to "enable" this feature is possible with the tools VirtualDJ provides you.
Pick a button on the controller and remap it to dualdeckmode
Remap your JOG as follows:
<map value="JOG" action="shift ? touchwheel 'search' : dualdeckmode_decks & touchwheel" />
<map value="JOG_TOUCH" action="shift ? nothing : dualdeckmode_decks & touchwheel_touch" />
Now, when you use the button you remaped above to toggle "dualdeckmode" on, and you move the jog, the jog should respond on both decks (1&3 or 2&4) at the same time.
You can expand the use of dualdeckmode_decks at any other button you wish (like beatjump, play, cue, loop e.t.c.)
There's only one catch:
You can't use it on queries. See the action I posted above for the jog.
shift ? touchwheel 'search' : dualdeckmode_decks & touchwheel <<< This works
dualdeckmode_decks & shift ? touchwheel 'search' : touchwheel <<< This doesn't
The scripts seem almost the same, but they are not. You cannot use dualdeckmode_decks in front of a query. However if you use it AFTER the query, it will work.
The rule is this
QUERY ? THIS IF TRUE : THAT IF FALSE <<< Works
QUERY ? dualdeckmode_decks & THIS IF TRUE : THAT IF FALSE <<< Works
QUERY ? THIS IF TRUE : dualdeckmode_decks & THAT IF FALSE <<< Works
QUERY ? dualdeckmode_decks & THIS IF TRUE : dualdeckmode_decks & THAT IF FALSE <<< Works
dualdeckmode_decks & QUERY ? THIS IF TRUE : THAT IF FALSE <<< Doesn't work
PS: The software "keeps track" from which deck the dualdeckmode action was called in order to know which 2 decks to bind the controls for (1&3 OR 2&4)
Therefore the best practice is to call the dualdeckmode from a button that exists on both of it's sides of your controller. This ensures that VirtualDJ recognizes which deck is calling the action.
In theory it should be possible to call the action from keyboard as well via deck 1 dualdeckmode but it's not advised to do so
Posted Thu 21 Nov 24 @ 7:26 pm
@PhantomDeejay thank you for providing that information.
I did have a question about dual deck mode behavior for jogs/motorwheels.
I have a related question. Let's say you did all of your mappings to use the feature, does this mean that one now has to go to jog controller im question to change the touchwheel mapping to allow for dual controls where it's not handled automatically by the hardware?
This does seem a bit cumbersome - I'm not sure if the expectation/way things are are the same in other software (I would think these functions all come for free with the flip of the "dualdeckmode" equivalent setting).
What was the reason for not having the dualdeckmode_decks & behaviour be default (pads, jog/motorwheel control all synced) given dualdeckmode was toggled to be on?
I did have a question about dual deck mode behavior for jogs/motorwheels.
I have a related question. Let's say you did all of your mappings to use the feature, does this mean that one now has to go to jog controller im question to change the touchwheel mapping to allow for dual controls where it's not handled automatically by the hardware?
This does seem a bit cumbersome - I'm not sure if the expectation/way things are are the same in other software (I would think these functions all come for free with the flip of the "dualdeckmode" equivalent setting).
What was the reason for not having the dualdeckmode_decks & behaviour be default (pads, jog/motorwheel control all synced) given dualdeckmode was toggled to be on?
Posted Thu 21 Nov 24 @ 7:48 pm