Changeset - bbd79e655114
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 20 months ago 2023-06-02 01:32:03
drewp@bigasterisk.com
don't let ports get deleted
1 file changed with 6 insertions and 2 deletions:
0 comments (0 inline, 0 general)
light9/midifade/midifade.py
Show inline comments
 
@@ -42,67 +42,71 @@ def onMessage(graph: SyncedGraph, ctx: U
 
                    46: L9['show/dance2023/fadePage1f0'],
 
                },
 
                'bcf2000': {
 
                    81: L9['show/dance2023/fadePage1f0'],
 
                    82: L9['show/dance2023/fadePage1f1'],
 
                    83: L9['show/dance2023/fadePage1f2'],
 
                    84: L9['show/dance2023/fadePage1f3'],
 
                    85: L9['show/dance2023/fadePage1f4'],
 
                    86: L9['show/dance2023/fadePage1f5'],
 
                    87: L9['show/dance2023/fadePage1f6'],
 
                    88: L9['show/dance2023/fadePage1f7'],
 
                }
 
            }[m['dev']][m['control']]
 
        except KeyError:
 
            log.info(f'unknown control {m}')
 
            return
 
        setFader(graph, ctx, fader, m['value'] / 127)
 
    else:
 
        log.info(f'unhandled message {m}')
 

	
 

	
 
async def main():
 
    logging.getLogger('autodepgraphapi').setLevel(logging.INFO)
 
    logging.getLogger('syncedgraph').setLevel(logging.INFO)
 
    logging.getLogger('graphedit').setLevel(logging.INFO)
 

	
 
    graph = SyncedGraph(networking.rdfdb.url, "midifade")
 
    ctx = URIRef(showUri() + '/fade')
 

	
 
    msgs = asyncio.Queue()
 
    loop = asyncio.get_event_loop()
 

	
 
    def onMessageMidoThread(dev, message):
 
        loop.call_soon_threadsafe(msgs.put_nowait, message.dict() | {'dev': dev})
 

	
 
    async def reader():
 
        while True:
 
            recents = [await msgs.get()]
 
            while not msgs.empty():
 
                recents.append(msgs.get_nowait())
 
            try:
 
                onMessage(graph, ctx, recents[-1])
 
            except Exception as e:
 
                traceback.print_exc()
 
                log.warning("error in onMessage- continuing anyway")
 
            await asyncio.sleep(1 / MAX_SEND_RATE)
 

	
 
    asyncio.create_task(reader())
 

	
 
    openPorts = []
 
    for inputName in mido.get_input_names():
 
        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=}')
 
        port = mido.open_input(inputName, callback=lambda message: onMessageMidoThread(dev, message))
 
        openPorts.append(
 
            mido.open_input(#
 
            inputName,#
 
             callback=lambda message, dev=dev: onMessageMidoThread(dev, message))
 
        )
 

	
 
    while True:
 
        await asyncio.sleep(1)
 

	
 

	
 
if __name__ == '__main__':
 
    asyncio.run(main())
0 comments (0 inline, 0 general)