登录:     


Forum: General Discussion

Topic: Script School - Page: 53.2
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
 

Are you using a controller or skin that uses get_display to show the text set by show_text?
 

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 ` ` .
 

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?
 

For a start it's song_pos not songpos.
And the syntax for debug is

GetThing & param_cast & debug
 

Thank you. It worked. I guess this value can't be exported to a file using VDJScript alone, can it?
 

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.
 

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.
 

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.
 

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.
 


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.
 

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.
 

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.
 

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
 

locoDog wrote :
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 ?
 

deck 'side' will work, best practice depends on case.
 

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!
 

locoDog wrote :
deck 'side' will work, best practice depends on case.

Thanks!
 

(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.
 

@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:
<pad1 name="`get_effect_name 1`" color="effect_active 1 on ? var_equal &apos;FX1MomPush&apos; 0 ? color &apos;green&apos; : color &apos;blue&apos; : color &apos;blue&apos;" query="var_equal &apos;FX1MomPush&apos; 0 ? effect_active 1" autodim="false">effect_active 1</pad1>
<pad5 name="^ MP" color="effect_active 1 on ? var_equal &apos;FX1MomPush&apos; 1 ? color &apos;green&apos; : color &apos;blue&apos; : color &apos;blue&apos;" query="var_equal &apos;FX1MomPush&apos; 1 ? effect_active 1" autodim="false">effect_active 1 on while_pressed &amp; set &apos;FX1MomPush&apos; 1 while_pressed</pad5>
 

100%