Skip to content

Commit

Permalink
#67 - created Pedalboard.connect() and Pedalboard.disconnect(). Remov…
Browse files Browse the repository at this point in the history
…ed Output.connect() and Output.disconnect()
  • Loading branch information
SrMouraSilva committed Oct 15, 2017
1 parent 0b4d792 commit d85dd38
Show file tree
Hide file tree
Showing 14 changed files with 89 additions and 83 deletions.
9 changes: 8 additions & 1 deletion pluginsmanager/model/audio_port.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,11 @@ class AudioPort(Port, metaclass=ABCMeta):
"""
Port is a parent abstraction for audio inputs and audio outputs
"""
pass

@property
def connection_class(self):
"""
:return Connection: Class used for connections in this port
"""
from pluginsmanager.model.connection import Connection
return Connection
5 changes: 2 additions & 3 deletions pluginsmanager/model/midi_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@

from abc import ABCMeta

from pluginsmanager.model.connection import Connection, ConnectionError
from pluginsmanager.model.port import Port
from pluginsmanager.model.midi_port import MidiPort


class MidiOutput(Port, metaclass=ABCMeta):
class MidiOutput(MidiPort, metaclass=ABCMeta):
"""
MidiOutput is the medium in which the midi output processed
by the effect is returned.
Expand Down
8 changes: 8 additions & 0 deletions pluginsmanager/model/midi_port.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,11 @@ class MidiPort(Port, metaclass=ABCMeta):
Port is a parent abstraction for midi inputs and midi outputs
"""
pass

@property
def connection_class(self):
"""
:return MidiConnection: Class used for connections in this port
"""
from pluginsmanager.model.midi_connection import MidiConnection
return MidiConnection
7 changes: 4 additions & 3 deletions pluginsmanager/model/pedalboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,18 +190,19 @@ def index(self):
return self.bank.pedalboards.index(self)

def connect(self, output_port, input_port):

"""
:param output_port:
:param input_port:
:return:
"""
pass
ConnectionClass = output_port.connection_class
self.connections.append(ConnectionClass(output_port, input_port))

def disconnect(self, output_port, input_port):
"""
:param output_port:
:param input_port:
:return:
"""
pass
ConnectionClass = output_port.connection_class
self.connections.remove(ConnectionClass(output_port, input_port))
8 changes: 8 additions & 0 deletions pluginsmanager/model/port.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,11 @@ def __repr__(self):
str(self),
id(self)
)

@property
@abstractmethod
def connection_class(self):
"""
:return: Class used for connections in this port
"""
pass
8 changes: 4 additions & 4 deletions test/banks_manager_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,25 +51,25 @@ def test_observers_calls(self):
pedalboard.append(reverb2)
observer.on_effect_updated.assert_called_with(reverb2, UpdateType.CREATED, index=reverb2.index, origin=pedalboard)

reverb.outputs[0].connect(filter.inputs[0])
pedalboard.connect(reverb.outputs[0], filter.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(reverb.outputs[0], filter.inputs[0]),
UpdateType.CREATED,
pedalboard=pedalboard
)
reverb.outputs[1].connect(filter.inputs[0])
pedalboard.connect(reverb.outputs[1], filter.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(reverb.outputs[1], filter.inputs[0]),
UpdateType.CREATED,
pedalboard=pedalboard
)
filter.outputs[0].connect(reverb2.inputs[0])
pedalboard.connect(filter.outputs[0], reverb2.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(filter.outputs[0], reverb2.inputs[0]),
UpdateType.CREATED,
pedalboard=pedalboard
)
reverb.outputs[0].connect(reverb2.inputs[0])
pedalboard.connect(reverb.outputs[0], reverb2.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(reverb.outputs[0], reverb2.inputs[0]),
UpdateType.CREATED,
Expand Down
12 changes: 6 additions & 6 deletions test/mod_host/mod_host_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,15 @@ def test_observers_mock(self):
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.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])

filter.toggle()
filter.params[0].value = (filter.params[0].maximum - filter.params[0].minimum) / 2

filter.outputs[0].disconnect(reverb2.inputs[0])
pedalboard.disconnect(filter.outputs[0], reverb2.inputs[0])
filter.toggle()

pedalboard.effects.remove(filter)
Expand Down Expand Up @@ -217,4 +217,4 @@ def test_connection_not_current_pedalboard(self):

mod_host.pedalboard = pedalboard

pedalboard2.effects[0].outputs[0].connect(pedalboard2.effects[1].inputs[0])
pedalboard2.connect(pedalboard2.effects[0].outputs[0], pedalboard2.effects[1].inputs[0])
12 changes: 6 additions & 6 deletions test/model/bank_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,12 @@ def test_json(self):
pedalboard.append(filter)
pedalboard.append(reverb2)

