exponenta event banner

Интерфейс управляющей поверхности MIDI

Сведения о MIDI

Musical Instrument Digital Interface (MIDI) был первоначально разработан для соединения электронных музыкальных инструментов. Этот интерфейс является гибким и используется в приложениях далеко за пределами музыкальных инструментов. Его простой однонаправленный протокол обмена сообщениями поддерживает различные виды обмена сообщениями. Одним из видов MIDI-сообщений является сообщение Control Change, которое используется для передачи изменений в элементах управления, таких как ручки, ползунки и кнопки.

Управляющие поверхности MIDI

Поверхность управления MIDI - это устройство с элементами управления, которое отправляет сообщения изменения управления MIDI при повороте ручки, перемещении ползунка или нажатии кнопки на ее поверхности. Каждое сообщение Control Change указывает, какой элемент управления был изменен и каково его новое положение.

Поскольку протокол обмена сообщениями MIDI является однонаправленным, для определения конкретной позиции контроллера требуется, чтобы приемник прослушивал сообщения Control Change, которые посылает контроллер. Протокол не поддерживает запрос положения MIDI-контроллера.

Простейшие управляющие поверхности MIDI однонаправлены: они отправляют сообщения MIDI Control Change, но не получают их. Более сложные управляющие поверхности являются двунаправленными: они могут как отправлять, так и получать сообщения Control Change. Эти управляющие поверхности имеют ручки или ползунки, которые могут работать автоматически. Например, поверхность управления может иметь моторизованные ползунки или ручки. При получении сообщения Control Change соответствующий элемент управления перемещается в положение в сообщении.

Использование управляющих поверхностей MIDI с MATLAB и Simulink

Audio Toolbox™ позволяет использовать управляющие поверхности MIDI для управления программами MATLAB ® и моделями Simulink ®, обеспечивая возможность прослушивания сообщений Control Change. Панель инструментов также предоставляет ограниченную возможность отправки сообщений об изменении элемента управления для поддержки синхронизации элементов управления MIDI. В этом учебном пособии рассматриваются общие функции MIDI. Функции, относящиеся к аудиоплагинам в MATLAB, см. в разделе MIDI Control for Audio Plugins. Общий интерфейс Audio Toolbox для управляющих поверхностей MIDI включает пять функций и один блок:

  • midiid - Интерактивная идентификация управления MIDI.

  • midicontrols - Откройте группу элементов управления MIDI для чтения.

  • midiread -- Возврат последнего значения элементов управления MIDI.

  • midisync -- Отправка значений в элементы управления MIDI для синхронизации.

  • midicallback - Вызовите дескриптор функции, когда MIDI управляет изменением значения.

  • Элементы управления MIDI (блок) - выходные значения элементов управления на поверхности управления MIDI. Блок управления MIDI объединяет функциональные возможности общих функций MIDI в один блок для среды Simulink.

На этой схеме показан типичный поток операций, включающий общие функции MIDI в MATLAB. Для среды Simulink выполните шаги 1 и 2, а затем используйте блок MIDI Controls для рабочего процесса, управляемого пользовательским интерфейсом.

1. Подключите устройство MIDI, а затем запустите MATLAB

Перед запуском MATLAB подключите поверхность управления MIDI к компьютеру и включите ее. Инструкции по подключению см. в инструкциях для устройства MIDI. Если запустить MATLAB перед подключением устройства, MATLAB может не распознать устройство при его подключении. Чтобы устранить проблему, перезапустите MATLAB с уже подключенным устройством.

2. Определение имени устройства и контрольных номеров

Используйте midiid для определения имени устройства и контрольных номеров поверхности управления MIDI. После звонка midiid, он продолжает прослушивать, пока не получит сообщение Control Change. При получении сообщения Control Change возвращается управляющий номер, связанный с номером MIDI-контроллера, которым вы манипулировали, и при необходимости возвращается имя устройства вашей MIDI-поверхности управления. Имя устройства определяется изготовителем и операционной системой хоста. Для получения информации о том, как MATLAB вычисляет управляющий номер, см. раздел Управляющие номера.

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

 Пример просмотра

