Connexion rapide:  

Forum: VirtualDJ Technical Support

Sujet Custom Stems Pads (with led and pads mapping) for Denon MC4000
Hello to the community.
i just finish a small cool mapping for the Denon MC4000, i included too some modifications.
Here the list:
-Modification of the Play/Pause button, now is blinking when 30sec remain on the track (1000ms and 500ms the last 15sec).
-Adjust the blinking of the CUE and Play/Pause button to 1300ms.
-Stems pads section take place now in the loop roll pads section ( i almost never use the loop roll section and she's already exist in the effect section).
-Blinking symmetric colors (blue and cyan) for the stems pads and constant color (red) if you active one stem pad.
-The Kick stem is activate/desactivate by SHIFT + PAD1.
-HOTCUE from 1 to 4 are red now (PadMode button is red for this Hotcue section)
-Complete Stems pads with name, location and colors integration in pads panel.
-master volume is setting to 45% when you open VDJ.
-Blinking function for Key Lock (850ms).
-Blinking function for SYNC button (3500ms).

Ok i give you the XML for the pad section, you just to have to open a existing XML in C:\Users\Name\Documents\VirtualDJ\Pads select all, paste and save the XML with the name stems.

<?xml version="1.0" encoding="UTF-8"?>
<page name="stems">
<pad1 name="Vocal" color="color 'blue'">stem_pad 'vocal'</pad1>
<pad2 name="Instru" color="color 'orange'">stem_pad 'instru'</pad2>
<pad3 name="Bass" color="color 'violet'">stem_pad 'bass'</pad3>
<pad5 name="Kick" color="color 'red'">stem_pad 'kick'</pad5>
<pad6 />
<shift_pad1 />
<shift_pad2 />
<shift_pad3 />
<shift_pad5 name="Kick" color="color 'red'">stem_pad isolate 'kick'</shift_pad5>
<shift_pad6 />
<param1 name="`stems_bleed`">stems_bleed</param1>
<pad4 color="color 'yellow'" name="Hit Hat">stem_pad 'hihat'</pad4>
<shift_pad7 />
<shift_pad4 />
</page>


To finish here the complete mapping, same manipulation like above and save with this path: C:\Users\Name\Documents\VirtualDJ\Mappers and this name : Denon DJ MC4000 - Mapping with stems.


<?xml version="1.0" encoding="UTF-8"?>
<mapper device="MC4000" author="Atomix Productions" version="850" date="2020-07-29">
<info>http://www.virtualdj.com/manuals/hardware/denon/mc4000/index.html</info>
<map value="SHIFT" action="shift" />
<map value="JOG_TOUCH" action="shift ? touchwheel_touch 'search' : touchwheel_touch" />
<map value="JOG" action="shift ? touchwheel 'search' : touchwheel" />
<map value="PITCH" action="pitch" />
<map value="VINYL" action="vinyl_mode" />
<map value="SHIFT_VINYL" action="dump while_pressed" />
<map value="LED_VINYL" action="dump ? blink : vinyl_mode" />
<map value="kEYLOCK" action="key_lock" />
<map value="LED_kEYLOCK" action="key_lock ? blink 850ms ?" />
<map value="SHIFT_kEYLOCK" action="pitch_range +1" />
<map value="PITCHBEND-" action="pitch_bend -2% 500ms" />
<map value="PITCHBEND+" action="pitch_bend +2% 500ms" />
<map value="SHIFT_PITCHBEND-" action="seek -8" />
<map value="SHIFT_PITCHBEND+" action="seek +8" />
<map value="SYNC" action="sync" />
<map value="SHIFT_SYNC" action="masterdeck" />
<map value="LED_SYNC" action="blink 3500ms ? shift ? masterdeck : is_sync :" />
<map value="CUE" action="cue_stop" />
<map value="SHIFT_CUE" action="goto_start" />
<map value="LED_CUE" action="loaded ? pause ? cue ? on : blink 1300ms : off : off" />
<map value="PLAY" action="play_pause" />
<map value="SHIFT_PLAY" action="play_stutter" />
<map value="LED_PLAY" action="pause ? play ? on : blink 1300ms : songpos_remain 15000ms ? blink 500ms : songpos_remain 30000ms ? blink 1000ms : on : off" />
<map value="LOOP_AUTO" action="loop" />
<map value="LOOP_HALF" action="loop_half" />
<map value="SHIFT_LOOP_HALF" action="loop ? wheel_mode 'loop_in,jog' +1 : loop_in" />
<map value="LOOP_DOUBLE" action="loop_double" />
<map value="RELOOP" action="reloop" />
<map value="SHIFT_LOOP_AUTO" action="loop ? loop off : loop 4" />
<map value="SHIFT_LOOP_DOUBLE" action="loop ? wheel_mode 'loop_out,jog' +1 : loop_out" />
<map value="SHIFT_RELOOP" action="loop_roll_mode" />
<map value="LED_LOOP_AUTO" action="loop ? blink 750ms : on" />
<map value="LED_LOOP_HALF" action="shift ? wheel_mode 'loop_in' ? blink : loop_in : on" />
<map value="LED_LOOP_DOUBLE" action="shift ? wheel_mode 'loop_out' ? blink : loop : on" />
<map value="LED_RELOOP" action="shift ? loop_roll_mode : reloop_exit" />
<map value="SAMPLER_BANK1" action="sampler_bank -1 & down ? set '$sam1down' 1 : set '$sam1down' 0" />
<map value="SAMPLER_BANK2" action="sampler_mode -1 & down ? set '$sam2down' 1 : set '$sam2down' 0" />
<map value="SAMPLER_BANK3" action="sampler_bank +1 & down ? set '$sam3down' 1 : set '$sam3down' 0" />
<map value="SAMPLER_BANK4" action="sampler_mode +1 & down ? set '$sam4down' 1 : set '$sam4down' 0" />
<map value="SAMPLER_BUT1" action="var '$MCmodebutton' ? sampler_bank -1 : sampler_pad 1" />
<map value="SAMPLER_BUT2" action="var '$MCmodebutton' ? sampler_mode -1 : sampler_pad 2" />
<map value="SAMPLER_BUT3" action="var '$MCmodebutton' ? sampler_bank +1 : sampler_pad 3" />
<map value="SAMPLER_BUT4" action="var '$MCmodebutton' ? sampler_mode +1 : sampler_pad 4" />
<map value="SHIFT_SAMPLER_BUT1" action="sampler_stop 1" />
<map value="SHIFT_SAMPLER_BUT2" action="sampler_stop 2" />
<map value="SHIFT_SAMPLER_BUT3" action="sampler_stop 3" />
<map value="SHIFT_SAMPLER_BUT4" action="sampler_stop 4" />
<map value="LED_SAMPLER_BUT1" action="var '$MCmodebutton' ? var '$sam1down' : sampler_loaded 1 ? sampler_pad 1 ? blink 400ms : on : off" />
<map value="LED_SAMPLER_BUT2" action="var '$MCmodebutton' ? var '$sam2down' : sampler_loaded 2 ? sampler_pad 2 ? blink 400ms : on : off" />
<map value="LED_SAMPLER_BUT3" action="var '$MCmodebutton' ? var '$sam3down' : sampler_loaded 3 ? sampler_pad 3 ? blink 400ms : on : off" />
<map value="LED_SAMPLER_BUT4" action="var '$MCmodebutton' ? var '$sam4down' : sampler_loaded 4 ? sampler_pad 4 ? blink 400ms : on : off" />
<map value="SAMPLER_VOLUME" action="sampler_volume_master" />
<map value="FX1_ON" action="effect_active" />
<map value="FX2_ON" action="effect_3slots_layout ? effect_active 2 : effect_select -1" />
<map value="FX3_ON" action="effect_3slots_layout ? effect_active 3 : effect_select +1" />
<map value="LED_FX1_ON" action="shift ? effect_3slots_layout ? effect_active : effect_show_gui : effect_active" />
<map value="LED_FX2_ON" action="shift ? effect_3slots_layout ? effect_active 2 : effect_button 1 : effect_3slots_layout ? effect_active 2 : off" />
<map value="LED_FX3_ON" action="shift ? effect_3slots_layout ? effect_active 3 : effect_button 2 : effect_3slots_layout ? effect_active 3 : off" />
<map value="SHIFT_FX1_ON" action="effect_3slots_layout ? effect_select 1 +1 : effect_show_gui" />
<map value="SHIFT_FX2_ON" action="effect_3slots_layout ? effect_select 2 +1 : effect_button 1" />
<map value="SHIFT_FX3_ON" action="effect_3slots_layout ? effect_select 3 +1 : effect_button 2" />
<map value="FX1" action="effect_slider 1" />
<map value="FX2" action="effect_3slots_layout ? effect_slider 2 1 : effect_slider 2" />
<map value="FX3" action="effect_3slots_layout ? effect_slider 3 1 : effect_slider 3" />
<map value="SHIFT_FX1" action="effect_3slots_layout ? effect_slider 1 2 : effect_slider 4" />
<map value="SHIFT_FX2" action="effect_3slots_layout ? effect_slider 2 2 : effect_slider 5" />
<map value="SHIFT_FX3" action="effect_3slots_layout ? effect_slider 3 2 : effect_slider 6" />
<map value="TAP" action="beat_tap" />
<map value="SHIFT_TAP" action="effect_3slots_layout" />
<map value="LED_TAP" action="effect_3slots_layout" />
<map value="FX_BEATS" action="shift ? device_side 'left' ? video_transition_slider 1 : deck master video_fx_slider 1 : device_side 'left' ? video_transition_select : deck master video_fx_select" />
<map value="FX_BEATS_PUSH" action="shift ? device_side 'left' ? effect_show_gui 'transition' : deck master effect_show_gui 'video' : device_side 'left' ? video_transition : deck master video_fx" />
<map value="GAIN" action="gain" />
<map value="EQ_HIGH" action="eq_high" />
<map value="EQ_MID" action="eq_mid" />
<map value="EQ_LOW" action="eq_low" />
<map value="FILTER" action="filter" />
<map value="PFL" action="pfl" />
<map value="VOLUME" action="volume" />
<map value="VU_METER" action="get level" />
<map value="CROSSFADER" action="crossfader" />
<map value="BROWSE" action="browser_scroll" />
<map value="SHIFT_BROWSE" action="param_bigger 0 ? browser_scroll +10 : browser_scroll -10" />
<map value="LOAD" action="shift ? clone_from_deck : holding ? unload : load" />
<map value="BACK" action="browser_folder" />
<map value="SHIFT_BACK" action="skin_panelgroup 'mixer' +1" />
<map value="BROWSE_PUSH" action="shift ? browser_zoom : browser_window 'songs'" />
<map value="LOAD_PREPARE" action="playlist_add" />
<map value="SHIFT_LOAD_PREPARE" action="holding ? show_splitpanel 'sideview' : show_splitpanel 'sideview' ? browser_window 'sideview' ? sideview +1 : browser_window 'sideview' : show_splitpanel 'sideview' & browser_window 'sideview'" />
<map value="HEADPHONES_VOLUME" action="headphone_volume" />
<map value="HEADPHONES_MIX" action="headphone_mix" />
<map value="HEADPHONES_SPLIT" action="down ? setting 'SplitHeadphones' on : setting 'SplitHeadphones' off" />
<map value="PADSMODE" action="set 'MCmodebutton' 1 while_pressed & set '$MCmodebutton' 1 while_pressed" />
<map value="PAD1" action="var 'MCmodebutton' ? set 'MCmode' 0 & pad_page 'hotcues' : var 'MCmode' 3 ? stem_pad 'vocal' : var 'MCmode' 2 ? cue_loop 1 : var 'MCmode' 1 ? hot_cue 5 : hot_cue 1" />
<map value="PAD2" action="var 'MCmodebutton' ? set 'MCmode' 1 & pad_page 'hotcues' : var 'MCmode' 3 ? stem_pad 'instru' : var 'MCmode' 2 ? cue_loop 2 : var 'MCmode' 1 ? hot_cue 6 : hot_cue 2" />
<map value="PAD3" action="var 'MCmodebutton' ? set 'MCmode' 2 & pad_page 'cueloop' : var 'MCmode' 3 ? stem_pad 'bass' : var 'MCmode' 2 ? cue_loop 3 : var 'MCmode' 1 ? hot_cue 7 : hot_cue 3" />
<map value="PAD4" action="var 'MCmodebutton' ? set 'MCmode' 3 & pad_page 'stems' : var 'MCmode' 3 ? stem_pad 'hihat' : var 'MCmode' 2 ? cue_loop 4 : var 'MCmode' 1 ? hot_cue 8 : hot_cue 4" />
<map value="LED_PADSMODE" action="var 'MCmode' 3 ? constant 0.9 : var 'MCmode' 2 ? constant 0.5 : var 'MCmode' 1 ? constant 0.3 : constant 0.5" />
<map value="LED_PAD1" action="var 'MCmodebutton' ? var 'MCmode' 0 ? constant 0.5 : constant 0.1 : var 'MCmode' 3 ? stem_pad 'vocal' ? blink 1500ms ? constant 0.2 : constant 0.9 : constant 0.5 : var 'MCmode' 2 ? cue_loop 1 ? constant 0.5 : constant 0.1 : var 'MCmode' 1 ? hot_cue 5 ? constant 0.2 : constant 0.1 : hot_cue 1 ? constant 0.5 : constant 0.1" />
<map value="LED_PAD2" action="var 'MCmodebutton' ? var 'MCmode' 1 ? constant 0.2 : constant 0.1 : var 'MCmode' 3 ? stem_pad 'instru' ? blink 1500ms ? constant 0.9 : constant 0.2 : constant 0.5 : var 'MCmode' 2 ? cue_loop 2 ? constant 0.5 : constant 0.1 : var 'MCmode' 1 ? hot_cue 6 ? constant 0.2 : constant 0.1 : hot_cue 2 ? constant 0.5 : constant 0.1" />
<map value="LED_PAD3" action="var 'MCmodebutton' ? var 'MCmode' 2 ? constant 0.5 : constant 0.1 : var 'MCmode' 3 ? stem_pad 'bass' ? blink 1500ms ? constant 0.9 : constant 0.2 : constant 0.5 : var 'MCmode' 2 ? cue_loop 3 ? constant 0.5 : constant 0.1 : var 'MCmode' 1 ? hot_cue 7 ? constant 0.2 : constant 0.1 : hot_cue 3 ? constant 0.5 : constant 0.1" />
<map value="LED_PAD4" action="var 'MCmodebutton' ? var 'MCmode' 3 ? constant 0.9 : constant 0.1 : var 'MCmode' 3 ? stem_pad 'hihat' ? blink 1500ms ? constant 0.2 : constant 0.9 : constant 0.5 : var 'MCmode' 2 ? cue_loop 4 ? constant 0.5 : constant 0.1 : var 'MCmode' 1 ? hot_cue 8 ? constant 0.2 : constant 0.1 : hot_cue 4 ? constant 0.5 : constant 0.1" />
<map value="SHIFT_PAD1" action="var 'MCmode' 3 ? stem_pad 'kick' : var 'MCmode' 2 ? cue_loop 1 'jump' : var 'MCmode' 1 ? delete_cue 5 : delete_cue 1" />
<map value="SHIFT_PAD2" action="var 'MCmode' 3 ? loop_roll 0.25 : var 'MCmode' 2 ? cue_loop 2 'jump' : var 'MCmode' 1 ? delete_cue 6 : delete_cue 2" />
<map value="SHIFT_PAD3" action="var 'MCmode' 3 ? loop_roll 0.5 : var 'MCmode' 2 ? cue_loop 3 'jump' : var 'MCmode' 1 ? delete_cue 7 : delete_cue 3" />
<map value="SHIFT_PAD4" action="var 'MCmode' 3 ? loop_roll 1 : var 'MCmode' 2 ? cue_loop 4 'jump' : var 'MCmode' 1 ? delete_cue 8 : delete_cue 4" />
<map value="ONINIT" action="master_volume 45%" />
</mapper>
 

Posté Thu 30 Jul 20 @ 3:45 am
serieBPRO InfinityMember since 2017
This is amazing DjAku-Aku, thank you so much.
I'm going to try it, not sure if I will be able to do that myself so I'm terrible messing with all this stuff.
 

Posté Thu 30 Jul 20 @ 9:11 am
serieBPRO InfinityMember since 2017
As expected it doesn't work for me, pretty sure I'm doing something wrong.
I have your xml files ready as stated in their respectice directories ("stems" in Pads and "Denon DJ MC4000 - Mapping with stems" in Mappers). In VDJ I have selected the new mapping but the loops roll are working as always, not as stems pads.
 

Posté Thu 30 Jul 20 @ 11:47 am
serieB wrote :
As expected it doesn't work for me, pretty sure I'm doing something wrong.
I have your xml files ready as stated in their respectice directories ("stems" in Pads and "Denon DJ MC4000 - Mapping with stems" in Mappers). In VDJ I have selected the new mapping but the loops roll are working as always, not as stems pads.


hello my friend.
when you save the xml, did you add the .xml to the file? like this : Denon DJ MC4000 - Mapping with stems.xml for the mapping and stems.xml for the pad.
normally when you select the Denon DJ MC4000 - Mapping with stems the pad is organise like this in pad section (see the screenshot)
 

Posté Thu 30 Jul 20 @ 4:09 pm
DjAku-Aku wrote :
paste and save the XML with the name stems.

this name : Denon DJ MC4000 - Mapping with stems.


He seems to have taken your information literally.

 

Posté Thu 30 Jul 20 @ 4:12 pm
groovindj wrote :
DjAku-Aku wrote :
paste and save the XML with the name stems.

this name : Denon DJ MC4000 - Mapping with stems.


He seems to have taken your information literally.


it seems, i do the same operation like i describe and i have no problems,
 

Posté Thu 30 Jul 20 @ 4:19 pm
Edit
 

Posté Thu 30 Jul 20 @ 4:19 pm
serieBPRO InfinityMember since 2017
DjAku-Aku wrote :
serieB wrote :
As expected it doesn't work for me, pretty sure I'm doing something wrong.
I have your xml files ready as stated in their respectice directories ("stems" in Pads and "Denon DJ MC4000 - Mapping with stems" in Mappers). In VDJ I have selected the new mapping but the loops roll are working as always, not as stems pads.


hello my friend.
when you save the xml, did you add the .xml to the file? like this : Denon DJ MC4000 - Mapping with stems.xml for the mapping and stems.xml for the pad.
normally when you select the Denon DJ MC4000 - Mapping with stems the pad is organise like this in pad section (see the screenshot)


Hi mate! Yes, I have the xml files with the code you writed and the .xml extension:
In MAPPERS: Denon DJ MC4000 - Mapping with stems.xml
In PADS: stems.xml

I still don't know where could be the error, maybe I'm lost in translation :-)
 

