def update(_list, conn_text: TextInput, instance) -> None: # ping(conn_text.text) # is_connected(conn_text.text, 2307) try: conn = rpr.connect(conn_text.text) with rpr.inside_reaper(): print(f'connected to {conn_text.text}') except (rpr.errors.DisabledDistAPIError, AttributeError): print('cannot connect to "{}"'.format(conn_text.text)) # conn_text.background_color = (1, 0, 0) return # else: # conn_text.background_color = (1, 1, 1) Config.set(SECTION, 'IP', conn_text.text) Config.write() print(f'SECTION, "IP" to {conn_text.text}') with rpr.inside_reaper(): items_list = get_items_list() pr = rpr.Project() ts = pr.time_selection ts.start = 0 ts.end = pr.length rpr.perform_action(40420) ts.end = 0 for item in items_list: item_ = item.item pr.add_marker(item_.position + item_.length - .1, name='!1016') print(items_list) update_list(_list, items_list)
def get_host_jack_ports( host: ty.Optional[str] = None ) -> ty.Tuple[ty.List[_JMidiPort], ty.List[_JMidiPort]]: """Return all Jack midi ports of Reaper on the specified host. Note ---- reascript 'Levitanus: (session_management) get_system_jack_ports' has to be registered in action editor. Parameters ---------- host : ty.Optional[str], optional 'localhost' or IPV4 address No Longer Returned ------------------ jack_in_ports: _JMidiPort jack_out_ports _JMidiPort """ if host == 'localhost': host = None with rpr.connect(host): with rpr.inside_reaper(): a_id: int = RPR.NamedCommandLookup( '_RSc3a0868bee74abaf333ac661af9a4a27257c37c1') rpr.perform_action(a_id) ports = prs.loads('slave_ports') # print(ports) return ports
def __init__( self, sr: int = 22050, item_handlers: ty.Optional[ty.List[ItemHandler]] = None, split_at_ts: bool = False ) -> None: """ Parameters ---------- sr : int, optional Samplerate item_handlers : Optional[List[ItemHandler]] If None — any items in time selection are Used split_at_ts : bool, optional If True — items are split at time selection """ if split_at_ts: # Item: Split item_handlers at time selection rpr.perform_action(40061) self.sr = sr self.pr = rpr.Project() self.item_handlers = self._get_items( ) if item_handlers is None else item_handlers self._audios: ty.Optional[ty.List[ty.Iterable[float]]] = None self._audio_mono: ty.Optional[ty.List[ty.Iterable[float]]] = None
def render_audio(folder: str, preset_name: str, chunk) -> str: """Render Audio. Renders audio inside Reaper Parameters ---------- folder: folder where to store audio preset_name: name of audio file Returns ------- renderpath: full path to rendered audio """ #open new tab reapy.perform_action(40859) #set renderpath in project file logging.debug('Rendering: ' + preset_name) renderpath = folder + "\\" + preset_name + ".mp3" set_output_path(renderpath) #set name of track,as rendering takes trackname for filename project = reapy.Project() vst_track = project.tracks[0] vst_track.name = preset_name #load preset to track 1 project.select_all_tracks() rp.load(chunk) time.sleep(2) #save project so changes get updated project.save() project.select_all_tracks() #call render action by ID reapy.perform_action(42230) logging.debug("Finished Rendering") #remove VSTI to not get issues when loading next time vst_track.instrument.delete() project.save() #close tab reapy.perform_action(40860) return renderpath
def record(self): """Hit record button.""" with self.make_current_project(): reapy.perform_action(1013)
def close(self): """Close project and its correspondig tab.""" self._filename = os.path.join(self.path, self.name) with self.make_current_project(): reapy.perform_action(40860)
def on_track(time: float, instance) -> None: # time = item.time rpr.Project().cursor_position = time # print(time, item.name) rpr.perform_action(1013)
scroll, layout = get_layouts() update_list(layout, itemlist) connection_grid = GridLayout(cols=2, spacing=10, size_hint_y=.5) upd_btn = Button(text='update') upd_btn.bind(on_press=lambda instance: update(layout, conn_text, instance)) connection_grid.add_widget(conn_text) connection_grid.add_widget(upd_btn) grid.add_widget(connection_grid) grid.add_widget(scroll) transport_grid = GridLayout(cols=4, spacing=10, size_hint_y=.5) play_btn = Button(text='play|rec') play_btn.background_color = (1, 0, 0) play_btn.bind(on_press=lambda instance: rpr.perform_action(1013)) transport_grid.add_widget(play_btn) pause_btn = Button(text='pause') pause_btn.bind(on_press=lambda instance: rpr.perform_action(1008)) pause_btn.background_color = (1, 1, 0) transport_grid.add_widget(pause_btn) stop_btn = Button(text='stop') stop_btn.bind(on_press=lambda instance: rpr.perform_action(1016)) transport_grid.add_widget(stop_btn) end_btn = Button(text='to end') end_btn.bind(on_press=lambda instance: to_end()) transport_grid.add_widget(end_btn) grid.add_widget(transport_grid) runTouchApp(grid)
def _get_from_lua(self) -> None: """For profiling needs.""" rpr.perform_action(self.get_command_id)
def _render_it(self) -> None: render_action = 42230 rpr.perform_action(render_action)
def _select_items_in_ts(pr: rpr.Project) -> None: if len(pr.selected_tracks): rpr.perform_action(40718) # select all items on track in ts else: rpr.perform_action(40717) # select all items in ts