{"id":21853338,"url":"https://github.com/emnudge/rust-wasm-spectrogram","last_synced_at":"2026-05-18T14:33:44.147Z","repository":{"id":235750996,"uuid":"791162812","full_name":"EmNudge/rust-wasm-spectrogram","owner":"EmNudge","description":"https://wasm-spectrogram.pages.dev/","archived":false,"fork":false,"pushed_at":"2024-05-08T16:16:47.000Z","size":42,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-18T04:35:13.013Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EmNudge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-24T07:56:45.000Z","updated_at":"2024-05-08T16:16:51.000Z","dependencies_parsed_at":"2024-05-08T17:43:09.236Z","dependency_job_id":null,"html_url":"https://github.com/EmNudge/rust-wasm-spectrogram","commit_stats":null,"previous_names":["emnudge/rust-spectrogram"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EmNudge/rust-wasm-spectrogram","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmNudge%2Frust-wasm-spectrogram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmNudge%2Frust-wasm-spectrogram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmNudge%2Frust-wasm-spectrogram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmNudge%2Frust-wasm-spectrogram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EmNudge","download_url":"https://codeload.github.com/EmNudge/rust-wasm-spectrogram/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmNudge%2Frust-wasm-spectrogram/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33181101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"ssl_error","status_checked_at":"2026-05-18T09:27:28.300Z","response_time":71,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T01:21:50.506Z","updated_at":"2026-05-18T14:33:44.132Z","avatar_url":"https://github.com/EmNudge.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust Wasm Spectrogram\n\nA test to see how efficient we can get a wasm-based spectrogram build.\n\nYou can view the live demo generated from this project at: https://wasm-spectrogram.pages.dev\n\n## Local Development\n\nI use [wasm-pack](https://github.com/rustwasm/wasm-pack) for the build and [watchexec](https://github.com/watchexec/watchexec/tree/main) to rerun commands.\n```sh\nwatchexec -e rs,toml -- wasm-pack build -d demo/wasm\n```\n\nIn a separate terminal, I run a web server with [serve](https://www.npmjs.com/package/serve)\n```sh\nnpx serve demo\n```\n\n## Compiling\n\nWith wasm-pack, a bunch of optimizations are already enabled. However, our binary still sits around 35KB. We can shrink this down to another 10KB with the following settings:\n\n```sh\nwasm-pack build -d demo/wasm \\\n  -t web --release \\\n  --manifest-path ./Cargo.toml \\\n  -Z build-std=panic_abort,std -Z build-std-features=panic_immediate_abort\n```\n\nThis brings us to ~25KB uncompressed and ~10KB gzipped.\n\nUsing `wasm-pack` also gets us a readme, a license, a `package.json`, and a `.gitignore`. When deploying the demo, I delete these files since I'm serving the whole folder.\n\n```sh\nfind demo/wasm -type f -not -name 'wasm_*' -delete\n```\n\n## Playing With The Demo\n\nA good test file is \"[Where were you a year ago](https://haskinslabs.org/about-us/features-and-demos/sinewave-synthesis/s1spectro)\". It will be cached in your browser, so it's preserved between reloads.\n\nTiming data is available in the console using `console.time()` to see where the bottlenecks in our process might be.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femnudge%2Frust-wasm-spectrogram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femnudge%2Frust-wasm-spectrogram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femnudge%2Frust-wasm-spectrogram/lists"}