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);

Однажды ваш device MIDI объект создается, он начинает слушать сообщения 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 ');

Однажды ваш device MIDI объект создается, он начинает слушать сообщения 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.

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

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

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

свернуть все

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

Введенный в R2018a