diff --git a/noisicaa/audioproc/filter/scale.py b/noisicaa/audioproc/filter/scale.py index e327cde7..5507af57 100644 --- a/noisicaa/audioproc/filter/scale.py +++ b/noisicaa/audioproc/filter/scale.py @@ -16,8 +16,8 @@ class Scale(Node): desc.port('out', 'output', 'audio') desc.parameter('factor', 'float') - def __init__(self, factor): - super().__init__('scale(%.2f)' % factor) + def __init__(self, event_loop, factor): + super().__init__(event_loop, name='scale(%.2f)' % factor) self._input = AudioInputPort('in') self.add_input(self._input) diff --git a/noisicaa/audioproc/filter/scale_test.py b/noisicaa/audioproc/filter/scale_test.py index 5d0c6b9c..995a219a 100644 --- a/noisicaa/audioproc/filter/scale_test.py +++ b/noisicaa/audioproc/filter/scale_test.py @@ -16,7 +16,7 @@ class ScaleTest(asynctest.TestCase): source = WhiteNoiseSource() pipeline.add_node(source) - node = scale.Scale(0.5) + node = scale.Scale(self.loop, 0.5) pipeline.add_node(node) node.inputs['in'].connect(source.outputs['out']) await node.setup() diff --git a/noisicaa/music/project_client_test.py b/noisicaa/music/project_client_test.py index f667135a..79d68130 100644 --- a/noisicaa/music/project_client_test.py +++ b/noisicaa/music/project_client_test.py @@ -51,7 +51,6 @@ class TestProjectProcess( project_process.ProjectProcessMixin, TestProjectProcessImpl): pass - class ProxyTest(asynctest.TestCase): async def setUp(self): self.project_process = TestProjectProcess(self.loop) diff --git a/noisicaa/music/project_process.py b/noisicaa/music/project_process.py index a9896b92..f63fa4bd 100644 --- a/noisicaa/music/project_process.py +++ b/noisicaa/music/project_process.py @@ -62,7 +62,9 @@ class ProjectProcessMixin(object): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + self.audioproc_address = None self.audioproc_client = None + self.audiostream_address = None async def setup(self): await super().setup() @@ -82,17 +84,10 @@ class ProjectProcessMixin(object): self.sessions = {} self.pending_mutations = [] - self.audioproc_address = await self.manager.call( - 'CREATE_AUDIOPROC_PROCESS', 'project-%s' % id(self)) - self.audioproc_client = AudioProcClient( - self.event_loop, self.server) - await self.audioproc_client.setup() - await self.audioproc_client.connect(self.audioproc_address) + await self.createAudioProcProcess() - nid = await self.audioproc_client.add_node('wavfile', path='/usr/share/sounds/purple/logout.wav', loop=True) - await self.audioproc_client.connect_ports(nid, 'out', 'sink', 'in') - - self.audiostream_address = await self.audioproc_client.set_backend('ipc') + async def createAudioProcProcess(self): + pass async def cleanup(self): if self.audioproc_client is not None: @@ -247,4 +242,16 @@ class ProjectProcessMixin(object): class ProjectProcess(ProjectProcessMixin, core.ProcessImpl): - pass + async def createAudioProcProcess(self): + self.audioproc_address = await self.manager.call( + 'CREATE_AUDIOPROC_PROCESS', 'project-%s' % id(self)) + self.audioproc_client = AudioProcClient( + self.event_loop, self.server) + await self.audioproc_client.setup() + await self.audioproc_client.connect(self.audioproc_address) + + nid = await self.audioproc_client.add_node('wavfile', path='/usr/share/sounds/purple/logout.wav', loop=True) + await self.audioproc_client.connect_ports(nid, 'out', 'sink', 'in') + + self.audiostream_address = await self.audioproc_client.set_backend('ipc') + diff --git a/noisicaa/ui/editor_app.py b/noisicaa/ui/editor_app.py index d79e758c..11008be8 100644 --- a/noisicaa/ui/editor_app.py +++ b/noisicaa/ui/editor_app.py @@ -121,16 +121,7 @@ class BaseEditorApp(QApplication): self.show_edit_areas_action.setChecked( int(self.settings.value('dev/show_edit_areas', '0'))) - self.audioproc_process = await self.process.manager.call( - 'CREATE_AUDIOPROC_PROCESS', 'main') - - self.audioproc_client = AudioProcClient( - self.process.event_loop, self.process.server) - await self.audioproc_client.setup() - await self.audioproc_client.connect(self.audioproc_process) - - await self.audioproc_client.set_backend( - self.settings.value('audio/backend', 'pyaudio')) + await self.createAudioProcProcess() async def cleanup(self): logger.info("Cleaning up.") @@ -161,6 +152,9 @@ class BaseEditorApp(QApplication): def createMidiHub(self): return devices.MidiHub(self.sequencer) + async def createAudioProcProcess(self): + pass + def dumpSettings(self): for key in self.settings.allKeys(): value = self.settings.value(key) @@ -284,3 +278,15 @@ class EditorApp(BaseEditorApp): # and the console interprets it as UTF-8), 'aconnectgui' shows the # encoded bytes. return devices.AlsaSequencer('noisicaƤ') + + async def createAudioProcProcess(self): + self.audioproc_process = await self.process.manager.call( + 'CREATE_AUDIOPROC_PROCESS', 'main') + + self.audioproc_client = AudioProcClient( + self.process.event_loop, self.process.server) + await self.audioproc_client.setup() + await self.audioproc_client.connect(self.audioproc_process) + + await self.audioproc_client.set_backend( + self.settings.value('audio/backend', 'pyaudio'))