Beware of the AfEoe

maybe again this is a newbie question but keep it short:

i have did some looping with FrameDelay, and after building up a complex structure of nodes (including own modules - this works great!) i did the mistake to connect the “out” node of a bigger thing to a MonoFlop Reset. (“out” node + a bang if a HTTP success would happen, but this doesn´t happen too often, that´s why i used the MonoFlop). Long terms short:

i have a cycle of values and strings that all are initialized with “Ø”. Now what?

Restart of 4v / reload didn´t solve problem. is this a usual thing or didnt you see such a situation recently? don´t want to repatch all the things…

thx ppl

b³

there is a module called “ReplaceEmpty (Value).v4p”.
it is distributed with vvvv.
you should find it in the nodelist.
otherwise look into modules\enos\

thanks, i found it. so this problem appears every now and then? i´m retrying all my things now with the ReplaceEmpty node in one patch, didn´t change the situation at all…

i give it a try after a restart :]

the long answer starts with a question: what is the most reasonable behaviour of a node when confronted with an empty spread (Ø)? note that an empty spread is not a zero its no slice, no defined value.
we somehow thought an empty spread on one of the inputs should output empty spreads on all of the outputs. this makes somehow sense. no input = no output, just like 10 slices input = 10 slices output.

next is the framedelay. the framedelay takes the value from the last frame and outputs this in the current frame. if you form a loop you can store and change values iteratively. if you have no values at all and process them to get a new result, you still will have no values. so processing no values forms a stable loop - exactly in the same way as if you could have 10 slices staying in the loop (or just one, as it is the default case).

to recover from the empty spread loop lock, open up the loop and put default values in the input (alt-clicking on the pin).
yes we know there should be an easier way to do this.

as kalle said, eno patched a handy module, which calculates the Count of the spread, and if its zero, switches to a one sliced standard value. basically you can patch this yourself easily.

a cleaner solution would be to check when and why the empty spread occurres in the first place and take care of that. so put the replaceempty modules (or your way of doing things) directly after the HTTP input or whatever you have. make sure there is always a valid value and everything stays clear.

sure i try to keep the patches clear. and i even keep in mind that with growing experience in the vvvvorld of patching with 4v the programs get more sophisticated and more effective. i just try to express my thoughts of soluting the problems i have with the nodes i know. getting to this point: fourdotfive of five thumbs up for your engagement of documentation and forum activity.

and if there hadnt been that “null” zeroes on almost every pin i saw i would have dis(to)patched it myself. getting nearer to the vvvvell of vvvvisdom (-:

any tips on dealing with “empty” strings? i tried to patch a “ReplaceEmpty (String)” that works with the “Ø” in a IOBox String, but i already knew this wouldn´t work as intendet.

OMG! i just got it when writing this question…

time for contribution

ReplaceEmpty (String 1.0).v4p (4.2 kB)

Depending on your case. you can use add(string spectral) to clean it…