はじめに
Processingで音楽ファイルを読み込み、波形を表示させる何かを作りました。
遊びで作ったものなので、荒いコードになっていますがご了承ください。
以下が作ったものになります。
よかったらTwitterのフォローお願いします。
Wokka!!! Wokka!!! Wokka!!! pic.twitter.com/NT0XM798vB
— もぐら猫@python (@I4MK3) July 22, 2019
Tree
dataファイルを作成し、その中に使用したい音源を入れてください。
音源はmp3の拡張子のみ使用できます。(m4aなどは再生できなかったのでmp3でしか多分無理)
$ tree soundwave
soundwave
├── data
│ └── Wouldn't_Change_It.mp3
└── soundwave.pde
コード
Minimのライブラリのインストールが必要です。
ライブラリのインストール方法は、各々調べてください。
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;
AudioPlayer player;
Minim minim;
String title = "Wouldn't_Change_It.mp3";
int amp = 150;
float effect = 0; //波形にエフェクトをかける
float line = 0;
float left;
void setup(){
size(1025,900);
colorMode(HSB);
minim = new Minim(this);
player = minim.loadFile(title,1024);
player.play();
}
void draw(){
translate(0, 350);
//if (0.4 < abs(left)) {
// background(100,100,200);
//}
//else {
// background(0,255,0);
//}
background(0,255,0);
for(int i = 0; i < player.left.size()-1; i++){
line = abs(player.left.get(i));
left = player.left.get(i);
line(i+effect, 100 + left*amp, i, 100 + player.left.get(i+1)*amp); // Lチャンネルの波形
}
stroke(line*400,line*1000,500); //線の色
strokeWeight(line*4); //線の太さ
}
コードの説明
色指定は、全てHSBを使用しています。
effect変数は、数値を入れることで波形にエフェクトがかかります。
コメントアウトの部分は、波形が一定の大きさになった場合に背景色が指定の色に変わります。
コメントアウトを外す際は、else文直下のbackground(0,255,0);を消すなりしてください。
stroke()は、400の部分を大きくすると音が大きくなった際に、波形に赤みが増し減らすと赤みが減ります。
strokeWeight()は、4を大きくすることで音が大きくなった時の線が太くなります。
感想
勉強や開発にのみコードを書いていましたが、私利私欲で意味もなく好きにコードを書くのも楽しいなと思いました。
皆さんの作品も見たいので何か面白いもの作ったよーって方は、この記事にリンクを貼り付けたり、Twitterにリプライなどを送って教えてください!
因みに、上記に埋め込んだTwitterの投稿にあるWokka!!! Wokka!!! Wokka!!!と言うのはR6Sというゲームのプロゲーマーで、Wokkaという方です。その方が投稿している動画のエンディング曲を波形に取ったので「Wokka!!! Wokka!!! Wokka!!!」と呟きました笑笑