aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool
diff options
context:
space:
mode:
Diffstat (limited to 'solo-tool-project/src/solo_tool')
-rw-r--r--solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py7
-rw-r--r--solo-tool-project/src/solo_tool/midi_wrapper_mido.py19
2 files changed, 17 insertions, 9 deletions
diff --git a/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py b/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py
index 961127c..8f32650 100644
--- a/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py
+++ b/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py
@@ -51,10 +51,13 @@ class MidiController:
self._handlers[button] = self._createSetPlaybackRateCallback(rate)
def connect(self):
- self._midiWrapper.setCallback(self._callback)
- self._midiWrapper.connect(MidiController.DEVICE_NAME)
+ self._midiWrapper.connect(MidiController.DEVICE_NAME, self._callback)
self._initialiseButtonLEDs()
+ def disconnect(self):
+ self._allLEDsOff()
+ self._midiWrapper.disconnect()
+
def _callback(self, msg):
if msg.type != "note_on" or msg.velocity < 127:
return
diff --git a/solo-tool-project/src/solo_tool/midi_wrapper_mido.py b/solo-tool-project/src/solo_tool/midi_wrapper_mido.py
index bf3aa85..4cfc9c3 100644
--- a/solo-tool-project/src/solo_tool/midi_wrapper_mido.py
+++ b/solo-tool-project/src/solo_tool/midi_wrapper_mido.py
@@ -4,15 +4,20 @@ class MidiWrapper:
def __init__(self):
self._inPort = None
self._outPort = None
- self._callback = None
- def setCallback(self, callback):
- self._callback = callback
+ def connect(self, deviceName, callback):
+ if self._inPort is None and self._outPort is None:
+ self._inPort = mido.open_input(deviceName)
+ self._inPort.callback = callback
+ self._outPort = mido.open_output(deviceName)
- def connect(self, deviceName):
- self._inPort = mido.open_input(deviceName)
- self._inPort.callback = self._callback
- self._outPort = mido.open_output(deviceName)
+ def disconnect(self):
+ self._inPort.close()
+ self._inPort = None
+
+ self._outPort.reset()
+ self._outPort.close()
+ self._outPort = None
def sendMessage(self, note, velocity, channel):
if self._outPort is not None: