Printable Spectrogram is a fully client-side web application that generates high-resolution spectrograms comparable in configurability to librosa. It supports real-time audio input and allows publication-quality annotated exports suitable for academic papers and presentations.
No server, no backend—everything runs in the browser.
Creating publication-quality spectrograms typically requires:
I wanted a tool that does all of this in the browser, with real-time preview and direct SVG/PNG export.
n_fft (1024 / 2048 / 4096)hop_lengthThis project follows Clean Architecture principles with a Test-Driven Development approach:
┌─────────────────────────────────────────┐
│ Presentation Layer (React UI) │
├─────────────────────────────────────────┤
│ Use Case Layer (Application) │
├─────────────────────────────────────────┤
│ Domain Layer (Business Logic) │
├─────────────────────────────────────────┤
│ Infrastructure Layer (WASM, Audio I/O) │
└─────────────────────────────────────────┘
.
├── src/
│ ├── domain/ # Pure business logic, entities, interfaces
│ ├── usecases/ # Application orchestration
│ ├── infrastructure/ # External interfaces (WASM, audio, canvas)
│ └── presentation/ # React components
├── rust-dsp/ # Rust WASM DSP core
└── tests/ # Integration tests
Heavy DSP operations like STFT require significant computation. By implementing the DSP core in Rust and compiling to WebAssembly:
Currently in active development. Core infrastructure is complete, with ongoing work on: