示例#1
0
def test_master_out_track():
    m_pr = ss.Project(MASTER_PROJ_NAME, 'localhost')
    s_pr = ss.SlaveProject(SLAVE_PROJECT_NAME, 'localhost')
    m_pr.make_current_project()
    # m_tr = rpr.Track(id='out', project=m_pr)
    # print(s_pr.__module__, s_pr.__qualname__)
    # with s_pr.make_current_project():
    s_tr = ss.SlaveInTrack(id='in', project=s_pr)
    o_track = ss.MasterOutTrack(id='out', project=m_pr, target=s_tr)
    assert s_tr.project.last_ip == 'localhost'

    o_childs = o_track.childs
    assert rpr.Track(id='no_midi_send',
                     project=ss.Project(MASTER_PROJ_NAME)).id not in o_childs
    assert len(o_childs) == 18

    matched = o_track.match_childs()
    m_id = rpr.Track(id='B4', project=m_pr).id
    assert matched[m_id].target.s_project.last_ip == 'localhost'
    # with s_pr.make_current_project():
    # print(matched[m_id].target.name)
    assert matched[m_id].target == rpr.Track(id='B4', project=s_pr)

    m_id = rpr.Track(id='B3Ch4', project=m_pr).id
    # with s_pr.make_current_project():
    assert matched[m_id].target == rpr.Track(id='B3Ch4', project=s_pr)

    m_id = rpr.Track(id='B4Ch1B1', project=m_pr).id
    # with s_pr.make_current_project():
    assert matched[m_id].target == rpr.Track(id='B4Ch1', project=s_pr)

    m_id = rpr.Track(id='B2Ch1B1', project=m_pr).id
    # with s_pr.make_current_project():
    assert matched[m_id].target == rpr.Track(id='B2Ch1B1', project=s_pr)

    # recarm
    master_names = ('B1', 'B3Ch4', 'B4Ch1B1')
    slave_names = ('B1', 'B3Ch4', 'B4Ch1')
    # with m_pr.make_current_project():
    for name in master_names:
        tr = ss.Track(id=name, project=m_pr)
        tr.recarm = True
    o_track.sync_recarm()
    # with s_pr.make_current_project():
    tr = ss.Track(id='B4', project=s_pr)
    assert tr.recarm == False
    for name in slave_names:
        tr = ss.Track(id=name, project=s_pr)
        assert tr.recarm == True
    # with m_pr.make_current_project():
    for name in master_names:
        tr = ss.Track(id=name, project=m_pr)
        tr.recarm = False
    o_track.sync_recarm()
    # with s_pr.make_current_project():
    tr = ss.Track(id='B4', project=s_pr)
    assert tr.recarm == False
    for name in slave_names:
        tr = ss.Track(id=name, project=s_pr)
        assert tr.recarm == False
示例#2
0
    def source_track(self):
        """
        Source track.

        :type: Track
        """
        track = reapy.Track(self.track_id)
        return track
示例#3
0
    def dest_track(self):
        """
        Destination track.

        :type: Track
        """
        id_ = self.get_info('P_DESTTRACK')
        return reapy.Track(id_)
示例#4
0
    def track(self):
        """
        Parent track of take.

        :type: Track
        """
        track_id = RPR.GetMediaItemTake_Track(self.id)
        return reapy.Track(track_id)
示例#5
0
文件: project.py 项目: mercuree/reapy
    def master_track(self):
        """
        Project master track.

        :type: Track
        """
        track_id = RPR.GetMasterTrack(self.id)
        master_track = reapy.Track(track_id)
        return master_track
示例#6
0
    def dest_track(self):
        """
        Destination track.

        :type: Track
        """
        pointer = self.get_info('P_DESTTRACK')
        track_id = reapy.Track._get_id_from_pointer(pointer)
        return reapy.Track(track_id)
示例#7
0
    def source_track(self):
        """
        Source track.

        :type: Track
        """
        pointer = self.get_info('P_SRCTRACK')
        track_id = reapy.Track._get_id_from_pointer(pointer)
        return reapy.Track(track_id)
示例#8
0
    def parent(self):
        """
        FX parent.

        :type: Track or Take
        """
        if self.parent_id.startswith("(MediaTrack*)"):
            return reapy.Track(self.parent_id)
        return reapy.Take(self.parent_id)
示例#9
0
    def selected_tracks(self):
        """
        List of selected tracks (excluding master).

        :type: list of Track
        """
        return [
            reapy.Track(RPR.GetSelectedTrack(self.id, i))
            for i in range(self.n_selected_tracks)
        ]
