コンテンツにスキップ

カスタムオーディオソース

標準の WaveAudioSourceVorbisAudioSource 以外にも、独自のオーディオソース(IAudioSource実装)を作成して利用できます。 ここではカスタムオーディオソースの作り方とAudioPlayerでの利用例を解説します。

基本

オーディオソースは IAudioSource インターフェースを実装して作成します。 必要に応じてサンプルデータの読み込みや再生制御を実装します。

ここでは、無音を生成するシンプルな例を示します。バッファを埋められれば良いため、理論上あらゆるPCM音源を接続できます。

using Promete.Audio;
public class MyAudioSource : IAudioSource
{
public int? Samples => null;
public int Channels => 2;
public int Bits => 16;
public int SampleRate => 44100;
public (int loadedSize, bool isFinished) FillSamples(short[] buffer, int offset)
{
// 無音を生成する
for (int i = 0; i < buffer.Length; i++)
{
buffer[i] = 0;
}
return (buffer.Length, false);
}
}

実装すべきメンバー

  • Samples - 総サンプル数(不明な場合はnull)
  • Channels - チャンネル数(1=モノラル, 2=ステレオ)
  • Bits - 1サンプルあたりのビット数(通常16)
  • SampleRate - サンプリングレート(例: 44100)
  • FillSamples(short[] buffer, int offset) - サンプルデータを buffer に書き込み、読み込んだサンプル数と再生終了フラグを返す

サンプル:AudioPlayerでの利用

var audio = new AudioPlayer();
var source = new MyAudioSource();
audio.Play(source);