system_effect.outputs[0].connect(reverb.inputs[0])
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])
reverb.outputs[0].connect(system_effect.inputs[0])
pedalboard.connect(system_effect.outputs[0], reverb.inputs[0])
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])
pedalboard.connect(reverb.outputs[0], system_effect.inputs[0])

bank.append(pedalboard)

Expand Down
8 changes: 4 additions & 4 deletions test/model/effect_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,10 @@ def test_connections_effect_remove_your_connections(self):
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.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]),
Expand Down
33 changes: 11 additions & 22 deletions test/model/midi_output_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ def test_connect(self):
pedalboard.append(cctonode2)

self.assertEqual(0, len(pedalboard.connections))
cctonode.midi_outputs[0].connect(cctonode2.midi_inputs[0])
pedalboard.connect(cctonode.midi_outputs[0], cctonode2.midi_inputs[0])
self.assertEqual(1, len(pedalboard.connections))

new_connection = pedalboard.connections[0]
pedalboard.observer.on_connection_updated.assert_called_with(new_connection, UpdateType.CREATED, pedalboard=pedalboard)

cctonode.midi_outputs[0].connect(cctonode2.midi_inputs[0])
pedalboard.connect(cctonode.midi_outputs[0], cctonode2.midi_inputs[0])
self.assertEqual(2, len(pedalboard.connections))

new_connection = pedalboard.connections[-1]
Expand All @@ -63,13 +63,13 @@ def test_disconnect(self):
pedalboard.append(cctonode)
pedalboard.append(cctonode2)

cctonode.midi_outputs[0].connect(cctonode2.midi_inputs[0])
pedalboard.connect(cctonode.midi_outputs[0], cctonode2.midi_inputs[0])
self.assertEqual(1, len(pedalboard.connections))

pedalboard.observer = MagicMock()

disconnected = pedalboard.connections[-1]
cctonode.midi_outputs[0].disconnect(cctonode2.midi_inputs[0])
pedalboard.disconnect(cctonode.midi_outputs[0], cctonode2.midi_inputs[0])
self.assertEqual(0, len(pedalboard.connections))
pedalboard.observer.on_connection_updated.assert_called_with(disconnected, UpdateType.DELETED, pedalboard=pedalboard)

Expand All @@ -86,11 +86,12 @@ def test_disconnect_connection_not_created(self):
pedalboard.observer = MagicMock()

with self.assertRaises(ValueError):
cctonode.midi_outputs[0].disconnect(cctonode2.midi_inputs[0])
pedalboard.disconnect(cctonode.midi_outputs[0], cctonode2.midi_inputs[0])

pedalboard.observer.on_connection_updated.assert_not_called()

def test_connect_system_effect(self):
def test_system_effect_connections(self):
pedalboard = Pedalboard('A pedalboard')
sys_effect = SystemEffect(
'system',
['capture_1'],
Expand All @@ -102,23 +103,11 @@ def test_connect_system_effect(self):
effect_output = sys_effect.midi_outputs[0]
effect_input = sys_effect.midi_inputs[0]

with self.assertRaises(ConnectionError):
effect_output.connect(effect_input)
pedalboard.connect(effect_output, effect_input)
self.assertEqual(len(pedalboard.connections), 1)

def test_disconnect_system_effect(self):
sys_effect = SystemEffect(
'system',
['capture_1'],
['playback_1', 'playback_2'],
['midi_capture_1'],
['midi_playback_1']
)

effect_output = sys_effect.midi_outputs[0]
effect_input = sys_effect.midi_inputs[0]

with self.assertRaises(ConnectionError):
effect_output.disconnect(effect_input)
pedalboard.disconnect(effect_output, effect_input)
self.assertEqual(len(pedalboard.connections), 0)

def test_port_symbol(self):
builder = MidiOutputTest.builder
Expand Down
31 changes: 13 additions & 18 deletions test/model/output_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ def test_connect(self):
pedalboard.append(reverb2)

self.assertEqual(0, len(pedalboard.connections))
reverb.outputs[0].connect(reverb2.inputs[0])
pedalboard.connect(reverb.outputs[0], reverb2.inputs[0])
self.assertEqual(1, len(pedalboard.connections))

new_connection = pedalboard.connections[0]
pedalboard.observer.on_connection_updated.assert_called_with(new_connection, UpdateType.CREATED, pedalboard=pedalboard)

reverb.outputs[1].connect(reverb2.inputs[1])
pedalboard.connect(reverb.outputs[1], reverb2.inputs[1])
self.assertEqual(2, len(pedalboard.connections))

new_connection = pedalboard.connections[-1]
Expand All @@ -63,19 +63,19 @@ def test_disconnect(self):
pedalboard.append(reverb)
pedalboard.append(reverb2)

reverb.outputs[0].connect(reverb2.inputs[0])
reverb.outputs[1].connect(reverb2.inputs[0])
pedalboard.connect(reverb.outputs[0], reverb2.inputs[0])
pedalboard.connect(reverb.outputs[1], reverb2.inputs[0])
self.assertEqual(2, len(pedalboard.connections))

pedalboard.observer = MagicMock()

disconnected = pedalboard.connections[-1]
reverb.outputs[1].disconnect(reverb2.inputs[0])
pedalboard.disconnect(reverb.outputs[1], 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])
pedalboard.disconnect(reverb.outputs[0], reverb2.inputs[0])
self.assertEqual(0, len(pedalboard.connections))
pedalboard.observer.on_connection_updated.assert_called_with(disconnected, UpdateType.DELETED, pedalboard=pedalboard)

