[ANSWERED] Problem Using the Comparator To Trigger on Continuously Changing Value
I have connected sensors to Isadora, and when detected it will activate scenes like this:
The patch works fine, but after letting it run for a while, there might be times when the comparator doesn't trigger "true" to deactivate the scene and I will have to manually trigger it. So I changed the compare to "greater than or equal" and the notify to "always" as well as connected the "loop end" just in case the trigger misses, it works better but the same error would still happen occasionally. Is there a solution for this?
Thank you for your help in advance.
[EDIT: Changed the title to more clearly define the problem that was addressed -- Mark]
It may be that the comparator misses the value 85 because the exact value of 85 shows, depending of the movie length, only a fraction of a second.
You can find an explanation why Isadora can miss the value below. To get around this try to use the "inside range actor". There you can type a low and a high value. In your case for example 85 and 85.1 so it will trigger somewhere in-between these two values.
...General Service Task (v1.3 an up) Refers to the frequency with which Isadora will try to service all actors except Movie related actors in all currently active scenes. Generally this setting relates to actors that have to do with time like the envelope generator, wave generator, pulse generator etc. The General Service Task is specified as a multiple of the Target Frame Rate; the actual period between service tasks is shown to the right of the popup menu....
...Cycles reports how many times per second Isadora can process all of the actors in the currently active Scene(s). The higher this number, the better Isadora’s performance. This maximum value of this number is directly related to the General Service Task setting in the General tab of the Preferences – higher Service Task rates will yield a higher number of cycles per second....
Conclusion: As soon as Isadora can't keep up the general service task the clock will run out of sync. You can see the cycle on the right bottom dropping when you for example move your mouse very fast.
I would say @Michel explanation is on the money. I have this occur very often and I fix it by placing a Float to Integer actor before the comparator So that a rounded number is forced. For example: the comparator will not skip on 85 but it can skip on 85.25 so the Float to Integer ensures that when 85.25 is reached it sends 85 to the Comparator.
Sorry for the late response, thank you for your advices. I have tried both the "inside range actor" and "Float to Integer + Comparator" and ran stress tests for both versions at the same time.
With Float to Integer:
The activated scene with the comparator would still occasionally freezes at the last frame even with the "float to integer" actor.
With Inside Range Actor:
So far, the scene with the inside range actor seems to be working, it did freeze once, but after restarting, it haven't done so so far.
I will run some more test and hopefully it works well.
Thanks for the feedbacks again!
- I can see from your screenshot you're using the Comparator to deactivate the same Scene all of these actors are inside. I would suggest you jump ahead one Scene to a blank Scene with a Jump actor set to 2 seconds instead of trying to deactivate the Scene that you're sitting in.
- Make sure that you set value1 on the Comparator to initialize at 0 otherwise it could trigger itself immediately upon entering the Scene (since it would still have the value1 from the last time you were in the Scene).