https://github.com/carstenartur/audio-analyzer
Java 21 audio/DSP laboratory with Swing visualization, FFT/spectrogram analysis, recording/replay, and experimental acoustic localization research.
https://github.com/carstenartur/audio-analyzer
acoustic-localization audio audio-visualizer carrier-phase-measurements doppler java realtime tdoa
Last synced: 16 days ago
JSON representation
Java 21 audio/DSP laboratory with Swing visualization, FFT/spectrogram analysis, recording/replay, and experimental acoustic localization research.
- Host: GitHub
- URL: https://github.com/carstenartur/audio-analyzer
- Owner: carstenartur
- License: mit
- Created: 2013-01-01T17:08:28.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2026-05-28T19:08:24.000Z (24 days ago)
- Last Synced: 2026-05-28T21:08:19.344Z (24 days ago)
- Topics: acoustic-localization, audio, audio-visualizer, carrier-phase-measurements, doppler, java, realtime, tdoa
- Language: Java
- Homepage: http://carstenartur.github.io/javarepos/
- Size: 2.4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing/README.md
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# Audio Analyzer
[](https://github.com/carstenartur/audio-analyzer/actions/workflows/maven.yml)
[](https://carstenartur.github.io/audio-analyzer/tests/surefire-report.html)
[](https://carstenartur.github.io/audio-analyzer/coverage/)
[](https://github.com/carstenartur/audio-analyzer/actions/workflows/codeql.yml)
[](LICENSE)
[](https://github.com/carstenartur/audio-analyzer/dependency-graph/sbom)
**Audio Analyzer** is a Java 21 / Swing **audio and DSP laboratory**. It is useful for
repeatable signal demos, audio-analysis experiments, UI visualization and plugin research. It is
**not** a finished production platform for mosquito tracking.
The root Maven parent is `audioin-parent`; the runnable desktop application is `audio-app`.
## Project status
Stable infrastructure today:
- immutable `AudioBlock` / format models, SPSC ring buffer and deterministic signal generators;
- sample decoding, DSP pipelines, FFT spectrum, RMS/peak measurement, spectrogram and diagnosis
analyzers;
- Swing dashboard panels for waveform, phase, spectrum, spectrogram, measurements and diagnosis;
- recording/replay, evidence export and Markdown A/B comparison tooling;
- Maven module-boundary tests, unit tests, Spotless, JaCoCo reports/check, Checkstyle/PMD/SpotBugs
reports and CI baseline checks.
Experimental / research-oriented:
- acoustic-localization plugin code for wingbeat/frequency tracking, TDOA/GCC-PHAT, beamforming,
Doppler experiments and simulations;
- plugin UI contributions and localization workflows. These are explicitly not validated as a
production mosquito detector.
## Quickstart
Requires **Java 21** or higher. The Maven Wrapper is included.
```bash
# Build, test, run configured quality checks and produce reports
./mvnw clean verify
# Run the Swing app after package/verify
java -jar audio-app/target/audio-app-0.0.1-SNAPSHOT.jar
# Regenerate README + feature screenshots headlessly
java -cp "audio-app/target/audio-app-0.0.1-SNAPSHOT.jar:audio-app/target/lib/*" \
org.hammer.tools.DocImageRenderer docs/images
# Optional JMH benchmarks
./mvnw -pl audio-dsp -Pjmh package
```
On Windows use `mvnw.cmd` instead of `./mvnw`; adapt the classpath separator from `:` to `;` for
manual `java -cp` commands.
## Dashboard screenshot

_Reproducible documentation screenshot generated headlessly by `DocImageRenderer`: demo mode with a
440 Hz sine signal, waveform, spectrum peak, measurements, spectrogram and diagnosis panels visible
without clipped labels or empty regions._
## Feature groups
### Core audio / DSP platform
- layered capture → ring buffer → DSP → analysis → snapshot flow;
- immutable audio-domain types and UI-independent analysis snapshots;
- deterministic sine/square/chirp/demo generators for tests and demos;
- FFT spectrum, RMS/peak measurement, stereo delay, spectrogram and diagnosis analyzers;
- JMH benchmarks for selected hot paths.
### Swing dashboard
- live/demo input selection, waveform, phase, spectrum, spectrogram, measurements and diagnosis;
- pause/freeze, oscilloscope-style trigger, peak hold and spectrum averaging;
- JavaSound microphone input plus deterministic demo mode.
### Recording / export / comparison
- `.aar` recording and replay through the normal analysis pipeline;
- CSV/PNG and evidence-bundle export;
- Markdown A/B comparison reports for two recordings.
### Plugin / experimental acoustic localization
- `audio-plugin-api` contracts discovered by the app host via Java `ServiceLoader`;
- optional `audio-experimental-acoustic` runtime plugin for research workflows;
- details and limits: [Experimental Acoustic Localization](docs/plugins/acoustic-localization.md).
### Quality / tooling
- Maven multi-module build with Java 21 enforcement;
- Spotless formatting, unit tests and architecture-boundary tests;
- JaCoCo report plus a low 5% bundle line-coverage check;
- Checkstyle, PMD and SpotBugs reports; CI fails when report counts exceed the committed baseline;
- CodeQL workflow with an explicit Maven build.
## Maven modules
```text
audio-core
audio-geometry
audio-acquisition -> audio-core, audio-geometry
audio-dsp -> audio-core
audio-plugin-api (stable plugin contracts; no audio-* dependencies)
audio-experimental-acoustic -> audio-core, audio-geometry, audio-acquisition,
audio-dsp, audio-plugin-api
audio-app -> audio-core, audio-dsp, audio-plugin-api
runtime: audio-experimental-acoustic plugin
```
- `audio-core` — immutable audio-domain types, snapshots and ring buffer.
- `audio-geometry` — reusable 2D geometry and localization constraints.
- `audio-acquisition` — microphone metadata, arrays, multichannel sources and sample clocks.
- `audio-dsp` — FFT, DSP pipeline, analyzers, diagnostics, spectrogram and stereo-delay logic.
- `audio-plugin-api` — plugin contracts only.
- `audio-experimental-acoustic` — isolated acoustic-localization research plugin.
- `audio-app` — Swing UI, JavaSound/demo wiring, export, plugin host and entry point.
## Documentation
- [Architecture](ARCHITECTURE.md)
- [Quality gates & coverage](docs/quality.md)
- [QA findings & technical debt](docs/QA-FINDINGS.md)
- [Development](docs/development.md)
- [Feature guides](docs/features/README.md)
- [Stereo localization](docs/use-cases/stereo-localization.md)
- [Acoustic localization plugin](docs/plugins/acoustic-localization.md)
- [Roadmap](ROADMAP.md)
## License
This project is licensed under the MIT License. See LICENSE.