Well, frame-accurate sync can in fact be achieved in M8, it just requires some scripting and some workaround.
Let‘s assume we want to play four movie clips in sync (for now on the same machine):
since the periodical stuff is done between two frames, there will always be a little time-shift between the `master-layer´ and the `slaves`, therefore we duplicate the first layer which will now serve as our `master` while the rest will be the `slaves`(and in sync).
Make shure that on all slaves the speed is set to zero:
(ctrl_layer_movie_speedFactor == 0.0)
Only the master is actually playing:
(ctrl_layer_movie_speedFactor > 0.0)
And make shure the master is invisible:
(ctrl_layer_alpha == 0.0)
The work is done in a periodical script:
Code: Select all
#Define a SyncPosition and retrieve its value from the master-layer (in this case the master is layer 1):
syncPos = modul8.getValue('direct_layer_media_timePosition',1)
#Now set the slaves (here: layers 2-5) to that position:
modul8.setValue('direct_layer_media_timePosition',syncPos,2)
modul8.setValue('direct_layer_media_timePosition',syncPos,3)
modul8.setValue('direct_layer_media_timePosition',syncPos,4)
modul8.setValue('direct_layer_media_timePosition',syncPos,5)
voila, four layers playing perfectly in sync!
You can now send `syncPos`over the network via OSC and can have your clips sitting on different machines (on the same network of course)
Keep in mind that the slaves don`t play any sound, because they are actually not playing (they are just set to a new position every frame!)
Hope that helps.
Lutz