From 0655af4d4fbcc50bf6354015489a13bfbad7ef9b Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 17 Jan 2024 17:35:35 +0100 Subject: [PATCH] add pcurve --- packages/core/controls.mjs | 1 + packages/superdough/helpers.mjs | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs index 83499300..08037b1a 100644 --- a/packages/core/controls.mjs +++ b/packages/core/controls.mjs @@ -897,6 +897,7 @@ const generic_params = [ ['psustain', 'psus'], ['prelease', 'prel'], ['penv'], + ['pcurve'], ['panchor'], // TODO: https://tidalcycles.org/docs/configuration/MIDIOSC/control-voltage/#gate ['gate', 'gat'], diff --git a/packages/superdough/helpers.mjs b/packages/superdough/helpers.mjs index 797d6db1..a56d985a 100644 --- a/packages/superdough/helpers.mjs +++ b/packages/superdough/helpers.mjs @@ -145,6 +145,7 @@ export function drywet(dry, wet, wetAmount = 0) { return mix; } +let curves = ['linear', 'exponential']; export function getPitchEnvelope(param, value, t, holdEnd) { if (value.penv) { let [pattack, pdecay, psustain, prelease] = getADSRValues([ @@ -157,7 +158,8 @@ export function getPitchEnvelope(param, value, t, holdEnd) { const cents = value.penv * 100; // penv is in semitones const min = 0 - cents * panchor; const max = cents - cents * panchor; - getParamADSR(param, pattack, pdecay, psustain, prelease, min, max, t, holdEnd, 'linear'); + const curve = curves[value.pcurve ?? 0]; + getParamADSR(param, pattack, pdecay, psustain, prelease, min, max, t, holdEnd, curve); } }