Comparing Two Sequences side by side in RV using python-api

Hi RV team,
I have written a program which will play two single movie clips side by side. this will help in comparing two versions.
I would like to know how to achieve similar functionality using two different sequences.
Each sequence is a lineups consisting of multiple .mov clips. I would like to play two different lineups/sequence of .movs side by side for comparison.

Thank you,
Radheesh

3 Likes

Bump- I’m trying to achieve the exact same thing!

From my understanding, it sounds like you’re looking to view two Sequences in a Layout view, side-by-side. This can be achieved by creating the two sequences and setting them as the inputs to a Layout view. I’ve whipped a quick working example below:

import rv.commands as rvc

# Create sources from media paths
source_1 = rvc.addSourceVerbose([file_1])
source_2 = rvc.addSourceVerbose([file_2])
source_3 = rvc.addSourceVerbose([file_3])

# Acquire name of sources' sourceGroup nodes
source_group_1 = rvc.nodeGroup(source_1)
source_group_2 = rvc.nodeGroup(source_2)
source_group_3 = rvc.nodeGroup(source_3)

# Create first Sequence view, add sourceGroups
sequence_a = rvc.newNode("RVSequenceGroup")
rvc.setNodeInputs(sequence_a, [source_group_1, source_group_2])

# Create second Sequence view, add sourceGroups
sequence_b = rvc.newNode("RVSequenceGroup")
rvc.setNodeInputs(sequence_b, [source_group_3, source_group_2])

# Assemble Sequence views into a Layout view
sequence_layout = rvc.newNode("RVLayoutGroup")
rvc.setNodeInputs(sequence_layout, [sequence_a, sequence_b])

# Display Layout View
rvc.setViewNode(sequence_layout)

Here’s a walkthrough of how to achieve the same results in the GUI:

Let me know if you’re looking for something else :slight_smile:

4 Likes

Hi collinbanko,
Thanks a lot.

I also tried and found a way to play sequences side by side and the code you shared is really helpful. :ok_hand: :ok_hand:

I have one more query regarding the same. Its about muting audio from sequences.
I would like to know how to mute/disable audio from any of the sequences. When I play side by side, both the sequence audio’s are audible and some times creates echo if there is any frame mismatch in any of the sequence.

Regards,
Radheesh

Happy to help!

As for changing the behavior of the audio mixing while viewing a Layout, you can change a property of the underlying stack node of the layout group to choose which audio source is used.

First off, you’ll need to acquire the name of the layout’s stack node. This can be done by checking the layout group’s nodes for a node of type RVStack:

def group_member_of_type(group_node, member_type):
    for node in rvc.nodesInGroup(group_node):
        if rvc.nodeType(node) == member_type:
            return node

layout_stack = group_member_of_type(sequence_layout, "RVStack")

Then we set the stack’s output.chosenAudioInput property to one of the following options:

  • .all. - All inputs’ audio is mixed together (default/current behavior).
  • .first. - Only the first input’s audio is used.
  • layout_stack input - Use the audio from a specific input.
# "layoutGroup.output.chosenAudioInput"
chosen_audio_property = layout_stack + ".output.chosenAudioInput"

# all layout inputs' audio is mixed together (default)
rvc.setStringProperty(chosen_audio_property, [".all."])

# first input's audio is used
rvc.setStringProperty(chosen_audio_property, [".first."])

# specific input's audio is used
rvc.setStringProperty(chosen_audio_property, [sequence_a])

And that should do it!

The same functionality is also available in the Session Manager:
rv_layout_stack_settings

3 Likes

Hi collinbanko,
I really appreciate your help. I tried the same and its working for me.

Thanks for your time and detailed example. :ok_hand: :ok_hand: :slightly_smiling_face:

Regards,
Radheesh