Hi, just wondering what Im doing wrong to copy metadata from one deck to another, to manage some in VDJ metadata management whilst I de-dup.
For some reason Show_text doesnt appear to work (using the default pro skin + maybe have too many quick filters?)
The copy read script is:
set_var 'titleA' 'deck A get_title' & set_var 'artistA' 'deck A get_artist' & show_text "COPIED"
Thanks in advance
For some reason Show_text doesnt appear to work (using the default pro skin + maybe have too many quick filters?)
The copy read script is:
set_var 'titleA' 'deck A get_title' & set_var 'artistA' 'deck A get_artist' & show_text "COPIED"
Thanks in advance
Posted Mon 14 Jul 25 @ 1:17 pm
Are you using a controller or skin that uses get_display to show the text set by show_text?
Posted Mon 14 Jul 25 @ 2:32 pm
set_var 'titleA' `deck 1 get_title`
deck num, never deck letter
you also used ' ' to wrap the 2nd param, that would make it literal text, you want to wrap in ` ` .
Posted Mon 14 Jul 25 @ 4:33 pm
I tried debug songpos to check the current position in VirtualDJ, but it only shows a window with the word "songpos."
Is there a way to show the actual value?
Is there a way to show the actual value?

Posted 7 days ago @ 6:05 am
For a start it's song_pos not songpos.
And the syntax for debug is
GetThing & param_cast & debug
And the syntax for debug is
GetThing & param_cast & debug
Posted 7 days ago @ 6:26 am
Thank you. It worked. I guess this value can't be exported to a file using VDJScript alone, can it?
Posted 7 days ago @ 6:35 am
exported to a file...
What does that mean when related to song_pos ? Like a hot_cue could be understood as a song_pos depending on how you want to look at it.
What does that mean when related to song_pos ? Like a hot_cue could be understood as a song_pos depending on how you want to look at it.
Posted 7 days ago @ 7:01 am
For the past few years, I've been creating long DJ mixes—sometimes lasting up to 10 hours—over the course of several days. When I stop for the day, I pause the mix and take a picture of my screen with my phone so I can remember the exact playback position and settings. The next day, I manually restore the decks to the same position and settings based on the photo. After finishing the full mix, I use video editing software to cut out any silent parts between sessions.
Ideally, I’d like to develop a plugin (or request a feature) that lets me save the current session state—including the playhead position, pitch, and EQ values of both decks—and then resume exactly where I left off the next day.
Ultimately, I’d like to develop a plugin that has this kind of functionality.
Ideally, I’d like to develop a plugin (or request a feature) that lets me save the current session state—including the playhead position, pitch, and EQ values of both decks—and then resume exactly where I left off the next day.
Ultimately, I’d like to develop a plugin that has this kind of functionality.
Posted 7 days ago @ 7:16 am
Perhaps you can experiment with save_deck_set and load_deck_set then.
Also, you could set a "temporary" hotcue (let's say hotcue 99) on the position that you want to keep in memory, that you can delete afterwards (after you resume your working with the mix the next day)
So, instead of trying to seek to position 48.87% on the song (that would be what song_pos reports) you have a hotcue ready to take you there. And hotcues are virtually unlimited in VitualDJ. Therefore you don't have to "waste" a "good" slot (hotcues 1-8). You can decide to always use hotcue 99, or hotcue 20 or whatever number you want..
PS:
I have done what you do once or twice, and my way of doing things was quite simpler:
I made it a habit to always end my "partial" mix on a song with 0% pitch adjustment and flat EQ that would play until the end.
Then on the next session I would start mixing from the beginning of that same song and I would not adjust pitch / EQ until it was time to mix the next one.
Therefore, in post I would have plenty of "space" where both parts of my long mix would play the exact same part of a song with the exact same "settings". So it would be easy to "overlap" and mix cut them.
Also, you could set a "temporary" hotcue (let's say hotcue 99) on the position that you want to keep in memory, that you can delete afterwards (after you resume your working with the mix the next day)
So, instead of trying to seek to position 48.87% on the song (that would be what song_pos reports) you have a hotcue ready to take you there. And hotcues are virtually unlimited in VitualDJ. Therefore you don't have to "waste" a "good" slot (hotcues 1-8). You can decide to always use hotcue 99, or hotcue 20 or whatever number you want..
PS:
I have done what you do once or twice, and my way of doing things was quite simpler:
I made it a habit to always end my "partial" mix on a song with 0% pitch adjustment and flat EQ that would play until the end.
Then on the next session I would start mixing from the beginning of that same song and I would not adjust pitch / EQ until it was time to mix the next one.
Therefore, in post I would have plenty of "space" where both parts of my long mix would play the exact same part of a song with the exact same "settings". So it would be easy to "overlap" and mix cut them.
Posted 7 days ago @ 7:27 am
Thanks for your opinion and very helpful information!
I was able to save the pitch value and the pause point with save_the_deck. I'm satisfied with just that, but it couldn't save the EQ value. It would be great if the EQ value could also be saved.
I was able to save the pitch value and the pause point with save_the_deck. I'm satisfied with just that, but it couldn't save the EQ value. It would be great if the EQ value could also be saved.

Posted 7 days ago @ 7:40 am
The xml file saved by save_deck_set looks like this:
<deckset version="850" date="2025/07/22">
<load deck="1" filepath="xxx.wav" volume="4096" pos="5985252" gain="2048" pitch="4377"/>
<load deck="2" filepath="yyy.mp3" volume="4096" pos="4616170" gain="2048" pitch="3824"/>
</deckset>
I wonder if it is possible to specify high, mid, and low attributes in the load tag by editting this xml file manually.
Posted 7 days ago @ 1:57 pm
Probably not, as part of your save deck set procedure you could write a script to an unused tag and recall it next time round.
Posted 7 days ago @ 2:34 pm
I tried various attribute names such as high, eq_high, eq_high_freq, but I couldn't specify equalizer values. It's strange that we can't specify equalizer values even though there is GAIN attribute.
Posted 6 days ago @ 11:48 pm
Not strange really, eq wasn't wrote in to the xml when it was designed, machines only do as they're been told, they can't interpret outside what they're been told.
Just write a couple of buttons, save & recall
Just write a couple of buttons, save & recall
Posted 6 days ago @ 6:06 am
locoDog wrote :
deck num, never deck letter
you also used ' ' to wrap the 2nd param, that would make it literal text, you want to wrap in ` ` .
set_var 'titleA' `deck 1 get_title`
deck num, never deck letter
you also used ' ' to wrap the 2nd param, that would make it literal text, you want to wrap in ` ` .
On this topic, is it good practice to use deck left, deck right ?
Posted 16 hours ago
deck 'side' will work, best practice depends on case.
Posted 16 hours ago
Hello!
I have a question about the display behavior of buttons or pads. (on/off)
I tried creating pads with these:
(browser_window 'remixes' && show_splitpanel 'sideview')
(browser_window 'automix' && show_splitpanel 'sideview')
If the remixes tab is active, then my remixes pad will be on, and the automix one will be off as expected.
Unfortunately, the action is not exactly what I wanted so I did this instead:
(browser_window 'remixes' && show_splitpanel 'sideview') ? show_splitpanel 'sideview' off : (show_splitpanel 'sideview' on & browser_window 'remixes' on)
(browser_window 'automix' && show_splitpanel 'sideview') ? show_splitpanel 'sideview' off : (show_splitpanel 'sideview' on & browser_window 'automix' on)
The action is now fine but the pad status is now reversed?? I don't undersant why and I'm running in circles trying to fix it.
Thanks in advance for your help!
I have a question about the display behavior of buttons or pads. (on/off)
I tried creating pads with these:
(browser_window 'remixes' && show_splitpanel 'sideview')
(browser_window 'automix' && show_splitpanel 'sideview')
If the remixes tab is active, then my remixes pad will be on, and the automix one will be off as expected.
Unfortunately, the action is not exactly what I wanted so I did this instead:
(browser_window 'remixes' && show_splitpanel 'sideview') ? show_splitpanel 'sideview' off : (show_splitpanel 'sideview' on & browser_window 'remixes' on)
(browser_window 'automix' && show_splitpanel 'sideview') ? show_splitpanel 'sideview' off : (show_splitpanel 'sideview' on & browser_window 'automix' on)
The action is now fine but the pad status is now reversed?? I don't undersant why and I'm running in circles trying to fix it.
Thanks in advance for your help!
Posted 16 hours ago
locoDog wrote :
deck 'side' will work, best practice depends on case.
Thanks!
Posted 16 hours ago
(browser_window 'remixes' && show_splitpanel 'sideview') ? on & show_splitpanel 'sideview' off : off & (show_splitpanel 'sideview' on & browser_window 'remixes' on)
common mistake when first dealing with button led logic, the reply to the query to turn the thing off should first tell the led to be on [because it is on], LED queries happen constantly, unlike button press triggered queries that only happen when button pressed.
Posted 16 hours ago
@Yan Duval:
A lot of times it's easier (and preferable) to "unlink" the led query (when the led is on) from the action of the pad.
Take a look at these examples:
A lot of times it's easier (and preferable) to "unlink" the led query (when the led is on) from the action of the pad.
Take a look at these examples:
<pad1 name="`get_effect_name 1`" color="effect_active 1 on ? var_equal 'FX1MomPush' 0 ? color 'green' : color 'blue' : color 'blue'" query="var_equal 'FX1MomPush' 0 ? effect_active 1" autodim="false">effect_active 1</pad1>
<pad5 name="^ MP" color="effect_active 1 on ? var_equal 'FX1MomPush' 1 ? color 'green' : color 'blue' : color 'blue'" query="var_equal 'FX1MomPush' 1 ? effect_active 1" autodim="false">effect_active 1 on while_pressed & set 'FX1MomPush' 1 while_pressed</pad5>
Posted 15 hours ago