/
GestureSound.java
76 lines (59 loc) · 2.02 KB
/
GestureSound.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package advanced.gestureSound;
import java.io.IOException;
import org.mt4j.components.MTComponent;
import org.mt4j.input.IMTInputEventListener;
import org.mt4j.input.inputData.AbstractCursorInputEvt;
import org.mt4j.input.inputData.InputCursor;
import org.mt4j.input.inputData.MTInputEvent;
import org.mt4j.sceneManagement.AbstractScene;
import advanced.gestureSound.gestures.GestureEngine;
import advanced.gestureSound.gestures.GestureEngine.ParamMap;
import processing.core.PApplet;
import processing.core.PGraphics;
import de.sciss.jcollider.Synth;
public class GestureSound extends MTComponent {
PApplet applet;
GestureEngine engine;
SC sc;
InputCursor in;
public GestureSound(PApplet applet, final AbstractScene scene) {
super(applet);
// TODO Auto-generated constructor stub
this.applet = applet;
this.engine = new GestureEngine();
scene.getCanvas().addInputListener(new IMTInputEventListener() {
//@Override
public boolean processInputEvent(MTInputEvent inEvt){
if(inEvt instanceof AbstractCursorInputEvt){
AbstractCursorInputEvt posEvt = (AbstractCursorInputEvt)inEvt;
if (posEvt.hasTarget() && posEvt.getTargetComponent().equals(scene.getCanvas())){
InputCursor m = posEvt.getCursor();
engine.updateEngine(m);
in = m;
}
}
return false;
}
});
sc = new SC();
sc.setupSupercollider();
setupGestures();
}
void setupGestures() {
try {
Synth synth1 = new Synth("stereosine", new String[] {"out", "freq"}, new float[] { 0, 400f }, sc.grpAll);
engine.addToMap("curvature", synth1, "freq", new ParamMap() { public float map(float in) {return (float) (Math.log((1+in*10)/2)*-4000); }});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void drawComponent(PGraphics g) {
if (in != null) {
for (AbstractCursorInputEvt evt : in.getEvents()) {
g.rect(evt.getPosX(), evt.getPosY(), 10, 10);
}
}
}
}