Skip to content

PigeonLab-Dev/AudioAnalyzer

Repository files navigation

AudioAnalyzer demo

Standalone audio-analysis sidecar prototype for Lightech.

The executable does not link against Godot. It decodes audio by launching ffmpeg, then analyzes mono float samples with either linked aubio or the small built-in FFT + spectral-flux detector. Results are returned through stdout or an output file.

This is intentionally a sidecar demo. Since the aubio backend links GPL code, keep this executable outside the main Godot/GDExtension binary boundary.

Build

Open AudioAnalyzer.slnx in Visual Studio, or build from PowerShell:

& "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" `
  "D:\GodotProjects\AudioAnalyzer\AudioAnalyzer.vcxproj" `
  /p:Configuration=Release /p:Platform=x64

Run

.\x64\Release\AudioAnalyzer.exe `
  --backend aubio `
  --input "D:\LightechProjects\DEMO\1.ogg" `
  --output "D:\GodotProjects\AudioAnalyzer\result.json" `
  --pretty

Options:

  • --backend <aubio|builtin|both>: select the analyzer backend. Default: aubio.
  • --ffmpeg <path>: use a specific ffmpeg executable.
  • --threshold <number>: higher values produce fewer onsets. Default: 1.35.
  • --aubio-threshold <number>: aubio onset threshold. Default: 0.18.
  • --min-interval <seconds>: suppress dense duplicate peaks. Default: 0.075.
  • --hint-bpm <bpm>: use the editor/chart BPM for the built-in backend.
  • --pretty: pretty-print JSON.

Output

{
  "schema_version": 1,
  "input": "D:/song.ogg",
  "backend": "aubio",
  "sample_rate": 44100,
  "duration": 149.0,
  "analysis_ms": 1200.0,
  "tempo": {
    "bpm": 192.0,
    "confidence": 0.82
  },
  "beats": [0.512, 0.824],
  "onsets": [
    {
      "time": 0.512,
      "strength": 0.91,
      "confidence": 0.88,
      "band": "kick"
    }
  ]
}

Godot only needs to call the executable and parse this JSON. The analyzer may be distributed as an optional sidecar so GPL-based backends can stay outside the main GDExtension boundary.

See godot/audio_analyzer_client.gd for a minimal Godot-side caller.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors