起こっていること
音の可視化する事は出来たが、グラフの長短が極端になってしまっている
実現したいこと
なめらかに動かすために現在のgetBandで得られた音量と直前2フレームのgetBandで得られた音量の平均をグラフで描画したい
PImage img; // 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; // 音楽ファイルを入れるための変数 AudioInput in; // オーディオ入力の変数 FFT fft; // フーリエ変換用変数 void setup(){ size(1280,720); img = loadImage("high-frequency-2_4_orig.jpg"); // 画像読み込み img.resize(1280,720); // 画像リサイズ surface.setLocation(1280,10); // 実行結果ウィンドウ位置指定 Minim minim = new Minim(this); // Minimクラスのインスタンスを生成 player = minim.loadFile("schala's-theme-with-reimu-wonderland.mp3"); // 再生ファイル //読み込んだ曲の音声をFFTと結びつける fft = new FFT(player.bufferSize(), player.sampleRate()); player.printControls(); player.setGain(-15); // ボリューム設定 player.play(); // 読み込んだ音楽ファイルの再生 } void draw(){ fft.forward(player.mix); //FFTの実行部も曲ファイルの音データに int specSize = fft.specSize(); // FFTのスペクトラムの幅を変数に保管します // 背景 background(255,255,255); image(img,0,0); // 型枠 noStroke(); fill(#000000,120); // 図形色指定&透明度 rect(0,0,1280,40); // 上図形 rect(0,680,1280,720); // 下図形 fill(#25BDF2,175); // Hzグラフカラー for(int i = 0, j = 0; i < 1275 ; i+=6, j++){ rect(3 + i,(height/2)+60,3,-8 + fft.getBand(j)*-5,4); //高さにgetBand(j)の値を使用 } //textFont(); textSize(26); fill(#56D1BF); // song_name_color text("Schala's theme with Reimu Wonderland",10,460); // song_name //fill(#56D1BF); // artist_name_color text("3ARTh",10,490); // artist_name }
以下URLは使用しているデータです
https://55.gigafile.nu/0317-d831afe4d6abaff114ee1e924eecc61b4
FFT関連で差分を得る事に触れている記事が無かったので質問させていただきました。
お願いいたします。
回答1件
あなたの回答
tips
プレビュー