Pure Dataで正弦波・ノコギリ波・三角波・矩形波・PWMを鳴らす
以前、作成したパッチを組み合わせて、正弦波・ノコギリ波・三角波・矩形波・PWMからどれか一つを選択して鳴らすことができるパッチを作成しました。
- Pure Dataで正弦波/のこぎり波を切り替えるパッチ - aa develop
- Pure Dataで矩形波を鳴らす - aa develop
- Pure Dataで三角波を鳴らす - aa develop
- Pure DataでPWMを鳴らす - aa develop
これで、シンセサイザー作成という目的のうち、VCO部分はほぼできたと思います。
ソースコード
#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;