読者です 読者をやめる 読者になる 読者になる

aa develop

開発と成長

Pure Dataでスペクトラムを表示する

Pure Data

Pure Dataで音声信号のスペクトラムを表示するパッチを作成しました。

f:id:aa_debdeb:20160817234204p:plain

以下のサイトを、参考にして作成しました。

こじ研(音・映像メディア)

Pure Dataでのスペクトラム作成について、以下のページに詳しい説明が書かれています。

第1章 SDRって何?

FFTについて詳しくないので、何を行っているのか正確には理解していませんが、どうやら「rfft~」から出力された各周波数ごとの実部と虚部について二乗の和の平方根を求めることにより、そのパワーを算出しているようです。

今回は、スペクトラムの計算部分をサブパッチとして作成しました。これは、ひとつのパッチの中でスペクトラムのために「block~」オブジェクトを使うと他の音声信号にも影響を与えてしまい、「output~」で同時に音を鳴らすことができなくなるです。

ソースコード
#N canvas 644 66 450 300 10;
#X obj 35 144 *~;
#X obj 90 143 *~;
#X obj 61 200 sqrt~;
#X obj 111 255 tabwrite~ fft;
#N canvas 0 22 450 278 (subpatch) 0;
#X array fft 128 float 1;
#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X coords 0 1 128 0 200 140 1 0 0;
#X restore 219 113 graph;
#X obj 65 166 +~;
#X obj 52 113 rfft~;
#X obj 213 62 block~ 512;
#X obj 120 218 metro 100;
#X obj 130 170 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 57 233 /~ 256;
#X obj 116 76 output~;
#X obj 47 25 osc~ 440;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 2 0 10 0;
#X connect 5 0 2 0;
#X connect 6 0 0 0;
#X connect 6 0 0 1;
#X connect 6 1 1 0;
#X connect 6 1 1 1;
#X connect 8 0 3 0;
#X connect 9 0 8 0;
#X connect 10 0 3 0;
#X connect 12 0 11 0;
#X connect 12 0 6 0;