Reflexicons

Een aantal dagen geleden vond Aad van de Wetering een foutje in mijn zelfrefererende zinnen, na het corrigeren hiervan ben ik nog wat meer na gaan denken over deze zinnen.

Het leek me leuk om er achter te komen of er zinnen in het Nederlands zijn die al zijn letters beschrijft zonder extra tekst om het geheel passend te maken, alleen lettermeervouden en uitgeschreven getallen. Battus heeft bijvoorbeeld deze geschreven:

Vijf v’s vijf i’s vijf j’s vijf f’s vijf s’s.

Een beetje een flauwe oplossing, en ook incorrect gezien de laatste s, welke in het meervoud s’en zou moeten lezen. Voor de duidelijkheid hier een aantal regels:

  • De meervouden van de letters zijn streng, eindigt de uitspraak van een letter op een klinker dan voegen we een ‘s toe anders een ‘en (r’en en s’en maar a’s en b’s)
  • Het getal één mag niet gebruikt worden, anders kan ik gratis extra e’s en n’en maken door letters toe te voegen die verder niet in de zin staan
  • We beschouwen de ij als een i en een j.

Je komt er snel achter dat de telwoorden maar 17 van de 26 letters in gebruik nemen.In het totaal zijn er dan 3 oplossingen, dit is een complete set.

Één met 14 verschillende letters en 95 letters in het totaal.

Vier d’s tweeëntwintig e’s vijf f’en twee g’s elf i’s drie j’s drie l’en tien n’en zes r’en elf s’en zes t’s vijf v’s vier w’s drie z’en.

En twee met alle 17 letters gebruikt, respectievelijk 112 en 117 letters in lengte.

Twee a’s twee c’s vijf d’s dertig e’s drie f’en twee g’s twee h’s acht i’s twee j’s twee l’en tien n’en zes r’en dertien s’en elf t’s vier v’s zeven w’s drie z’en.
Twee a’s twee c’s vier d’s achtentwintig e’s vijf f’en twee g’s twee h’s elf i’s drie j’s drie l’en elf n’en zes r’en veertien s’en tien t’s vijf v’s zes w’s drie z’en.

Uit het feit dat er drie oplossingen zijn leid ik af dat we nog puurder kunnen zijn en de meervouden simpelweg helemaal weg kunnen laten. Hier volgt de enige zin met deze eigenschappen

Twee d tien w twee a zes n twee g twee s twee c twee h vier r acht i twee f veertien t twee j zevenentwintig e vijf v drie z.

Deze post heeft drieduizenddrie letters

Is het je wel eens op gevallen dat vier vier letters heeft? Er zijn geen andere getallen met die eigenschap, of toch wel? Telt bijvoorbeeld eenentwintigletterige wat precies eenentwintigletterig is? Als dat mag is de Nederlandse taal zeer flexibel, de kleine cijfers vereisen creativiteit maar daarna gaat het vanzelf.

1
bi
tri
vier
kwint
zestal
zevenen
achtvoud
negenvoud
tiendelige
elfletterig
twaalfdelige
dertiendelige
veertiendelige
vijftienvoudige
zestienletterige
zeventienletterig

Je ziet ook wel eens zinnetjes. Deze zin bevat exact dertig letters. Dit is eigenlijk nog makkelijker. De kortste zijn nog wel leuk om te zoeken.

Zo’n achttien letters.
Zo’n negentien letters.
Zin met twintig letters.
En eenentwintig letters.
En tweeëntwintig letters.
Met drieentwintig letters.
En nu vierentwintig letters.
Of zeg vijfentwintig letters.
Of zesentwintig, geen probleem.
Zin met zevenentwintig letters.
Lees hier achtentwintig letters.
En nu hier negenentwintig letters.
Deze zin bevat exact dertig letters.
Al deze zinnen (en inclusief deze) bevatten driehonderdnegenenzeventig letters..

