midireceive

Получите сообщение MIDI от устройства MIDI

Описание

пример

msgs = midireceive(device) возвращает сообщения MIDI, msgs, полученный от устройства MIDI с помощью интерфейса устройства MIDI, device.

пример

msgs = midireceive(device,maxmsgs) задает максимальное количество сообщений MIDI, возвращаемых как maxmsgs.

Примеры

свернуть все

Чтобы определить, какие устройства MIDI подключены к портам входа MIDI, вызовите mididevinfo. Используйте availableDevices struct, чтобы задать допустимое устройство MIDI для создания mididevice объект.

availableDevices = mididevinfo;
device = mididevice(availableDevices.input(1).ID);

Когда ваш MIDI device создается объект, он начинает прослушивать MIDI-сообщения с вашего заданного устройства и хранить их в буфере. Чтобы получить все сообщения MIDI в буфере, вызовите midireceive. В этом примере воспроизводится несколько клавиш на MIDI-клавиатуре.

msgs = midireceive(device)
msgs = 

  MIDI message:
    NoteOn          Channel: 1  Note: 52  Velocity: 64  Timestamp: 3.94  [ 90 34 40 ]
    NoteOn          Channel: 1  Note: 52  Velocity: 0   Timestamp: 4.179  [ 90 34 00 ]
    NoteOn          Channel: 1  Note: 48  Velocity: 64  Timestamp: 4.19  [ 90 30 40 ]
    NoteOn          Channel: 1  Note: 47  Velocity: 64  Timestamp: 4.382  [ 90 2F 40 ]
    NoteOn          Channel: 1  Note: 48  Velocity: 0   Timestamp: 4.459  [ 90 30 00 ]
    NoteOn          Channel: 1  Note: 48  Velocity: 64  Timestamp: 4.59  [ 90 30 40 ]
    NoteOn          Channel: 1  Note: 47  Velocity: 0   Timestamp: 4.776  [ 90 2F 00 ]
    NoteOn          Channel: 1  Note: 50  Velocity: 64  Timestamp: 4.788  [ 90 32 40 ]
    NoteOn          Channel: 1  Note: 47  Velocity: 64  Timestamp: 4.802  [ 90 2F 40 ]
    NoteOn          Channel: 1  Note: 52  Velocity: 64  Timestamp: 4.831  [ 90 34 40 ]
    NoteOn          Channel: 1  Note: 47  Velocity: 0   Timestamp: 4.84  [ 90 2F 00 ]
    NoteOn          Channel: 1  Note: 48  Velocity: 0   Timestamp: 4.912  [ 90 30 00 ]
    NoteOn          Channel: 1  Note: 52  Velocity: 0   Timestamp: 4.953  [ 90 34 00 ]
    NoteOn          Channel: 1  Note: 50  Velocity: 0   Timestamp: 5.079  [ 90 32 00 ]

Чтение из буфера очищает данные. Для примера, если больше не отправляются сообщения MIDI, и буфер перечитывается, midireceive возвращает пустое сообщение MIDI.

msgs = midireceive(device)
msgs = 

  empty MIDI message array

Запросите у системы доступные выходы с устройств MIDI. Укажите, что выход устройства MIDI подключен к входу вашего mididevice объект.

mididevinfo
  MIDI devices available:
  ID  Direction  Interface   Name
   0   output    MMSystem   'Microsoft MIDI Mapper'
   1    input    MMSystem   'USB MIDI Interface '
   2   output    MMSystem   'Microsoft GS Wavetable Synth'
   3   output    MMSystem   'USB MIDI Interface '
device = mididevice('Input','USB MIDI Interface ');

Когда ваш MIDI device создается объект, он начинает прослушивать MIDI-сообщения с вашего заданного устройства и хранить их в буфере. Чтобы получить ограниченное количество сообщений MIDI из буфера, вызовите midireceive и укажите максимальное количество возвращаемых сообщений. В этом примере пять клавиш воспроизводятся на MIDI-устройстве. При каждом вызове принимается не более четырех сообщений MIDI midireceive.

midireceive(device,4)
ans = 

  MIDI message:
    NoteOn          Channel: 1  Note: 36  Velocity: 64  Timestamp: 2929.71  [ 90 24 40 ]
    NoteOn          Channel: 1  Note: 36  Velocity: 0   Timestamp: 2929.91  [ 90 24 00 ]
    NoteOn          Channel: 1  Note: 37  Velocity: 64  Timestamp: 2930.43  [ 90 25 40 ]
    NoteOn          Channel: 1  Note: 37  Velocity: 0   Timestamp: 2930.59  [ 90 25 00 ]
midireceive(device,4)
ans = 

  MIDI message:
    NoteOn          Channel: 1  Note: 38  Velocity: 64  Timestamp: 2931.16  [ 90 26 40 ]
    NoteOn          Channel: 1  Note: 38  Velocity: 0   Timestamp: 2931.32  [ 90 26 00 ]
    NoteOn          Channel: 1  Note: 39  Velocity: 64  Timestamp: 2931.87  [ 90 27 40 ]
    NoteOn          Channel: 1  Note: 39  Velocity: 0   Timestamp: 2932.01  [ 90 27 00 ]
midireceive(device,4)
ans = 

  MIDI message:
    NoteOn          Channel: 1  Note: 40  Velocity: 64  Timestamp: 2932.52  [ 90 28 40 ]
    NoteOn          Channel: 1  Note: 40  Velocity: 0   Timestamp: 2932.66  [ 90 28 00 ]

Входные параметры

свернуть все

Задайте device как объект, созданный mididevice.

Максимальное количество возвращаемых сообщений в виде положительного целочисленного скаляра.

Типы данных: single | double

Выходные аргументы

свернуть все

Объект midimsg, возвращается в виде скаляра или вектора-столбца. Количество сообщений MIDI в mididevice буфер и maxmsgs определить размер msgs.

Введенный в R2018a