...
Über die Lautstärke haben wir die einfachste Methode festzustellen, wie viel (klangliche) Aktivität in einer Umgebung herrscht. Die Werte, welche uns durch die Minim Library mit der Funktion obj.left.level() bzw. obj.right.level() zurückgegeben werden ist dabei proportional zur Lautstärke und im Bereich zwischen 0 und 1. Das Beispiel zeigt sowohl das direkte Auslesen wie auch eine zeitliche Kumulation der Lautstärke-Parameter.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
//Spatial Interaction //ZHdK, Interaction Design //iad.zhdk.ch //Beispiel 01: Volume import ddf.minim.*; Minim minim; AudioInput in; float amountOfNoise = 0; void setup() { size(512640, 200480, P3D); minim = new Minim(this); //Open the audio input in = minim.getLineIn(); } void draw() { background(amountOfNoise); stroke(255); rect( 0, 0, in.left.level()*width, 100 ); rect( 0, 100, in.right.level()*width, 100 ); if(in.left.level() > 0.2 || in.right.level() > 0.2) { amountOfNoise++; } else if(amountOfNoise > 0) { amountOfNoise--; } text(amountOfNoise, 20150, 20); } |
Wellenform
Als Wellenform einer Klangquelle wird die grafische Darstellung einer Schwingung im Bezug zur Zeit bezeichnet (Wikipedia Eintrag).
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
//Spatial Interaction //ZHdK, Interaction Design //iad.zhdk.ch //Beispiel 02: Waveform import ddf.minim.*; Minim minim; AudioInput in; void setup() { size(640, 480, P3D); minim = new Minim(this); //Open the audio input in = minim.getLineIn(); } void draw() { background(0); for(int i = 0; i < in.bufferSize() - 1; i++) { stroke(0,0,255); line( i, 200, i, 200 - in.left.get(i+1)*50 ); stroke(255,0,0); line( i, 280, i, 280 + in.right.get(i+1)*50 ); } } |
FFT
Mit Hilfe einer FFT (Fast Fourier Transformation) lässt sich ein Audio-Signal in seine Frequenzanteile zerlegt. Dadurch ist es möglich festzustellen, welcher Frequenzbereich (Tonhöhe) in einem Signal am meisten ausgeprägt ist. Wenn diese Frequenzen analysiert werden lässt sich feststellen, welcher Ton "dahinter steht".
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
//Spatial Interaction //ZHdK, Interaction Design //iad.zhdk.ch //Beispiel 03: FFT import ddf.minim.analysis.*; import ddf.minim.*; Minim minim; AudioInput in; FFT fft; int worldRecord = 0; int threshold = 100; void setup() { size(640, 480, P3D); minim = new Minim(this); //Open the audio input in = minim.getLineIn(); //Create FFT object fft = new FFT( in.bufferSize(), in.sampleRate() ); } void draw() { background(0); stroke(255); fft.forward( in.mix ); for (int i = 0; i < fft.specSize(); i++) { if (fft.getBand(i) > threshold && fft.getBand(i) > worldRecord) { worldRecord = i; } line( i, height, i, height - fft.getBand(i)*8 ); } ellipse(worldRecord, 20, 20, 20); text(fft.getBand(worldRecord), worldRecord+10, 20); } |
...