Lightweight C# wrapper for the miniaudio single-header audio playback library.
$ dotnet add package Miniaudio.NetminiaudioNetは、C言語で書かれたオーディオライブラリであるminiaudioを.NETから安全に扱うためのラッパーライブラリです。
Windows、Linux、macOS(x64/ARM64)に対応しており、NuGetパッケージにはすべてのプラットフォーム向けのネイティブバイナリが含まれています。
Install-Package Miniaudio.Net
dotnet add package Miniaudio.Net
<PackageReference Include="Miniaudio.Net" Version="0.1.0" />
using Miniaudio.Net;
// オーディオファイルを再生
using var context = new MiniaudioContext();
using var sound = context.CreateSound("path/to/audio.mp3");
sound.Start();
Console.WriteLine("再生中... Enterキーで終了");
Console.ReadLine();
| プラットフォーム | アーキテクチャ |
|---|---|
| Windows | x64, ARM64 |
| Linux | x64, ARM64 |
| macOS | x64, ARM64 |
注意: 現状はCodexまかせで開発されています。
miniaudioNet/
├── native/ # CMake ベースのネイティブブリッジ (miniaudionet)
│ ├── CMakeLists.txt # ma_engine / ma_sound を DLL/SO/DYLIB 化
│ └── CMakePresets.json # 各 OS / RID 向けのビルドプリセット
├── scripts/ # ネイティブ資産を出力する補助スクリプト
├── src/Miniaudio.Net/ # .NET 8.0 ラッパー (NuGet パッケージ本体)
├── samples/MiniaudioNet.Sample # 簡単な再生コンソールアプリ
└── third_party/miniaudio/ # 付属 miniaudio ヘッダー
GitHub Actions (.github/workflows/ci.yml) では Windows / Linux / macOS 各 RID 向けに miniaudionet をビルドし、成果物を NuGet パッケージへ自動投入します。ローカルでも同じ出力を得たい場合は次のスクリプトを利用してください。
pwsh ./scripts/build-native.ps1 -Rid win-x64 # 例: Windows x64 版
pwsh ./scripts/build-native.ps1 -Rid win-arm64 # ARM64 版も同じコマンドで生成
./scripts/build-native.sh --rid linux-x64
./scripts/build-native.sh --rid osx-arm64
各コマンドは CMakePresets を介して build/native/<preset>/ にビルドし、artifacts/native/<RID>/native/ に DLL/SO/DYLIB を配置します。.csproj はこのディレクトリを検出して runtimes/<RID>/native/ として NuGet へ自動梱包し、同時に bin/<Configuration>/<TFM>/runtimes/... にコピーします。アプリ側ではパッケージを参照するだけでネイティブライブラリが解決されます。
# ソリューション全体
dotnet build miniaudioNet.sln -c Release
# パッケージのみを Release で生成
dotnet pack src/Miniaudio.Net/Miniaudio.Net.csproj -c Release
dotnet pack は artifacts/native/** の内容を自動で取り込み、artifacts/packages/ に .nupkg と .snupkg を出力します。生成されたパッケージをローカルフィードに追加すれば、.NET プロジェクトへ参照するだけで Windows / macOS / Linux のいずれでも即動作します。
サンプルの実行:
dotnet run --project samples/MiniaudioNet.Sample -- <audio-file>
ストリーミング API の動作確認には次のコンソールアプリを利用できます。
dotnet run --project samples/MiniaudioNet.Sample.Streaming -- [frequency-hz] [duration-seconds]
win-x64, win-arm64, linux-x64, linux-arm64, osx-x64, osx-arm64) でネイティブブリッジをビルド。dotnet build / dotnet pack を実行し、NuGet パッケージを生成。