From c0dc3476a8baa832e6874b229470decfd522e3cd Mon Sep 17 00:00:00 2001 From: Luke Iannini Date: Thu, 21 May 2009 05:10:26 +0000 Subject: more work on the delegate/dispatch design pattern switched time- series to delegate/dispatch and added more beat-sync objects midi-stream2notes turns a continuous stream of midi notes into static lists of notes and durations - great for building sequencers but still has a bug. list-extract to "split" a list into a sublist and the remainder ds-criteria to get a pointer to the first item with a specific variable value svn path=/trunk/abstractions/sfruit/; revision=11471 --- controctopus/note-learner.pd | 112 +++++++++++++++++----------------- ds-abs/ds-criteria.pd | 34 +++++++++++ ds-abs/ds-first.pd | 2 +- sfruit/countseq.pd | 42 ++++++------- sfruit/delegate.pd | 10 ++++ sfruit/delegate_setter-help.pd | 126 +++++++++++++++++++++++++++++++++++++++ sfruit/delegate_setter.pd | 37 ++++++++++++ sfruit/dispatch-many.pd | 13 ++++ sfruit/get_delegate.pd | 6 ++ sfruit/gui-dispatch.pd | 9 +++ sfruit/gui-labeler.pd | 14 +++++ sfruit/list-extract-help.pd | 36 +++++++++++ sfruit/list-extract.pd | 35 +++++++++++ sfruit/midi-stream2notes-help.pd | 102 +++++++++++++++++++++++++++++++ sfruit/midi-stream2notes.pd | 71 ++++++++++++++++++++++ sfruit/oscinify.pd | 11 +--- sfruit/randrange-help.pd | 14 +++++ sfruit/randrange.pd | 29 +++++++++ sfruit/time-clock-help.pd | 82 +++++++++++++++++++++++++ sfruit/time-clock.pd | 101 +++++++++++++++++++++++++++++++ sfruit/time-last_beat_was.pd | 10 ++++ sfruit/time-last_measure_was.pd | 12 ++++ sfruit/time-next_beat.pd | 17 ++++++ sfruit/time-next_measure.pd | 17 ++++++ sfruit/time-snap_beat.pd | 23 +++++++ sfruit/time-snap_measure.pd | 23 +++++++ 26 files changed, 901 insertions(+), 87 deletions(-) create mode 100644 ds-abs/ds-criteria.pd create mode 100644 sfruit/delegate.pd create mode 100644 sfruit/delegate_setter-help.pd create mode 100644 sfruit/delegate_setter.pd create mode 100644 sfruit/dispatch-many.pd create mode 100644 sfruit/get_delegate.pd create mode 100644 sfruit/gui-dispatch.pd create mode 100644 sfruit/gui-labeler.pd create mode 100644 sfruit/list-extract-help.pd create mode 100644 sfruit/list-extract.pd create mode 100644 sfruit/midi-stream2notes-help.pd create mode 100644 sfruit/midi-stream2notes.pd create mode 100644 sfruit/randrange-help.pd create mode 100644 sfruit/randrange.pd create mode 100644 sfruit/time-clock-help.pd create mode 100644 sfruit/time-clock.pd create mode 100644 sfruit/time-last_beat_was.pd create mode 100644 sfruit/time-last_measure_was.pd create mode 100644 sfruit/time-next_beat.pd create mode 100644 sfruit/time-next_measure.pd create mode 100644 sfruit/time-snap_beat.pd create mode 100644 sfruit/time-snap_measure.pd diff --git a/controctopus/note-learner.pd b/controctopus/note-learner.pd index a0bc7ee..ac5b53d 100644 --- a/controctopus/note-learner.pd +++ b/controctopus/note-learner.pd @@ -4,9 +4,9 @@ #X obj 336 506 pack; #X obj 336 277 t b b; #X obj 102 293 nbx 2 14 1 128 0 0 \$0.pad.s \$0.pad.r Pad 32 7 0 11 --154432 -1 -1 1 256; +-154432 -1 -1 13 256; #X obj 102 276 nbx 2 14 0 127 0 0 \$0.note.s \$0.note.r Note 32 7 0 -11 -260624 -1 -1 0 256; +11 -260624 -1 -1 48 256; #X obj 420 523 outlet; #X obj 137 263 bng 13 250 50 0 \$0.learn-on empty empty 0 -6 0 8 -259541 -1 -1; @@ -27,7 +27,7 @@ empty 0 -6 0 10 -110565 -1 -1 1 256; #X obj 722 303 spigot; #X obj 41 411 instance lnote; #X obj 722 204 / 127; -#X obj 378 278 / 127; +#X obj 378 104 / 127; #N canvas 73 463 404 329 midi-learn 0; #X text 238 89 Route Number; #X obj 24 18 r \$0.learn-on; @@ -70,10 +70,9 @@ empty 0 -6 0 10 -110565 -1 -1 1 256; #X connect 13 0 18 0; #X connect 14 0 12 1; #X connect 18 0 12 1; -#X restore 241 104 pd midi-learn; +#X restore 241 142 pd midi-learn; #X obj 336 104 t a; -#X obj 365 104 t a; -#X obj 395 104 t a; +#X obj 471 104 t a; #X obj 349 53 notein; #X text 345 33 Intercepts for looping back MIDI (e.g. from sft.schoen) ; @@ -148,8 +147,8 @@ empty 0 -6 0 10 -110565 -1 -1 1 256; #X connect 6 0 2 0; #X connect 6 1 5 0; #X connect 8 0 3 0; -#X restore 395 169 pd parse-channel; -#X obj 396 54 nr PDNOTEIN 3; +#X restore 471 169 pd parse-channel; +#X obj 396 53 nr PDNOTEIN 3; #X obj 814 112 nr PDPOLYTOUCHIN 3; #N canvas 0 22 265 307 parse-channel 0; #X obj 76 35 inlet; @@ -171,7 +170,7 @@ empty 0 -6 0 10 -110565 -1 -1 1 256; #X connect 8 0 3 0; #X restore 788 197 pd parse-channel; #N canvas 282 148 271 319 send-polytouch 0; -#X msg 51 116 1; +#X msg 51 116 13; #X obj 51 148 pack; #X msg 110 99 set \$1; #X obj 110 75 r \$0.pad.v; @@ -245,60 +244,59 @@ empty 0 -6 0 10 -110565 -1 -1 1 256; #X obj 26 533 sssadie/sssadiez \$1 \$2 device-number 0 256 \$0; #X text 344 3 [note-learner /device /pad# /group(nonumber)]; #X connect 0 0 3 0; -#X connect 1 0 35 0; -#X connect 1 0 44 0; +#X connect 1 0 34 0; +#X connect 1 0 43 0; #X connect 2 0 6 0; -#X connect 2 0 31 0; -#X connect 2 0 60 0; -#X connect 3 0 39 0; +#X connect 2 0 30 0; +#X connect 2 0 59 0; +#X connect 3 0 38 0; #X connect 3 1 1 0; #X connect 11 0 0 1; -#X connect 12 0 39 1; +#X connect 12 0 38 1; #X connect 13 0 0 0; -#X connect 15 0 28 1; -#X connect 16 0 28 0; -#X connect 17 0 32 0; -#X connect 17 1 33 0; -#X connect 17 2 34 0; -#X connect 18 0 58 0; -#X connect 19 0 65 0; +#X connect 15 0 27 1; +#X connect 16 0 27 0; +#X connect 17 0 31 0; +#X connect 17 1 32 0; +#X connect 17 2 33 0; +#X connect 18 0 57 0; +#X connect 19 0 64 0; #X connect 20 0 18 0; #X connect 21 0 1 1; #X connect 23 0 22 0; -#X connect 23 0 51 0; -#X connect 24 0 21 0; -#X connect 25 0 54 0; -#X connect 26 0 23 0; -#X connect 26 1 24 0; -#X connect 26 2 25 0; -#X connect 28 0 18 1; -#X connect 29 0 30 0; -#X connect 30 0 53 0; -#X connect 32 0 20 0; -#X connect 33 0 16 0; -#X connect 34 0 57 0; -#X connect 35 1 41 0; -#X connect 39 0 43 0; -#X connect 40 0 2 0; -#X connect 42 0 58 0; -#X connect 45 0 46 0; -#X connect 46 0 48 0; -#X connect 46 1 47 0; +#X connect 23 0 50 0; +#X connect 24 0 53 0; +#X connect 25 0 23 0; +#X connect 25 1 21 0; +#X connect 25 2 24 0; +#X connect 27 0 18 1; +#X connect 28 0 29 0; +#X connect 29 0 52 0; +#X connect 31 0 20 0; +#X connect 32 0 16 0; +#X connect 33 0 56 0; +#X connect 34 1 40 0; +#X connect 38 0 42 0; +#X connect 39 0 2 0; +#X connect 41 0 57 0; +#X connect 44 0 45 0; +#X connect 45 0 47 0; +#X connect 45 1 46 0; +#X connect 46 0 47 0; +#X connect 46 1 49 0; #X connect 47 0 48 0; -#X connect 47 1 50 0; -#X connect 48 0 49 0; -#X connect 50 0 49 0; -#X connect 51 0 13 0; -#X connect 54 0 13 1; -#X connect 55 0 23 0; -#X connect 55 1 24 0; -#X connect 55 2 25 0; -#X connect 56 0 32 0; -#X connect 56 1 33 0; -#X connect 56 2 34 0; -#X connect 57 0 16 1; -#X connect 60 0 31 0; -#X connect 61 0 2 1; -#X connect 62 0 40 0; -#X connect 63 0 64 0; +#X connect 49 0 48 0; +#X connect 50 0 13 0; +#X connect 53 0 13 1; +#X connect 54 0 23 0; +#X connect 54 1 1 1; +#X connect 54 2 24 0; +#X connect 55 0 31 0; +#X connect 55 1 32 0; +#X connect 55 2 33 0; +#X connect 56 0 16 1; +#X connect 59 0 30 0; +#X connect 60 0 2 1; +#X connect 61 0 39 0; +#X connect 62 0 63 0; #X coords 0 -1 1 1 81 60 1 100 250; diff --git a/ds-abs/ds-criteria.pd b/ds-abs/ds-criteria.pd new file mode 100644 index 0000000..3e697b1 --- /dev/null +++ b/ds-abs/ds-criteria.pd @@ -0,0 +1,34 @@ +#N canvas 590 49 677 434 10; +#X obj 212 185 until; +#X msg 212 206 next; +#X obj 86 140 list append \$1; +#X obj 86 163 prepent traverse; +#X obj 86 103 loadbang; +#X obj 212 72 inlet; +#X obj 212 392 outlet; +#X obj 396 392 outlet; +#X obj 212 229 pointer \$2; +#X obj 212 102 t b b; +#X obj 327 100 t b b; +#X obj 212 307 get \$2 \$3; +#X obj 212 358 pointer; +#X obj 212 329 sel \$4; +#X obj 212 280 t a a; +#X text 24 11 [ds-criteria data-canvas template attribute value]; +#X connect 0 0 1 0; +#X connect 1 0 8 0; +#X connect 2 0 3 0; +#X connect 3 0 8 0; +#X connect 4 0 2 0; +#X connect 5 0 9 0; +#X connect 8 0 14 0; +#X connect 8 2 10 0; +#X connect 9 0 0 0; +#X connect 9 1 2 0; +#X connect 10 0 7 0; +#X connect 10 1 0 1; +#X connect 11 0 13 0; +#X connect 12 0 6 0; +#X connect 13 0 12 0; +#X connect 14 0 11 0; +#X connect 14 1 12 1; diff --git a/ds-abs/ds-first.pd b/ds-abs/ds-first.pd index ed37847..43ff5d7 100644 --- a/ds-abs/ds-first.pd +++ b/ds-abs/ds-first.pd @@ -1,5 +1,4 @@ #N canvas 540 376 450 300 10; - #X obj 182 135 until; #X msg 182 156 next; #X obj 56 90 list append \$1; @@ -13,6 +12,7 @@ #X obj 182 52 t b b; #X obj 297 50 t b b; #X obj 289 17 import-disabled list-abs; +#X text 8 4 [ds-first data-canvas template]; #X connect 0 0 1 0; #X connect 1 0 8 0; #X connect 2 0 3 0; diff --git a/sfruit/countseq.pd b/sfruit/countseq.pd index b9a0ad1..17482b6 100644 --- a/sfruit/countseq.pd +++ b/sfruit/countseq.pd @@ -58,7 +58,6 @@ #X connect 18 0 14 1; #X restore 208 199 pd split-symbols; #X obj 159 285 list-find; -#X obj 26 194 t a a a; #X obj 26 312 sel 0; #X obj 26 354 outlet; #X obj 88 354 outlet; @@ -72,33 +71,34 @@ #X obj 80 63 list; #X obj 28 32 route bang seek; #X obj 180 9 import-disabled list-abs iemlib; -#X connect 0 0 13 0; -#X connect 0 0 19 0; -#X connect 0 0 20 0; +#X obj 26 194 t a a a a; +#X connect 0 0 18 0; +#X connect 0 0 26 0; #X connect 1 0 2 0; #X connect 1 1 3 0; #X connect 2 0 0 1; #X connect 3 0 0 0; -#X connect 4 0 25 0; +#X connect 4 0 24 0; #X connect 5 0 6 1; #X connect 6 0 0 1; #X connect 7 0 9 0; #X connect 8 0 7 0; #X connect 9 1 11 0; -#X connect 10 0 16 0; -#X connect 11 0 23 0; -#X connect 11 1 22 0; -#X connect 12 0 17 0; +#X connect 10 0 15 0; +#X connect 11 0 22 0; +#X connect 11 1 21 0; +#X connect 12 0 16 0; #X connect 13 0 14 0; -#X connect 13 1 10 0; -#X connect 13 2 12 0; -#X connect 14 0 15 0; -#X connect 18 0 11 0; -#X connect 19 0 6 0; -#X connect 20 0 21 0; -#X connect 22 0 12 1; -#X connect 23 0 10 1; -#X connect 24 0 1 0; -#X connect 25 0 0 0; -#X connect 25 1 0 1; -#X connect 25 2 24 0; +#X connect 17 0 11 0; +#X connect 18 0 6 0; +#X connect 19 0 20 0; +#X connect 21 0 12 1; +#X connect 22 0 10 1; +#X connect 23 0 1 0; +#X connect 24 0 0 0; +#X connect 24 1 0 1; +#X connect 24 2 23 0; +#X connect 26 0 13 0; +#X connect 26 1 10 0; +#X connect 26 2 12 0; +#X connect 26 3 19 0; diff --git a/sfruit/delegate.pd b/sfruit/delegate.pd new file mode 100644 index 0000000..3a9aa35 --- /dev/null +++ b/sfruit/delegate.pd @@ -0,0 +1,10 @@ +#N canvas 506 483 205 178 10; +#X obj 44 64 inlet; +#X obj 44 146 s \$1-delegates; +#X obj 44 90 list prepend \$2; +#X obj 44 117 list trim; +#X obj 131 64 inlet; +#X connect 0 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 2 1; diff --git a/sfruit/delegate_setter-help.pd b/sfruit/delegate_setter-help.pd new file mode 100644 index 0000000..9bc1f2c --- /dev/null +++ b/sfruit/delegate_setter-help.pd @@ -0,0 +1,126 @@ +#N canvas 305 22 1097 656 10; +#X obj 53 170 delegate_setter -this crankiness; +#X obj 56 89 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 6100 1; +#X text 23 50 delegate_setter can be placed in a stream to send delegate +messages before and after the stream passes through it.; +#X text 82 108 the first argument; +#X obj 53 339 get_delegate -this will_set_crankiness; +#X obj 53 509 get_delegate -this did_set_crankiness; +#X text 15 13 [delegate_setter -unique *name]; +#X text 202 13 *optional; +#X obj 56 289 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 6100 1; +#X obj 53 136 t a b; +#X floatatom 176 258 5 0 0 0 - - -; +#X obj 56 458 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 6100 1; +#X obj 56 637 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 6100 1; +#X text 210 258 we prove this is the second thing called; +#N canvas 615 437 450 300 when_was_i_called? 1; +#X obj 102 68 s \$0-increment; +#X obj 85 89 r \$0-order; +#X obj 70 110 f; +#X obj 51 68 t a b b; +#X obj 51 42 inlet; +#X obj 51 175 outlet; +#X obj 134 179 outlet; +#X connect 1 0 2 1; +#X connect 2 0 6 0; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 3 2 0 0; +#X connect 4 0 3 0; +#X restore 53 230 pd when_was_i_called?; +#X text 64 190 the slider value comes out after [will_set_crankiness( +is dispatched; +#X floatatom 176 406 5 0 0 0 - - -; +#N canvas 615 437 450 300 when_was_i_called? 0; +#X obj 102 68 s \$0-increment; +#X obj 85 89 r \$0-order; +#X obj 70 110 f; +#X obj 51 68 t a b b; +#X obj 51 42 inlet; +#X obj 51 175 outlet; +#X obj 134 179 outlet; +#X connect 1 0 2 1; +#X connect 2 0 6 0; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 3 2 0 0; +#X connect 4 0 3 0; +#X restore 53 378 pd when_was_i_called?; +#X text 210 406 we prove this is the first thing called; +#X obj 92 136 s \$0-reset_call_order; +#N canvas 0 22 450 300 calc_call_order 0; +#X obj 141 74 r \$0-increment; +#X obj 141 152 s \$0-order; +#X obj 141 110 f; +#X obj 167 110 + 1; +#X msg 204 120 1; +#X obj 204 99 r \$0-reset_call_order; +#X connect 0 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 2 1; +#X connect 4 0 2 1; +#X connect 5 0 4 0; +#X restore 500 62 pd calc_call_order; +#X text 292 338 this will get called before the slider value comes +out of [delegate_setter]; +#X text 286 508 finally \, this will get called after the slider value +comes out of [delegate_setter]; +#X floatatom 176 583 5 0 0 0 - - -; +#N canvas 615 437 450 300 when_was_i_called? 0; +#X obj 102 68 s \$0-increment; +#X obj 85 89 r \$0-order; +#X obj 70 110 f; +#X obj 51 68 t a b b; +#X obj 51 42 inlet; +#X obj 51 175 outlet; +#X obj 134 179 outlet; +#X connect 1 0 2 1; +#X connect 2 0 6 0; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 3 2 0 0; +#X connect 4 0 3 0; +#X restore 53 555 pd when_was_i_called?; +#X text 210 583 we prove this is the last thing called; +#X obj 726 323 delegate_setter -this; +#X text 724 420 if you do not provide a name for this delegate variable +\, you can provide a selector instead and delegate_setter will use +it; +#X obj 729 263 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 3600 1; +#X msg 726 290 my_variable \$1; +#X obj 729 397 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 3600 1; +#X obj 726 479 get_delegate -this did_set_my_variable; +#X obj 729 507 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 3600 1; +#X obj 726 358 list split 1; +#X obj 684 166 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 684 596 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 726 203 using selectors:; +#X connect 0 0 14 0; +#X connect 1 0 9 0; +#X connect 4 0 17 0; +#X connect 5 0 24 0; +#X connect 9 0 0 0; +#X connect 9 1 19 0; +#X connect 14 0 8 0; +#X connect 14 1 10 0; +#X connect 17 0 11 0; +#X connect 17 1 16 0; +#X connect 24 0 12 0; +#X connect 24 1 23 0; +#X connect 26 0 33 0; +#X connect 28 0 29 0; +#X connect 29 0 26 0; +#X connect 31 0 32 0; +#X connect 33 1 30 0; +#X connect 34 0 35 0; diff --git a/sfruit/delegate_setter.pd b/sfruit/delegate_setter.pd new file mode 100644 index 0000000..9943e28 --- /dev/null +++ b/sfruit/delegate_setter.pd @@ -0,0 +1,37 @@ +#N canvas 142 461 444 327 10; +#X obj 167 34 inlet; +#X obj 286 189 list split 1; +#X obj 286 215 swap-any; +#X msg 331 243 will_set_\$1; +#X obj 286 272 delegate \$1; +#X obj 186 299 outlet; +#X obj 167 97 t a a a; +#X obj 46 189 list split 1; +#X obj 46 215 swap-any; +#X obj 46 272 delegate \$1; +#X msg 91 243 did_set_\$1; +#X obj 286 150 list prepend; +#X obj 46 150 list prepend; +#X obj 232 76 loadbang; +#X obj 232 98 list-onearg \$2; +#X text 18 11 [delegate_setter unique *name]; +#X text 201 10 *optional; +#X connect 0 0 6 0; +#X connect 1 0 2 0; +#X connect 1 1 2 1; +#X connect 2 0 4 0; +#X connect 2 1 3 0; +#X connect 3 0 4 1; +#X connect 6 0 12 0; +#X connect 6 1 5 0; +#X connect 6 2 11 0; +#X connect 7 0 8 0; +#X connect 7 1 8 1; +#X connect 8 0 9 0; +#X connect 8 1 10 0; +#X connect 10 0 9 1; +#X connect 11 0 1 0; +#X connect 12 0 7 0; +#X connect 13 0 14 0; +#X connect 14 0 11 1; +#X connect 14 0 12 1; diff --git a/sfruit/dispatch-many.pd b/sfruit/dispatch-many.pd new file mode 100644 index 0000000..fb5911d --- /dev/null +++ b/sfruit/dispatch-many.pd @@ -0,0 +1,13 @@ +#N canvas 285 439 450 300 10; +#X obj 151 211 sendmany; +#X obj 196 150 list-map; +#X obj 265 144 list prepend \$1; +#X obj 196 112 inlet; +#X obj 151 112 inlet; +#X msg 265 170 \$1*\$2-dispatcher; +#X connect 1 0 0 1; +#X connect 1 1 2 0; +#X connect 2 0 5 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X connect 5 0 1 1; diff --git a/sfruit/get_delegate.pd b/sfruit/get_delegate.pd new file mode 100644 index 0000000..68e63f2 --- /dev/null +++ b/sfruit/get_delegate.pd @@ -0,0 +1,6 @@ +#N canvas 0 22 450 300 10; +#X obj 81 97 r \$1-delegates; +#X obj 81 125 route \$2; +#X obj 81 153 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; diff --git a/sfruit/gui-dispatch.pd b/sfruit/gui-dispatch.pd new file mode 100644 index 0000000..bf2fca7 --- /dev/null +++ b/sfruit/gui-dispatch.pd @@ -0,0 +1,9 @@ +#N canvas 485 553 237 262 10; +#X obj 46 146 list trim; +#X obj 46 173 s \$1-dispatcher; +#X obj 46 95 r \$2-\$3-s; +#X text 32 35 [gui-dispatch \$1 \$0 message]; +#X obj 46 121 list prepend \$3; +#X connect 0 0 1 0; +#X connect 2 0 4 0; +#X connect 4 0 0 0; diff --git a/sfruit/gui-labeler.pd b/sfruit/gui-labeler.pd new file mode 100644 index 0000000..46501d1 --- /dev/null +++ b/sfruit/gui-labeler.pd @@ -0,0 +1,14 @@ +#N canvas 464 470 450 300 10; +#X obj 55 63 r \$1-s; +#X obj 55 142 list-idx-list; +#X obj 130 90 dollarg; +#X obj 130 64 loadbang; +#X obj 130 118 list split 1; +#X msg 55 178 label \$1; +#X obj 55 208 s \$1-r; +#X connect 0 0 1 0; +#X connect 1 0 5 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 4 1 1 1; +#X connect 5 0 6 0; diff --git a/sfruit/list-extract-help.pd b/sfruit/list-extract-help.pd new file mode 100644 index 0000000..acdf5c5 --- /dev/null +++ b/sfruit/list-extract-help.pd @@ -0,0 +1,36 @@ +#N canvas 71 124 523 398 10; +#X obj 85 210 hradio 15 1 0 8 empty empty POS_(zero-based) 0 -6 0 8 +-262144 -1 -1 0; +#X floatatom 85 230 5 0 0 0 - - -; +#X msg 49 180 0 1 2 3 4; +#X text 36 65 Negative POS counts from the end of the list.; +#X floatatom 121 259 5 0 0 1 how_many - -; +#X msg 293 190 0 1 2 3 4; +#X text 322 231 arguments: ; +#X text 38 99 Arguments; +#X text 51 122 1: Default POS to delete.; +#X floatatom 343 259 5 0 0 0 - - -; +#X floatatom 393 260 5 0 0 0 - - -; +#X obj 49 278 list-extract; +#X obj 293 279 list-extract 2 3; +#X text 51 143 2: How many items to extract (cannot be less than 1) +; +#X obj 49 328 print extracted; +#X obj 118 306 print remaining; +#X text 35 26 list-extract: grab NUM elements at position POS from +list \, and output the remaining items from the right outlet.; +#X obj 293 328 print extracted; +#X obj 386 306 print remaining; +#X text 273 357 2009 Luke Iannini; +#X text 273 374 Helpfile based on list-delete by fbar; +#X connect 0 0 1 0; +#X connect 1 0 11 1; +#X connect 2 0 11 0; +#X connect 4 0 11 2; +#X connect 5 0 12 0; +#X connect 9 0 12 1; +#X connect 10 0 12 2; +#X connect 11 0 14 0; +#X connect 11 1 15 0; +#X connect 12 0 17 0; +#X connect 12 1 18 0; diff --git a/sfruit/list-extract.pd b/sfruit/list-extract.pd new file mode 100644 index 0000000..4961594 --- /dev/null +++ b/sfruit/list-extract.pd @@ -0,0 +1,35 @@ +#N canvas 249 403 450 300 10; +#X obj 92 200 list-slice; +#X obj 183 200 list-delete; +#X obj 120 143 t a a; +#X obj 149 176 + 1; +#X obj 92 80 t a a; +#X obj 92 31 inlet; +#X obj 183 263 outlet; +#X obj 92 262 outlet; +#X obj 246 19 inlet; +#X obj 246 70 t a; +#X obj 317 69 t a; +#X obj 317 19 inlet; +#X obj 188 18 loadbang; +#X obj 188 41 \$1; +#X obj 358 19 loadbang; +#X obj 358 42 \$2; +#X connect 0 0 7 0; +#X connect 1 0 6 0; +#X connect 2 0 0 1; +#X connect 2 1 3 0; +#X connect 3 0 0 2; +#X connect 4 0 0 0; +#X connect 4 1 1 0; +#X connect 5 0 4 0; +#X connect 8 0 9 0; +#X connect 9 0 2 0; +#X connect 9 0 1 1; +#X connect 10 0 3 1; +#X connect 10 0 1 2; +#X connect 11 0 10 0; +#X connect 12 0 13 0; +#X connect 13 0 9 0; +#X connect 14 0 15 0; +#X connect 15 0 10 0; diff --git a/sfruit/midi-stream2notes-help.pd b/sfruit/midi-stream2notes-help.pd new file mode 100644 index 0000000..9a83302 --- /dev/null +++ b/sfruit/midi-stream2notes-help.pd @@ -0,0 +1,102 @@ +#N canvas 347 450 449 345 10; +#X obj 97 199 midi-stream2notes; +#X obj 196 171 timer; +#X obj 196 132 loadbang; +#N canvas 731 143 383 603 random-notes 0; +#X obj 125 445 + 50; +#X obj 125 421 random 450; +#X obj 104 470 pipe; +#X msg 104 496 \$1 0; +#X obj 168 267 + 60; +#X obj 168 243 random 40; +#X obj 238 243 random 117; +#X obj 238 268 + 10; +#X obj 104 375 list split 1; +#X obj 167 174 del; +#X obj 167 121 random 450; +#X obj 167 143 + 50; +#X obj 92 174 t b b; +#X obj 168 206 t b b; +#X obj 169 296 pack f f; +#X obj 169 327 t a a; +#X obj 196 540 outlet; +#X obj 104 397 t a b; +#X obj 167 95 spigot; +#X obj 191 27 inlet; +#X obj 192 71 sel 1; +#X obj 192 48 t a a; +#X connect 0 0 2 1; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 3 0 16 0; +#X connect 4 0 14 0; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 14 1; +#X connect 8 0 17 0; +#X connect 9 0 12 0; +#X connect 10 0 11 0; +#X connect 11 0 9 0; +#X connect 12 0 18 0; +#X connect 12 1 13 0; +#X connect 13 0 5 0; +#X connect 13 1 6 0; +#X connect 14 0 15 0; +#X connect 15 0 8 0; +#X connect 15 1 16 0; +#X connect 17 0 2 0; +#X connect 17 1 1 0; +#X connect 18 0 10 0; +#X connect 19 0 21 0; +#X connect 20 0 10 0; +#X connect 21 0 20 0; +#X connect 21 1 18 1; +#X restore 97 34 pd random-notes; +#X msg 97 93 74 0; +#N canvas 0 22 279 283 show 0; +#X obj 82 95 list prepend set; +#X obj 82 122 list trim; +#X obj 82 36 inlet; +#X obj 82 154 t b a; +#X obj 82 196 outlet; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 4 0; +#X restore 97 63 pd show; +#X obj 97 143 t a b; +#X floatatom 213 200 0 0 0 0 - - -; +#X text 231 171 time can be in any format you like; +#X text 287 186 (even symbols!); +#X msg 97 256 74 112 226741 226920; +#N canvas 0 22 279 283 show 0; +#X obj 82 95 list prepend set; +#X obj 82 122 list trim; +#X obj 82 36 inlet; +#X obj 82 154 t b a; +#X obj 82 196 outlet; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 4 0; +#X restore 97 226 pd show; +#X obj 97 288 print note; +#X obj 256 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 97 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 +; +#X connect 0 0 11 0; +#X connect 1 0 0 1; +#X connect 1 0 7 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 4 0; +#X connect 6 0 0 0; +#X connect 6 1 1 1; +#X connect 10 0 12 0; +#X connect 11 0 10 0; +#X connect 13 0 1 0; +#X connect 14 0 3 0; diff --git a/sfruit/midi-stream2notes.pd b/sfruit/midi-stream2notes.pd new file mode 100644 index 0000000..874c138 --- /dev/null +++ b/sfruit/midi-stream2notes.pd @@ -0,0 +1,71 @@ +#N canvas 173 60 491 669 10; +#X obj 109 443 list-find; +#X obj 108 163 unpack f f; +#X obj 108 186 swap; +#X text 173 163 note \, vel; +#X obj 136 358 list-value-extend \$0-notes; +#X obj 109 266 f; +#X obj 109 233 sel 0; +#X obj 136 334 list append; +#X obj 136 266 list prepend; +#X text 213 268 note \, vel; +#X text 207 335 note \, vel \, time-on; +#X obj 109 516 list-extract 0 3; +#X obj 109 490 list-value \$0-notes; +#X obj 136 420 list-value \$0-notes; +#X obj 109 399 t a b; +#X obj 202 540 list-value \$0-notes; +#X obj 109 585 list append; +#X obj 108 39 inlet note vel; +#X obj 323 41 inlet time; +#X obj 199 312 r \$0-time; +#X obj 172 562 r \$0-time; +#X obj 323 76 s \$0-time; +#X obj 109 629 outlet note vel timeon timeoff; +#N canvas 748 370 257 276 ignore-dupes 0; +#X obj 42 26 inlet; +#X obj 42 144 list-find; +#X obj 42 68 unpack f f; +#X obj 93 166 sel 0; +#X obj 93 190 list; +#X obj 42 47 t a a; +#X obj 42 100 t a b; +#X obj 69 121 list-value \$0-notes; +#X obj 93 215 outlet; +#X connect 0 0 5 0; +#X connect 1 1 3 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 4 0 8 0; +#X connect 5 0 2 0; +#X connect 5 1 4 1; +#X connect 6 0 1 0; +#X connect 6 1 7 0; +#X connect 7 0 1 1; +#X restore 136 288 pd ignore-dupes; +#X obj 109 464 t b a; +#X connect 0 0 24 0; +#X connect 1 0 2 0; +#X connect 1 1 2 1; +#X connect 2 0 6 0; +#X connect 2 1 5 1; +#X connect 2 1 8 1; +#X connect 5 0 14 0; +#X connect 6 0 5 0; +#X connect 6 1 8 0; +#X connect 7 0 4 0; +#X connect 8 0 23 0; +#X connect 11 0 16 0; +#X connect 11 1 15 0; +#X connect 12 0 11 0; +#X connect 13 0 0 1; +#X connect 14 0 0 0; +#X connect 14 1 13 0; +#X connect 16 0 22 0; +#X connect 17 0 1 0; +#X connect 18 0 21 0; +#X connect 19 0 7 1; +#X connect 20 0 16 1; +#X connect 23 0 7 0; +#X connect 24 0 12 0; +#X connect 24 1 11 1; diff --git a/sfruit/oscinify.pd b/sfruit/oscinify.pd index 11eeb9e..eac552b 100644 --- a/sfruit/oscinify.pd +++ b/sfruit/oscinify.pd @@ -1,11 +1,6 @@ #N canvas 433 96 153 116 10; -#X obj 22 11 r PDOSC; -#X obj 22 34 deeprouteOSC \$1; #X obj 22 65 s \$2; #X obj 22 91 outlet; -#X obj 81 11 r /pd\$1; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 1 0 3 0; -#X connect 4 0 2 0; -#X connect 4 0 3 0; +#X obj 22 11 r /pd\$1; +#X connect 2 0 0 0; +#X connect 2 0 1 0; diff --git a/sfruit/randrange-help.pd b/sfruit/randrange-help.pd new file mode 100644 index 0000000..966649b --- /dev/null +++ b/sfruit/randrange-help.pd @@ -0,0 +1,14 @@ +#N canvas 394 438 450 300 10; +#X obj 77 114 randrange 10 20; +#X obj 77 160 print; +#X obj 77 67 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X floatatom 120 52 5 0 0 0 - - -; +#X floatatom 164 52 5 0 0 0 - - -; +#X text 175 114 arg1...(arg2-1); +#X text 178 98 produces random numbers in the range; +#X text 259 248 2009 Luke Iannini; +#X connect 0 0 1 0; +#X connect 2 0 0 0; +#X connect 3 0 0 1; +#X connect 4 0 0 2; diff --git a/sfruit/randrange.pd b/sfruit/randrange.pd new file mode 100644 index 0000000..b4622d9 --- /dev/null +++ b/sfruit/randrange.pd @@ -0,0 +1,29 @@ +#N canvas 577 71 429 347 10; +#X obj 151 201 random; +#X obj 151 239 + \$1; +#X obj 151 81 inlet; +#X obj 151 275 outlet; +#X obj 218 81 inlet; +#X obj 344 51 inlet; +#X obj 218 106 t a a; +#X obj 245 149 expr abs($f2-$f1); +#X obj 280 31 loadbang; +#X obj 280 52 t b b; +#X obj 307 79 \$2; +#X obj 280 79 \$1; +#X obj 307 111 t b a; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 4 0 6 0; +#X connect 5 0 12 0; +#X connect 6 0 1 1; +#X connect 6 1 7 0; +#X connect 7 0 0 1; +#X connect 8 0 9 0; +#X connect 9 0 11 0; +#X connect 9 1 10 0; +#X connect 10 0 12 0; +#X connect 11 0 6 0; +#X connect 12 0 7 0; +#X connect 12 1 7 1; diff --git a/sfruit/time-clock-help.pd b/sfruit/time-clock-help.pd new file mode 100644 index 0000000..1a5d2f4 --- /dev/null +++ b/sfruit/time-clock-help.pd @@ -0,0 +1,82 @@ +#N canvas 0 22 696 466 10; +#X msg 40 59 120; +#X obj 473 79 bng 40 50 50 0 empty empty empty 17 7 0 10 -33289 -159808 +-1; +#X obj 472 155 nbx 4 30 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 20 +-262144 -1 -1 0 256; +#X obj 216 155 nbx 4 30 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 20 +-262144 -1 -1 500 256; +#X obj 194 125 bng 15 50 50 0 empty empty empty 17 7 0 10 -1 -159808 +-1; +#X obj 472 225 nbx 4 30 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 20 +-262144 -1 -1 34 256; +#X obj 216 225 nbx 4 30 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 20 +-262144 -1 -1 2000 256; +#X obj 194 196 bng 15 50 50 0 empty empty empty 17 7 0 10 -1 -4034 +-1; +#X obj 41 197 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X floatatom 40 127 2 0 0 0 - - -; +#X floatatom 307 371 5 0 0 0 - - -; +#X obj 39 301 time-next_beat; +#X obj 39 274 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 39 328 bng 15 50 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 39 364 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 39 418 bng 15 50 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 39 391 time-next_measure; +#X msg 75 59 90; +#X msg 108 59 50; +#X text 57 273 click to get a bang on the next beat; +#X text 57 363 click to get a bang on the next measure; +#X obj 473 55 get_delegate time-clock tick; +#X obj 216 196 get_delegate time-clock next_measure_in; +#X obj 472 126 get_delegate time-clock beat; +#X obj 472 196 get_delegate time-clock measure; +#X obj 216 126 get_delegate time-clock next_beat_in; +#X obj 41 17 time-clock; +#X obj 218 55 get_delegate time-clock tempo; +#X obj 218 83 nbx 4 30 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 20 +-204800 -1 -1 120 256; +#X obj 307 411 s time-clock-dispatcher; +#X msg 307 389 seek_measure \$1; +#X floatatom 307 291 5 0 0 0 - - -; +#X obj 307 331 s time-clock-dispatcher; +#X msg 307 309 seek_beat \$1; +#X obj 41 238 s time-clock-dispatcher; +#X msg 41 216 sync; +#X obj 40 170 s time-clock-dispatcher; +#X msg 40 147 beats_per_measure \$1; +#X msg 40 80 tempo \$1; +#X obj 40 100 s time-clock-dispatcher; +#X text 114 11 a centralized timing system. meant to be one-per-pd-instance +atm \; this will likely change.; +#X text 548 425 2009 Luke Iannini; +#X text 548 439 proyekto.net; +#X connect 0 0 38 0; +#X connect 8 0 35 0; +#X connect 9 0 37 0; +#X connect 10 0 30 0; +#X connect 11 0 13 0; +#X connect 12 0 11 0; +#X connect 14 0 16 0; +#X connect 16 0 15 0; +#X connect 17 0 38 0; +#X connect 18 0 38 0; +#X connect 21 0 1 0; +#X connect 22 0 6 0; +#X connect 22 0 7 0; +#X connect 23 0 2 0; +#X connect 24 0 5 0; +#X connect 25 0 3 0; +#X connect 25 0 4 0; +#X connect 27 0 28 0; +#X connect 30 0 29 0; +#X connect 31 0 33 0; +#X connect 33 0 32 0; +#X connect 35 0 34 0; +#X connect 37 0 36 0; +#X connect 38 0 39 0; diff --git a/sfruit/time-clock.pd b/sfruit/time-clock.pd new file mode 100644 index 0000000..310da0e --- /dev/null +++ b/sfruit/time-clock.pd @@ -0,0 +1,101 @@ +#N canvas 138 22 535 783 10; +#X obj 93 235 metro; +#X obj 93 212 > 0; +#X obj 120 311 f; +#X obj 149 311 + 1; +#X obj 147 377 change; +#X obj 120 335 t a a; +#X obj 175 529 *; +#X obj 118 150 s \$0-tick_time; +#X obj 146 673 r \$0-tick_time; +#X obj 175 459 r \$0-beats_per_measure; +#X obj 256 484 r \$0-tick_time; +#X obj 120 625 t b a; +#X obj 147 401 t b a; +#X obj 147 529 f; +#X obj 184 356 r \$0-beats_per_measure; +#X obj 158 589 r \$0-beats_per_measure; +#X obj 131 203 t b; +#X obj 93 96 expr 60000 / $f1; +#X obj 93 124 t a; +#X obj 208 256 r \$0-beats_per_measure; +#X obj 93 259 t b b; +#X obj 175 508 hotpack2 4 600; +#X obj 120 589 mod 4; +#X obj 147 356 div 4; +#X obj 182 256 * 4; +#X obj 120 696 f 600; +#X obj 321 23 inlet; +#N canvas 761 202 450 300 dispatch 0; +#X obj 39 19 inlet; +#X obj 39 64 dispatcher \$0 tempo_in_ms; +#X obj 39 44 dispatcher \$0 tempo; +#X obj 39 84 dispatcher \$0 beats_per_measure; +#X obj 39 104 dispatcher \$0 sync; +#X obj 39 124 dispatcher \$0 seek_beat; +#X obj 39 144 dispatcher \$0 seek_measure; +#X obj 77 19 r time-clock-dispatcher; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 7 0 2 0; +#X restore 321 49 pd dispatch; +#X obj 93 43 r \$0-tempo; +#X obj 56 20 r \$0-tempo_in_ms; +#X obj 131 180 r \$0-sync; +#X obj 182 207 r \$0-seek_beat; +#X obj 182 232 r \$0-seek_measure; +#X obj 174 424 delegate time-clock measure; +#X obj 147 551 delegate time-clock next_measure_in; +#X obj 120 718 delegate time-clock next_beat_in; +#X obj 147 648 delegate time-clock beat; +#X obj 93 757 delegate time-clock tick; +#X text 343 424 *; +#X text 367 552 *; +#X text 298 648 *; +#X text 329 719 *; +#X text 245 756 *; +#X obj 104 68 delegate time-clock tempo; +#X text 262 70 *; +#X connect 0 0 20 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 2 0 5 0; +#X connect 3 0 2 1; +#X connect 4 0 12 0; +#X connect 5 0 22 0; +#X connect 5 1 23 0; +#X connect 6 0 13 1; +#X connect 8 0 25 1; +#X connect 9 0 21 0; +#X connect 10 0 21 1; +#X connect 11 0 25 0; +#X connect 11 1 36 0; +#X connect 12 0 13 0; +#X connect 12 1 33 0; +#X connect 13 0 34 0; +#X connect 14 0 23 1; +#X connect 15 0 22 1; +#X connect 16 0 0 0; +#X connect 17 0 18 0; +#X connect 18 0 0 1; +#X connect 18 0 1 0; +#X connect 18 0 7 0; +#X connect 19 0 24 1; +#X connect 20 0 37 0; +#X connect 20 1 2 0; +#X connect 21 0 6 0; +#X connect 22 0 11 0; +#X connect 23 0 4 0; +#X connect 24 0 2 1; +#X connect 25 0 35 0; +#X connect 26 0 27 0; +#X connect 28 0 17 0; +#X connect 28 0 43 0; +#X connect 29 0 18 0; +#X connect 30 0 16 0; +#X connect 31 0 2 1; +#X connect 32 0 24 0; diff --git a/sfruit/time-last_beat_was.pd b/sfruit/time-last_beat_was.pd new file mode 100644 index 0000000..71df5a5 --- /dev/null +++ b/sfruit/time-last_beat_was.pd @@ -0,0 +1,10 @@ +#N canvas 563 103 450 300 10; +#X obj 129 107 inlet; +#X obj 102 159 timer; +#X obj 129 129 t b; +#X obj 102 193 outlet; +#X obj 102 82 get_delegate time-clock tick; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 1 1; +#X connect 4 0 1 0; diff --git a/sfruit/time-last_measure_was.pd b/sfruit/time-last_measure_was.pd new file mode 100644 index 0000000..3c4654f --- /dev/null +++ b/sfruit/time-last_measure_was.pd @@ -0,0 +1,12 @@ +#N canvas 513 202 450 300 10; +#X obj 129 107 inlet; +#X obj 102 159 timer; +#X obj 129 129 t b; +#X obj 102 193 outlet; +#X obj 102 75 t b; +#X obj 102 52 get_delegate time-clock measure; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 1 1; +#X connect 4 0 1 0; +#X connect 5 0 4 0; diff --git a/sfruit/time-next_beat.pd b/sfruit/time-next_beat.pd new file mode 100644 index 0000000..c256cf0 --- /dev/null +++ b/sfruit/time-next_beat.pd @@ -0,0 +1,17 @@ +#N canvas 0 22 450 300 10; +#X obj 144 226 del; +#X obj 144 167 timer; +#X obj 144 90 t b a; +#X obj 144 194 expr $f2 - $f1; +#X obj 112 39 inlet; +#X obj 112 90 t b; +#X obj 144 255 outlet; +#X obj 144 65 get_delegate time-clock next_beat_in; +#X connect 0 0 6 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 2 1 3 1; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 1 1; +#X connect 7 0 2 0; diff --git a/sfruit/time-next_measure.pd b/sfruit/time-next_measure.pd new file mode 100644 index 0000000..1ff6cb8 --- /dev/null +++ b/sfruit/time-next_measure.pd @@ -0,0 +1,17 @@ +#N canvas 0 22 450 300 10; +#X obj 144 226 del; +#X obj 144 167 timer; +#X obj 144 90 t b a; +#X obj 144 194 expr $f2 - $f1; +#X obj 112 39 inlet; +#X obj 112 90 t b; +#X obj 144 255 outlet; +#X obj 144 65 get_delegate time-clock next_measure_in; +#X connect 0 0 6 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 2 1 3 1; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 1 1; +#X connect 7 0 2 0; diff --git a/sfruit/time-snap_beat.pd b/sfruit/time-snap_beat.pd new file mode 100644 index 0000000..96da63f --- /dev/null +++ b/sfruit/time-snap_beat.pd @@ -0,0 +1,23 @@ +#N canvas 507 404 450 300 10; +#X obj 185 130 r CLOCK-NEXT_BEAT_IN; +#X obj 185 160 / 2; +#X obj 123 84 time-last_beat_was; +#X obj 123 33 inlet; +#X obj 188 219 time-next_beat; +#X obj 123 249 outlet; +#X obj 123 189 sel 0 1; +#X obj 123 124 t a a; +#X obj 123 216 f; +#X obj 123 159 >; +#X obj 188 249 outlet; +#X connect 0 0 1 0; +#X connect 1 0 9 1; +#X connect 2 0 7 0; +#X connect 3 0 2 0; +#X connect 4 0 10 0; +#X connect 6 0 8 0; +#X connect 6 1 4 0; +#X connect 7 0 9 0; +#X connect 7 1 8 1; +#X connect 8 0 5 0; +#X connect 9 0 6 0; diff --git a/sfruit/time-snap_measure.pd b/sfruit/time-snap_measure.pd new file mode 100644 index 0000000..842019e --- /dev/null +++ b/sfruit/time-snap_measure.pd @@ -0,0 +1,23 @@ +#N canvas 0 22 450 300 10; +#X obj 185 160 / 2; +#X obj 123 33 inlet; +#X obj 123 249 outlet; +#X obj 123 189 sel 0 1; +#X obj 123 124 t a a; +#X obj 123 216 f; +#X obj 123 159 >; +#X obj 188 249 outlet; +#X obj 123 84 time-last_measure_was; +#X obj 188 219 time-next_measure; +#X obj 185 129 get_delegate time-clock next_measure_in; +#X connect 0 0 6 1; +#X connect 1 0 8 0; +#X connect 3 0 5 0; +#X connect 3 1 9 0; +#X connect 4 0 6 0; +#X connect 4 1 5 1; +#X connect 5 0 2 0; +#X connect 6 0 3 0; +#X connect 8 0 4 0; +#X connect 9 0 7 0; +#X connect 10 0 0 0; -- cgit v1.2.1