Posté Thu 30 Jul 20 @ 7:14 pm
serieB wrote :
DjAku-Aku wrote :
serieB wrote :
As expected it doesn't work for me, pretty sure I'm doing something wrong.
I have your xml files ready as stated in their respectice directories ("stems" in Pads and "Denon DJ MC4000 - Mapping with stems" in Mappers). In VDJ I have selected the new mapping but the loops roll are working as always, not as stems pads.


hello my friend.
when you save the xml, did you add the .xml to the file? like this : Denon DJ MC4000 - Mapping with stems.xml for the mapping and stems.xml for the pad.
normally when you select the Denon DJ MC4000 - Mapping with stems the pad is organise like this in pad section (see the screenshot)


Hi mate! Yes, I have the xml files with the code you writed and the .xml extension:
In MAPPERS: Denon DJ MC4000 - Mapping with stems.xml
In PADS: stems.xml

I still don't know where could be the error, maybe I'm lost in translation :-)


Hi hermano!
I apply the mapping and the stems xml like if i never use it before, mean i do the same operation like you.
In my case i move the 2 xml to my desktop and do a copy on a pendrive and rebbot the computer.
Ok the original mapping is by default etc...
i move the xml on their directories, restart the computer launch vdj, it's working.
i do the same manipulation on my backup computer and it's working.
I really don't know where your problem come from, i'm stuck to help you hermano...Sorry :(

PS: I think this thread is in the Wrong section, if an administrator can move it to general discussion please, regards aku-aku.
 

Posté Fri 31 Jul 20 @ 1:00 am
Hello community!
Actually i try to resolve in private the problem with SerieB with the pads mapping, but nothing work for this moment.
On my side i verified again and again the scripts, applied the same .xml on my backup computer and on the radio computer with a fresh install of vdj 2021, everything work fine for me.

I just need to know if someone have the MC4000 to make a test if the .xml work fine on your side, maybe it's going to help me to resolve the problem with SerieB.
Best regards, Aku-aku :)

 

