{"id":50612488,"url":"https://github.com/carstenartur/audio-analyzer","last_synced_at":"2026-06-06T05:02:45.818Z","repository":{"id":6167384,"uuid":"7397122","full_name":"carstenartur/audio-analyzer","owner":"carstenartur","description":"Java 21 audio/DSP laboratory with Swing visualization, FFT/spectrogram analysis, recording/replay, and experimental acoustic localization research.","archived":false,"fork":false,"pushed_at":"2026-05-28T19:08:24.000Z","size":2517,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-28T21:08:19.344Z","etag":null,"topics":["acoustic-localization","audio","audio-visualizer","carrier-phase-measurements","doppler","java","realtime","tdoa"],"latest_commit_sha":null,"homepage":"http://carstenartur.github.io/javarepos/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carstenartur.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing/README.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-01-01T17:08:28.000Z","updated_at":"2026-05-28T19:06:23.000Z","dependencies_parsed_at":"2025-10-01T05:46:06.747Z","dependency_job_id":null,"html_url":"https://github.com/carstenartur/audio-analyzer","commit_stats":null,"previous_names":["carstenartur/audio-analyzer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/carstenartur/audio-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carstenartur%2Faudio-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carstenartur%2Faudio-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carstenartur%2Faudio-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carstenartur%2Faudio-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carstenartur","download_url":"https://codeload.github.com/carstenartur/audio-analyzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carstenartur%2Faudio-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33969883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acoustic-localization","audio","audio-visualizer","carrier-phase-measurements","doppler","java","realtime","tdoa"],"created_at":"2026-06-06T05:02:34.904Z","updated_at":"2026-06-06T05:02:45.810Z","avatar_url":"https://github.com/carstenartur.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Audio Analyzer\n\n[![Java CI with Maven](https://github.com/carstenartur/audio-analyzer/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/carstenartur/audio-analyzer/actions/workflows/maven.yml)\n[![Tests](https://img.shields.io/endpoint?url=https://carstenartur.github.io/audio-analyzer/tests/badge.json)](https://carstenartur.github.io/audio-analyzer/tests/surefire-report.html)\n[![Coverage](https://img.shields.io/endpoint?url=https://carstenartur.github.io/audio-analyzer/coverage/badge.json)](https://carstenartur.github.io/audio-analyzer/coverage/)\n[![CodeQL](https://github.com/carstenartur/audio-analyzer/actions/workflows/codeql.yml/badge.svg?branch=master)](https://github.com/carstenartur/audio-analyzer/actions/workflows/codeql.yml)\n[![License](https://img.shields.io/github/license/carstenartur/audio-analyzer)](LICENSE)\n[![SBOM](https://img.shields.io/badge/SBOM-CycloneDX-informational?logo=owasp)](https://github.com/carstenartur/audio-analyzer/dependency-graph/sbom)\n\n**Audio Analyzer** is a Java 21 / Swing **audio and DSP laboratory**. It is useful for\nrepeatable signal demos, audio-analysis experiments, UI visualization and plugin research. It is\n**not** a finished production platform for mosquito tracking.\n\nThe root Maven parent is `audioin-parent`; the runnable desktop application is `audio-app`.\n\n## Project status\n\nStable infrastructure today:\n\n- immutable `AudioBlock` / format models, SPSC ring buffer and deterministic signal generators;\n- sample decoding, DSP pipelines, FFT spectrum, RMS/peak measurement, spectrogram and diagnosis\n  analyzers;\n- Swing dashboard panels for waveform, phase, spectrum, spectrogram, measurements and diagnosis;\n- recording/replay, evidence export and Markdown A/B comparison tooling;\n- Maven module-boundary tests, unit tests, Spotless, JaCoCo reports/check, Checkstyle/PMD/SpotBugs\n  reports and CI baseline checks.\n\nExperimental / research-oriented:\n\n- acoustic-localization plugin code for wingbeat/frequency tracking, TDOA/GCC-PHAT, beamforming,\n  Doppler experiments and simulations;\n- plugin UI contributions and localization workflows. These are explicitly not validated as a\n  production mosquito detector.\n\n## Quickstart\n\nRequires **Java 21** or higher. The Maven Wrapper is included.\n\n```bash\n# Build, test, run configured quality checks and produce reports\n./mvnw clean verify\n\n# Run the Swing app after package/verify\njava -jar audio-app/target/audio-app-0.0.1-SNAPSHOT.jar\n\n# Regenerate README + feature screenshots headlessly\njava -cp \"audio-app/target/audio-app-0.0.1-SNAPSHOT.jar:audio-app/target/lib/*\" \\\n  org.hammer.tools.DocImageRenderer docs/images\n\n# Optional JMH benchmarks\n./mvnw -pl audio-dsp -Pjmh package\n```\n\nOn Windows use `mvnw.cmd` instead of `./mvnw`; adapt the classpath separator from `:` to `;` for\nmanual `java -cp` commands.\n\n## Dashboard screenshot\n\n![Audio Analyzer dashboard showing a reproducible 440 Hz sine demo](docs/images/screenshot.png)\n\n_Reproducible documentation screenshot generated headlessly by `DocImageRenderer`: demo mode with a\n440 Hz sine signal, waveform, spectrum peak, measurements, spectrogram and diagnosis panels visible\nwithout clipped labels or empty regions._\n\n## Feature groups\n\n### Core audio / DSP platform\n\n- layered capture → ring buffer → DSP → analysis → snapshot flow;\n- immutable audio-domain types and UI-independent analysis snapshots;\n- deterministic sine/square/chirp/demo generators for tests and demos;\n- FFT spectrum, RMS/peak measurement, stereo delay, spectrogram and diagnosis analyzers;\n- JMH benchmarks for selected hot paths.\n\n### Swing dashboard\n\n- live/demo input selection, waveform, phase, spectrum, spectrogram, measurements and diagnosis;\n- pause/freeze, oscilloscope-style trigger, peak hold and spectrum averaging;\n- JavaSound microphone input plus deterministic demo mode.\n\n### Recording / export / comparison\n\n- `.aar` recording and replay through the normal analysis pipeline;\n- CSV/PNG and evidence-bundle export;\n- Markdown A/B comparison reports for two recordings.\n\n### Plugin / experimental acoustic localization\n\n- `audio-plugin-api` contracts discovered by the app host via Java `ServiceLoader`;\n- optional `audio-experimental-acoustic` runtime plugin for research workflows;\n- details and limits: [Experimental Acoustic Localization](docs/plugins/acoustic-localization.md).\n\n### Quality / tooling\n\n- Maven multi-module build with Java 21 enforcement;\n- Spotless formatting, unit tests and architecture-boundary tests;\n- JaCoCo report plus a low 5% bundle line-coverage check;\n- Checkstyle, PMD and SpotBugs reports; CI fails when report counts exceed the committed baseline;\n- CodeQL workflow with an explicit Maven build.\n\n## Maven modules\n\n```text\naudio-core\naudio-geometry\naudio-acquisition           -\u003e audio-core, audio-geometry\naudio-dsp                   -\u003e audio-core\naudio-plugin-api            (stable plugin contracts; no audio-* dependencies)\naudio-experimental-acoustic -\u003e audio-core, audio-geometry, audio-acquisition,\n                               audio-dsp, audio-plugin-api\naudio-app                   -\u003e audio-core, audio-dsp, audio-plugin-api\n                               runtime: audio-experimental-acoustic plugin\n```\n\n- `audio-core` — immutable audio-domain types, snapshots and ring buffer.\n- `audio-geometry` — reusable 2D geometry and localization constraints.\n- `audio-acquisition` — microphone metadata, arrays, multichannel sources and sample clocks.\n- `audio-dsp` — FFT, DSP pipeline, analyzers, diagnostics, spectrogram and stereo-delay logic.\n- `audio-plugin-api` — plugin contracts only.\n- `audio-experimental-acoustic` — isolated acoustic-localization research plugin.\n- `audio-app` — Swing UI, JavaSound/demo wiring, export, plugin host and entry point.\n\n## Documentation\n\n- [Architecture](ARCHITECTURE.md)\n- [Quality gates \u0026 coverage](docs/quality.md)\n- [QA findings \u0026 technical debt](docs/QA-FINDINGS.md)\n- [Development](docs/development.md)\n- [Feature guides](docs/features/README.md)\n- [Stereo localization](docs/use-cases/stereo-localization.md)\n- [Acoustic localization plugin](docs/plugins/acoustic-localization.md)\n- [Roadmap](ROADMAP.md)\n\n## License\n\nThis project is licensed under the MIT License. See LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarstenartur%2Faudio-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarstenartur%2Faudio-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarstenartur%2Faudio-analyzer/lists"}