geedback

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 33611b156035801e0c93d1abf4f82e2bdcd51d90
parent 503422f5b12bae3661f2d47120f20942fcb34554
Author: minerva-jupiter <ryouturn@gmail.com>
Date:   Sat,  2 May 2026 13:45:05 +0900

"feat(dsp): Expose latest processed output"
success to copy to clip

Diffstat:
Mgeedback-dsp/pkg/geedback_dsp.d.ts | 2++
Mgeedback-dsp/pkg/geedback_dsp.js | 7+++++++
Mgeedback-dsp/pkg/geedback_dsp_bg.wasm | 0
Mgeedback-dsp/pkg/geedback_dsp_bg.wasm.d.ts | 1+
Mgeedback-dsp/src/lib.rs | 10+++++++++-
Msrc/main.ts | 5+----
6 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/geedback-dsp/pkg/geedback_dsp.d.ts b/geedback-dsp/pkg/geedback_dsp.d.ts @@ -4,6 +4,7 @@ export class GeedbackProcessor { free(): void; [Symbol.dispose](): void; + get_latest_output(): number; constructor(); process(): number; set_accel(x: number, y: number, z: number): void; @@ -17,6 +18,7 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl export interface InitOutput { readonly memory: WebAssembly.Memory; readonly __wbg_geedbackprocessor_free: (a: number, b: number) => void; + readonly geedbackprocessor_get_latest_output: (a: number) => number; readonly geedbackprocessor_new: () => number; readonly geedbackprocessor_process: (a: number) => number; readonly geedbackprocessor_set_accel: (a: number, b: number, c: number, d: number) => void; diff --git a/geedback-dsp/pkg/geedback_dsp.js b/geedback-dsp/pkg/geedback_dsp.js @@ -11,6 +11,13 @@ export class GeedbackProcessor { const ptr = this.__destroy_into_raw(); wasm.__wbg_geedbackprocessor_free(ptr, 0); } + /** + * @returns {number} + */ + get_latest_output() { + const ret = wasm.geedbackprocessor_get_latest_output(this.__wbg_ptr); + return ret; + } constructor() { const ret = wasm.geedbackprocessor_new(); this.__wbg_ptr = ret; diff --git a/geedback-dsp/pkg/geedback_dsp_bg.wasm b/geedback-dsp/pkg/geedback_dsp_bg.wasm Binary files differ. diff --git a/geedback-dsp/pkg/geedback_dsp_bg.wasm.d.ts b/geedback-dsp/pkg/geedback_dsp_bg.wasm.d.ts @@ -2,6 +2,7 @@ /* eslint-disable */ export const memory: WebAssembly.Memory; export const __wbg_geedbackprocessor_free: (a: number, b: number) => void; +export const geedbackprocessor_get_latest_output: (a: number) => number; export const geedbackprocessor_new: () => number; export const geedbackprocessor_process: (a: number) => number; export const geedbackprocessor_set_accel: (a: number, b: number, c: number, d: number) => void; diff --git a/geedback-dsp/src/lib.rs b/geedback-dsp/src/lib.rs @@ -18,6 +18,7 @@ pub struct GeedbackProcessor { phase_z: f64, sample_rate: f64, + latest_output: f64, } #[wasm_bindgen] @@ -38,9 +39,14 @@ impl GeedbackProcessor { phase_y: 0.0, phase_z: 0.0, sample_rate: 44100.0, + latest_output: 0.0, } } + pub fn get_latest_output(&self) -> f64 { + self.latest_output + } + pub fn set_sample_rate(&mut self, sample_rate: f64) { self.sample_rate = sample_rate; } @@ -80,6 +86,8 @@ impl GeedbackProcessor { let out_z = (self.phase_z * 2.0 * std::f64::consts::PI).sin(); // Mix output (sum of 3 oscillators) - (out_x + out_y + out_z) / 3.0 + let out = (out_x + out_y + out_z) / 3.0; + self.latest_output = out; + out } } diff --git a/src/main.ts b/src/main.ts @@ -100,13 +100,10 @@ const startAudio = async () => { // UI Update Loop const updateUI = () => { if (processor) { - // Just a snapshot for UI - // In a real DSP, we wouldn't call process() again here, - // but for visualization of "current" state it's fine for this test. + wasmOutput.textContent = processor.get_latest_output().toFixed(6); } requestAnimationFrame(updateUI); }; updateUI(); }; - startBtn.addEventListener("click", startAudio);