Quick Sign In:  

Forum: VirtualDJ Plugins

Topic: Custom CDJ-400 Mapper for VirtualDJ 6 by shmike

This topic is old and might contain outdated or incorrect information.

shmikeHome userMember since 2009
Hello everyone,

I'm only been playing around with the demo version of VirtualDJ 6, and I must say so far the affair has been quite satisfying :)

I use 2x CDJ-400s in my setup, and the first thing I noticed when using VirtualDJ with the 400s is that the CUE and PLAY button behaviour works differently in the VirtualDJ environment compared to the player in its native, standalone mode.

So I have been tinkering with the mapper file, and I have now tweaked it up enough so that I'm satisfied that the CDJ-400 now works in the same way with VirtualDJ as it would if it wasn't being used as a controller.

Things I've implemented:
- Pressing PLAY after holding down CUE to preview now resumes the song!
- CUE behaviour and PLAY behaviour still works as it should on its own.
- Changes have been made to the PLAY and CUE LED indicator flashes / on solid / blinks and how fast the LED blinks on the CDJ so that it is the same (or as close to) as the CDJ in normal mode. See for yourself - whilst playing with CUE set, paused, returned to CUE, etc.

Also, I've been trying to use the VDJScript TEXT command to try and get text to display on the screens of the CDJ-400, but I'm having absolutely no luck. Does anyone have any ideas?

Finally, here is the modified XML file that will produce the classic CDJ-400 CUE and PLAY button behaviour:


<?xml version="1.0" encoding="UTF-8"?>
<mapper device="CDJ400" author="shmike for Atomix Productions" description="Pioneer CDJ-400" version="601" date="18/09/2009">
<map value="EJECT" action="invert_controllers &amp; refresh_controller &apos;CDJ-400&apos;" />
<map value="PLAY" action="var &quot;play_reset&quot; ? play_pause : var &quot;cue_pr&quot; ? play &amp; set &quot;cue_resume&quot; 1 &amp; set &quot;play_reset&quot; 1 : play_pause &amp; set &quot;cue_resume&quot; 0 &amp; set &quot;play_reset&quot; 1" />
<map value="CUE" action="down ? cue_stop &amp; set &quot;cue_pr&quot; 1 &amp; set &quot;play_reset&quot; 0 : var &quot;cue_resume&quot; ? nothing &amp; set &quot;cue_resume&quot; 0 &amp; set &quot;play_reset&quot; 1 : cue &amp; stop &amp; set &quot;cue_pr&quot; 0" />
<map value="PITCH" action="pitch_slider" />
<map value="JOG_WHEEL" action="scratch_wheel" />
<map value="JOG_TOUCH" action="scratch_wheel_touch" />
<map value="PITCH_RANGE" action="pitch_range &apos;6,10,16,100&apos;" />
<map value="SEARCH+" action="seek +4" />
<map value="SEARCH-" action="seek -4" />
<map value="TRACK+" action="seek +4000ms" />
<map value="TRACK-" action="seek -4000ms" />
<map value="LOOPIN" action="loop_in" />
<map value="LOOPOUT" action="loop_out" />
<map value="RELOOP" action="reloop_exit" />
<map value="LOOP+" action="loop_double" />
<map value="LOOP-" action="loop_half" />
<map value="BACK" action="browser_folder" />
<map value="ENTER" action="holding ? recurse_folder : browser_enter" />
<map value="TRACK" action="browser_scroll" />
<map value="MASTER_TEMPO" action="master_tempo" />
<map value="VINYL_MODE" action="vinyl_mode" />
<map value="HOLD" action="menu" />
<map value="FX1" action="menu_button 1 &apos;hotcue,sampler,effect&apos;" />
<map value="FX2" action="menu_button 2 &apos;hotcue,sampler,effect&apos;" />
<map value="FX3" action="menu_button 3 &apos;hotcue,sampler,effect&apos;" />
<map value="REVERSE" action="reverse" />
<map value="TEXT" action="var &quot;$show_artist&quot; ? get title-artist : get artist-title" />
<map value="TIME_MODE" action="holding 300ms ? auto_cue : toggle &quot;$remain_time&quot; " />
<map value="TEXT_MODE" action="toggle &quot;$show_artist&quot;" />
<map value="MEMORY" action="holding 300ms ? delete_cue : smart_loop" />
<map value="CALL" action="pause ? pause_stop : nothing" />
<map value="LED_REMAIN" action="var &quot;$remain_time&quot;" />
<map value="LED_A.CUE" action="auto_cue" />
<map value="LED_MEMORY" action="smart_loop" />
<map value="LED_PITCHRANGE_6" action="pitch_range 6%" />
<map value="LED_PITCHRANGE_10" action="pitch_range 10%" />
<map value="LED_PITCHRANGE_16" action="pitch_range 16%" />
<map value="LED_PITCHRANGE_WIDE" action="pitch_range 100%" />
<map value="LED_LOOPIN" action="loop_in ? on blinkfast : loop ? on blinkfast : on" />
<map value="LED_LOOPOUT" action="loop_out ? on blinkfast : loop ? on blinkfast : on" />
<map value="LED_CUE" action="cue ? on : play ? on : on blinkfast" />
<map value="LED_PLAY" action="play ? var &quot;play_reset&quot; ? on : blink : blink" />
<map value="LED_REVERSE" action="reverse" />
<map value="LED_JOGTOUCH" action="scratch_wheel_touch" />
<map value="LED_JOGMODE" action="vinyl_mode" />
<map value="LED_LOOP" action="loop ? get beat : off" />
<map value="DIGIT_TIME_MIN" action="get time_min" />
<map value="DIGIT_TIME_SEC" action="get time_sec" />
<map value="DIGIT_TIME_MILISEC" action="get time_ms" />
<map value="DIGIT_TOTALTIME_MIN" action="get totaltime_min" />
<map value="DIGIT_TOTALTIME_SEC" action="get totaltime_sec" />
<map value="DIGIT_TOTALTIME_MILISEC" action="get totaltime_ms" />
<map value="DIGIT_TRACK" action="get deck" />
<map value="DIGIT_BPM" action="get bpm" />
<map value="DIGIT_TEMPO" action="get pitch" />
<map value="LED_RELOOP" action="loop ? on : off" />
</mapper>



Hope this comes in handy for someone! Enjoy.

shmike
 

Posted Tue 29 Sep 09 @ 7:38 pm
brunocoHome userMember since 2009
is there anyway though i can get the effects on the cdj 400 (jet, rock and wah) to work on virtual dj instead of having those buttons as the hot cue's??
 

Posted Sat 05 Dec 09 @ 9:01 pm
 

Posted Sun 06 Dec 09 @ 12:18 pm


(Old topics and forums are automatically closed)