aa develop

開発と成長

Pure Dataでシンセサイザーを作成する

今までPure Dataで作成してきたものを組み合わせて、鍵盤・VCO・VCF・VCA・EG・LFOがついたシンセサイザーを作成しました。

キーボードの「abcdefgh」がそれぞれ「ドレミファソラシ」に対応しています。

f:id:aa_debdeb:20160827192407p:plain

ソースコード
#N canvas 5 23 1271 755 10;
#X obj 276 195 phasor~;
#X obj 261 365 vcf~;
#X obj 340 589 *~;
#X obj 303 658 output~;
#N canvas 819 401 450 300 keyboard 1;
#X obj 203 234 outlet;
#X obj 101 222 outlet;
#X obj 294 233 outlet;
#X obj 176 212 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 320 177 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 100 181 mtof;
#X obj 106 25 key;
#X obj 52 88 select 97 115 100 102 103 104 106;
#X obj 297 30 keyup;
#X msg 20 128 60;
#X msg 59 128 62;
#X msg 110 131 64;
#X msg 149 128 65;
#X msg 186 130 67;
#X msg 223 133 69;
#X msg 276 130 71;
#X connect 3 0 0 0;
#X connect 4 0 2 0;
#X connect 5 0 1 0;
#X connect 5 0 3 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 7 1 10 0;
#X connect 7 2 11 0;
#X connect 7 3 12 0;
#X connect 7 4 13 0;
#X connect 7 5 14 0;
#X connect 7 6 15 0;
#X connect 8 0 4 0;
#X connect 9 0 5 0;
#X connect 10 0 5 0;
#X connect 11 0 5 0;
#X connect 12 0 5 0;
#X connect 13 0 5 0;
#X connect 14 0 5 0;
#X connect 15 0 5 0;
#X restore 430 11 pd keyboard;
#X obj 375 561 hsl 128 15 0 5 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 275 419 *~;
#X obj 369 193 osc~;
#X text -28 141 VCO;
#X text 216 368 VCF;
#X text 277 547 VCA;
#X text 646 38 EG;
#X obj 413 148 hsl 128 15 0 50 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 683 317 vline~;
#X obj 710 45 vsl 15 128 0 1000 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 0 1;
#X obj 754 46 vsl 15 128 0 1000 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 0 1;
#X obj 799 46 vsl 15 128 0 1 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 0 1;
#X obj 844 47 vsl 15 128 0 1000 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 0 1;
#X text 712 21 A;
#X text 757 21 D;
#X text 803 20 S;
#X text 849 20 R;
#X obj 638 230 pack f f f f;
#X obj 760 229 pack f f;
#X msg 638 267 1 \$2 \, \$4 \$3 \$2;
#X msg 760 265 0 \$2;
#X obj 377 317 hsl 128 15 0 30 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 369 262 +~;
#X obj 414 229 hsl 128 15 0 2000 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 369 227 *~;
#X obj 416 193 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 412 444 osc~;
#X obj 461 407 hsl 128 15 0 50 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 412 478 *~;
#X obj 462 448 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 332 537 *~;
#X obj 412 512 +~ 1;
#X text 364 110 LFO for VCF;
#X text 325 438 LFO for VCA;
#X obj -19 236 expr~ $v1 > 0.5;
#X obj -19 190 phasor~;
#X obj 121 218 expr if($f1 == 0 \, 1 \, 0);
#X obj 83 266 expr if($f1 == 1 \, 1 \, 0);
#X obj -19 292 *~;
#X obj 277 304 *~;
#N canvas 0 22 450 278 (subpatch) 0;
#X array wave 440 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 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 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 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 439 -1 200 140 1;
#X restore 554 544 graph;
#X obj 407 674 tabwrite~ wave;
#X obj 407 636 metro 100;
#X obj 407 603 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 91 160 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 -1
-1 0;
#X text 113 160 saw-tooth;
#X text 113 176 square;
#X text 414 127 rate;
#X text 414 171 intensity;
#X text 370 292 Q;
#X text 416 212 cutoff;
#X text 461 386 rate;
#X text 461 430 intensity;
#X text 377 540 volume;
#X connect 0 0 44 0;
#X connect 1 0 6 0;
#X connect 2 0 3 0;
#X connect 2 0 3 1;
#X connect 2 0 46 0;
#X connect 4 0 0 0;
#X connect 4 0 40 0;
#X connect 4 1 22 0;
#X connect 4 2 23 0;
#X connect 5 0 2 1;
#X connect 6 0 35 0;
#X connect 7 0 29 0;
#X connect 12 0 7 0;
#X connect 13 0 6 1;
#X connect 14 0 22 1;
#X connect 15 0 22 2;
#X connect 16 0 22 3;
#X connect 17 0 23 1;
#X connect 22 0 24 0;
#X connect 23 0 25 0;
#X connect 24 0 13 0;
#X connect 25 0 13 0;
#X connect 26 0 1 2;
#X connect 27 0 1 1;
#X connect 28 0 27 1;
#X connect 29 0 27 0;
#X connect 30 0 29 1;
#X connect 31 0 33 0;
#X connect 32 0 31 0;
#X connect 33 0 36 0;
#X connect 34 0 33 1;
#X connect 35 0 2 0;
#X connect 36 0 35 1;
#X connect 39 0 43 0;
#X connect 40 0 39 0;
#X connect 41 0 44 1;
#X connect 42 0 43 1;
#X connect 43 0 1 0;
#X connect 44 0 1 0;
#X connect 47 0 46 0;
#X connect 48 0 47 0;
#X connect 49 0 42 0;
#X connect 49 0 41 0;

Pure DataでPCのキーボードを鍵盤にする

Pure DataでPCのキーボードを鍵盤にして音階をならすパッチを作成しました。 キーボードの「a b c d e f g h」がそれぞれ「ド レ ミ フ ァ ソ ラ シ」に対応しています。 左上のラジオボタンで音の高さを変更することができます。

f:id:aa_debdeb:20160822203812p:plain

「key」でキーボードの入力をASCIIコードで取得することができます。 「keyup」はキーを離したときに出力するオブジェクトです。 「vline~」で音量のアタックとリリースを設定しています。

今回作成した鍵盤は単音しか鳴らないモノフォニックなキーボードとなります。

参考

Pure Dataでエンベロープジェネレーター

Pure DataでADSR(Attack・Decay・Sustain・Release)を設定できるエンベロープジェネレーターを作成しました。

f:id:aa_debdeb:20160821221053p:plain

このパッチでは、エンベロープジェネレーターを音量にかけています。

