Then casting the slot number is where that verbs params end,
you use browser_scroll +1 & browser_enter to get the same result after, casting an fx slot is pretty weird need.
you use browser_scroll +1 & browser_enter to get the same result after, casting an fx slot is pretty weird need.
geposted Thu 08 May 25 @ 2:05 am
I want to implement a "selection mode" on my FLX4. The Beat FX are in slot 1 while the Release FX is on slot 3. Depending on the mode, the same button will select the FX of slot 1 or 3. It can be done with a condition, but I thought it would be cleaner with a variable. As I stumbled with the problem, I saw it as a learning opportunity. Unfortunately, I don't understand your answer.
geposted Thu 08 May 25 @ 10:03 pm
sometimes there isn't a clean way to do it, sometimes you do what you can even if it feels like a long way round, it might be the only way round.
Your case, why cast? it's a binary choice, you don't need to make it dynamic. Why make work for yourself,
but if you do want to learn, pay attention to what I said,
Your case, why cast? it's a binary choice, you don't need to make it dynamic. Why make work for yourself,
but if you do want to learn, pay attention to what I said,
set a 3 & get_var a & param_cast int & effect_select & wait 33ms & browser_scroll +1 & browser_enter
geposted Thu 08 May 25 @ 10:20 pm
Now I understand. I couldn't see the link between the browser and fx selection!
Thanks!
Thanks!
geposted Sat 10 May 25 @ 12:33 am
A few things added in BUILD 8663 that I think need some notes.
-settings script can update more settings
-setting script accepts script as second parameter
-browsed_song_hashtag and loaded_song_hashtag scripts to add/remove hash tags from user 1, user 2 and comment field
-effect_arm_* scripts support fx units as first parameter (1 or 2, with 3 slots per unit)
-settings script can update more settings
well that's a bit vague, but I did some testing here's what I've found
setting browserShortcuts
setting browserShortcutsIcons
setting colorRules
setting quickFilters
setting rootfolderslocation
setting skinsplitstate
setting browserColumns
are now all scriptable, example case
This change means most* of settings are now scriptable.
I'll show you something I've used this for that I think is pretty handy [in a browser administration kind of way]
First I get my browser exactly how I like it, the dividing lines between folders/songs/sideview where I like them [the proper name is "split(s)"]
I then also get my browser columns exactly how I like them; in order and spaced the column splits how I like them
I made a custom_button called SAVE, I gave it this script
I press the button to save these settings.
I then made a second custom button called "RESET" with this script
I can now totally change my browser, move the splits, remove columns, add columns, make a real mess [like all guests on my rig seem to need to do]. And then all I have to do it press my RESET button and my browser is restored to how I like it. Ah zen :)
the layout is just saved and recalled from a variable so you could have as many save states as you need with a different variable name [just always start with @$ to make it a persistent global variable]
This leads me to the second thing
-setting script accepts script as second parameter
remember our RESET button earlier? We can do this now instead of the param_cast :)
Video demo
-settings script can update more settings
-setting script accepts script as second parameter
-browsed_song_hashtag and loaded_song_hashtag scripts to add/remove hash tags from user 1, user 2 and comment field
-effect_arm_* scripts support fx units as first parameter (1 or 2, with 3 slots per unit)
-settings script can update more settings
well that's a bit vague, but I did some testing here's what I've found
setting browserShortcuts
setting browserShortcutsIcons
setting colorRules
setting quickFilters
setting rootfolderslocation
setting skinsplitstate
setting browserColumns
are now all scriptable, example case
setting colorRules 'red=Exists = 1,...'
This change means most* of settings are now scriptable.
I'll show you something I've used this for that I think is pretty handy [in a browser administration kind of way]
First I get my browser exactly how I like it, the dividing lines between folders/songs/sideview where I like them [the proper name is "split(s)"]
I then also get my browser columns exactly how I like them; in order and spaced the column splits how I like them
I made a custom_button called SAVE, I gave it this script
get_text `setting browserColumns` & param_cast & set_var '@$browserColumns' & get_text `setting skinsplitstate` & param_cast & set_var '@$browserSplits'
I press the button to save these settings.
I then made a second custom button called "RESET" with this script
get_var '@$browserColumns' & param_cast & setting browserColumns & get_var '@$browserSplits' & param_cast & setting skinsplitstate
I can now totally change my browser, move the splits, remove columns, add columns, make a real mess [like all guests on my rig seem to need to do]. And then all I have to do it press my RESET button and my browser is restored to how I like it. Ah zen :)
the layout is just saved and recalled from a variable so you could have as many save states as you need with a different variable name [just always start with @$ to make it a persistent global variable]
This leads me to the second thing
-setting script accepts script as second parameter
remember our RESET button earlier? We can do this now instead of the param_cast :)
setting browserColumns `get_var '@$browserColumns'` & setting skinsplitstate `get_var '@$browserSplits'`
Video demo
The third thing
-browsed_song_hashtag and loaded_song_hashtag scripts to add/remove hash tags from user 1, user 2 and comment field
example
browsed_song_hashtag 'user 1' '#bouncy'
param 1 is the tag, param 2 is the hashtag string to add/remove.
More; There's almost certainly things you could do with
setting browserShortcuts
setting colorRules
setting quickFilters
that could be useful in some cases, I haven't fully studied.
Lastly
-effect_arm_* scripts support fx units as first parameter (1 or 2, with 3 slots per unit)
I haven't studied this at all yet, so I'll make another post when I have.
geposted Sun 06 Jul 25 @ 2:37 pm
Since set_var also accepts a script parameter, you could further tidy up the storing of settings as well
set_var '@$browserColumns' `setting browserColumns`
geposted Sun 06 Jul 25 @ 5:22 pm
oh of course yeah, I think of set_var as only strings, but without " or ' a `script action` will parse as a string.
geposted Sun 06 Jul 25 @ 5:29 pm
Thank you so much to add the tagging verb (browsed_song_hashtag ) and to follow my suggestion.
This makes tagging using a pad so much easier.
You guys simply rock!
This makes tagging using a pad so much easier.
You guys simply rock!
geposted Mon 07 Jul 25 @ 7:00 am
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
geposted 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?
geposted 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 ` ` .
geposted 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?

geposted 2 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
geposted 2 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?
geposted 2 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.
geposted 2 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.
geposted 2 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.
geposted 2 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.

geposted 2 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.
geposted yesterday @ 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.
geposted yesterday @ 2:34 pm