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

О MIDI

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

Поверхности управления MIDI

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

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

Простейшие поверхности управления MIDI являются однонаправленными: Они отправляют сообщения MIDI 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 Controls (блок) -- Выход значений из элементов управления на поверхности управления MIDI. Блок MIDI Controls объединяет функциональность общих функций 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. Имя устройства определяется производителем и операционной системой хоста. См. раздел «Контрольные номера» для объяснения того, как MATLAB вычисляет контрольное число.

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

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

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) и управление UI. Коллбэк для midicontrols объект отправляет новые значения в элемент управления UI. Пользовательский интерфейс использует midisync для отправки новых значений в midicontrols объект и поверхность управления MIDI. Посмотрите midisync для примеров.

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

Вы можете использовать midicallback как альтернатива размещению midiread в цикле аудиопотока. Если midicontrols объект получает сообщение Control Change, midicallback автоматически вызывает указанный указатель на функцию. Функция обратного вызова обычно вызывает midiread для определения нового значения элементов управления 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 channel number) × 1000 + (MIDI controller number).

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

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

Ваше устройство MIDI определяет значения MIDI channel number и MIDI controller number.

См. также

Блоки

Функции

Похожие темы

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