Files @ 0761cdd5bff0
Branch filter:

Location: light9/src/light9/midifade/mididevs.py

drewp@bigasterisk.com
fix delay on setting midi, so it doesn't grab faders when you're sliding them
import logging

import mido
from light9.midifade.eventqueue import EventQueue
from light9.midifade.pages import Pages
from light9.midifade.writeback import WriteBackFaders
from rdfdb.syncedgraph.syncedgraph import SyncedGraph

log = logging.getLogger()

_openPorts = []


def listenToMidiInputs(q: EventQueue):
    """put midi events on EventQueue (presumably mido does this in a bg
    thread)"""

    for inputName in mido.get_input_names():  # type: ignore
        if inputName.startswith('Keystation'):
            dev = "keystation"
        elif inputName.startswith('BCF2000'):
            dev = 'bcf2000'
        elif inputName.startswith('QUNEO'):
            dev = 'quneo'
        else:
            continue
        log.info(f'listening on input {inputName} {dev=}')
        cb = q.callbackFor(dev)
        _openPorts.append(mido.open_input(  # type: ignore
            inputName,  #
            callback=cb))


def connectToMidiOutput(graph: SyncedGraph, pages: Pages, _lastSet: dict[int, int], _lastMidiInTime: dict[int, float]):
    for outputName in mido.get_output_names():  # type: ignore
        if outputName.startswith('BCF2000'):
            bcf_out = mido.open_output(outputName)  # type: ignore
            wb = WriteBackFaders(graph, pages, bcf_out, _lastSet, _lastMidiInTime, {})
            graph.addHandler(wb.onGraphPatch)
            break