Dan denk je, laten we extra beschrijvingen toevoegen. Deze vierenveertigletterige zin bevat zes woorden. Deze vijfenzeventigletterige zin heeft negen woorden en zevenentwintig lettergrepen.

Het beste in deze categorie is van Aad van de Wetering, hier gereproduceerd:

Denen, lees en herlees deze zeven a’s, drie c’s, acht d’s, vijfenvijftig e’s, zes f’s, tien g’s, vier h’s, dertig i’s, vijf j’s, twee k’s, drie l’s, vier m’s, zesentwintig n’s, vier o’s, vier p’s, zestien r’s, vierendertig s’s, vierentwintig t’s, twee u’s, veertien v’s, zeven w’s, acht z’s, zesentwintig komma’s, drieëntwintig apostrofs, een trema, negenenvijftig spaties en een punt.

Maar ik ben geen Deen, en we waren net zo lekker bezig met het benoemen van totale letters en woordaantallen en lettergrepen:

Deze vijfhonderdvierletterige zin, waarvan drie hoofdletters, met toevallig precies honderd woorden en honderdzesenzestig lettergrepen en negenennegentig spaties en elf a’s en drie b’s en zeven c’s en tweeentwintig d’s en honderddrieentwintig e’s en zeven f’en en vierentwintig g’s en negen h’s en negenendertig i’s en vijf j’s en twee k’s en negen l’en en vier m’en en drieentachtig n’en en veertien o’s en vijf p’s en zevenentwintig r’en en tweeendertig s’en en achtendertig t’s en drie u’s en vijftien v’s en dertien w’s en negen z’s en zesentwintig weglatingstekens en twee commas en een punt is geschreven door Bob Lucassen.

Om eerlijk te zijn is het niet toevallig dat het precies 100 woorden zijn….

Ik voel me nu wel vrij genoeg om gedichtjes te maken, laten we is voorzichtig beginnen met een Ollekebolleke die z’n woordaantal noemt, ook leuk dat dactylus een dactylus is en als extra limitatie rijmt elke lijn:

Zelf onderzoekende!
Dactylus ritmeval!
Volgt graag de norm
van haar binnenrijm nauw.

Elk woord uit boeken (de
zevenentwintigtal)
Volgt hier een vorm
leeg van inhoud zeer trouw.

En dan nu een echte poging, (het woord “anapest” is ook weer een anapest):

In dit rijm kan ik niks meer veranderen nee.
Alle letters nauwkeurig geteld en oké.
In het strikt anapest ik vertel je tevree.
De hoeveelheden letters elk woordje doet mee.

Er zijn zevental o’s er zijn zestiental j’s.
Vier maal tien en twee i’s vijf maal tien en acht t’s.
Er zijn vier letter u’s elf maal twaalf min drie e’s.
Twee maal tien en vijf s’en een vijftiental d’s.

Er zijn dertiental m’en en twee letter p’s.
Drie maal tien en zes r’en en zes letter g’s.
Zes maal tien en twee n’en en één letter b.
Drie maal tien en vijf l’en en acht letter w’s.

Er zijn negental f’en en acht letter h’s.
Er zijn dertiental z’en een negental k’s.
Drie maal tien en acht a’s er zijn vijf letter c’s.
Nu de grote finale, een veertiental v’s.

 

Klare cijfertekst

Vigenèrecijfer

Het Vigenèrecijfer is een van de klassieke methoden voor encryptie, voor het eerst beschreven in 1553. Het werkt zo: je schrijft elke letter een waarde toe (A=0, B=1, …, Z=25) en kiest een wachtwoord. Een tekst versleutelen doe je dan door de tekst en het wachtwoord bij elkaar op te tellen en 26 van het resultaat af te trekken als deze meer of gelijk is aan 26. Bijvoorbeeld:

geheimverhaal 6 4 7 4 8 12 21 4 17 7 0 0 11
wachtwoordwac   22 0 2 7 19 22 14 14 17 3 22 0 2 +
28 4 9 11 27 32 35 18 34 10 22 0 13 MOD 26
cejlbijsikwan 2 4 9 11 1 6 9 18 8 10 22 0 13

