Pure Dataで矩形波を鳴らす
Pure Dataで、矩形波はのこぎり波「phasor~」から作成します。 今回は、2通りの手法で矩形波を鳴らすパッチを作りました。 ラジオボタンで、矩形波の生成手法を選択することができます。 (生成されるのは同じ周波数の矩形波なので、音は変わりません。)
左側の手法1は、ある周波数ののこぎり波と同じ周波数で半周期分位相をずらした逆向きののこぎり波(値が1から0に落ちていく波)を合成することで矩形波を生成しています。
右側の手法2は、0.5以下なら0、0.5以上なら1にのこぎり波の波を変換することにより、矩形波を生成しています。
ソースコード
#N canvas 419 86 748 644 10; #X obj 122 257 +~; #X obj 152 463 output~; #X obj 371 423 metro 100; #X obj 345 490 tabwrite~ wave; #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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 99 -1 200 140 1; #X restore 478 371 graph; #X obj 397 384 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 121 290 -~ 0.5; #X obj 164 154 * -1; #X obj 65 191 phasor~; #X obj 171 197 phasor~; #X msg 219 154 0.5; #X msg 124 153 0; #X obj 185 0 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 6100 1; #X obj 203 45 mtof; #X floatatom 274 76 5 0 0 0 - - -; #X text 313 77 Hz; #X text 270 56 frequency; #X obj 323 177 phasor~; #X obj 317 222 expr~ $v1 > 0.5; #X obj 156 348 *~; #X text 65 107 method 1; #X text 336 148 method 2; #X obj 493 169 hradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X msg 499 134 0; #X obj 498 101 loadbang; #X obj 300 349 *~; #X obj 397 335 loadbang; #X obj 484 205 select 0 1; #X obj 274 439 +~; #X msg 480 254 0; #X msg 436 254 1; #X msg 571 254 0; #X msg 527 254 1; #X obj 180 -65 loadbang; #X msg 181 -32 69; #X text 537 167 select method; #X connect 0 0 6 0; #X connect 2 0 3 0; #X connect 5 0 2 0; #X connect 6 0 19 0; #X connect 7 0 9 0; #X connect 8 0 0 0; #X connect 9 0 0 0; #X connect 10 0 9 1; #X connect 11 0 8 1; #X connect 12 0 13 0; #X connect 13 0 8 0; #X connect 13 0 14 0; #X connect 13 0 11 0; #X connect 13 0 7 0; #X connect 13 0 10 0; #X connect 13 0 17 0; #X connect 17 0 18 0; #X connect 18 0 25 0; #X connect 19 0 28 0; #X connect 22 0 27 0; #X connect 23 0 22 0; #X connect 24 0 23 0; #X connect 25 0 28 0; #X connect 26 0 5 0; #X connect 27 0 30 0; #X connect 27 0 31 0; #X connect 27 1 29 0; #X connect 27 1 32 0; #X connect 28 0 1 0; #X connect 28 0 1 1; #X connect 28 0 3 0; #X connect 29 0 19 1; #X connect 30 0 19 1; #X connect 31 0 25 1; #X connect 32 0 25 1; #X connect 33 0 34 0; #X connect 34 0 12 0;