3. Создание прослушивателя для сообщений об изменении элементов управления

Используйте midicontrols создание объекта, который прослушивает сообщения Control Change и кэширует последние значения, соответствующие указанным контроллерам. При создании midicontrols объект, поверхность управления MIDI задается по имени устройства, а конкретные контроллеры на поверхности - по соответствующим номерам элементов управления. Потому что midicontrols объект не может запрашивать начальные значения на поверхности управления MIDI, рассмотрите возможность установки начальных значений при создании объекта.

 Пример просмотра

4. Получение текущих управляющих значений

Используйте midiread функция для запроса midicontrols объект для текущих управляющих значений. midiread возвращает матрицу со значениями, соответствующими всем контроллерам midicontrols объект прослушивает. Как правило, требуется разместить midiread в цикле аудиопотока для непрерывного обновления.

 Пример просмотра

5. Синхронизация двунаправленных управляющих поверхностей MIDI

Вы можете использовать midisync для отправки сообщений Control Change на поверхность управления MIDI. Если поверхность управления MIDI является двунаправленной, она настраивает указанные контроллеры. Одно важное использование midisync - установка начальных значений положения контроллера на поверхности управления MIDI.

 Пример просмотра

Другое важное использование midisync обновляет поверхность управления MIDI, если управляющие значения корректируются в цикле аудиопотока. В этом случае вы звоните midisync с обоими вашими midicontrols и обновленные управляющие значения.

 Пример просмотра

midisync также является мощным инструментом в системах, которые также включают пользовательские интерфейсы (UI), так что при изменении одного элемента управления другой элемент управления отслеживает его. Как правило, такое отслеживание реализуется путем установки функций обратного вызова на обоих midicontrols объект (с использованием midicallback) и управления пользовательским интерфейсом. Обратный вызов для midicontrols объект отправляет новые значения в элемент управления пользовательского интерфейса. Пользовательский интерфейс использует midisync для отправки новых значений в midicontrols объект и управляющая поверхность MIDI. Посмотрите midisync для примеров.

Альтернатива потоковой обработке

Вы можете использовать midicallback в качестве альтернативы размещению midiread в цикле аудиопотока. Если midicontrols объект получает сообщение Control Change, midicallback автоматически вызывает указанный дескриптор функции. Функция обратного вызова обычно вызывает midiread для определения нового значения элементов управления MIDI. Этот обратный вызов можно использовать, если требуется, чтобы MIDI-контроллер запустил действие, например обновление пользовательского интерфейса. Использование этого подхода предотвращает непрерывное выполнение программы MATLAB в окне команд.

Установка устройства MIDI по умолчанию

Можно установить устройство MIDI по умолчанию в среде MATLAB с помощью setpref функция. Использовать midiid чтобы определить имя устройства, а затем использовать setpref для установки настройки.

[~,deviceName] = midiid
Move the control you wish to identify; type ^C to abort.
Waiting for control message... done

deviceName =

BCF2000
setpref('midi','DefaultDevice',deviceName)
Эта настройка сохраняется в сеансах MATLAB, поэтому ее необходимо задавать только один раз, если не требуется изменить устройства.

Если эта настройка не задана, MATLAB и операционная система хоста выберут для вас устройство. Однако такой автовыбор может привести к непредсказуемым результатам, поскольку на многих компьютерах установлены «виртуальные» (программные) устройства MIDI, о которых вы можете не знать. Для предсказуемого поведения задайте настройку.

Контрольные номера

MATLAB определяет контрольные номера как (номер канала MIDI) × 1000 + (номер контроллера MIDI).

  • Номер канала MIDI - это канал передачи, используемый устройством для отправки сообщений. Это значение находится в диапазоне 1-16.

  • Номер контроллера MIDI - это номер, присвоенный отдельному элементу управления устройства MIDI. Это значение находится в диапазоне 1-127.

Устройство MIDI определяет значения номера канала MIDI и номера контроллера MIDI.

См. также

Блоки

Функции

Связанные темы

Внешние веб-сайты