From c805bd9a3bbcfa0cbc4e0a04a4ba33f64aee0503 Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 25 Feb 2023 15:29:35 +0000 Subject: [PATCH] change controls to be functions rather than patterns --- packages/core/controls.mjs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs index c07045ffd..8577e7fc6 100644 --- a/packages/core/controls.mjs +++ b/packages/core/controls.mjs @@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see . */ -import { Pattern, sequence, registerControl } from './pattern.mjs'; +import { Pattern, sequence, register } from './pattern.mjs'; const controls = {}; const generic_params = [ @@ -828,18 +828,12 @@ const generic_params = [ // TODO: slice / splice https://www.youtube.com/watch?v=hKhPdO0RKDQ&list=PL2lW1zNIIwj3bDkh-Y3LUGDuRcoUigoDs&index=13 -const makeControl = function (name) { - const func = (...pats) => sequence(...pats).withValue((x) => ({ [name]: x })); - const setter = function (...pats) { - if (!pats.length) { - return this.fmap((value) => ({ [name]: value })); - } - return this.set(func(...pats)); - }; - Pattern.prototype[name] = setter; - registerControl(name, func); - return func; -}; +controls.play = {} + +const makeControl = name => { + controls.play[name] = pat => pat.fmap(v => ({[name]: v})) + return register(name, (v, pat) => pat.fmap(o => ({...o, ...{[name]: v}}))) +} generic_params.forEach(([type, name, description]) => { controls[name] = makeControl(name);