Как проверить / изменить частоту дискретизации моей звуковой карты? - PullRequest
1 голос
/ 20 июля 2011

Я играю с XAudio2 для отправки волн формата PCM на мою звуковую карту, и я столкнулся с проблемой, которая заставила меня задуматься над этим вопросом.Я создал файл .csv с MATLAB синусоидальной волны на частоте 440 Гц, и сначала я выбрал его на частоте 1 кГц (в течение 1 секунды).

Моя программа на C ++ затем загрузит этот файл и отправит буферна звуковую карту.Проблема в том, что выходной сигнал был искажен (обрезан) и не звучал как синусоида.Тогда я подумал, может быть, звуковая карта не любит частоту дискретизации 1 кГц, поэтому я удвоил ее, и вдруг все было хорошо.

Есть ли способ подтвердить, что это действительно была проблема?

1 Ответ

3 голосов
/ 20 июля 2011

Частота Найквиста с частотой дискретизации 1 кГц составляет всего 500 Гц. Я не удивлен, все это звучало ужасно. Предположим, у вас была частота дискретизации 1 кГц, и вы воспроизводили звук с частотой 500 Гц. Ваш вывод будет прямоугольной волной. - + - + - + между ними ничего нет, так как у вас недостаточно образцов. По мере приближения к частоте Найквиста способность к воспроизведению этой волны падает. Это слышно на таких низких частотах.

В любом случае, заставить вашу звуковую карту работать с такой низкой частотой дискретизации маловероятно. Гораздо более вероятно, что программный драйвер выполняет повторную выборку для вас, и кто знает, какие артефакты возникают в результате.

Попробуйте сделать что-то более разумное, как минимум 11.025 Гц. Это 44,1 кГц (частота дискретизации «CD»), деленная на 4, что поддерживается многими звуковыми картами напрямую. Почти все карты должны работать на 22,05 кГц.

...