Je stuurt nu de zogenaamde cijfertekst ‘cejlbijsikwan’ op naar je partner-in-crime, en als de andere partij het wachtwoord ‘wachtwoordwac’ kent kan hij het originele bericht reconstrueren:

cejlbijsikwan 2 4 9 11 1 6 9 18 8 10 22 0 13
wachtwoordwac   22 0 2 7 19 22 14 14 17 3 22 0 2
-20 4 7 4 -18 -16 -5 4 -9 7 0 0 11 MOD 26
geheimverhaal 6 4 7 4 8 12 21 4 17 7 0 0 11

Klare cijfertekst

Deze methode van versleuteling kan inmiddels wel gebroken worden, maar heeft zich tot ten minste 1863 dapper verzet en verdiende daarom de titel ‘de onbreekbare versleuteling’. Als je op eenzelfde manier nadenkt als ik, dan denk je nu ‘zijn er ook cijferteksten die in plaats van een onleesbare brei letters toevallig een woord vormen?’ Het antwoord is ja! Heel veel zelfs, bijvoorbeeld:

aanbied
nooddak +

nobelen

En als je gelijk met mij verder denkt dan wordt het een uitdaging om hier het maximale uit te halen. aardwezens+mengschaal=meejoggend is de langste som die je kan maken, al kan je door woorden te combineren nog iets langere combinaties vinden. Door het opsplitsen van alleen de cijfertekst wordt dit mogelijk: meerdimensionaal + vertragingsactie = hiv-kuis-maya-op-tip. En door het opdelen van zowel het wachtwoord als de cijfertekst krijgen we: aandelenkoersindex + aft-beiaard-avaleren = af-geiten-bremstruik. Als we de originele tekst ook nog zouden opdelen is het niet spannend meer, omdat het dan makkelijk is om een combinatie van woorden te kiezen die werkt, en die dan gewoon te herhalen.

Hier naar kijkende valt het meteen op dat je kan proberen om nog een stapje encryptie te doen, aanbied + nooddak = nobelen, maar wat is nooddak + nobelen? Het onleesbare ‘acphoex’ helaas. Gelukkig zijn er een paar uitverkoren setjes die een extra stap toe laten, zoals: alias + sagen = sloef, sagen + sloef = kluis. Helaas volgt hierop cwimx. Het lijkt me duidelijk dat we de langste reeks willen vinden:

4 woorden: autologisch dut-waag-hemd dom-klomp-wok gif-glos-waan

5 woorden: imps cola kaas mols wolk

6 woorden: aub jas jut sul boe tip

7 woorden: bit vws wel rad neo eer rif

(vws = ministerie voor volksgezondheid welzijn en sport)

Hierna houdt het toch echt op, terwijl ik zo had gehoopt op een reeks die zichzelf herhaald. Waarom zouden we die niet kunnen vinden?

Periodiek

Als we even alleen naar de waardes achter de letters kijken (2 in plaats van ‘c’, en t = 20) en maar één letter volgen door alle iteraties heen. Neem het geheime woord ‘appel’ en het wachtwoord ‘boven’. De eerste twee letters hebben waardes 0(a) en 1(b), en deze maken samen 1(b). De eerste letter van het volgende woord wordt 1+1=c(2) en daarna 2+1=3(d) etc. De reeks die hier uit volgt zal vele bekend voorkomen, het is namelijk de Fibonacci reeks. In dit geval mag een getal alleen nooit boven de 25 uitkomen, dus op een circulaire nummerlijn.

Na 84 stappen zal deze reeks zich herhalen (we komen weer uit bij 0 en 1). Het is logisch dat dit uiteindelijk gebeurd omdat er maar 26² mogelijke paren van 2 getallen zijn, maar het hoeft niet altijd 84 stappen te kosten. Als we als voorbeeld namelijk appel en naald hadden gekozen (a=0, n=13) dan waren we veel sneller klaar geweest: 0+13=13, 13+13=26=0, etc. Hieronder zie je alle periodes (hoe lang het duurt voor we terug zijn bij af) die zich voordoen als we alle beginwaardes proberen. Elke opeenvolging van 2 waardes is hier te vinden:

