Beatd 0.3.0
dotnet add package Beatd --version 0.3.0
NuGet\Install-Package Beatd -Version 0.3.0
<PackageReference Include="Beatd" Version="0.3.0" />
<PackageVersion Include="Beatd" Version="0.3.0" />
<PackageReference Include="Beatd" />
paket add Beatd --version 0.3.0
#r "nuget: Beatd, 0.3.0"
#:package Beatd@0.3.0
#addin nuget:?package=Beatd&version=0.3.0
#tool nuget:?package=Beatd&version=0.3.0
beatd
English | 日本語
A cross-platform GUI application and library for analyzing streaming audio and converting it to OSC.

Overview
beatd is a cross-platform application and library for streaming audio analysis.
It started with the concept of being a modern reimplementation of Sound2Light, utilizing a Rust implementation to create an easy-to-use, cross-platform GUI. It can send audio analysis results via OSC to integrate with external VJ software and similar tools.
Additionally, the core analysis engine is provided as an independent library so that it can be embedded into applications for Rust, C, C# (.NET/Unity), and JavaScript (WebAssembly).
Screenshot

Installation
Select the latest release from GitHub Releases and download the executable file for your operating system.
macOS
The macOS build is not signed or notarized with an Apple Developer ID. On first launch, macOS may show a message such as "beatd cannot be opened because the developer cannot be verified."
To open it anyway:
- Right-click (or Control-click)
beatd.app, choose Open, then click Open again. - Or allow it from System Settings → Privacy & Security after trying to open it once.
- Or remove the quarantine attribute in Terminal:
xattr -dr com.apple.quarantine /Applications/beatd.app
libbeatd
The streaming audio analysis in beatd is implemented in Rust as an independent crate. By embedding this, you can use features such as BPM analysis within your applications.
Rust
Add the crate via cargo.
cargo add beatd
use beatd::Analyzer;
let mut analyzer = Analyzer::new(48_000);
// samples: &[f32] (-1.0 to 1.0)
analyzer.push(&samples);
let level = analyzer.level();
let bpm = analyzer.bpm();
let spectrum = analyzer.spectrum();
let waveform = analyzer.waveform();
let beats = analyzer.beat_offsets(bpm);
C
Build the library with the ffi feature enabled.
cargo build -p beatd --features ffi
Add the generated libbeatd.so / libbeatd.dylib / beatd.dll along with beatd/beatd.h to your project, and specify -lbeatd during linking.
#include "beatd.h"
beatd_analyzer *analyzer = beatd_new(48000);
if (analyzer == NULL) {
return 1;
}
beatd_set_bpm_range_min(analyzer, 75);
beatd_push(analyzer, samples, count);
float level = beatd_level(analyzer);
float bpm = beatd_bpm(analyzer);
float spectrum[1024];
size_t bins = beatd_spectrum(analyzer, spectrum, 1024);
beatd_free(analyzer);
JavaScript
Add the library via npm.
npm i beatd-js
import { createAnalyzer } from "beatd-js";
using analyzer = createAnalyzer({ sampleRate: 48000 });
// samples: Float32Array
analyzer.push(samples);
console.log(analyzer.level(), analyzer.bpm());
console.log(analyzer.spectrum());
console.log(analyzer.waveform());
console.log(analyzer.beatOffsets(analyzer.bpm()));
C# / Unity
For .NET projects, you can add the package from NuGet.
dotnet package add Beatd
For Unity, you can add the package from the Package Manager using the git URL.
https://github.com/nuskey8/beatd.git?path=beatd-dotnet/Beatd.Unity/Packages/com.nuskey8.beatd.unity
using Beatd;
using var analyzer = new BeatdAnalyzer(48_000);
analyzer.BpmRangeMin = 75;
analyzer.Push(samples); // ReadOnlySpan<float>
Console.WriteLine($"{analyzer.Level}, {analyzer.Bpm}");
float[] spectrum = analyzer.GetSpectrum();
float[] beats = analyzer.GetBeatOffsets(analyzer.Bpm);
Please note that the .NET/Unity version currently supports only the following platforms:
| Platform | RID | .NET (NuGet) | Unity |
|---|---|---|---|
| Windows x64 | win-x64 |
✅ | ✅ |
| Windows ARM64 | win-arm64 |
✅ | ✅ |
| Linux x64 | linux-x64 |
✅ | ✅ |
| Linux ARM64 | linux-arm64 |
✅ | ✅ |
| macOS Intel | osx-x64 |
✅ | ✅ |
| macOS Apple Silicon | osx-arm64 |
✅ | ✅ |
License
beatd is released under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. net11.0 is compatible. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
-
net10.0
- No dependencies.
-
net11.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.