Oder Text markieren und Enter drücken…

Visualisierung von MIDI-Daten mit Processing (Mac)

MIDI-Datenströme mit Processing unter Mac OSX visuell darstellen

Achtung:

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

Benötigte Programme:

ProMIDI

Mac-Version der MIDI-Bibliothek für Processing
http://texone.org/promidi/promidi_mac.zip

MidiKeys 1.6b3

Virtuelles MIDI-Instrument. Simuliert eine Klaviatur die man mit der Maus oder Tastaur spielen kann
http://www.manyetas.com/creed/midikeys.html

MIDI Patchbay

Virtuelles MIDI-Patchkabel
http://notahat.com/midi_patchbay

MightyMIDI 1.0

Kleiner MIDI-Player der direkt in ein virtuelles Patchkabel ausgeben kann
http://xmidi.com/cgi-bin/dl?MightyMIDI.dmg

Simple Synth 1.0

Einfacher MIDI-Synthesizer der die Apple Soundbibliothek benutzt
http://notahat.com/simplesynth

MIDIMonitor 1.1.8 (optional)

Monitor der alle MIDI-Aktivitäten des Systems anzeigt, praktisch bei der Fehlersuche
http://www.snoize.com/MIDIMonitor/

 

Vorgehensweise:

Mididaten aus MidiKeys in Processing empfangen:

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

2. MidiKeys in den Programme-Ordner kopieren und starten

3. SimpleSynth in den Programme-Ordner kopieren und starten
Wenn ihr nun in MidiKeys ein paar Klaviertasten anklickt solltet ihr schon was hören.

4. 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);
}

 

5. Wenn ihr nun mit mit Midikeys 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 Midikeys 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 gespielten Ton aus, die Variable "vel" gibt die Anschlagstärke (engl. velocity) aus.

Midifiles in Echtzeit in Processing darstellen:

1. MIDI Patchbay in den Programme-Ordner kopieren und starten. Patchbay muss die ganze Zeit im Hintergrund laufen!

2. SimpleSynth starten

3. Mighty MIDI in den Programme-Ordner kopieren und starten

4. In Mighty MIDI öffnet sich automatisch der „Datei öffnen“-Dialog. Beliebige MIDI-Datei öffnen.

Mighty Midi Open Dialog


5. Virtuelle Verbindungen herstellen:
In MIDI Patchbay bei "MIDI-Input" auf den Pfeil klicken und "Edit Virtual Inputs..." wählen. Auf den Button "New Input" klicken und als Namen „Virtual MIDI-Input 1“ eintippen, bestätigen und das Fenster mit "OK" schließen.

MIDI Patch Bay Edit Inputs


6. Das gleiche mit "MIDI Output" machen, als Namen „Virtual MIDI-Output 1“ wählen.

MIDI Patchbay Einstellungen


7. In Mighty MIDI das Menü "Device" und dann "layback Device" anwählen und anschließend ein Häkchen bei "Virtual MIDI-Input 1" machen. Mighty MIDI sendet die Signale der MIDI-Datei nun in das virtuelle MIDI-Kabel.

Mighty MIDI Playback Device


8. In SimpleSynth unter "MIDI Sourc"e das virtuelle Kabel "Virtual MIDI-Output 1" wählen. Nun dürftet ihr den MIDI-Song schon einmal hören, wenn ihr in Mighty MIDI auf Play drückt. Alle Instrumente werden nun möglicherweise als Piano ausgegben, da standardmäßig in Simple Synth für alle Kanäle Piano eingestellt ist. Die Instrumentierung müsstet ihr noch entsprechend der MIDI-Datei anpassen. Dazu klickt ihr im Menü Window auf Show Instruments und ordnet dann den einzelnen MIDI-Channels die passenden Instrumente zu. Falls ihr nicht wisst welches Instrument welchem Channel zugeordnet ist, könnt ihr die MIDI-Datei in einem MIDI-Sequenzer (z.B. Logic) öffen und nachschauen.

SimpleSynth


9. Processing öffnen (ProMIDI muss bereits installiert sein), das gleiche Skript wie oben unter Punkt 4 einfügen und den Sketch starten.

MIDI-Datenströme mit MIDI Monitor sichtbar machen:

1. Alle MIDI-Programme sowie Processing schließen. Es ist wichtig, dass MIDI Monitor als erstes gestartet wird.

2. MIDI Monitor in den Programme-Ordner kopieren und starten

3. MIDI Patchbay starten und ein paar virtuelle Kabel anlegen

4. Mighty MIDI starten und eine MIDI-Datei in ein beliebiges virtuelles Kabel ausgeben.

5. In MIDI Monitor unter Sources alles anwählen

6. Die MIDI-Signale die durch das System werden nun protokolliert. Unterschiedliche Instrumente spielen auf unterschiedlichen Kanälen. Die Anschlagstärke wird in einem Wertebereich von 0 bis 127 angegeben.

Anonymer Benutzer sagt
07.04.2010 17:39
Funktioniert unter OS X Snow Leopard / Java 6 nicht mehr!
Commenting has been disabled.
Anonymer Benutzer sagt
07.04.2010 17:39
Funktioniert unter OS X Snow Leopard / Java 6 nicht mehr!
Commenting has been disabled.