salut,
jutilise processing 2.2.1 et la librairie the MidiBus avec live ableton et loopMidi comme port virtuel .
je declenche differentes images dans processing depuis des pistes midi de live affecter à au moins deux ports virtuels differents.
le code marche aleatioirement pendant 1sec à 3min puis envoi ce message d'erreur :
The MidiBus Warning: Disabling noteOff(int channel, int pitch, int velocity) because an unkown exception was thrown and caught java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at themidibus.MidiBus.notifyParent(Unknown Source) at themidibus.MidiBus$MReceiver.send(Unknown Source) at com.sun.media.sound.AbstractMidiDevice$TransmitterList.sendMessage(Unknown Source) at com.sun.media.sound.MidiInDevice.callbackShortMessage(Unknown Source) at com.sun.media.sound.MidiInDevice.nGetMessages(Native Method) at com.sun.media.sound.MidiInDevice.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.RuntimeException: missing a pushMatrix() to go with that popMatrix() at processing.core.PGraphicsJava2D.popMatrix(PGraphicsJava2D.java:1812) at processing.core.PGraphicsJava2D.backgroundImpl(PGraphicsJava2D.java:2280) at processing.core.PGraphics.backgroundFromCalc(PGraphics.java:6983) at processing.core.PGraphics.background(PGraphics.java:6898) at processing.core.PApplet.background(PApplet.java:15122) at sketch_160111a.noteOff(sketch_160111a.java:52) ... 10 more
voici mon code
import themidibus.*; MidiBus myBus; void setup() { background(0); size(500, 500); MidiBus.list(); myBus = new MidiBus(this, "loopMIDI Port",-1 ); myBus.addInput("loopMIDI Port 1"); } void draw() { int channel; int pitch ; int velocity ; } void noteOn(int channel, int pitch, int velocity ) { if (channel == 1) { // kik background(100, 250, 0); } if (channel == 2 ) { // rim ellipse(50, 50, 80, 80); } } void noteOff(int channel, int pitch, int velocity) { background(0); } void delay(int time) { int current = millis(); while (millis () < current+time) Thread.yield(); }
le meme code marche tres bien si je nutilise qu'un seul port midi mai j'ai besoin d'emetre sur plusieurs port vu que je veux pouvoir declencher plusieurs images en meme temps.
je comprend pas ce que veut dire ce message d'erreur et comment le resoudre
alors si quelqun peut m'aider ?
merci !
Hors ligne
hello,
a priori, tu dois pouvoir utiliser un seul port et faire la ségrégation de tes messages en les faisant passer par différents numéros de canaux midi (dans le même port donc)
++
b
Hors ligne
Pages: 1