Connexion rapide:  

Forum: General Discussion

Sujet Script School - Page: 31
locodog wrote :

param_equal `get_var a` `get_var a & param_cast 'text' 1` ? SIZE OF 1 : 
param_equal `get_var a` `get_var a & param_cast 'text' 2` ? SIZE OF 2 :
param_equal `get_var a` `get_var a & param_cast 'text' 3` ? SIZE OF 3 :
param_equal `get_var a` `get_var a & param_cast 'text' 4` ? SIZE OF 4 :


Thank you !

 

Posté Thu 17 Nov 22 @ 1:18 pm
Someone asked for a midnight countdown video effect, but I was thinking that it would maybe be simpler to add it to a video skin
But that will need some scripting
I assume the value could then be taken from comparing 23:59:59 to get_clock cast to maybe an integer, then param_multiply -1 and param_add to get the difference, maybe adding the missing second, and then showing the value?
But I can only figure out how to do the first few steps...
 

Posté Sun 04 Dec 22 @ 6:10 am
locoDogPRO InfinityModeratorMember since 2013


I've done it, I just need to remember how I did it.

*edit, I found it and I remember the problem now. It needs to be started at a known time.
[it monitors saved clock state v current clock and if different, -1 from the countdown, some maths, and resave new clock state]
Problem root is, get_clock, it returns a string so it will only cast the hour value as an int [the : breaks it]. And we've got nothing for casting substrings.

get_clock 'hour'
get_clock 'min'
get_clock 'sec'

would be one fix, for this specific problem, but that isn't real script currently.

param_cast 'text' SIZE INDEX

would be another more round about fix, it would have other uses too, but again doesn't exist.

