2016-08-30 2 views
0

Je tente de lire un tableau d'octets 32 bits via naudio et ASIO. Mais je ne peux pas le faire fonctionner. Le signal de sortie est déformé. La même méthode de conversion fonctionne très bien avec 32 bits pour naudio et WASAPI.Lecture audio 32 bits avec NAudio et ASIO

convert Exemple:

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

La lecture et l'enregistrement via NAudio et 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(); 

avec:

private AsioOut asio_outin = null; 

Avec 16 bits et la même méthode i obtenir un nettoyage Signal. Mais pour des niveaux de sortie très bas et un gain élevé, j'obtiens des artefacts et c'est la raison pour 32bit.

NAudio v1.7.3.0/Windows 7/.Net 4.0

Quel est mon échec?

Répondre

0

Il existe un certain nombre de différents types d'échantillons ASIO disponibles lors de l'utilisation de l'audio 32 bits, car il s'agit souvent d'un audio de 24 ou 20 bits placé quelque part dans un entier de 32 bits. Je pense donc que le mauvais type d'échantillon est peut-être utilisé. Ou pourrait-il être que vous êtes en train de produire des échantillons à virgule flottante IEEE qui sont également 32 bits (et c'est ce que WASAPI aime à utiliser).