Войти
ПрограммированиеФорумЗвук

Генерация синусоиды 24 bit

#0
18:47, 31 авг. 2011

Необходимо сгенерировать 24-битовую синусоиду.
Для генерации и приёма сигнала использую звуковую карту E-MU 0204 ( сигнал с выхода наушников передаю по проводу на вход R-Hi-Z ). Программа написана с использованием DirectSound.
Структуру WAVEFORMATEXTENSIBLE заполняю следующим образом:

WAVEFORMATEXTENSIBLE waveFmtEx;
waveFmtEx.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
waveFmtEx.Format.nChannels = 1;
waveFmtEx.Format.wBitsPerSample = 32;
waveFmtEx.Format.nBlockAlign = 4;
waveFmtEx.Format.cbSize = 22;
waveFmtEx.dwChannelMask = 0x3;
waveFmtEx.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
waveFmtEx.Format.nSamplesPerSec = 44100;
waveFmtEx.Format.nAvgBytesPerSec = waveFmtEx.Format.nSamplesPerSec * waveFmtEx.Format.nBlockAlign;
waveFmtEx.Samples.wValidBitsPerSample = 24;

ZeroMemory(&dsBufDesc, sizeof(DSBUFFERDESC) );
dsBufDesc.dwSize = sizeof(DSBUFFERDESC);
dsBufDesc.dwFlags = DSBCAPS_GLOBALFOCUS;
dsBufDesc.dwReserved = 0;
dsBufDesc.lpwfxFormat = (WAVEFORMATEX*)&waveFmtEx;
dsBufDesc.dwBufferBytes = waveFmtEx.Format.nSamplesPerSec * waveFmtEx.Format.nBlockAlign * soundBufferSec;

В параметрах звуковой карты написано, что SNR ЦАПа = 117 dB
Анализатор принятого звука выдаёт SNR в районе 80 dB полной шкалы.

Хотел узнать верно ли заполнена структура?
И отчего может получаться такой низкий SNR?
Судя по SNR генерится 16-битный сигнал.


ПрограммированиеФорумЗвук

Тема в архиве.