Last active
January 4, 2016 18:29
-
-
Save jingkaihe/8660923 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Einbeziehen des minim-Audio-Toolkits | |
import ddf.minim.*; | |
import ddf.minim.effects.*; | |
import processing.serial.*; | |
import TUIO.*; | |
import java.util.*; | |
// Instanz der minim Bibliothek | |
Minim minim; | |
TuioProcessing tuioClient; | |
PFont myFont; | |
// Instanz die das geladene Audiodokument repräsentiert | |
AudioPlayer player_1; | |
AudioPlayer player_2; | |
AudioPlayer player_3; | |
AudioPlayer player_4; | |
AudioPlayer player_5; | |
AudioPlayer player_6; | |
AudioPlayer player_7; | |
AudioPlayer player_8; | |
int j= -10; | |
int maxX = 1028; | |
int maxY = 768; | |
float cursor_size = 15; | |
float object_size = 60; | |
float table_size = 760; | |
float scale_factor = 1; | |
PFont font; | |
PImage imginfos, imginfo, imggt1; | |
float r = 100; | |
float w = 40; | |
float h = 40; | |
void setup () { | |
// Audiotoolkit erstellen | |
size(maxX, maxY); | |
frameRate(15); | |
loop(); | |
minim = new Minim (this); | |
tuioClient = new TuioProcessing(this); | |
// Audiodatei aus dem data-Ordner laden | |
player_1 = minim.loadFile ("piano_1.mp3"); | |
player_2 = minim.loadFile ("piano_2.mp3"); | |
player_3 = minim.loadFile ("piano_3.mp3"); | |
player_4 = minim.loadFile ("piano_4.mp3"); | |
player_5 = minim.loadFile ("man_1.mp3"); | |
player_6 = minim.loadFile ("man_2.mp3"); | |
player_7 = minim.loadFile ("man_3.mp3"); | |
player_8 = minim.loadFile ("man_4.mp3"); | |
player_1.play (); | |
player_2 .play (); | |
player_3.play (); | |
player_4 .play (); | |
player_5.play (); | |
player_6 .play (); | |
player_7.play (); | |
player_8 .play (); | |
player_1.loop(); | |
player_2.loop(); | |
player_3.loop(); | |
player_4.loop(); | |
player_5.loop(); | |
player_6.loop(); | |
player_7.loop(); | |
player_8.loop(); | |
// player_1.setGain(j); | |
// player_2.setGain(j); | |
// player_3.setGain(j); | |
// player_4.setGain(j); | |
//set volume mute | |
player_1.mute(); | |
player_2.mute(); | |
player_3.mute(); | |
player_4.mute(); | |
player_5.mute(); | |
player_6.mute(); | |
player_7.mute(); | |
player_8.mute(); | |
imginfos = loadImage("infos.png"); | |
imginfo = loadImage("info.png"); | |
imggt1 = loadImage("gt1.png"); | |
} | |
String origin = "Weißt du, was Obertöne sind?"; | |
String info_str1 = "Ein Ton besteht aus einem Grundton und vielen Obertönen. Ein Oberton ist ein Ton, der mit einem Vielfachen der Frequenz eines Grundtons schwingt. Um zu starten, brauchen wir einen Grundton."; | |
String info_str2 = "Sie hören gerade den Grundton, die tiefste Frequenz des Klaviers. Töne entstehen, wenn eine Saite schwingt. Dabei gilt je schneller die Schwingung, desto höher derTon."; | |
String s="Weißt du, was Obertöne sind?"; | |
float ygrundton = -100; | |
float xgrundton = -100; | |
float x = width/2; | |
float y = height/2; | |
float size = 40; | |
void draw () { | |
background(0, 73, 134); | |
noFill(); | |
stroke(0); | |
ellipse(width/2,height/2,width/4*3,width/4*3); | |
float obj_size = object_size*scale_factor; | |
float cur_size = cursor_size*scale_factor; | |
myFont = createFont("MiloSerifPro-Xbold", 20); | |
Vector tuioObjectList = tuioClient.getTuioObjects(); | |
for (int i=0;i<tuioObjectList.size();i++) { | |
TuioObject tobj = (TuioObject)tuioObjectList.elementAt(i); | |
stroke(0); | |
fill(0); | |
pushMatrix(); | |
translate(tobj.getScreenX(width),tobj.getScreenY(height)); | |
rotate(tobj.getAngle()); | |
//rect(-obj_size/3,-obj_size/3,obj_size,obj_size); | |
popMatrix(); | |
fill(255); | |
textSize(12); | |
text(""+tobj.getSymbolID(), tobj.getScreenX(width), tobj.getScreenY(height)); | |
textAlign(CENTER, CENTER); | |
textSize(20); | |
fill(255); | |
if (tobj.getSymbolID()==0){ | |
imageMode(CENTER); | |
image(imginfo,tobj.getScreenX(width)-25, tobj.getScreenY(height)-25); | |
image(imginfos,tobj.getScreenX(width)-25, tobj.getScreenY(height)-25); | |
}else if(tobj.getSymbolID()==1){ | |
image(imggt1,tobj.getScreenX(width)-25, tobj.getScreenY(height)-25); | |
} | |
} | |
fill(255); | |
textSize(size); | |
text(s, 250, 160,width/2+20, height/2-200); | |
// | |
// imageMode(CENTER); | |
// image(imginfo,width/2,height/2); | |
strokeWeight(2); | |
float a = random(0, 255); | |
//println(a); | |
stroke(255,a); | |
noFill(); | |
rect(xgrundton, ygrundton, 80, 80,10,10,10,10); | |
imageMode(CENTER); | |
image(imginfo,x,y); | |
Vector tuioCursorList = tuioClient.getTuioCursors(); | |
for (int i=0;i<tuioCursorList.size();i++) { | |
TuioCursor tcur = (TuioCursor)tuioCursorList.elementAt(i); | |
Vector pointList = tcur.getPath(); | |
if (pointList.size()>0) { | |
stroke(7,7,255); | |
TuioPoint start_point = (TuioPoint)pointList.firstElement();; | |
for (int j=0;j<pointList.size();j++) { | |
TuioPoint end_point = (TuioPoint)pointList.elementAt(j); | |
line(start_point.getScreenX(width),start_point.getScreenY(height),end_point.getScreenX(width),end_point.getScreenY(height)); | |
start_point = end_point; | |
} | |
stroke(192,192,192); | |
fill(192,192,192); | |
ellipse( tcur.getScreenX(width), tcur.getScreenY(height),cur_size,cur_size); | |
fill(234); | |
text(""+ tcur.getCursorID(), tcur.getScreenX(width)-5, tcur.getScreenY(height)+5); | |
} | |
} | |
} | |
//boolean addinfo = false; | |
//boolean addpiano = false; | |
// | |
//boolean removeinfo = false; | |
//boolean removepiano = false; | |
// | |
//boolean updateinfo = false; | |
//boolean updatepiano = false; | |
boolean info = true; | |
int others = 0; | |
void addTuioObject(TuioObject tobj) { | |
if (tobj.getSymbolID()==0){ | |
info = true; | |
} | |
else if (tobj.getSymbolID()==1){ | |
others ++; | |
player_1.unmute(); | |
} | |
else if (tobj.getSymbolID()==2 && player_1.getGain()!=0){// die Voraussetzung ist grundton. | |
player_2.unmute(); | |
} | |
else if ( tobj.getSymbolID()==3 && player_1.getGain()!=0){ | |
player_3.unmute(); | |
} | |
else if (tobj.getSymbolID()==4 && player_1.getGain()!=0){ | |
player_4.unmute(); | |
} | |
else if (tobj.getSymbolID()==5){ | |
player_5.unmute(); | |
} | |
else if (tobj.getSymbolID()==2 && player_5.getGain()!=0){ | |
player_6.unmute(); | |
} | |
else if (tobj.getSymbolID()==3 && player_5.getGain()!=0){ | |
player_7.unmute(); | |
} | |
else if (tobj.getSymbolID()==4 && player_5.getGain()!=0){ | |
player_8.unmute(); | |
} | |
else { | |
player_1.mute(); | |
player_2.mute(); | |
player_3.mute(); | |
player_4.mute(); | |
player_5.mute(); | |
player_6.mute(); | |
player_7.mute(); | |
player_8.mute(); | |
} | |
} | |
void updateTuioObject (TuioObject tobj) { | |
//println(updatepiano + " " + removepiano); | |
if (tobj.getSymbolID()==0 ){ | |
//println("shit shit shit " + updatepiano + " " + removepiano); | |
size = 20; | |
x = -1000; | |
y = -1000; | |
if(info){ | |
s = info_str1; | |
}else{ | |
s = origin; | |
} | |
println(s); | |
redraw(); | |
} else if (tobj.getSymbolID()==1){ | |
// if(updateinfo == true && removeinfo == false){ | |
size = 20; | |
if(info){ | |
s = info_str2; | |
}else{ | |
s = ""; | |
} | |
x = -1000; | |
y = -1000; | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
println("player_1"+":"+value); | |
//println(tobj.getAngle()); | |
player_1.setGain(value); | |
player_1.unmute(); | |
redraw(); | |
} | |
else if ( tobj.getSymbolID()==2 && player_1.getGain()!=0){ // die Voraussetzung ist grundton. | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
//println("value"+":"+value); | |
//println(tobj.getAngle()); | |
player_2.setGain(value); | |
player_2.unmute(); | |
fill(247,238,0); | |
ellipse(75,75,tobj.getScreenX(width)-25, tobj.getScreenY(height)-25); | |
stroke(0,0,0,120); | |
strokeWeight(6); | |
noFill(); | |
ellipse(90,90,tobj.getScreenX(width)-25, tobj.getScreenY(height)-25); | |
}else if ( tobj.getSymbolID()==3 && player_1.getGain()!=0){ | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
//println("value"+":"+value); | |
//println(tobj.getAngle()); | |
player_3.setGain(value); | |
player_3.unmute(); | |
}else if (tobj.getSymbolID()==4 && player_1.getGain()!=0){ | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
println("value"+":"+value); | |
//println(tobj.getAngle()); | |
player_4.setGain(value); | |
player_4.unmute(); | |
} | |
else if (tobj.getSymbolID()==5){ | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
//println("player_1"+":"+value); | |
//println(tobj.getAngle()); | |
player_5.setGain(value); | |
player_5.unmute(); | |
} else if ( tobj.getSymbolID()==2 && player_5.getGain()!=0){ // die Voraussetzung ist grundton. | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
println("value"+":"+value); | |
//println(tobj.getAngle()); | |
player_6.setGain(value); | |
player_6.unmute(); | |
}else if ( tobj.getSymbolID()==3 && player_5.getGain()!=0){ | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
//println("value"+":"+value); | |
//println(tobj.getAngle()); | |
player_7.setGain(value); | |
player_7.unmute(); | |
}else if (tobj.getSymbolID()==4 && player_5.getGain()!=0){ | |
float value = map(tobj.getAngle(),0,8,-40,100); | |
//println("angle"+":"+angle); | |
println("value"+":"+value); | |
//println(tobj.getAngle()); | |
player_8.setGain(value); | |
player_8.unmute(); | |
} | |
else { | |
player_1.mute(); | |
player_2.mute(); | |
player_3.mute(); | |
player_4.mute(); | |
player_5.mute(); | |
player_6.mute(); | |
player_7.mute(); | |
player_8.mute(); | |
} | |
} | |
void removeTuioObject(TuioObject tobj) { | |
size = 40; | |
s = "Weißt du, was Obertöne sind?"; | |
x = width/2; | |
y = height/2; | |
if (tobj.getSymbolID()==0){ | |
info = false; | |
if(others > 0){ | |
s = ""; | |
}else{ | |
s = origin; | |
} | |
size = 20; | |
x = -1000; | |
y = -1000; | |
} | |
else if (tobj.getSymbolID()==1){ | |
size = 20; | |
others --; | |
if(info){ | |
s = info_str1; | |
}else{ | |
s = origin; | |
} | |
x = -1000; | |
y = -1000; | |
player_1.mute(); | |
player_1.setGain(0); //wegen obertoene | |
player_5.mute(); | |
player_5.setGain(0); | |
} | |
else if (tobj.getSymbolID()==5){ | |
player_5.mute(); | |
player_5.setGain(0); | |
} | |
else if (tobj.getSymbolID()==2){ | |
player_2.mute(); | |
player_6.mute(); | |
} else if (tobj.getSymbolID()==3){ | |
player_3.mute(); | |
player_7.mute(); | |
} | |
else if (tobj.getSymbolID()==4){ | |
player_4.mute(); | |
player_8.mute(); | |
} | |
} | |
void refresh(TuioTime bundleTime) { | |
redraw(); | |
} | |
// called when an object is moved | |
// called when a cursor is added to the scene | |
void addTuioCursor(TuioCursor tcur) { | |
println("add cursor "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY()); | |
} | |
// called when a cursor is moved | |
void updateTuioCursor (TuioCursor tcur) { | |
println("update cursor "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY() | |
+" "+tcur.getMotionSpeed()+" "+tcur.getMotionAccel()); | |
} | |
// called when a cursor is removed from the scene | |
void removeTuioCursor(TuioCursor tcur) { | |
println("remove cursor "+tcur.getCursorID()+" ("+tcur.getSessionID()+")"); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment