Oder Text markieren und Enter drücken…

Visualisierung von MIDI-Daten mit Processing (Win)

MIDI-Datenströme in Echtzeit in Processing unter Windows visuell darstellen.

Achtung:
Diese Anleitung gilt für Windows-Betriebssysteme, für Mac OSX siehe:
Visualisierung von MIDI-Daten mit Processing (Mac)

Benötigte Programme:

ProMIDI

MIDI-Bibliothek für Processing
http://www.texone.org/promidi/

Bome‘s Mouse Keyboard 2.0

Virtuelles MIDI-Instrument. Simuliert eine Klaviatur, die man mit der Maus oder Tastaur spielen kann.
http://www.bome.com/midi/keyboard/download.html

MIDI Yoke NT 1.75

Virtuelles MIDI-Patchkabel
http://www.midiox.com/index.htm?http://www.midiox.com/myoke.htm

MIDI-OX 7.0

Monitor der alle MIDI-Aktivitäten des Systems anzeigt, praktisch bei der Fehlersuche
http://www.midiox.com/?http://www.midiox.com/moxdown.htm

 

Vorgehensweise

 

Mididaten aus Bome‘s Mouse Keyboard in Processing empfangen:

1. Den Ordner "promidi" in folgendes Verzeichnis kopieren: "Programme\Processing 0135\libraries"

2. MIDI Yoke installieren. Es werden keine Programmverknüpfungen angelegt, nach der Installation erscheint lediglich der Eintrag "MYokeNT" in der Systemsteuerung, dort kann man die Anzahl der virtuellen Kabel einstellen.

MidiYoke Icon


3. Bome‘s Mouse Keyboard installieren und starten

4. In Bome‘s Mouse Keyboard im Menü "Midi Out" das erste virtuelle MIDI Kabel wählen: "Out To MIDI Yoke 1"

Bome's Mouse Keyboard



5. Procesing öffnen und folgenden Code einfügen:


// Code by Christian Riekoff
// http://www.texone.org/promidi/

import promidi.*;
MidiIO midiIO;
void setup(){
size(128*5,128*5);
//smooth();
background(0);
midiIO = MidiIO.getInstance(this);
println("printPorts of midiIO");
midiIO.printDevices();
midiIO.openInput(0,0);
}
void draw(){
}
void noteOn(
Note note,
int deviceNumber,
int midiChannel
){
int vel = note.getVelocity();
int pit = note.getPitch();

fill(255,vel*2,pit*2,vel*2);
stroke(255,vel);
ellipse(vel*5,pit*5,30,30);
}
void noteOff(
Note note,
int deviceNumber,
int midiChannel
){
int pit = note.getPitch();
fill(255,pit*2,pit*2,pit*2);
stroke(255,pit);
ellipse(pit*5,pit*5,30,30);
}
void controllerIn(
Controller controller,
int deviceNumber,
int midiChannel
){
int num = controller.getNumber();
int val = controller.getValue();
fill(255,num*2,val*2,num*2);
stroke(255,num);
ellipse(num*5,val*5,30,30);
}
void programChange(
ProgramChange programChange,
int deviceNumber,
int midiChannel
){
int num = programChange.getNumber();
fill(255,num*2,num*2,num*2);
stroke(255,num);
ellipse(num*5,num*5,30,30);
}

 

6. Wenn ihr nun mit mit Bome‘s Mouse Keyboard ein paar Noten spielt, werden sie in Processing visualisiert. Die X-Achse zeigt die Anschlagstärke an, je härter ein Anschlag ist, desto weiter rechts wird er dargestellt. Die Y-Achse zeigt die Tonhöhe an. Je höher ein Ton ist, desto weiter unten wird er dargestellt. Wenn ihr in Mouse Keyboard immer dieselbe Taste auf der Tastatur drückt (z.B. Y für ein C3) und dabei den Anschlagregler verschiebt, wird das in Processing deutlich. Die Variable "pit" gibt den momentan gespieltennTon aus, die Variable "vel" gibt die Anschlagstärke aus (engl. velocity).

Midifiles in Echtzeit in Processing darstellen:

1. MIDI-OX installieren (MIDI Yoke muss bereits installiert sein)

2. Bei der Installation von MIDI-OX wird ein kleines Programm namens "MIDIBar" mit installiert. In MIDIBar öffnet ihr ein beliebiges MIDI-File (z.B. "town".mid" aus dem Verzeichnis "C:\Windows\Media" ). Es dauert ein paar Sekunden bis die Datei vollständig geladen wurde.

3. Dann klickt ihr auf den zweiten Button von links, der Button soll einen fünfpoligen MIDI-Stecker darstellen.

Es öffnet sich das Fenster "Select MCI Port", dort wählt ihr "Out To MIDI Yoke 1"

MidiBar MCI Port



4. Processing öffnen und den gleichen Code wie oben einfügen (ProMIDI muss bereits installiert sein)

5. Nun habt ihr eine Visualisierung der MIDI-Datei, aber ihr hört den Ton nicht mehr. Ihr müsst also noch einen Klangerzeuger an das virtuelle Patchkabel "MIDI Yoke 1" hängen. Dazu öffnet ihr Bome‘s Mouse Keyboard und wählt bei "MIDI Out" den Klangerzeuger des Betriebssystems (normalerweise Microsoft GS Wavetable SW Synth). Bei "MIDI In" wählt ihr "In From MIDI Yoke 1" Falls Bome‘s Mouse Keyboard abstürzt, liegt das daran, dass eine Rückkopplung vorliegt, bei "MIDI In" darf nicht das gleiche Patchkabel wie bei "MIDI Out" gewählt werden!

MIDI-Datenströme mit MIDI-OX sichtbar machen:

1. Öffnet in MIDIBar ein beliebiges MIDI-File und schickt es in einen der acht MIDI Yoke Kabel

2. Öffnet MIDI-OX und klickt im Menü "Options" auf "MIDI Devices..." Dort wählt ihr unter "MIDI Inputs" das Patchkabel in dem euer Song gespielt wird (z.B. "In From MIDI Yoke 5"). Klickt anschließend auf OK.

 3. Wenn ihr nun auf "View" und dann auf "Input Monitor" klickt seht ihr den MIDI-Datenstrom der z.B. durch "MIDI Yoke 5" fließt.

MIDI-OX

Mit MIDI-OX könnt ihr die Signale außerdem auch zu einem Klangerzeuger weiterleiten. Es ist z.B. auch möglich die MIDI-Signale eines echten Instrumentes parallel in verschiedene virtuelle Patchkabel zu schicken, oder nur einen bestimmten Kanal aus einem Kabel herauszufiltern und den dann isoliert weiterzuschicken. Dazu könnt ihr euch auch mal Bome‘s Midi Translator anschauen: http://www.bome.com/midi/translator/ Der Midi Translator übersetzt Signale in Echtzeit nach euren Bedingungen in andere Signale oder sogar in Tastaturbefehle. Damit ist es möglich jedes Programm das auf Tastatureingaben reagiert, auch mit MIDI zu steuern. Ein Tutorial zu Bome's Midi Translator gibt es auch im IG-Wiki: MIDI-Datenströme in Echtzeit beeinflussen (Win)