Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Ü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
languagejava
titleBeisiel Lautstärke
collapsetrue
//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
languagejava
titleBeispiel Wellenform
collapsetrue
//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
languagejava
titleBeispiel FFT
collapsetrue
 //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);
}

...