Если вы наблюдаете данные, которые playrec выводит через playrec('getRec', ...)
, вы увидите, что это всегда плавающая точка одинарной точности (протестировано в Windows, MATLAB R2013b, самая последняя версия Playrec ).(Вы можете проверить это самостоятельно после записи одной страницы с помощью Playrec и просмотра в окне рабочей области IDE или путем запуска whos('<variable_name_of_page>')
в командной строке.
Если вы посмотрите на Строка 50 из pa_dll_playrec.h
, вы увидите, что одинарная точность выбирается по определению:
/* Format to be used for samples with PortAudio = 32bit */
typedef float SAMPLE;
К сожалению, это не полностью отвечает на вопрос о точной точности выборки, поскольку библиотека PortAudio преобразует выборки изAPI-интерфейсы меняются по формату на определенный. Поэтому, если вы хотите знать, какую точность вы на самом деле получаете, я бы предложил очень прагматичное решение: посмотреть на мантиссу 32-битных значений с плавающей выборкой. Простой fprintf('%+.32f\n', data)
должно хватить, чтобы узнать, сколько фактически используется десятичных знаков.
Редактировать: Я только что понял, что ошибся. Но вот хитрость: запись звука отключенапустого канала вашего аудиоустройства. Отобразите записанные данные и увеличьте уровень шума. Если вы просто получаете нули, устройство, вероятно,не активирован должным образом (или имеет слишком хорошее соотношение сигнал / шум).Попробуйте внешний интерфейс и / или немного увеличьте усиление).В зависимости от фактического разрешения бит записанных данных, вы увидите шаги квантования в выборках.В зависимости от битовой глубины, первоначально использованной квантователем, эти шаги больше или меньше.Ниже вы увидите сравнение между 16-битным (слева) и 24-битным (справа) для отдельно записанных блоков с одного и того же аудиоустройства, только с тем, что я использовал WASAPI API PortAudio (очевидно, в Windows) слева иASIO справа:
Разница совершенно очевидна: при этих очень низких уровнях 16-битные значения допускают только три значения, в то время как 24-битные имеют гораздо более мелкие степпинги.Так что это должно быть достаточным ответом на ваш вопрос о том, как определить real bitdepth и если ваш сигнал записан в 24-битном формате.Если есть примеры шагов меньше, чем 2 ^ -15, шансы довольно хороши.
Просмотр этой темы заставил меня понять, что это очень сильно зависит от API выбранного в настоящее время записывающего устройства, котороеГлубина квантования на самом деле происходит при.Кажется, что ASIO всегда использует 24-битную версию, тогда как, например, WASAPI возвращается к 16-битной.