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
def source_track(self): """ Source track. :type: Track """ track = reapy.Track(self.track_id) return track
def dest_track(self): """ Destination track. :type: Track """ id_ = self.get_info('P_DESTTRACK') return reapy.Track(id_)
def track(self): """ Parent track of take. :type: Track """ track_id = RPR.GetMediaItemTake_Track(self.id) return reapy.Track(track_id)
def master_track(self): """ Project master track. :type: Track """ track_id = RPR.GetMasterTrack(self.id) master_track = reapy.Track(track_id) return master_track
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)
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)
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)
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) ]
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)
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
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]
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
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
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
def get_leftmost_track_in_mixer(): """Return leftmost track in mixer.""" return reapy.Track(RPR.GetMixerScroll())
def track(self, track): if isinstance(track, int): track = reapy.Track(track, project=self.project) RPR.MoveMediaItemToTrack(self.id, track.id)
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