Lengte Periode
1 0 0 0 …
3 0 13 13 0 13 …
28 0 2 2 4 6 10 16 0 16 16 6 22 2 24 0 24 24 22 20 16 10 0 10 10 20 4 24 2 0
28 0 4 4 8 12 20 6 0 6 6 12 18 4 22 0 22 22 18 14 6 20 0 20 20 14 8 22 4 0
28 0 8 8 16 24 14 12 0 12 12 24 10 8 18 0 18 18 10 2 12 14 0 14 14 2 16 18 8 0
28 2 10 12 22 8 4 12 16 2 18 20 12 6 18 24 16 14 4 18 22 14 10 24 8 6 14 20 8 2
28 2 6 8 14 22 10 6 16 22 12 8 20 2 22 24 20 18 12 4 16 20 10 4 14 18 6 24 4 2
28 2 8 10 18 2 20 22 16 12 2 14 16 4 20 24 18 16 8 24 6 4 10 14 24 12 10 22 6 2
84 0 1 1 2 3 5 8 13 21 8 3 11 14 25 13 12 25 11 10 21 5 0 5 5 10 15 25 14 13 1 14 15 3 18 21 13 8 21 3 24 1 25 0 25 25 24 23 21 18 13 5 18 23 15 12 1 13 14 1 15 16 5 21 0 21 21 16 11 1 12 13 25 12 11 23 8 5 13 18 5 23 2 25 1 0
84 0 3 3 6 9 15 24 13 11 24 9 7 16 23 13 10 23 7 4 11 15 0 15 15 4 19 23 16 13 3 16 19 9 2 11 13 24 11 9 20 3 23 0 23 23 20 17 11 2 13 15 2 17 19 10 3 13 16 3 19 22 15 11 0 11 11 22 7 3 10 13 23 10 7 17 24 15 13 2 15 17 6 23 3 0
84 0 7 7 14 21 9 4 13 17 4 21 25 20 19 13 6 19 25 18 17 9 0 9 9 18 1 19 20 13 7 20 1 21 22 17 13 4 17 21 12 7 19 0 19 19 12 5 17 22 13 9 22 5 1 6 7 13 20 7 1 8 9 17 0 17 17 8 25 7 6 13 19 6 25 5 4 9 13 22 9 5 14 19 7 0
84 1 3 4 7 11 18 3 21 24 19 17 10 1 11 12 23 9 6 15 21 10 5 15 20 9 3 12 15 1 16 17 7 24 5 3 8 11 19 4 23 1 24 25 23 22 19 15 8 23 5 2 7 9 16 25 15 14 3 17 20 11 5 16 21 11 6 17 23 14 11 25 10 9 19 2 21 23 18 15 7 22 3 25 2 1
84 1 4 5 9 14 23 11 8 19 1 20 21 15 10 25 9 8 17 25 16 15 5 20 25 19 18 11 3 14 17 5 22 1 23 24 21 19 14 7 21 2 23 25 22 21 17 12 3 15 18 7 25 6 5 11 16 1 17 18 9 1 10 11 21 6 1 7 8 15 23 12 9 21 4 25 3 2 5 7 12 19 5 24 3 1
84 1 5 6 11 17 2 19 21 14 9 23 6 3 9 12 21 7 2 9 11 20 5 25 4 3 7 10 17 1 18 19 11 4 15 19 8 1 9 10 19 3 22 25 21 20 15 9 24 7 5 12 17 3 20 23 17 14 5 19 24 17 15 6 21 1 22 23 19 16 9 25 8 7 15 22 11 7 18 25 17 16 7 23 4 1

