midisend

Отправьте сообщение MIDI в MIDI-устройство

Описание

пример

midisend(device,msg) отправляет сообщение MIDI, msg, к MIDI-устройству с помощью интерфейса MIDI-устройства, device.

пример

midisend(device,varargin) создает сообщения MIDI с помощью varargin и затем отправляет сообщения MIDI. varargin синтаксис для удобства и включает вызов midimsg с вызовом midisend.

Примеры

свернуть все

Запросите свою систему для доступных выходных портов 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.

Задайте msg когда объект создается midimsg.

Задайте varargin как допустимая комбинация аргументов, которые могут создать сообщение MIDI. Смотрите midimsg для описания допустимых аргументов.

Введенный в R2018a