2016-08-30 21 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(); 

と:

private AsioOut asio_outin = null; 

16ビットと同じ方法で、私はクリーンを取得信号。 しかし、出力レベルが非常に低く、ゲインが高いとアーチファクトが発生し、それが32ビットの理由です。

NAudio v1.7.3.0/Windows 7の/ .NET 4.0

私の障害は何ですか?

答えて

0

32ビットオーディオを使用する場合、32ビット整数のどこかに24または20ビットのオーディオが配置されることが多いため、さまざまなASIO「サンプルタイプ」があります。だから、間違ったサンプルタイプが使用されている可能性があります。あるいは、あなたが実際に32ビットのIEEE浮動小数点サンプルを実際に作り出しているかもしれません(WASAPIが使いたいものです)。

関連する問題