Envelope & Gate?
-
@Skulpture are you asking why the Jump being attached doesn't cause it to be 'visually active'? No idea.. I was just speculating :P
@dbini your right it doesn't effect patching.. but I suspect its not the intended behavior. -
@dusx yeah I was just speculating also.
I use envelopes a lot and I am trying to cast my mind back as to when this behavior started but I really can't think... -
Hi everyone -- it's not a bug, though I'm sure it seems like one. Here's what's happening.
Isadora tries to "pull" values to the output. So the first thing we must define is, _what is an output?_ The answer is: the actor at the end of the chain, regardless of whether or not that actor actively "outputs" something to the real world.In Skulpture's first example the "output" is the Jump actor. Now, when the Gate is open, everything works as expected. To be very explicit:1) Jump value asks for a value from Gate's output2) Gate sense that it is "open" -- passes request for a value to the 'in' input3) The 'in' input tells the "upstream" actors to execute; in this case, the Envelope Generator.3) Envelope Generator executes and provides an output4) The Gate's 'in' input receives the value5) Gate actor executes -- meaning does its job, and passes value from 'in' to 'output'6) Jump value receives value and triggersBut when the Gate is closed, it runs like this:1) Jump value asks for a value from Gate's output2) Gate sense that it is "closed" -- so execution stops there. No upstream actors are executed.Why is this? The point of the pull mechanism to to not execute actors that don't need to be executed. For "inexpensive" actors like the Envelope Generator, this isn't such a big deal. But consider this chain of actors:Movie Player -> Gaussian Blur -> Gate -> ProjectorHere, if the gate is off, you avoid the Gaussian Blur and any overhead of pulling the image of the movie into memory. A big savings. So that's the idea behind this mechanism.In Skulptures third example, he's deleted the Jump actor. In this case, the Gate actor becomes the output. The key to the difference now is that the value isn't being pulled through the Gate actor. The sequence of events goes like this.1) Execute Gate actor2) Gate actor tells upstream actors to execute (in this case, Envelope Generator)The flow of the "pull" is not through the Gate 'output'. Instead, we just execute the Gate actor itself, which in turns causes the upstream actors to execute. In this case, whether or not the Gate actor is open has no effect on the execution.Note that, if in Skulpture's first example, you connected a Calculator actor to the output of the Envelope Generator, the Envelope Generator would work regardless of the Gate setting. That's because both the Jump actor **and** the Calculator becomes "outputs," since they are at the end of a chain. So the execution would go like this:OUTPUT 1: Jump Actor1) Jump value asks for a value from Gate's output2) Gate sense that it is "closed" -- so execution stops there.OUTPUT 2: Calculator1) Calculator executes2) 'input 1' tells upstream actors to execute (the Envelope Generator)3) Envelope Generator provides an output4) Calculate 'input 1' receives the value5) 'input 2' tells upstream actors to execute -- there are none, so use the value show in the GUI.6) Calculator executes -- it adds 'value 1' and 'value 2' and sends the result to the output.So even when the gate is closed, the Envelope Generator executes because there are two "outputs" pulling it.Hopefully that sheds some light on the underlying mechanism.Best Wishes,Mark -
Wow I never knew Isadora could 'sense' things :) Thats quite clever.
I have a better understanding now. But I will need to read this a few times over for it to sink in.Has Isadora always worked like this? -
Graham,
I "improved" the pull mechanism at some point -- unsure where exactly it happened. But it was to make deeply nested User Actors and the like behave more efficiently.Best Wishes,Mark -
It must just be one of those things i've never realised until a few weeks ago.
It does make sense because if the end result is nothing then its a waste of resources; even more so when using 'heavy' effects such as blur, etc.Thanks for the lengthy feedback too! -
@Mark
You mentioned it in the old forum that you will implement this from version 1.3.
But what I still don't understand is why in example 2 with the closed gate and the attached jump actor, you don't see a movement in the envelope generator actor but in the background it does move, because when you open the gate you see the envelope generator not starting from beginning but exactly from that time you waited until you opened the gate.Best
Michel -
@mark
Somehow I "sensed" this behavior. That is why I attached an actor(Movie player, Calculator) to Envelope output when I played with sculpture's patch and got it working fine. And thanks for putting the explanation to my sense. -
Michel,
Are you talking about a situation where you have something like this: Enter Scene Trigger -> Env. Gen. -> Gate -> ... ? In the currently release version, this would do what you say. This is because of the inconstancies in the "pull" mechanism I've mentioned to you and the beta testers privately regarding changes in 1.3.0f27.Currently, the Enter Scene Trigger actor would "push" it's value to the Envelope Generator trigger input. It remembers the starting time -- but doesn't output anything until the Gate is opened. But because it remembers the starting time, when the gate opens it jumps to the proper time.With the updated "pull" mechanism in 1.3.0f27 this wouldn't happen, making the whole system more consistent.Best Wishes,Mark -
Ok then that's clear for me. Thanks Mark.
Best,
Michel