def test_03(self): session = nonrealtimetools.Session() synthdef = self.build_duration_synthdef() with session.at(0): session.add_synth( duration=1, synthdef=self.build_duration_synthdef(), ) assert session.to_osc_bundles() == [ osctools.OscBundle( timestamp=0.0, contents=( osctools.OscMessage('/d_recv', bytearray(synthdef.compile())), osctools.OscMessage('/s_new', '448a8d487adfc99ec697033edc2a1227', 1000, 0, 0), )), osctools.OscBundle(timestamp=1.0, contents=( osctools.OscMessage('/n_free', 1000), osctools.OscMessage(0), )), ] exit_code, _ = session.render( self.output_filepath, output_bus_channel_count=1, ) self.assert_ok(exit_code, 1., 44100, 1) soundfile = soundfiletools.SoundFile(self.output_filepath) for i in range(1, 100): value = float(i) / 100 assert self.round(soundfile.at_percent(value)[0]) == value
def test_01(self): session = nonrealtimetools.Session() bus_one = session.add_bus() bus_two = session.add_bus() with session.at(0): bus_one.set_(10) with session.at(2): bus_one.set_(20) bus_two.set_(30) with session.at(3): bus_two.set_(40) assert session.to_osc_bundles() == [ osctools.OscBundle( timestamp=0.0, contents=( osctools.OscMessage('/c_set', 0, 10.0), ) ), osctools.OscBundle( timestamp=2.0, contents=( osctools.OscMessage('/c_set', 0, 20.0, 1, 30.0), ) ), osctools.OscBundle( timestamp=3.0, contents=( osctools.OscMessage('/c_set', 1, 40.0), osctools.OscMessage(0), ) ) ]
def send(self, message): from supriya.tools import osctools prototype = ( str, tuple, osctools.OscMessage, osctools.OscBundle, ) assert isinstance(message, prototype) if isinstance(message, str): message = osctools.OscMessage(message) elif isinstance(message, tuple): assert len(message) message = osctools.OscMessage( message[0], *message[1:] ) if self.debug_osc: as_list = message.to_list() if as_list != [2]: print('SEND', message.to_list()) if self.debug_udp: for line in str(message).splitlines(): print(' ' + line) datagram = message.to_datagram() self.socket_instance.sendto( datagram, (self.server.ip_address, self.server.port), )
def test_04(self): session = nonrealtimetools.Session() with session.at(0): session.add_synth( duration=1, synthdef=self.build_gate_synthdef(), ) assert session.to_osc_bundles(duration=2) == [ osctools.OscBundle( timestamp=0.0, contents=( osctools.OscMessage( '/d_recv', bytearray( b'SCgf\x00\x00\x00\x02\x00\x01 fc663c6d1f8badaed1bd3e25cf2220f0\x00\x00\x00\x08?\x80\x00\x00\x00\x00\x00\x00@\x00\x00\x00\xc2\xc6\x00\x00<#\xd7\n@\xa0\x00\x00\xc0\x80\x00\x00C\xdc\x00\x00\x00\x00\x00\x01?\x80\x00\x00\x00\x00\x00\x01\x04gate\x00\x00\x00\x00\x00\x00\x00\x05\x07Control\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x01\x06EnvGen\x02\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x02\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x03\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x04\xff\xff\xff\xff\x00\x00\x00\x05\xff\xff\xff\xff\x00\x00\x00\x06\xff\xff\xff\xff\x00\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x05\xff\xff\xff\xff\x00\x00\x00\x06\x02\x03Saw\x02\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\xff\xff\xff\xff\x00\x00\x00\x07\x02\x0cBinaryOpUGen\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\x03Out\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00' )), osctools.OscMessage('/s_new', 'fc663c6d1f8badaed1bd3e25cf2220f0', 1000, 0, 0), )), osctools.OscBundle(timestamp=1.0, contents=(osctools.OscMessage( '/n_set', 1000, 'gate', 0), )), osctools.OscBundle(timestamp=2.0, contents=(osctools.OscMessage(0), )), ]
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) buffer_id = int(self.buffer_id) contents = [ request_id, buffer_id, self.command_name, self.flags, ] if self.command_name in ( 'cheby', 'sine1', ): coefficients = self.amplitudes elif self.command_name == 'sine2': coefficients = zip( self.amplitudes, self.frequencies, ) coefficients = tuple(coefficients) elif self.command_name == 'sine3': coefficients = zip( self.amplitudes, self.frequencies, self.phases, ) coefficients = tuple(coefficients) coefficients = sequencetools.flatten_sequence(coefficients) contents.extend(coefficients) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) message = osctools.OscMessage(request_id, ) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) frame_count = self.frame_count if frame_count is None: frame_count = -1 source_starting_frame = self.source_starting_frame if source_starting_frame is None: source_starting_frame = 0 target_starting_frame = self.target_starting_frame if target_starting_frame is None: target_starting_frame = 0 contents = [ request_id, self.target_buffer_id, 'copy', target_starting_frame, self.source_buffer_id, source_starting_frame, frame_count, ] message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) contents = [request_id] message = osctools.OscMessage(*contents) return message
def _coerce_completion_message_input(self, message): if message is None: return message elif isinstance(message, (osctools.OscMessage, osctools.OscBundle)): return message elif isinstance(message, Request): return message.to_osc_message() elif isinstance(message, collections.Sequence): return osctools.OscMessage(*message) raise ValueError(message)
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) contents = [request_id] if self.index_value_pairs: for pair in self.index_value_pairs: contents.extend(pair) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) contents = [request_id] if self.node_id_pairs: for node_id_pair in self.node_id_pairs: contents.append(node_id_pair.node_id) contents.append(node_id_pair.target_node_id) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) contents = [ request_id, ] for buffer_id in self.buffer_ids: contents.append(buffer_id) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) osc_status = int(self.osc_status) assert 0 <= osc_status <= 4 message = osctools.OscMessage( request_id, osc_status, ) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) node_id = int(self.node_id) contents = [] for name, bus in sorted(self._kwargs.items()): contents.append(name) contents.append(int(bus)) message = osctools.OscMessage(request_id, node_id, *contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) contents = [request_id] if self.index_count_value_triples: for index, count, value in self.index_count_value_triples: contents.append(index) contents.append(count) contents.append(value) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) node_id = int(self.node_id) include_controls = int(self.include_controls) message = osctools.OscMessage( request_id, node_id, include_controls, ) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) buffer_id = int(self.buffer_id) contents = [ request_id, buffer_id, ] self._coerce_completion_message_output(contents) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): from supriya.tools import synthdeftools if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) synthdef = self.synthdef if isinstance(synthdef, synthdeftools.SynthDef): synthdef = synthdef.actual_name message = osctools.OscMessage( request_id, synthdef, ) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) node_id = int(self.node_id) contents = [ request_id, node_id, ] for key, value in sorted(self._kwargs.items()): contents.append(key) contents.append(value) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) contents = [ request_id, self.directory_path, ] if self.completion_message: completion_message = self.completion_message.to_datagram() completion_message = bytearray(completion_message) contents.append(completion_message) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) buffer_id = int(self.buffer_id) contents = [ request_id, buffer_id, ] if self.indices: for index in self.indices: contents.append(index) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) add_action = int(self.add_action) node_id = int(self.node_id) target_node_id = int(self.target_node_id) message = osctools.OscMessage( request_id, node_id, add_action, target_node_id, ) return message
def _to_non_xrefd_osc_bundles( self, duration=None, ): id_mapping = self._build_id_mapping() if self.duration == float('inf'): assert duration is not None and 0 < duration < float('inf') duration = duration or self.duration offsets = self.offsets[1:] if duration not in offsets: offsets.append(duration) offsets.sort() buffer_settings = self._collect_buffer_settings(id_mapping, ) bus_settings = self._collect_bus_settings(id_mapping) is_last_offset = False osc_bundles = [] buffer_open_states = {} visited_synthdefs = set() for offset in offsets: osc_messages = [] if offset == duration: is_last_offset = True requests = self._collect_requests_at_offset( buffer_open_states, buffer_settings, bus_settings, duration, id_mapping, is_last_offset, offset, visited_synthdefs, ) osc_messages.extend(_.to_osc_message(True) for _ in requests) if is_last_offset: osc_messages.append(osctools.OscMessage(0)) if osc_messages: osc_bundle = osctools.OscBundle( timestamp=float(offset), contents=osc_messages, ) osc_bundles.append(osc_bundle) if is_last_offset: break return osc_bundles
def to_osc_message(self, with_textual_osc_command=False): from supriya.tools import synthdeftools if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) compiled_synthdefs = synthdeftools.SynthDefCompiler.compile_synthdefs( self.synthdefs, ) compiled_synthdefs = bytearray(compiled_synthdefs) contents = [ request_id, compiled_synthdefs, ] if self.completion_message: completion_message = self.completion_message.to_datagram() completion_message = bytearray(completion_message) contents.append(completion_message) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) buffer_id = int(self.buffer_id) contents = [ request_id, buffer_id, ] if self.index_values_pairs: for index, values in self.index_values_pairs: if not values: continue contents.append(index) contents.append(len(values)) for value in values: contents.append(value) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) buffer_id = int(self.buffer_id) header_format = self.header_format.name.lower() sample_format = self.sample_format.name.lower() leave_open = int(bool(self.leave_open)) contents = [ request_id, buffer_id, self.file_path, header_format, sample_format, self.frame_count, self.starting_frame, leave_open, ] self._coerce_completion_message_output(contents) message = osctools.OscMessage(*contents) return message
def to_osc_message(self, with_textual_osc_command=False): from supriya.tools import synthdeftools if with_textual_osc_command: request_id = self.request_command else: request_id = int(self.request_id) synthdef = self.synthdef if isinstance(synthdef, synthdeftools.SynthDef): synthdef = synthdef.actual_name node_id = int(self.node_id) add_action = int(self.add_action) target_node_id = int(self.target_node_id) contents = [ request_id, synthdef, node_id, add_action, target_node_id, ] for key, value in sorted(self._kwargs.items()): contents.append(key) contents.append(value) message = osctools.OscMessage(*contents) return message
def test_01(self): group_a = servertools.Group().allocate() group_b = servertools.Group().allocate() synth_a = servertools.Synth(synthdefs.test) synth_b = servertools.Synth(synthdefs.test) group_a.append(synth_a) group_b.append(synth_b) remote_state = str(self.server.query_remote_nodes()) assert systemtools.TestManager.compare( remote_state, ''' NODE TREE 0 group 1 group 1001 group 1003 test 1000 group 1002 test ''', ), remote_state local_state = str(self.server.query_local_nodes()) assert local_state == remote_state osc_message = osctools.OscMessage( '/n_after', synth_b.node_id, synth_a.node_id, ) self.server.send_message(osc_message) remote_state = str(self.server.query_remote_nodes()) assert systemtools.TestManager.compare( remote_state, ''' NODE TREE 0 group 1 group 1001 group 1000 group 1002 test 1003 test ''', ), remote_state local_state = str(self.server.query_local_nodes()) assert local_state == remote_state osc_message = osctools.OscMessage( '/n_order', 0, group_b.node_id, synth_b.node_id, synth_a.node_id, ) self.server.send_message(osc_message) remote_state = str(self.server.query_remote_nodes()) assert systemtools.TestManager.compare( remote_state, ''' NODE TREE 0 group 1 group 1001 group 1003 test 1002 test 1000 group ''', ), remote_state local_state = str(self.server.query_local_nodes()) assert local_state == remote_state
def to_osc_message(self, with_textual_osc_command=False): contents = self._get_osc_message_contents(with_textual_osc_command) self._coerce_completion_message_output(contents) message = osctools.OscMessage(*contents) return message