2009-08-16 15 views
6

それぞれのキーが異なるサウンド(WAVファイル)を持つSAMPLERプログラムを作成しようとしています。.NETで.WAVファイルを再生する

誰かが私に説明したり、WAVファイルを再生する方法を学ぶことができる説明へのリンクを教えてもらえますか?

私はMicrosoft Visual C#とWinFormsを使用して作業しています。宇宙全体に単に

最高のサウンドライブラリです

+0

やや関連: を* http://stackoverflow.com/questions/4429513/play-wav-file-async-multiple-times-with-net * http://stackoverflow.com/questions/1087763/play-pcm-data-in- net-framework-2 – Pat

答えて

21
SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath); 
simpleSound.Play(); 
+0

は一時停止して機能を再開できますか? – Rick2047

+0

私は正直であることを知らないが、この低レベルのプレーヤーを見て... http://www.codeproject.com/KB/audio-video/cswavplay.aspx、そしてあなたが.netを使用しているなら3.5では、一時停止と再開をサポートするMediaElementを使用できます。 –

+2

using System.Media; –

4

使用FMODは、幸いなことに、彼らはあなたが想像してみてください可能性が最高のオーディオAPIのためのC#ラッパーを提供しているようだ、とあなたはしませんあなたのコードをプレイステーションやXboxなどで動作させるためにコードの1行を変更する必要があります 開発者はかなり反応があります(あなたは夕方にバグを報告し、就寝し、目を覚ますと修正されたビルドが利用可能です) ドキュメントは読みやすく、分かりやすく、幸いです.DHDGE SDKのサンプルがたくさんあります。ドキュメントがかなり分かりやすいので、チュートリアルを提供することは役に立たないuch perfect

FMODでwavを再生するだけで5行のコードで、再生のバランスと音量を3次元エンジンに連結しながら効果を適用できます(consc点とオーディオソース、4行...

もしあなたがしたいなら(C#を使う)、 - > FMOD。

+0

このラッパーが役に立ちましたhttp://stackoverflow.com/a/8470050/74585 –

1
SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath); 
simpleSound.PlaySync(); 

サウンドは非同期に再生されるためです。

+1

これは、受け入れられた答えにむしろコメントです。 – jgauffin

0

このコンソールベースのソリューションは、LINQPad(したがって.Dump()拡張メソッド呼び出し)とNAudioを使用しています(明らかにするために、いくつかのクラスで完全な名前空間を使用しています。正しく設定するには、http://share.linqpad.net/d7tli8.linq(NuGetのNAudioを追加しました)からスニペットをダウンロードしてください。

実行するには、linqpadで開き、wavFilePathの値をローカルウェーブファイルパスに設定し、F5キーを押します。 Playは非同期なので、完了するまで待つためにConsole.ReadLineを実行します。

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呼び出し、すべての出力は、あなたが迷っている場合には、私のマシン上で次のようになります。

audiofilereader contents

sampleprovider and waveout info

関連する問題