Biblioteka The MidiBus

⊥Źródło: https://github.com/sparks/themidibus

Pierwszy program wysyła nuty przez interfejs MIDI do dowolnego instrumentu. Po pierwszym uruchomieniu w konsoli interfejsu programu sprawdzamy numer portu MIDI instrumentu, który ma odegrać nuty. Osobno dla wejścia i wyjścia. W moim przypadku wygląda to tak:

Available MIDI Devices:
———-Input———-
[0] “Magistrala 1”
[1] “Saffire 6USB”
[2] “LPD8”
[3] “Maschine Mikro MK2 Input”
[4] “Real Time Sequencer”
———-Output———-
[0] “Gervill”
[1] “Magistrala 1”
[2] “Saffire 6USB”
[3] “LPD8”
[4] “Maschine Mikro MK2 Output”
[5] “Real Time Sequencer”

Wpisałem: myBus = new MidiBus(this, “LPD8”, “Saffire 6USB”);Mogłem też wpisać 2 i 2.
I to praktycznie wszystko. Trochę zmodyfikowałem program, żeby zamiast pojedynczej nuty odtwarzał kolejne.

//MIDI_OUT_yar

import themidibus.*; //Import the library

MidiBus myBus; // The MidiBus

void setup() {
  size(400, 400);
  background(0);

  MidiBus.list(); // List all available Midi devices on STDOUT. This will show each device's index and name.
  myBus = new MidiBus(this, "LPD8", "Saffire 6USB"); // Create a new MidiBus object

  // On mac you will need to use MMJ since Apple's MIDI subsystem doesn't properly support SysEx. 
  // However MMJ doesn't support sending timestamps so you have to turn off timestamps.
  // myBus.sendTimestamps(false);
}

void draw() {
  int channel = 0;
  int pitch = 64;
  int velocity = 110;
for(int i=32; i<98; i=i++){
  myBus.sendNoteOn(channel, i, velocity); // Send a Midi noteOn
  delay(50);
  myBus.sendNoteOff(channel, i, velocity); // Send a Midi nodeOff
  delay(50);}

  delay(5);
}

void delay(int time) {
  int current = millis();
  while (millis () < current+time) Thread.yield();
}