示例#10
0
def test_connect(
    set_track_midi_out, set_track_midi_in, monkey_connect, MonkeyTrack,
    MonkeyProject
):
    track = rpr.Track(
        id='slave_track_2', project=rpr.Project(id='slave_project_2')
    )
    task = (
        [
            dict(
                host='192.168.2.2',
                track=track,
                port=dict(idx=2, name='system:midi_capture_3'),
            ),
        ], []
    )
    bck.connect_by_task(task)
    monkey_connect.assert_called_with('192.168.2.2')
    track.project.make_current_project.assert_called()
    set_track_midi_in.assert_called_with(track, 2)

    track = rpr.Track(
        id='master_track_1', project=rpr.Project(id='master_project')
    )

    task = (
        [], [
            dict(
                host='localhost',
                track=rpr.Track(
                    id='master_track_1',
                    project=rpr.Project(id='master_project')
                ),
                port=dict(idx=3, name='MIDI Output 4'),
            ),
        ]
    )
    bck.connect_by_task(task)
    monkey_connect.assert_called_with('localhost')
    track.project.make_current_project.assert_called()
    set_track_midi_out.assert_called_with(track, 3)
示例#11
0
def get_last_touched_track():
    """
    Return last touched track, or None if no track has been touched.

    Returns
    -------
    track : Track or None if no track has been touched.
    """
    track = reapy.Track(RPR.GetLastTouchedTrack())
    if not track._is_defined:
        track = None
    return track
示例#12
0
    def rendered_tracks(self):
        """
        List of tracks for this region in region render matrix.

        :type: list of Track
        """
        i = 0
        tracks = []
        while i == 0 or tracks[-1]._is_defined:
            track_id = RPR.EnumRegionRenderMatrix(self.project_id, self.index,
                                                  i)
            tracks.append(reapy.Track(track_id))
            i += 1
        return tracks[:-1]
示例#13
0
文件: project.py 项目: mercuree/reapy
    def get_selected_track(self, index):
        """
        Return index-th selected track.

        Parameters
        ----------
        index : int
            Track index.

        Returns
        -------
        track : Track
            index-th selected track.
        """
        track_id = RPR.GetSelectedTrack(self.id, index)
        track = reapy.Track(track_id)
        return track
示例#14
0
    def track(self):
        """
        Parent track of item.

        Set it by passing a track, or a track index.

        :type: Track

        Examples
        --------
        >>> track0, track1 = project.tracks[0:2]
        >>> item = track0.items[0]
        >>> item.track == track0
        True
        >>> item.track = track1  # Move to track 1
        >>> item.track = 0  # Move to track 0
        """
        track_id = RPR.GetMediaItemTrack(self.id)
        track = reapy.Track(track_id)
        return track
示例#15
0
    def add_track(self, index=0):
        """
        Add track at a specified index.

        Parameters
        ----------
        index : int
            Index at which to insert track.

        Returns
        -------
        track : Track
            New track.
        """
        code = """
        current_project = reapy.Project()
        project.make_current_project()
        RPR.InsertTrackAtIndex(index, True)
        current_project.make_current_project()
        track_id = RPR.GetTrack(project.id, index)
        """
        track_id = Program(code, "track_id").run(project=self, index=index)[0]
        track = reapy.Track(track_id)
        return track
示例#16
0
def get_leftmost_track_in_mixer():
    """Return leftmost track in mixer."""
    return reapy.Track(RPR.GetMixerScroll())
示例#17
0
 def track(self, track):
     if isinstance(track, int):
         track = reapy.Track(track, project=self.project)
     RPR.MoveMediaItemToTrack(self.id, track.id)
