Запись аудио данных в аудио устройство компьютера
Примечание
Блок To Audio Device будет удален в следующем релизе. Существующие образцы блока продолжают запускаться. Для новых моделей используйте вместо этого блок Audio Device Writer.
Сливы
dspsnks4
Блок Аудио устройство To отправляет аудио данных на аудио устройство вашего компьютера. Этот блок не поддерживается для использования с Simulink® Моделируйте блок.
Используйте параметр Device, чтобы задать устройство, которому вы хотите отправить аудио данных. Этот параметр заполняется автоматически на основе аудио устройств, установленной в вашей системе.
Установите флажок Inherit sample rate from input, если вы хотите, чтобы блок унаследовал частоту дискретизации аудиосигнала от входа к блоку. Если снять этот флажок, на блоке появится параметр Sample rate (Hz). Используйте этот параметр, чтобы задать количество выборок в секунду в сигнале.
Область значений поддерживаемых частот аудио устройств выборки и форматов типов данных зависят как от звуковой платы, так и от API, выбранного для звуковой карты.
Используйте Device data type, чтобы задать тип данных аудиоданных, которые отправляются на устройство. Вы можете выбрать:
8-bit integer
16-bit integer
24-bit integer
32-bit float
Determine from input data type
Если вы выбираете Determine from input data type
, следующая таблица суммирует поведение блока.
Тип входных данных | Тип данных устройства |
---|---|
Плавающая точка двойной точности или одинарная точность с плавающей точкой | 32-битная плавающая точка |
32-битное целое число | 24-битное целое число |
16-битное целое число | 16-битное целое число |
8-битное целое число | 8-битное целое число |
Если вы выбираете Determine from input data type
и устройство не поддерживает тип входных данных, блок использует следующий тип данных самой низкой точности, поддерживаемый устройством.
Сгенерированный код для этого блока полагается на предварительно созданные файлы .dll. Вы можете запустить этот код вне MATLAB® окружение, или перенаправить его, но обязательно учтите эти дополнительные файлы .dll при этом. Функция packNGo создает одну zip- файла, содержащую все части, необходимые для выполнения или перестроения этого кода. Посмотрите packNGo
(Simulink Coder) для получения дополнительной информации.
Блок To Audio Device буферизирует данные от сигнала Simulink, используя процесс, проиллюстрированный следующим рисунком.
В начале симуляции очередь заполняется тишиной. Задайте размер этой очереди, используя параметр Queue duration (seconds). Когда Simulink запускается, блок добавляет системы координат Simulink к нижней части очереди.
На каждом временном шаге блоки отправляют буфер выборок из верхней части очереди в аудио устройство. Установите флажок Automatically determine buffer size, чтобы позволить блоку использовать консервативный buffer size. Смотрите From Audio Device страницы с описанием блоков для уравнения, которое блок использует для вычисления этого buffer size. Если снять этот флажок, на блоке появится параметр Buffer size (samples). Используйте этот параметр, чтобы задать размер буфера в выборках.
Блок записывает буфер аудио данных на устройство. Если в очереди недостаточно данных, чтобы полностью заполнить буфер, блок заполняет оставшийся фрагмент буфера нулями. Эти данные имеют тип данных, заданный параметром Device data type.
Когда пропускная способность симуляции ниже, чем аппаратная пропускная способность, очередь, которая первоначально заполнена, становится пустой. Если очередь пуста, блок отправляет аудио устройство нули (тишина). Можно контролировать вставленные нули с помощью дополнительной Underrun
выходной порт. Когда пропускная способность симуляции выше, чем оборудования пропускная способность, блок To Аудио устройства ожидает записи данных в очередь.
Чтобы минимизировать вероятность отсева, блок проверяет, чтобы убедиться, что длительность очереди, по крайней мере, так велика, как максимум buffer size и формата кадра. Если это не так, длительность очереди автоматически устанавливается на это максимальное значение.
Термин Channel Mapping относится к отображению 1 к 1, которое связывает каналы на выбранном аудио устройстве с каналами данных. Когда вы воспроизводите аудио, отображение канала позволяет вам задать, какой канал аудио устройства направляет вход в определенный канал аудио данных. Можно задать отображение канала как вектор индексов выходов канала, соответствующих каждому выходу каналу записываемых данных. Значение по умолчанию в параметре Device Output Channels является 1:MAXOUTPUTCHANNELS. Если вы не выбираете отображение по умолчанию, необходимо задать параметр Device Output Channels в диалоговом окне.
Пример: Выбранный выход аудио устройства содержит 8 каналов. Выводимые данные имеют размерности N × 3 (3-канальные данные). Вы хотите, чтобы выход был перенаправлен следующим образом:
Первый канал данных для Аудио устройства канала 3
Второй канал данных для Аудио устройства канала 1
Третий канал данных для Аудио устройства канала 8
Таким образом, вы бы указали Device Output Channels как [3 1 8].
Когда Simulink не может идти в ногу с аудио устройством, которая работает в реальном времени, очередь становится пустой, и в аудио данных, которую блок отправляет устройству, возникают разрывы. Установите флажок Output number of samples by which the queue was underrun, чтобы добавить порт выхода, указывающий, когда очередь была пустой. Вот несколько способов справиться с этой ситуацией:
Увеличьте длительность очереди.
Параметр Queue duration (seconds) задает длительность сигнала, в секундах, который может быть буферизован во время симуляции. Это - максимальный промежуток времени, в течение которого источник данных блока может задержать потребность оборудования в данных.
Увеличьте buffer size.
Размер буфера, обработанного в каждом прерывании из аудио устройства, влияет на эффективность вашей модели. Если буфер слишком мал, для записи данных на устройство используется большой фрагмент оборудования ресурсов. Если буфер слишком велик, Simulink должен дождаться, когда устройство опустошит буфер, прежде чем оно сможет записать данные в очередь, что вводит задержки.
Увеличьте пропускную способность симуляции.
Двумя полезными методами для улучшения пропускной способности симуляции являются увеличение формата кадра сигнала и компиляция симуляции в нативный код:
Увеличьте форматы кадра и используйте обработку на основе кадра во всей модели, чтобы уменьшить количество служебных данных связи между блоками. Это может увеличить пропускную способность во многих случаях. Однако большие форматы кадра обычно приводят к большей задержке модели из-за начальных операций буферизации.
Сгенерируйте исполняемый код с помощью программного обеспечения Simulink Coder™ генерации кода. Собственный код работает намного быстрее, чем Simulink, и должен обеспечивать скорости, адекватные для обработки звука в реальном времени.
Другие способы улучшить пропускную способность включают упрощение модели и выполнение симуляции на более быстром процессоре ПК. Для других идей улучшить производительность симуляции, посмотрите Задержку и Время ожидания и Оптимизируйте Эффективность (Simulink).
Чтобы запустить сгенерированное автономное исполняемое приложение в Shell, необходимо задать следующее окружение:
Платформа | Команда |
---|---|
Mac |
|
Linux |
|
Windows |
|
Блоки To Audio Device и From Audio Device могут поддерживать несколько каналов. В Windows® операционные системы, отображение канала с динамиком определяется как указано ниже. Это отображение применяется только в том случае, если звуковая карта правильно сконфигурирована и способна принимать аудио данных, которое вы отправляете. Если количество каналов на карте не совпадает с количеством каналов на блоке, или если вы задаете тип данных для параметра Device data type, который не поддерживается вашим устройством, миксер Windows вмешивается, чтобы перевести из одного формата в другой. Если микшер Windows действительно вмешивается, отображение канала с динамиком может отличаться от заданного здесь.
Одноканальный вход - Фронтальный центральный динамик
В системах с двумя динамиками передний центральный канал разделен между правым и левым динамиками.
Многоканальный вход - Каналы назначаются динамикам следующим образом:
Блоки Аудио устройства To Аудио устройства и From используют библиотеку PortAudio с открытым исходным кодом в порядок для связи с аудио оборудования на данном компьютере. Библиотека PortAudio поддерживает область значений API, предназначенных для связи с аудио оборудованием на данной платформе. При создании библиотеки PortAudio для продукта DSP System Toolbox™ были сделаны следующие варианты API:
Windows: DirectSound, WDM-KS, ASIO™
Linux®: ALSA, OSS
Mac: CoreAudio
Для Windows по умолчанию является DirectSound, для Linux - ALSA, а для Mac есть только один выбор.
Чтобы определить выбранный на данный момент audio hardware API, введите следующую команду в командной строке MATLAB.
getpref('dsp','portaudioHostApi')
1 - DirectSound
3 - ASIO
7 - ОСС
8 - ALSA
11 - WDM-KS
Чтобы выбрать конкретный API, введите следующую команду в командной строке MATLAB.
setpref('dsp','portaudioHostApi',N)
Укажите, на какое устройство отправлять аудио данных.
Установите этот флажок, если вы хотите, чтобы блок унаследовал частоту дискретизации аудиосигнала от входа к блоку.
Задайте количество выборок в секунду в сигнале. Этот параметр видим, когда флажок Inherit sample rate from input снят.
Укажите тип данных аудиоданных, отправляемых на устройство.
Установите этот флажок, чтобы позволить блоку вычислить консервативный buffer size.
Укажите размер буфера. Этот параметр видим, когда флажок Automatically determine buffer size снят.
Задайте размер очереди в секундах.
Установите этот флажок, чтобы иметь сопоставление по умолчанию, где данные из первого канала аудио устройства передаются в первый канал входных данных, данные из второго канала аудио устройства передаются во второй канал данных и так далее. Максимальное количество каналов во входных данных определяется свойством Number of channels.
Задайте отображение канала. Этот параметр видим, когда флажок Use default mapping between Device Input Channels and Data отключен.
Установите этот флажок, чтобы вывести количество нулевых выборок, вставленных в аудиопоток из-за незавершенной очереди с момента последней передачи системы координат в аудио устройство. Вы можете использовать это значение для отладки проблем с пропускной способностью и настройки очередей и буферов в вашей модели. Чтобы узнать, как улучшить пропускную способность, смотрите Поиск и устранение проблем.
Порт | Поддерживаемые типы данных |
---|---|
Вход |
|
Недогрузка | 32-битное беззнаковое целое число |
From Audio Device | DSP System Toolbox |
To Multimedia File | DSP System Toolbox |
audioplayer | MATLAB |
sound | MATLAB |