2016-08-30 9 views
0

Я пытаюсь воспроизвести 32-разрядный байт-массив через naudio и ASIO. Но я не могу заставить его работать. Выходной сигнал искажен. Тот же метод преобразования отлично работает с 32 бит для naudio и WASAPI.Воспроизведение 32-битного звука с помощью NAudio и ASIO

Пример преобразования:

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

Существует несколько различных типов образцов ASIO, доступных при использовании 32-битного звука, потому что часто это всего лишь 24 или 20 бит аудио, размещенное где-то в 32-битном целом. Поэтому я подозреваю, что, возможно, используется неправильный тип образца. Или может быть, что вы на самом деле создаете образцы с плавающей запятой IEEE, которые также являются 32-битными (и это то, что нравится WASAPI).