1. Initial draft of some musical experiments using puredata live with blockflute:

  2. I’m getting too used to (puredata.info) — I just right-clicked a python class and expected a hypermedia “help” option with params, example usage etc.

    Jetbrains PyCharm does have an inline documentation feature, which (when invoked via a complex keyboard “shortcut”), produces this gem:

    Even when this feature does work, it shows code “documentation” in a monospace font, typically with no usage example or links to other relevant documentation, as is standard in puredata.

    Our tools are inadequate.

    Update: added puredata documentation for comparison:

    In case it’s not clear from the screenshot, that usage example is live code — it can be interacted with, changed, copied and pasted, played with, experimented with. We typically can’t do that with existing text-based code, let alone mere usage examples.

    More thoughts I want to add to this, but I will write them up as a full article.

  3. Helpful tip: if you cannot move objects around in edit mode, it’s probably due to not having an audio device configured. Because that totally affects being able to drag boxes around.

  4. 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;