Отправьте сообщение MIDI в MIDI-устройство
Запросите свою систему для доступных выходных портов MIDI-устройства. Используйте availableDevices
struct, чтобы задать допустимое MIDI-устройство и создать mididevice
объект.
availableDevices = mididevinfo; device = mididevice(availableDevices.output(2).ID);
Создайте пару NoteOn
сообщения (чтобы указать на Примечание По и Примечание Прочь) и отправляют их в ваше выбранное MIDI-устройство.
msgs = midimsg('Note',1,48,64,0.25);
midisend(device,msgs)
midisend
позволяет вам объединить определение и отправку midimsg
в один вызов функции. Отправьте середину C на канале 3 со скоростью 64.
mididevinfo
MIDI devices available: ID Direction Interface Name 0 output MMSystem 'Microsoft MIDI Mapper' 1 input MMSystem 'nanoKONTROL2' 2 input MMSystem 'USB Uno MIDI Interface' 3 output MMSystem 'Microsoft GS Wavetable Synth' 4 output MMSystem 'nanoKONTROL2' 5 output MMSystem 'USB Uno MIDI Interface'
device = mididevice('USB Uno MIDI Interface')
device = mididevice connected to Input: 'USB Uno MIDI Interface' (2) Output: 'USB Uno MIDI Interface' (5)
midisend(device,'NoteOn',3,60,64)
Получите имя доступного выходного MIDI-устройства в вашей системе.
mInfo = mididevinfo;
Disregard cmd.exe warnings about UNC directory pathnames. Disregard cmd.exe warnings about UNC directory pathnames.
midiDeviceName = mInfo.output(1).Name;
Создайте mididevice
объект.
device = mididevice(midiDeviceName);
Создайте массив сообщения MIDI.
msgs = []; for ii = 1:8 msgs = [msgs;midimsg('Note',1,20+8*ii,64,1,ii)]; end
Чтобы слушать сообщения MIDI, отправьте сообщения MIDI в свое устройство.
midisend(device,msgs)
Чтобы скомпилировать предыдущие шаги, инкапсулируйте код в функции и затем вызовите mcc
.
function playMusic1() mInfo = mididevinfo; midiDeviceName = mInfo.output(1).Name; device = mididevice(midiDeviceName); msgs = []; for ii = 1:8 msgs = [msgs;midimsg('Note',1,20+8*ii,64,1,ii)]; end midisend(device,msgs) end
mcc playMusic1 -m -w disable
Выполните скомпилированный код. Вы не услышите звука. Это вызвано тем, что открытый исполняемый файл, отправил сообщения MIDI очереди, и затем закрылся, прервав ее команды, прежде чем сообщения MIDI имели шанс вопроизвести.
!playMusic1.exe
Чтобы сохранить исполняемый файл открываются достаточно долго для сообщений MIDI, чтобы проигрывать, добавить паузу в исполняемый файл. Установите длительность паузы равняться длительности сообщений MIDI.
function playMusic2() mInfo = mididevinfo; midiDeviceName = mInfo.output(1).Name; device = mididevice(midiDeviceName); msgs = []; for ii = 1:8 msgs = [msgs;midimsg('Note',1,20+8*ii,64,1,ii)]; end midisend(device,msgs) pause(msgs(end).Timestamp) end
mcc playMusic2 -m -w disable
Проигрывайте скомпилированный исполняемый файл. Звук, который проигрывает ваше MIDI-устройство, совпадает с нескомпилированной версией.
!playMusic2.exe
device
— Объект mididevice
Задайте device
когда объект создается mididevice
.
msg
— Объект midimsg
Задайте msg
когда объект создается midimsg
.
varargin
— Переменное количество аргументов, описывающих сообщение MIDImidimsg
входные параметрыЗадайте varargin
как допустимая комбинация аргументов, которые могут создать сообщение MIDI. Смотрите midimsg
для описания допустимых аргументов.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.