I suppose it could be brute forced to get the time in a usable form but that would be pretty ugly.
[I'll see how it looks]

Or windows I could make a plugin
 

Posté Sun 04 Dec 22 @ 6:24 am
AdionPRO InfinityCTOMember since 2006
I'll add a countdown script to make this easier
 

Posté Sun 04 Dec 22 @ 7:17 am
locoDogPRO InfinityModeratorMember since 2013
thanks that would be good, I've just done the script way anyway.
not easy I suppose I'll post it here in the off chance I need it in the future,
plus to remind myself how to do stuff

get hour,min,sec as vars
timer to midnight
send to text plugin

deck master repeat_start runClock ? 
var $showCount 1 ?
on & set $showCount 0 & deck master effect_string 'text' 2 "GENERIC MESSAGE" : off & set $showCount 1 & deck master effect_active text on :
set $showCount 1 & deck master effect_active text on & deck master effect_string 'text' 2 "COUNTDOWN" &
set $minString `get_clock 24 & param_cast 'text' 5` &
set $secString `get_clock 24` &
set $hours `get_clock 24 & param_cast 'integer'` &
set $min 0 &
set $sec 0 &
set $time `get_var $hours & param_cast '00' & param_cast 'text'` &
set_var $char ":" &
set $time `param_add 'get_var $char' 'get_var $time' & param_cast 'text'` &
set $time1 $time &
( param_smaller 10 `get_var $min` ? set $min `param_add 'get_var $min' 'get_text "0"'` : ) &
set $time1 `param_add 'get_var $min & param_cast 00' 'get_var $time'" & param_cast 'text'` &

repeat_start_instant minRun 25ms 60 &
var_equal "$minString" "$time1" !?
set $min `param_add 'get_var $min & param_cast "integer"' 1` &
( param_smaller 10 `get_var $min & param_cast 'integer'` ? set $min `param_add 'get_var $min & param_cast "text"' 'get_text "0"'` : ) &
set $time1 `param_add 'get_var $min & param_cast "text"' 'get_var $time' & param_cast 'text'` :
repeat_stop minRun &
set $time `param_add 'get_var $char' 'get_var $time1'` &
set $time1 $time &
( param_smaller 10 `get_var $sec` ? set $sec `param_add 'get_var $sec' 'get_text "0"'` : ) &
set $time1 `param_add 'get_var $sec & param_cast 00' 'get_var $time'"` &

repeat_start_instant secRun 25ms 60 &
var_equal "$secString" "$time1" !?
set $sec `param_add 'get_var $sec & param_cast "integer"' 1` &
( param_smaller 10 `get_var $sec & param_cast 'integer'` ? set $sec `param_add 'get_var $sec & param_cast "text"' 'get_text "0"'` : ) &
set $time1 `param_add 'get_var $sec & param_cast "text"' 'get_var $time' & param_cast 'text'` :
repeat_stop secRun &

repeat_start_instant correction 25ms 6 &
var_equal "$time1" `get_clock 24` !?
set $hours `get_var $hours & param_cast 'integer'` &
set $min `get_var $min & param_cast 'integer'` &
set $sec `get_var $sec & param_cast 'integer'` &
( cycle $sec 60 & var $sec 0 !? : cycle $min 60 & var $min 0 !? : cycle $hours 24 ) &
set $time3 `get_var $hours & param_cast '00' & param_cast 'text'` &
set $time3 `param_add 'get_var $char' 'get_var $time3' & param_cast 'text'` &
set $time3 `param_add 'get_var $min & param_cast "00"' 'get_var $time3' & param_cast 'text'` &
set $time3 `param_add 'get_var $char' 'get_var $time3' & param_cast 'text'` &
set $time3 `param_add 'get_var $sec & param_cast "00"' 'get_var $time3' & param_cast 'text'` &
set $time1 $time3 :

repeat_stop correction &
set $hours `get_var $hours & param_cast 'integer'` &
set $min `get_var $min & param_cast 'integer'` &
set $sec `get_var $sec & param_cast 'integer'` &
set $countdown `param_add "param_multiply 'get_var $hours' 3600" "param_multiply 'get_var $min' 60"` &
set $countdown `param_add "get_var $sec" "get_var $countdown"` &
set $day 86400 &
set $countdown `param_multiply "get_var $countdown" -1 & param_add 86400` &
set $time `get_clock 24` &
repeat_start_instant runClock 25ms &
var_equal $time `get_clock 24` !?
( cycle $sec 60 & var $sec 0 !? : cycle $min 60 & var $min 0 !? : cycle $hours 24 ) &
set $countdown -1 &
set $time `get_clock 24` &

set $cdHour `param_multiply 'get_var $countdown' 'get_constant 3600 & param_1_x' & param_cast 'int_trunc'` &
set $cdMin 0 &
set $cdSec `param_mod 60 'get_var $countdown'` &
set $cdMin `param_add 'param_multiply "get_var $cdSec" -1' 'param_multiply "get_var $cdHour" -3600' ` &
set $cdMin `param_multiply "param_add 'get_var $countdown' 'get_var $cdMin'" "get_constant 60 & param_1_x"`&
set $time3 `param_add "get_var $char" "get_var $cdHour & param_cast '00'" & param_cast 'text'` &
set $time3 `param_add "get_var $cdMin & param_cast '00'" "get_var $time3"` &
set $time3 `param_add "get_var $char" "get_var $time3"` &
set $time3 `param_add "get_var $cdSec & param_cast '00'" "get_var $time3"` &

( var $showCount 1 ?
get_var $time3 & param_cast & deck master effect_string 'text' 2 : var $showCount 2 ? deck master effect_string 'text' 2 "Happy New Year!" : ) &
param_equal `get_var $time3` "00:00:00" ? set $showCount 2 & wait 1000ms & repeat_stop runClock & wait 29000ms & deck master effect_active text off & set $showCount 0 & deck master effect_string 'text' 2 "GENERIC MESSAGE" : :



I played with it a little bit just see second by second changes, this uses text presets for size font & position, so it will only work if you have them saved ["time","number","message" in my case]
this bit replaces the end bit

( var $showCount 1 ? effect_string text 3 "time" & 
get_var $time3 & param_cast & deck master effect_string 'text' 2 : ) &
param_equal `get_var $time3` "00:00:10" ? set $showCount 0 & effect_string text 3 "number" & effect_string text 2 "10" :
param_equal `get_var $time3` "00:00:09" ? set $showCount 0 & effect_string text 2 "9" :
param_equal `get_var $time3` "00:00:08" ? set $showCount 0 & effect_string text 2 "8" :
param_equal `get_var $time3` "00:00:07" ? set $showCount 0 & effect_string text 2 "7" :
param_equal `get_var $time3` "00:00:06" ? set $showCount 0 & effect_string text 2 "6" :
param_equal `get_var $time3` "00:00:05" ? set $showCount 0 & effect_string text 2 "5" :
param_equal `get_var $time3` "00:00:04" ? set $showCount 0 & effect_string text 2 "4" :
param_equal `get_var $time3` "00:00:03" ? set $showCount 0 & effect_string text 2 "3" :
param_equal `get_var $time3` "00:00:02" ? set $showCount 0 & effect_string text 2 "2" :
param_equal `get_var $time3` "00:00:01" ? set $showCount 0 & effect_string text 2 "1" :
param_equal `get_var $time3` "00:00:00" ? set $showCount 2 & effect_string text 3 "message" & deck master effect_string 'text' 2 "Happy New Year!" &
wait 1000ms & repeat_stop runClock & wait 29000ms & deck master effect_active text off & set $showCount 0 & deck master effect_string 'text' 2 "GENERIC MESSAGE" : :
 

Posté Sun 04 Dec 22 @ 10:49 am
locoDogPRO InfinityModeratorMember since 2013
don't mind me I was just making an edit.
 

Posté Mon 05 Dec 22 @ 10:01 am
locodog wrote :
thanks that would be good, I've just done the script way anyway.
not easy I suppose I'll post it here in the off chance I need it in the future,
plus to remind myself how to do stuff

get hour,min,sec as vars
timer to midnight
send to text plugin



Crazy stuff!
Here is my video on it:

And... we may also need a script that turns it off again, so that the text fx returns to normal :)
 