Expand All @@ -92,24 +92,19 @@ def test_disconnect_connection_not_created(self):
pedalboard.observer = MagicMock()

with self.assertRaises(ValueError):
reverb.outputs[1].disconnect(reverb2.inputs[0])
pedalboard.disconnect(reverb.outputs[1], reverb2.inputs[0])

pedalboard.observer.on_connection_updated.assert_not_called()

def test_connect_system_effect(self):
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]

with self.assertRaises(ConnectionError):
effect_output.connect(effect_input)
pedalboard.connect(effect_output, effect_input)
self.assertEqual(len(pedalboard.connections), 1)

def test_disconnect_system_effect(self):
sys_effect = SystemEffect('system', ['capture_1'], ['playback_1', 'playback_2'])

effect_output = sys_effect.outputs[0]
effect_input = sys_effect.inputs[0]

with self.assertRaises(ConnectionError):
effect_output.disconnect(effect_input)
pedalboard.disconnect(effect_output, effect_input)
self.assertEqual(len(pedalboard.connections), 0)
9 changes: 4 additions & 5 deletions test/model/pedalboard_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,14 @@ def test_delete_effect_remove_your_connections(self):
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.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])

self.assertEqual(4, len(pedalboard.connections))

pedalboard.observer = MagicMock()
fuzz_connections = filter.connections

pedalboard.effects.remove(filter)

Expand Down
12 changes: 6 additions & 6 deletions test/observer/autosaver_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,16 @@ def test_observers(self):
save_mock.assert_called_with(bank)
save_mock.reset_mock()

reverb.outputs[0].connect(filter.inputs[0])
pedalboard.connect(reverb.outputs[0], filter.inputs[0])
save_mock.assert_called_with(bank)
save_mock.reset_mock()
reverb.outputs[1].connect(filter.inputs[0])
pedalboard.connect(reverb.outputs[1], filter.inputs[0])
save_mock.assert_called_with(bank)
save_mock.reset_mock()
filter.outputs[0].connect(reverb2.inputs[0])
pedalboard.connect(filter.outputs[0], reverb2.inputs[0])
save_mock.assert_called_with(bank)
save_mock.reset_mock()
reverb.outputs[0].connect(reverb2.inputs[0])
pedalboard.connect(reverb.outputs[0], reverb2.inputs[0])
save_mock.assert_called_with(bank)
save_mock.reset_mock()

Expand Down Expand Up @@ -198,8 +198,8 @@ def test_connections_effect_removed(self):
bank.append(pedalboard)
pedalboard.append(reverb)

reverb.outputs[0].connect(system_effect.inputs[0])
reverb.outputs[0].connect(system_effect.inputs[1])
pedalboard.connect(reverb.outputs[0], system_effect.inputs[0])
pedalboard.connect(reverb.outputs[0], system_effect.inputs[1])

pedalboard.effects.remove(reverb)

Expand Down
10 changes: 5 additions & 5 deletions test/util/persistence_decoder_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@ def bank(self):
pedalboard.append(reverb2)
pedalboard.append(cctonode)

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.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])

cctonode.midi_outputs[0].connect(sys_effect.midi_inputs[0])
pedalboard.connect(cctonode.midi_outputs[0], sys_effect.midi_inputs[0])

pedalboard.connections.append(Connection(sys_effect.outputs[0], reverb.inputs[0]))
pedalboard.connections.append(Connection(reverb2.outputs[0], sys_effect.inputs[0]))
Expand Down

0 comments on commit d85dd38

Please sign in to comment.