adjust latency

This commit is contained in:
Jade (Rose) Rowland 2024-04-06 17:40:08 -04:00
parent 0f24e97855
commit 0a6373f64c
4 changed files with 3 additions and 6 deletions

View File

@ -34,7 +34,6 @@ function safeEval(str, options = {}) {
str = `(async ()=>${str})()`;
}
const body = `"use strict";return (${str})`;
console.log(body);
return Function(body)();
}
@ -49,6 +48,5 @@ export const evaluate = async (code, transpiler) => {
// if no transpiler is given, we expect a single instruction (!wrapExpression)
const options = { wrapExpression: !!transpiler };
let evaluated = await safeEval(code, options);
console.log(evaluated);
return { mode: 'javascript', pattern: evaluated, meta };
};

View File

@ -9,7 +9,7 @@ Pattern.prototype.midi = function (output) {
return this.onTrigger((time_deprecate, hap, currentTime, cps, targetTime) => {
let { note, nrpnn, nrpv, ccn, ccv, velocity = 0.9, gain = 1 } = hap.value;
//magic number to get audio engine to line up, can probably be calculated somehow
const latency = 0.03;
const latency = 0.034;
const offset = (targetTime - currentTime + latency) * 1000;
velocity = Math.floor(gain * velocity * 100);
const duration = Math.floor((hap.duration.valueOf() / cps) * 1000 - 10);

View File

@ -120,7 +120,7 @@ Pattern.prototype.midi = function (output) {
const device = getDevice(output, WebMidi.outputs);
hap.ensureObjectValue();
//magic number to get audio engine to line up, can probably be calculated somehow
const latency = 0.03;
const latency = 0.034;
// passing a string with a +num into the webmidi api adds an offset to the current time https://webmidijs.org/api/classes/Output
const timeOffsetString = `+${(targetTime - currentTime + latency) * 1000}`;

View File

@ -17,9 +17,8 @@ const hap2value = (hap) => {
export const webaudioOutputTrigger = (t, hap, ct, cps) => superdough(hap2value(hap), t - ct, hap.duration / cps, cps);
// uses more precise, absolute t if available, see https://github.com/tidalcycles/strudel/pull/1004
export const webaudioOutput = (hap, deadline, hapDuration, cps, t) => {
export const webaudioOutput = (hap, deadline, hapDuration, cps, t) =>
superdough(hap2value(hap), t ? `=${t}` : deadline, hapDuration);
};
Pattern.prototype.webaudio = function () {
return this.onTrigger(webaudioOutputTrigger);