nothingDo nothing. upexecute different actions depending if the key if pressed or released: 'up ? action1 : action2' downexecute different actions depending if the key if pressed or released: 'down ? action1 : action2' isrepeatexecute different actions depending if the key is being repeated or if it's the first message (on Windows, keyboard shortcuts are usually auto-repeated while held down): 'isrepeat ? nothing : goto_cue')
Param
true (or on or yes)returns true false (or no or off)returns false constant (or get_constant)Return the specified value
Example: 'get constant 75%' always returns 75% dimequivalent of "constant 0.1" color_mixMix two colors based on an action in the third parameter
color_mix white red `get_limiter` colorcolor "red"
color "#C08040"
color 0.8 0.5 0.25
color 75% "red" (returns a dimmed red)
color 0.66 (returns a gray) param_bigger (or param_greater)check if the value of the calling slider/encoder/button is bigger than something: 'param_bigger 0 ? sampler loop 200% : sampler loop 50%'
compare value of the first parameter with the value of the second parameter. Both parameters can be actions instead of values: 'param_bigger pitch pitch_slider' param_equalCheck if the value of the calling slider/encoder/button is equal to something
To compare a string with the result of an action, use param_equal `action param` "string". For example: param_equal `get_browsed_song 'type'` "audio" param_containscheck if the value of the calling action contains the string in the parameter param_smallercheck if the value of the calling slider/encoder/button is smaller than something: 'param_smaller 0 ? sampler loop 200% : sampler loop 50%' param_addadd the given value to the value of the calling slider/encoder/button
add the value of the first parameter with the value of the second parameter. Both parameters can be actions instead of values: 'param_add `get_var a` `get_var b`' param_multiplymultiply the value of the calling slider/encoder/button by the given value: 'param_multiply 300% & effect slider'
The parameter can also be an action 'cue_pos 0 & param_multiply "get_time total 1000"' param_1_xinvert the value of the calling slider/encoder/button (calculate 1/x) 'param_1_x & effect slider' param_powparam_pow y : computes the power of the caller to the power of y. Can be 0.5 for calculating square root. param_invertinvert the value of the calling slider/encoder/button (1-x): 'param_invert & pitch_slider' param_modwrap the value of the calling slider/encoder if more than the given value param_pingpongtransform the value of the calling slider/encoder from a linear scale to a forth-and-back scale param_castcast the value of the previous query action into a new type: 'pitch_range & param_cast "percentage"'. Valid types are 'integer', 'float', 'percentage', 'ms', 'boolean', 'beats', 'text'.
casting to text can also optionally limit the number of characters: 'get_browsed_song "artist" & param_cast "text" 5'
to format a number as text with a specific number of digits: 'get_bpm & param_cast "000"'
param_cast 'int_trunc' : provides the integer part of a number without rounding to the nearest integer
param_cast 'frac' : provides the decimal part of a number.
param_cast 'relative' and param_cast 'absolute' : change the parameter to be a relative or absolute value param_deltatransform an absolute value into relative (example: 0.5, 0.7, 0.8 will become +0.0, +0.2, +0.1) param_uppercasechange the text result of the previous element in the script into uppercase param_lowercasechange the text result of the previous element in the script into lowercase param_ucfirstchange the first letter into upper case and the rest in lower case blinkturn on and off the LED, once per second. You can specify the speed: 'blink 1000ms'
Speed can also be specified in number of beats: 'blink 1bt'. The time blinking can also be specified: 'blink 1bt 25%' fadeout'loop & fadeout 10000ms 3000ms' will return 100% when loop is on, and fade out to 0% after 10 seconds in 3 seconds when loop turns off
Alternatively, the action can be entered as the third parameter in backticks: 'fadeout 10000ms 3000ms `loop`' pulsereturn true when the previous action turns to true only for the duration specified: 'is_using 'equalizer' & pulse 2000ms' param_make_discreteuseful for smooth endless encoders, to make them discrete
Example: 'param_make_discrete 0.1 & param_bigger 0 ? loop_move +100% : param_smaller 0 ? loop_move - 100%'
Repeat
repeatrepeat the actions every x ms as long as the key is pressed: 'repeat 1000ms & browser_scroll +1' (default is 500ms if no speed is specified. Second parameter can specify a delay before repeating the first time) repeat_startRepeat an action at a specified interval: 'repeat_start 'myrepeatname' 1000ms 5 & browser_scroll +1' (first parameter is an identifier name, second parameter is the interval and the third optional parameter can specify a number of times to repeat). The first action will be performed after an interval has passed.
The interval can be specified in milliseconds, beats, or can be an action of itself. 'repeat_start 'myrepeatname' 1bt' or 'repeat_start 'myrepeatname `get_var a`' repeat_start_instantRepeat an action at a specified interval: 'repeat_start_instant 'myrepeatname' 1000ms 5 & browser_scroll +1' (first parameter is an identifier name, second parameter is the interval and the third optional parameter can specify a number of times to repeat). The first action will be performed immediately. repeat_stopstop a previous repeat_start or repeat_start_instant action: 'repeat_stop 'myrepeatname'' waitwait for the specified amount of time between two script actions: 'wait 1bt & pause', 'wait 500ms & play' holdingexecute different actions depending if the key is pressed for a long time or not: 'holding ? automix : mix_now'. you can specify the time ('holding 1000ms'), by default it's 500ms. doubleclickexecute different actions depending if the key is pressed twice in a short period of time or not: 'doubleclick ? automix : mix_now'. you can specify the time between two presses ('doubleclick 1000ms'), by default it's 300ms.
Skin
skin_panel (or skin_pannel)show or hide a panel on the skin. "skin_panel 'my_panel' on" skin_panelgroup (or skin_pannelgroup)change which panel from a skin panel group is shown. syntax "skin_panelgroup 'groupname' 'panelname'" or "skin_panelgroup 'groupname' +1" or "skin_panelgroup 'groupname' 0.75" skin_panelgroup_availableset a panel to be available or not. panels that are not available will not show up in group cycles lock_panel (or lock_pannel)NOTE: despite the name, this action acts on <split> elements, not <panel> show_splitpanelShow/hide the specified split panel
Examples: "show_splitpanel 'sidelist'", "show_splitpanel 'sideview' on", "show_splitpanel 'sidelist' 50%" rackOpen/close a unit in specified rack. Example: "rack 'rack1' 'unit1'" rack_soloOpen/close a unit in full size on the specified rack. Closing the unit will re-open the previous configuration. Example: "rack_solo 'rack1' 'unit1'" rack_prioritizePrioritizes a unit of the specified rack. When more configurations with same size are available, the prioritized unit will get most space. Example: "rack_prioritize 'rack1' 'unit1'" custom_buttona custom button is a button with initially no action, but the action can be written in VDJScript by the user custom_button_namereturn (or set) the name for this custom button has_custom_buttonreturns true if this custom button has an action assigned to it custom_button_editopen the custom button editor to set or change the action multibuttonClick on the named multibutton: 'multibutton "my_button"' multibutton_selectOpen the selection menu for the named multibutton.
If a second text parameter is provided after the name, use it as the new action to load in the multibutton: 'multibutton_select "my_button" "goto_cue 2 & play"' zoom (or zoom_scratch)zoom horizontal rhythm and scratch visual zoom_verticalzoom vertical scratch wave switch_skin_variation load_skinload a new skin. Use syntax " load_skin ':newvariation' " to load a different variation inside the same skin file. skin_empty_buttons is_usingcheck if a particular feature is being used ('filter', 'equalizer', 'loop', 'cue', 'sample', 'pads', 'effect', 'load') has_logo get_skin_color has_cover skin_width skin_height skin_starter_tip
System
get_cpuget the cpu activity get_peak_audio get_clockget the current time (use 'get_clock 12' to display AM/PM) get_dateget the current date (use 'get_date "format"' to get the date in a specific format. format can include %Y, %m, %d for year, month and day, %A for weekday) is_pc (or is_windows)return true if the computer is a PC, false if it's a MAC (example: <panel visible="is_pc" />) is_mac (or is_macos)return true if the computer is a MAC, false if it's a PC has_notchreturn true when the display has a notch at the top center and the skin is maximized, false otherwise system debugdisplay the value of the parameter (you can use this to see what values controllers are sending, for example) open_helpopen the user guide get_batteryreturns how much battery is left on your laptop is_batteryreturns true if your computer is running on batteries has_batteryreturns true if your computer has batteries getfoodbecause no DJ should work on an empty stomach show_keyboarddisplay an onscreen keyboard system_volumeChange the system volume of the active sound card when available (use has_system_volume to check) has_system_volumeReturns true when the system volume can be modified handshakePerform an encrypted handshake to ensure that this plugin is currently being called by a real VirtualDJ environment.
Call this passing any string, decrypt the result using VirtualDJ's handshake public key, and check that it matches what you passed.
See the developer documentation on our website for example code.
Variables
var'var "my_var" ? my_action1 : my_action2'. execute my_action1 if my_var is true (non zero), execute my_action2 otherwise.
You can also compare var with a specific value: 'var "my_var" 1 ? my_action1 : my_action2' execute my_action1 is my_var is 1, or my_action2 otherwise var_equalsyntax: 'var_equal "my_var" 42 ? my_action1 : my_action2'. execute my_action1 if my_var equals 42, execute my_action2 otherwise.
syntax: 'var_equal "this_var" "that_var" ? action1 : action2' execute action1 if this_var equals that_var, execute action2 otherwise var_not_equalsyntax: 'var_not_equal "my_var" 42 ? my_action1 : my_action2'. execute my_action1 if my_var doesn't equal 42, execute my_action2 otherwise. var_smallersyntax: 'var_smaller "my_var" 42 ? my_action1 : my_action2'. execute my_action1 if my_var is smaller than 42, execute my_action2 otherwise. var_greatersyntax: 'var_greater "my_var" 42 ? my_action1 : my_action2'. execute my_action1 if my_var is greater than 42, execute my_action2 otherwise. set_var_dialogset_var_dialog 'varname' opens a dialog to enter the value of varname
set_var_dialog 'varname' 'information text' opens a dialog to enter the value of varname, and shows the second parameter as informational text setset 'varname' 5 sets variable varname to the value 5
set 'varname' 'var2' sets variable varname to the value of variable var2
set 'varname' `play` sets variable varname to the value of the action play togglesyntax: 'toggle "my_var"'. toggle my_var between true and false. cyclesyntax: 'cycle "my_var" 42'. increment my_var, and goes back to 0 when it reaches 42. 'cycle "my_var" -42' decrements my_var, and goes to 41 after it reached 0. get_varget the value of the specified variable set_varset the value of the specified variable var_listshow a window with a list of your current variables and their values controllervarvariable that is unique to each controller. You can add # in front of the variable name to make it both deck and controller-dependent
Window
closeclose the application. minimizeminimize the application in the taskbar. maximizemaximize the application to maximized, full screen, or back to windowed.
A specific mode can be selected using "maximize 'windowed'", "maximize 'maximized'" or "maximize 'fullscreen'" show_windowon skin with multiple windows, show or hide the specified window open_stem_creator
Audio
song_posposition in the song. (the difference between song_pos and goto is that song_pos can be used as a slider). gotochange the position in the song. 'goto +10ms' jumps 10ms forward. 'goto -4' jumps 4 beats backward. 'goto 20%' jumps to 20% of the song's length. goto_barput the song on its nth beat after the downbeat without loosing sync: 'goto_bar 4' songpos_remainget the remaining time in %. if used with a parameter (in % or ms), returns true if the time left is less or equal than the value: 'songpos_remain 500ms ? blink'. songpos_warningreturns true if the song is in its last 30s (actual time can be adjusted in options) seekmove into the song while the button is pressed. 'seek +2' moves beat by beat, skipping 2 beats every 10ms. 'seek +420ms' moves from 420ms every 10ms. using skip with a beat number keep the song playing correctly while moving inside. reverseplay the song backward dumpreverse the playback direction while dump is active, then when deactivated, start again forward from where the song should have been if it had been playing forward during the dump.
when quantize_all is active, dump will be quantized to match the beats. This can also be forced by using 'dump quantized' or 'dump notquantized'
to dump only while the key is pressed, use 'dump while_pressed' goto_first_beatautomatically goes to the first beat in the song. goto_startgo to the start of the song. mixermodeReturn true if internal mixer used (master output available), false if external mixer used. Parameter can also be explicit: mixermode "internal" or mixermode "external" beat_juggleAlternatively jumps one beat forward and backward
'beat_juggle 0.5' will jump 1/2 beat forward or backward swap_decksswap deck 1 and deck 2 clone_deckclone the deck (load the same song on the other deck, and play it from the same position, ready for beat-juggling). clone_from_deckclone from the other deck (load the song from the other deck, and play it from the same position, ready for beat-juggling). move_deckload the song from the called deck into the deck specified by the parameter and unloads the song from the calling deck stems_split'stems_split' will duplicate deck 1 to deck 3 or deck 2 to 4, with the vocals playing on the first deck and the instruments on the other deck
'stems_split vocal target' will duplicate the opposite deck to the deck stems_split was called from stems_split_unlinkAfter using stems_split, you can use stems_split_unlink to have the decks behave independently, allowing to scratch the vocals without affecting the instrumental for example dualdeckmodetoggle dual deck mode. when enabled dualdeckmode_decks will apply to both decks 1/3 or 2/4 dualdeckmode_decks beatjumpJump a certain number of beats as set by beatjump_select
'beatjump +1' to jump forward, or 'beatjump -1' to jump backwards beatjump_selectSelect the number of beats the beatjump action will jump
'beatjump_select 4' to set beatjump to 4 beats
'beatjump_select +1' to set the next higher beat size
'beatjump_select 50%' to halve the current beat size
'beatjump_select 200%' to double the current beat size beatjump_pagechange the offset of the jumps in beatjump_pad actions beatjump_padexecute 'goto +x' where x depends on the pad number and the beatjump_page
Audio_controls
playstart the deck. play_stutterif paused, start the deck. if playing, restart from last stutter point. play_pauseif paused, start the deck. if playing, pause the deck. pause_stopif playing, pause the deck. if stopped, rewind to beginning of the song, then cycle through all cue points each time pressed. stopstop to the last cue point, then on second press to the beginning of the song, then cycle through the cue points. pausepause the deck. play_button (or play_3button)depending on the play_mode, act like play_stutter (Numark way) or play_pause (Pioneer way). stop_button (or stop_3button)depending on the play_mode, act like pause_stop (Numark way) or stop (Pioneer way). play_optionsshow a context menu to select the behavior of the play and cue buttons, and the various smart modes auto_sync_optionsshow a context menu to control the various auto-sync options deck_optionsshow a context menu to select the behavior of the play and cue buttons, the various smart modes, and pitch options blink_playblinking fast when less than 10 seconds remaining, blinking slow when less than 30 seconds remaining, off otherwise
'blink_play on' is similar, but is on when the song is paused, and only off if no song is loaded or the loaded song has an error emergency_playplay something
Audio_inputs
mic (or microphone)activate or deactivate the microphone input mic_talkoverLower the volume of all decks while active and activates microphone
Use 'mic_talkover while_pressed' to only activate mic as long as button is held
Use 'mic_talkover 20% 1000ms' to lower deck volumes to 20% and fade to the volume in 1 second. (Defaults are 30% and 400ms) mic_eq_low mic_eq_mid mic_eq_high djc_mic aux_volume lineinActivate or deactivate the linein on this deck.
You can also specify a linein number to assign another linein: "deck 1 linein 2 on"
Or you can assign the microphone or aux input: "deck 3 linein 'mic' on" or "deck 3 linein 'aux' on"
If you don't want the line in to become the master deck automatically, you can use "deck 3 linein 'trs'" linein_recrecord the linein input on this deck. mic_recrecord the microphone input on this deck
Audio_scratch
touchwheel (or scratch_wheel or scratchwheel)used for a jogwheel with touch sensitivity. 'touchwheel +1.0' means a full rotation of the wheel. get_scratch_direction touchwheel_touch (or scratch_wheel_touch or scratchwheel_touch or speedwheel_touch)use when the touchwheel is touched, to hold the song and start to scratch. jogwheel (or jog or jog_wheel)used for a jogwheel without touch sensitivity. 'jogwheel +1.0' means a full rotation of the wheel. motorwheelused for a motorized jogwheel. Each time the jogwheel moves, send 'motorwheel "move" +1.0' followed by 'motorwheel "timestamp" 1000.0'. 'move +1.0' means a full platter rotation. 'timestamp 1.0' means 1ms since last message. You should query 'motorwheel' and turn the motor on when it returns true and off when false. speedwheelused for a precision touchwheel that reports both position and speed. 'speedwheel +1.0 1.5' means a full rotation of the wheel, at 150% speed. vinyl_modeSet the jogwheel to Vinyl mode (with scratch), or to CD mode (with pitchbend) wheel_modechange the mode of the jogwheel between: "jog", "search", "loop_move", "loop_out", "loop_in", "browser", or use +1 and -1 to cycle through all modes. You can select from a subset using a syntax like 'wheel_mode "loop_move,loop_in,loop_out" +1'. hold (or scratch_hold)'hold on' or 'hold off' (or 'hold toggle') to stop the disc for scratching, or release it. scratch'scratch +120ms' to scratch 120ms forward. nudge'nudge +120ms' to nudge the song 120ms forward (using mastertempo if it's activated). slip_modeWhile in slip mode, during loops hotcues or scratch, the play cursor will keep moving unaffected, and will resume from there after release get_slip_active get_slip_timeGet the time where the song will be when slip mode is de-activated in milliseconds
Alternatively, use get_slip_time "min", get_slip_time "sec" and get_slip_time "msec" slipactivate or deactivate a global slip mode, that will save the position on "slip on" and resume where it should have been if untouched on "slip off", letting you do any scratch/loop/effect/etc in between scratch_dnaexecute a scratch defined by its DNA signature (see scratch_dna_editor for information about DNA signatures) scratch_dna_optionset some options about the Scratch DNA behavior. options are "drymix" and "quantized" scratch_dna_editoropen a visual editor to compose scratch DNA signatures
Audio_volumes
crossfader (or crossfader_slider)move the crossfader. crossfader 0% will only let the left deck out, crossfader 100% will only let the right deck out. auto_crossfade (or auto_crossfader)Automatically crossfade to the other deck. You can specify the duration of the crossfade in ms: 'auto_crossfade 2000ms'
Assigned to a slider, or specifying a specific position, it will move the crossfader slowly to that position: 'auto_crossfade 50%' or 'auto_crossfade 1000ms 50%' level (or level_slider or volume or volume_slider)set the volume of the deck muteMute a specific deck mic_volumeSet the volume of the microphone mic2_volumeSet the volume of the second microphone gain (or gain_slider or power_gain)set the gain of a deck gain_labelget the text to display under the gain knob gain_relativechange the gain, relative to the software gain position set_gainset the gain in order to bring the song to the specified dBA (with 0dBA being the maximum level outputable by the soundcard without compression): 'set_gain 0' mono_mixMix left and right channels together for all outputs fake_mixertell VirtualDJ not to apply the volumes to the sound output fake_eqtell VirtualDJ not to apply the equalizer to the sound output fake_gaintell VirtualDJ not to apply gain to the sound output fake_hptell VirtualDJ not to apply headphone volume to headphone sound output fake_hpmixtell VirtualDJ not to apply headphone mix to headphone sound output fake_pfltell VirtualDJ to disable pfl switch from skin, when pfl can only be controlled from controller or mixer fake_mastertell VirtualDJ not to apply master volume to master sound output colorfx_prefadercolor fx are prefader (required for some controllers) fake_filtertell VirtualDJ not to apply filter to sound output master_volumeset master volume headphone_volumeset cue volume booth_volumeset booth volume headphone_mixchange the mix of the PFL (0% is only the cued deck, 100% is the master output). headphone_crossfaderchange the PFL fader (0% is only the left deck, 100% is only the right deck). headphone_gainchange the gain of the PFL output (from -30dB to +30dB) master_balancechange the left/right balance on the master output. levelfader_curve (or fader_curve)select the curve of the level faders. 0% is a linear curve, 50% (default) is a quadratic curve, 100% is a cubic curve crossfader_hamsterinvert the crossfader. crossfader_curveselect the curve of the crossfader. enter a value to adjust the slope from a X curve (0%) to a inverted-U curve (100%). you can also specify common curves by name ("smooth", "full", "scratch", "cut"). or you can draw your own curve, using a syntax like 'crossfader_curve "0=[1,0]/0.5=[1,1]/1=[0,1]"'. crossfader_disabledisable the crossfader get_limiterreturn true if the limiter is compressing because the signal was saturated. Use 'deck 1 get limiter' to get the limiter on a deck in external mixer mode, or 'get_limiter' (or 'get_limiter "master") to get the limiter on the master for internal mixing mode (also can use 'get_limiter "headphones"' and 'get_limiter "booth"') get_levelGet level of signal before master volume. If no deck is specified will get master level
Use "get_level 'mic'" for microphone level, or "get_level 'sampler'" for sampler level get_level_logSimilar to get_level, but returns level on logarithmic scale where -127dB=0.0 and 0dB=1.0 get_level_peakGet peak level of signal before master volume. If no deck is specified will get master peak level. get_level_leftGet level of left channel before master volume. If no deck is specified will get master level. get_level_left_peakGet peak level of left channel before master volume. If no deck is specified will get master peak level. get_level_rightGet level of right channel before master volume. If no deck is specified will get master level. get_level_right_peakGet peak level of left channel before master volume. If no deck is specified will get master peak level. get_vu_meterGet level of signal after master volume. If no deck is specified will get master level.
Use "get_vu_meter 'mic'" for microphone level or "get_vu_meter 'sampler'" for sampler level get_vu_meter_peakGet peak level of signal after master volume. If no deck is specified will get master peak level. get_vu_meter_leftGet level of left channel after master volume. If no deck is specified will get master level. get_vu_meter_left_peakGet peak level of left channel after master volume. If no deck is specified will get master peak level. get_vu_meter_rightGet level of right channel after master volume. If no deck is specified will get master level. get_vu_meter_right_peakGet peak level of right channel after master volume. If no deck is specified will get master peak level. is_audibleactive if the deck is playing and volume is up (on-air) get_crossfader_resultget the actual volume balance between deck 1 and 2, based on crossfader, levels, and play
(use get_crossfader_result "full" to show levels even for paused decks)
Automix
automixStart or stop automatic playlist mixing automix_dualdeckEnable or disable automix using both decks automix_skipWhen automix is active, skip the current song and mix to the next one mix_nowSmoothly crossfade from one side to the other, matching beats when the tempo of both songs is close together
When automix is off, fade speed can be adjusted: "mix_now 4000ms" or "mix_now 4bt" mix_now_nosyncSmoothly crossfade from one side to the other
When automix is off, fade speed can be adjusted: "mix_now_nosync 4000ms" or "mix_now_nosync 4bt" mix_selectedWhen automix is active, mix to the song currently selected mix_nextIf the non-playing deck has a song loaded that has already been played, load a new one from the playlist. Then smoothly crossfade from the playing deck to the other, using beatsync if appropriate mix_next_sidelistIf the non-playing deck has a song loaded that has already been played, load a new one from the sidelist. Then smoothly crossfade from the playing deck to the other, using beatsync if appropriate mix_and_load_nextautomatically mix to the next deck, then stop the current track and load a new song if something is available in the playlist or sidelist
by default this will to a tempo mix and sync bpm if the bpm is in range. You can add 'nosync' to mix without tempo synchronization. 'mix_and_load_next nosync' get_automix_songget a property from the next song in automix: "get_automix_song 'title'"
you can also get properties from songs further down: "get_automix_song 'title' 2" playlist_optionsdisplay a drop-down with the list of options for the playlist. sidelist_optionsdisplay a drop-down with the list of options for the sidelist. automix_add_nextAdd the songs selected in the browser to the automix playlist right after the song currently playing
If a song in the automix list is selected and automix is active, move it after the currently playing song get_automix_positionReturn position of currently playing song in automix list playlist_addAdd the songs selected in the browser to the automix list playlist_load_and_removeLoad the first song in the automix list on the deck, and remove it from list playlist_load_and_keepLoad the first song in the automix list on the deck, without removing it from the list switch_sidelist_playlistExchange the content of the automix list and the sidelist create_list_from_playlist (or create_virtualfolder_from_playlist)Save the automix list in MyLists playlist_randomizeshuffle the order of the songs in the playlist. playlist_randomize_onceshuffle the order of the songs in the playlist once. playlist_repeatrepeat (or stop to repeat) the playlist while automixing. playlist_clearempty the playlist. playlist_savesave the playlist in a file. playlist_remove_playedremove from the playlist all the songs that have already been played since the software was launched. playlist_remove_duplicatesremove duplicate songs from the playlist. automix_editorOpen the automix editor, and fine-tune the automix transitions for every songs in your playlist automix_editor_movetrackWhen the automix editor is opened, move the selected track's position
automix_editor_movetrack 'current' +10
Also accepts 'next' or 'previous' to move the next or previous track. When the number is not given it can be mapped to rotary knobs or jog wheels relay_playEnable or disable the decks to automatically start playing when the opposite deck reached its end get_playlist_timeGets how much time is left before the end of the automix playlist
Browser
add_favoritefoldermake the selected folder a favorite folder (monitored folders). add_filterfoldercreate a new filter folder. add_list (or add_virtualfolder)create a new list (virtual folder). goto_last_folderGo back to the last browsed folder browser_scrollscroll through the songs or folders.
'browser_scroll +1' or 'browser_scroll -1' to scroll one line, or "browser_scroll 'top'", "browser_scroll 'bottom'" to scroll to the beginning or end browser_movebrowser_move +1 : Moves the currently selected song in a playlist down
browser_move 'top' or browser_move 'bottom' : Moves the selected song to the top or the bottom of the list browser_folderif focus is on songs, change focus to folders. if focus is on folders, open or close the subfolders of the selected folder. browser_enterif focus is on songs, load the selected song. if focus is on folders, change focus to songs. browser_open_folderExpand selected folder in browser when closed, or close folder when opened.
You can also use 'browser_open_folder off' to always close the folder, or 'browser_open_folder on' to open a folder browser_removeRemove the selected song from playlist browser_windowChange the active browser zone. "browser_window 'folders'", "browser_window 'songs'", "browser_window 'sideview'", or "browser_window 'automix'", "browser_window 'sidelist'", "browser_window 'sampler'"
Cycle through available browser zones. "browser_window +1", "browser_window -1"
Cycle through specified zones. Example "browser_window 'folders,songs'" searchput the keyboard focus on the search zone, or, if a text parameter is specified, search for this text. search_addadd the specified text to the search query search_deleteremove the last character from the search query clear_searchclear the search string edit_searchput the keyboard focus in the search zone but keep the actual search string. log_searchlog the current search in the SearchLog.txt file, so you can easily search for your failed requests once the gig is over. search_playlistsopen a dialog to search which list contains a specific song
by default it searches for the song selected in the browser. Use "search_playlists deck" to search for the song loaded on the deck. search_folderopen a dialog to search for folders or playlists by name grid_viewput the browser in grid-view mode, optimized for touch screens view_optionspopup the list of view options. to set one directly, you can use 'view_options "showkaraoke" on' etc... sideview_optionsshow the context menu to add or remove folders shortcuts to the sideView sideview_triggerpadset the sideview sampler in triggerpad mode or in list mode file_infoOpen the Tag Editor for the specified or loaded song. browsed_file_infoopen the Tag Editor for the browsed song. browsed_file_colorset the color of the file currently selected in the browser.
Example: browsed_file_color "red"
Use browsed_file_color "reset" to clear the color and set the color back to default browsed_file_revealopen the OS file manager to the browsed song browsed_file_analyzereanalyze the current file selected in the browser
use 'browsed_file_analyze multi' to do a scan for multiple bpms browsed_file_prepare_stemsprepare stems for the file(s) currently selected in the browser browsed_file_reload_tagReload tag of file currently selected in browser. This will overwrite changes made in the VirtualDJ database by what is saved in the file's tag. browsed_file_renamerename the current file selected in the browser set_browsed_file_bpmset the bpm of the selected songs to the set value: 'set_bpm 129.3', or relative to the actual value: 'set_bpm 50%' loadload the selected song on the deck. you can also specify a fullpath to load 'load "path_to_my_song"'. load_pulsereturn a brief false then true again when a new song is loaded load_pulse_activereturn true when a new song becomes audible for the specified duration. Can be delayed using the second parameter.
'load_pulse_active 1000ms 5000ms' will return true for 1 second, 5 seconds after a new song becomes audible loadedreturn true if a song is loaded on the deck undo_loadUnload the song and reload the previous song. Use 'undo_load any' to unload from the last deck a song was loaded on. Otherwise the deck the action is called from is used. unloadunload the song from the deck. browser_isactivereturn true when the browser was used by a controller in the past 6 seconds not_playeddon't mark the song on this deck as 'played'. browser_gotofolder'browser_gotofolder' goes to the folder containing the current file.
'browser_gotofolder "/my_path/my_folder"' goes to the specified folder.
'browser_gotofolder 4' goes to the fourth virtual/favorite folder. recurse_folderdisplay the content of both the selected folder and all its subfolders in the browser list. browser_sortSort the browser files on the specified column: 'browser_sort "artist"', 'browser_sort "lastplay"',...
To sort in descending order, add a - in front of the column name: 'browser_sort "-bpm"'
To explicitly sort in ascending order, add a + in front of the column name: 'browser_sort "+bpm"'
To reset the sort order of a playlist to it's original order, use 'browser_sort "Original Sort Order"' sideview_sortSort the sideview on the specified column: 'sideview_sort "artist"', 'sideview_sort "lastplay"',... playlist_loadLoad the folder or playlist selected in the browser in the playlist.
Use "playlist_load 'append'" to add the selected folder to the playlist instead of replacing the existing playlist sidelist_loadLoad the folder or playlist selected in the browser in the sidelist
Use "sidelist_load 'append'" to add the selected folder to the sidelist instead of replacing the existing sidelist karaoke_loadLoad the folder or playlist selected in the browser in the karaoke list
Use "karaoke_load 'append'" to add the selected folder to the karaoke list instead of replacing the existing karaoke edit_commentopen a window to edit the comment on the selected track. search_optionspopup the list of search options. to set one directly, you can use 'search_options "composer"' to toggle search of the field on or off add_to_list (or virtualfolder_add)Add the currently selected songs in the browser to the specified List. 'add_to_list "my_list"' font_sizeChange browser font size. Example: font_size +1 sidelist_clearclear the sidelist. sidelist_addAdd the songs selected in the browser to the sidelist sidelist_load_and_removeload the first song from the sidelist, and remove it from the sidelist. sidelist_load_and_keepload the first song from the sidelist. karaoke_addAdd the songs selected in the browser to the karaoke list edit_singerPops up the dialog to change the singer of the currently selected song in the karaoke list file_countGet number of files currently shown in browser
You can also use 'automix', 'sideview', 'karaoke' or 'sidelist' as parameter to get the count in other lists. "file_count automix" sideviewShow a specific folder in the sideview. Available sideviews are automix,sidelist,karaoke,sampler,clone
Use 'sideview +1' or 'sideview -1' to scroll between available sideviews sideview_titleShow the title of the folder selected in sideview info_options (or infos_options)show the context menu about the info panel fields and prelisten behavior page save_deck_setSave the current configuration (which song is loaded on which deck) in a file load_deck_setReload a previously saved deck_set file browser_optionsshow the context menu about the browser filters, root folders, database, etc browser_exportExport the current list of files to a CSV or HTML file ratingGet or set the rating for the current song browser_zoom (or browser) browser_geniusdjLookup recommendations based on the items currently selected in the browser
Use 'browser_geniusdj playing' to use the currently playing track instead of the track selected in the browser browser_paddingChange the padding around lines in folder and list views. Example: browser_padding 50% load_nextLoad next track. You can use 'load_next keepplay' to start playing the loaded song if the currently loaded song was playing load_previousLoad previous track sidereco_optionsShow a menu to select what should be displayed in the sideview recommendation panel sidereco_song sidereco_source mark_linked_tracks (or mark_related_tracks)Mark the tracks in deck 1 and 2 as linked. (Linked tracks can be shown in the remixes tab of the sideview) has_linked_tracksReturns true when track has links to other tracks. On a button can be used to show the linked tracks in the sideview
You can also use 'has_linked_tracks browsed' to get the result for the currently browsed track
Passing a script that returns a full file path is also possible using 'has_linked_tracks `script`' has_quick_filterReturn true if quick filter with given index exists quick_filterApply or remove a quick filter on the list of song shown in the browser browser_shortcut'browser_shortcut': assign the current folder as a new shortcut\n'browser_shortcut X': go to the folder assigned to the Xth shortcut
Config
settings (or config)open the configuration window. smart_loopwhen smart_loop is on, loop are automatically adjusted to sound perfect smart_play (or auto_sync)when smart_play is on, songs are automatically synchronized when started smart_cuewhen smart_cue is on, songs are automatically re-synchronized when jumped to a new position or cue auto_match_bpmwhen Auto Match BPM is on, songs are automatically set to the same BPM when loaded auto_match_keywhen Auto Match KEY is on, songs are automatically set to a compatible KEY when loaded, if possible auto_pitch_lockwhen Auto Pitch Lock is on, pitch_lock engages whenever BPMs are matched, so that moving manually one pitch slider will move the other in order to keep the match quantize_loopwhen quantize_loop is on, loops automatically align according to the globalQuantize setting quantize_setcuewhen quantize_setcue is on, setting cues automatically align according to the globalQuantize setting smart_scratchwhen smart_scratch is on, backward scratching is automatically muted, only forward scratching will be heard play_modeset the mode for play/stop/cue buttons: 'play_mode "numark"', or 'play_mode "pioneer"'. save_config (or saveregistryconfig)save your config changes now (usually changes are saved automatically when you close virtualdj) auto_cueset the auto_cue mode: "off", "on", "always". settingread or write a specific setting (see config window for the list of all settings names)
Example: setting "jogSensitivityScratch" 80%
Example: setting "videoRandomTransition" on setting_setsessionforce a specific value for a setting during this session setting_setsession_deckforce a specific value for a setting during this session for a specific deck setting_setdefaultchange the default value for a setting during this session setting_resetreset a setting to its default value setting_ismodified fader_startenable or disable fader start get_lemodereturn true if we are running a LimitedEdition apply_audio_config eventscheduler_startStart the Event Scheduler (can specify one specific saved schedule: eventscheduler_start 'summer_wedding') eventschedulerOpen the Event Scheduler connect
Controllers
get_controller_namereturn the name(s) of the controller(s) assigned to this deck get_ns7_platter get_denon_platter get_pioneer_loop_display get_controller_imageUse in controller mappings to get the cover art from deck for use on controllers with screens get_pioneer_display pioneer_playOn when playing, off when no track loaded, blinking when paused or playing with cue stutter pioneer_cueOn when playing or paused on cue, blinking when paused and not on cue, off when no track loaded numark_waveform_zoomSet numark waveform zoom (value from 0 to 3, or +1, -1 to step through zoom levels) get_numark_waveform get_rotation_cueget the angle of the cue point on the disc get_rotation_slipget the angle of the slip point on the disc when slip is active, or regular get_rotation otherwise get_numark_beatgrid get_numark_songpos get_gemini_display get_gemini_waveform gemini_waveform_zoomlevel get_denon_cuepoints'get_denon_cuepoints 100' for a led bar with 100 leds. Number must match the number of leds in the led bar in the definition. menu_buttondefines a button whose behaviour can be changed by a menu. Syntax: 'menu_button 1 "hotcue,sampler,effect,loop"'. menudisplay a menu on the controller's screen, that allows to change the behaviour of the menu_buttons. you can navigate through the menu using the browser_scroll action'. menu_cycledisplayon single-line controllers, cycle display when no menu is shown between artist - title, artist or title get_displayget some text to display. depending on the latest action, it can be the name of an effect, the folder being browsed, the title of the current song, etc... for multiline displays, you can add the line number: "get display 1", "get display 2". get_controller_screen shiftset or query the built-in shift variable, used for controllers display_timeset the mode to display time: "total", "remain", "elapsed", +1 or -1. show_textShow text on controller display. (If your controller uses get_display for the displays)
"show_text 'Line 1|Line 2' 3000ms" will show 2 lines of text for 3 seconds (time optional, | separates lines)
"show_text '$myvar$'" shows the contents of the variable $myvar action_deckreturn true if the button calling this action is on the specified deck: 'action_deck 1 ? actionA : actionB' set_deckuse script or implicit variable to affect which deck the action is applied to
example: 'set_deck `get_var varname` & play' device_sideAssign a different action for a button or slider of a device depending on which side of the device it is on: "device_side 'left' ? action_for_left : action_for_right"
For more than 2-deck controllers, you can use "device_side 1 ? action1 : device_side 2 ? action2 ? device_side 3 ? action3 : etc..." invert_controllersInvert the deck of the controllers rescan_controllersrescan for newly connected controllers. reinit_controllerReinit the specified controller (or all if none specified), going through the exit and init sequences (you can specify a delay between exit and init: "reinit_controllers 'mycontroller' 200ms". midiclock_activeToggle sending midiclock to the specified controller miditovst_activeToggle sending midi from a specific controller to the specified deck's VST instruments or effects refresh_controllerrefresh the display of the specified controller (or all if none specified). assign_controllerAssign a specific controller to this deck.
'deck 1 assign_controller "CDJ400" 2' assigns the second CDJ400 to deck 1
Or in a controller mapping 'deck 1 assign_controller' will assign the controller the action was executed from to deck 1. ns7_platter phase_movement phase_position controller_battery v7_status motor_switchassign this deck to be controlled by the motorized wheel denon_platter motorwheel_instant_playwhen set to on, the song will start instantly, bypassing the ramp up time the motor takes to reach its full rotation speed (the drawback is that then you cannot hold the disc still when your start the motor) djc_shift djc_button djc_button_popup djc_button_slider djc_button_select djc_panel mixer_orderFor controllers with 4 decks, specify the order of the decks, from left to right. Default: "mixer_order 3124" effect_fxsendreturndeck effect_fxsendreturndeck_multiSelect which source to apply fx to for a specific send/return channel in case there are more than one
'deck 1 effect_fxsendreturndeck_multi master' : Apply master fx on the first fx send/return pair
'deck 2 effect_fxsendreturndeck_multi mic' : Apply mic fx on the second fx send/return pair
'deck 2 effect_fxsendreturndeck_multi 4' : Apply deck 4 fx on the second fx send/return pair effect_fxsendreturnenable os2l_buttonSend a command to a DMX software over OS2L: 'os2l_button "blackout"', 'os2l_button "fog machine" while_pressed', etc.
If you want to specify a page, you can use 'os2l_button "mypage" "mybutton"'.
If the DMX software doesn't send feedback commands, os2l_button acts as a flash button (it sends 'on' when pressed, 'off' when released) - use 'os2l_button "mybutton" on' to not send commands on release.
If the DMX software sends feedback commands, os2l_button acts as a toggle button (it sends the opposite of the last feedback when pressed, nothing on release) - use 'os2l_button "mybutton" while_pressed' to send a command on release. os2l_scenesimilar to os2l_button, but sends 'on' to the DMX software only if the button was not active yet, and only if the deck is audible. (requires feedback from the DMX software)
when the deck is not audible, the scene will be queued and started when the deck becomes audible
os2l_scene "scene1"
os2l_scene "mypage" "myscene" os2l_cmdSend a numeric command to a DMX software over OS2L: 'os2l_cmd 42 on' or 'os2l_cmd 43 50%' os2l_info rzx_touch rzx_touch_x rzx_touch_y controller_mappingAssign a mapping to a controller
'controller_mapping "My Mapping"' assigns the mapping 'My Mapping' to the controller the command was executed on
'controller_mapping "CDJ400" "My Mapping"' assigns the mapping 'My Mapping' to all CDJ400s
'controller_mapping "CDJ400" "My Mapping" 2' assigns the mapping 'My Mapping' to the second CDJ400 controllerscreen_deck keyboard_shortcutsMap to CTRL or ALT. While pressed will show keyboard overlay in browser. Double-press to activate sticky keys.
Accepts time to delay showing overlay (keyboard_shortcuts 500ms). In scripts can also be used to turn on or off the overlay manually (keyboard_shortcuts on) select_master_outputSelect if the audio should be played on the computer speakers or on the controller audio output
Cues
cue_stopif playing, pause and go to the last cue point. if paused, set the current position as cue point, and preview the cue as long as pressed. you can specify a number ('cue_stop 1', 'cue_stop 57') to work with several cues. cue_playif playing, pause and go to the last cue point. if paused, set the current position as cue point, and preview the cue as long as pressed. if you kept pressed more than 2s (or the time specified), it will continue playing once you release. syntax: 'cue_play 1 1000ms' cueif playing, go to the last cue point and continue playing. if paused, set the current position as cue point, and preview the cue as long as pressed. if in loop, change loop_in to the cue point but keep the loop's length. you can specify a number ('cue 1', 'cue 57') to work with several cues. hot_cue (or hotcue)if no cue point is set, or if 'cue', 'cue_stop' or 'cue_play' is pressed, set one at the current position. otherwise go to the cue point and start or continue playing. if in loop, set the cue point as new loop_in but keep loop_length. you can specify a number ('hot_cue 1', 'hot_cue 57') to work with several cues. silent_cueMute track when enabled until a hot cue is activated cue_selectSelect the nth cue point as default cue point for cue, hotcue, etc.. actions. Does not change position to the selected cue point. cue_cupif playing, rewind to the last cue point, and start again on release. if paused, set the current position as cue point. cue_button (or cue_3button)act like cue_stop, cue_play or cue_cup depending on the cueMode setting set_cuestore the current position in the cue. if one parameter is given, it's the number of the cue to use. if two parameters are given, the second is the position to store, in ms, in beats, or in percentage of the song length. goto_cueGo to the specified cue. Example "goto_cue 1", "goto_cue +1", "goto_cue -1"
"goto_cue" will jump to the currently selected/last used cue. delete_cueDeletes a stored cue point. If no cue number is specified, it will delete the currently active cue point cue_pos"cue_pos 1" returns the position of cue point #1 as a percentage
"cue_pos 1 msec", "cue_pos 1 sec", "cue_pos 1 min" returns the position of cue point #1, msec, sec and min parts
"cue_pos 1 mseconly" returns the position of cue point #1 in milliseconds
"cue_pos 1 beats" returns the position of the cue point in number of beats from first beat cue_name"cue_name 1" returns the name of cue point #1, or changes the cue point when pressed cue_action get_cuereturns the currently active cue, or 0 if no cue point is active has_cuereturns true if the specified cue number is set cue_countdowncount down to the next cue (or end) in beats
use 'cue_countdown color' or 'cue_countdown name' to get the name or color of the next cue point cue_countupcount up from the last cue point (or start) in beats
use 'cue_countup color' or 'cue_countup name' to get the name or color of the last cue point cue_countercount up or down to the nearest cue point in beats
use 'cue_counter color' or 'cue_counter name' to get the name or color of the nearest cue point lock_cueslock/unlock the cues for this particular song, so that cue actions cannot inadvertently modify them while you're playing shift_all_cuesshift all the cues of the song from the given amount (can be used to fix the cues from v7 imported files in case the automatic fix didn't work properly): 'shift_all_cues -10ms' cue_colorquery or set the color of a cue point
Query example: cue_color 1
Set example: cue_color 1 'yellow' cue_loopJump to a cue and stay in a loop. Use cue_loop_hold to select if loop is temporary, or stays until pressed again. When the cueLoopAutoSync option is enabled, jumping to the cue is beat synchronized cue_loop_holdToggle cue_loop between looping while pressed and turn loop on/off cue_loop_autosync cue_displayShow information about a cue point based on the cueDisplay config option.
Example: 'cue_display 1'
Can also be used to modify the cueDisplay option by using +1 or -1 as parameter: 'cue_display +1'
The cueDisplay option can also be set by name: 'cue_display name' sort_cuessort cue points chronologically cues_optionsShow some options about cues
Deck_select
selectselect this deck as 'working deck'. the beat of the working deck will be shown in front in the display, and shortcuts and actions with no specified deck will affect this deck.\nUnless PFL has been set manually, the PFL will also follow the working deck. masterdeck_autoremove the masterdeck selection and put back automatic masterdeck behavior masterdeckselect/unselect this deck as 'master deck'. When a master deck is set, all synchronization operations will take the master deck as reference. (for skins with more than 2 decks) leftdeckselect this deck to be the left deck: "deck 3 leftdeck" or "leftdeck +1" rightdeckselect this deck to be the right deck: "deck 3 rightdeck" or "rightdeck +1" invert_deckswitch leftdeck between deck 1 and deck 3 or rightdeck between deck 2 and deck 4
"invert_deck" to swap the calling deck, or "invert_deck 'left'", "invert_deck 'right'" to specifically switch left or right deck leftcrossassign this deck to the left of the crossfader: "deck 3 leftcross"
"deck 3 leftcross 'only'" to assign only deck 3 to left of the crossfader
"leftcross 'none'" to disable the left crossfader rightcrossassign this deck to the right of the crossfader: "deck 3 rightcross" cross_assignassign this deck to a side of the crossfader: "deck 3 cross_assign 'left'" or "deck 3 cross_assign 'thru'" pflselect if this deck is sent to the headphones. (can be used with a slider or a % to specify the volume: 'pfl 75%') get_deck_colorreturn blue or red if the deck is the left deck or right deck (and gray otherwise). Can be used with a darkness modifier: 'get_deck_color 50%'
Use 'get_deck_color "absolute"' or 'get_deck_color "absolute" 50%' to get a color based on actual deck rather than left/right (red for deck 1, blue for deck 2, orange for deck 3, green for deck 4)
Equalizer
eq_modeSelect the behavior of the EQs knobs (frequency, modernEQ or EZRemix)
Can be used to switch between Frequency and your preferred stems mode using 'eq_mode +1'
To change the eq mode only for a single deck, use "eq_mode +1 deck" (or "deck 1 eq_mode +1 deck" to specify deck 1 in your script)
To select a specific behavior, you can use "eq_mode frequency", "eq_mode modernEQ", "eq_mode ezRemix" or "eq_mode stems" mute_stemmute one stem. Stem names are: "HiHat", "Vocal", "Instru", "Bass", "Kick", or you can use aggregate stems: "Melody" (Instru+Bass), "Rhythm" (HiHat+Kick), "MeloRhythm" (Instru+Bass+HiHat+Kick) only_stemkeep only one stem. Stem names are: "HiHat", "Vocal", "Instru", "Bass", "Kick", or you can use aggregate stems: "Melody" (Instru+Bass), "Rhythm" (HiHat+Kick), "MeloRhythm" (Instru+Bass+HiHat+Kick) stem_padmute a stem (or isolate if pressed with Shift). Stem names are: "HiHat", "Vocal", "Instru", "Bass", "Kick", "Rhythm", "MeloRhythm", "Acapella", "Instrumental" has_stemsReturn true if the track has stems available. Can also be called with 'has_stems "2.0"' to check for new engine, or 'has_stems "ready"' to check if stems are ready at the current playing position stems_bleedControl how much the fast stems separation algorithm will allow bleeding. The action affects one of the four bleeding values (MuteVocal, MuteInstru, OnlyVocal, OnlyInstru) depending on what is currently muted or isolated on the deck. (NOTE: this does nothing on the regular HiQuality algorithm) high_label mid_label low_label eq_high (or eq_high_slider)change the amount of HiHat, Vocal or High (depending on EQ control mode). eq_mid (or eq_med or eq_mid_slider)change the amount of Melody, Vocals or Medium (depending on EQ control mode). eq_low (or eq_low_slider)change the amount of Kick or Low in the mix (depending on EQ control mode). stemChange the amount of a stem in the mix. Stem names are: "HiHat", "Vocal", "Instru", "Bass", "Kick", or you can use aggregate stems: "Melody" (Instru+Bass), "Rhythm" (HiHat+Kick), "MeloVocal" (Melody/Vocal).
To get kill on left side and isolate on right side of the slider, you can use "FullVocal", "FullMelo" and "FullRhythm"
To map a slider to always control the equalizer, regardless of EQ mode, you can use "stem FreqHi", "stem FreqMid", and "stem FreqLo" eq_high_freqset the treble equalizer eq_mid_freqset the medium equalizer eq_low_freqset the bass equalizer eq_kill_highmute the treble eq_kill_mid (or eq_kill_med)mute the medium. eq_kill_lowmute the bass. eq_crossfader_highcrossfade the treble between both decks eq_crossfader_mid (or eq_crossfader_med)crossfade the center frequencies between both decks. eq_crossfader_lowcrossfade the bass between both decks eq_resetreset the equalizer. filter_activateenable or disable the deck filter filter (or filter_slider)apply the selected colorfx to the sound (nothing applied at 50%, and more applied the farther from the center) filter_labelget the text to display under the filter knob
(use filter_label "clean" to always get the value, and filter_label "name" to always get the name) filter_resonancechange the resonance of the filter filter_selectcolorfxSelect the color effect controlled by the filter knob stem_colorget the default color of a specific stem
Get
get_beatget the intensity of the beat at the current position (0% to 100%). get_beat2get the intensity of the beats from both decks at the same time. get_beatgridget the intensity of the beat based on the beatgrid (100% if on the beat, 0% if halfway between to beats). get_beatposget the current position in beatgrid coordinate (27.5 would mean halfway between the 27th and 28th beats in the song). get_beatdiffGet the distance between the beat from this deck and the beat from the active deck
50% means the deck are aligned, 0% means this deck is late half a beat, 100% means it is ahead half a beat
'get_beatdiff 4' will return the distance percentage between bars instead of beats get_bpmGet the bpm of the song
Use 'get_bpm absolute' to get the original bpm of the song (not changing when changing the pitch) get_firstbeatget the position of the first beat (in milliseconds) get_firstbeat_localget the position of the first beat in the current phrase 16 beats (in milliseconds) get_timeget the elapsed time (or remaining or total depending on "display_time"), in milliseconds.
Use 'get time 1000' to get another unit than ms (1000=ms, 25=1/25th of seconds, 44100=frames, etc).
Use "elapsed", "remain" or "total" to bypass the setting of display_time. Use "absolute" not to take the pitch into account.
On texts, use "short" to hide the decimals. Example: get_time "remain" "short" get_time_signGet the sign (-1 or +1) of the elapsed time (or remaining or total, depending on "display_time")
You can write 'get_time_sign "elapsed"' or "remain" or "total" to bypass the setting of display_time get_time_hourGet the hours of the elapsed time (or remaining or total, depending on "display_time")
Use 'get_time_hour "absolute"' if you don't want to take the pitch variations into account
You can write 'get_time_hour "elapsed"' or "remain" or "total" to bypass the setting of display_time get_time_minget the minutes of the elapsed time (or remaining or total, depending on "display_time"). use 'get time_min "absolute"' if you don't want to take the pitch variations in account. you can write 'get time_min "elapsed"' or "remain" or "total" to bypass the setting of display_time get_time_secget the seconds of the elapsed time (or remaining or total, depending on "display_time"). get_time_msget the 1/100th seconds of the elapsed time (or remaining or total, depending on "display_time")
use 'get_time_ms 1000' to get the actual milliseconds get_time_msfget the MSF frame of the elapsed time (or remaining or total, depending on "display_time"). get_totaltime_minget the minutes of the length of the song get_totaltime_secget the seconds of the length of the song get_totaltime_msget the 1/100th seconds of the length of the song get_totaltime_msfget the frames of the length of the song get_rotationget the angle of the disc get_armget the position of the turntable arm get_positionget the position in the song get_automixget the position of the automix crossfader get_volumeget the volume applied by both the volume sliders and the crossfader get_deckget the number of the deck get_deck_letterget the letter of the deck get_spectrum_bandget the level of a single spectrum band. 'get_spectrum_band 1'
Use 'deck master' in front to get spectrum of the master deck 'deck master get_spectrum_band 1'
By default there are 32 bands get_plugindeckFor use in plugins. Returns 1,2,etc... when plugin is active on a deck, 0 for master, -1 for sampler, -2 for mic get_defaultdeckget the number of the default deck get_leftdeckget the number of the left deck get_rightdeckget the number of the right deck get_activedeckget the number of the sync master deck get_decksget the total number of decks of the current skin (can also be used with argument to compare: 'get_decks 4' returns true if 'get_decks' would return 4, false otherwise) get_custom_text get_beat_counterget the position of the beat counter get_beat_num"get_beat_num" returns a value between 1 and 4 indicating the beat in the measure
"get_beat_num 1 4" returns true when the first beat of the measure is currently playing
"get_beat_num 1" returns true when the first beat of a 4-beat measure is currently playing (works from 1 to 4)
"get_beat_num 16" returns a percentage indicating the beat position in a 16-beat phrase (works with any phrase number larger than 4) get_phrase_num"get_phrase_num" returns a value between 1 and 4 indicating the measure number
"get_phrase_num 1" returns true when the first measure of the phrase is currently playing get_barreturns the current bar number (1 bar = 4 beats) get_beat_barget the position in % in the 4:4 bar (or in 4:16 if called with 'get beat_bar 16') get_filepathget the filepath of the song on the deck get_filename get_filesize get_artist get_title get_title_remixReturn combination of title and remix: "Title (Remix)". get_title_before_remixReturn title of the track. If remix is empty, the part in brackets in the title is removed (and shown by get_remix_after_title) get_remix_after_titleReturn remix of the track loaded on the deck like "(remix)" Remix will automatically be extracted from title if remix field is empty get_artist_before_featReturn artist of the track, with 'featuring' stripped get_featuring_after_artistReturn featuring artist, stripped from artist or title field get_artist_title_separatorReturn a dash ( - ) if there is both an artist and a title get_artist_title get_title_artist get_album get_year get_genre get_composer get_songlengthget the length in seconds of the song on the deck get_comment get_versionReturns version as text such as "2025" get_buildReturns build number get_membership get_license get_hwndreturn the Windows handle to VirtualDJ's window get_vdj_folderreturn the home folder of VirtualDJ. get_browsed_selection_index'get_browsed_selection 1 3' returns true if the first line is the selected line in a browser 3 lines high
'get_browsed_selection 3' returns the line number of the selected line in a browser 3 lines high (between 1 and 3) get_browsed_folder_selection_index'get_browsed_folder_selection 1 3' returns true if the first line is the selected line in a browser 3 lines high
'get_browsed_folder_selection 3' returns the line number of the selected line in a browser 3 lines high (between 1 and 3) get_browsed_songget a property from the currently browsed file: "get_browsed_song 'title'", "get browsed_song 'playcount'", etc... browsed_songset a property of the currently browsed file: "browsed_song 'rating' 5", ... get_loaded_songget a property from the song loaded on the deck: "deck 2 get_loaded_song 'album'" loaded_songset a property of the currently loaded file: "loaded_song 'rating' 5", ... get_loaded_song_color'get_loaded_song_color red 255' (component, default color)
'get_loaded_song_color white' (default color) returns color for the loaded track. This includes color filters. (For manually selected color only, use 'get_loaded_song color' instead) prelisten_info get_browsed_artist get_browsed_title get_browsed_title_artist get_browsed_artist_title get_browsed_album get_browsed_composer get_browsed_genre get_browsed_comment get_browsed_filepathget the filepath of the song currently selected in the browser get_browsed_bpm get_browsed_color'get_browsed_color 0 red 255' (item, component, default)
'get_browsed_color 0 white' (item, default) returns color for selected item. This includes color filters. (For manually selected color only, use 'get_browsed_song color' instead) get_browsed_header get_browsed_scrollpos get_browsed_scrollsize get_browsed_folder_scrollpos get_browsed_folder_scrollsize get_browsed_folder_icon get_browsed_folderget the name of the folder selected in the browser get_browsed_folder_pathget the full path of the folder selected in the browser get_browsed_folder_tab get_browsed_key get_record_timeget the time already spent recording get_record_sizeget the current size of the recording file get_record_messageget the message displayed on the record page get_record_minget the minutes of the recording time get_record_secget the seconds of the recording time get_record_msget the milliseconds of the recording time get_record_msfget the frames of the recording time get_haslineinreturns true if the current soundconfig includes some linein inputs get_hasmicreturns true if the current soundconfig includes a mic input has_auxreturns true if the current soundconfig includes a aux input get_hasinputreturns true if the current soundconfig includes any input (mic, linein or timecode) get_hasheadphones (or get_hasheadphone)True when a headphones output is configured in sound setup, or when the controller has a headphone volume control get_hasmasterTrue when a master output is configured in sound setup, false for external mixer configurations get_askthedj_unreadReturns the number of unread Ask The DJ requests (requires askTheDJMonitoring setting to be on always) get_askthedjReturns the latest request from ask the dj (requires askTheDJMonitoring setting to be on always)
Use 'get_askthedj 2' to get the second latest request, etc. get_deck_analysis get_song_eventProvide analysis about current and coming events in the song. Can be used when writing visualisation plugins.
The first parameter is "current" or "next" to get the current or the coming event.
The second parameter can be "hasbeats", "volume", "volume_end", "remaining" get_username
Karaoke
karaokeStart or stop automatic karaoke loading and background music karaoke_optionsshow the contextmenu with the karaoke options karaoke_showshow the singer list on the video output get_next_karaoke_songGet info about the upcoming karaoke tracks
Example 'get_next_karaoke_song "singer" +1' get_karaoke_background_songGet info about the background song playing in karaoke mode is_karaoke_idleOn when karaoke mode is active but not playing. (Background music may be playing) has_karaoke_nextOn when karaoke mode is active and there is still another singer queued is_karaoke_playingOn when karaoke track is playing and karaoke mode is active. Off when background music is playing karaoke_venue_name
Key
keychange the key of the song, from -12 (one octave down) to +12 (one octave up), only in multiple of semitones. get_key_modifierget the number of semitone up or down currently applied to the song get_key_modifier_textget the number of semitone up or down currently applied to the song get_harmonic get_keyget the key of the current song, based on keyDisplay option
Use get_key "musical" or get_key "harmonic" to get a specific display independent of keyDisplay option key_smoothchange the key of the song, from -6 (half octave down) to +6 (half octave up), allowing not only multiple of semitones.
use key_smooth full for full octave up or down key_movemove the key up or down from the given amount of semitones. set_keychange the key of the song to match the given key. you can use standard notation ('set_key "A#m"') or numeric ('set key "03A"'). if no given key, it will use the other deck. the change will match the exact key. match_keychange the key of the song to match the given key. you can use standard notation ('match_key "A#m"') or numeric ('match_key "03A"'). if no given key, it will use the other deck. the change will be the smallest change to make it compatible with the given key. key_match_buttonMatch key to the other deck's key on first press, or reset key to normal on second press key_match_menuOpen a menu to select a different key for the current song get_key_colorReturn color of the current key of the track in the specified deck key_lock (or keylock)activate/deactivate the key lock (to make the pitch slider change the speed of the song, but keep the key of the song like it is now). keycue_pad_jumpwhen on, keycue_pad will jump to the cue point on each press, when off, keycue_pad will only modify the key without jumping to the cue point keycue_padchange the key depending on the pad and play the current cue point keycue_pad_colorgreen for the selected key, magenta for lower keys, orange for higher keys and white for no key change keycue_pad_pagechange the offset of the key change by keycue_pad actions
Loop
loopset or remove a loop. 'loop 4', 'loop 0.5' set a loop in beats. 'loop 10ms' set a loop in ms. 'loop 200%' multiply by 2 the size of the loop. 'loop 50%' divides by 2. 'loop' alone set a loop at the actual position with the same beat size as the last set loop. get_loop_in_timeGet time (in ms) of the start of the loop
Use "get_loop_in_time 1.0" to return the time in seconds instead of milliseconds
Use "get_loop_in_time on" to return the loop in time even when no loop is active get_loop_out_timeGet time (in ms) of the end of the loop
Use "get_loop_out_time 1.0" to return the time in seconds instead of milliseconds
Use "get_loop_out_time on" to return the loop out time even when no loop is active loop_buttonone-button smart loop: Set the loop in on the first press, set the loop out on second press, remove the loop on third press. loop_inif not in loop, set the beginning of a loop. if in loop, jump back to the beginning of the loop. loop_outif not in loop, set the deck in loop, starting from the last set loop_in point or stutter point. if in loop, exit the loop. pioneer_loop_in pioneer_loop_out pioneer_loop loop_lengthchange the length of the loop. 'loop_length 15ms' set the length in ms, 'loop_length 0.5' set the length in beats, 'loop_length +100%' set the length in percentage of the actual length. loop_movemove the loop without changing its length. 'loop_move +10ms' set the distance in ms, 'loop_move +2' set the distance in beats, 'loop_move +50%' set the distance in percentage of the actual length. loop_doubledoubles the length of the loop. loop_halfhalves the length of the loop. loop_exitremove the loop. loop_selectset the loop size (or default loop size if no loop is active). If no parameter is provided, a popup list of loop values to choose from will be displayed. reloopjump to the loop_in point. reloop_exitif in loop, remove the loop. otherwise, reactivate the last used loop. Highlights when a loop had been used loop_positionGet relative position in loop (from 0% to 100%) get_active_loopget the number of beats in the current loop get_loopget the number of beats in the current loop or the default loop size if no loop is active loop_save'loop_save 1' Save current loop in saved loop slot 1
'loop_save "myloop"' Save current loop and name it "myloop" loop_load'loop_load 1' Load the saved loop from slot 1
'loop_load "myloop"' Load saved loop named "myloop" loop_load_prepare'loop_load_prepare 1' Activate/Deactivate the saved loop in slot 1 without jumping to the start point
'loop_load_prepare "myloop"' Activate/Deactivate stored loop named "myloop" without jumping to the start point loop_delete'loop_delete 1' Delete the saved loop in slot 1 saved_loop'saved_loop 1' Load the saved loop in slot 1 or set if it doesn't exist
'saved_loop "myloop"' Load saved loop named "myloop" or set if it doesn't exist saved_loop_prepare'saved_loop_prepare 1' Activate/Deactivate the saved loop in slot 1 without jumping to the start point or set if it doesn't exist
'saved_loop_prepare "myloop"' Activate/Deactivate stored loop named "myloop" without jumping to the start point or set if it doesn't exist get_saved_loopget information about a saved loop: get_saved_loop 'pos', get_saved_loop 'length', get_saved_loop 'name' saved_loop_displayShow information about a saved loop based on the savedLoopDisplay config option.
Example: 'saved_loop_display 1'
Can also be used to modify the savedLoopDisplay option by using +1 or -1 as parameter: 'saved_loop_display +1' saved_loop_autotrigger'saved_loop_autotrigger 1' Activate/Deactivate auto-trigger of loop when the play position arrives at the saved loop loop_colorquery or set the color of a saved loop
Query example: loop_color 1
Set example: loop_color 1 'yellow' loop_backWhen loop back mode is enabled, starting a loop sets the end point of the loop, looping what you just heard. When disabled, starting a loop sets the start point of the loop. loop_roll_modeIf loop roll mode is active, when the loop exits, the song continues from the position it should have been if no looping had been done loop_roll"loop_roll 0.25" for 1/4th beat loop roll
"loop_roll video" to toggle video loop roll on or off slicer"slicer 1" to "slicer 8" for 8 slicer buttons
"slicer 1 'hold'" to hold the current position on first activate
"slicer 'length' +1" to increase length
"slicer 'step' +1" to increase step size
"slicer video" to toggle video slicer on or off repeat_songWhen active, song will restart from beginning when finished loop_adjustuse the jogwheel to adjust the loop.
loop_adjust 'move', loop_adjust 'out', loop_adjust 'in' activate a specific loop adjust mode
loop_adjust -1, loop_adjust +1 emulate moving the jog when loop adjust is active loop_padUse 'loop_pad 1' to 'loop_pad 8' to trigger a loop of predefined length, depending on loop_pad_page and loop_pad_mode loop_pad_pageCycle through the different lengths of loops for use with loop_pad loop_pad_modeCycle through the different loop modes for use with loop_pad. 1=On/Off 2=Hold 3=Roll loop_optionsShow some options about loops
Macro
macro_recordStart or stop recording a macro macro_playplayback a previously recorded macro
Pads
padactivate the ith pad from the current pad page pad_page (or pad_pages)Syntax: 'pad_page 1' to activate a the first page, 'pad_page 1 hotcues' to override the default for a page, 'pad_page btn1' for first button (that could be page 1 or page 5 depending on shift), 'pad_page' to show the dropdown menu pad_page_select (or pad_page_favorite_select)Select the pad page for this slot pad_editedit the current pads page pad_paramchange the param 1 of the pads pad_param2change the param 2 of the pads pad_pressurechange the pressure applied on the ith pad pad_colorreturn the color of the ith pad (without auto-dim) pad_button_colorreturns the color of the ith pad as should be used on a controller button (changing the color for standby/active/pressed according to the controller's RGB capability).
if the pad is active and has no color, white is returned.
if the pad is inactive and has a color, and the controller support full RGB pads, a dimmed color is returned.
if the pad is active and has a color, and the controller doesn't support full RGB pads, the color is blinking. padshiftthe 'pad' action automatically change action on shift, but if you want to manually force the use of the shift action, you can use padshift instead padshift_pressurethe 'pad_pressure' action automatically change action on shift, but if you want to manually force the use of the shift action, you can use padshift_pressure instead padshift_button_colorthe 'pad_button_color' action automatically change action on shift, but if you want to manually force the use of the shift action, you can use padshift_button_color instead pad_pushedreturns true if the pad is pushed (useful for custom color actions not using auto-dim) pad_menuopen the menu for this pad page pad_has_param pad_param_visible pad_has_action pad_has_pressure pad_has_color pad_has_menu pad_has_16padsReturns true when a controller is connected with a 4x4 pad layout pad_bank2Switch between showing pads 1-8 or 9-16 on skins that support it padfxActivate/deactivate named effect with a single key. Effect parameters can be specified as well.
'padfx "echo" 40% 90%' to start/stop the echo effect with first parameter at 40% and second parameter at 90%. When the effect is stopped, the parameters return to their original values.
'padfx "echo" 40% 90% smart_pressed' smart_pressed works as a toggle when pressing the button shortly, or as a temporary while holding the button pressed
'padfx "echo" 40% 90% "TRAIL:on"' after the sliders, it is possible to add strings to disable or enable switch parameters by defining their name, a colon and "on" to enable or "off" to disable
'padfx "echo out" 80% "solostem:vocal"' as the last parameter, you can add solostem:stemname to only let that stem be audible while applying the effect. stem names can be Vocal,HiHat,Bass,Instru,Kick,Melody,Rhythm,MeloVocal,MeloRhythm
'padfx "echo out" "mutestem:rhythm"' as the last parameter, you can add mutestem:stemname to mute that stem while applying the effect
'padfx "reverb" "stemfx:vocal"' as the last parameter, you can add stemfx:stemname to apply the effect only to that stem (other stems will continue playing normally). stem names can be vocals, hihat, bass, instru, kick, rhythm and instrumental padfx_singleSame as padfx, but turns off the previous padfx before activating the current effect
Pitch
pitch (or pitch2 or pitch2_slider or pitch_slider)Set the pitch of the deck. Without parameters it can be assigned to sliders
Used with a number, it gives the position on the slider (and therefore account for pitch_range). ('pitch 0.25' set pitch at -10% if pitch range is 20%)
Used with a percent it gives an absolute position. 'pitch 112%' set pitch at +12%
Relative values are possible too. 'pitch +0.1%', 'pitch +0.1 bpm' pitch_motorized pitch_relativeset the pitch of the deck, to be used by hardware controllers if you prefer the change to be relative to the software pitch position pitch_zeroSet pitch to 0% (normal playing speed)
Use 'pitch_zero "center"' on controllers that send a message when the pitch slider is at the center. This prevents unwanted behavior in gradual or relative mode. pitch_resetSlowly brings the pitch back to 0%. You can specify the speed in % per second (default uses the pitchResetSpeed option): 'pitch_reset 5%'
You can also specify the speed in ms or beats: 'pitch_reset 500ms' or 'pitch_reset 4bt' pitch_rangeset the range for the pitch slider. 'pitch_range 12%' set the range from -12% to +12%.
'pitch_range +1' scrolls through the default pitch ranges. 'pitch_range "12,16,25" +1' scrolls through the provided list of pitch ranges.
'pitch_range +1 deck' changes the pitch range only for the specific deck pitch_bendslow down or speed up the song: 'pitch_bend +3%'. you can make the bend to increase slowly by specifying a second time parameter: 'pitch_bend +1% 500ms' will start at +1% and will double every 500ms. master_tempoactivate/deactivate the master tempo (to make the pitch slider change the speed of the song, but keep the original key of the song). pitch_lock (or pitchlock)when Pitch Lock is on, moving the pitch slider on one deck will move the slider on the other deck to keep the sync startupspeedvinyl startup speed, the larger, the longer it takes for the record to get from stopped to playing backspinDo a backspin. It is possible to specify the length: 'backspin 5000ms' or 'backspin 4bt' brakespeedvinyl brake speed, the larger, the longer it takes for the record to get from playing to stopped get_pitchGet the pitch from -100% to +100%, centered on 0% get_pitch_valueGet the pitch from 0% to 200%, centered on 100% get_pitch_zeroIs true if the pitch is zero, with an optional precision parameter: 'get pitch_zero 5%' (the % is relative to the pitch range. Use "get pitch_zero 'absolute' 0.1%" to use absolute precision)
Plugins
effect_select_multieffect_select_multi 2 "echo" -> select effect echo in slot 2
effect_select_multi 1 -1 -> select previous effect in slot 1
effect_select_multi +1 -> select next effect in slot 1
effect_select_multi -> show popup window for slot 1
effect_select_multi 1 -> show popup window for slot 1
effect_select_multi 1 0.2 -> select the 2/10th effect from the list in slot 1
effect_select_multi "video" -> select effect in the video effect slot
effect_select_multi does not deactivate the previous plugin in the specified slot effect_selecteffect_select 2 "echo" -> select effect echo in slot 2
effect_select 1 -1 -> select previous effect in slot 1
effect_select +1 -> select next effect in slot 1
effect_select -> show popup window for slot 1
effect_select 1 -> show popup window for slot 1
effect_select 1 0.2 -> select the 2/10th effect from the list in slot 1
effect_select "audioonlyvisualisation" -> select visualisation used when song has no video
effect_select deactivates the previous plugin in the specified slot effect_select_toggleSame as effect_select, but will turn on the new effect if the previous effect was on effect_select_popupSame as effect_select, but shows the selection drop-down temporarily for easier selection effect_active (or effect_activate)activate/deactivate the effect on a specific slot. example: effect_active 1 'flanger' on or effect_active 1 effect_disable_all'deck 1 effect_disable_all' Disables all effects on deck 1
'deck master effect_disable_all' Disables all master effects
'effect_disable_all sampler' Disables all sampler effects. 'aux' or 'mic' can be used for mic or aux effects effect_slider (or effect_slider_slider)Move the n-th slider on the given effect
"effect_slider 1 2 50%" : Set slider id 2 on slot 1 to 50%
"effect_slider 1 0%" : set slider id 1 on slot 1 to 0% effect_slider_skip_lengthMove the n-th slider on the given effect, excluding a length slider if present
"effect_slider_skip_length 1 2 50%" : Set slider 2 (excluding length) on slot 1 to 50%
"effect_slider_skip_length 1 0%" : set slider 1 (excluding length) on slot 1 to 0% effect_slider_active (or effect_slider_activate)move a slider and activate the effect as long as the mouse is down effect_has_slidereffect_has_slider 1 2 on -> returns true if there is a second slider on slot 1
effect_has_slider 1 -> returns true if there is a first slider on slot 0 effect_slider_resetreturn this plugin slider to its default value effect_colorfx'effect_colorfx 1 "echo"' to use echo on custom color fx slot 1 (up to 4 custom slots available) effect_colorsliderControl the effect from center position off, to full on either left or right effect_releasesliderControl the effect release specific slider effect_releaseslider_activeControl the effect release specific slider and auto activate the effect effect_button'effect_button 1 2' button 2 on slot 1
'effect_button 2' button 2 on slot 1 effect_has_button'effect_has_slider 1 2 on' -> returns true if there is a second button on slot 1 video_sourceactivate video if not active yet, and open the shader selection dialog if shader is the source video_source_selectselect the plugin used for video source. you can specify by name ('video_source_select "webcam"'), relative ('video_source_select +1') or without parameters to open a popup window listing the available plugins video_transition_selectselect the plugin used for video transitions. you can specify by name ('video_transition_select "my_plugin"'), relative ('video_transition_select +1') or without parameters to open a popup window listing the available plugins video_transition_slider (or video_transition_slider_slider)move the n-th slider of the video transition plugin video_transition_buttonpush the n-th button of the video transition plugin video_fx_selectselect a video effect plugin. you can specify by name ('video_fx_select "my_plugin"'), relative ('video_fx_select +1') or without parameters to open a popup window listing the available plugins video_fx_cleardeactivate all the active video effects video_fxactivate/deactivate the selected video effect get_video_fx_slider_labelget the text to display under this slider control video_fx_slider (or video_fx_slider_slider)move the n-th slider of the video effect plugin video_fx_buttonpush the n-th button of the video effect plugin effects_usedActive when there are any effects activated. Use "effects_used 'deck'" to get the effects on the selected deck, or "effects_used 'master'" to get effects activated on master. get_effects_usedReturns the number of effects currently active get_effect_nameget the name of the currently selected effect get_effect_titleget the title of the currently selected effect get_effect_string (or effect_string)get the text displayed by this effect. Some effects allow setting text as well get_effect_string_nameget the label to display for this effect get_effect_button_nameget the name of the xth button of the currently selected effect get_effect_button_shortnameget the short name of the xth button of the currently selected effect get_effect_button_countget the number of buttons on this effect get_effect_slider_countget the number of slider on this effect get_effect_slider_nameget the name of the xth slider of the currently selected effect get_effect_slider_shortnameget the shortname to display under this slider control get_effect_slider_labelget the label to display under this slider control get_effect_slider_label_fullget the label to display under this slider control get_effect_slider_textget the full text associated with this slider control get_effect_slider_defaultreturns the default value for this slider get_videofx_nameget the name of the currently selected video effect get_videotrans_nameget the name of the currently selected video transition effect_show_guishow the control window for this effect effect_dock_guidock/undock this effect's control window pluginsongpos show_pluginpageshow or hide the plugin control windows in the browser area effect_commandsend a command to this effect effect_beatsset the beat parameter for certain effects effect_beats_allset the beat parameter for 1, 3 or 6 slots depending on skin6FxLayout and skin3FxLayout settings effect_has_beats effect_has_length is_releasefxquery if this effect is in the release effect slot effect_3slots_layoutChange between the 1-slot and 3-slots layout for effects effect_cloneLoad into this deck all 3 slots from the current left or right deck effect_mixfxAssociate an effect with the crossfader effect_mixfx_activateToggle mix fx on or off. Use effect_mixfx_select to select effect_mixfx_selectSelect the mix fx when moving the crossfader effect_bank_savesave the effects in deck fx slots 1 to 6 to the bank specified by the parameter effect_bank_loadload the effects in deck fx slots 1 to 6 from the bank specified by the parameter get_nb_multicam effect_stems_colorGet the color for the effect_stems button effect_stemsApply effects only to the selected stems. 'effect_stems vocal on'
Stems are Vocal,HiHat,Bass,Instru,Kick,Melody,Rhythm,MeloVocal or MeloRhythm effect_arm_stemSelect/unselect a stem to be used with "stems" as slot for effect_ actions
Accepted stem names are Vocal, HiHat, Bass, Instru, Kick. They can be combined using "+" effect_arm_deckFor controllers with a deck selection switch for effects, select the deck effects will be activated on using effect_arm_active effect_arm_selectFor controllers with a effect selection switch, select the effect that will be activated using effect_arm_active effect_arm_activeActivate the effect selected using effect_arm_select on the deck selected using effect_arm_deck effect_arm_sliderMove the effect parameter of the effect selected using effect_arm_select on the deck selected using effect_arm_deck effect_arm_beatsChange the speed of the effect selected using effect_arm_select on the deck selected using effect_arm_deck
Poi
beat_taptap on a few beats to set a new bpm for the song if the application didn't got it right on the first time. edit_poiopen the POI Editor to edit the cue points, and other points of interest edit_bpmopen the BPM Editor to edit the bpm and beat grid adjust_cbgadjust the beat grid. 'adjust_cbg +2' moves the start bar from 4:4. 'adjust_cbg +10%' moves the actual bars. set_bpmset the bpm of the song to the set value: 'set_bpm 129.3', or relative to the actual value: 'set_bpm 50%'. goto_mixpointJump to the specified mix point ("StartTempo", "EndTempo", "StartCut", "EndCut", "StartFade", "EndFade", "StartSound", "EndSound")
Example: goto_mixpoint "StartCut" set_mixpointMove the specified mix point to the current position ("StartTempo", "EndTempo", "StartCut", "EndCut", "StartFade", "EndFade", "StartSound", "EndSound")
Example: set_mixpoint "StartTempo" set_loadpointSet the point where the track will start when loaded set_firstbeatmoves the first beat to the current position, adjusting the beat-grid reanalyzereanalyze bpm etc... for the file loaded on the deck
'reanalyze multi' can be used to scan for multiple bpm's
Prelisten
prelisten (or preview)Pre-listen the selected track prelisten_outputSet this deck to be used for the prelisten player
Example: "deck 1 prelisten_output", or to put it back to default: "prelisten_output 'auto'" prelisten_optionsShow a context menu with the prelisten player options prelisten_posmove the position of the prelisten player prelisten_stopStop the prelisten player
Record
recordstart recording the session. record_cutcut the current recording to a new file (or new track if recording to CD) record_configopen the record configuration panel record_vushow the volume of what's being recorded broadcaststart or stop to broadcast
Optionally add parameter to specify "video", "direct", "server" or "podcast". Without parameters it will use the last used mode. broadcast_messageset or get the broadcast message.
Sampler
sampler_playplay the selected sample. syntax 'sampler_play' plays the default sample.
'sampler_play 4' plays the fourth sample. sampler_play_stutterplay the selected sample. if already playing, restart from begining. sampler_play_stopplay the selected sample if it's not already playing, or stop it if it's already playing. sampler_stopstop the selected sample. syntax 'sampler_stop' stops the default sample. 'sampler_stop 4' stops the fourth sampler slot. 'sampler_stop all' stops all samples. sampler_pad'sampler_pad 1' triggers the sample in slot 1, based on the play mode for that sample slot sampler_pad_shift'sampler_pad_shift 1' stop sample when playing, delete sample otherwise sampler_pad_pageshow next page of samples if the bank has more than 8 samples sampler_assign'sampler_assign 1 "path to vdjsample"' adds the sample to sample slot 1. (For use in drag&drop in pad page) sampler_loaded'sampler_loaded 1' returns true when there is a sample loaded in slot 1, otherwise returns false sampler_colorget the color of the sample on this slot if it has one sampler_select (or sampler_default)select which sample is the default sampler slot for that deck. syntax 'sampler select 5' selects the fifth sampler slot. 'sampler select +1' scrolls through the sampler slots. 'sampler select' open a popup menu to select the new default sampler slot. sampler_positionget the current position of the sample sampler_bankSelect a new sampler bank. Can be called either by name (sampler_bank "birthday"), by number (sampler_bank 2) or can be assigned to a rotary knob (sampler_bank) or buttons (sampler_bank +1) sampler_mutemute/unmute this sample sampler_editedit the given sample in the SampleEditor sampler_mode (or sampler_rapidfire)set the global trigger mode for the sampler: "sampler_mode 'on/off'", 'hold', 'stutter' or 'unmute'
set trigger mode for a specific sample: "sampler_mode 1 'on/off'" to set sample 1 mode or "sampler_mode 1 +1" to cycle sampler_outputSelect sampler output channel. 'deck master sampler_output', 'sampler_output "headphones"', 'deck 1 sampler_output', 'sampler_output "popup"' sampler_optionspopup the sample menu.
can also be used with 'sampler_options "locked"' or 'sampler_options "stemswap"' to change the bank's settings. sampler_volume_master'sampler_volume_master' sets the master volume of the sampler sampler_pflSelect if the sampler is sent to the headphones. (can be used with a slider or a % to specify the volume: 'sampler_pfl 75%') sampler_volume'sampler_volume' sets the volume of the sample that has the focus, on the selected deck.
'sampler_volume 1' sets the volume of the sample in slot 1 in the current bank.
'sampler_volume "siren"' sets the volume of the sample 'siren.vdjsample'. sampler_velocity sampler_volume_nogroupsets the volume of the sample without changing the volume of other samples in the same group sampler_group_volumechange the volume of all the samples in the give group. You can specify the group by name, or by group index sampler_group_colorget the color of a sampler group sampler_group_nameget the name of a sampler group sampler_group_mutemute/unmute a sample group. You can specify the group by name, or by group index sampler_has_groupreturns true if the specified group (specified by name or by index) exists in the current samplebank scratchbank_edit scratchbank_load scratchbank_assign scratchbank_load_to_deck scratchbank_unload (or sampler_unload_from_deck)Unload the song previously loaded using scratchbank_load_to_deck from deck and load back the last song sampler_load_to_deckLoad the sample from the selected slot to the deck sampler_recOn first press, start to record a new sample. On second press, stop to record
Use 'sampler_rec "mic"' to record a sample from microphone, or 'sampler_rec "master"' to record from master output
If the deck is on loop, a loop sample will immediately be created. If the deck is playing, it will record what's playing until the stop. If the deck is paused, it sets the 'entry point', and the second push will set the 'exit point' and use the deck's file between those two points.
'sampler_rec 1' or 'sampler_rec 1 "mic"' will store the sample in the first slot of the "Record" sample bank, so that it can be used immediately after recording sampler_start_recstart to record (from the deck, or from mic or master if specified) in order to create a new sample file sampler_stop_recstop the recording and save the result in a sample file sampler_abort_reccancel the recording and delete the sample file sampler_rec_deletedelete a recording from the "Recordings" bank
"sampler_rec_delete 3" would delete the sample previously recorded using "sampler_rec 3" sampler_loopuse 'sampler_loop -1' or 'sampler_loop +1' to change the length of a playing sample
use 'sampler_loop "current" 1' to set the sample to loop for 1 beat or 'sampler_loop 1 1' to set sample 1 to 1 beat loop
use 'sampler_loop "current" 0.5 "play" while_pressed' to loop the sample as long as long as the button is pressed for 0.5 beats sampler_used (or get_sampler_used)check if a sample is playing (or if used with 'sampler_used 4' check if exactly 4 samples are playing) get_sampler_slotget the number of the sampler slot that currently has the focus get_sampler_countget the number of slots in the current sampler bank get_sample_name (or get_sample_slot_name)get the name of the specified sample get_sample_infoget additional information about the sample, such as 'get_sample_info 1 fullpath'
In addition to the regular column names, 'group' is also supported, and 'length' returns beat values for loops get_sampler_bankget the name of the currently loaded sampler bank get_sampler_bank_idget the number of the currently loaded sampler bank get_sampler_bank_countget the number of sample banks get_sample_colorget the color for the specified sample (with auto-dim)
Sandbox
sandboxactivate/deactivate sandbox mode.
in sandbox mode, the master output continues to play what it was playing without being affected by your actions, and you can move both decks to whatever position you want, in order to prelisten your upcomming mix. can_sandboxreturns true if virtualdj can be sandboxed.
sandbox cannot be activated while you have effects or samples active, or video, or if you're scratching, or if you have more than one deck playing with the volume up.
Sync
syncsmoothly synchronize the song with the other deck. is_syncon when tracks are synchronized (bpm and phase while playing, bpm when not playing) match_bpmset the pitch to match the BPM of the other deck. match_gainset the gain to match the other deck. play_syncplay the song instantly synchronized with the other deck. play_onbeatinstantly synchronize the song with the other deck, using local beat information instead of the global beatgrid, but don't change the pitch. play_sync_onbeat (or sync_nocbg)instantly synchronize the song with the other deck, using local beat information instead of the global beatgrid. beatlockWhen beatlock is activated, the songs are kept synchronized, even when moving the pitch, scratching, etc... smart_faderWhen smart fader is activated, songs are synchronized while using the crossfader, and the tempo moves toward the tempo of the song that is being faded into auto_bpm_transitionWhen pressed, the bpm of the song is gradually moved to the bpm of the other deck while keeping both songs at the same bpm
When smartPlay or autoBPMMatch are on, it will move to the bpm of the other deck at normal speed
When using parameter 'source_original', 'target_original' or 'target_current' you can force which bpm it will transition to auto_bpm_transition_optionsEnable/Disable certain features of the auto_bpm_transition.
First parameter can be 'length', 'loop', 'stems', 'master_tempo', 'autostart'
When selecting stems to disable, use 'auto_bpm_transition_options stems vocal' for example get_bpm_matchReturns 0.5 when bpm's are synchronized auto_sync_settingsSet some pre-defined values for the main automatic sync settings (auto match bpm, auto match key, auto sync, auto pitch lock) depending on the skin category sync_hintsync_hint 'pitch' returns true if the pitch should be matched. Then sync_hint 'phase' returns true if the phase should be synced phrase_syncshift by a number of beat to match the phrase of the other deck (default 4:4, but can specify 'phrase_sync 16' for example) quantize_allSet all quantize options
Text
get_textget some text. You can use the inverted apostrophe to query VDJScript results within the text: "get text 'You are listening to `get loaded_song "title"` at `volume` volume.".\nVDJScript returning booleans (buttons) will be displayed as "on" or "off".\nVDJScript returning values (sliders) will be displayed as a percentage.\n(you can also (but it's being deprecated in VDJ7) use % shortcuts for some common queries: "get text 'you are listening to %title by %author'") get_statusget information about background tasks stopwatch stopwatch_reset countdownCount down to a specific date or time. Example: countdown '2025/01/01 00:00'
Second parameter can be used to optionally format the return value. Use %full, %HH, %MM, %SS, %DD
Timecode
timecode_activeSelect if the deck is controlled by a timecode signal.
(note: You can use 'timecode_active x' where x is the turntable number, to assign the same turntable to control several decks at once: 'deck 1 timecode_active 1 on & deck 2 timecode_active 1 on') invert_timecodeInvert timecode control (for 1 timecode source, switch it through available decks, for 2 timecode sources, from 1 to 3, 2 to 4) timecode_modeSet the timecode mode: 'smart', 'absolute', 'relative'. timecode_configOpen the timecode config window timecode_bypassUse the timecode turntable as linein input timecode_reset_pitchReset the "software" pitch to 100%, so that the deck pitch matches the turntable pitch exactly, and needle-drop is truly absolute timecode_pitchFor controllers that send the pitch through midi, let the timecode engine know the pitch slider's position get_hastimecodereturns true if the current soundconfig includes some timecode inputs get_timecode_quality timecode_cd_modeForce timecode to CD mode (use when using a vinyl timecode on a cd or other digital device) timecode_motor_enableHybrid turntables that send midi messages to indicate if motor is enabled can use this timecode_optionsShow some timecode options
Video
leftvideoassign this deck to the left of the video crossfader: "deck 3 leftvideo" or "leftvideo +1" or "leftvideo 'auto'". rightvideoassign this deck to the right of the video crossfader: "deck 3 rightvideo" or "rightvideo +1" or "rightvideo 'auto'". leftvideo_buttonsimple button to control the left video source: "deck 3 leftvideo_button". rightvideo_buttonsimple button to control the right video source: "deck 3 rightvideo_button". is_videoreturn true if this deck has some video is_audioonlyvisualisationreturn true if this deck has the audio only visualisation running on it has_video_mixreturn true if video output is using transition and video-crossfader with one or more video sources, false if it's playing audio-only and using a source plugin over_video (or overvideo)force this deck's video output on the video master video_crossfader_linklink or unlink the video crossfader to the audio crossfader video_crossfader_automove the video crossfader automatically according to which side is playing, cueing, scratching, etc... videoopen or close the video window video_outputShow menu to select on which monitor to open the video output.
You can also specify a specific output: "video_output 1" to open video output on the first monitor
To just show or hide the output use "video_output on" or "video_output off". To toggle output, use "video_output ? video_output off : video_output on" video_crossfaderset the video crossfader video_fadetoblackactivate/deactivate fade-to-black on volume sliders video_transitionLaunch a transition from one video deck to the other.
You can specify the duration of the transition: 'video_transition 1000ms'
You can specify the direction of the transition: 'video_transition "left"' or 'video_transition "left" 1000ms'
You can specify the location to transition to using a percentage (or assign it to a slider): 'video_transition 50%' or 'video_transition 1000ms 50%' video_delayset a delay between video or audio to synchronize output (in milliseconds)
Use "video_delay +100ms" or "video_delay -100ms" to increase or decrease the delay, or "video_delay 0ms" to reset it
Use "video_delay +100" or "video_delay -100" to set it to exactly the specified amount video_levelfade-to-black independent slider for the left or right video deck