Pure Dataでシンセサイザーを作成する
今までPure Dataで作成してきたものを組み合わせて、鍵盤・VCO・VCF・VCA・EG・LFOがついたシンセサイザーを作成しました。
キーボードの「abcdefgh」がそれぞれ「ドレミファソラシ」に対応しています。
- Pure DataでPCのキーボードを鍵盤にする - aa develop
- Pure Dataで「vcf~」を用いてワウをかける - aa develop
- Pure Dataで正弦波・ノコギリ波・三角波・矩形波・PWMを鳴らす - aa develop
- Pure Dataでエンベロープジェネレーター - aa develop
ソースコード
#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;