From 84a8ca9d19e60b9926a882156901e8ede9b214e8 Mon Sep 17 00:00:00 2001 From: "Jade (Rose) Rowland" Date: Sun, 19 May 2024 13:04:31 -0400 Subject: [PATCH] filter type can take in number also --- packages/core/controls.mjs | 2 +- packages/superdough/superdough.mjs | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs index 6f18aee7..d5fbcf07 100644 --- a/packages/core/controls.mjs +++ b/packages/core/controls.mjs @@ -755,7 +755,7 @@ export const { bprelease, bpr } = registerControl('bprelease', 'bpr'); /** * Sets the filter type. The 24db filter is more aggressive. More types might be added in the future. * @name ftype - * @param {number | Pattern} type 12db (default) or 24db + * @param {number | Pattern} type 12db (0), ladder (1), or 24db (2) * @example * note("c f g g a c d4").fast(2) * .sound('sawtooth') diff --git a/packages/superdough/superdough.mjs b/packages/superdough/superdough.mjs index b0e29083..2be30f08 100644 --- a/packages/superdough/superdough.mjs +++ b/packages/superdough/superdough.mjs @@ -7,7 +7,7 @@ This program is free software: you can redistribute it and/or modify it under th import './feedbackdelay.mjs'; import './reverb.mjs'; import './vowel.mjs'; -import { clamp, nanFallback } from './util.mjs'; +import { clamp, nanFallback, _mod } from './util.mjs'; import workletsUrl from './worklets.mjs?url'; import { createFilter, gainNode, getCompressor, getWorklet } from './helpers.mjs'; import { map } from 'nanostores'; @@ -251,6 +251,11 @@ export function resetGlobalEffects() { analysers = {}; analysersData = {}; } +const getFilterType = (ftype) => { + ftype = ftype ?? 0; + const filterTypes = ['12db', 'ladder', '24db']; + return typeof ftype === 'number' ? filterTypes[_mod(ftype, filterTypes.length)] : ftype; +}; export const superdough = async (value, t, hapDuration) => { const ac = getAudioContext(); @@ -280,7 +285,7 @@ export const superdough = async (value, t, hapDuration) => { postgain = 1, density = 0.03, // filters - ftype = '12db', + fanchor = 0.5, drive = 0.69, // low pass @@ -387,9 +392,9 @@ export const superdough = async (value, t, hapDuration) => { // gain stage chain.push(gainNode(gain)); + //filter + const ftype = getFilterType(value.ftype); if (cutoff !== undefined) { - // chain.push(getWorklet(ac, 'ladder-processor', { frequency: cutoff, q: resonance, drive: 1 })); - let lp = () => createFilter( ac,