Movie Player end of loop trigger
Bill Cottman last edited by
In order to enable the frequency bands on the movie player, the optimize setting must be interaction. When in the interaction mode, the end of loop trigger does not fire. Is this the expected action or is this a bug? Thank you.
When in the interaction mode, the end of loop trigger does not fire.
I just tested this and it does fire for me, both with the loop points are 0 to 100 and when they are set to something like 10 to 10. It would be good if you uploaded an example .izz file so we can see all of your Movie Player settings, and also tell us the duration and codec for the movie file in question.
Not really related to the post, but to its title. So if the Movie Player is going to be revised, this could possibly be addressed as well.
I still have some movies (Also some HAP files), all of them quite long and heavy, that reach the end of the loop before reaching 100% (e.g. 99.98) or end of TC (e.g. Play END indicated by player 00:25:40:22 but Player stops at 00:25:40:18), but both do trigger at that point. The palindrom would not work, but the loop would.
that reach the end of the loop before reaching 100%
Yes, this is a known point of confusion that we've discussed on the team multiple times and – honestly – I don't know what to do about it.
To illustrate the issue, consider this 8 frame movie at 25 fps.
TIME: | 0mS | 40mS | 80mS | 120mS | 160mS | 200mS | 240mS | 280mS | 320mS PERCENT: | 0.0% | 12.5% | 25.0% | 37.5% | 50.0% | 67.5% | 75.0% | 87.5%. | 100.0% FRAMES: | FRAME 1 | FRAME 2 | FRAME 3 | FRAME 4 | FRAME 5 | FRAME 6 | FRAME 7 | FRAME 8 |
When this movie gets to frame 8, the movie stops, the 'end trigger' fires, and 'position' output reports 87.5% because that is where playback stopped. We know this can be confusing for the user. But the Movie Player is correctly reporting where playback actually stopped.
So now you might ask "why don't you make 280mS the maximum time, so that the 'position' output shows 100% when you reach the start of frame 8"? And I would answer: because this produces an inconsistency in the position input that is worse than the inconsistency you mention now.
If the duration of the file is 320mS and I set the 'position' input of the Movie Player to 50%, I calculate half of 320mS and get exactly 160mS -- precisely the start of frame 5. This is how Isadora does it now and what I would consider the correct behavior.
If use 280mS as the duration, and I set the 'position' input of the Movie Player to 50%, I get a result of 140mS, which is part of the way through Frame 4. This means entering 50% would end up showing you Frame 4, and that is definitely not what you would expect.
Furthermore, you don't want to have the 'position' input use 320mS as the duration so you jump to the right frame, and have the 'position' output use 280mS, because then jumping to 50% on the input would show a 'position' at the output of 160mS / 280mS = 57.1%. The input position would not match the output position... so even more confusion.
As I said, we've talked about this many times and we simply have not come up with a better solution than what we have. If someone has a better idea, then please let me know.
Just two things (did not think in depth about it) that came to mind.
- maybe if the player would be based on TC instead of percentages it could be solved.
- maybe increasing precision taking permills insted of percents improves the situation
There is still the unsolved problem of not admitting palindrome playback (i don't use it for now, but others might)
maybe if the player would be based on TC instead of percentages it could be solved.
Thank you for the suggestions, but I'm afraid they don't help.
You can change the Movie Player to Timecode now... but it for a ten-second movie, the last frame shown would be 00:00:09:24 (at 25 FPS). So I don't know if that helps anything because your ten second movie would not show 00:00:10:00 when it reaches the end.
And I'm not sure what "permils" is, but I guess you mean "parts of a thousand". But a change in precision doesn't change the underlying issue. You can see, in my eight-frame movie example, the position value at the end (87.5%) isn't even close to 100%.
Thanks for giving it a shot though. ;-)
Bill Cottman last edited by
@mark Here is my patch.
In Q1: Use the 'g' key to go. The end of loop trigger fires the first time. Press 'g' to go again. the trigger does not fire any more??
In Q2: Work around. I used the movie position and a comparator to sense the end of loop to trigger the envelope generator fade out.