From 26793aec910ad17e53a6b8bd7bb8158708bbc51d Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 10 Jan 2024 18:27:40 +0100 Subject: [PATCH] frequency control (bad) --- packages/zig/dsp.wasm | Bin 368308 -> 368313 bytes packages/zig/dsp.zig | 4 ++-- packages/zig/index.html | 1 + packages/zig/main.js | 4 ++++ packages/zig/worklet.js | 5 ++++- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/zig/dsp.wasm b/packages/zig/dsp.wasm index 67e9a5c2da122dd1cd36f64c6bc43b8af16b9ba7..b90185a38f5965613b76e1c2bea8001a7d561c75 100755 GIT binary patch delta 568 zcmb`DODKd<6vywm=YBI^7$%QNZ0^t`M9S%0&_W)xItkBPcK?ovp z#v;Wf-6@U7z=|O)2q7wy@=(bf1v7Yy-9X7DjvGRX(sZ$%9-(+>Dw0C7I%FhJhq?sG zB8#&iwsolG_C&&(Su->|XpXwayd%EEN)H+k+n&H>iz`O`;+~21O0w{U1#c~k*?EK= zlKy7;Sy4KhcV;MO1`PQi9u3dH7Cfr@Ss=H`Xk!XG;8rc9U>6`6Zg>UN@XAM~>E?zX zt4L1#SV8jgEzSTQP<9tcpXHlrX*RK!imN8JlAN1JgH-1fUd)H$WVMj?CW%I(i|~@; zX(CLl5jRAFcqV@0pZbhH2S(qMc&9d>&;{!94a>9iuhA*8qOL!%Peg5T)Ro63jDKnP5@aQcZ4^&yq168l5^9Ao#G30zH{vGgTscZ73EfSUuW* z0<&E{T@g$u(fJv`y{|g%ynVD~)dc(djDhaK(NOqyHGn$A4+d~WD~nSJ<%!{DC1)&+ zhF2P6P9C+Nl9D&)bx5xRf?>FhEltBdyvc?cpb-A3rJslDYGdLP3gz}YtN|nz zd`XbLBo9qd(oO`cNG>8+L6Z6r?*yKZ_cW2YD>5jpNF+!;tcW&0%F%vsko zX9+FOL->exVw}b`iA7?AcpzSgB=Kwilvnz9LwWjv{#-5HEX8A6_t++%ztE}3p&aF0 r%`4LEyK1gos2=XmSF2=eff7EWuN~bf?kFVWWmsLNt;yh++FAV#Sdfn` diff --git a/packages/zig/dsp.zig b/packages/zig/dsp.zig index 74a946cbb..c9b4fb8c0 100644 --- a/packages/zig/dsp.zig +++ b/packages/zig/dsp.zig @@ -1,5 +1,5 @@ const std = @import("std"); -export fn saw(t: f64) f64 { - return ((@mod(110.0 * t, 1.0)) - 0.5) * 2.0; +export fn saw(t: f64, f: f64) f64 { + return ((@mod(f * t, 1.0)) - 0.5) * 2.0; } diff --git a/packages/zig/index.html b/packages/zig/index.html index d9af426e5..35c23f255 100644 --- a/packages/zig/index.html +++ b/packages/zig/index.html @@ -5,6 +5,7 @@ + diff --git a/packages/zig/main.js b/packages/zig/main.js index fda63ac84..3feefcf9d 100644 --- a/packages/zig/main.js +++ b/packages/zig/main.js @@ -14,4 +14,8 @@ document.getElementById('play').addEventListener('click', async () => { }; node.port.postMessage({ webassembly: buffer }); node.connect(ac.destination); + + document.getElementById('freq').addEventListener('input', async (e) => { + node.port.postMessage({ frequency: e.target.value }); + }); }); diff --git a/packages/zig/worklet.js b/packages/zig/worklet.js index d4709ccef..b926bdb4b 100644 --- a/packages/zig/worklet.js +++ b/packages/zig/worklet.js @@ -2,6 +2,7 @@ class SawProcessor extends AudioWorkletProcessor { constructor() { super(); this.t = 0; // samples passed + this.f = 110; this.port.onmessage = (e) => { const key = Object.keys(e.data)[0]; const value = e.data[key]; @@ -12,6 +13,8 @@ class SawProcessor extends AudioWorkletProcessor { this.port.postMessage('OK'); }); break; + case 'frequency': + this.f = value; } }; } @@ -22,7 +25,7 @@ class SawProcessor extends AudioWorkletProcessor { for (let i = 0; i < output[0].length; i++) { let t = this.t; let out = 0; - out = this.api.saw(t / 44100, 220); + out = this.api.saw(t / 44100, this.f); output.forEach((channel) => { channel[i] = out; });