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?

Mensajes Tue 22 Jul 25 @ 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
Mensajes Tue 22 Jul 25 @ 6:26 am
Thank you. It worked. I guess this value can't be exported to a file using VDJScript alone, can it?
Mensajes Tue 22 Jul 25 @ 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.
Mensajes Tue 22 Jul 25 @ 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.
Mensajes Tue 22 Jul 25 @ 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.
Mensajes Tue 22 Jul 25 @ 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.

Mensajes Tue 22 Jul 25 @ 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.
Mensajes Tue 22 Jul 25 @ 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.
Mensajes Tue 22 Jul 25 @ 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.
Mensajes Tue 22 Jul 25 @ 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
Mensajes Wed 23 Jul 25 @ 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 ?
Mensajes Mon 28 Jul 25 @ 11:57 am
deck 'side' will work, best practice depends on case.
Mensajes Mon 28 Jul 25 @ 12:05 pm
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!
Mensajes Mon 28 Jul 25 @ 12:06 pm
locoDog wrote :
deck 'side' will work, best practice depends on case.
Thanks!
Mensajes Mon 28 Jul 25 @ 12:07 pm
(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.
Mensajes Mon 28 Jul 25 @ 12:34 pm
@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>
Mensajes Mon 28 Jul 25 @ 1:04 pm
Thank you both for your help.
I'll try these and come back to you!
I'll try these and come back to you!
Mensajes Mon 28 Jul 25 @ 4:15 pm
This works fine, thanks again. It brings more questions:
1- When part of a "query=...", are the actions actually performed or are they simply muted and used only as queries?
2- "A ? B" used above is the same as "A or B" if "or" was available in VDJ script?
3- Can "A ? B" used in any context without the ":" or does it sometimes need to be: "A ? B : nothing"
4- If an action is quite complex, can it be useful for performance reasons to modify a variable in the action in order to have a very simple query? I assume that if a query is available, the action stops being queried and is only performed when the button is presse?
With extras:
5- I sometimes see $myvar used without the ''. Like "set_var $myvar" instead of "set_var '$myvar'" Does it have a special meaning, or is it only that it's tolerated by VDJ in certain situations?
6- When used with a varialbe, is there any difference between "set" and "set_var".
Thanks!!
1- When part of a "query=...", are the actions actually performed or are they simply muted and used only as queries?
2- "A ? B" used above is the same as "A or B" if "or" was available in VDJ script?
3- Can "A ? B" used in any context without the ":" or does it sometimes need to be: "A ? B : nothing"
4- If an action is quite complex, can it be useful for performance reasons to modify a variable in the action in order to have a very simple query? I assume that if a query is available, the action stops being queried and is only performed when the button is presse?
With extras:
5- I sometimes see $myvar used without the ''. Like "set_var $myvar" instead of "set_var '$myvar'" Does it have a special meaning, or is it only that it's tolerated by VDJ in certain situations?
6- When used with a varialbe, is there any difference between "set" and "set_var".
Thanks!!
Mensajes Sun 07 Sep 25 @ 3:39 pm
5 tolerated, I have a topic quite recently on when " ' or ` can be omitted. Not sure if I added it to the first page index.
[I haven't yet it's a few pages back Posted Sun 20 Apr 25 @ 11:00 pm
6 Generally no difference for values, although set_var makes strings easier, example
set a 1 & set b a, both a & b will be set to 1, because that's how the set verb has worked forever, b is set to the same value as a.
set a 1 & set_var b a, a will be 1 as you'd expect but b will be set to the literal text "a"
1 LED/skin queries perform no actions they don't set variables they don't cause actions like "play" to happen, they just query
Other questions I'm not following your meaning.
[I haven't yet it's a few pages back Posted Sun 20 Apr 25 @ 11:00 pm
6 Generally no difference for values, although set_var makes strings easier, example
set a 1 & set b a, both a & b will be set to 1, because that's how the set verb has worked forever, b is set to the same value as a.
set a 1 & set_var b a, a will be 1 as you'd expect but b will be set to the literal text "a"
1 LED/skin queries perform no actions they don't set variables they don't cause actions like "play" to happen, they just query
Other questions I'm not following your meaning.
Mensajes Sun 07 Sep 25 @ 7:31 pm