async def setup(self) -> None: # Make sure the processor is started without a plugin_pipe_path (i.e. not getting # initialized with an old path from the previous incarnation. params = node_parameters_pb2.NodeParameters() plugin_params = params.Extensions[ processor_plugin_pb2.processor_plugin_parameters] plugin_params.plugin_pipe_path = '' self.set_parameters(params) await super().setup() self.__plugin_host = await self.realm.get_plugin_host() spec = plugin_host_pb2.PluginInstanceSpec() spec.realm = self.realm.name spec.node_id = self.id spec.node_description.CopyFrom(self.description) if self.initial_state is not None: spec.initial_state.CopyFrom(self.initial_state) create_plugin_request = plugin_host_pb2.CreatePluginRequest( spec=spec, callback_address=self.realm.callback_address) create_plugin_response = plugin_host_pb2.CreatePluginResponse() await self.__plugin_host.call('CREATE_PLUGIN', create_plugin_request, create_plugin_response) self.__plugin_pipe_path = create_plugin_response.pipe_path params = node_parameters_pb2.NodeParameters() plugin_params = params.Extensions[ processor_plugin_pb2.processor_plugin_parameters] plugin_params.plugin_pipe_path = self.__plugin_pipe_path self.set_parameters(params)
def __init__( self, *, host_system: host_system_lib.HostSystem, description: node_db.NodeDescription, id: str, # pylint: disable=redefined-builtin name: Optional[str] = None, initial_state: Optional[audioproc.PluginState] = None) -> None: assert isinstance(description, node_db.NodeDescription), description self._host_system = host_system self.description = node_db.NodeDescription() self.description.CopyFrom(description) self.name = name or type(self).__name__ self.id = id self.initial_state = initial_state self.__realm = None # type: realm_lib.PyRealm self.broken = False self.ports = [] # type: List[Port] self.inputs = {} # type: Dict[str, InputPort] self.outputs = {} # type: Dict[str, OutputPort] self.__control_values = { } # type: Dict[str, control_value.PyControlValue] self.__port_properties = { } # type: Dict[str, node_port_properties_pb2.NodePortProperties] self.__parameters = node_parameters_pb2.NodeParameters() for port_desc in self.description.ports: self.__add_port(self.__create_port(port_desc))
def test_process_block(self): self.node_description = self.node_db['builtin://oscilloscope'] self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.oscilloscope_spec] spec.foo = 1 self.processor.set_parameters(params) self.process_block()
def test_process_block(self): self.node_description = self.node_db['builtin://midi-looper'] self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.midi_looper_spec] spec.duration.numerator = 8 spec.duration.denominator = 4 self.processor.set_parameters(params) self.process_block()
def test_process_block(self): self.node_description = self.node_db['builtin://midi-velocity-mapper'] self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.midi_velocity_mapper_spec] spec.transfer_function.input_min = 0.0 spec.transfer_function.input_max = 127.0 spec.transfer_function.output_min = 0.0 spec.transfer_function.output_max = 127.0 spec.transfer_function.fixed.value = 100.0 self.processor.set_parameters(params) self.process_block()
def test_process_block(self): self.node_description = self.node_db['builtin://metronome'] self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.metronome_spec] spec.sample_path = os.path.join(constants.DATA_DIR, 'sounds', 'metronome.wav') spec.duration.numerator = 1 spec.duration.denominator = 4 self.processor.set_parameters(params) self.process_block() self.assertBufferIsNotQuiet('out:left') self.assertBufferIsNotQuiet('out:right')
def test_process_block(self): self.node_description = self.node_db['builtin://cv-mapper'] self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.cv_mapper_spec] spec.transfer_function.input_min = -1.0 spec.transfer_function.input_max = 1.0 spec.transfer_function.output_min = -1.0 spec.transfer_function.output_max = 1.0 spec.transfer_function.fixed.value = 0.5 self.processor.set_parameters(params) self.process_block() self.assertBufferAllEqual('out', 0.5)
def test_process_block(self): self.node_description = self.node_db['builtin://step-sequencer'] self.node_description.ports.add( name='channel1', direction=node_db.PortDescription.OUTPUT, types=[node_db.PortDescription.ARATE_CONTROL], ) self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.step_sequencer_spec] spec.num_steps = 4 spec.time_synched = False channel1_spec = spec.channels.add() channel1_spec.type = model_pb2.StepSequencerChannel.VALUE channel1_spec.step_value.extend([1.0, 0.0, 0.0, 0.0]) self.processor.set_parameters(params) self.fill_buffer('tempo', 8.0) self.process_block() self.assertBufferIsNotQuiet('channel1')
def test_process_block(self): self.node_description = self.node_db['builtin://midi-cc-to-cv'] self.node_description.ports.add( name='channel1', direction=node_db.PortDescription.OUTPUT, types=[node_db.PortDescription.ARATE_CONTROL], ) self.create_processor() params = node_parameters_pb2.NodeParameters() spec = params.Extensions[processor_pb2.midi_cc_to_cv_spec] channel_spec = spec.channels.add() channel_spec.midi_channel = 1 channel_spec.midi_controller = 12 channel_spec.initial_value = 0 channel_spec.min_value = 1.0 channel_spec.max_value = 2.0 channel_spec.log_scale = False self.processor.set_parameters(params) self.process_block() self.assertBufferAllEqual('channel1', 1.0)
def parameters(self) -> node_parameters_pb2.NodeParameters: params = node_parameters_pb2.NodeParameters() params.CopyFrom(self.__parameters) return params