Ingresar:     


Forum: General Discussion

Tópico: Script School - Page: 30.45
A couple of ways, just chaining the queries is probably simplest

not loaded ? color white : touchwheel_touch ? blink 0.25bt ? color red : color blue : pad_pushed 1 ? blink 0.5bt ? color white : color green : pad_pushed 2 ? blink 0.5bt ? color white : color green : pad_pushed 3 ? blink 0.5bt ? color white : color green : pad_pushed 4 ? blink 0.5bt ? color white : color green : pad_pushed 5 ? blink 0.5bt ? color white : color green : pad_pushed 6 ? blink 0.5bt ? color white : color green : pad_pushed 7 ? blink 0.5bt ? color white : color green : pad_pushed 8 ? blink 0.5bt ? color white : color green : automix ? masterdeck? color green : color blue : leftdeck ? color magenta : rightdeck ? color cyan
 

locodog wrote :
looked ok, try this thinned down version

repeat_start 'colorTracks' ? on & repeat_stop 'colorTracks' : off & browser_window "songs" & browser_scroll "top" & repeat_start 'colorTracks' 100ms & ( get_browsed_song 'harmonic' & param_cast 'text' & 
param_equal '01A' ? browsed_song color '#70ECD4' :
param_equal '01B' ? browsed_song color '#00EDC9' :
param_equal '02A' ? browsed_song color '#92F0A4' :
param_equal '02B' ? browsed_song color '#27EC82' :
param_equal '03A' ? browsed_song color '#B1EE86' :
param_equal '03B' ? browsed_song color '#85ED4E' :
param_equal '04A' ? browsed_song color '#E6E0A2' :
param_equal '04B' ? browsed_song color '#E0C86E' :
param_equal '05A' ? browsed_song color '#FEC8AC' :
param_equal '05B' ? browsed_song color '#FFA279' :
param_equal '06A' ? browsed_song color '#FFB3BF' :
param_equal '06B' ? browsed_song color '#FF8C93' :
param_equal '07A' ? browsed_song color '#FFB4D2' :
param_equal '07B' ? browsed_song color '#FF85B4' :
param_equal '08A' ? browsed_song color '#EBB7F9' :
param_equal '08B' ? browsed_song color '#F087D9' :
param_equal '09A' ? browsed_song color '#E7B6F8' :
param_equal '09B' ? browsed_song color '#CE93FF' :
param_equal '10A' ? browsed_song color '#C0CEFB' :
param_equal '10B' ? browsed_song color '#A1B9FF' :
param_equal '11A' ? browsed_song color '#94E5F8' :
param_equal '11B' ? browsed_song color '#3ED2F8' :
param_equal '12A' ? browsed_song color '#50EBF0' :
param_equal '12B' ? browsed_song color '#01EDED' : )
& browser_scroll 'bottom' ? repeat_stop 'colorTracks' : browser_scroll +1


I really like this script.
Just wondering could it be possible to make files matching the master deck in BPM, Key and Grouping start blinking?

 

blinking; no possible way.
bpm is dynamic but only numbered beat difference not % beat difference,
so precision falls apart for fast or slow bpms [depending on which you're biased to]
Key difference is dynamic but not strict matches only compatible
Grouping isn't dynamic at all

I can't do any plugin tricks like sticky because setting colorRules can't be accessed by script.
you couldn't even have a scroll evaluate & send to sidelist thing due to how you've got multiple groupings on one track.

best you can do is build a string dynamically with bpm % range and strict key then cast that as text to a quick_filter.
It won't be colours only a quick filter & you'll have to pick the bones out of grouping, as that's unique to your workflow.
Oh you'll have toggle the filter as deck master track changes to update for any bpm changes.

custom_button
quick_filter 0 ? on & quick_filter off :  off & get_text "Bpm < `param_multiply 1.04 'deck master get_bpm'` and Bpm > `param_multiply 0.96 'deck master get_bpm'` and key is `deck master get_key`" & param_cast 'text' & quick_filter


current bpm is +- 4%, you can change that with the numbers next to param_multiply
 

locodog wrote :
A couple of ways, just chaining the queries is probably simplest

Thank you !

 

Hi,

is there a way to get a true/false Value about get_status

has status true, has no status false
 

first thought is compare against a blank string, I'll check now

*edit* yeah that does it.
param_equal `get_status` "" ? on : off
 

Wow.. I've test so much things with param_equal and param_bigger the `` was the key :D....
There are many moment i cry with the Virtual DJ Script :D

THANK YOU
 

yeah the thing is with param_equal, it can do strings or actions, so while param_bigger doesn't need `` [but still can use] because it can't deal with strings and it uses '' or "" to encapsulate actions that include a space like

param_bigger 'get_var a' 'get_var b'

because param_equal can do strings, then it needs the action to be specified as an action, by wrapping in `` and strings wrapped in "" or ''
It's a little messy as a rule set but to clean it up would remove capabilities.
...script, it's a language, and languages have these weird nuances that a first are confusing but there's usually a reason as to why.
 

Hi. Can a script count the number of letters in a string?
set_var 'a' "text"

How many letters are there in the variable 'a'?
 

setting another var to your first var with param_cast 'text' X, [X being the number of chars to cast] then comparing for equality.
set_var 'a' "text" & set b `get_var a & param_cast 'text' 1` & 
var_equal "a" "b" ? SIZE OF 1 :
set b `get_var a & param_cast 'text' 2` &
var_equal "a" "b" ? SIZE OF 2 :
set b `get_var a & param_cast 'text' 3` &
var_equal "a" "b" ? SIZE OF 3 :
set b `get_var a & param_cast 'text' 4` &
var_equal "a" "b" ? SIZE OF 4 :


truth be told you don't even need a 2nd var, same sort of idea but with param_equal
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 :

 

Perfect!!!
 

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 !

 

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



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
 

I'll add a countdown script to make this easier
 

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" : :
 

don't mind me I was just making an edit.
 

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 :)
 

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.
 

Cool!
So it will say Happy new year?
... and if I want something more spectacular, I should use the Event scheduler
 

59%