diff --git a/packages/desktopbridge/midibridge.mjs b/packages/desktopbridge/midibridge.mjs index 065f9839..4bb9da29 100644 --- a/packages/desktopbridge/midibridge.mjs +++ b/packages/desktopbridge/midibridge.mjs @@ -6,9 +6,11 @@ const OFF_MESSAGE = 0x80; const CC_MESSAGE = 0xb0; Pattern.prototype.midi = function (output) { - return this.onTrigger((time, hap, currentTime, cps) => { + return this.onTrigger((time, hap, currentTime, cps, targetTime) => { let { note, nrpnn, nrpv, ccn, ccv, velocity = 0.9, gain = 1 } = hap.value; - const offset = (time - currentTime) * 1000; + //magic number to get audio engine to line up, can probably be calculated somehow + const latency = 0.03; + const offset = (targetTime - currentTime + latency) * 1000; velocity = Math.floor(gain * velocity * 100); const duration = Math.floor((hap.duration.valueOf() / cps) * 1000 - 10); const roundedOffset = Math.round(offset); diff --git a/packages/midi/midi.mjs b/packages/midi/midi.mjs index 68c65fe2..ca1cc9b5 100644 --- a/packages/midi/midi.mjs +++ b/packages/midi/midi.mjs @@ -112,7 +112,7 @@ Pattern.prototype.midi = function (output) { logger(`Midi device disconnected! Available: ${getMidiDeviceNamesString(outputs)}`), }); - return this.onTrigger((time, hap, currentTime, cps, targetTime) => { + return this.onTrigger((time_deprecate, hap, currentTime, cps, targetTime) => { if (!WebMidi.enabled) { console.log('not enabled'); return;