Dit laat direct zien waarom een herhalende reeks vinden zo lastig is. Bijna alle letter opeenvolgingen zitten in periodes van 84 lang, en dat gaat natuurlijk nooit lukken – het duurt te lang voor we weer thuis zijn. Laten we het onzelfs eerst eens toestaan om de letters van het alfabet op een andere volgorde te zetten (of welke waardes we aan welke letters toewijzen, maar net hoe je het wil zien). Kunnen we dan een zichzelf herhalende rij maken?

Allereerst kunnen we gebruik maken van de periode van 1 lang door v=0 te maken in het alfabet, dan zijn we er al met een beetje hulp van een zeker toeristenkantoor: vvv+vvv= vvv vvv vvv vvv…
Die van 3 kan ook prima, laten we v=0 en d=13 maken zodat d+d=v wordt: vvv dvd dvd vvv dvd dvd vvv
Die van 28 wordt al zeer lastig maar het alfabet acdepxriljtonqksgubvmwhyfz past hier en geeft:

tab + kam = fan nar tab haf rag dak lap tab bah dak mat haf gal nar dak kam gal pad mat fan bah gal lap fan rag pad tab kam …..

De a hier met een periode 1 in het midden laten is natuurlijk wel erg handig voor ons, maar niet zo mooi. Het is het leukst als de periode van elke positie (eerste, tweede en derde letter) in ieder geval langer is dan 1. Om zo’n oplossing te realiseren moeten we ook de lengte van het alfabet veranderen, een x of q kunnen we toch wel missen. Hierdoor krijgen we namelijk compleet andere periodes – met een alfabet van 22 tekens hebben we bijvoorbeeld een langste periode van maar 30! De maximale periode van een bepaalde alfabetlengte is altijd degene die begint met 0 1, een normale Fibonacci reeks op een circulaire getallenlijn. De lengtes van deze reeks voor iedere “alfabetgrootte” wordt de Pisano reeks genoemd:

π(n) = 1, 3, 8, 6, 20, 24, 16, 12, 24, 60, 10, 24, 28, 48, 40, 24, 36, 24, 18, 60, 16, 30, 48, 24, 100, 84, 72, 48, 14, 120, 30, 48, 40, 36, 80, 24, 76, 18, 56

Dus kandidaten voor alternative alfabetgroottes zijn π(24) = 24 en π(29) = 14. Een alfabet van 24 letters, met een maximale periode van 24 levert in precies de juiste volgorde een prachtige reeks op:

pmkhfnaqgeruivtbjwdslocx: pek + hok = haf aha eer bij pok bed bal abt oor hip per hor hal aha eek big por bed baf abc ook hip pek hok ….

Het vinden van deze reeks bleek nog een aardige uitdaging, bedenk je maar hoeveel alfabetten er zijn van verschillende lengtes en hoeveel woordcombinaties er te proberen zijn

Betekenis

De ultieme toepassing van dit soort esoterie is natuurlijk het kunnen maken van een gedichtje. Dat wil zeggen dat regel a + regel b = regel c. Met enige betekenis. Dit bleek echter ontzettend lastig. Wat betreft het gewone alfabet heb ik dit al heel snel opgegeven. Het abc heeft simpelweg niet genoeg woordsetjes om iets zinnigs mee te kunnen zeggen.

Het beste alfabet ontdekken, waarmee een gedicht misschien wel kan slagen, is nog een heuze uitdaging. Gelukkig hoeven we niet per se het beste alfabet te vinden, en is ‘heel goed’ misschien goed genoeg. Zo’n alfabet kunnen we vinden met statistische methodes (ook wel genetische algoritmes). Resultaat is het schitterende alfabet ewdbkfnopxvjraizgytulhsqmc. Waar het abc slechts 5649 woordsetjes oplevert die samen weer een woord vormen, zijn dat er voor het ewd maarliefst 70567. Het opent daarmee de deur naar iets betekenisvols.


Pensioenpolitiek:

dekkingsgraden

verstrekkingen? het

regent geleuter.


Consumenten:

we zitten

we zeuren

de kijker

En een poging om een vorm te hebben, nog 2 haikus:


een wintervogel.

timbre gepieker. als

tikken pelmolen.


een algoritme

gereed. zotheid, een

getaltsunami.

Ik daag iedereen uit om meer gedichtjes te vinden, ik zal binnekort een alle software en lijstjes publiceren.

Substitutie encryptie

Nog een vraag voor de ambitieuze lezer, bij het maken van deze post heb ik ook met andere klassieke versleuteltechnieken gespeeld. Specifiek rotatie, ook wel Caesarcijfer.
De opgave is: vind een woord waarbij als je elke letter met n opschuift in het alfabet je weer een woord krijgt. Ik heb er nog geen gevonden van +23 en +24, dus suggesties zijn zeer welkom. Ook betere oplossingen dan die hier onder zou ik leuk vinden


Langste woord wat een woord blijft na het toepassen van de rotatie:

rot 1 aktes bluft
rot 2 maf och
rot 3 orka rund
rot 4 ransaap verweet
rot 5 nova staf
rot 6 fusion layout
rot 7 hitte opaal
rot 8 klad stil
rot 9 breve kanen
rot 10 cuba melk
rot 11 opzit zakte
rot 12 doof paar
rot 13 gevat tring
rot 14 daar roof
rot 15 etat tipi
rot 16 doop teef
rot 17 bunny sleep
rot 18 brits tjalk
rot 19 flap yeti
rot 20 boter vinyl
rot 21 ets zon
rot 22 dik zeg
rot 23 ?
rot 24 ?
rot 25 abbot zaans
Alfabet spiegelen: toffig  gluurt

Priemgetal visualisatie

Een korte post om de stilte te doorbreken!

Handwerk

Even geleden had ik geen laptop tot mijn beschikking, alleen Duplo. Ik ben toen een trap gaan maken die een bocht naar rechts maakt voor elke tree die een priemgetal is. Uiteindelijk ben ik tot 103 treden gekomen met nog een paar blokjes over. Zie hier het resultaat, met rechts een wat duidelijker voorbeeld van wat de bedoeling is:blokjes.jpg
Dit is wat ik mensen laat zien als ze vragen of ik ook wel eens niet achter de computer zit.

De uitdaging was om zo min mogelijk draagconstructie te hebben, zonde van je materiaal! Het is dus belangrijk om vanaf het begin te weten hoe de trap zich beweegt. Daarvoor moet je een soort bovenaanzicht maken van de hoekpunten van de trap:

De priemgetallen <= 100: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
first100primes_arrows.png
Een wit vakje is meerdere keren betreden

Rekenwerk

De trap heeft ongeveer 5 minuten gestaan voor hij spontaan omviel, maar dat diagram heeft later nog mijn nieuwsgierigheid gewekt. Dit is een video van het tekenen van dit diagram voor de eerste biljoen (10¹²) treden, in de laatste paar seconde wordt de helft van de treden gezet (500 miljard) door de steeds verregaande versnelling:

 

Je kunt behalve priemgetallen ook andere lijsten nummers in deze fictieve tekenaar stoppen, waarbij wederom de nummers in de reeks bepalen welke treden hoekpunten zijn. Veel reeksen, zoals de kwadraten (1,4,9,16,..), Pascals driehoek, Catalaanse nummers, Douglas Hofstadter’s zelf refererende reeksen, en nog veel meer voorbeelden maken simpelweg 4 diagonale lijnen, wat in trapvorm een soort omgekeerde piramide zou worden. Dit gebeurt omdat het geometrische of bijna geometrische reeksen zijn, niet zo interessant dus. Maar functies met niet steeds hoger wordende waardes kunnen verrassende effecten hebben, zoals Mertens’ functie (eerste 10⁶ waarden), die moderne kunst produceert:

frame_00744

Eigen reeks

