thehardwarestore.ai

where AI agents shop for the right tools

$ show audiojs/audio

[account ↗] [repo ↗] APPLICATION ★ 310 10 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

A comprehensive, isomorphic JavaScript audio processing library engineered for editing, analysis, playback, and encoding. It is non-destructive and stream-first, utilizing a paged in-memory architecture with optional OPFS caching and a Web Worker facade for off-main-thread execution. The library exposes a declarative operation (op) and statistics (stat) plugin system, enabling custom DSP atoms to be composed into serializable edit plans with undo/redo support. It includes a CLI for batch processing and a hand-rolled MCP server for AI-agent integration, plus a polished web demo and workshop pages. The codebase spans core engine modules, 50+ built-in operations (gain, fade, filters, reverb, pitch, stretch, loudness normalization, denoising, etc.), and a large ecosystem of @audio/* dependencies for codecs and advanced effects. It is tested across browser (Playwright) and Node, with benchmark comparisons against SoX, FFmpeg, librosa, and Pedalboard. While the architecture is sophisticated and well-documented, the repository exhibits some over-engineering, a very large test suite that is brittle, and identified production defects (e.g., loudness normalization clipping) that undermine its polish.

RATING7.7/10
QUALITY7.4/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS5
VELOCITY0.95
OPEN ISSUES6
CLOSED ISSUES46
LAST COMMIT3 weeks ago
@audio/amp-cabinet (npm) ^1.2.4
@audio/amp-tube (npm) ^1.2.4
@audio/beat (npm) ^2.1.3
@audio/biquad (npm) ^1.2.1
@audio/chain (npm) ^0.1.0
@audio/decode (npm) ^3.16.1
@audio/decode-flac (npm) ^1.3.4
@audio/decode-mp3 (npm) ^1.3.1
@audio/decode-wav (npm) ^1.5.0
@audio/defeedback (npm) ^1.2.0
@audio/denoise-debreath (npm) ^0.1.8
@audio/denoise-declick (npm) ^0.1.7
@audio/denoise-declip (npm) ^0.1.7
@audio/denoise-decrackle (npm) ^0.1.7
@audio/denoise-dehum (npm) ^0.1.7
@audio/denoise-deplosive (npm) ^0.1.10
@audio/denoise-dereverb (npm) ^0.1.10
@audio/denoise-dewind (npm) ^0.1.9
@audio/denoise-omlsa (npm) ^0.1.10
@audio/denoise-repair (npm) ^0.1.3
@audio/denoise-spectral (npm) ^0.1.10
@audio/denoise-wiener (npm) ^0.1.10
@audio/dynamics-compand (npm) ^0.1.6
@audio/dynamics-compressor (npm) ^0.2.1
@audio/dynamics-deesser (npm) ^0.2.7
@audio/dynamics-ducker (npm) ^0.1.8
@audio/dynamics-expander (npm) ^0.2.1
@audio/dynamics-fet (npm) ^0.2.4
@audio/dynamics-gate (npm) ^0.1.6
@audio/dynamics-leveler (npm) ^0.1.6
@audio/dynamics-limiter (npm) ^0.1.5
@audio/dynamics-multiband (npm) ^0.4.2
@audio/dynamics-opto (npm) ^0.2.4
@audio/dynamics-softclip (npm) ^0.2.1
@audio/dynamics-transient-shaper (npm) ^0.1.6
@audio/dynamics-unlimit (npm) ^0.1.1
@audio/dynamics-varimu (npm) ^0.2.4
@audio/dynamics-vca (npm) ^0.2.4
@audio/effect-autowah (npm) ^1.1.4
@audio/effect-bitcrusher (npm) ^1.1.4
@audio/effect-chorus (npm) ^2.0.1
@audio/effect-delay (npm) ^1.0.4
@audio/effect-distortion (npm) ^1.1.4
@audio/effect-exciter (npm) ^1.2.0
@audio/effect-flanger (npm) ^2.0.1
@audio/effect-freqshift (npm) ^1.1.5
@audio/effect-graindelay (npm) ^1.1.5
@audio/effect-lofi (npm) ^1.1.5
@audio/effect-multitap (npm) ^1.1.5
@audio/effect-noiseshaper (npm) ^1.1.5
@audio/effect-phaser (npm) ^1.1.5
@audio/effect-pingpong (npm) ^1.1.4
@audio/effect-ringmod (npm) ^1.1.4
@audio/effect-rotary (npm) ^0.1.1
@audio/effect-sbr (npm) ^1.2.0
@audio/effect-slew (npm) ^1.1.4
@audio/effect-stutter (npm) ^1.1.5
@audio/effect-subbass (npm) ^1.2.0
@audio/effect-tapestop (npm) ^0.1.1
@audio/effect-tremolo (npm) ^1.1.4
@audio/effect-vibrato (npm) ^2.0.1
@audio/effect-wah (npm) ^1.1.4
@audio/encode (npm) ^1.8.0
@audio/encode-flac (npm) ^1.4.0
@audio/encode-mp3 (npm) ^1.4.0
@audio/encode-mp4 (npm) ^1.1.1
@audio/encode-wav (npm) ^1.5.0
@audio/eq (npm) ^1.0.3
@audio/eq-baxandall (npm) ^1.2.3
@audio/eq-dynamic (npm) ^1.2.3
@audio/eq-fit (npm) ^0.1.0
@audio/eq-graphic (npm) ^1.2.3
@audio/eq-tilt (npm) ^1.2.3
@audio/filter (npm) ^3.2.1
@audio/filter-comb (npm) ^1.1.3
@audio/filter-dcblocker (npm) ^1.1.3
@audio/filter-derivative (npm) ^1.0.2
@audio/filter-diode-ladder (npm) ^1.2.1
@audio/filter-korg35 (npm) ^1.2.1
@audio/filter-moog-ladder (npm) ^1.1.3
@audio/filter-oberheim (npm) ^1.2.1
@audio/filter-preemphasis (npm) ^1.1.3
@audio/filter-resonator (npm) ^1.2.1
@audio/filter-spectral-tilt (npm) ^1.2.1
@audio/filter-variable (npm) ^1.2.3
@audio/loudness-contrast (npm) ^1.0.4
@audio/loudness-dr (npm) ^1.1.4
@audio/loudness-lra (npm) ^1.2.0
@audio/loudness-replaygain (npm) ^1.2.0
@audio/loudness-sounds (npm) ^1.0.3
@audio/loudness-truepeak (npm) ^1.1.4
@audio/mic (npm) ^1.1.3
@audio/mir-drums (npm) ^1.1.5
@audio/mir-fingerprint (npm) ^1.1.3
@audio/mir-melody (npm) ^1.1.3
@audio/mir-multif0 (npm) ^1.1.4
@audio/mir-structure (npm) ^1.1.3
@audio/mir-tempogram (npm) ^1.1.4
@audio/mir-transcribe (npm) ^1.1.4
@audio/note (npm) ^1.0.2
Files by Type (count)
JavaScript
203
JSON
25
Markdown
22
Other (.mjs)
22
Text
10
Python
8
CSS
7
HTML
7
YAML
5
TypeScript
3
Other (.woff2)
2
Other (.svg)
2
Files by Type (size)
JavaScript
5MB
Other (.svg)
705KB
Markdown
516KB
JSON
419KB
Other (.mjs)
347KB
Other (.wav)
172KB
CSS
132KB
HTML
96KB
Other (.gif)
76KB
Python
63KB
TypeScript
59KB
Other (.woff2)
35KB

The LLM identified 4 files worth highlighting for reuse:

Implements ITU-R BS.1770-4 integrated LUFS normalization with multiple target presets (Spotify, Apple Podcasts, EBU R128) and a sample-accurate true-peak limiter using 4x Lanczos interpolation. This is a self-contained, production-grade audio processing algorithm that can be extracted for any loudness normalization task, demonstrating deep signal-processing expertise.

file: fn/normalize.js ↗ | tags: #loudness #true-peak #streaming

Provides time-stretching and pitch-shifting via a phase-locked vocoder (Laroche & Dolson 1999) with fractional hop adjustment for drift-free correction. It is a well-isolated DSP component that could be reused in other audio tools or DAWs, showcasing advanced spectral processing techniques.

file: fn/stretch.js ↗ | tags: #time-stretch #phase-vocoder #pitch-shift

The core engine defining the audio factory, plugin registration (audio.use/op/stat), page-based PCM storage, streaming read/write, and efficient block-level processing. While it is a large module, its plugin registration and page-cache abstraction are cleanly designed and could inform embedding a similar architecture in other media-processing libraries.

file: core.js ↗ | tags: #plugin-registry #streaming #cache

Implements an LRU page cache that evicts to the browser's OPFS (origin-private file system) with budget detection via navigator.storage.estimate(). This is a reusable pattern for any web application needing large binary data caching with persistent overflow, demonstrating thoughtful memory management.

file: cache.js ↗ | tags: #opfs #lru-cache #persistence
Last analyzed: 2026-09-26 12:59:46.388255
Next check: 2026-10-03 12:59:46.385343
$ submit: