Используя поверхность управления MIDI, чтобы взаимодействовать с моделью Simulink

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

Введение

Несмотря на то, что MIDI известен прежде всего своим использованием в аудиоприложениях, этот пример иллюстрирует, что поверхности управления MIDI имеют использование во многих других приложениях помимо аудио. В этом примере мы используем MIDI-контроллер, чтобы предоставить пользователю конфигурируемое значение, которое может отличаться во времени выполнения, мы используем его, чтобы управлять амплитудой сигналов, и в нескольких других иллюстративных целях. Этот пример не является всесторонним, а скорее может обеспечить вдохновение для другого творческого использования поверхности управления, чтобы взаимодействовать с моделью.

"Поверхностями управления MIDI", мы имеем в виду физическое устройство это

  1. имеет кнопки, ползунки и кнопки,

  2. и использует MIDI (Цифровой интерфейс музыкальных инструментов) протокол.

Много MIDI-контроллеров включают USB-порт на компьютере и используют поддержку MIDI, встроенную в современные операционные системы. Определенные поверхности управления MIDI, которые мы использовали, включают Korg nanoKONTROL и Behringer BCF2000. Преимуществом устройства Korg является своя стоимость: это легко доступно онлайн по ценам, сопоставимым с той из хорошей мыши. Устройство Behringer является более дорогостоящим, но имеет расширенную возможность и отправить и получить сигналы MIDI (Korg может только отправить сигналы). Эта способность может использоваться, чтобы передать данные обратно из модели, чтобы сохранить поверхность управления в синхронизации с изменениями в модели. Мы используем эту возможность принести поверхность управления в синхронизации с отправной точкой модели, так, чтобы первоначально изменился на определенное управление, не вызывают резкие изменения в блоке вывод.

Чтобы использовать ваш собственный контроллер с этим примером, включите его в USB-порт на компьютере и запустите модель audiomidi. Убедитесь, что модель не запускается, когда вы включаете управляющее устройство. Модель первоначально сконфигурирована таким образом, что она отвечает на перемещение любого управления на MIDI-устройстве по умолчанию. Эта конструкция предназначается, чтобы облегчить и более вероятно что этот пример работает из поля на всех пользователей. В действительном варианте использования вы, вероятно, хотели бы связать отдельные средства управления с каждым подфрагментом модели. С этой целью можно использовать функцию midiid, чтобы явным образом установить параметр MIDI-устройства на соответствующих блоках в модели, чтобы распознать определенное управление. Например, выполнение midiid с устройством Korg nanoKONTROL производит следующую информацию:

>> [ctl device]=midiid
Move the control you wish to identify; type ^C to abort.
Waiting for control message... done
ctl =
      1002
device =
nanoKONTROL

Фактическое значение ctl зависит, в которое управление вы переместились.

Если вы будете использовать конкретный контроллер неоднократно, можно хотеть использовать команду setpref, чтобы установить тот контроллер как устройство midi по умолчанию:

>> setpref('midi','DefaultDevice','nanoKONTROL')

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

После того, как контроллер включается, поразите кнопку воспроизведения в audiomidi. Теперь переместите любую кнопку или ползунок. Необходимо видеть изменения в сигналах, которые построены в различных осциллографах в модели, когда вы перемещаете любую кнопку или ползунок. Модель первоначально сконфигурирована, чтобы ответить на любое управление.

Примеры

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

Пример 1: средства управления MIDI как определяемый пользователем источник

В примере 1 из модели мы видим самое простое использование этого управления. Это может действовать как источник, который является объектом контроля за работой пользователей. Исходный блок MIDI Controls (в исходной библиотеке блоков DSP), выводит значение между 0 и 1. Мы также создали немного измененный блок путем размещения маски в исходный блок, чтобы вывести источник со значениями, которые покрывают определяемую пользователем область значений.

Пример 2: средства управления MIDI, чтобы настроить уровень одного сигнала

В этом примере прямое приложение блока средств управления MIDI использует от 0 до 1 области значений как амплитудное управление на данном сигнале.

Пример 3: средства управления MIDI, чтобы разделить сигнал в два потока с пользователем управляемые относительные амплитуды.

В этом примере мы видим пример, где сигнал разделен в два потока: и где может в интерактивном режиме управляться пользователем с поверхностью управления.

Пример 4: средства управления MIDI, чтобы смешать два сигнала в один

В этом примере мы создаем произвольную линейную комбинацию двух входных параметров: с тем, чтобы быть установленным в интерактивном режиме пользователем с поверхностью управления.

Пример 5: средства управления MIDI, чтобы сгенерировать синусоиду с произвольной фазой

Наконец, пример 5 позволяет вводу данных пользователем желаемую фазу с поверхностью управления. Синусоида с той фазой затем сгенерирована. Фаза может в интерактивном режиме отличаться, когда модель запускается.

Заключения

Эта модель предоставлена, чтобы дать вдохновение для того, как блок MIDI Controls может использоваться, чтобы взаимодействовать с моделью. Другое использование возможно и поощряется, включая использование со сгенерированным кодом.