Tone.js/Tone/effect/BitCrusher.worklet.ts
Yotam Mann 9d8bc5fe06 setting params as k-rate
gives much better performance

addresses #672
2020-05-26 21:09:10 -04:00

27 lines
665 B
TypeScript

import "../core/worklet/SingleIOProcessor.worklet";
import { registerProcessor } from "../core/worklet/WorkletGlobalScope";
export const workletName = "bit-crusher";
export const bitCrusherWorklet = /* javascript */`
class BitCrusherWorklet extends SingleIOProcessor {
static get parameterDescriptors() {
return [{
name: "bits",
defaultValue: 12,
minValue: 1,
maxValue: 16,
automationRate: 'k-rate'
}];
}
generate(input, _channel, parameters) {
const step = Math.pow(0.5, parameters.bits - 1);
const val = step * Math.floor(input / step + 0.5);
return val;
}
}
`;
registerProcessor(workletName, bitCrusherWorklet);