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);