Connexion rapide:  

Forum: Addons

Sujet Builder - Page: 1
locoDogPRO InfinityModeratorMember since 2013
Discussion about Builder

Builder is a plugin that is needed to make autofilter pad page work, generally users won't use this fx directly, all interaction is via a padpage

Autofolters is just the first of many padpages that use builder, with builder any script can be timed perfectly to bpm.

I'll explain the under the hood stuff later.
 

Posté Sun 10 Jun 18 @ 10:39 pm
No Mac download available, so, is it needed for the Mac?
 

Posté Mon 11 Jun 18 @ 12:10 am
locoDogPRO InfinityModeratorMember since 2013
Yes needed for it to work, I'll see what i can do from a mac version of builder
 

Posté Mon 11 Jun 18 @ 12:11 am
locoDogPRO InfinityModeratorMember since 2013
Alright what builder does and what it can do.

Builder first creates a load of variables based on ms per beat.
Something like
Bpm / 60000 × beat length = ms/beat length.

It makes vars for 1/8th to 32beats.
With a padpage you can send strings to builder and the advantage is with the get_text verb you can parse any var into a script (places where vdjs script engine can't) something like so

get_text "repeat_start_instant 'rsiName' `get_var '1/8th'`ms & whatever script you want"
(var '1/8th' is now in the rsi script as a ms value)
it then casts this get_text to an effect_string and then activates builder that runs the string as a script.

There's a bit more to it, involving a var so builder knows which of the 7 strings to run, also the rsi name is created from the pad name that created the string.

Ok i may have lost the room.... what can it do?
Anything you can do with script perfectly timed...

Want to;
sequence samples, play 1; once played play another etc, no problem.
turn a video fx on/off every 4 beats, bread & butter for builder.
Have milkdrop cut to the next .milk bang on every 32 beat boarder, piece of cake.
Now there's the dmx padpage, sequence that.
Sequence scratch_dna presses, yep.

Do all these on one button press, sure.

It's not just rsi scripts it can do, want a var in as a value to a verb that won't accept actions as values, can do.

Just ask.
 

Posté Fri 15 Jun 18 @ 7:02 am
locoDogPRO InfinityModeratorMember since 2013
Builder has just been updated, It makes no difference for anyone using autoFilters now but, you'll need this update for the next padpage if/when it's released.
And the next one is pretty special, actually the reason why builder got built in the first place.
and autoFilters is still supported
 

Posté Tue 03 Jul 18 @ 12:25 pm
You should avoid using things that look operators in your names because just another source of confusion. For all languages, calculators, general mark up, text that people read, that I know of, 1/8 implies divide 1 by 8 explicitly and probably not intuitively perceived as part of a name . Probably better to use something like one_8th, or 8th_beat, or something else, and then maybe 32_beats. The fact they used param_1_x and not param_1/x should have maybe been a hint.

Also variables with leading numbers are generally not allowed in many programming languages. In the case of VDJ you might have something like 8ms with ms as modifier, but 8beats would be some named thing depending on context or maybe an error in some other context. Leading numbers are not normally allowed for naming since a number is a numeric type which can be followed or preceded by operators. like 1 / 8. one divide 8.. 1xx/8 as a named element makes no sense normally.

So main thing normally is to avoid ambiguous syntax either functionally or for readability.
 

Posté Thu 19 Jul 18 @ 11:26 pm
locoDogPRO InfinityModeratorMember since 2013
A user wanted to append tags, I don't think this isn't possible with straight script but you can with builder :-)

This example takes fields 1 & 2 adds a comma inbetween them and then writes to field 1 and clears field 2

I used a custom button to set fields 1 & 2
browsed_song 'Field1' 'erm' & browsed_song 'Field2' 'yes'

I then used another custom to get builder to read/parse field1 insert a comma and read/parse field 2, then I added a bit more script to read builders string and cast it to field 1 & also cleared field2
get_text "`get_browsed_song 'Field1'`,`get_browsed_song 'Field2'`" & param_cast "text" & effect_string 'builder' 1 & get_effect_string 'builder' 1 & browsed_song 'Field1' & browsed_song "Field2" ""