Posté Sun 02 Aug 20 @ 5:55 pm
serieBPRO InfinityMember since 2017
DjAku-Aku wrote :
Hello community!
Actually i try to resolve in private the problem with SerieB with the pads mapping, but nothing work for this moment.
On my side i verified again and again the scripts, applied the same .xml on my backup computer and on the radio computer with a fresh install of vdj 2021, everything work fine for me.

I just need to know if someone have the MC4000 to make a test if the .xml work fine on your side, maybe it's going to help me to resolve the problem with SerieB.
Best regards, Aku-aku :)




Thank you so much Aku-aku, you have been very kind helping me through email. Sadly it still doesn't work for me, but pretty sure with the feedback of other MC-4000 users we will find the issue. ;-)
 

Posté Sun 02 Aug 20 @ 7:10 pm
serieBPRO InfinityMember since 2017
Hi again DjAku-Aku and pals.
I have been trying to make it work your custom mapping again, it's so good to live without it but again I haven't any success.
Your custom STEMS mapping is as default, both xml files are applied correctly (in fact I have your Blinking function working), but as two years ago I can't make it work the pads with the stems, all the pads are working as loops.
Is there anything I have to change in the software? (pad menus/pad buttons selection doesn't make any difference). Would I need to remove the LOOP function at the right side? ( I never use it)



or maybe any change in the proper hardware?



Thanks for your help
 

Posté Thu 13 Oct 22 @ 8:18 am
serieBPRO InfinityMember since 2017
No one?
 

Posté Sun 16 Oct 22 @ 12:19 pm