mirror of
https://codeberg.org/uzu/strudel
synced 2026-07-13 06:19:33 -04:00
Tweak cc init
This commit is contained in:
+15
-11
@@ -497,20 +497,24 @@ class MidiInput {
|
||||
this._refs = {};
|
||||
this._refsByChan = {};
|
||||
|
||||
this.cc = (cc, chan) => {
|
||||
const initialState = this._loadState(chan);
|
||||
const initialValue = initialState[cc] || 0;
|
||||
|
||||
if (chan !== undefined) {
|
||||
return ref(() => this._refsByChan[cc]?.[chan] || initialValue);
|
||||
}
|
||||
return ref(() => this._refs[cc] || initialValue);
|
||||
};
|
||||
|
||||
const midiListener = this._onMidiMessage.bind(this);
|
||||
device.addListener('midimessage', midiListener);
|
||||
}
|
||||
|
||||
createCC(cc, chan) {
|
||||
if (chan !== undefined && !(chan in this._refsByChan)) {
|
||||
this._refsByChan[chan] = {};
|
||||
}
|
||||
|
||||
const lookupMap = chan === undefined ? this._refs : this._refsByChan[chan];
|
||||
if (!(cc in lookupMap)) {
|
||||
const initialState = this._loadState(chan);
|
||||
lookupMap[cc] = initialState[cc] || 0;
|
||||
}
|
||||
|
||||
return ref(() => lookupMap[cc]);
|
||||
}
|
||||
|
||||
_onMidiMessage(e) {
|
||||
const ccNum = e.dataBytes[0];
|
||||
const v = e.dataBytes[1];
|
||||
@@ -593,5 +597,5 @@ export async function midin(input) {
|
||||
);
|
||||
}
|
||||
|
||||
return instance.cc;
|
||||
return instance.createCC.bind(instance);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user