#N canvas 444 82 415 519 10;
#X obj 96 385 *~;
#X obj 145 236 pack f f f f;
#X obj 122 328 vline~;
#X obj 107 435 output~;
#X obj 163 34 vsl 15 128 0 5000 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 1900 1;
#X obj 221 33 vsl 15 128 0 3000 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 3900 1;
#X obj 277 33 vsl 15 128 0 1 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 8600 1;
#X obj 335 32 vsl 15 128 0 5000 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 11000 1;
#X obj 240 437 snapshot~;
#X obj 240 399 metro 100;
#X obj 240 361 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X floatatom 240 476 5 0 0 0 - - -;
#X obj 16 150 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 77 149 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 255 235 pack f f;
#X msg 232 273 0 \$2;
#X text 5 125 key on;
#X text 60 125 key off;
#X msg 91 273 1 \$2 \, \$4 \$3 \$2;
#X text 146 6 Attack;
#X text 212 4 Decay;
#X text 260 4 Sustain;
#X text 321 4 Release;
#X floatatom 172 173 5 0 0 0 - - -;
#X text 224 189 ms;
#X floatatom 225 173 5 0 0 0 - - -;
#X text 343 189 ms;
#X floatatom 285 173 5 0 0 0 - - -;
#X floatatom 343 173 5 0 0 0 - - -;
#X text 171 190 ms;
#X obj 241 321 loadbang;
#X obj 18 324 phasor~ 440;
#X connect 0 0 3 0;
#X connect 1 0 18 0;
#X connect 2 0 0 1;
#X connect 2 0 8 0;
#X connect 4 0 1 1;
#X connect 4 0 23 0;
#X connect 5 0 1 2;
#X connect 5 0 25 0;
#X connect 6 0 1 3;
#X connect 6 0 27 0;
#X connect 7 0 14 1;
#X connect 7 0 28 0;
#X connect 8 0 11 0;
#X connect 9 0 8 0;
#X connect 10 0 9 0;
#X connect 12 0 1 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 2 0;
#X connect 18 0 2 0;
#X connect 30 0 10 0;
#X connect 31 0 0 0;
参考

Pure Dataで「vcf~」を用いてワウをかける

Pure Dataで「vcf~」オブジェクトを用いて、カットオフ周波数にLFOをかけてワウ効果を得るパッチを作成しました。

f:id:aa_debdeb:20160819211353p:plain

「vcf~」のパラメータは基本的には、以前に使った「bp~」と同じですが、カットオフ周波数の引数に音声信号を用いることができます。

Pure Dataでローパス・ハイパス・バンドパスフィルターをかける - aa develop

画像のパラメータでは、VCFのカットオフ周波数を1000Hzを中心に正弦波を用いて±500Hzの範囲で揺らして、400Hzのノコギリ波にかけています。

ソースコード
#N canvas 11 23 717 471 10;
#X obj 189 203 vcf~;
#X obj 274 295 output~;
#X obj 265 159 hsl 128 15 0 10 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 6000 1;
#X obj 266 -41 hsl 128 15 0 30 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 400 1;
#X obj 49 -8 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 7700 1;
#X obj 66 70 mtof;
#X obj 211 33 osc~;
#X floatatom 100 105 5 0 0 0 - - -;
#X floatatom 99 41 5 0 0 0 - - -;
#X floatatom 272 -15 5 0 0 0 - - -;
#X text 265 84 center frequnecy;
#X text 262 -67 lfo;
#X obj 269 105 hsl 128 15 0 2000 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 4000 1;
#X obj 211 157 +~;
#X floatatom 283 130 5 0 0 0 - - -;
#X text 262 140 Q;
#X obj 103 146 phasor~;
#X obj 267 32 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 9500 1;
#X obj 211 105 *~;
#X text 266 10 depth;
#N canvas 185 492 213 286 spectrum 1;
#X obj 23 97 *~;
#X obj 36 131 +~;
#X obj 36 165 sqrt~;
#X obj 39 54 fft~;
#X obj 60 98 *~;
#X obj 36 201 /~ 256;
#X obj 39 19 inlet~;
#X obj 117 69 block~ 512;
#X obj 119 203 metro 100;
#X obj 119 173 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 65 243 tabwrite~ spectrum;
#X obj 119 139 loadbang;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 0 0;
#X connect 3 0 0 1;
#X connect 3 1 4 0;
#X connect 3 1 4 1;
#X connect 4 0 1 1;
#X connect 5 0 10 0;
#X connect 6 0 3 0;
#X connect 8 0 10 0;
#X connect 9 0 8 0;
#X connect 11 0 9 0;
#X restore 80 296 pd spectrum;
#N canvas 16 490 168 223 wave 1;
#X obj 22 16 inlet~;
#X obj 87 132 metro 100;
#X obj 87 101 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 86 66 loadbang;
#X obj 22 171 tabwrite~ wave;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X restore 184 295 pd wave;
#N canvas 0 22 450 278 (subpatch) 0;
#X array spectrum 256 float 1;
#A 0 0.0943916 0.00137839 0.00186793 0.00274311 0.00401843 0.00604526
0.00991234 0.0206484 0.215878 0.0295908 0.0135783 0.00841369 0.00605477
0.00485908 0.00467379 0.00725504 0.041248 0.0171301 0.0089217 0.00676351
0.00585537 0.00550899 0.00566188 0.00685694 0.0163641 0.00575558 0.000875953
0.000256078 0.000511217 0.000575587 0.000546745 0.000893508 0.00452478
0.00725751 0.00331588 0.00256049 0.00226046 0.00213175 0.00212828 0.00234215
0.00371849 0.00386813 0.00118666 0.00108575 0.00108508 0.0010878 0.0010955
0.00113955 0.00150163 0.00379743 0.00123807 0.00106455 0.00100376 0.000965947
0.000934228 0.000901868 0.000871887 0.00323745 0.001023 0.000937938
0.000901667 0.000877098 0.000856943 0.000838008 0.000814683 0.00168612
0.000834076 0.000814777 0.000805459 0.000801923 0.00080649 0.000828822
0.000914478 0.00240915 0.000398843 0.000529293 0.000555918 0.000555152
0.000536927 0.000493999 0.000380829 0.000695724 0.0011152 0.000841664
0.000771374 0.000743773 0.00073749 0.00075456 0.000830356 0.00142651
0.000473673 0.000460085 0.000491433 0.000503655 0.000507122 0.000506642
0.000511548 0.000707781 0.000990558 0.000623813 0.000570074 0.000548213
0.000535224 0.000526253 0.000523203 0.000594777 0.000977976 0.000583859
0.00054653 0.000534566 0.000531073 0.000534945 0.00055376 0.000644915
0.00055285 0.000389119 0.000415557 0.000423219 0.000423682 0.000419193
0.000407457 0.000369871 0.00112772 0.000494839 0.00046458 0.000452193
0.000444279 0.000437697 0.000430514 0.000417496 0.000223981 0.000454467
0.000442024 0.000437713 0.000436401 0.00043806 0.000445445 0.000472599
0.000922157 0.000319293 0.000358188 0.000367568 0.000369489 0.000367583
0.000361911 0.000349888 0.00045988 0.0005002 0.000424617 0.000406885
0.000398801 0.000394304 0.000392456 0.000397422 0.000521198 0.000475282
0.000400448 0.000391264 0.00038941 0.000391275 0.000398517 0.000421085
0.000558648 0.000329075 0.000308506 0.00031857 0.000320843 0.000318196
0.000309843 0.000289008 0.000213813 0.000690916 0.000433594 0.000399688
0.000387888 0.000384 0.000386011 0.000397906 0.00045118 4.46339e-05
0.000276917 0.000304589 0.000313279 0.000316219 0.000316021 0.000312302
0.000297859 0.000702123 0.000351804 0.000338992 0.000334003 0.000330867
0.000328181 0.000324995 0.00031863 0.000331117 0.000340797 0.000333462
0.000330847 0.000329513 0.000328972 0.000329528 0.000333998 0.000496568
0.000323901 0.000321508 0.000321926 0.000322909 0.000324935 0.000329659
0.000344617 0.000514817 0.000286727 0.000290376 0.000292813 0.000292125
0.000288638 0.00028065 0.000260713 0.000199046 0.000478625 0.000374952
0.000355237 0.00034933 0.000349929 0.000357487 0.000381035 0.00050189
7.86839e-05 0.000231231 0.000257974 0.000266651 0.000268114 0.000263537
0.000247729 0.00017997 0.000579152 0.000369118 0.000342287 0.000332967
0.000329546 0.000329955 0.000335931 0.000364544 0.000248438 0.000277861
0.000290567 0.000295156 0.000297303 0.000298364 0.000298702 0.000298076
0.000495867 0.000305343 0.000303497 0.00030305;
#X coords 0 0.5 255 0 200 140 1 0 0;
#X restore 450 176 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X array wave 440 float 1;
#A 0 -0.00735753 0.0184383 0.0439046 0.0687294 0.0926243 0.115328 0.136609
0.156264 0.174125 0.190055 0.203951 0.215741 0.225388 0.232885 0.238253
0.241543 0.242833 0.242222 0.239832 0.235802 0.230287 0.223457 0.215488
0.206565 0.196878 0.186615 0.175967 0.165118 0.154245 0.14352 0.133102
0.12314 0.113766 0.105102 0.0972515 0.0903028 0.0843273 0.07938 0.0754989
0.0727055 0.0293222 -0.0116819 -0.0498423 -0.0847563 -0.116085 -0.143554
-0.166957 -0.186151 -0.201059 -0.211664 -0.21801 -0.220198 -0.218379
-0.212751 -0.203556 -0.19107 -0.175605 -0.157493 -0.137091 -0.114765
-0.0908929 -0.0658543 -0.0400259 -0.0137769 0.0125354 0.0385705 0.0640082
0.0885517 0.111931 0.133905 0.154264 0.172829 0.189456 0.204033 0.216481
0.226755 0.234841 0.240755 0.244544 0.246278 0.246055 0.243992 0.240227
0.234915 0.228222 0.220326 0.211414 0.201676 0.191305 0.180492 0.169426
0.15829 0.147258 0.136496 0.126156 0.116379 0.107291 0.0990019 0.0916054
0.0851791 0.0797836 0.0754624 0.0722424 0.0285933 -0.0126633 -0.0510641
-0.0862066 -0.117752 -0.145427 -0.169024 -0.1884 -0.203477 -0.214238
-0.220726 -0.22304 -0.221329 -0.215791 -0.206667 -0.194232 -0.178794
-0.160687 -0.140265 -0.117895 -0.0939539 -0.0688208 -0.0428727 -0.0164795
0.0100009 0.0362268 0.0618764 0.0866513 0.110279 0.132517 0.153152
0.172003 0.188921 0.203792 0.216535 0.227101 0.235471 0.241661 0.245711
0.24769 0.247693 0.245834 0.24225 0.237091 0.230524 0.222726 0.21388
0.204178 0.193812 0.182974 0.171852 0.160631 0.149486 0.138585 0.128082
0.118121 0.108829 0.100319 0.092689 0.0860189 0.0803724 0.0757964 0.0723209
0.0285621 -0.0128083 -0.0513287 -0.086598 -0.118278 -0.146097 -0.169845
-0.189379 -0.20462 -0.21555 -0.222209 -0.224694 -0.223151 -0.217777
-0.208807 -0.196515 -0.181206 -0.163211 -0.142881 -0.120582 -0.096687
-0.071574 -0.0456189 -0.0191903 0.00735435 0.0336733 0.0594443 0.0843683
0.108172 0.130609 0.151466 0.170558 0.187734 0.202878 0.215902 0.226756
0.235418 0.241898 0.246234 0.248491 0.248759 0.24715 0.243796 0.238847
0.232464 0.224824 0.216108 0.206506 0.196208 0.185406 0.174289 0.16304
0.151838 0.140848 0.130229 0.120125 0.110665 0.101966 0.0941274 0.0872327
0.0813487 0.0765255 0.0727967 0.0289257 -0.0125662 -0.0512189 -0.0866322
-0.118469 -0.146455 -0.170382 -0.190106 -0.205545 -0.216678 -0.223544
-0.226236 -0.224898 -0.219723 -0.210943 -0.198828 -0.183681 -0.165829
-0.14562 -0.123417 -0.099591 -0.0745185 -0.0485734 -0.0221234 0.00447455
0.0308789 0.056767 0.0818387 0.105819 0.128461 0.149546 0.16889 0.186337
0.201767 0.21509 0.226251 0.235224 0.242014 0.246657 0.249213 0.249768
0.248431 0.245331 0.240612 0.234435 0.226973 0.218405 0.20892 0.198706
0.187955 0.176855 0.16559 0.154337 0.143267 0.132536 0.122291 0.112665
0.103775 0.0957256 0.0886018 0.082474 0.077396 0.0734046 0.0294114
-0.012213 -0.0510099 -0.08658 -0.118586 -0.146754 -0.170875 -0.190802
-0.206452 -0.217802 -0.224888 -0.227801 -0.226681 -0.221716 -0.213137
-0.20121 -0.186234 -0.168533 -0.148452 -0.126351 -0.1026 -0.0775715
-0.0516394 -0.0251699 0.00148074 0.0279709 0.0539774 0.0791992 0.10336
0.12621 0.14753 0.167132 0.184856 0.20058 0.21421 0.225686 0.234979
0.24209 0.24705 0.249915 0.250768 0.249713 0.246875 0.242396 0.236435
0.22916 0.220749 0.211389 0.201267 0.190573 0.179497 0.168221 0.156924
0.145775 0.134936 0.124552 0.114761 0.105681 0.0974186 0.0900637 0.0836894
0.0783527 0.074094 0.0299738 -0.0117888 -0.0507362 -0.0864699 -0.118653
-0.14701 -0.171332 -0.191471 -0.20734 -0.218916 -0.226231 -0.229373
-0.228478 -0.223732 -0.215362 -0.20363 -0.188832 -0.171288 -0.151341
-0.129348 -0.105676 -0.0806969 -0.0547815 -0.0282954 -0.00159454 0.0249798
0.0511039 0.0764756 0.100817 0.123877 0.145434 0.165296 0.183302 0.199323
0.213264 0.225061 0.23468 0.242119 0.247402 0.250584 0.251742 0.250977
0.248411 0.244181 0.238444 0.231364 0.223119 0.213892 0.20387 0.193242
0.182195 0.170915 0.159579 0.148358 0.137414 0.126896 0.116942 0.107673
0.0991999 0.091614 0.0849922 0.079395 0.0748664 0.0306163 -0.0112882
-0.0503907 -0.0862933 -0.118659 -0.147213 -0.171743 -0.1921 -0.208198
-0.220008 -0.22756 -0.230939 -0.230278 -0.22576 -0.217607 -0.206078
-0.191465 -0.174087 -0.154281 -0.132403 -0.108816 -0.0838914;
#X coords 0 1 439 -1 200 140 1;
#X restore 447 -3 graph;
#X text 45 -34 sound frequency;
#X floatatom 278 188 5 0 0 0 - - -;
#X text 138 109 Hz;
#X text 318 130 Hz;
#X floatatom 275 59 5 0 0 0 - - -;
#X text 310 -13 Hz;
#X text 311 61 Hz;
#X connect 0 0 1 0;
#X connect 0 0 1 1;
#X connect 0 0 21 0;
#X connect 0 0 20 0;
#X connect 2 0 0 2;
#X connect 2 0 25 0;
#X connect 3 0 6 0;
#X connect 3 0 9 0;
#X connect 4 0 5 0;
#X connect 4 0 8 0;
#X connect 5 0 7 0;
#X connect 5 0 16 0;
#X connect 6 0 18 0;
#X connect 12 0 13 1;
#X connect 12 0 14 0;
#X connect 13 0 0 1;
#X connect 16 0 0 0;
#X connect 17 0 18 1;
#X connect 17 0 28 0;
#X connect 18 0 13 0;
参考

Pure Dataでローパス・ハイパス・バンドパスフィルターをかける

Pure Dataでローパスフィルター、ハイパスフィルター、バンドパスフィルターは、「lop~」、「hip~」、「bp~」オブジェクトでそれぞれかけることができます。

それぞれのフィルターをノイズ音源にかけてみるパッチを作成しました。

まずは、ローパスフィルター。

f:id:aa_debdeb:20160818220148p:plain

「lop~」に与えられる引数は、カットオフ周波数です。 スペクトラムは、以前作成したものを流用しました。

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

次は、ハイパスフィルター。 ローパスフィルターと同じく、引数はカットオフ周波数。

f:id:aa_debdeb:20160818220359p:plain

最後に、バンドパスフィルター。 これは、ローパス・ハイパスフィルターと異なり、第一引数は中心周波数、第二引数はQ値です。Q値が大きくなるほど、通過周波数帯が狭くなります。

f:id:aa_debdeb:20160818220534p:plain

ソースコード(ローパスフィルター)
#N canvas 19 35 549 411 10;
#N canvas 186 470 213 286 spectrum 1;
#X obj 23 97 *~;
#X obj 36 131 +~;
#X obj 36 165 sqrt~;
#X obj 39 54 fft~;
#X obj 60 98 *~;
#X obj 36 201 /~ 256;
#X obj 39 19 inlet~;
#X obj 117 69 block~ 512;
#X obj 119 203 metro 100;
#X obj 119 173 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 65 243 tabwrite~ spectrum;
#X obj 119 139 loadbang;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 0 0;
#X connect 3 0 0 1;
#X connect 3 1 4 0;
#X connect 3 1 4 1;
#X connect 4 0 1 1;
#X connect 5 0 10 0;
#X connect 6 0 3 0;
#X connect 8 0 10 0;
#X connect 9 0 8 0;
#X connect 11 0 9 0;
#X restore 14 222 pd spectrum;
#N canvas 18 468 168 223 wave 1;
#X obj 22 16 inlet~;
#X obj 87 132 metro 100;
#X obj 87 101 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 86 66 loadbang;
#X obj 22 171 tabwrite~ wave;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X restore 112 223 pd wave;
#N canvas 0 22 450 278 (subpatch) 0;
#X array spectrum 256 float 1;
#A 0 0.0184567 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 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 0.1 255 0 200 140 1 0 0;
#X restore 302 196 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X array wave 440 float 1;
#A 0 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837 -0.00922837
-0.00922837 -0.00922837;
#X coords 0 1 439 -1 200 140 1;
#X restore 299 17 graph;
#X obj 186 223 output~;
#X obj 49 65 noise~;
#X obj 123 65 hsl 128 15 0 10000 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X text 16 7 low pass filter;
#X text 118 43 cutoff frequency;
#X floatatom 141 99 5 0 0 0 - - -;
#X text 181 100 Hz;
#X obj 94 138 lop~;
#X connect 5 0 11 0;
#X connect 6 0 9 0;
#X connect 6 0 11 1;
#X connect 11 0 0 0;
#X connect 11 0 1 0;
#X connect 11 0 4 0;
ソースコード(ハイパスフィルター)
#N canvas 54 49 549 411 10;
#N canvas 802 419 213 286 spectrum 1;
#X obj 23 97 *~;
#X obj 36 131 +~;
#X obj 36 165 sqrt~;
#X obj 39 54 fft~;
#X obj 60 98 *~;
#X obj 36 201 /~ 256;
#X obj 39 19 inlet~;
#X obj 117 69 block~ 512;
#X obj 119 203 metro 100;
#X obj 119 173 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 65 243 tabwrite~ spectrum;
#X obj 119 139 loadbang;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 0 0;
#X connect 3 0 0 1;
#X connect 3 1 4 0;
#X connect 3 1 4 1;
#X connect 4 0 1 1;
#X connect 5 0 10 0;
#X connect 6 0 3 0;
#X connect 8 0 10 0;
#X connect 9 0 8 0;
#X connect 11 0 9 0;
#X restore 14 222 pd spectrum;
#N canvas 167 509 168 223 wave 1;
#X obj 22 16 inlet~;
#X obj 87 132 metro 100;
#X obj 87 101 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 86 66 loadbang;
#X obj 22 171 tabwrite~ wave;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X restore 112 223 pd wave;
#N canvas 0 22 450 278 (subpatch) 0;
#X array spectrum 256 float 1;
#A 0 0.000557437 0.00144645 0.000873815 0.0013305 0.00208436 0.00391579
0.00267736 0.00212114 0.0033479 0.00280149 0.00669627 0.0105433 0.00581229
0.00377586 0.00708204 0.00725177 0.0121856 0.0137362 0.0096715 0.022032
0.00691107 0.00798834 0.00338574 0.0240121 0.00406429 0.0204152 0.00860288
0.0138821 0.0118128 0.0314449 0.0293977 0.00444991 0.0283308 0.0180861
0.0129317 0.00930665 0.0185334 0.0316541 0.0100439 0.0315001 0.0212284
0.0320893 0.0376492 0.0115252 0.00741958 0.0122743 0.0413353 0.0171198
0.0290083 0.055525 0.0366455 0.034185 0.0275615 0.0285629 0.0124664
0.0408623 0.0283733 0.00733145 0.00231606 0.0138714 0.059553 0.0192116
0.0354017 0.0475156 0.0264497 0.0324025 0.0508218 0.0357137 0.0370576
0.0202674 0.0868731 0.0509478 0.0363296 0.0359983 0.00623914 0.0617997
0.0524499 0.0383079 0.0494272 0.0160165 0.0224188 0.0168279 0.0470062
0.0920219 0.0949508 0.0300402 0.026275 0.0158731 0.0647307 0.0394541
0.0160096 0.022579 0.0150302 0.0521414 0.034067 0.0370668 0.0161153
0.097511 0.0312102 0.0527771 0.0814672 0.0927338 0.0320688 0.0358853
0.0599452 0.0703319 0.066884 0.0539393 0.0441016 0.0459766 0.00937938
0.042154 0.0282626 0.047415 0.0735184 0.0152192 0.038806 0.0608598
0.0924845 0.0502095 0.0694598 0.069172 0.0260673 0.123588 0.0608741
0.0903617 0.0412587 0.0568 0.0852165 0.0458067 0.0757038 0.090202 0.0515864
0.0695467 0.1198 0.0651131 0.0754834 0.0209906 0.0717143 0.130305 0.0559717
0.0790014 0.056709 0.0558181 0.032733 0.101739 0.0365849 0.0709855
0.0346859 0.144087 0.0360429 0.0406031 0.120358 0.0241039 0.152062
0.0406173 0.0536934 0.0488495 0.0249365 0.121917 0.103259 0.0416359
0.136421 0.116823 0.0982073 0.0743399 0.115703 0.0761877 0.0594725
0.0766558 0.0609127 0.100872 0.019176 0.0486271 0.133038 0.00945126
0.124737 0.0956906 0.0257339 0.0591356 0.0374515 0.0668954 0.097635
0.0184458 0.15013 0.0619045 0.067133 0.0173583 0.174554 0.0668609 0.123463
0.0455381 0.0883475 0.0871855 0.00560394 0.0585065 0.087227 0.138593
0.0851535 0.141376 0.0717701 0.113704 0.0516281 0.130635 0.0647664
0.0537819 0.190275 0.0675054 0.0902043 0.0467922 0.0782428 0.036988
0.017675 0.0561225 0.0120035 0.0429916 0.0653848 0.06255 0.179612 0.0619771
0.0777586 0.0109234 0.0537634 0.0762044 0.0711606 0.0587352 0.0994031
0.0941631 0.130993 0.0299249 0.0545877 0.0207897 0.0274178 0.0630187
0.16207 0.0362349 0.0280711 0.015482 0.0813614 0.0693102 0.0842151
0.123302 0.0832631 0.0636258 0.0302795 0.0435372 0.042534 0.134593
0.170388 0.0889378 0.124537 0.101625 0.163473 0.0497845 0.0729139 0.157267
;
#X coords 0 0.1 255 0 200 140 1 0 0;
#X restore 302 196 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X array wave 440 float 1;
#A 0 0.563806 -0.18273 -1.29759 0.0384536 0.913799 -0.0259071 -0.364499
0.0653463 0.167053 0.826431 -0.40716 -0.820415 0.251823 0.618151 0.00414562
-1.05221 -0.455396 1.35581 -0.986996 0.55865 0.151383 -0.222574 0.258116
0.291678 0.18889 -0.67881 0.654553 -0.0140472 -0.934153 1.09425 -0.824999
0.508876 -0.235783 -0.158545 0.631014 0.22492 -1.87954 0.914087 0.454263
0.464375 -0.893232 0.238632 0.477787 -0.00789613 0.112337 -0.714483
-0.282759 0.476289 -0.775401 1.03787 0.152147 -1.04282 0.510478 -1.03975
1.50715 -0.684141 0.297641 -1.03257 1.03324 -1.25704 0.455749 0.393118
0.289067 -0.79255 0.677702 -0.0412813 0.922104 -0.0746374 -0.239105
-1.25792 1.44997 -1.17145 -0.111537 0.146255 1.04163 -0.966557 -0.0894656
0.868227 0.298683 -1.69022 1.62548 -1.13232 1.03659 -0.45062 -0.938838
0.33576 1.06593 0.234877 -1.24381 -0.336221 -0.0263583 0.908476 -0.958853
0.412016 -0.0957083 0.640704 0.319886 -0.721564 -0.658692 1.49916 -1.64927
1.06745 -0.111765 0.0172537 0.527762 -1.34132 0.0499882 1.66298 -0.837961
-0.0243439 0.014097 0.307641 -0.237128 -0.0453557 -0.568041 0.694617
0.319061 -0.486666 0.20009 -0.0918945 -0.419853 -0.480386 0.241371
-0.158125 0.337665 -0.23968 0.286301 0.668013 -0.293607 0.909982 -0.345752
-0.69432 0.405598 -0.500426 1.0347 -1.11015 1.04029 -0.114732 0.268492
-0.759915 -0.617522 1.21718 -0.870892 0.329243 0.652401 -0.59188 -0.896122
0.752268 0.799799 -1.89765 0.175254 1.19492 -1.21485 0.644309 0.602056
-1.09747 -0.13907 1.04741 -0.299279 -0.851247 -0.147151 1.96273 -0.373448
-0.295696 0.441115 -0.352179 0.154971 0.305728 -0.558323 -0.0645918
0.462766 -0.875863 0.0874741 -0.797828 -0.0906579 0.233963 1.30969
0.337487 -0.182027 0.0817091 -0.980999 -0.287829 0.257047 0.954698
-1.61318 1.14724 -0.178677 -0.550177 1.12656 -1.11735 0.413175 -0.0577029
-0.225121 -0.453941 1.02384 -0.945595 0.972909 -0.878432 0.514687 -0.875749
1.74754 -1.08153 -0.601567 0.67451 0.792654 -1.45999 0.620423 -0.118824
0.750366 -0.14788 -0.660133 1.04231 -0.507708 -0.0478165 -0.288906
0.046811 0.400786 -0.862222 0.664797 0.843121 -0.349805 -0.124576 -1.31071
0.908022 0.488107 -1.23066 1.61175 -0.284641 -1.4834 1.53019 -0.62053
0.204799 -0.0264893 -1.05617 1.84112 -0.749421 -0.986359 -0.159934
1.52798 -0.869744 -0.00994635 1.06139 -0.564813 -0.0065406 0.735298
-1.56824 -0.196981 1.33064 -1.15733 0.725302 -0.101898 0.441804 -1.05255
0.635106 0.794687 -0.0946984 -0.991841 0.741951 -0.84411 0.0465389
-0.412173 0.483063 0.0149435 0.406745 0.13521 0.120863 0.55645 -1.78828
0.266062 -0.288284 0.897626 -0.159421 0.0443771 1.07468 -0.130442 -0.705481
-0.736356 0.760273 -0.201553 -0.334453 -0.271908 0.0191858 0.286864
-0.394756 0.533942 -0.228931 0.994995 -1.20649 0.35066 0.573265 -0.578106
0.407321 0.702202 -0.410438 -0.313267 0.589464 0.248265 -1.44106 0.310049
0.917303 0.0655405 -1.23566 0.994998 -0.12848 -0.0710382 -0.998635
0.408603 -0.695132 1.59295 -1.4529 0.963004 -0.0890807 -0.927317 1.1288
0.596707 -0.307182 -0.0746905 -0.107311 -0.444162 -0.567973 1.53123
-0.627343 0.175387 -0.842919 0.375353 0.459061 -0.339537 -0.387667
0.328299 0.367444 -0.132458 -1.27329 1.9277 -0.3927 0.0857177 -0.917546
0.659433 -0.0491873 -1.18205 0.383882 0.238853 -0.598385 0.562314 0.926128
-1.10793 0.163533 -0.406743 0.0638999 0.637172 -0.39066 0.74284 -0.319778
-0.434492 0.249503 -0.818008 0.655192 1.12291 -1.29906 1.20176 -1.66527
0.390939 -0.344256 -0.00544506 0.999311 -0.631828 0.849983 0.435409
-0.667245 -0.748585 1.0324 -1.13678 0.890935 -0.283034 0.933193 -0.137997
-0.429451 -0.798132 1.23275 0.0421386 0.0778653 0.185156 -0.469601
-1.17837 1.39747 -0.530895 0.313178 0.207336 -0.738969 -0.539514 -0.07544
1.57625 -0.383982 0.451808 -1.46678 1.45671 -0.905516 -0.0974245 -0.89824
0.309698 0.481799 0.720533 -0.644494 0.310042 -0.814598 0.542919 0.751209
0.127695 -1.29644 0.0177119 0.445821 0.708977 -0.905911 0.0848847 0.265239
0.0578242 0.443154 0.257651 -1.32694 1.01704 -0.666029 -0.0962823 -0.26069
0.0495497 0.315584 0.526533 -0.890766 1.01964 0.371602 -0.953463 0.972007
-0.0257909 -1.61104 0.0824127 0.0295016 0.924038 -0.37334 -0.767664
0.465037 0.625015 -0.815476;
#X coords 0 1 439 -1 200 140 1;
#X restore 299 17 graph;
#X obj 186 223 output~;
#X obj 49 65 noise~;
#X obj 123 65 hsl 128 15 0 10000 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 12700 1;
#X text 118 43 cutoff frequency;
#X floatatom 141 99 5 0 0 0 - - -;
#X text 181 100 Hz;
#X obj 94 138 hip~;
#X text 17 7 hi pass filter;
#X connect 5 0 10 0;
#X connect 6 0 8 0;
#X connect 6 0 10 1;
#X connect 10 0 0 0;
#X connect 10 0 1 0;
#X connect 10 0 4 0;
ソースコード(バンドパスフィルター)
#N canvas 642 296 549 411 10;
#N canvas 802 419 213 286 spectrum 1;
#X obj 23 97 *~;
#X obj 36 131 +~;
#X obj 36 165 sqrt~;
#X obj 39 54 fft~;
#X obj 60 98 *~;
#X obj 36 201 /~ 256;
#X obj 39 19 inlet~;
#X obj 117 69 block~ 512;
#X obj 119 203 metro 100;
#X obj 119 173 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 65 243 tabwrite~ spectrum;
#X obj 119 139 loadbang;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 0 0;
#X connect 3 0 0 1;
#X connect 3 1 4 0;
#X connect 3 1 4 1;
#X connect 4 0 1 1;
#X connect 5 0 10 0;
#X connect 6 0 3 0;
#X connect 8 0 10 0;
#X connect 9 0 8 0;
#X connect 11 0 9 0;
#X restore 14 222 pd spectrum;
#N canvas 812 411 168 223 wave 1;
#X obj 22 16 inlet~;
#X obj 87 132 metro 100;
#X obj 87 101 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 86 66 loadbang;
#X obj 22 171 tabwrite~ wave;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X restore 112 223 pd wave;
#N canvas 0 22 450 278 (subpatch) 0;
#X array spectrum 256 float 1;
#A 0 0.00414806 0.0181145 0.00560303 0.00990322 0.0132421 0.00956486
0.0277461 0.0141168 0.0139948 0.0174617 0.0190409 0.00948288 0.0145607
0.0206069 0.0126569 0.0321426 0.0246457 0.0821052 0.0498411 0.0456679
0.0697605 0.0612832 0.0326075 0.0355418 0.0171209 0.00576365 0.00364579
0.0150419 0.00739215 0.0102768 0.00641944 0.00476013 0.0101141 0.00287288
0.0102252 0.00251728 0.00329533 0.00507047 0.00437284 0.00598638 0.00120437
0.00286757 0.00070372 0.00498519 0.00188408 0.000709998 0.00171511
0.0022521 0.00315362 0.00094138 0.00183125 0.00164656 0.00121666 0.00195509
0.0011032 0.00210869 0.00184484 0.00178599 0.000951944 0.0011245 0.00225628
0.00114342 0.000314062 0.00193499 0.000565376 0.000625699 0.000917087
0.00161102 0.001259 0.00149285 0.000412293 0.000639704 0.00114166 0.000177568
0.0013997 0.000615024 0.000576521 0.000443985 0.000826878 0.000486848
0.000864212 0.000257359 0.00062401 0.000866293 0.000563305 0.000641698
0.000520084 0.000457877 0.000419964 0.000423945 0.00047815 0.000430912
0.00131016 0.0006366 0.000272874 0.000411316 0.0008961 0.000166295
0.00103212 0.000485313 0.00097713 0.00048871 0.000655749 0.000325254
0.000581082 0.000738546 0.000471639 0.000719269 0.000926262 0.000256138
0.000237846 0.000347631 0.000412033 0.000697356 0.000311162 0.00039858
0.000443095 0.00053592 0.000628027 0.000388747 0.000459711 0.000182995
0.000610461 0.000266081 2.67933e-05 0.000130944 0.000451314 0.000539006
0.000211146 0.000225959 0.000379681 0.000366108 0.000564521 0.000410226
0.000232287 0.000675074 0.000358426 0.000412315 0.000347538 0.000480363
0.000593129 0.000910715 0.000142373 0.000425481 0.000400853 0.00066783
8.84206e-05 0.000247554 0.000187091 0.000643682 0.000545182 0.000526838
0.000106282 0.000118261 0.000520389 0.000470297 9.10958e-05 0.000273355
0.000383484 0.000191028 0.000295792 0.000105748 4.32931e-05 0.000233191
0.000413851 0.000366823 0.000249724 0.000535241 0.00039301 0.000322459
3.26731e-05 0.000379509 0.000454565 0.000379767 0.000222421 0.000386355
0.00044278 0.000108904 0.000402739 0.000278465 4.45986e-06 0.00013879
0.000457277 0.00016742 0.000284348 0.000275111 0.00038444 0.000238236
0.000356147 0.000178469 0.000201141 0.000312677 0.00023964 0.00029487
0.000356293 0.000241919 0.000125582 0.000462009 0.000346497 5.94393e-05
0.000249464 0.000215569 0.000343526 0.000284178 0.000122544 0.000119675
0.000313521 0.000502063 0.000151187 0.000337292 0.00017618 0.000226287
0.000370711 0.00029485 0.000275853 5.26145e-05 0.00030922 0.000110799
0.000371348 0.000497944 0.000202293 0.000399346 0.000195917 7.89799e-05
0.0003182 0.000158947 0.000473496 0.000214959 0.00031657 0.000190582
0.000339138 0.000308254 0.000337007 0.000144209 0.000259247 0.00016981
0.000155795 0.00031096 0.00023458 0.000130378 0.00036135 0.000468089
0.000142139 0.00022298 0.000363316 0.00020649 0.000399782 0.000337113
0.000305503 0.000232343 0.000118033 0.000448132 0.000282677 0.000212362
0.000201493 0.00023434;
#X coords 0 0.1 255 0 200 140 1 0 0;
#X restore 302 196 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X array wave 440 float 1;
#A 0 -0.086947 -0.0554084 -0.0120752 0.0347355 0.0883274 0.140431 0.192359
0.223264 0.234823 0.237827 0.232553 0.218158 0.189792 0.161838 0.12251
0.0681546 0.00326251 -0.0696429 -0.137187 -0.186724 -0.223222 -0.247983
-0.265144 -0.276292 -0.282128 -0.275496 -0.259339 -0.231305 -0.202314
-0.154061 -0.106061 -0.0563591 -0.0122467 0.0336368 0.0830791 0.132273
0.179328 0.222398 0.242582 0.25169 0.246723 0.239146 0.212655 0.187376
0.143253 0.0856745 0.0342594 -0.0146072 -0.052184 -0.0887411 -0.117346
-0.130657 -0.128856 -0.128048 -0.111761 -0.0992001 -0.0805268 -0.0584956
-0.0231253 0.00844208 0.0478661 0.0734454 0.0906644 0.107699 0.116532
0.118059 0.101952 0.0870704 0.0672818 0.0343183 0.001863 -0.0295719
-0.0665987 -0.0971373 -0.11269 -0.13116 -0.130775 -0.119871 -0.0952009
-0.0643954 -0.0351658 0.00337248 0.0402671 0.0836763 0.123368 0.16081
0.180371 0.183602 0.166818 0.136295 0.0914768 0.039772 -0.0103965 -0.0611096
-0.111491 -0.155162 -0.179069 -0.181371 -0.178786 -0.170963 -0.163718
-0.156794 -0.135063 -0.10691 -0.081563 -0.0565272 -0.0396956 -0.0142326
0.0217062 0.0504129 0.0782557 0.0914064 0.0957919 0.0998871 0.0986788
0.0885858 0.076782 0.0606403 0.0362954 0.0190895 -0.00589355 -0.0399958
-0.0641292 -0.0769073 -0.0872595 -0.100104 -0.0995815 -0.104494 -0.0935529
-0.0734772 -0.054157 -0.0419813 -0.0194644 0.0092187 0.0353649 0.0578487
0.0812403 0.0920519 0.0937835 0.0810883 0.0530187 0.015067 -0.0189156
-0.0576209 -0.0863004 -0.0975135 -0.0957948 -0.0959616 -0.0915422 -0.0824998
-0.0761648 -0.073974 -0.0700229 -0.0698301 -0.0580994 -0.0519585 -0.0346842
-0.0275249 -0.0109795 -0.00393181 0.0103059 0.0182246 0.0346345 0.0555459
0.0835637 0.110884 0.124179 0.123133 0.121975 0.12488 0.11364 0.105552
0.080659 0.0438882 -0.00109275 -0.0353177 -0.0727691 -0.0976962 -0.113287
-0.118092 -0.107602 -0.101808 -0.0989794 -0.0910998 -0.0829009 -0.0814443
-0.079633 -0.066099 -0.0521342 -0.0386584 -0.0295272 -0.0270266 -0.0147503
-0.00628821 0.00869584 0.0128377 0.0180833 0.0272243 0.0373051 0.0441597
0.0465304 0.0459097 0.0331398 0.00875621 -0.0055308 -0.0247685 -0.0384791
-0.0563939 -0.0671303 -0.0799417 -0.0946199 -0.0936371 -0.0879285 -0.0794486
-0.0743937 -0.0739148 -0.0704581 -0.0527795 -0.0390321 -0.0301414 -0.0225381
-0.008308 0.0143335 0.0415368 0.0622353 0.0770873 0.0905813 0.101026
0.114221 0.1204 0.11542 0.0943973 0.0738106 0.0532776 0.0311822 0.00949838
-0.00894122 -0.026644 -0.0447959 -0.0660879 -0.0756415 -0.0826427 -0.0779044
-0.0777546 -0.0618839 -0.0365006 -0.0117885 0.0100132 0.0274106 0.0377672
0.0471048 0.0601167 0.0645476 0.0672481 0.0679026 0.0641151 0.0603626
0.0468261 0.0259635 -0.00602003 -0.0474342 -0.0781509 -0.0938102 -0.0965532
-0.0903128 -0.0849894 -0.0641636 -0.0459993 -0.0360633 -0.017745 0.00696578
0.0413775 0.0722496 0.096435 0.117249 0.129793 0.124627 0.110754 0.0801473
0.0477873 0.0173324 -0.014549 -0.0492432 -0.0700095 -0.0852065 -0.0978291
-0.110854 -0.110357 -0.0926691 -0.0761379 -0.0591644 -0.0500181 -0.045694
-0.0442923 -0.0521857 -0.0578449 -0.0637603 -0.0724261 -0.0662371 -0.064662
-0.0666444 -0.0721949 -0.0815086 -0.0856588 -0.0836551 -0.078964 -0.059922
-0.0482833 -0.0371731 -0.0246577 -0.0222558 -0.00936953 0.00965349
0.0314634 0.0478961 0.0500421 0.0500157 0.0499562 0.0517524 0.0458507
0.0419443 0.0290059 0.0197976 0.00581854 -0.00607541 -0.0112848 -0.0221829
-0.0237433 -0.0166099 -0.011942 0.00315439 0.00839138 0.0226746 0.0381651
0.0606199 0.0872357 0.113454 0.131439 0.152429 0.156147 0.154113 0.138801
0.119074 0.0993216 0.0712422 0.0389178 0.0143401 -0.0086568 -0.0253908
-0.0337407 -0.0319719 -0.0283332 -0.033868 -0.0344193 -0.021526 -0.00793378
0.00174255 0.0206057 0.0298796 0.0418663 0.0421738 0.0415902 0.0363824
0.0191312 -0.00637724 -0.0394287 -0.0709266 -0.106966 -0.127081 -0.13547
-0.125369 -0.100532 -0.0722907 -0.0527412 -0.023174 0.00291933 0.0367763
0.0560515 0.0759578 0.100127 0.117439 0.123332 0.122712 0.126676 0.120738
0.100011 0.0861831 0.0629377 0.0411047 0.0182559 -0.00510038 -0.018211
-0.0341397 -0.0439438 -0.0428256 -0.0298606 -0.00789712 0.0159348 0.0494018
0.0715856 0.0941701 0.10219 0.0959855 0.0814445 0.0646277 0.0544918
0.0503329 0.0329548 0.0257712 0.0250905 0.0319368 0.0364292 0.0341749
0.0359544 0.038122 0.0324633 0.0364287 0.0346314 0.0292429 0.0175785
0.0105866 -0.00229873 -0.00885972 -0.0227155 -0.0361654 -0.0470937
-0.0488095 -0.0457333 -0.0310282 -0.0248138 -0.0281762 -0.0353506 -0.048776
-0.0475819 -0.0377282 -0.0189939 0.00263278 0.0159638 0.0342729 0.0404558
;
#X coords 0 1 439 -1 200 140 1;
#X restore 299 17 graph;
#X obj 186 223 output~;
#X obj 49 65 noise~;
#X obj 123 37 hsl 128 15 0 10000 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 2100 1;
#X floatatom 141 71 5 0 0 0 - - -;
#X text 181 72 Hz;
#X obj 94 138 bp~;
#X obj 143 116 hsl 128 15 0 100 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 1300 1;
#X text 15 -15 band pass filter;
#X text 118 15 center frequency;
#X text 142 96 quality factor;
#X floatatom 151 146 5 0 0 0 - - -;
#X connect 5 0 9 0;
#X connect 6 0 7 0;
#X connect 6 0 9 1;
#X connect 9 0 0 0;
#X connect 9 0 1 0;
#X connect 9 0 4 0;
#X connect 10 0 9 2;
#X connect 10 0 14 0;

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;

