У меня несколько другой вопрос. Итак, я использую Matlab на машине с Linux Gentoo. У меня есть несколько звуковых карт Asus Xonar STX, и я пытаюсь использовать их в качестве чувствительного анализатора звуковых частот, используя PlayRec неблокирующий аудио пакет IO.
Теперь я знаю, что Matlab скажет, если вы попытаетесь использовать функцию аудиозаписи и укажете 24 бита в Linux, он скажет вам, что 24 бита поддерживаются только в Windows. Однако в литературе по ALSA не подразумевается, что это ограничение операционной системы или самой ALSA, и на самом деле Alsa, по-видимому, позволяет указать 24-битное устройство PCM. И PlayRec использует PortAudio, который затем использует Alsa в системах Linux.
Теперь все хорошо, и Playrec, кажется, не имеет средства указать битовую глубину, только частоту дискретизации. Я провел много тестов и знаю, какова передаточная функция моей звуковой карты (возвращаемое значение с плавающей запятой в коэффициент преобразования входного напряжения), и я знаю, что мое пиковое напряжение составляет 3 В, а мой шум составляет около 100 мкВ. Это дает мне 20 * log10 (3/100e-6) = 91 дБ. Что ближе к тому, что я ожидаю увидеть от 16 бит, а не от 24.
Мой реальный вопрос заключается в следующем: есть ли способ проверить, что я действительно получаю 24 бита в своем захваченном сигнале?
И если нет, то есть ли какое-то неотъемлемое ограничение ALSA или Matlab, которое ограничивает меня только 16-битными данными с устройств звукозаписи, даже при использовании сторонней программы для сбора этих данных.