A rough and ready example but if you have a lot of tagging to do, it may well be worth making a padpage to hold strings you want to to add to existing tags.
 

Posté Sat 28 Jul 18 @ 9:51 pm
ewewoHome userMember since 2018
hey locodog, i am using vdj since a week and that is exactly what i needed!! can you post some more script examples? do the time based scripts only work for padpages or also as custom buttons?
 

Posté Wed 21 Nov 18 @ 2:48 pm
locoDogPRO InfinityModeratorMember since 2013
Pads / custom buttons they're more or less the same thing.

You could take a look at the autofilters and autoVXF pads to see more examples, I'll have a think for more examples, I've a bit on my plate in real life that have kept me not thinking right, but I'll battle on.
 

Posté Mon 07 Jan 19 @ 9:58 pm
MrJackyPRO InfinityMember since 2015
I can not get Buldier working, I have seen that the plugin appears in the other folder and I have copied it to the AutoStar folder and it does not work either.

I understand that to make it work I have to use a get_text "" with the script inside it, because I have tried it in all possible ways and nothing.

From one of the pages I can configure the variable $ boom_time from 0 to 1000 and I want to use it to change the time of the repeat_start_instant '$ vfx1'.

ORIGINAL:
var '$FXAuto' ? var '$fxboom' ? deck master get_beatdiff & set '$fxboom' 0 & deck master repeat_stop '$vfx1' & deck master video_fx 'boom auto' off : set '$fxboom' 1 & deck master repeat_start_instant '$vfx1' 250ms & deck master param_bigger get_beat2 get_beat_counter ? deck master video_fx 'boom auto' : deck master video_fx 'boom auto' off : deck master repeat_start_instant '$vfx1' ? on & deck master repeat_stop '$vfx1' & set '$fxboom' 0 & deck master video_fx 'boom auto' off : deck master video_fx 'boom auto'

FOR BUILDIER:
var '$FXAuto' ? var '$fxboom' ? deck master get_beatdiff & set '$fxboom' 0 & deck master repeat_stop '$vfx1' & deck master video_fx 'boom auto' off : set '$fxboom' 1 & get_text "deck master repeat_start_instant '$vfx1' ` get_var '$boom_time'`ms & deck master param_bigger get_beat2 get_beat_counter ? deck master video_fx 'boom auto' : deck master video_fx 'boom auto' off" : deck master repeat_start_instant '$vfx1' ? on & deck master repeat_stop '$vfx1' & set '$fxboom' 0 & deck master video_fx 'boom auto' off : deck master video_fx 'boom auto'


edit: It would also be interesting to have a version of the plugin in 64bits, since the 64bit version mainly improves the performance of the video
 

Posté Sat 26 Jan 19 @ 7:14 pm
locoDogPRO InfinityModeratorMember since 2013
It's fine in "other", as for x64 it's on the todo list (like my other plugins, real life keeps getting in the way)
here's pad 7 (change the video transiton ever 8 beats) from autoVXF simplified to just deck 1

nothing & action_deck 1 ? set '$v7' 1 & deck master effect_button "Builder" 9 & get_text "deck master repeat_start_instant 'deck`get_deck``deck 1 pad 7`' `get_var '8beat'`ms `get_var '@$vCycles'` & set '$v7Count' 0 & repeat_start_instant 'rsivt8' `get_var '1/8th'`ms 64 & cycle '$v7Count' 64 & var '$v7Count' 0 ? set '$v7' 0 : var_equal '$v7Count' 1 ? video_transition_select +8 & set '$v7' 1 : nothing" & param_cast "text" & effect_string "Builder" 7 & effect_active "Builder" on & set "string7" 1 :

