introducing Scripter

January 10, 2016 posted by: woei Guest Post

as the Scripter contribution title describes - for your ultimative hacking comfort in vvvv…

two reasons this might be interesting for you:

  1. you are new to this textual c# stuff but are eager to get into it
  2. you hack around vvvv a lot, know c# and want to get things done quickly

1) for the curious

let’s say your new year’s resolution was to start to extend your vvvv skills with coding power (since you noticed that doing more advanced stuff mostly requires some kind of textual addition to patching).

dynamic plugins are a powerful feature and probably the way to go. you clone the template and start changing the code and don’t worry about nugets, referencing assemblies, compiling as you would have to in any other IDE.

however, the slight hassle starts once you decide you want more pins. maybe even a bin sized one. at this point you have to wrap your head around the overall spreadcount, how to write the loop around the thing you want to do, when to access which slice or which bin, etc…

this is where scripter might ease away the learning pain since it takes care of your Spreads and does the structural In-Out part (creating pins and reading or assigning values). it attempts to keep you focused on the functionality only.

now it is a little bit more true, that you can google some code snippets and just paste them in vvvv to see what it does:

copy pasting super formula

copy pasted superformula from http://paulbourke.net


2) for the hacker

aside from the structural stuff mentioned already mentioned above you can really hack here. meaning not giving thoughts about proper filenaming (when versioning stuff). simply test some code snippets without files cluttering your harddrive as dynamic plugins have. scripter stores the code in a config pin. no more portability issues.

the first public static method is parsed for IO. you can of course have as many methods you like. think recursion…

and the config pin solution brings another advantage: scripter works per instance

multi instance binsize whatever

multi instance binsize stuff accessing loop index


about the guts

scripter inserts the string you provide into a template c# file and compiles it in memory. it reflects the first public static void method and creates the pins for each parameter. each frame the plugin loops over the maximum spreadcount, passes the values to the method and writes the out parameters to the out pins.

futures

since the feedback i got so far was always the question about missing code-completion

other ideas would be:

  • multiple methods: think different methods per slice, or selection via enum
  • give access to usings and references
  • a version without or just a flag to not use the automatic spreadmaxloop, but still with automatic pin creation

anyways

feedback and discussion welcome and have fun with the little new years present


Comments:

Comments are no longer accepted for this post.

flux
11.01.2016 - 03:46
This is ziemlich cool ;)
tonfilm
11.01.2016 - 16:14

@codecompletion

you could also look for a simple one, like emacs or vim that is not syntax aware at all but just suggest all words it knows with a start sequence of letters in a certain scope. that is already much better than having to type every bit…

milo
11.01.2016 - 16:53
top!
jens.a.e
11.01.2016 - 18:55
nice feature indeed! :)
dimzinas
21.01.2016 - 07:58
This is really nice! Welldone
nzo.nzo
21.01.2016 - 11:34

Really a very good New Year resolution. It was implemented quickly and efficiently. (Not like the promises like, tomorrow I stop drinking, this year I will do sports.) Thank you for your work. I love your tool is really the way to move towards it coding programming.

This year, I’m going to start programming, I promise.

Contact


Imprint

vvvv - Dießl & Gregor GbR
Oranienstrasse 10
10997 Berlin/Germany
VAT: DE275566955

groupӘvvvv.org

Follow us

Mastodon.social
Pixelfed.social
Github
Vimeo
Youtube

Sign up for our Newsletter

Your subscription could not be saved. Please try again.
Your subscription has been successful.