» Automata UI
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Automata UI

plugin
Credits: Christian Engler // wirmachenbunt

about

Hello Automata UI !

this is a visual finite state machine editor with built in finite state machine.

You want bulletproof logic ? You better use the automata node! Well, that's what bjoern told me a couple of years ago. And he was right. If your patch becomes more and more complex, more and more bugs turn up due monoflop, delay, flipflop and framedelay madness. It's much easier with a statemachine.

But since it is probably no fun writing quadruples, it makes sense to introduce a visual editor.

Some Features

So here it is. Inspired by bjoern's "Timer" concept, transitions not only last a frame but can have a configurable duration. Quite useful for any animated user interface project, where animated transitions should be in sync with your logic.

Transitions can be pingpong, meaning they can be bi-directional. States on the other hand have a duration as well, blocking any outgoing Transition for a certain amount of time.

More rules are in the help patch.

Remarks

And let's not forget, Automata UI is inspired by http://qfsm.sourceforge.net/.

we (wirmachenbunt studio) use the plugin in all recent projects and it made our vvvv patcher life a lot more pleasant. hence we hope it can help you too.

an application video will follow...

CHANGELOG
1.7

  • HiDPI compatible
  • GetState node for easy animation
  • Logging node for statistics
  • spreaded automata UI
  • CTRL + click on transition/state triggers them
  • hidden focus pin to bring the UI up
  • bezier transitions
  • license key technique added

1.1

  • spreadable edition
  • view slice of automata in editor via inspektor setting
  • force state by ctrl + leftclick on state
  • removed JSON library dependency
  • output all transition time settings as a spread

The plugin is released under a similar idea of licence like vvvv. It's free for non-commercial use. If you need a commercial license, refer to http://wirmachenbunt.de/automata-license-buy

HALL OF FAME
Thanks to Manuel, Daniel, sebl, readme, mbox and meso for acquiring a license. This helps a lot !

download

AutomataUI 1.7.zip
16.06.17 [15:10 UTC] by u7angel | 127 downloads
bezier edition
Show 3 older revisions

Older Revisions

AUTOMATAUI 1.11.zip
15.11.16 [14:44 UTC] by u7angel | 418 downloads
fixed minor bug in transition timing output
AUTOMATA UI 1.1.zip
14.11.16 [18:21 UTC] by u7angel | 66 downloads
spreadable edition
AUTOMATA UI 1.0.zip
31.08.16 [11:05 UTC] by u7angel | 368 downloads

dottore 31/08/2016 - 11:59

thanks :)

kimiki 31/08/2016 - 14:06

Very useful, good job!

sebescudie 31/08/2016 - 14:22

sweeeeeeet!
thanks

sunep 31/08/2016 - 15:16

NAJS!

tonfilm 31/08/2016 - 16:14

Great stuff!

StiX 31/08/2016 - 16:49

dear mother of dog this is what i need in my life,
does the visual editor use the same thread as vvvv? should i be worried about performance?

u7angel 31/08/2016 - 18:21

@stix, check the debug mode and see how many ticks the node eats. close to nothing ;)

bjoern 31/08/2016 - 18:37

Thanks & Danke für die Blumen :)

Did you use any library like stateless for example or did you write the state machine from scratch? Anyway do you think it's feasible to extend the plugin to support hierarchical state machines?

u7angel 31/08/2016 - 18:57

@bjoern, no library involved apart from Newtonsoft.Json to save the graph as JSON (which i will dump with the next release). so yeah, from scratch i did.

concerning hierachical state machine, i guess we need to discuss that in person to get a picture of the advantages/use cases and how they can be visualized.

m4d 31/08/2016 - 19:37

thanks, this is great!

pechart 31/08/2016 - 20:59

Awesome! Thanks a lot!

beyon 31/08/2016 - 21:13

re hsm: I did some initial testing with a hsm plugin using stateless a couple of years ago and have had the plan to do something more proper since then and possibly even an editor (test used custom text dsl/parser). Unfortunately my time for doing any serious development has been very limited and haven't been able to squeeze it in yet.

