exponenta event banner

К аудиоустройству

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

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

Примечание

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

  • To Audio Device block

Библиотека

Сливы

dspsnks4

Описание

Блок «К аудиоустройству» отправляет аудиоданные на аудиоустройство компьютера. Этот блок не поддерживается для использования с блоком модели Simulink ®.

Используйте параметр Device, чтобы указать устройство, на которое требуется отправить аудиоданные. Этот параметр заполняется автоматически на основе аудиоустройств, установленных в системе.

Установите флажок Наследовать частоту дискретизации из ввода, если требуется, чтобы блок наследовал частоту дискретизации аудиосигнала от входа к блоку. Если этот флажок снят, в блоке появится параметр Частота дискретизации (Гц). Этот параметр используется для указания количества выборок в секунду в сигнале.

Диапазон поддерживаемых частот дискретизации аудиоустройств и форматов типа данных зависит как от звуковой платы, так и от API, выбранного для звуковой платы.

Тип данных устройства используется для указания типа данных звуковых данных, отправляемых на устройство. Можно выбрать:

  • 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. На каждом этапе времени блоки посылают буфер выборок из верхней части очереди на аудиоустройство. Установите флажок Автоматически определять размер буфера, чтобы разрешить блоку использовать консервативный размер буфера. Уравнение, используемое блоком для вычисления размера буфера, см. на странице со ссылкой на блок «From Audio Device». Если этот флажок снят, в блоке появится параметр Размер буфера (пробы). Этот параметр используется для указания размера буфера в выборках.

  3. Блок записывает буфер аудиоданных в устройство. Если очередь не содержит достаточного количества данных для полного заполнения буфера, блок заполняет оставшуюся часть буфера нулями. Эти данные имеют тип данных, указанный параметром Тип данных устройства.

Когда скорость моделирования ниже, чем скорость аппаратного обеспечения, очередь, которая изначально заполнена, становится пустой. Если очередь пуста, блок отправляет нули (молчание) на аудиоустройство. Вы можете контролировать вставленные нули с помощью дополнительного Underrun выходной порт. Когда скорость моделирования превышает скорость аппаратного обеспечения, блок «К аудиоустройству» ожидает записи данных в очередь.

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

Отображение каналов

Термин «отображение каналов» относится к отображению 1 к 1, которое связывает каналы на выбранном аудиоустройстве с каналами данных. При воспроизведении звука отображение канала позволяет указать, какой канал аудиоустройства направляет ввод в конкретный канал аудиоданных. Отображение каналов можно задать как вектор индексов выходных каналов, соответствующих каждому выходному каналу записываемых данных. Значение по умолчанию в параметре Device Output Channel равно 1:MAXOUTPUTCHANNELS. Если сопоставление по умолчанию не выбрано, необходимо указать параметр Device Output Channel в диалоговом окне.

Пример: Выбранное выходное аудиоустройство содержит 8 каналов. Выводимые данные имеют размеры N × 3 (3-канальные данные). Необходимо перенаправить выходные данные следующим образом:

  • Первый канал данных для аудиоустройства канал 3

  • Второй канал передачи данных к каналу аудиоустройства 1

  • Третий канал передачи данных к каналу 8 аудиоустройства

Таким образом, необходимо указать каналы вывода устройства как [3 1 8].

Поиск неисправностей

Не успевать в реальном времени

Когда Simulink не успевает за звуковым устройством, работающим в режиме реального времени, очередь становится пустой, и возникают пробелы в звуковых данных, которые блок отправляет устройству. Установите флажок Output number of samples when the queue was underrun (Количество выходных выборок, по которым очередь была недоиспользована), чтобы добавить выходной порт, указывающий, когда очередь была пустой. Вот несколько способов справиться с этой ситуацией:

  • Увеличение продолжительности очереди.

    Параметр Queue duration (seconds) определяет длительность сигнала в секундах, который может быть буферизован во время моделирования. Это максимальный промежуток времени, в течение которого подача данных блока может задерживать потребность оборудования в данных.

  • Увеличьте размер буфера.

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

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

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

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

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

API звукового оборудования

Блоки To Audio Device и From Audio Device используют библиотеку PortAudio с открытым исходным кодом для связи со звуковым оборудованием на данном компьютере. Библиотека PortAudio поддерживает ряд интерфейсов API, предназначенных для взаимодействия со звуковым оборудованием на данной платформе. При создании библиотеки PortAudio для продукта DSP System Toolbox™ были выбраны следующие варианты API:

  • Windows: DirectSound, WDM-KS, ASIO™

  • Linux ®: ALSA, OSS

  • Mac: CoreAudio

Для Windows по умолчанию используется DirectSound, для Linux - ALSA, а для Mac есть только один выбор.

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

getpref('dsp','portaudioHostApi')   
Выходные данные представляют собой скаляр, указывающий выбор API.

  • 1 - DirectSound

  • 3 - ASIO

  • 7 - OSS

  • 8 - ALSA

  • 11 - WDM-KS

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

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

Параметры

Устройство

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

Наследовать частоту выборки из входных данных

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

Частота дискретизации (Гц)

Укажите количество выборок в секунду в сигнале. Этот параметр отображается при снятии флажка Наследовать частоту выборки из ввода.

Тип данных устройства

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

Автоматически определять размер буфера

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

Размер буфера (выборки)

Укажите размер буфера. Этот параметр отображается при снятии флажка Автоматически определять размер буфера.

Продолжительность очереди (в секундах)

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

Использовать сопоставление по умолчанию между каналами вывода данных и устройств

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

Выходные каналы устройства

Укажите сопоставление каналов. Этот параметр отображается, если флажок Использовать сопоставление по умолчанию между каналами ввода и данными устройства отключен.

«Выходное число выборок, на которое была недоиспользована очередь»

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

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

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

Вход

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

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

  • 32-разрядные целые числа со знаком

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

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

Недогрузка

32-разрядное целое число без знака

См. также

Из аудиоустройстваИнструментарий системы DSP
В мультимедийный файлИнструментарий системы DSP
audioplayerMATLAB
soundMATLAB
Представлен в R2007b