first queries action_deck (if I remember this is only there because autofilters padpage [another page that uses builder] effect individual decks [autoVXF is for master], also there as the repeat_start name is parsed from the deck number and pad name, [seems needlessly complicated looking back] )
set '$v7' 1 is there for... as a remnant from another project?
deck master effect_button "Builder" 9 button 9 of builder does some maths on the master deck bpm to create variables from milliseconds per1/8th beat, to 32 beats.

The next bit is the business end of the script and really boils down to how builder can accept variables in places normal script can't accept variables.
It starts with get_text everything inside the two bold " "s vdj reads as text, except anything inside backticks ` ` this it reads as script and turns into text
You'll see at the end
& param_cast "text" & effect_string "Builder" 7 & effect_active "Builder" on & set "string7" 1 :
so it takes all this text and sends it to builder to effect_string 7, it turns builder on and string7 is turned on so it knows which of the effect_strings to run.

ok into the meat of the script inside the get_text
deck master repeat_start_instant 'deck`get_deck``deck 1 pad 7`'
sets up a rsi on the master deck called "deck(whatever deck number called this)(whatever pad 7 is called)"
that's the rsi named now it's run speed
`get_var '8beat'`ms
gets the calculated value for ms/8beats, then adds the text ms on the end
that's the rsi run speed now the run count, my personal version is different to the release I have padpage param 1 to set the run count to a var "@$vCycles"
`get_var '@$vCycles'`

ok that's the rsi named, with a run speed and a run count, now the script it performs
this next bit I can't remember why I wrote it this way, maybe copy and paste from another project, maybe the only way I could get it to work,
[looking back the wrong way to do it]
& set '$v7Count' 0 & repeat_start_instant 'rsivt8' `get_var '1/8th'`ms 64 & cycle '$v7Count' 64 & var '$v7Count' 0 ? set '$v7' 0 : var_equal '$v7Count' 1 ? video_transition_select +8 & set '$v7' 1
Ok so we have a rsi running every 8 beats this sets '$v7Count' 0 and then starts another rsi every 1/8th beat to run 64 times, when the counter hits 1 it changes the transition

looking back I should have wrote

nothing & action_deck 1 ? deck master effect_button "Builder" 9 & get_text "deck master repeat_start_instant 'deck`get_deck``deck 1 pad 7`' `get_var '8beat'`ms `get_var '@$vCycles'` & video_transition_select +8 : nothing" & param_cast "text" & effect_string "Builder" 7 & effect_active "Builder" on & set "string7" 1 :

I'll take a look at you padpage to see what can be done.
 

Posté Sat 26 Jan 19 @ 10:04 pm
MrJackyPRO InfinityMember since 2015
We should start with something as simple as possible, such as changing a single variable within a script.

I understand that "deck master effect_button 'Builder' 9" I understand that it makes adjustments, let's say it calculates the time in microseconds from the BPM.
Is it really necessary?

I would recommend something simpler, but changing the time of a repeat_start_instant will be very useful with a variable.

deck master effect_button 'Builder' 9 & get_text "deck master repeat_start_instant 'test' `get_var 'msTest'`ms 10 & deck 1 effec_active 1" & param_cast "text" & effect_string "Builder" 7 & effect_active "Builder" on

So, should my script work properly or should I not get it?

Anyway ... something must be happening, since the autofilter and autovxf pads are still not working.

It does not work on my tablet with v8.3 b4720 and neither on my pc with v8.3 b4742
 

Posté Sun 27 Jan 19 @ 2:34 pm
locoDogPRO InfinityModeratorMember since 2013
MrJacky wrote :

deck master effect_button 'Builder' 9 & get_text "deck master repeat_start_instant 'test' `get_var 'msTest'`ms 10 & deck 1 effec_active 1" & param_cast "text" & effect_string "Builder" 7 & effect_active "Builder" on

So, should my script work properly or should I not get it?


2 things, 1 typo on effect_active, 2 you haven't set the string7 (needed so builder knows which string to use) so end with & set "string7" 1

