2009-08-16 7 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, 및 당신이 사용하고있는 경우에보십시오. 3.5에서는 일시 중지 및 다시 시작을 지원하는 MediaElement를 사용할 수 있습니다. –

+2

using System.Media; –

4

사용 FMOD는, 그들은 당신이 상상을 시도 할 수 있습니다 최상의 오디오 API에 대한 C#을 래퍼를 제공하는 것, 당신은하지 않습니다 플레이 스테이션이나 X 박스에서 코드가 작동하도록 코드 한 줄을 변경해야합니다. 개발자는 거의 반응이 없습니다 (저녁에 버그를보고 침대에 가서 수정 된 빌드를 깨울 때 사용할 수 있습니다) 설명서는 읽기 쉽고 이해할 수 있으며 거대한 SDK에 많은 예제가 있으므로 문서가 꽤 이상하므로 튜토리얼을 제공하지 않아도됩니다. uch 완벽

FMOD로 wav를 재생하는 것은 단지 5 줄의 코드이며, 재생의 균형과 볼륨을 3d 엔진에 연결하면서 효과를 적용 할 수 있습니다 (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