Daily Creative Coding

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

minimでドレミを鳴らす

f:id:aa_debdeb:20151031223042j:plain

左からドレミファソラシドに対応している.

/**
* Octave
*  
* @author aa_debdeb
* @date 2015/10/04
*/

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;
AudioOutput out;
SineWave sine;

void setup(){
  size(640, 300);
  minim = new Minim(this);
  out = minim.getLineOut(minim.STEREO);
  sine = new SineWave(440, 0.5, out.sampleRate());
  sine.portamento(10);
  out.addSignal(sine);

  noStroke();
  for(int i = 0; i < 8; i++){
    fill(i * (255 / 8));
    rect(i * (width / 8), 0, width / 8, height);
  }
}

void draw(){}

void mouseMoved(){
  int step = int(mouseX / (width / 8.0));
  float freq = 440;
  switch(step){
    case 0:
      freq = 262; break;
    case 1:
      freq = 294; break;
    case 2:
      freq = 330; break;
    case 3:
      freq = 349; break;
    case 4:
      freq = 392; break;
    case 5:
      freq = 440; break;
    case 6:
      freq = 494; break;
    case 7:
      freq = 523; break;
  }
  sine.setFreq(freq);
}

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