Daily Creative Coding

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

カラースペクトログラム

f:id:aa_debdeb:20151117000039j:plain
/**
* Color Spectrogram
*
* @author aa_debdeb
* @date 2015/11/21
*/

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(513, 513);
  minim = new Minim(this);
  in = minim.getLineIn(Minim.STEREO, 1024);  
  fft = new FFT(in.bufferSize(), in.sampleRate());
  colorMode(HSB, 360, 100, 100);
  background(240, 100, 100);
}

void draw(){
  fft.forward(in.mix);
  loadPixels();
  for(int x = 0; x < width; x++){
    for(int y = 0; y < height; y++){
      if(x < width - 1){
        pixels[y * width + x] = pixels[y * width + x + 1];
      } else {
        float hue = 240 - fft.getBand(height - 1 - y) * 30;
        if(hue < 0) hue = 0;
        if(hue > 240) hue = 240;
        pixels[y * width + x] = color(hue, 100, 100);
      }
    }
  }
  updatePixels();
}

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