We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello everybody ! First time posting here I hope I'm in the right section. I'm looking to program a tool for live vjing : the finale idea is to be able to switch between different audio/video visualisators live with a midi controller... However I'm starting small. As of right now my goal is to understand how void works.
I am using "void noteOn(int channel, int pitch, int velocity)" to get the value of the local variable "pitch" How can i use this local variable in draw() ? How can i make the variable global but still get the value from void noteOn ?
Thanks !
Here's my code :
import themidibus.*; //Import the library
MidiBus myBus; // The MidiBus
void setup() {
size(400, 400);background(0);
MidiBus.list();
myBus = new MidiBus(this, 4, -1); // Create a new MidiBus with my 4th hardware device as input and nothing as the output device.
}
void draw() {
int channel = 0;
int pitch = 64;
int velocity = 127;
myBus.sendNoteOn(channel, pitch, velocity); // Send a Midi noteOn
delay(200);
myBus.sendNoteOff(channel, pitch, velocity); // Send a Midi nodeOff
int number = 0;
int value = 90;
int trans_value=0;
myBus.sendControllerChange(channel, number, value); // Send a controllerChange
delay(1);
}
void noteOn(int channel, int pitch, int velocity) {
// Receive a noteOn
println();
println("Note On:");
println("--------");
println("Channel:"+channel);
println("Pitch:"+pitch);
println("Velocity:"+velocity);
if (pitch == 68) {
fill(204, 102, 0); rect(30, 20, 55, 55); **// this needs to go to draw, but i'm using "pitch" to trigger it and draw don't now pitch...**
}
}
void delay(int time) {
int current = millis();
while (millis () < current+time) Thread.yield();
}
Answers
Just create a sketch-level variable and then set it in the function. Something like this:
If they have the same name, you can use the
this
keyword to differentiate the sketch-level variable from the local variable.Thank you Kevin this is the perfect answer !