Als je de verschillen tussen de nummers in een reeks pakt:
2,3,5,7,11,13 wordt dan 2-0, 3-2, 5-3, 7-5, 11-7, 13 – 11.
Dan is de hoeveel stappen tussen 2 draaien naar rechts gelijk aan deze verschillen. Het is dan ook mogelijk om een verschil van 0 te hebben, waardoor je op je plek naar rechts draait. Je kan nu elke vorm tekenen die verbindbaar is met een rechte lijn, een rechte lijn maken werkt dan zo (in verschillen opgegeven):
1,0,0,0,1,0,0,0,1,0,0,0,1,..
We lopen 1 stap in de huidige richting, draaien naar rechts, draaien nogmaals 3 keer naaar rechts en lopen weer 1 stap.

Je kunt zo voor bijvoorbeeld elk cijfer een plaatje maken, en met een beetje puzzelen kun je elk cijfer ook dezelfde hoeveelheid stappen in laten ne nemen door waar nodig een rondje op de wplek te draaien.

Wat nu leuk zou zijn is om een reeks te maken die cijfers tekent, en dan het liefst de cijfers van die reeks zelf:test.png
De eerste 50 waarden zijn : 0,0,0,0,1,0,0,2,1,1,2,1,2,2,2,4,0,0,0,0,1,0,0,2,1,
1,2,1,2,2,2,4,0,0,0,0,1,0,0,2,1,1,2,1,2,2,2,4,0,0,0,0,1,0,0,2,1,1,2,1,2,
2,2,4,0,0,0,0,1,0,0,0,0,0,1,0,2,0,2,4,0,0, etc.
Dit is het bovenaanzicht na een paar 100 stappen:
frame_00080De onhandige grote constante waarmee deze formule begint bevat de informatie voor het tekenen van de cijfers.

De ongedocumenteerde code voor het genereren van deze plaatjes staat op github. Als er nog suggesties zijn wat betreft reeksen om te tekenen hoor ik het graag.

 

A search for interesting canons (part 1)

Starting point

Canons in the common practice period are relatively uncommon. Apart from for example canons by Bach (BWV 1087, BWV 1097) and works by Josquin de Prez or Palestrina there seem to be few elaborate uses of canon. This post aims to be a starting point for me in exploring the nature and limits of canonic writing in conventional harmony.

Ideally one would to try every possible theme of minimal melodic quality with every possible canonic technique and select those with interesting properties. Since there are however infinite themes the problem needs to be bounded. The starting point will be Bach’s 14 canons on the ground bass of the Goldberg variations (BWV 1087).

Herein Bach wrote 14 canons that all contain the same 8 quarter note theme, usually in canon with itself and usually in double canon. Bach proceeds to show how this theme fits with its retrograde, how the inversion of the theme fits with it’s own retrograde, how the theme fits with its inversion and how the inverted theme fits with its own inversion.

Just like Bach we will just consider 8 note diatonic themes, naively there are 7⁸ (5.7 million) possible diatonic 8 note themes and we’ll hopefully find the best.

Symmetry

There are some isomorphisms to consider. I consider any 2 themes where one can be transformed in the other using these transformations isomorphic and so part of the same equivalence class:

Translation refers to changing the starting point of the theme and wrapping around, these are identical because we will be considering canonic rounds. Octavation refers not just to the octave in which the theme is played but to the particular octave of any note. I think in the case of most themes there is one obvious octave for each note to be in, and in other cases it is far more efficient to consider the multiple options in a much later stage so that we can for the moment encode notes without this information and keep the amount of themes at 7⁸ instead of ~88⁸.

Pruned in such a way there just 27.253 themes (actually equivalence classes) left, there are some other limitations that should be imposed:

  • At least 5 of the 7 diatonic notes should be present for sufficient harmonic interest.
  • Themes should not be their own translation because of the obvious symmetry.
  • Themes should not be their own retrogrades, for the same reason.
  • No repetition of notes, except once to allow for the same start and end note.
  • No 3 note pattern should be literally repeated.

