В этом примере показано, как использовать поверхность управления MIDI в качестве физического интерфейса пользователя для модели Simulink, позволяя использовать ручки, ползунки и кнопки для взаимодействия с этой моделью. Он может использоваться в Simulink, а также с генерируемым кодом, выполняемым на рабочей станции.
Хотя MIDI наиболее известен своим использованием в звуковых приложениях, этот пример иллюстрирует, что MIDI управляющие поверхности используют во многих других приложениях, помимо аудио. В этом примере мы используем MIDI контроллер для обеспечения настраиваемого пользователем значения, которое может изменяться во время выполнения, мы используем его для управления амплитудой сигналов, и для нескольких других иллюстративных целей. Этот пример не является всеобъемлющим, а скорее может дать вдохновение для других творческих применений управляющей поверхности для взаимодействия с моделью.
Под «управляющими поверхностями MIDI» мы подразумеваем физическое устройство, которое
содержит ручки, ползунки и кнопки,
и использует протокол MIDI (цифровой интерфейс музыкального инструмента).
Многие MIDI-контроллеры подключаются к USB-порту компьютера и используют поддержку MIDI, встроенную в современные операционные системы. Конкретные контрольные поверхности MIDI, которые мы использовали, включают Korg nanoKONTROL и 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 для установки этого контроллера в качестве среднего устройства по умолчанию:
>> setpref('midi','DefaultDevice','nanoKONTROL')Эта возможность особенно полезна в Linux, где управляющая поверхность не может быть сразу распознана как устройство по умолчанию.
После подключения контроллера нажмите кнопку воспроизведения на audiomidi. Теперь переместите любую ручку или ползунок. При перемещении ручки или ползунка следует видеть изменения в сигналах, выводимых на печать в различных областях модели. Модель изначально настроена на реагирование на любой элемент управления.
Далее приводится несколько примеров использования. В каждом примере используется базовый MIDI Controls блок для выполнения другой задачи. Посмотрите под маской соответствующего блока в каждом примере, чтобы увидеть, как был выполнен этот пример использования. Чтобы повторно использовать их в собственной модели, просто перетащите копию нужного блока в модель.
В примере 1 модели мы видим простейшее использование этого элемента управления. Он может выступать в качестве источника, находящегося под контролем пользователя. Исходный блок MIDI Controls (в библиотеке блоков источников DSP) выводит значение от 0 до 1. Мы также создали немного измененный блок, разместив маску на исходном блоке для вывода источника со значениями, охватывающими определенный пользователем диапазон.
В этом примере прямое применение блока управления MIDI использует диапазон от 0 до 1 в качестве управления амплитудой для данного сигнала.
В этом примере мы видим пример, где сигнал разделяется на два потока:
и
где
может интерактивно управляться пользователем с управляющей поверхностью.
В этом примере создадим произвольную линейную комбинацию из двух входов:
с
установкой в интерактивном режиме пользователем с управляющей поверхностью.
Наконец, пример 5 позволяет пользователю вводить требуемую фазу с управляющей поверхностью. Затем образуется синусоида с этой фазой. Фазу можно интерактивно изменять при запуске модели.
![]()
Эта модель предназначена для того, чтобы дать вдохновение относительно того, как блок MIDI Controls может использоваться для взаимодействия с моделью. Возможны и поощряются другие виды использования, включая использование с сгенерированным кодом.