TidalCycles' weave produces an unplanned canon when sound and effect patterns are swapped, illustrating discovery through generalization
TidalCycles’ weave was designed to spatialize a set of sound patterns using one effect pattern (e.g. panning), offsetting each sound pattern in phase across a given number of cycles. When Magnusson and McLean applied the opposite — phases of a single sound pattern across a set of effect patterns — they discovered it produced a musical canon: run gives a rising scale, and the phase-staggered overlay yields a perpetually rising canon, while the rhythmic structure now comes from the effect patterns, adding polymetry. This was ‘discovered by chance’ through generalizing the function. The episode illustrates a key aesthetic of live coding: sufficiently general pattern combinators produce surprising results that could not have been fully anticipated, making the code an exploratory environment.
Examples
Standard: weave 16 (pan sine1) [sound “bd sn cp”, …] spatializes several sound patterns. Discovered: jux rev $ weave 16 (sound (samples “arpy*8” (run 8))) [vowel “a e i”, …] yields a continuously rising canon with rich polymetry.
Assessment
Describe how weave’s canon behavior was discovered, and say what it illustrates about the relationship between generalization and musical discovery in live coding.