The no repetition of notes is because this is contrapuntally very close to having a different rhythm, something that will only be tackled at a later stage. With these limitations applied there are now less than 15.000 themes left. Looking at these there are still some clearly unfit themes but I do not believe there are false negatives.

How canonic is a theme?

Next the selected themes will be sorted by how many contrapuntally valid combinations each theme has with its isomorphs. Naively one theme has ~224 isomorphs (7 transpositions * 8 rotations * 2 inversions * 2 retrogrades) barring symmetries, and you can combine any isomorph with any other isomorph making for 224² – 224 (not with themselves) combinations. Counterpoint is however just as isomorphic as themes, so theme + theme rotated by 1 is equal to inversion + inversion rotated by 1, or inversion + retrograde inversion rotated by 3, is contrapuntally equal to theme + retograde rotated by 3, which is equal to theme rotated by -3 (= 5) + retrograde if you wish. You can obviously transform any set of 2 isomorphic themes so that one of the themes is untransformed. This means that we just have to compare the theme with all its isomorphs: just 224 combinations. Additionally we don’t want to see the theme and its own transpositions, since that is just playing the same notes at different pitches. Lastly the combination of theme + theme rotated by N is the same as theme + theme rotated by 8-N, because the difference between those two is just swapping the voices. This also goes for the inversion. This leaves 175 real isomorphic combinations to check, in practice the good themes that suit themselves well in counterpoint have some hidden reflections that the human ear does not pick up on, unifying many of these positions.

The rules of counterpoint used are mostly like Fux’s but are much more permissive of the fourth as all these combinations of 2 themes will probably be combined in a larger whole and because the symmetry makes for a cleaner abstraction.

Result

Bach’s theme (cbagefgc) is quite respectable, it looks like this when combined with all its isomorphs, of these Bach only used the ones on beat 0(same time) or beat 4(after one bar):bachcp.png

The reflections in some of the top scoring themes is obvious but the first non-trivial theme (cdedcbgb), and the result of this post is quite pleasant thematically and combines extremely well:

cdedcbgb.png

You can listen to it here: https://musescore.com/user/6168221/scores/1489061. It starts off just showing the combination of the 8 note theme with itself and then also shows the theme in double canon with free melodies. It also shows augmentation canons. It is very much a work in progress and requires at least another dozen canons to form a complete set.

Future

Next it might seem obvious to consider chromatic themes. In practice however successful chromatic themes (using chromatic inversion) are all on the whole tone scale so that the inversion and retrograde inversion work. Chromatism in canons is made much easier by allowing some rhythm and doesn’t seem to work for well or meaningfully for these short equal note length themes.

For 12 tone rows applying the same isomorphism there are just 853.810 rows as opposed to 12!, 2031 of those combine with 16 of their own isomorphs, for example (a# b f# g e a g# f d d# c# c). The resulting counterpoint is obviously strange, without direct dissonants yet with false relations at every beat.

The above work is all done within a second in a single CPU core so there is much room for improvement. I just finished an algorithm that can explore the complete space of 16 note themes in a couple minutes. I will do a follow up post about its inner workings and results once I verified everything.

Themes that fit all rotations with itself (19): gefecbga, gefecdga, cgbaegbc, gedbcdga, bgdafcge, aegdfceb, eabgafge, geabcdea, cgegbdfc, gedbadea, eadgafge, cgfagbdc, agbdcegf, eadgcfge, geacadbg, gedbadga, cbdacgbc, befecdga, cabgadbc.

Themes that fit in all rotations (except 0) with its inversion (6): agfdcbag, cagceabc, agfedcae, cdedcbgb, bgdebcdc, cbegadcb.

There are no themes that fit at every rotated retrograde, or even every rotated retrograde but 1, but there are 3 themes that fit at all but 2: cdedcbgb (4,6), agfdcbag (6,7), bcdabcgc (1,2).

There are 6 themes that fit at every position in retrograde inversion: bgdafcge (16), cadecdbc (15), gedbadea (15), befecdga (14), agbdcegf (13), gefecbea (13).