To Audio Device

Запись аудио данных в аудио устройство компьютера

Совместимость

Примечание

Блок To Audio Device будет удален в следующем релизе. Существующие образцы блока продолжают запускаться. Для новых моделей используйте вместо этого блок Audio Device Writer.

  • To Audio Device block

Библиотека

Сливы

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, используя процесс, проиллюстрированный следующим рисунком.

  1. В начале симуляции очередь заполняется тишиной. Задайте размер этой очереди, используя параметр Queue duration (seconds). Когда Simulink запускается, блок добавляет системы координат Simulink к нижней части очереди.

  2. На каждом временном шаге блоки отправляют буфер выборок из верхней части очереди в аудио устройство. Установите флажок Automatically determine buffer size, чтобы позволить блоку использовать консервативный buffer size. Смотрите From Audio Device страницы с описанием блоков для уравнения, которое блок использует для вычисления этого buffer size. Если снять этот флажок, на блоке появится параметр Buffer size (samples). Используйте этот параметр, чтобы задать размер буфера в выборках.

  3. Блок записывает буфер аудио данных на устройство. Если в очереди недостаточно данных, чтобы полностью заполнить буфер, блок заполняет оставшийся фрагмент буфера нулями. Эти данные имеют тип данных, заданный параметром 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).

Выполнение исполняемого файла за пределами MATLAB

Чтобы запустить сгенерированное автономное исполняемое приложение в Shell, необходимо задать следующее окружение:

ПлатформаКоманда
Mac

setenv DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maci64 (csh/tcsh)

export DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maci64 (Bash)

Linux

setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/glnxa64 (csh/tcsh)

export LD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/glnxa64 (Bash)

Windows

set PATH = $MATLABROOT\bin\win64;%PATH%

Отображение каналов с динамиками в операционных системах Windows

Блоки To Audio Device и From Audio Device могут поддерживать несколько каналов. В Windows® операционные системы, отображение канала с динамиком определяется как указано ниже. Это отображение применяется только в том случае, если звуковая карта правильно сконфигурирована и способна принимать аудио данных, которое вы отправляете. Если количество каналов на карте не совпадает с количеством каналов на блоке, или если вы задаете тип данных для параметра Device data type, который не поддерживается вашим устройством, миксер Windows вмешивается, чтобы перевести из одного формата в другой. Если микшер Windows действительно вмешивается, отображение канала с динамиком может отличаться от заданного здесь.

  • Одноканальный вход - Фронтальный центральный динамик

    В системах с двумя динамиками передний центральный канал разделен между правым и левым динамиками.

  • Многоканальный вход - Каналы назначаются динамикам следующим образом:

    • Один канал - Передний центр
    • Два канала - Спереди слева, спереди справа
    • Четыре канала - Передний левый, передний правый, задний левый, задний правый
    • Шесть каналов - Передняя левая, передняя правая, передняя центральная, низкая частота, задняя левая, задняя правая
    • Восемь каналов - Передняя левая, передняя правая, передняя центральная, низкая частота, задняя левая, задняя правая, передняя левая центральная, передняя правая центральная
    • Для всех других комбинаций каналов назначение канала диктуется аудиокартой.

Audio Hardware API

Блоки Аудио устройства 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')   
Выходы являются скаляром, указывающим на выбор API.

  • 1 - DirectSound

  • 3 - ASIO

  • 7 - ОСС

  • 8 - ALSA

  • 11 - WDM-KS

Чтобы выбрать конкретный API, введите следующую команду в командной строке MATLAB.

setpref('dsp','portaudioHostApi',N)   
где N - скаляр. Выберите N на основе выбора API выше.

Параметры

Device

Укажите, на какое устройство отправлять аудио данных.

Inherit sample rate from input

Установите этот флажок, если вы хотите, чтобы блок унаследовал частоту дискретизации аудиосигнала от входа к блоку.

Sample rate (Hz)

Задайте количество выборок в секунду в сигнале. Этот параметр видим, когда флажок Inherit sample rate from input снят.

Device data type

Укажите тип данных аудиоданных, отправляемых на устройство.

Automatically determine buffer size

Установите этот флажок, чтобы позволить блоку вычислить консервативный buffer size.

Buffer size (samples)

Укажите размер буфера. Этот параметр видим, когда флажок Automatically determine buffer size снят.

Queue duration (seconds)

Задайте размер очереди в секундах.

Use default mapping between Data and Device Output Channels

Установите этот флажок, чтобы иметь сопоставление по умолчанию, где данные из первого канала аудио устройства передаются в первый канал входных данных, данные из второго канала аудио устройства передаются во второй канал данных и так далее. Максимальное количество каналов во входных данных определяется свойством Number of channels.

Device Output Channels

Задайте отображение канала. Этот параметр видим, когда флажок Use default mapping between Device Input Channels and Data отключен.

Output number of samples by which the queue was underrun

Установите этот флажок, чтобы вывести количество нулевых выборок, вставленных в аудиопоток из-за незавершенной очереди с момента последней передачи системы координат в аудио устройство. Вы можете использовать это значение для отладки проблем с пропускной способностью и настройки очередей и буферов в вашей модели. Чтобы узнать, как улучшить пропускную способность, смотрите Поиск и устранение проблем.

Поддерживаемые типы данных

ПортПоддерживаемые типы данных

Вход

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • 32-битные целые числа со знаком

  • 16-битные целые числа со знаком

  • 8-битные беззнаковые целые числа

Недогрузка

32-битное беззнаковое целое число

См. также

From Audio DeviceDSP System Toolbox
To Multimedia FileDSP System Toolbox
audioplayerMATLAB
soundMATLAB
Введенный в R2007b