import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import rwmidi.*;
import oscP5.*;
import netP5.*;
import microkontrol.controls.*;
import microkontrol.*;
MicroKontrol mk;
NetAddress animata;
OscP5 oscP5;
Minim minim;
AudioInput in;
String talking = "man";
void setup(){
oscP5 = new OscP5(this,12000);
mk = new MicroKontrol(this);
animata = new NetAddress("192.168.100.198",7110);
mk.pads[12].listen("pressed",this, "activateMan");
mk.pads[13].listen("pressed",this, "activateWoman");
mk.pads[14].listen(new Axe());
minim = new Minim(this);
in = minim.getLineIn(Minim.STEREO, 512);
}
void draw(){
float joyY = mk.joystick.getY();
float joyX = mk.joystick.getX();
if( joyY != 0 ) zoomCamera(int(joyY * 10.0));
if(joyX != 0) panLayer(joyX * 10);
background(0);
float level = constrain(in.left.level(), 0,1) * 5;
rect(0, 0, width, height*level);
setBone(talking, level);
setBone("frown", mk.faders[0].getProportion());
}
void activateMan(){
println("man talking");
mk.pads[12].set(true);
mk.pads[13].set(false);
talking = "man";
}
void activateWoman(){
println("woman talking");
mk.pads[12].set(false);
mk.pads[13].set(true);
talking = "woman";
}
public class Axe implements ButtonListener{
void pressed(){
setBone("waveaxe", 1);
}
void released(){
setBone("waveaxe", 0);
}
void updated(){
}
}
void zoomCamera(Integer delta){
OscMessage message = new OscMessage("/cameradeltazoom");
message.add(float(delta));
oscP5.send(message, animata);
}
void panLayer(float deltaX){
OscMessage message = new OscMessage("/cameradeltapan");
message.add(deltaX);
message.add(0.0);
oscP5.send(message,animata);
}
void setBone(String name, float n) {
OscMessage message = new OscMessage("/anibone");
message.add(name);
message.add(n);
oscP5.send(message, animata);
}