Отправьте сообщение 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.exedevice — Объект midideviceЗадайте device когда объект создается mididevice.
msg — Объект midimsgЗадайте msg когда объект создается midimsg.
varargin — Переменное количество аргументов, описывающих сообщение MIDImidimsg входные параметрыЗадайте varargin как допустимая комбинация аргументов, которые могут создать сообщение MIDI. Смотрите midimsg для описания допустимых аргументов.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.