diff --git a/packages/superdough-wasm/.gitignore b/packages/superdough-wasm/.gitignore new file mode 100644 index 000000000..4f0e5318e --- /dev/null +++ b/packages/superdough-wasm/.gitignore @@ -0,0 +1 @@ +rustsaw/target \ No newline at end of file diff --git a/packages/superdough-wasm/README.md b/packages/superdough-wasm/README.md new file mode 100644 index 000000000..b55e54e53 --- /dev/null +++ b/packages/superdough-wasm/README.md @@ -0,0 +1,27 @@ +# superdough-wasm + +This is just a very early experiment to find out how to run wasm in an AudioWorklet. +WASM can be compiled from several languages, which are tested here.. + +## zig + + + +```sh +# (re)compile dsp.zig +cd zigsaw +zig build-lib zigsaw.zig -target wasm32-freestanding -dynamic -rdynamic -O ReleaseSmall +# run server +npx http-server .. -o +``` + +## rust + + + +```sh +# cargo install wasm-pack +cd rustsaw +wasm-pack build --target bundler +npx http-server .. -o +``` diff --git a/packages/zig/index.html b/packages/superdough-wasm/index.html similarity index 82% rename from packages/zig/index.html rename to packages/superdough-wasm/index.html index 35c23f255..9b4002c4a 100644 --- a/packages/zig/index.html +++ b/packages/superdough-wasm/index.html @@ -1,7 +1,7 @@ - ZIG / WASM Demo + WASM AudioWorklet Demo diff --git a/packages/zig/main.js b/packages/superdough-wasm/main.js similarity index 85% rename from packages/zig/main.js rename to packages/superdough-wasm/main.js index 3feefcf9d..4b76fb418 100644 --- a/packages/zig/main.js +++ b/packages/superdough-wasm/main.js @@ -5,7 +5,8 @@ document.getElementById('play').addEventListener('click', async () => { await ac.audioWorklet.addModule('./worklet.js'); const node = new AudioWorkletNode(ac, 'saw-processor'); - let res = await fetch('./dsp.wasm'); + let res = await fetch('./zigsaw/zigsaw.wasm'); + //let res = await fetch('./rustsaw/pkg/rustsaw_bg.wasm'); const buffer = await res.arrayBuffer(); node.port.onmessage = (e) => { if (e.data === 'OK') { diff --git a/packages/superdough-wasm/rustsaw/Cargo.lock b/packages/superdough-wasm/rustsaw/Cargo.lock new file mode 100644 index 000000000..b5a16f217 --- /dev/null +++ b/packages/superdough-wasm/rustsaw/Cargo.lock @@ -0,0 +1,123 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustsaw" +version = "0.1.0" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" diff --git a/packages/superdough-wasm/rustsaw/Cargo.toml b/packages/superdough-wasm/rustsaw/Cargo.toml new file mode 100644 index 000000000..a59f89234 --- /dev/null +++ b/packages/superdough-wasm/rustsaw/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "rustsaw" +version = "0.1.0" +authors = ["Your Name "] +description = "A sample project with wasm-pack" +license = "MIT/Apache-2.0" +edition = "2018" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +wasm-bindgen = "0.2" diff --git a/packages/superdough-wasm/rustsaw/src/lib.rs b/packages/superdough-wasm/rustsaw/src/lib.rs new file mode 100644 index 000000000..6f119c68e --- /dev/null +++ b/packages/superdough-wasm/rustsaw/src/lib.rs @@ -0,0 +1,6 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn saw(t: f64, f: f64) -> f64 { + return (((f * t * 1.0) % 1.0) - 0.5) * 2.0; +} diff --git a/packages/zig/worklet.js b/packages/superdough-wasm/worklet.js similarity index 100% rename from packages/zig/worklet.js rename to packages/superdough-wasm/worklet.js diff --git a/packages/superdough-wasm/zigsaw/zigsaw.wasm b/packages/superdough-wasm/zigsaw/zigsaw.wasm new file mode 100755 index 000000000..c2928a3e4 Binary files /dev/null and b/packages/superdough-wasm/zigsaw/zigsaw.wasm differ diff --git a/packages/zig/dsp.zig b/packages/superdough-wasm/zigsaw/zigsaw.zig similarity index 100% rename from packages/zig/dsp.zig rename to packages/superdough-wasm/zigsaw/zigsaw.zig diff --git a/packages/zig/README.md b/packages/zig/README.md deleted file mode 100644 index 759945eb6..000000000 --- a/packages/zig/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# zig testing ground - - - -```sh -# (re)compile dsp.zig -zig build-lib dsp.zig -target wasm32-freestanding -dynamic -rdynamic -# run server -npx http-server -o -``` diff --git a/packages/zig/dsp.wasm b/packages/zig/dsp.wasm deleted file mode 100755 index b90185a38..000000000 Binary files a/packages/zig/dsp.wasm and /dev/null differ