diff --git a/Abstractions/Audio/gaterelease~.pd b/Abstractions/Audio/gaterelease~.pd new file mode 100644 index 000000000..dffa6d362 --- /dev/null +++ b/Abstractions/Audio/gaterelease~.pd @@ -0,0 +1,23 @@ +#N canvas 513 211 668 292 10; +#X obj 103 39 inlet~; +#X obj 88 239 outlet~; +#X text 431 146 Part of ELSE \; https://github.com/porres/pd-else; +#X obj 379 35 inlet; +#X obj 88 203 *~; +#X obj 117 89 abs~; +#X obj 33 172 else/sh~; +#X obj 268 138 else/timed.gate~ \$1; +#X obj 268 96 else/gate2imp~; +#X obj 103 171 expr~ ($v1 != 0 && $v2 != 0); +#X text 433 127 Alexandre Torres Porres (2025); +#X connect 0 0 5 0; +#X connect 0 0 6 0; +#X connect 0 0 8 0; +#X connect 0 0 9 0; +#X connect 3 0 7 1; +#X connect 4 0 1 0; +#X connect 5 0 6 1; +#X connect 6 0 4 0; +#X connect 7 0 9 1; +#X connect 8 0 7 0; +#X connect 9 0 4 1; diff --git a/Abstractions/Control/gaterelease.pd b/Abstractions/Control/gaterelease.pd new file mode 100644 index 000000000..7136b639b --- /dev/null +++ b/Abstractions/Control/gaterelease.pd @@ -0,0 +1,39 @@ +#N canvas 502 118 702 542 12; +#X msg 328 392 0; +#X obj 145 163 t f f; +#X obj 177 250 sel 1; +#X msg 177 276 stop; +#X obj 145 129 trigger float float; +#X obj 369 45 inlet; +#X obj 71 45 inlet; +#X obj 201 472 outlet; +#X obj 330 333 del \$1; +#X obj 177 208 expr ($f1 == 0) && ($f2 != 0), f 15; +#X text 415 261 Part of ELSE \; https://github.com/porres/pd-else; +#X text 417 241 Alexandre Torres Porres (2025); +#X obj 330 301 b; +#X obj 298 172 sel 0; +#X obj 328 416 else/changed, f 16; +#X obj 71 90 else/router; +#X obj 369 90 > 0; +#X connect 0 0 14 0; +#X connect 1 0 9 1; +#X connect 1 1 9 0; +#X connect 2 0 3 0; +#X connect 3 0 8 0; +#X connect 4 0 1 0; +#X connect 4 1 13 0; +#X connect 5 0 16 0; +#X connect 6 0 15 0; +#X connect 8 0 0 0; +#X connect 9 0 2 0; +#X connect 12 0 8 0; +#X connect 13 0 0 0; +#X connect 13 0 14 1; +#X connect 13 1 12 0; +#X connect 13 1 7 0; +#X connect 14 0 7 0; +#X connect 15 0 7 0; +#X connect 15 1 4 0; +#X connect 16 0 8 1; +#X connect 16 0 15 1; diff --git a/Documentation/Help-files/gatehold-help.pd b/Documentation/Help-files/gatehold-help.pd index 6f23efc99..b655a2d4c 100644 --- a/Documentation/Help-files/gatehold-help.pd +++ b/Documentation/Help-files/gatehold-help.pd @@ -65,6 +65,7 @@ #X obj 205 241 else/display; #X text 42 199 see also; #X obj 44 224 else/gatehold~; +#X obj 44 249 else/gaterelease; #X connect 24 0 33 1; #X connect 31 0 32 0; #X connect 32 0 33 0; diff --git a/Documentation/Help-files/gatehold~-help.pd b/Documentation/Help-files/gatehold~-help.pd index b2353f48b..36a999087 100644 --- a/Documentation/Help-files/gatehold~-help.pd +++ b/Documentation/Help-files/gatehold~-help.pd @@ -158,15 +158,16 @@ #X text 468 183 hold time; #X obj 306 146 else/randpulse~ 0.5 0.25; #X text 70 88 [gatehold~] holds a gate value for a certain amount of time (specified in ms) after the gate has closed. If a new gate starts before the hold time is finished \, the object is retriggered.; -#X obj 148 212 else/gatehold~ 500; -#X obj 148 164 else/imp~ 1; -#X obj 148 188 *~; -#X obj 183 188 noise~; +#X obj 158 212 else/gatehold~ 500; +#X obj 158 164 else/imp~ 1; +#X obj 158 188 *~; +#X obj 193 188 noise~; #X obj 306 239 else/numbox~ 6 12 100 #c0c0c4 #440008 10 0 0 0; -#X obj 148 239 else/numbox~ 6 12 100 #c0c0c4 #440008 10 0 0 0; +#X obj 158 239 else/numbox~ 6 12 100 #c0c0c4 #440008 10 0 0 0; #X obj 306 173 else/numbox~ 6 12 100 #c0c0c4 #440008 10 0 0 0; -#X text 23 204 see also; -#X obj 23 228 else/gatehold; +#X text 17 204 see also; +#X obj 17 228 else/gatehold; +#X obj 17 250 else/gaterelease~; #X connect 28 0 38 0; #X connect 29 0 28 1; #X connect 32 0 40 0; diff --git a/Documentation/Help-files/gaterelease-help.pd b/Documentation/Help-files/gaterelease-help.pd new file mode 100644 index 000000000..c889f2c86 --- /dev/null +++ b/Documentation/Help-files/gaterelease-help.pd @@ -0,0 +1,44 @@ +#N canvas 471 61 567 440 10; +#X obj 6 283 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0; +#X obj 6 341 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0; +#X obj 6 373 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0; +#X obj 118 349 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0; +#X obj 6 409 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0; +#X obj 118 291 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0; +#X obj 118 317 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0; +#X obj 25 40 cnv 4 4 4 empty empty Release\ gate\ values 0 28 2 18 #e0e0e0 #000000 0; +#X obj 5 3 cnv 15 301 42 empty empty gaterelease 20 20 2 37 #e0e0e0 #000000 0; +#N canvas 0 22 450 278 (subpatch) 0; +#X coords 0 1 100 -1 302 42 1 0 0; +#X restore 4 3 graph; +#X obj 307 4 cnv 15 250 40 empty empty empty 12 13 0 18 #7c7c7c #e0e4dc 0; +#N canvas 382 141 749 319 (subpatch) 0; +#X coords 0 -1 1 1 252 42 2 100 100; +#X restore 306 3 pd; +#X obj 347 11 cnv 10 10 10 empty empty ELSE 0 15 2 30 #7c7c7c #e0e4dc 0; +#X obj 460 11 cnv 10 10 10 empty empty EL 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 480 11 cnv 10 10 10 empty empty Locus 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 517 11 cnv 10 10 10 empty empty Solus' 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 466 26 cnv 10 10 10 empty empty ELSE 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 504 26 cnv 10 10 10 empty empty library 0 6 2 13 #7c7c7c #e0e4dc 0; +#X text 224 318 - hold time in ms; +#X obj 332 200 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256; +#X text 184 318 float; +#X text 184 291 float; +#X text 224 291 - gate value; +#X text 184 350 float; +#X floatatom 215 195 12 0 0 0 - - - 0; +#X obj 215 254 else/display; +#X text 42 199 see also; +#X obj 215 163 else/randpulse 0.5; +#X text 139 382 1) float - release time in ms (default 0 \, no release time); +#X text 389 200 release time; +#X obj 215 224 else/gaterelease 250; +#X text 66 86 [gaterelease] allows you to release one gate in your patch while you still hold another. [gaterelease] releases a gate value after a given amount of time (specified in ms) after the gate has opened. If the gate is closed before the release time \, the object is reset. If the release time is 0 or less \, the object is bypassed., f 75; +#X obj 44 244 else/gatehold; +#X obj 44 220 else/gaterelease~; +#X text 224 350 - released gate; +#X connect 19 0 30 1; +#X connect 24 0 30 0; +#X connect 27 0 24 0; +#X connect 30 0 25 0; diff --git a/Documentation/Help-files/gaterelease~-help.pd b/Documentation/Help-files/gaterelease~-help.pd new file mode 100644 index 000000000..803659b4f --- /dev/null +++ b/Documentation/Help-files/gaterelease~-help.pd @@ -0,0 +1,44 @@ +#N canvas 471 61 563 432 10; +#X obj 6 283 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0; +#X obj 6 341 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0; +#X obj 6 373 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0; +#X obj 118 349 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0; +#X obj 6 409 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0; +#X obj 118 291 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0; +#X obj 118 317 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0; +#X obj 25 40 cnv 4 4 4 empty empty Release\ gate\ values 0 28 2 18 #e0e0e0 #000000 0; +#X obj 5 3 cnv 15 301 42 empty empty gaterelease~ 20 20 2 37 #e0e0e0 #000000 0; +#N canvas 0 22 450 278 (subpatch) 0; +#X coords 0 1 100 -1 302 42 1 0 0; +#X restore 4 3 graph; +#X obj 307 4 cnv 15 250 40 empty empty empty 12 13 0 18 #7c7c7c #e0e4dc 0; +#N canvas 382 141 749 319 (subpatch) 0; +#X coords 0 -1 1 1 252 42 2 100 100; +#X restore 306 3 pd; +#X obj 347 11 cnv 10 10 10 empty empty ELSE 0 15 2 30 #7c7c7c #e0e4dc 0; +#X obj 460 11 cnv 10 10 10 empty empty EL 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 480 11 cnv 10 10 10 empty empty Locus 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 517 11 cnv 10 10 10 empty empty Solus' 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 466 26 cnv 10 10 10 empty empty ELSE 0 6 2 13 #7c7c7c #e0e4dc 0; +#X obj 504 26 cnv 10 10 10 empty empty library 0 6 2 13 #7c7c7c #e0e4dc 0; +#X text 224 318 - hold time in ms; +#X obj 338 200 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256; +#X text 184 318 float; +#X text 224 291 - gate value; +#X text 42 199 see also; +#X text 139 382 1) float - release time in ms (default 0 \, no release time); +#X text 395 200 release time; +#X obj 215 224 else/gaterelease~ 250; +#X obj 215 163 else/randpulse~ 0.5; +#X obj 215 195 else/numbox~ 6 10 100 #C0C0C4 #440008 10 0 0 0; +#X obj 215 254 else/numbox~ 6 10 100 #C0C0C4 #440008 10 0 0 0; +#X obj 44 220 else/gaterelease; +#X obj 44 244 else/gatehold~; +#X text 178 291 signal; +#X text 178 350 signal; +#X text 224 350 - released gate; +#X text 66 86 [gaterelease~] allows you to release one gate in your patch while you still hold another. [gaterelease~] releases a gate value after a given amount of time (specified in ms) after the gate has opened. If the gate is closed before the release time \, the object is reset. If the release time is 0 or less \, the object is bypassed., f 75; +#X connect 19 0 25 1; +#X connect 25 0 28 0; +#X connect 26 0 27 0; +#X connect 27 0 25 0;