aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py
diff options
context:
space:
mode:
Diffstat (limited to 'solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py')
-rw-r--r--solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py67
1 files changed, 19 insertions, 48 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 4fde8fc..3dc8ec6 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
@@ -1,5 +1,5 @@
from .midi_wrapper_mido import MidiWrapper
-from .solo_tool_controller import SoloToolController
+from . import handlers
class MidiController:
DEVICE_NAME = "Launchpad Mini MIDI 1"
@@ -20,7 +20,6 @@ class MidiController:
def __init__(self, soloTool, midiWrapperOverride=None):
self._soloTool = soloTool
- self._soloToolController = SoloToolController(soloTool)
if midiWrapperOverride is not None:
self._midiWrapper = midiWrapperOverride
else:
@@ -28,31 +27,25 @@ class MidiController:
self._registerHandlers()
self._soloTool.registerPlayingStateCallback(self._updatePlayPauseButton)
- self._soloTool.registerPlaybackVolumeCallback(self._updateVolumeRow)
- self._soloTool.registerPlaybackRateCallback(self._updateRateRow)
- self._soloTool.registerAbLimitEnabledCallback(self._updateToggleAbLimitEnableButton)
-
- self._aLimit = 0.0
- self._bLimit = 0.0
+ self._soloTool.registerVolumeCallback(self._updateVolumeRow)
+ self._soloTool.registerRateCallback(self._updateRateRow)
def _registerHandlers(self):
self._handlers = {
96 : self._soloTool.stop,
- 114 : self._soloTool.jumpToA,
+ 114 : self._soloTool.jump,
112 : self._playPause,
- 98 : self._toggleAbLimitEnable,
- 118 : self._soloTool.previousStoredAbLimits,
- 119 : self._soloTool.nextStoredAbLimits,
- 116 : self._setALimit,
- 117 : self._setBLimit,
- 48 : self._soloToolController.previousSong,
- 49 : self._createSeekHandler(-0.25),
- 50 : self._createSeekHandler(-0.05),
- 51 : self._createSeekHandler(-0.01),
- 52 : self._createSeekHandler(0.01),
- 53 : self._createSeekHandler(0.05),
- 54 : self._createSeekHandler(0.25),
- 55 : self._soloToolController.nextSong,
+ #118 : self._soloTool.previousStoredAbLimits,
+ #119 : self._soloTool.nextStoredAbLimits,
+ 117 : handlers.positionToKeyPoint(self._soloTool),
+ 48 : handlers.changeSong(self._soloTool, -1),
+ 49 : handlers.seekRelative(self._soloTool, -0.25),
+ 50 : handlers.seekRelative(self._soloTool, -0.05),
+ 51 : handlers.seekRelative(self._soloTool, -0.01),
+ 52 : handlers.seekRelative(self._soloTool, 0.01),
+ 53 : handlers.seekRelative(self._soloTool, 0.05),
+ 54 : handlers.seekRelative(self._soloTool, 0.25),
+ 55 : handlers.changeSong(self._soloTool, 1),
}
for i in range(0, 8):
@@ -84,24 +77,6 @@ class MidiController:
else:
self._soloTool.play()
- def _createSeekHandler(self, delta):
- def f():
- newPosition = self._soloTool.getPlaybackPosition() + delta
- newPosition = min(1.0, max(0.0, newPosition))
- self._soloTool.setPlaybackPosition(newPosition)
- return f
-
- def _setALimit(self):
- self._aLimit = self._soloTool.getPlaybackPosition()
- self._soloTool.setAbLimits(self._aLimit, self._bLimit)
-
- def _setBLimit(self):
- self._bLimit = self._soloTool.getPlaybackPosition()
- self._soloTool.setAbLimits(self._aLimit, self._bLimit)
-
- def _toggleAbLimitEnable(self):
- self._soloTool.setAbLimitEnable(not self._soloTool.isAbLimitEnabled())
-
def _updatePlayPauseButton(self, playing):
if playing:
self._setButtonLED(7, 0, MidiController.LED_GREEN)
@@ -128,12 +103,12 @@ class MidiController:
def _createSetPlaybackRateCallback(self, rate):
def f():
- self._soloTool.setPlaybackRate(rate)
+ self._soloTool.rate = rate
return f
def _createSetPlaybackVolumeCallback(self, volume):
def f():
- self._soloTool.setPlaybackVolume(volume)
+ self._soloTool.volume = volume
return f
def _setButtonLED(self, row, col, colour):
@@ -153,23 +128,19 @@ class MidiController:
self._allLEDsOff()
# volume buttons
- self._updateVolumeRow(self._soloTool.getPlaybackVolume())
+ self._updateVolumeRow(self._soloTool.volume)
# playback rate buttons
- self._updateRateRow(self._soloTool.getPlaybackRate())
+ self._updateRateRow(self._soloTool.rate)
# playback control
self._setButtonLED(6, 0, MidiController.LED_RED)
self._updatePlayPauseButton(self._soloTool.isPlaying())
- # AB repeat toggle
- self._updateToggleAbLimitEnableButton(self._soloTool.isAbLimitEnabled())
-
# AB control
self._setButtonLED(7, 2, MidiController.LED_YELLOW)
self._setButtonLED(7, 6, MidiController.LED_RED)
self._setButtonLED(7, 7, MidiController.LED_GREEN)
- self._setButtonLED(7, 4, MidiController.LED_YELLOW)
self._setButtonLED(7, 5, MidiController.LED_YELLOW)
# Song control