【Processing】minimでオーディオスペクトラム その3(プログラムを変えてみる)

youtu.be





94.hatenadiary.jp
94.hatenadiary.jp
94.hatenadiary.jp
94.hatenadiary.jp


 

このシリーズ。
今度はその2の2の音源を使ってプログラムを変えてみた。

前回の宣言通り回転を使って書いてはみたものの、この音には合わないようなので却下。
代わりに色の濃淡にマッピングした。グレーを基調として、波形の -1と1の振幅をブラックとホワイトに割り当ててスリットを作る。
3段あるが、これは波形の描画のピッチを変えてるだけで、中央が一番細かく、下、上の順に荒くなる。
といってもx2とx3なので小さな差だが(倍だからそんなことはないか)波形を引いてしてみるか、寄ってみるかの違いしかない。
だけど、並べてみるとこんなに表情が違う。
ピッチが高いと荒いところが視認できるが、細かいところはグレー(細かく白と黒の交互)になってしまう。逆もしかり。

回転のコードはすでにあるので、このコードでも、回転のコードでも良い描画になるように演奏を頑張ってみよう。
癖でBPMを爆上げしてしまうけど、もっと落として波形のかたちをじっくりみれるようにしたほうがいいかもしれない。


import ddf.minim.*;
import ddf.minim.effects.*;

Minim minim;         //mimimをつかう
AudioPlayer groove;  //オーディオプレイヤーを宣言する

void setup() {
  size(1600, 900);
  delay(5000);//画面収録用
  //frameRate(60);
  minim = new Minim(this); //初期化
  groove = minim.loadFile("groove6.mp3", 2046);//音声ファイルをロードする 2046bit
  groove.loop();
}

void draw() {
  //  int max = groove.bufferSize();
  int rectsize = 3;   //横の間隔
  int rectsize2 = 1;   //横の間隔
  int rectsize3 = 2;   //横の間隔
  int x = 0;
  int a = 300;

  background(0); //背景
  noStroke();

  for (int i = 0; i <= width/rectsize; i++)
  { 
    x = i*rectsize;
    fill(125 - groove.mix.get(i)*a);
    rect(x, 0, rectsize, height/3); //四角形を描画
  }
  
  
  for (int i = 0; i <= width/rectsize2; i++)
  { 
    x = i*rectsize2;
    fill(125 - groove.mix.get(i)*a);
    rect(x, height/3, rectsize2, height/3); //四角形を描画
  }
  
  for (int i = 0; i <= width/rectsize3; i++)
  { 
    x = i*rectsize3;
    fill(125 - groove.mix.get(i)*a);
    rect(x, (height/3)*2, rectsize3, height/3); //四角形を描画
  }
}