示例#18
0
def get_test_data(
) -> ty.Tuple[bck._HostInfo, bck._HostInfo, ty.List[bck._RTrackPort], ty.
              List[bck._RTrackPort]]:
    master: bck._HostInfo = dict(
        host='localhost',
        reaper_in_ports=[
            dict(idx=0, name='system:midi_capture_1'),
            dict(idx=1, name='system:midi_capture_2'),
            dict(idx=2, name='MIDI Input 3'),
            dict(idx=3, name='MIDI Input 4'),
            dict(idx=4, name='MIDI Input 5'),
        ],
        jack_in_ports=[
            dict(
                name='MIDI Input 1',
                connection=dict(host='system', name='midi_capture_1')
            ),
            dict(
                name='MIDI Input 2',
                connection=dict(host='system', name='midi_capture_2')
            ),
            dict(
                name='MIDI Input 3',
                connection=dict(host='REAPER', name='MIDI Output 6')
            ),
            dict(
                name='MIDI Input 4',
                connection=dict(host='192.168.2.2', name='midi_from_slave_1')
            ),
        ],
        in_tracks=[
            rpr.Track(
                id='slave_track_1', project=rpr.Project(id='slave_project_1')
            )
        ],
        reaper_out_ports=[
            dict(idx=0, name='system:midi_playback_1'),
            dict(idx=1, name='system:midi_playback_2'),
            dict(idx=2, name='MIDI Output 3'),
            dict(idx=3, name='MIDI Output 4'),
            dict(idx=4, name='MIDI Output 5'),
            dict(idx=5, name='MIDI Output 6'),
            dict(idx=6, name='MIDI Output 7'),
        ],
        jack_out_ports=[
            dict(
                name='MIDI Output 1',
                connection=dict(host='system', name='midi_playback_1')
            ),
            dict(
                name='MIDI Output 2',
                connection=dict(host='system', name='midi_playback_2')
            ),
            dict(
                name='MIDI Output 3',
                connection=dict(host='192.168.2.2', name='midi_to_slave_1')
            ),
            dict(
                name='MIDI Output 4',
                connection=dict(host='192.168.2.2', name='midi_to_slave_2')
            ),
            dict(
                name='MIDI Output 5',
                connection=dict(host='192.168.2.2', name='midi_to_slave_3')
            ),
            dict(
                name='MIDI Output 6',
                connection=dict(host='REAPER', name='MIDI Input 3')
            ),
        ],
        out_tracks=[
            dict(
                track=rpr.Track(
                    id='master_track_1',
                    project=rpr.Project(id='master_project')
                ),
                slave=dict(
                    host='192.168.2.2',
                    track=rpr.Track(
                        id='slave_track_2',
                        project=rpr.Project(id='slave_project_2')
                    )
                )
            ),
            dict(
                track=rpr.Track(
                    id='master_track_2',
                    project=rpr.Project(id='master_project')
                ),
                slave=dict(
                    host='192.168.2.2',
                    track=rpr.Track(
                        id='slave_track_3',
                        project=rpr.Project(id='slave_project_2')
                    )
                )
            ),
            dict(
                track=rpr.Track(
                    id='master_track_3',
                    project=rpr.Project(id='master_project')
                ),
                slave=dict(
                    host='192.168.2.2',
                    track=rpr.Track(
                        id='slave_track_4',
                        project=rpr.Project(id='slave_project_3')
                    )
                )
            ),
            dict(
                track=rpr.Track(
                    id='master_track_4',
                    project=rpr.Project(id='master_project')
                ),
                slave=dict(
                    host='localhost',
                    track=rpr.Track(
                        id='slave_track_1',
                        project=rpr.Project(id='slave_project_1')
                    )
                )
            ),
        ],
    )
    slave: bck._HostInfo = dict(
        host='192.168.2.2',
        reaper_in_ports=[
            dict(idx=0, name='system:midi_capture_1'),
            dict(idx=1, name='system:midi_capture_2'),
            dict(idx=2, name='system:midi_capture_3'),
            dict(idx=3, name='system:midi_capture_4'),
            dict(idx=4, name='MIDI Input 5'),
        ],
        jack_in_ports=[
            dict(
                name='MIDI Input 1',
                connection=dict(host='system', name='midi_capture_1')
            ),
            dict(
                name='MIDI Input 2',
                connection=dict(host='system', name='midi_capture_2')
            ),
            dict(
                name='MIDI Input 3',
                connection=dict(host='system', name='midi_capture_3')
            ),
            dict(
                name='MIDI Input 4',
                connection=dict(host='system', name='midi_capture_4')
            ),
        ],
        in_tracks=[
            rpr.Track(
                id='slave_track_3', project=rpr.Project(id='slave_project_2')
            ),
            rpr.Track(
                id='slave_track_2', project=rpr.Project(id='slave_project_2')
            ),
            rpr.Track(
                id='slave_track_4', project=rpr.Project(id='slave_project_3')
            )
        ],
        reaper_out_ports=[
            dict(idx=0, name='system:midi_playback_1'),
            dict(idx=1, name='MIDI Output 2'),
        ],
        jack_out_ports=[
            dict(
                name='MIDI Output 1',
                connection=dict(host='system', name='midi_playback_1')
            )
        ],
        out_tracks=[],
    )
    midi_outs: ty.List[bck._RTrackPort] = [
        dict(
            host='localhost',
            track=rpr.Track(
                id='master_track_1', project=rpr.Project(id='master_project')
            ),
            port=dict(idx=2, name='MIDI Output 3'),
        ),
        dict(
            host='localhost',
            track=rpr.Track(
                id='master_track_2', project=rpr.Project(id='master_project')
            ),
            port=dict(idx=3, name='MIDI Output 4'),
        ),
        dict(
            host='localhost',
            track=rpr.Track(
                id='master_track_3', project=rpr.Project(id='master_project')
            ),
            port=dict(idx=4, name='MIDI Output 5'),
        ),
        dict(
            host='localhost',
            track=rpr.Track(
                id='master_track_4', project=rpr.Project(id='master_project')
            ),
            port=dict(idx=5, name='MIDI Output 6'),
        ),
    ]
    midi_ins: ty.List[bck._RTrackPort] = [
        dict(
            host='192.168.2.2',
            track=rpr.Track(
                id='slave_track_2', project=rpr.Project(id='slave_project_2')
            ),
            port=dict(idx=0, name='system:midi_capture_1'),
        ),
        dict(
            host='192.168.2.2',
            track=rpr.Track(
                id='slave_track_3', project=rpr.Project(id='slave_project_2')
            ),
            port=dict(idx=1, name='system:midi_capture_2'),
        ),
        dict(
            host='192.168.2.2',
            track=rpr.Track(
                id='slave_track_4', project=rpr.Project(id='slave_project_3')
            ),
            port=dict(idx=2, name='system:midi_capture_3'),
        ),
        dict(
            host='localhost',
            track=rpr.Track(
                id='slave_track_1', project=rpr.Project(id='slave_project_1')
            ),
            port=dict(idx=2, name='MIDI Input 3')
        ),
    ]
    return master, slave, midi_outs, midi_ins