Any hierarchical state machine (HSM) can be expressed as a regular finite state machine (FSM) but with a HSM you can make it a lot simpler with less states and transitions because you have nested states and a transition/action will happen if it's either handled by a leaf state itself or any of it's parents.

A reference visualization is proved by the UML standard: https://en.wikipedia.org/wiki/UML_state_machine

Posted a screenshot before but I guess nobody saw it (?): root-190#comment-220133

H.Hartung 31/08/2016 - 22:12

Finally! Thank you :) Very nice user experience.

bjoern 31/08/2016 - 23:17

HSM

The UML article on wikipedia I linked in my first post describes the advantages quite nicely. But in short: what beyon said.

Most likely one won't need it for the typical car show exhibit we are all so fond of.

But think of a more complex iot-type-situation, e.g. a concept car with a lot of embedded devices, sensors, buttons, touchscreens, motors and whatnot simultaneously talking to and managed by a central "vvvv-hub".

@beyon / Stateless

There is a GUI for Stateless / Visual Studio called Stateless Designer. It currently also only supports FSM though.

Ah and while we are at it, also a nice thing supported by stateless and explained here are guard clauses.

u7angel 02/09/2016 - 08:39

@beyon and bjoern. it's all interesting to read. concerning hierachical state machine you can use multiple instances of the node in your patch.

regarding "guards" i quote something from the link

quote:
When you actually code an extended state machine, the guards become the same IFs and ELSEs that you wanted to eliminate by using the state machine in the first place. Too many of them, and you’ll find yourself back in square one ("spaghetti code"), where the guards effectively take over handling of all the relevant conditions in the system.

not sure if this is a needed features. i'll probably keep it as "simple" as it is but thanks for the input.

manuel 03/09/2016 - 07:34

No more thousands counter switch delay = monoflop framedelay etc ! ! ! !

idab 05/09/2016 - 17:11

vvvvow! This is great!

u7angel 13/09/2016 - 11:35

minor bug in combination with latest alpha. the json from the helpfile won't load.

temporary fix:
just reset the node by Alt+right clicking, that's it...create your graph as usual and save it.

will be fixed in next release.

everyoneishappy 15/09/2016 - 11:32

Christian this look really sweet. The only thing I'd miss to want to adopt this over the native node is being able to run multiple state machines. Is this possible or on the roadmap at all? Just mean multiple instances, they all have the same state graph.

u7angel 15/09/2016 - 12:25

@everyoneishappy, not sure if i understand u right. we're not talking about a spreaded automata right ? because multiple instances you can have. each automata graph is saved per node instance.

in case you copy your automata node and edit the new graph, you might need to trigger a transition at least once to update everything since the node behaves as lazy as possible to save cpu cycles.

does this answer your question ?

everyoneishappy 15/09/2016 - 13:17

@u7angel yes I do mean spreaded automata. You said that much more clearly then I did.

u7angel 15/09/2016 - 13:38

@everyoneishappy, it will come

i was talking to many pro patcher and this was the most popular question " is it spreadable". on the contrary, when i asked how often do you use a spreaded automata basically only one guy did it once, years ago :)

anyway, it's almost on top of the todo list

everyoneishappy 15/09/2016 - 14:05

@u7angel good to know. That's kind of funny, I can imagine "is it spreadable" being a popular question regardless of what it does. I can't say I've needed that before, but am about to embark on a project that does

velcrome 16/09/2016 - 17:26

i have used spreaded automata a couple times.

one particular useful case was handling 20 touch points with a single automata.

u7angel 17/09/2016 - 13:29

that makes 3 spreaded automata users :)
next release will have it.

parabola 18/09/2016 - 01:10

Is there around some sort of tutorial on using it?
Looks great but never worked with automata

everyoneishappy 18/09/2016 - 05:05

@parabola http://www.programmingbasics.org/en/beginner/fsm.html should explain the concept. You can find more stuff if you google 'finite state machine'

It's often very useful anytime you have something that should have different modes of behavior (which are what the states are).

u7angel 18/09/2016 - 19:41

@parabola. i will make a tutorial video. october/november

