Show HN: I think I made my own web version of minimalistic audacity

Jul 30, 2026 10:23 PM - 1 month ago 722

High-fidelity client-side audio processing engine.

HERTZ is simply a web-based Digital Audio Workstation (DAW) inferior designed for instant vocal polishing. It leverages the Web Audio API for real-time awesome processing and FFmpeg.wasm for client-side encoding. Unlike accepted devices that trust connected server-side processing (FFmpeg binaries connected Linux), HERTZ runs wholly wrong the user's browser thread via WebAssembly.


image

The exertion is built connected a "Zero-Server" architecture. The extremity is to destruct the latency, bandwidth costs, and privateness risks associated pinch uploading delicate audio information to unreality storage.

  1. Ingestion: Decodes varied input formats (WAV, MP3, M4A, OGG) into a earthy 32-bit floating-point AudioBuffer.
  2. Manipulation: Provides a non-destructive editing furniture utilizing Wavesurfer.js regions, allowing users to specify sample-accurate start/end points.
  3. Digital Signal Processing (DSP):
    • Constructs an OfflineAudioContext for faster-than-realtime rendering.
    • Routes audio done a hardcoded vocal concatenation (EQ -> Compressor -> Limiter).
    • Analysis walk determines highest amplitude for meticulous normalization.
  4. Encoding:
    • Transfers processed buffer to the ffmpeg.wasm virtual record system.
    • Executes LAME MP3 encoding astatine 192kbps VBR.
    • Streams the resulting Blob straight to the user's download manager.

Signal Chain Specification

HERTZ does not usage generic presets. The audio motor implements a circumstantial vocal concatenation optimized for spoken connection and podcast clarity.

  • Cutoff: 80Hz
  • Q: 1.4
  • Purpose: Removes sub-bass rumble and DC offset artifacts often coming successful user microphones.

A hard-knee compressor designed to level vocal move scope without introducing pumping artifacts.

  • Threshold: -20.0 dB
  • Ratio: 3.1:1
  • Knee: 5.0 dB
  • Attack: 0.03s (30ms)
  • Release: 0.1s (100ms)

Post-compression summation staging ensures compliance pinch broadcast loudness standards.

  • Target: -3.0 dB Peak
  • Method: Linear summation calculation based connected absolute max amplitude scanning.

Technical Constraints & Browser Security

HERTZ relies connected SharedArrayBuffer to facilitate multi-threaded processing successful FFmpeg.wasm. Modern browsers restrict this characteristic down strict information headers to forestall Spectre/Meltdown vulnerabilities.

To tally HERTZ locally aliases successful production, the big must service the pursuing headers:

Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp

If these headers are missing, ffmpeg.wasm will neglect to initialize, and the exertion will propulsion a buffer allocation error. The included vite.config.ts handles this for section development.


Installation & Development

  • Node.js 18.x aliases higher
  • NPM aliases Bun package manager
  • A modern browser pinch WebAssembly support (Chrome 90+, Firefox 90+, Safari 15+)
# Clone the repository git clone [https://github.com/askpext/hertz.git](https://github.com/askpext/hertz.git) # Enter directory cd hertz # Install dependencies npm install

The exertion will motorboat astatine http://localhost:5173.

This generates a fixed plus bundle successful /dist. Note that you cannot simply unfastened index.html locally; it must beryllium served via a web server that supports the required COOP/COEP headers (e.g., Vercel, Netlify, aliases GitHub Pages).


More