Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

音の周波数を円の色で可視化する

f:id:aa_debdeb:20151031172431j:plain
/**
* Visualization of Sound Frequency by Circles
*
* @author aa_debdeb
* @date 2015/11/03
*/

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;

Minim minim;
AudioInput in;
FFT fft;

void setup(){
  size(640, 480);
  minim = new Minim(this);
  in = minim.getLineIn(Minim.STEREO, 1024);

  fft = new FFT(in.bufferSize(), in.sampleRate());

}

void draw(){
  colorMode(RGB, 255);
  background(0);
  fft.forward(in.mix);
  
  noStroke();
  colorMode(HSB, 360, 100, 100, 255);
  for(int i = 0; i < fft.specSize(); i++){
    float hue = map(i, 0, fft.specSize(), 0, 360);
    fill(hue, 100, 100, 10);
    float radious = fft.getBand(i) * 5;
    ellipse(width/2, height/2, radious * 2, radious * 2);
  }
}


void stop(){
  in.close();
  minim.stop();
  super.stop();
}