Changeset - 6a6ebaa9f992
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 20 months ago 2023-06-03 22:46:46
drewp@bigasterisk.com
use a bcf knob to dial grandMaster
1 file changed with 7 insertions and 0 deletions:
0 comments (0 inline, 0 general)
light9/midifade/midifade.py
Show inline comments
 
@@ -77,58 +77,65 @@ def changePage(g: SyncedGraph, dp: int):
 

	
 
    with g.currentState() as current:
 
        allPages = sorted(current.subjects(RDF.type, L9.FadePage), key=lambda fp: str(fp))
 
        mapping = getGraphMappingNode(current)
 
        curPage = current.value(mapping, L9.outputs)
 
    if curPage is None:
 
        curPage = allPages[0]
 
    idx = allPages.index(curPage)
 
    newIdx = clamp(idx + dp, 0, len(allPages) - 1)
 
    print('change from ', idx, newIdx)
 
    newPage = allPages[newIdx]
 
    setCurMappedPage(g, mapping, newPage)
 

	
 

	
 
def writeHwValueToGraph(graph: SyncedGraph, ctx, fader: URIRef, strength: float):
 
    log.info(f'setFader(fader={fader}, strength={strength:.03f}')
 
    valueLit = decimalLiteral(round(strength, 3))
 
    with graph.currentState() as g:
 
        fadeSet = g.value(fader, L9['setting'])
 
    if fadeSet is None:
 
        raise ValueError(f'fader {fader} has no :setting')
 
    graph.patchObject(ctx, fadeSet, L9['value'], valueLit)
 

	
 

	
 
def changeGrandMaster(graph: SyncedGraph, newValue: float):
 
    graph.patchObject(ctx, L9.grandMaster, L9['value'], decimalLiteral(newValue))
 

	
 

	
 
def onMessage(graph: SyncedGraph, ctx: URIRef, m: Dict):
 
    if m['type'] == 'active_sensing':
 
        return
 
    if m['type'] == 'control_change':
 
        if m['dev'] == 'bcf2000' and m['control'] == 91:
 
            changePage(graph, -1)
 
            return
 
        if m['dev'] == 'bcf2000' and m['control'] == 92:
 
            changePage(graph, 1)
 
            return
 
        if m['dev'] == 'bcf2000' and m['control'] == 8:
 
            changeGrandMaster(graph, clamp(m['value'] / 127 * 1.5, 0, 1))
 
            return
 

	
 
        try:
 
            fader = {
 
                'quneo': {
 
                    44: L9['show/dance2023/fadePage1f0'],
 
                    45: L9['show/dance2023/fadePage1f0'],
 
                    46: L9['show/dance2023/fadePage1f0'],
 
                },
 
                'bcf2000': currentFaders,
 
            }[m['dev']][m['control']]
 
        except KeyError:
 
            log.info(f'unknown control {m}')
 
            return
 
        try:
 
            writeHwValueToGraph(graph, ctx, fader, m['value'] / 127)
 
            _lastSet[m['control']] = m['value']
 
        except ValueError as e:
 
            log.warning(f'{e!r} - ignoring')
 
    else:
 
        log.info(f'unhandled message {m}')
 

	
 

	
 
def reduceToLatestValue(ms: List[Dict]) -> List[Dict]:
 
    merge = {}
0 comments (0 inline, 0 general)