I'm making an animation using grease pencil, based on a narration track. What I'd like to do:
Import and place the master audio file (narration) as a single sound strip in the VSE, in Scene0
Create visuals as grease pencil scenes sequenced in the VSE too, from which a final export can be made. Scene1 - Scene50.
I want to use the narration track in the VSE in Scene0 as a timing reference for all visuals in all scenes of the project. e.g. in Scene3 I want a specific action to coincide with a particular word in the narration. In general while working on the action in Scene N I want to hear the relevant part of the narration audio which has been placed in the VSE in Scene0, a different scene.
I have a good handle on 1 and 2, but I'm not sure how to realise 3. Is it possible?
Suggestions for workarounds or alternative approaches are welcome too. Though I'd like to avoid any workaround that involves having to re-render audio files if the duration of any of the grease pencil scenes has to change.
In After effects there's a plugin called 'universal audio' that achieves something similar to what I'm looking for in Blender: It provides some buttons that allow you to designate a 'master audio' track, and then from child comps automatically copy in the appropriate section of audio from the master audio track, with in point correctly reflecting its position with regard to how the two comps are related. https://aescripts.com/universal-audio/
I think that if I make sure I use the Scene name 'Master' for the one containing the VSE and name the narration sound clip 'Narration', then I'd need something like the following script (i'd run this somehow each time I opened one of the scenes to work on). But I'm not clear yet on how to have this accessible via a button or something convenient.
# Run this from a 'child' scene to add narration track with correct timing offset. # TODO add routine for removing narration track from child scene if it already exists, before re-adding it. import bpy current_scene = bpy.context.scene current_se = current_scene.sequence_editor_create() master_se = bpy.data.scenes['Master'].sequence_editor narration_sequence = master_se.sequences['Narration'] timing_ref_sequence = master_se.sequences[current_scene.name] if timing_ref_sequence: offset = timing_ref_sequence.frame_final_start * -1 path = narration_sequence.sound.filepath current_se.sequences.new_sound('new',path,0,offset)