openFrameworksでお手軽サウンドビジュアライズ

  • Posted on: 2015年7月1日
Pocket

  • このエントリーをはてなブックマークに追加

今日も今日とてoFスケッチをば。
今日挑戦したのはサウンドビジュアライズ。
今後、見返したりすることも考えてコードを乗っけておきます。
ニーズはおれ。。


とはいえ、まだまだ未熟な点は多いです。
あくまでスケッチ(習作)ということでご勘弁ください。

以下気づき。
・ハイハットの音域がかろうじて分かる
・ハイハット以外の周波数成分はどうやらかなり偏っているっぽい
・っていうかこのスペクトルはどういう周波数の切り方になっているのか、、仕様を調べます(宿題)
・黒字背景に加算合成はずるい。大抵かっこよくなる。この感じ好きです。

つくりかた

oFのお陰でかなりお手軽。。
初の試みとしてコードも載せます。

データ取得

その時々で鳴っている音に対して、高度な変換アルゴリズム(FFT変換)にかけ周波数帯域ごとの標本値をリストで取得します。(これを「スペクトル」という。)
それをさらに時系列でリストします。リストのリスト、二次元配列ってやつです。
この時系列のリストを新しいものは新規保存して、古いのは捨てる、ということをして常に最新化します。

描画

x, y平面に点を升目状にプロットしていきます。
z軸に対して取得したスペクトルの標本値を割り当てます。
あとはopenFrameworks先生がデータ取得と再描画を無限に繰り返してくれます。

描画の基本的考えは、例によって最強の日本語クリエイティブコーディングブログの記事を参考にさせていただきました。。
本当に毎度お世話になっております。ありがとうございます。

ラスト一言。
VJのお仕事ください!

最後まで読んで頂きありがとうございました!

Pocket

  • ofGetSpectrum()で得られる配列の周波数の切り方は、ここに答えがありました。
    http://forum.openframeworks.cc/t/pitch-detection/3807
    44.1 kHzのに対して256を引数にした場合、44.1 / 2 = 22.05 kHzを上限に、等間隔に受け取る感じ。

    使い方によっては周波数を指定して振れ幅を取り出すこともできるね。