there are different use cases.
i usually use one central automata, controlling my whole vvvv project. telling each subpatch in which state (aka scene) i am and disable or enable subpatches/nodes according to the active state.

in application that means you send the current state string and everywhere else you check the string with =(string) aka "does this string equal the one which i'm waiting for here" hence enable/disable the connected nodes.

bo27 05/10/2016 - 11:43

great!
but where is bezier curves for transitions? love and will miss them

u7angel 08/10/2016 - 12:52

hey bo, i'll put bezier lines on the wishlist.

metrowave 15/11/2016 - 19:08

I really like this!!

samsampson 28/03/2017 - 20:42

Is there any way to tidy the transition lines? I'm making quite a complicated patch and its getting quite messy.

Thanks

u7angel 31/03/2017 - 11:58

hello sam, bezier transitions are in the making and will be delivered until the node festival

can you provide a screenshot or a patch. would be interesting how complex your statemachine is.

and remember, you can use spreaded and multiple automata nodes to cluster your logic.

samsampson 31/03/2017 - 13:24

Sure, let me just tidy my patch a little.

I never knew you could cluster the automata nodes. Would you be able to explain how to do that? (im new to this)

Thanks

u7angel 31/03/2017 - 17:22

i meant you can use several automata UI nodes , interacting (triggering) each other. hence you don't have a big graph within one automata but distributed to more than one graph.

i bet the logic can be split into parts/tasks, right ? you don't need to see all at once.

and one hint, you can try to create abstract logic, rather than putting content into your logic. so instead of having states like topic01, topic02, topic03 ... you just have one state named topic. and then handle the selection outside of the statemachine.

mindthegap 28/04/2017 - 16:23

There are a few examples how to use state machine? (E.g. for GUIs ...)
I would like to move in and use it, but its much easier with inspiring examples.

tonfilm 28/04/2017 - 16:30

@mindthegap you should definitely visit this workshop:

https://discourse.vvvv.org/t/how-to-use-a-statemachine-automataui/14495

mindthegap 28/04/2017 - 17:44

I've seen it, I thought I could do it before.

u7angel 10/05/2017 - 15:39

@mindthegap i'm currently in the middle of a major update for the plugin. this includes documentation and examples. unfortunately you need to wait til NODE.

mindthegap 10/05/2017 - 16:40

I think it explains itself, in any case better than the original version, which broke my brain convolutions.

Is the fee for the developer computer, or for each installation?

u7angel 10/05/2017 - 18:32

it is per installation. same licence model as vvvv.

license owner have access to the latest version and support.

u7angel 17/05/2017 - 11:37

i heard some ppl use AutomataUI in commercial projects without a license. please be fair and support with the necessary licence buy. thanks.

u7angel 20/06/2017 - 13:38

@bo27 , the latest release includes bezier transitions. as you requested ;)

bo27 21/06/2017 - 12:06

@u7angel great! this will help to keep complex graphs much more readable :) love this

anonymous user login

Shoutbox

~13h ago

StiX: @synth you sauin something about 420? if mangosh gets confirmed i am coming with him as we are in one ... package

~1d ago

synth: @evvvvil here only to do lasers, they don't let me near the screens after last time ...

~1d ago

evvvvil: hahaha yes, please sir, can I have some more sir? Hopefully me and you be battling for visual space soon, GTFOH with your lasers.

~1d ago

synth: BTW - Got 4 20w Kvant lasers here thinking of testing the ILDA nodes live :)

~1d ago

synth: @evvvvil Hell yeah! Couldn't get Vux drunk but your going to get it :D

~1d ago

evvvvil: @synth: hopefully I should be going to GEM FEST soon, not confirmed yet, but if so, beer is on you why not ;) (and me ok)

~1d ago

synth: BTW any vvvv guy coming to Georgia for GEM Festival shout out I am here for the entire thing alone. Some beer on me ;)

~1d ago

synth: @dominikKoller perfect! Count me in :)

~2d ago

dominikKoller: @synth I am! It's going to be donation/ based (or sponsored by someone) though :)

~2d ago

dominikKoller: @joreg I found it, my FF has flash disabled (by default), and those are old embeds that still use flash.