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

Version 1 Next »

Für die Übergabe der Werte von Processing zu anderen Programmen über MIDI verwenden wir die Library “TheMidiBus” (http://www.smallbutdigital.com/themidibus.php). Diese müsst ihr herunterladen und in euer Processing-Library-Verzeichniss kopieren (z.B. “Users/itz/Documents/Processing/libraries/). Dann stehen euch die Funktionen der Library zur Verfügung.

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