1. My first puredata patch: Canoner! A cross between a delay and a looper, this patch allows you to play canons solo.

    Hit Start/Round as you start playing, then again at a round point, and the patch will continue to play what you played with that delay until you hit Stop.

    Extending the canoner to support n>2 part canons is left as an exercise for the reader.

    Patch code:

    #N canvas 405 217 363 240 10;
    #X obj 26 34 tgl 40 0 empty empty empty 17 7 0 10 -204786 -1 -1 0 1
    ;
    #X obj 26 84 route 1 0;
    #X obj 214 201 delwrite~ round 10000;
    #X obj 214 176 adc~;
    #X obj 26 117 timer;
    #X obj 26 148 delread~ round;
    #X obj 26 198 dac~;
    #X floatatom 165 149 5 0 0 0 - - -;
    #X floatatom 129 149 5 0 0 0 - - -;
    #X obj 26 174 *~ 0;
    #X obj 101 34 bng 40 250 50 0 empty empty empty 17 7 0 10 -260097 -1
    -1;
    #X text 13 15 Start/Round;
    #X text 106 14 Stop;
    #X text 249 176 Input Stage;
    #X connect 0 0 1 0;
    #X connect 1 0 4 0;
    #X connect 1 1 4 1;
    #X connect 1 1 8 0;
    #X connect 3 0 2 0;
    #X connect 4 0 5 0;
    #X connect 5 0 9 0;
    #X connect 7 0 9 1;
    #X connect 8 0 9 1;
    #X connect 9 0 6 0;
    #X connect 9 0 6 1;
    #X connect 10 0 7 0;