This works here
deck master effect_button 'Builder' 9 & get_text "deck master repeat_start_instant 'test' `get_var 'msTest'`ms 10 & deck 1 effect_active 1" & param_cast "text" & effect_string "Builder" 7 & effect_active "Builder" on & set "string7" 1 :

I even had another button to cycle msTest up in steps of 1000 and it changes the repeat rate by 1 second each step.
(I assure you builder, autoVXF and autoFilters work, it must be something you've done, delete builder and reinstall)
 

Posté Sun 27 Jan 19 @ 9:11 pm
MrJackyPRO InfinityMember since 2015
I'm thinking that maybe I've found the first limitation of software for which we do not have a license.

If it does not require any special framework or anything, it should work.

I have tried to make a backup of my configuration and my database to eliminate any traces, but the problem persists.
 

Posté Mon 28 Jan 19 @ 1:15 pm
locoDogPRO InfinityModeratorMember since 2013
Looks like you're right I wasn't aware of the limitation, try putting the fx in your usual plugins folder.
 

Posté Mon 28 Jan 19 @ 1:25 pm
MrJackyPRO InfinityMember since 2015
oh! eres mi dios! jajajaja
en la carpeta de plugins normal si que funciona!
 

Posté Mon 28 Jan 19 @ 2:53 pm
locoDogPRO InfinityModeratorMember since 2013
Cool, I looked over your padpage but I can't really understand your auto system, hopefully you can work from my starting example. If you get stuck give me a shout.
 

Posté Mon 28 Jan 19 @ 3:09 pm
MrJackyPRO InfinityMember since 2015
my pad is practically the same on each button
The automatic effect is caught in this way:

boom: deck master param_bigger get_beat2 get_beat_counter ? deck master video_fx 'boom auto' : deck master video_fx 'boom auto' off
outline: deck master param_smaller get_beat get_beatdiff ? deck master video_fx 'outline' on : deck master video_fx 'outline' off
spectral: deck master param_smaller get_beat2 get_beat_counter ? deck master video_fx 'spectral' on : deck master video_fx 'spectral' off
strobe: deck master param_bigger get_beat_bar get_beat ? deck master video_fx 'strobe' on : deck master video_fx 'strobe' off
shake: deck master param_smaller get_beat get_beatdiff ? deck master video_fx 'shake' on : deck master video_fx 'shake' off
vibrate: deck master param_bigger get_beat_bar get_beatdiff ? deck master video_fx 'vibrate' on : deck master video_fx 'vibrate' off
colorize: deck master param_smaller get_beat_bar get_beat ? deck master video_fx 'colorize' : deck master video_fx 'colorize' off
negative: deck master param_bigger get_beatpos get_beat_counter ? deck master video_fx 'negative' : deck master video_fx 'negative' off
text: deck master param_bigger get_beatdiff get_beat_bar ? deck master video_fx 'text' on : deck master video_fx 'text' off


take some calculations starting from a "get_beat", "get_beat2", "get_beat_counter" and "get_beatdiff" ... getting it really working from the sound that comes out of the speakers.

I must get another formula for the "negative" button ... I do not like its automatism.
 

Posté Mon 28 Jan 19 @ 3:43 pm
locoDogPRO InfinityModeratorMember since 2013
x64 version is now live, as is known x64 is much better at video, autoVXF & autovideoFX padpages are giving much better results.
 

Posté Fri 08 Feb 19 @ 11:10 am
MrJackyPRO InfinityMember since 2015
Hello locodog

I would like to ask you to add something extra to Builder so that you do not have to repeat the same script so many times.

I mean, when we open a question we have to specify the script of the true and the false and a lot of the code can be identical in both cases. I find that something similar to a "goto" would be needed.

Example:

action_deck leftdeck ? select leftdeck & go_to 'next' : select rightdeck & go_to 'next' :
:next: load & play & go_to 'end' :
:end: nothing

This example would not need the use of Builder, but a much longer script that would be very useful
 

Posté Sun 10 Feb 19 @ 9:16 am
69%