En annen metode for å etablere et formalt anker for en komposisjon er kanon, hvorved komponisten genererer en eller flere tillegsstemmer ved å innføre en forsinket versjon av en melodilinje. Kanon eksisterte i folkelige versjoner under navn som rondellus, rota og også fugue og caccia. Den ble dyrket og fullendt i Ars Nova-tiden og fram til 1500-tallet.
Den enkleste kanontypen, som vi finner igjen i barnesanger og 40-års-lag, er kanon i prim eller oktav. Det er da vanligvis en sirkel- eller uendelighetskanon (stemmene begynner forfra igjen når de kommer til slutten). Mer komplisert er kanon i andre intervaller, kanon i motbevegelse (imitasjons-stemmen går i en melodisk omvending av den opprinnelige) og krepskanon, med evt. augmentasjon eller diminusjon av noteverdier. Andre viktige typer er dobbeltkanon (to stykker samtidig) og cantus-firmus kanon, hvor en cantus-firmus blir akkompagnert i kanonform. Dette blir etterhvert uhyggelig komplisert å komponere når man skal ta harmoniske forhold med i betraktningen. Penderecki bruker kanonteknikker i Threnody, Babbitt i Semi-Simple Variations osv. osv.
(merge kanon-A () (loop for begynn from 0 to 6 by 2 for kanonnavn in '(kanon1-1 kanon1-2 kanon1-3) do (generator (name kanonnavn) instrument-note (start begynn length 12) (setf note (item (steps 1 from 'c4 for 12 returning note))) (setf rhythm (rhythm 's)) (setf duration rhythm))))
En kanon som tar i bruk noen av de avanserte mulighetene:
(merge kanon-B () (generator kanon1 instrument-note () (setf rhythm (item (rhythms (items 1.5 0.5 0.5 in palindrome for 6) h te te te) :kill 2)) (setf note (item (series 0 3 6 5 0 2 4 1 from (notes a4) returning note forming (items p i)))) (setf duration rhythm)) (generator kanon2 instrument-note (start 2.0) (setf rhythm (item (rhythms (items 1.5 0.5 0.5 in palindrome for 6) h te te te) :kill 2)) (setf note (item (series 0 3 6 5 0 2 4 1 from (notes ds3) returning note forming (items r ri)))) (setf duration rhythm)))