aboutsummaryrefslogtreecommitdiffstats
path: root/midi_launchpad_mini_integrationtest.py
diff options
context:
space:
mode:
authorEddy Pedroni <eddy@0xf7.com>2022-01-04 13:49:38 +0100
committerEddy Pedroni <eddy@0xf7.com>2022-01-04 13:49:38 +0100
commitedb2ffc66231702c931429ab44ad5009abb8c128 (patch)
tree6b1ad17f45aaf35a8cf0f3cedf03ac71c6611d6c /midi_launchpad_mini_integrationtest.py
parent67f07cf01155b98321f590e3c18e378018c0a624 (diff)
Added proper volume and playback rate feedback, changed volume steps in MIDI interface
Diffstat (limited to 'midi_launchpad_mini_integrationtest.py')
-rw-r--r--midi_launchpad_mini_integrationtest.py102
1 files changed, 92 insertions, 10 deletions
diff --git a/midi_launchpad_mini_integrationtest.py b/midi_launchpad_mini_integrationtest.py
index c10a3f5..35ac087 100644
--- a/midi_launchpad_mini_integrationtest.py
+++ b/midi_launchpad_mini_integrationtest.py
@@ -211,20 +211,61 @@ def test_playbackRateButtons(uut, midiWrapperMock, soloTool, playerMock):
for i, colour in enumerate(playbackRateOptions[button][1]):
assert midiWrapperMock.sentMessages[i] == (16 + i, colour, 0)
+def test_playbackRateLeds(uut, midiWrapperMock, soloTool, playerMock):
+ playbackRateOptions = [
+ (0.00, [LED_OFF] * 8),
+ (0.49, [LED_OFF] * 8),
+
+ (0.50, [LED_YELLOW] * 1 + [LED_OFF] * 7),
+ (0.59, [LED_YELLOW] * 1 + [LED_OFF] * 7),
+
+ (0.60, [LED_YELLOW] * 2 + [LED_OFF] * 6),
+ (0.69, [LED_YELLOW] * 2 + [LED_OFF] * 6),
+
+ (0.70, [LED_YELLOW] * 3 + [LED_OFF] * 5),
+ (0.79, [LED_YELLOW] * 3 + [LED_OFF] * 5),
+
+ (0.80, [LED_YELLOW] * 4 + [LED_OFF] * 4),
+ (0.89, [LED_YELLOW] * 4 + [LED_OFF] * 4),
+
+ (0.90, [LED_YELLOW] * 5 + [LED_OFF] * 3),
+ (0.99, [LED_YELLOW] * 5 + [LED_OFF] * 3),
+
+ (1.00, [LED_YELLOW] * 6 + [LED_OFF] * 2),
+ (1.09, [LED_YELLOW] * 6 + [LED_OFF] * 2),
+
+ (1.10, [LED_YELLOW] * 7 + [LED_OFF] * 1),
+ (1.19, [LED_YELLOW] * 7 + [LED_OFF] * 1),
+
+ (1.2, [LED_YELLOW] * 8),
+ (1.5, [LED_YELLOW] * 8)
+ ]
+ uut.connect()
+ assert playerMock.rate == 1.0
+
+ for t, (rate, leds) in enumerate(playbackRateOptions):
+ midiWrapperMock.sentMessages.clear()
+
+ soloTool.setPlaybackRate(rate)
+ assert playerMock.rate == rate
+
+ for i, colour in enumerate(leds):
+ assert midiWrapperMock.sentMessages[i] == (16 + i, colour, 0)
+
def test_playbackVolumeButtons(uut, midiWrapperMock, soloTool, playerMock):
playbackVolumeOptions = {
- 0 : (0.125, [LED_GREEN] * 1 + [LED_OFF] * 7),
- 1 : (0.250, [LED_GREEN] * 2 + [LED_OFF] * 6),
- 2 : (0.375, [LED_GREEN] * 3 + [LED_OFF] * 5),
- 3 : (0.500, [LED_GREEN] * 4 + [LED_OFF] * 4),
- 4 : (0.625, [LED_GREEN] * 5 + [LED_OFF] * 3),
- 5 : (0.750, [LED_GREEN] * 6 + [LED_OFF] * 2),
- 6 : (0.875, [LED_GREEN] * 7 + [LED_OFF] * 1),
- 7 : (1.000, [LED_GREEN] * 8)
+ 0 : (0.5, [LED_GREEN] * 1 + [LED_OFF] * 7),
+ 1 : (0.6, [LED_GREEN] * 2 + [LED_OFF] * 6),
+ 2 : (0.7, [LED_GREEN] * 3 + [LED_OFF] * 5),
+ 3 : (0.8, [LED_GREEN] * 4 + [LED_OFF] * 4),
+ 4 : (0.9, [LED_GREEN] * 5 + [LED_OFF] * 3),
+ 5 : (1.0, [LED_GREEN] * 6 + [LED_OFF] * 2),
+ 6 : (1.1, [LED_GREEN] * 7 + [LED_OFF] * 1),
+ 7 : (1.2, [LED_GREEN] * 8)
}
uut.connect()
assert playerMock.volume == 1.0
-
+
for t, button in enumerate(playbackVolumeOptions):
midiWrapperMock.sentMessages.clear()
@@ -234,6 +275,47 @@ def test_playbackVolumeButtons(uut, midiWrapperMock, soloTool, playerMock):
for i, colour in enumerate(playbackVolumeOptions[button][1]):
assert midiWrapperMock.sentMessages[i] == (i, colour, 0)
+def test_playbackVolumeLeds(uut, midiWrapperMock, soloTool, playerMock):
+ playbackVolumeOptions = [
+ (0.00, [LED_OFF] * 8),
+ (0.49, [LED_OFF] * 8),
+
+ (0.50, [LED_GREEN] * 1 + [LED_OFF] * 7),
+ (0.59, [LED_GREEN] * 1 + [LED_OFF] * 7),
+
+ (0.60, [LED_GREEN] * 2 + [LED_OFF] * 6),
+ (0.69, [LED_GREEN] * 2 + [LED_OFF] * 6),
+
+ (0.70, [LED_GREEN] * 3 + [LED_OFF] * 5),
+ (0.79, [LED_GREEN] * 3 + [LED_OFF] * 5),
+
+ (0.80, [LED_GREEN] * 4 + [LED_OFF] * 4),
+ (0.89, [LED_GREEN] * 4 + [LED_OFF] * 4),
+
+ (0.90, [LED_GREEN] * 5 + [LED_OFF] * 3),
+ (0.99, [LED_GREEN] * 5 + [LED_OFF] * 3),
+
+ (1.00, [LED_GREEN] * 6 + [LED_OFF] * 2),
+ (1.09, [LED_GREEN] * 6 + [LED_OFF] * 2),
+
+ (1.10, [LED_GREEN] * 7 + [LED_OFF] * 1),
+ (1.19, [LED_GREEN] * 7 + [LED_OFF] * 1),
+
+ (1.2, [LED_GREEN] * 8),
+ (1.5, [LED_GREEN] * 8)
+ ]
+ uut.connect()
+ assert playerMock.volume == 1.0
+
+ for t, (volume, leds) in enumerate(playbackVolumeOptions):
+ midiWrapperMock.sentMessages.clear()
+
+ soloTool.setPlaybackVolume(volume)
+ assert playerMock.volume == volume
+
+ for i, colour in enumerate(leds):
+ assert midiWrapperMock.sentMessages[i] == (i, colour, 0)
+
def test_unassignedButton(uut, midiWrapperMock):
unassignedButton = 48
uut.connect()
@@ -245,7 +327,7 @@ def test_unassignedButton(uut, midiWrapperMock):
def test_initializationMessages(uut, midiWrapperMock):
expectedMessages = set(
[(int(i / 8) * 16 + (i % 8), LED_OFF, 0) for i in range(0, 64)] + # clear all
- [(i, LED_GREEN, 0) for i in range(0, 8)] + # volume row
+ [(i, LED_GREEN, 0) for i in range(0, 6)] + # volume row
[(i, LED_YELLOW, 0) for i in range(16, 22)] + # playback rate row
[
(96, LED_RED, 0),