Pure Dataで正弦波・ノコギリ波・三角波・矩形波・PWMを鳴らす

以前、作成したパッチを組み合わせて、正弦波・ノコギリ波・三角波矩形波・PWMからどれか一つを選択して鳴らすことができるパッチを作成しました。

これで、シンセサイザー作成という目的のうち、VCO部分はほぼできたと思います。

f:id:aa_debdeb:20160817170434p:plain

ソースコード
#N canvas 46 23 1230 694 10;
#X obj -123 353 *~;
#X obj -251 347 *~;
#X obj -101 487 +~;
#X obj -120 573 output~;
#N canvas 0 22 450 278 (subpatch) 0;
#X array wave 100 float 1;
#A 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;
#X coords 0 1 99 -1 200 140 1;
#X restore 76 481 graph;
#X obj -228 572 tabwrite~ wave;
#X obj -246 488 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj -246 515 metro 100;
#X obj -246 458 loadbang;
#X obj -285 288 osc~;
#X obj -162 242 phasor~;
#X obj -17 93 phasor~;
#X obj -162 277 -~ 0.5;
#X obj -162 310 *~ 2;
#X obj -57 131 *~ 2;
#X obj 23 130 *~ -2;
#X obj -57 170 +~ -1;
#X obj 22 168 +~ 1;
#X obj -57 204 clip~ 0 1;
#X obj 22 203 clip~ 0 1;
#X obj -45 243 +~;
#X obj -45 276 -~ 0.5;
#X obj -45 312 *~ 2;
#X obj -20 353 *~;
#X obj 108 201 phasor~;
#X obj 108 236 expr~ $v1 > 0.5;
#X obj 127 349 *~;
#X obj 108 273 -~ 0.5;
#X obj 108 310 *~ 2;
#X obj 227 200 phasor~;
#X obj 227 239 expr~ $v1 < $v2;
#X obj 228 277 -~ 0.5;
#X obj 228 312 *~ 2;
#X obj 250 349 *~;
#X text 494 213 frequency;
#X obj 424 178 mtof;
#X floatatom 489 237 5 0 0 0 - - -;
#X text 521 239 Hz;
#X obj 424 231 s freq;
#X obj -285 248 r freq;
#X floatatom 490 190 5 0 0 0 - - -;
#X text 486 165 MIDI note number;
#X text 644 108 saw-tooth wave;
#X text 644 92 sine wave;
#X obj 620 96 vradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1
-1 3;
#X obj 620 66 loadbang;
#X text 644 124 triangle wave;
#X text 644 140 square wave;
#X text 645 156 pwm;
#X obj 688 195 expr if($f1 == 0 \, 1 \, 0);
#X obj 686 261 expr if($f1 == 1 \, 1 \, 0);
#X obj 686 293 s saw;
#X obj 685 325 expr if($f1 == 2 \, 1 \, 0);
#X obj 685 357 s tri;
#X obj 684 394 expr if($f1 == 3 \, 1 \, 0);
#X obj 683 458 expr if($f1 == 4 \, 1 \, 0);
#X obj 684 426 s squ;
#X obj 688 227 s sin;
#X obj 683 490 s pwm;
#X obj -226 311 r sin;
#X obj -98 319 r saw;
#X obj 9 310 r tri;
#X obj 165 312 r squ;
#X obj 284 310 r pwm;
#X obj -162 205 r freq;
#X obj -17 58 r freq;
#X obj 108 162 r freq;
#X obj 227 166 r freq;
#X text -296 214 sine wave;
#X text -181 173 saw-tooth wave;
#X text -36 27 triangle wave;
#X text 108 130 square wave;
#X text 265 131 pwm;
#X obj 426 361 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 6350 1;
#X obj 423 420 s pwm-width;
#X obj 314 199 r pwm-width;
#X obj 424 76 loadbang;
#X obj 427 143 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 6500 1;
#X msg 424 110 69;
#X obj 423 288 loadbang;
#X msg 423 327 0.5;
#X text 513 397 pulse width;
#X floatatom 513 421 5 0 0 0 - - -;
#X connect 0 0 2 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 2 0 3 1;
#X connect 2 0 5 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X connect 8 0 6 0;
#X connect 9 0 1 0;
#X connect 10 0 12 0;
#X connect 11 0 14 0;
#X connect 11 0 15 0;
#X connect 12 0 13 0;
#X connect 13 0 0 0;
#X connect 14 0 16 0;
#X connect 15 0 17 0;
#X connect 16 0 18 0;
#X connect 17 0 19 0;
#X connect 18 0 20 0;
#X connect 19 0 20 1;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 23 0 2 0;
#X connect 24 0 25 0;
#X connect 25 0 27 0;
#X connect 26 0 2 0;
#X connect 27 0 28 0;
#X connect 28 0 26 0;
#X connect 29 0 30 0;
#X connect 30 0 31 0;
#X connect 31 0 32 0;
#X connect 32 0 33 0;
#X connect 33 0 2 0;
#X connect 35 0 38 0;
#X connect 35 0 36 0;
#X connect 39 0 9 0;
#X connect 44 0 49 0;
#X connect 44 0 50 0;
#X connect 44 0 52 0;
#X connect 44 0 54 0;
#X connect 44 0 55 0;
#X connect 45 0 44 0;
#X connect 49 0 57 0;
#X connect 50 0 51 0;
#X connect 52 0 53 0;
#X connect 54 0 56 0;
#X connect 55 0 58 0;
#X connect 59 0 1 1;
#X connect 60 0 0 1;
#X connect 61 0 23 1;
#X connect 62 0 26 1;
#X connect 63 0 33 1;
#X connect 64 0 10 0;
#X connect 65 0 11 0;
#X connect 66 0 24 0;
#X connect 67 0 29 0;
#X connect 73 0 74 0;
#X connect 73 0 82 0;
#X connect 75 0 30 1;
#X connect 76 0 78 0;
#X connect 77 0 35 0;
#X connect 77 0 40 0;
#X connect 78 0 77 0;
#X connect 79 0 80 0;
#X connect 80 0 73 0;