Posté Mon 05 Dec 22 @ 10:29 am
locoDogPRO InfinityModeratorMember since 2013
fast video work :),

yeah I'll make a change or two, one to make on/off on button press & two I'll add a message for Happy new year or whatever,

because we've got everything as variables now, it's a 2nd event scheduler of sorts.

little changes made, I could go mad with this but for actual midnight you want to use the real event scheduler, too many variables of user workflows to have something off the peg suit everybody.
but it can do stuff at any second, the countdown runs in the back ground.
 

Posté Mon 05 Dec 22 @ 10:47 am
Cool!
So it will say Happy new year?
... and if I want something more spectacular, I should use the Event scheduler
 

Posté Mon 05 Dec 22 @ 12:49 pm
Hmmm The new script doesn't seem to work.
The text isn't changing
 

Posté Mon 05 Dec 22 @ 12:53 pm
locoDogPRO InfinityModeratorMember since 2013
sorry. I'll check it

*edit, found it an errant quote and used a local var instead of a global var.
I added a place near the start so when it is running you can change between countdown showing and a generic message,
plus at the end I left a space to have a message after happy new year, [but the effect is turned off then and text effect use is back to normal].

when it's initialising it takes a couple of seconds to brute force the time [it's garbled for a few seconds], so it just says "COUNTDOWN" until it's ready to run smoothly.

I could add stuff to this for days but really it's a case by case, for what people need
 

Posté Mon 05 Dec 22 @ 1:09 pm
locoDogPRO InfinityModeratorMember since 2013
just consider this a visual count down, it can do stuff for automation like show the counter for a minute every 15 minutes, probably some radio applications too, but the real event scheduler is a bit easier.
 

Posté Mon 05 Dec 22 @ 2:24 pm
True, and thank you
I've now replaced the downloadable script in the video
 

Posté Mon 05 Dec 22 @ 2:49 pm
Cool
I've updated the script linked in the video
 

Posté Mon 05 Dec 22 @ 4:17 pm
djkrysrPRO InfinityMember since 2010
Hi
I have always used the "comment" field for remix info because originally VDJ didn't have a 'remix' field to use & I was happy to continue in that vein, however now I am using online content I need the remix field visible.

I have worked out that
browsed_song 'remix' `get_browsed_song 'comment'`
will successfully copy the comment over to the remix field but this only works 1 file at a time.

Is there a quick way I can change, either selected files or all files in a folder, in 1 go.

Basically I need a script to recurse through the list of files & copy the comment field to the remix field.
Any pointers would be appreciated. If this has been covered elsewhere I apologise.
Thanks
 

Posté Mon 05 Dec 22 @ 7:20 pm
locoDogPRO InfinityModeratorMember since 2013
That would be a repeat_start script [a.k.a. rsi, repeat_start_instant]

probably best if you start out of a filter [advanced] to get all files, something like
filter
Length > 60 and Comment is not ""

button script
browser_scroll 'top' & repeat_start_instant scroller 25ms & browsed_song 'remix' `get_browsed_song 'comment'` & browser_scroll 'bottom' ? repeat_stop scroller : browser_scroll +1 



or this to also clear the comment field after it copies over

browser_scroll 'top' & repeat_start_instant scroller 25ms & browsed_song 'remix' `get_browsed_song 'comment'` & browsed_song 'comment' "" & browser_scroll 'bottom' ? repeat_stop scroller : browser_scroll +1 


either will take a little while, it processes about 2000 tracks a minute
 

Posté Tue 06 Dec 22 @ 4:57 am
There are some people saying it just stays on COUNTDOWN when they try the script
Not sure why...
 

Posté Tue 06 Dec 22 @ 5:27 am
locoDogPRO InfinityModeratorMember since 2013
Found it, 12 hour clock users. I'll make the changes needed, and post here when changed

*edit changed*
 

Posté Tue 06 Dec 22 @ 5:41 am
Hi, is there a simpler way to create save Stems with a custom Button.

The Stems should be save from the loaded Song in the deck and not from the browser.

browser_window 'songs' & wait 150ms & search_add `deck left get_filepath` & browser_scroll +1 & browser_scroll -1 & wait 150ms & virtualfolder_add 'stems' & wait 150ms & search_delete & goto_last_folder


The second. Is there a way to visible "has prepared Stems" like Browser Color Rules, for the loaded Song?
 

Posté Wed 07 Dec 22 @ 10:41 am
locoDogPRO InfinityModeratorMember since 2013
has_stems "2.0"
isn't a filter yet, but they are all filtered in the the prep'd folder.
not sure about adding.
 

Posté Wed 07 Dec 22 @ 1:20 pm
66%