Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Das "Musical Instrument Digital Interface" ist ein Protokoll das für den Umgang mit digitalen Instrumenten und Controllern entwickelt wurde.

Tools

Processing Beispiel

Für die Übergabe der Werte von Processing zu anderen Programmen über MIDI verwenden wir die Library “TheMidiBus” (http://www.smallbutdigital.com/themidibus.php). Die Library kann über den Library-Manager bequem installiert werden.

Es gibt im wesentlichen zwei Arten von Midi Signalen, welche ihr mit Hilfe der MidiBus-Library erstellen könnt. Diese orientieren sich an den Signalen, die ihr auch mit den Midi-Keyboards auslösen könnt.

1. sendMidiNote(channel, pitch, velocity)
channel = Kanal auf dem gesendet wird
pitch = Tonhöhe
velocity = Anschlag

Die Funktion sendMidiNote() könnt ihr verwenden, wenn ihr ON/OFF Events an MuLab übergeben möchtet. Sie entspricht den Tastenanschlägen auf der Midi-Tastatur. 

2. sendControllerChange(channel, number, value)
channel = Kanal auf dem gesendet wird
number = Nummer des Controllers
value = Wert der gesendet werden soll

Die Funktion sendControllerChange() wird verwendet, falls eine kontinuierliche Veränderung hervorgerufen werden soll. Sie entspricht dem drehen eines Reglers aus der Midi-Tastatur.

Im folgenden ein kleines Beispiel, das demonstriert, wie sowohl eine MidiNote, wie auch ein ControllerChange gesendet werden kann.

Beispiel MIDI Senden
import themidibus.*; //Import MidiBus library
MidiBus myBus; //Name for the Instance of MidiBus
//Values for sending a note
int channel = 1;
int pitch = 64;
int velocity = 127;
//Values for sending a controllerChange
int number = 20;
int value = 0;
int oldValue = 0;

void setup()
{
  size(400, 400);
  background(0);
  MidiBus.list(); // List all available Midi devices
  myBus = new MidiBus(this, "", "P5toMIDI"); //Mac
  //myBus = new MidiBus(this, "", ""); //Win
}

void draw()
{
  value = int(map(mouseX, 0, width, 0, 127));
  if (value!=oldValue)
  {
    myBus.sendControllerChange(channel, number, value);
  }
  oldValue = value;
}

void keyPressed()
{
  switch(key)
  {
  case ‘a’:
    myBus.sendNoteOn(channel, pitch, velocity); // Send a Midi noteOn
    break;
  }
}

void keyReleased()
{
  switch(key)
  {
  case ‘a’:
    myBus.sendNoteOff(channel, pitch, velocity); // Send a Midi nodeOff
    break;
  }
}