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.
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.\x64\Release\AudioAnalyzer.exe `
--backend aubio `
--input "D:\LightechProjects\DEMO\1.ogg" `
--output "D:\GodotProjects\AudioAnalyzer\result.json" `
--prettyOptions:
--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.
{
"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.