Пример #1
0
    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)
Пример #2
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
    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)
Пример #18
0
    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)
Пример #21
0
    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)
Пример #22
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()
Пример #23
0
    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]
Пример #24
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)
Пример #25
0
    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
Пример #26
0
    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
Пример #28
0
    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
Пример #30
0
    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)))