blob: 184b9c850d24c98b10b32a2c89d4ded393f2efd3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import mido
from collections.abc import Callable
from . import handlers
from .solo_tool import SoloTool
class ActitionController:
class _MidoMidiWrapper:
def __init__(self):
self._callback = None
self._inPort = mido.open_input("f_midi")
self._inPort.callback = self._midoCallback
def setCallback(self, callback: Callable[[int, int], None]) -> None:
self._callback = callback
def _midoCallback(msg: mido.Message) -> None:
if msg.type != "control_change":
return
if self._callback:
self._callback(msg.control, msg.channel)
def __init__(self, midiWrapperOverride=None):
self._handlers = {}
if midiWrapperOverride:
self._midiWrapper = midiWrapperOverride
else:
self._midiWrapper = ActitionController._MidoMidiWrapper()
self._midiWrapper.setCallback(self._callback)
def _callback(self, control: int, channel: int) -> None:
if channel != 15:
return
if control in self._handlers:
self._handlers[control]()
def setSoloTool(self, soloTool: SoloTool) -> None:
self._handlers = {
102: handlers.seekAbsolute(soloTool, 0.0),
103: handlers.positionToKeyPoint(soloTool),
104: soloTool.jump,
105: handlers.playPause(soloTool)
}
|