各キーが異なるサウンド (WAV ファイル) を持つ SAMPLER プログラムを作成しようとしています。
誰かが私に説明したり、WAV ファイルの再生方法を学べる説明へのリンクを教えてくれませんか?
問題があれば、私は Microsoft Visual C# と WinForms を使用しています。
SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath);
simpleSound.Play();
宇宙全体で最高のサウンドライブラリであるfmodを使用します
幸いなことに、彼らはあなたが想像できる最高のオーディオAPIのC#ラッパーを提供しているようであり、プレイステーションやxbox、または開発者がほとんど反応するものでコードを動作させるためにコードを1行変更する必要はありません(夕方にバグを報告し、就寝すると、目覚めたときに修正されたビルドが利用可能になります)ドキュメントは読みやすく、理解しやすく、SDKには非常に多くの例があり、ドキュメントはかなり完璧
FMODでwavを再生するのはわずか5行のコードで、さらにわずか4行で、再生のバランスと音量を3Dエンジンにリンクしながらエフェクトを適用できます(コンスクポイントとオーディオソースの交差を処理するために、4行...。
(C#を使用して)サウンドを実行する場合は、->FMODを使用します。
SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath);
simpleSound.PlaySync();
because sound play asynchronically.
このコンソール ベースのソリューションでは、LINQPad (したがって .Dump() 拡張メソッド呼び出し) とNAudio (明確にするために、いくつかのクラスで完全な名前空間を使用していることに気付くでしょう) を使用します。正しくセットアップするには、http: //share.linqpad.net/d7tli8.linq からスニペットをダウンロードするだけです(NuGet から NAudio を追加しました)。
実行するには、linqpad で開き、値をwavFilePath
ローカルの wave ファイル パスに設定して、F5 キーを押します。Play
は非同期なので、Console.ReadLine
完了するまで待つために a を実行します。
string wavFilePath = @"TODO";
var reader = new NAudio.Wave.AudioFileReader(wavFilePath);
reader.Dump("AudioFileReader");
var sampleProvider = reader.ToSampleProvider().Dump("sample provider");
NAudio.Wave.WaveOut.DeviceCount.Dump("num waveout on comp");
var outputDeviceInfo = WaveOut.GetCapabilities(0).Dump();
var outputter = new WaveOut() {
DesiredLatency = 5000 //arbitrary but <1k is choppy and >1e5 errors
, NumberOfBuffers = 1 // 1,2,4 all work...
, DeviceNumber = 0
}.Dump();
outputter.Init(reader);
outputter.Play(); // async
Console.Read();
outputter.Stop();
ご参考までに、私のマシンでは、すべての .Dump 呼び出しからの出力は次のようになります。