geedback

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

commit 503422f5b12bae3661f2d47120f20942fcb34554
parent 69050f259ffc28cc1961a846382f5aaad06caab2
Author: minerva-jupiter <ryouturn@gmail.com>
Date:   Sat,  2 May 2026 13:38:57 +0900

"feat(geedback-dsp): Add WebAssembly DSP module with JS/TS bindings"
success to copy to clip

Diffstat:
Ageedback-dsp/pkg/geedback_dsp.d.ts | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Ageedback-dsp/pkg/geedback_dsp.js | 202+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ageedback-dsp/pkg/geedback_dsp_bg.wasm | 0
Ageedback-dsp/pkg/geedback_dsp_bg.wasm.d.ts | 12++++++++++++
Ageedback-dsp/pkg/package.json | 16++++++++++++++++
5 files changed, 280 insertions(+), 0 deletions(-)

diff --git a/geedback-dsp/pkg/geedback_dsp.d.ts b/geedback-dsp/pkg/geedback_dsp.d.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ +/* eslint-disable */ + +export class GeedbackProcessor { + free(): void; + [Symbol.dispose](): void; + constructor(); + process(): number; + set_accel(x: number, y: number, z: number): void; + set_gyro(a: number, b: number, g: number): void; + set_orient(a: number, b: number, g: number): void; + set_sample_rate(sample_rate: number): void; +} + +export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; + +export interface InitOutput { + readonly memory: WebAssembly.Memory; + readonly __wbg_geedbackprocessor_free: (a: number, b: number) => void; + readonly geedbackprocessor_new: () => number; + readonly geedbackprocessor_process: (a: number) => number; + readonly geedbackprocessor_set_accel: (a: number, b: number, c: number, d: number) => void; + readonly geedbackprocessor_set_gyro: (a: number, b: number, c: number, d: number) => void; + readonly geedbackprocessor_set_orient: (a: number, b: number, c: number, d: number) => void; + readonly geedbackprocessor_set_sample_rate: (a: number, b: number) => void; + readonly __wbindgen_externrefs: WebAssembly.Table; + readonly __wbindgen_start: () => void; +} + +export type SyncInitInput = BufferSource | WebAssembly.Module; + +/** + * Instantiates the given `module`, which can either be bytes or + * a precompiled `WebAssembly.Module`. + * + * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. + * + * @returns {InitOutput} + */ +export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; + +/** + * If `module_or_path` is {RequestInfo} or {URL}, makes a request and + * for everything else, calls `WebAssembly.instantiate` directly. + * + * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated. + * + * @returns {Promise<InitOutput>} + */ +export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>; diff --git a/geedback-dsp/pkg/geedback_dsp.js b/geedback-dsp/pkg/geedback_dsp.js @@ -0,0 +1,202 @@ +/* @ts-self-types="./geedback_dsp.d.ts" */ + +export class GeedbackProcessor { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + GeedbackProcessorFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_geedbackprocessor_free(ptr, 0); + } + constructor() { + const ret = wasm.geedbackprocessor_new(); + this.__wbg_ptr = ret; + GeedbackProcessorFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @returns {number} + */ + process() { + const ret = wasm.geedbackprocessor_process(this.__wbg_ptr); + return ret; + } + /** + * @param {number} x + * @param {number} y + * @param {number} z + */ + set_accel(x, y, z) { + wasm.geedbackprocessor_set_accel(this.__wbg_ptr, x, y, z); + } + /** + * @param {number} a + * @param {number} b + * @param {number} g + */ + set_gyro(a, b, g) { + wasm.geedbackprocessor_set_gyro(this.__wbg_ptr, a, b, g); + } + /** + * @param {number} a + * @param {number} b + * @param {number} g + */ + set_orient(a, b, g) { + wasm.geedbackprocessor_set_orient(this.__wbg_ptr, a, b, g); + } + /** + * @param {number} sample_rate + */ + set_sample_rate(sample_rate) { + wasm.geedbackprocessor_set_sample_rate(this.__wbg_ptr, sample_rate); + } +} +if (Symbol.dispose) GeedbackProcessor.prototype[Symbol.dispose] = GeedbackProcessor.prototype.free; +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg___wbindgen_throw_9c75d47bf9e7731e: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbindgen_init_externref_table: function() { + const table = wasm.__wbindgen_externrefs; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + }, + }; + return { + __proto__: null, + "./geedback_dsp_bg.js": import0, + }; +} + +const GeedbackProcessorFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_geedbackprocessor_free(ptr, 1)); + +function getStringFromWasm0(ptr, len) { + return decodeText(ptr >>> 0, len); +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +let wasmModule, wasmInstance, wasm; +function __wbg_finalize_init(instance, module) { + wasmInstance = instance; + wasm = instance.exports; + wasmModule = module; + cachedUint8ArrayMemory0 = null; + wasm.__wbindgen_start(); + return wasm; +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + const validResponse = module.ok && expectedResponseType(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { throw e; } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } + + function expectedResponseType(type) { + switch (type) { + case 'basic': case 'cors': case 'default': return true; + } + return false; + } +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (module !== undefined) { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + const instance = new WebAssembly.Instance(module, imports); + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (module_or_path !== undefined) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (module_or_path === undefined) { + module_or_path = new URL('geedback_dsp_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync, __wbg_init as default }; 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 @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +export const memory: WebAssembly.Memory; +export const __wbg_geedbackprocessor_free: (a: number, b: number) => void; +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; +export const geedbackprocessor_set_gyro: (a: number, b: number, c: number, d: number) => void; +export const geedbackprocessor_set_orient: (a: number, b: number, c: number, d: number) => void; +export const geedbackprocessor_set_sample_rate: (a: number, b: number) => void; +export const __wbindgen_externrefs: WebAssembly.Table; +export const __wbindgen_start: () => void; diff --git a/geedback-dsp/pkg/package.json b/geedback-dsp/pkg/package.json @@ -0,0 +1,15 @@ +{ + "name": "geedback-dsp", + "type": "module", + "version": "0.1.0", + "files": [ + "geedback_dsp_bg.wasm", + "geedback_dsp.js", + "geedback_dsp.d.ts" + ], + "main": "geedback_dsp.js", + "types": "geedback_dsp.d.ts", + "sideEffects": [ + "./snippets/*" + ] +}+ \ No newline at end of file