2016-08-30 4 views
0

naudio 및 ASIO를 통해 32 비트 바이트 배열을 재생하려고합니다. 그러나 나는 그것을 실행할 수 없습니다. 출력 신호가 왜곡됩니다. 동일한 변환 방법이 naudio 및 WASAPI의 경우 32 비트로 잘 작동합니다.NAudio 및 ASIO로 32 비트 오디오 재생

샘플 변환 :

var newAmp = (int)Math.Round(amp * (Math.Pow(2, 32)/2)); 
var buffer = BitConverter.GetBytes(newAmp); 

naudio 및 ASIO 통한 재생 및 기록 :

var waveToneClass = new WaveTone(48000, 32, playBuffer, true, 1); 
var stream = new BlockAlignReductionStream(waveToneClass); 

asio_outin = new AsioOut(nameOfDriver); 
asio_outin.ChannelOffset = 0;    
asio_outin.InputChannelOffset = 0; 
asio_outin.InitRecordAndPlayback(stream, 1, 48000); 

asio_outin.AudioAvailable += ASIO_dataAvailable; 
asio_outin.Play(); 

와 16 비트와 같은 방법으로

private AsioOut asio_outin = null; 

내가 깨끗한를 얻을 수 신호. 그러나 매우 낮은 출력 레벨과 높은 이득에 대해서는 인공물이 생겨 32 비트의 원인이되었습니다.

NAudio v1.7.3.0/윈도우 7/닷넷 4.0

내 실패는 무엇입니까?

답변

0

32 비트 오디오를 사용하는 경우 여러 가지 ASIO "샘플 유형"이 있습니다. 이는 종종 24 비트 또는 20 비트 오디오가 32 비트 정수의 어딘가에 배치되기 때문입니다. 그래서 아마도 잘못된 샘플 유형이 사용되고 있을지도 모릅니다. 아니면 실제로 32 비트 (또한 WASAPI가 사용하기를 좋아하는 것입니다) 인 IEEE 부동 소수점 샘플을 실제로 생성하고있을 수도 있습니다.