Ingresar:     


Forum: General Discussion

Tópico: Script School - Page: 54
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>
 

Thank you both for your help.

I'll try these and come back to you!
 

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

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.
 

Thanks for answers 1, 5 and 6.

For questions 2 and 3, I was refering to the following
query="var_equal &apos;FX1MomPush&apos; 0 ? effect_active 1"


I am perplexed by the fact that there is no ":" That is "A ? B" instead of "A ? B : nothing"

Question 3 can also be reformulated as: Is "A ? B" valid not only in "query" but also in "action"? Does it mean the same as "A ? B : nothing" , or "A ? B : false" ?

Question 2 answer was no, I made an error. But I guess " A or B" can be written as "A ? true : B" in vdj script. Is that right?

Question 4 was not too important.

Thanks again!
 

same thing for a LED logic.
 

Build 8741 (2025-09-14) padfx improvements

padfx, a big verb that may appear confusing, it's not there's just quite a bit to it, we're going to do some verb history, strap in.

So what is it? what does it do?

It's basically a shorter way to call an effect with all the sliders and buttons in the state you want, press it again and all the sliders go back to where they where.

It's had an improvement recently that completes it in my opinion but let's go back to before padfx was a thing.
If we wanted something like this before padfx we had to write, a lot, I'll use stock echo fx as an example, but let's get on the same page

looking at the echo fx gui [ effect_show_gui echo ]
we see dials
1 strength
2 length
3 lowpass
4 highpass
and we see buttons
1 mute source
2 trailing stop

that's it if you want the parameters an effect has, just look at effect_show_gui %YOURDESIREDFX


So on to how it was done the old painful way
so first we need some logic because first press we want to do something, then we want to undo it of the second press

toggle varForLongExample & var varForLongExample 1 ? we just switched it on : we just switched it off

so just switched on, we need to save our current state of everything to variables, after that we need to set everything to the new settings

set fxOn `effect_active echo` & set slider1 `effect_slider echo 1` & set slider2 `effect_slider echo 2` ... [more variables to cover all 4 dials] & set button1 `effect_button echo 1` & ... [button 2]

already getting long and that's just saving the state, then you have to set everything and if you've followed early topics about effect_button & effect_slider there's nothing fancy here, just long.


This was kind of painful and it's only the true reply to the query. The 2nd reply is just as long, getting variables and casting to dials/buttons something like

the true/save and set reply : get_var slider1 & param_cast & effect_slider echo 1 ... [all the other sliders/buttons]

Then if you wanted a while_pressed kind of button, the script was a bit easier but different.
So the devs decided, "let's make this way easier"

So this is before stems, before effect_beats were a thing too I think,

you just listed stuff in order as seen in the fx gui and it set everything, buttons you used a syntax like this 'button name:STATE'

padfx echo 0.75 0.5 0.1 0.5 'mute source:off' 'trailing stop:on'

just like that, strength at 75% length dial at the half way position, lowpass at 0.1 position, highpass at 0.5 position, mute source off, trailing stop on

if you wanted it as a while_pressed kind of button
padfx echo 0.75 0.5 0.1 0.5 'mute source:off' 'trailing stop:on' while_pressed

just like that,
then the devs decided, "what if single press was on/off toggle but holding worked like while_pressed, that would be cool"

padfx echo 0.75 0.5 0.1 0.5 'mute source:off' 'trailing stop:on' smart_pressed

And that's that, no big mystery just a shorter script

Then effect_beats became a thing so instead of knowing where the 2nd dial position is for a length you could just specify the length

padfx echo 0.75 0.25bt 0.1 0.5 'mute source:off' 'trailing stop:on'

a more recent addition, is effect_beats with ms time, odd use but possible,

padfx echo 0.75 125ms 0.1 0.5 'mute source:off' 'trailing stop:on'


then we got stems and stemfx, so it had to be improved again
padfx echo 0.75 0.25bt 0.1 0.5 'mute source:off' 'trailing stop:on' 'stemfx:vocal'

padfx applies to just vocals

also kill a stem while using
padfx echo 0.75 0.25bt 0.1 0.5 'mute source:off' 'trailing stop:on' 'mutestem:vocal'

also solo a stem while using
padfx echo 0.75 0.25bt 0.1 0.5 'mute source:off' 'trailing stop:on' 'solostem:vocal'


All fine and good, but there's a problem,
what if you don't want to list all the dials, what if you want to leave dial 1 strength to a hardware dial?
It just didn't work that way. You had to list from slider 1, stop listing dials when you want but you can't miss any before you stop.
This is why I never really 'got along' with padfx before.

So very recently I'm explaining padfx [again] to somebody who's over-complicating it in their head, "it's just dials in order and buttons by name"
I asked "Hey devs could we do dials by name too?"



So now the newest version of the padfx verb solves this, by using named sliders

padfx echo 'strength:0.9' 'length:0.25bt' 'lowpass:0.1' 'highpass:0.5' 'mute source:off' 'trailing stop:on'

by calling by name you can now miss sliders, write them in any order you want, full control, I'd say for the moment the verb is feature complete.

That's everything, should I done an explainer on padfx before? probably, but I just didn't like the limitations, now those limitations are gone and I only had to write it up once [until they invent something else]

One final thing, an unusual but not impossible use,
a padfx off call only turns the fx off
if
1 all the dials and buttons listed are in the states as called, otherwise it just sets the states
AND 2 the fx was off when you made the setting call






*note about button names, I am using 'mute source:off' 'trailing stop:on'
these are the retrieved long form names when calling
get_effect_button_name echo 1 & param_cast & debug


but you can also use the short name as retrieved by calling
get_effect_button_shortname echo 1 & param_cast & debug

so the shortname versions
'mute:off' 'trail:on'
 

Hey scripting gurus :-)

I like having a visual notification on my controller if the VDJ limiter kicks in. As of now, I have a single LED that stays ON for 1000ms if the limiter is triggered:
get_limiter & pulse 1000ms

That works fine, but I'd like something even more noticeable. I am trying to get ALL my pads to turn RED for 1000ms when it happens, but for some reason, I am unable to. The only thing that works is if I do not put the "pulse" timer, which basically just flashes RED very fast on the limiter:
get_limiter ? color red : pad_button_color 1

If I do something like this, the LED just turns off, no RED:
get_limiter ? color red & pulse 1000ms : pad_button_color 1

I must be missing something very obvious. Can anyone help ?
 

not param_equal `get_limiter` 0.0 & pulse 1000ms ? color red : normal colour stuff here
 

locoDog wrote :
not param_equal `get_limiter` 0.0 & pulse 1000ms ? color red : normal colour stuff here


Wow that works great, thanks ! I just realized what's needed to be done for it to work. I still have a lot to learn !