Skip to content

Repository files navigation

LowFreq Sim

A 2D acoustic simulator for predicting low-frequency directivity in PA systems.

LowFreq Sim lets live-sound and system engineers lay out subwoofer arrays and instantly see how they sum in the room — sound-pressure coverage, phase interference, and time alignment — so you can steer bass where you want it and keep it off the stage. Everything updates in real time as you drag sources, retime them, or flip polarity.

Built as a native desktop app with Tauri and a React + TypeScript front end.

Features

Three coverage views

  • SPL — relative sound-pressure heatmap, normalized to the loudest point on screen
  • Phase — wavefront interference map showing peaks and troughs
  • Time Spread — arrival-time alignment, from tight (green) to smeared (red)

Per-source control — position, gain (dB), delay (ms), polarity invert, mute/solo, and naming for every sub. Organize sources into colored groups with their own mute/solo.

Real-world array presets — drop in proven configurations and compare them instantly:

  • Broadside, End-fire (quarter-wavelength steered), Gradient / Cardioid (single and 2×2)
  • Inverted/cardioid stacks, Physical arc, Delay (electronically steered) arc
  • L/R "power alley", Cardioid line, and optimized coupled lines of 2–5 subs (1.5 m spacing to suppress grating lobes)

Measurement mic — drop a virtual mic anywhere and read its live frequency-response spectrum.

Tunable environment — frequency, air temperature (speed of sound), venue dimensions, dynamic range, wavefront density, optional polar-plot overlay, and optional room-boundary reflections (reflection coefficient and bounce order).

Fast editing — drag to move, double-click to add, shift-click to multi-select, copy/cut/paste, 12-step undo, and save/load layouts locally.

Tech stack

  • Tauri 2 (Rust) — native desktop shell and packaging
  • React 19 + TypeScript — UI
  • Vite 6 — dev server and bundler
  • Tailwind CSS 4 — styling
  • HTML5 Canvas for the real-time field rendering

Run locally (web)

Prerequisites: Node.js

npm install
npm run dev

Then open http://localhost:3000.

Build the desktop app

Prerequisites: Node.js and the Rust toolchain, plus Tauri's platform dependencies.

# run the native app in development
npm run tauri dev

# build a distributable (.app / .dmg on macOS)
npm run tauri build

Controls

Action Shortcut
Select Click · Shift-click to multi-select
Move Drag
Add source Double-click the canvas
Copy / Cut / Paste Cmd/Ctrl + C / X / V
Remove Delete / Backspace
Zoom Scroll · or R / T
Undo Controls panel (12 steps)

How it works

Each source is summed at every point on a grid as a complex pressure phasor, accounting for distance attenuation, per-source delay and polarity, and the wavelength at the selected frequency. The speed of sound tracks air temperature (c = 331.3 + 0.606·T m/s), so retiming and spacing behave the way they do on a real site. The end-fire, gradient, and cardioid presets derive their spacing and delay from a quarter wavelength at the current frequency.

SPL values are relative — colors are normalized to the loudest point currently on screen, for comparing coverage within a configuration, not absolute SPL between setups.

License

MIT © 2026 ZDAudio

About

A 2D acoustic simulator for predicting low-frequency directivity of subwoofer arrays in PA systems — SPL, phase & time-alignment views with real-world presets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages