def test_connections_effect_remove_your_connections(self): pedalboard = Pedalboard('Pedalboard name') builder = EffectTest.builder reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb') filter = builder.build('http://calf.sourceforge.net/plugins/Filter') reverb2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(filter) pedalboard.append(reverb2) pedalboard.connect(reverb.outputs[0], filter.inputs[0]) pedalboard.connect(reverb.outputs[1], filter.inputs[0]) pedalboard.connect(filter.outputs[0], reverb2.inputs[0]) pedalboard.connect(reverb.outputs[0], reverb2.inputs[0]) reverb_connections = (Connection(reverb.outputs[0], filter.inputs[0]), Connection(reverb.outputs[1], filter.inputs[0]), Connection(reverb.outputs[0], reverb2.inputs[0])) fuzz_connections = (Connection(reverb.outputs[0], filter.inputs[0]), Connection(reverb.outputs[1], filter.inputs[0]), Connection(filter.outputs[0], reverb2.inputs[0])) reverb2_connections = (Connection(filter.outputs[0], reverb2.inputs[0]), Connection(reverb.outputs[0], reverb2.inputs[0])) self.assertCountEqual(reverb_connections, reverb.connections) self.assertCountEqual(fuzz_connections, filter.connections) self.assertCountEqual(reverb2_connections, reverb2.connections)
def test_data(self): pedalboard = Pedalboard('Bank 1') pedalboard.observer = MagicMock() self.assertEqual({}, pedalboard.data) data = {'my-awesome-component': True} pedalboard.data = data self.assertEqual(data, pedalboard.data)
def generate_bank(self, name): # Configure bank = Bank(name) pedalboard1 = Pedalboard(name + ' pedalboard') pedalboard2 = Pedalboard(name + ' pedalboard2') bank.append(pedalboard1) bank.append(pedalboard2) return bank
def test_set_pedalboard(self): """Test only coverage""" manager = BanksManager() bank = Bank('Bank 1') manager.append(bank) mod_host = ModHost('localhost') mod_host.host = MagicMock() manager.register(mod_host) pedalboard = Pedalboard('test_set_pedalboard_1') bank.append(pedalboard) reverb = self.builder.build( 'http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard2 = Pedalboard('test_set_pedalboard_2') reverb2 = self.builder.build( 'http://calf.sourceforge.net/plugins/Reverb') bank.append(pedalboard) pedalboard2.append(reverb2) mod_host.pedalboard = pedalboard mod_host.pedalboard = pedalboard2
def test_param_value_not_current_pedalboard(self): """Test only coverage""" manager = BanksManager() bank = Bank('Bank 1') manager.append(bank) mod_host = ModHost('localhost') mod_host.host = MagicMock() manager.register(mod_host) pedalboard = Pedalboard('test_set_pedalboard_1') pedalboard.append( self.builder.build('http://calf.sourceforge.net/plugins/Reverb')) pedalboard2 = Pedalboard('test_set_pedalboard_2') pedalboard2.append( self.builder.build('http://calf.sourceforge.net/plugins/Reverb')) bank.append(pedalboard) bank.append(pedalboard2) mod_host.pedalboard = pedalboard pedalboard2.effects[0].params[0].value = pedalboard2.effects[0].params[ 0].maximum
def test_update_connection(self): pedalboard = Pedalboard('Pedalboard 1') connection1 = MagicMock() connection2 = MagicMock() pedalboard.connections.append(connection1) pedalboard.observer = MagicMock() pedalboard.connections[0] = connection2 self.assertEqual(pedalboard.connections[0], connection2) pedalboard.observer.on_connection_updated.assert_called_with( connection2, UpdateType.UPDATED, pedalboard=pedalboard)
def test_delete_connection(self): """ Other mode is by output.disconnect(input)""" pedalboard = Pedalboard('Bank 1') connection = MagicMock() pedalboard.connections.append(connection) pedalboard.observer = MagicMock() del pedalboard.connections[0] self.assertEqual(len(pedalboard.connections), 0) pedalboard.observer.on_connection_updated.assert_called_with( connection, UpdateType.DELETED, pedalboard=pedalboard)
def read(self, json): pedalboard = Pedalboard(json['name']) effect_reader = EffectReader(self.system_effect) for effect_json in json['effects']: pedalboard.append(effect_reader.read(effect_json)) connection_reader = ConnectionReader(pedalboard, self.system_effect) for connection_json in json['connections']: pedalboard.connections.append( connection_reader.read(connection_json)) if 'data' in json: pedalboard.data = json['data'] return pedalboard
def test_disconnect(self): pedalboard = Pedalboard('Pedalboard name') builder = OutputTest.builder reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb') reverb2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(reverb2) reverb.outputs[0].connect(reverb2.inputs[0]) reverb.outputs[1].connect(reverb2.inputs[0]) self.assertEqual(2, len(pedalboard.connections)) pedalboard.observer = MagicMock() disconnected = pedalboard.connections[-1] reverb.outputs[1].disconnect(reverb2.inputs[0]) self.assertEqual(1, len(pedalboard.connections)) pedalboard.observer.on_connection_updated.assert_called_with( disconnected, UpdateType.DELETED, pedalboard=pedalboard) disconnected = pedalboard.connections[-1] reverb.outputs[0].disconnect(reverb2.inputs[0]) self.assertEqual(0, len(pedalboard.connections)) pedalboard.observer.on_connection_updated.assert_called_with( disconnected, UpdateType.DELETED, pedalboard=pedalboard)
def test_delete_effect_remove_your_connections(self): pedalboard = Pedalboard('Pedalboard name') builder = Lv2EffectBuilder() reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb') filter = builder.build('http://calf.sourceforge.net/plugins/Filter') reverb2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(filter) pedalboard.append(reverb2) reverb.outputs[0].connect(filter.inputs[0]) reverb.outputs[1].connect(filter.inputs[0]) filter.outputs[0].connect(reverb2.inputs[0]) reverb.outputs[0].connect(reverb2.inputs[0]) self.assertEqual(4, len(pedalboard.connections)) pedalboard.observer = MagicMock() fuzz_connections = filter.connections pedalboard.effects.remove(filter) self.assertEqual(1, len(pedalboard.connections)) for connection in fuzz_connections: pedalboard.observer.on_connection_updated.assert_any_call( connection, UpdateType.DELETED, pedalboard=pedalboard)
def test_observers(self): mock = MagicMock() observer = Autosaver('data/test/') observer.save = mock observer.delete = mock manager = BanksManager() manager.register(observer) bank = Bank('Bank 1') manager.append(bank) observer.save.assert_called_with(bank) pedalboard = Pedalboard('Rocksmith') bank.append(pedalboard) observer.save.assert_called_with(bank) builder = Lv2EffectBuilder() reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb') filter = builder.build('http://calf.sourceforge.net/plugins/Filter') reverb2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) observer.save.assert_called_with(bank) pedalboard.append(filter) observer.save.assert_called_with(bank) pedalboard.append(reverb2) observer.save.assert_called_with(bank) reverb.outputs[0].connect(filter.inputs[0]) observer.save.assert_called_with(bank) reverb.outputs[1].connect(filter.inputs[0]) observer.save.assert_called_with(bank) filter.outputs[0].connect(reverb2.inputs[0]) observer.save.assert_called_with(bank) reverb.outputs[0].connect(reverb2.inputs[0]) observer.save.assert_called_with(bank) filter.toggle() observer.save.assert_called_with(bank) filter.params[0].value = (filter.params[0].maximum - filter.params[0].minimum) / 2 observer.save.assert_called_with(bank) del bank.pedalboards[0] observer.save.assert_called_with(bank) bank2 = Bank('Bank 2') manager.banks[0] = bank2 observer.delete.assert_called_with(bank2) observer.save.assert_called_with(bank2) manager.banks.remove(bank2) observer.delete.assert_called_with(bank2)
def test_get(self): bank = self.default_bank_mock bank.append(Pedalboard('Pedalboard 2')) bank.append(Pedalboard('Pedalboard 3')) bank.index = self.rest.create_bank(bank).json()['index'] pedalboard = bank.pedalboards[0] index = 2 r = self.rest.move_pedalboard(pedalboard, index) self.assertEqual(Test.SUCCESS, r.status_code) persisted = self.rest.get_bank(bank).json() bank.pedalboards.move(pedalboard, index) self.assertEqual(bank.json, persisted) self.rest.delete_bank(bank)
def test_add_connection_by_connections(self): """ Other mode is by output.connect(input)""" pedalboard = Pedalboard('Pedalboard 1') connection1 = MagicMock() connection2 = MagicMock() pedalboard.observer = MagicMock() pedalboard.connections.append(connection1) self.assertEqual(pedalboard.connections[0], connection1) pedalboard.observer.on_connection_updated.assert_called_with( connection1, UpdateType.CREATED, pedalboard=pedalboard) pedalboard.connections.append(connection2) self.assertEqual(pedalboard.connections[1], connection2) pedalboard.observer.on_connection_updated.assert_called_with( connection2, UpdateType.CREATED, pedalboard=pedalboard)
def test_add_effect_by_effects(self): pedalboard = Pedalboard('Pedalboard 1') effect1 = MagicMock() effect2 = MagicMock() pedalboard.observer = MagicMock() pedalboard.effects.append(effect1) self.assertEqual(effect1.pedalboard, pedalboard) self.assertEqual(pedalboard.effects[0], effect1) pedalboard.observer.on_effect_updated.assert_called_with( effect1, UpdateType.CREATED, index=0, origin=pedalboard) pedalboard.effects.append(effect2) self.assertEqual(effect2.pedalboard, pedalboard) self.assertEqual(pedalboard.effects[1], effect2) pedalboard.observer.on_effect_updated.assert_called_with( effect2, UpdateType.CREATED, index=1, origin=pedalboard)
def test_disconnect_connection_not_created(self): pedalboard = Pedalboard('Pedalboard name') builder = OutputTest.builder reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb') reverb2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(reverb2) pedalboard.observer = MagicMock() with self.assertRaises(ValueError): pedalboard.disconnect(reverb.outputs[1], reverb2.inputs[0]) pedalboard.observer.on_connection_updated.assert_not_called()
def test_to_before_pedalboard(self): pedalboard = Pedalboard('Other pedalboard') self._current.bank.append(pedalboard) for pedalboard in reversed(self._current.bank.pedalboards): self._current.to_before_pedalboard() self.assertEqual(pedalboard, self._current.pedalboard) self.observer.on_current_pedalboard_changed.assert_called_with(pedalboard) self.assertEqual(0, self._current.pedalboard.index) self._current.bank.pedalboards.remove(pedalboard)
def test_to_next_pedalboard(self): last_pedalboard = Pedalboard('Other pedalboard') self._current.bank.append(last_pedalboard) self._current.set_pedalboard(last_pedalboard) for pedalboard in self._current.bank.pedalboards: self._current.to_next_pedalboard() self.assertEqual(pedalboard, self._current.pedalboard) self.observer.on_current_pedalboard_changed.assert_called_with(pedalboard) self._current.bank.pedalboards.remove(last_pedalboard)
def test_disconnect_connection_not_created(self): pedalboard = Pedalboard('Pedalboard name') builder = MidiOutputTest.builder cctonode = builder.build( 'http://gareus.org/oss/lv2/midifilter#cctonote') cctonode2 = builder.build( 'http://gareus.org/oss/lv2/midifilter#cctonote') pedalboard.append(cctonode) pedalboard.append(cctonode2) pedalboard.observer = MagicMock() with self.assertRaises(ValueError): pedalboard.disconnect(cctonode.midi_outputs[0], cctonode2.midi_inputs[0]) pedalboard.observer.on_connection_updated.assert_not_called()
def test_pedalboard_updated(self): bank1 = self._current.bank current_pedalboard = self._current.pedalboard other_pedalboard = Pedalboard('Other pedalboard') # Change bank bank1.pedalboards[current_pedalboard.index] = other_pedalboard self.assertNotEqual(self._current.pedalboard, current_pedalboard) self.assertEqual(self._current.pedalboard, other_pedalboard) self.assertEqual(self._current.bank, bank1) # Tear down self._manager.banks.remove(bank1)
def test_set_pedalboard(self): pedalboard = Pedalboard('Other pedalboard') self._current.bank.append(pedalboard) original_pedalboard = self._current.pedalboard self._current.set_pedalboard(pedalboard) self.assertEqual(pedalboard, self._current.pedalboard) self.observer.on_current_pedalboard_changed.assert_called_with(pedalboard) self.assertNotEqual(original_pedalboard, self._current.pedalboard) self._current.set_pedalboard(original_pedalboard) self._current.bank.pedalboards.remove(pedalboard)
def test_system_effect_connections(self): pedalboard = Pedalboard('A pedalboard') sys_effect = SystemEffect('system', ['capture_1'], ['playback_1', 'playback_2']) effect_output = sys_effect.outputs[0] effect_input = sys_effect.inputs[0] pedalboard.connect(effect_output, effect_input) self.assertEqual(len(pedalboard.connections), 1) pedalboard.disconnect(effect_output, effect_input) self.assertEqual(len(pedalboard.connections), 0)
def test_system_midi_port(self): from pluginsmanager.observer.mod_host.mod_host import ModHost from pluginsmanager.model.pedalboard import Pedalboard from pluginsmanager.model.lv2.lv2_effect_builder import Lv2EffectBuilder from pluginsmanager.model.system.system_effect import SystemEffect jack_system = SystemEffect( 'system', [], # audio inputs ['playback_1', 'playback_2'], # audio output [], # midi inputs [] # midi outputs ) jack_ttymidi = SystemEffect( 'ttymidi', [], # audio inputs [], # audio output ['MIDI_in'], # midi inputs ['MIDI_out'] # midi outputs ) modhost = ModHost('localhost') modhost.connect() pedalboard = Pedalboard('MDA-EP') builder = Lv2EffectBuilder() ep = builder.build( 'http://guitarix.sourceforge.net/plugins/gx_oc_2_#_oc_2_') pedalboard.append(ep) # REMEMBER: FIRST OUTPUT, SECOND INPUT # EPiano contains two audio output ports and one midi input port pedalboard.connect(ep.outputs[0], jack_system.inputs[0]) pedalboard.connect(jack_ttymidi.midi_outputs[0], ep.midi_inputs[0]) # If not using banks manager, the changes will not be applied automatically # then, is necessary changes the pedalboard at the end modhost.pedalboard = pedalboard # Safe close modhost.close()
def test_replace_bank(self): observer = Autosaver('../data/test/') manager = BanksManager() manager.register(observer) bank1 = Bank('Bank 1') pedalboard = Pedalboard('Rocksmith') bank1.append(pedalboard) manager.append(bank1) manager.banks[0] = Bank('Bank 2') self.validate_persisted(manager) while manager.banks: del manager.banks[0]
def test_update_effect(self): pedalboard = Pedalboard('Pedalboard 1') effect1 = MagicMock() effect2 = MagicMock() pedalboard.append(effect1) pedalboard.observer = MagicMock() pedalboard.effects[0] = effect2 self.assertEqual(effect2.pedalboard, pedalboard) self.assertEqual(pedalboard.effects[0], effect2) pedalboard.observer.on_effect_updated.assert_called_with( effect2, UpdateType.UPDATED, index=0, origin=pedalboard)
def default_bank_mock(self): bank = BankMock('REST - Default Bank' + str(uuid.uuid4())) pedalboard = Pedalboard('REST - Default Pedalboard') reverb = self.plugins_builder.build('http://calf.sourceforge.net/plugins/Reverb') reverb2 = self.plugins_builder.build('http://calf.sourceforge.net/plugins/Reverb') bank.append(pedalboard) pedalboard.append(reverb) pedalboard.append(reverb2) reverb.outputs[0].connect(reverb2.inputs[0]) return bank
def test_observers_mock(self): """Test only coverage""" sys_effect = SystemEffect('system', ('capture_1', 'capture_2'), ('playback_1', 'playback_2')) manager = BanksManager() bank = Bank('Bank 1') manager.append(bank) mod_host = ModHost('localhost') mod_host.host = MagicMock() manager.register(mod_host) pedalboard = Pedalboard('Rocksmith') mod_host.pedalboard = pedalboard bank.append(pedalboard) reverb = self.builder.build('http://calf.sourceforge.net/plugins/Reverb') filter = self.builder.build('http://calf.sourceforge.net/plugins/Filter') reverb2 = self.builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(filter) pedalboard.append(reverb2) reverb.outputs[0].connect(filter.inputs[0]) reverb.outputs[1].connect(filter.inputs[0]) filter.outputs[0].connect(reverb2.inputs[0]) reverb.outputs[0].connect(reverb2.inputs[0]) filter.toggle() filter.params[0].value = (filter.params[0].maximum - filter.params[0].minimum) / 2 filter.outputs[0].disconnect(reverb2.inputs[0]) filter.toggle() pedalboard.effects.remove(filter) pedalboard.connections.append(Connection(sys_effect.outputs[0], reverb.inputs[0])) pedalboard.connections.append(Connection(reverb2.outputs[0], sys_effect.inputs[0])) for connection in list(pedalboard.connections): pedalboard.connections.remove(connection) for effect in list(pedalboard.effects): pedalboard.effects.remove(effect)
def test_append_notaddable(self): builder = Lv2EffectBuilder() element1 = builder.build('http://calf.sourceforge.net/plugins/Reverb') element2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard = Pedalboard('name') connection = Connection(element1.outputs[0], element2.inputs[0]) with self.assertRaises(NotAddableError): pedalboard.connections.append(connection) pedalboard.append(element2) with self.assertRaises(NotAddableError): pedalboard.connections.append(connection) pedalboard.append(element1) pedalboard.connections.append(connection) # All effects added - OK
def test_delete_effect(self): pedalboard = Pedalboard('Bank 1') effect = MagicMock() effect2 = MagicMock() pedalboard.append(effect) pedalboard.append(effect2) pedalboard.observer = MagicMock() del pedalboard.effects[1] self.assertEqual(effect2.pedalboard, None) self.assertEqual(len(pedalboard.effects), 1) pedalboard.observer.on_effect_updated.assert_called_with( effect2, UpdateType.DELETED, index=1, origin=pedalboard) del pedalboard.effects[0] self.assertEqual(effect.pedalboard, None) self.assertEqual(len(pedalboard.effects), 0) pedalboard.observer.on_effect_updated.assert_called_with( effect, UpdateType.DELETED, index=0, origin=pedalboard)
def bank(self): sys_effect = SystemEffect('system', ('capture_1', 'capture_2'), ('playback_1', 'playback_2')) bank = Bank('Bank 1') pedalboard = Pedalboard('Pedalboard 1') bank.append(pedalboard) bank.append(Pedalboard('Pedalboard is a Pedalboard?')) reverb = self.builder.build( 'http://calf.sourceforge.net/plugins/Reverb') filter = self.builder.build( 'http://calf.sourceforge.net/plugins/Filter') reverb2 = self.builder.build( 'http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(filter) pedalboard.append(reverb2) reverb.outputs[0].connect(filter.inputs[0]) reverb.outputs[1].connect(filter.inputs[0]) filter.outputs[0].connect(reverb2.inputs[0]) reverb.outputs[0].connect(reverb2.inputs[0]) pedalboard.connections.append( Connection(sys_effect.outputs[0], reverb.inputs[0])) pedalboard.connections.append( Connection(reverb2.outputs[0], sys_effect.inputs[0])) filter.toggle() filter.params[0].value = (filter.params[0].maximum - filter.params[0].minimum) / 3 return bank
def test_json(self): bank = Bank('Bank 1') pedalboard = Pedalboard('Rocksmith') builder = Lv2EffectBuilder() reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb') filter = builder.build('http://calf.sourceforge.net/plugins/Filter') reverb2 = builder.build('http://calf.sourceforge.net/plugins/Reverb') pedalboard.append(reverb) pedalboard.append(filter) pedalboard.append(reverb2) reverb.outputs[0].connect(filter.inputs[0]) reverb.outputs[1].connect(filter.inputs[0]) filter.outputs[0].connect(reverb2.inputs[0]) reverb.outputs[0].connect(reverb2.inputs[0]) bank.append(pedalboard) print((json.dumps(bank.json, sort_keys=True, indent=2)))