2011-04-25 3 views
1

다음 기능을 사용할 수있는 .NET 4.0 (C#) 용으로 적합한 라이브러리 (library)를 찾을 수 있습니다 : +로드 된 samplebuffer에 직접 액세스 할 수있는 mp3/wav 샘플 읽기 견본? 는 + 직접 오디오 버퍼를 재생 (예를 들어 나는 MP3 샘플을로드하고, 프로그램 내에서 구현 리버브, 코러스, 그리고 더 많은 사용자 정의 효과를 추가 할) (수레의 배열) + 저장 MP3 또는 WAV와 같은 디스크에 오디오 버퍼C# (.NET 4.0)에서 오디오 버퍼 채우기 및 재생

얼마 전 .NET 용 ASIO를 발견했으며 .NET 3.5에서만 작동합니다. .NET 4.0 용으로 뭔가 있습니까? 도와 주셔서 정말로 고맙습니다.

+0

.NET 3.5에서 작성된 라이브러리가 .NET 4에서 작동하지 않는다는 인상을줍니다. – ChrisWue

답변

2

. ASIO for .NET은 mp3 또는 wav 파일의 크래킹에 도움이되지 않습니다. 이 작업을 수행하는 가장 최신의 Windows API는 Microsoft Media Foundation입니다. 이것들은 모두 COM API이지만 .NET에서 COM interop을 수행하거나 C++/CLI 래퍼를 작성하는 (더 쉽게) 중 하나입니다. C++/CLI 랩퍼를 사용하는 경우 성능 문제 (특히 오디오 프로그래밍의 지연 시간이 얼마나 중요한지)를 알아야합니다.

.NET에서 프로그래밍 할 때 필요한 오디오 대기 시간을 얻지 못한다고 회의적입니다. 좋은 오디오 드라이버 (예 : ASIO)는 지연 시간이 3ms 인 <에 이릅니다. 그러므로 "라이브 오디오"를 목표로 삼는다면,보다 긴 대기 시간을 가진 것이 아닌 한, 오디오 버퍼를 더 빨리 생성해야합니다. 이런 방식으로 Windows API가 처리하는 "시간 간격"은 100 나노초 간격입니다.

파일을 직접 크랙하지 않으려 고합니다. 그것은 단지 mp3와 wav 일뿐만 아니라 지루해집니다. 또한 wav가 다른 비트 전송률, 채널 수 등을 고려하여 포맷 된 방식을 알고 있어야합니다. Media Foundation을 사용하면 자동으로 쓰기 디코더가로드되어 파일 경로를 지정합니다. Check out this tutorial은 기존 WAV 파일을 열고 새로운 WAV 파일을 작성하는 것을 보여줍니다. 최근에 제가 만든 드럼 시퀀서에 대해이 경로를 따라갔습니다. COM 프로그래밍에 익숙하다면 전혀 괴롭지는 않습니다.

이것을 가능하게하는 MF의 중심 구성 요소는 is the MFSourceReader입니다.

수정 한 후에 오디오를 재생하려면 Windows SDK에서 "RenderExclusiveEventDriven"샘플을 볼 수 있습니다 ("audio"라고 생각합니다). 그게 내가 드럼 시퀀서에서했던 것입니다. 지연은 문제가되지 않으며 바이트 배열 만 처리하기 때문에 원시 데이터를 조작하는 것은 매우 쉽습니다. 이 시점에서 ASIO .NET 경로를 사용하여 MFSourceReader에서 가져온 원시 데이터를 재생할 수 있습니다.

아직 Media Foundation 주위에 .NET 래퍼가 있다고 생각하지 않습니다. (누군가 이미 그 작업을 수행했다면, 알아두면 좋을만큼 자유롭게 여기에 게시하십시오.)