Backtrackalgoritmen voor regelgebaseerde vierstemmige harmonisatie

Maat: px
Weergave met pagina beginnen:

Download "Backtrackalgoritmen voor regelgebaseerde vierstemmige harmonisatie"

Transcriptie

1 Faculteit ngenieurswetenschappen akgroep Toegepaste Wiskunde en nformatica oorzitter: Prof. Guido anden Berghe Backtrackalgoritmen voor regelgebaseerde vierstemmige harmonisatie door Stéphanie anhove Promotor: Prof. Kris Coolsaet Scriptie ingediend tot het behalen van de academische graad van Licentiaat in de nformatica optie Toepassingsgerichte nformatica Academiejaar

2 Overzicht Backtrackalgoritmen voor regelgebaseerde vierstemmige harmonisatie Stéphanie anhove Promotor: Prof. Kris Coolsaet Academiejaar Scriptie ingediend tot het behalen van de academische graad van Licentiaat in de nformatica, optie Toepassingsgerichte nformatica Universiteit Gent Faculteit ngenieurswetenschappen akgroep Toegepaste Wiskunde en nformatica oorzitter: Prof. Guido anden Berghe Trefwoorden Algoritmische compositie, Backtracking, Harmonie, Muziek, Ramo Samenvatting Het programma Ramo is een interactieve harmonietrainer waarin partituren kunnen ingevoerd worden en gecontroleerd worden op de correctheid volgens de harmonieregels. n deze thesis wordt Ramo uitgebreid met een actieve component die zelf muziek kan genereren die aan de harmonieregels voldoet. Hiervoor worden verschillende backtracking-algoritmen ontworpen en met elkaar vergeleken. i

3 ii Toelating tot bruikleen De auteur geeft de toelating om deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie. Stéphanie anhove 30 mei 2007

4 oorwoord Om deze thesis tot een goed einde te brengen, kon ik rekenen op de steun van een aantal mensen die bereid waren tot meer dan normale inspanningen. k wil dan ook graag de volgende mensen bedanken: Mijn promotor Prof. Kris Coolsaet, voor het onderwerp, de vrijheid die ik kreeg, de snelle reacties via en de regelmatige bijeenkomsten waarna ik telkens weer nieuwe ideeën had om verder te doen. Hans Scholliers, voor het muzikaal advies en voor het leveren van zeer bruikbare literatuur over harmonie. Johan Schrooyen, voor de hulp bij het zoeken naar artikels en voor het opsporen van taalfouten tot in de meest onmogelijke detailniveaus in mijn tekst. Arne Brasseur en Wouter Rogiers, voor de toelichting bij hun werk. Arne wil ik ook bedanken voor het nalezen van de tekst en de kritische opmerkingen. Luc anhove, mijn vader, voor het meedenken en het voortdurend nalezen van nieuwe stukken tekst, wat met twee thesissen tegelijk in huis een groot deel van zijn tijd innam. Frédéric anhove, mijn broer, voor de L A TEX tips en voor de onmisbare wiskundige hulp doorheen de jaren. Mijn medestudenten en vrienden, voor allerlei tips en voor de vlotte samenwerking en leuke momenten tijdens de voorbije 4 jaar. n het bijzonder Joram Barrez, Joke erhegghe, Filip Blondeel, Helmut Provost, Benny Botte, Jan Hanselaer en Taheen andeghinste. iii

5 nhoudsopgave oorwoord iii 1 nleiding Doelstellingen Overzicht Opmerking i.v.m. muziektheorie nleiding tot de harmonie Situering Harmonieleer en harmonieregels Tonale muziek Algemene begrippen Harmonieregels Harmonieopgaven Het programma Ramo Bedoeling Het oorspronkelijke Ramo programma Het nieuwe regelsysteem Afweging tussen beide regelsystemen Methoden voor algoritmische compositie Algoritmische compositie Constraint satisfaction problem met backtracking Genetische algoritmen iv

6 NHOUDSOPGAE v 4.4 Backtracking vs. genetische algoritmen Andere methoden Onze strategie Controleregels 0.1 ereisten voor het regelsysteem Bruikbaarheid van de verschillende soorten regels Alle regels checken? Productieregels 7.1 Situering Productieregels voor volledige kwintakkoorden en septiemakkoorden Productieregel voor onvolledige septiemakkoorden Productieregels voor noten Productieregels in verband met de tonica Heuristische regels Bedoeling Werking Soorten heuristische regels Opmerking over de subjectiviteit Backtracking-algoritmen nleiding Willekeurig algoritme Algoritme met vooruitkijken voor beschrijvingen Algoritme met vooruitkijken voor beschrijvingen en noten Complexiteit Eindbeschouwingen Conclusie Mogelijkheden voor verdere ontwikkeling ndex 122 Bibliograe 124

7 Hoofdstuk 1 nleiding 1.1 Doelstellingen Muziek, en in het bijzonder de tonale muziek, onderscheidt zich van de andere kunstvormen door de formalisering ervan. Het is deze formalisering die het mogelijk maakt automatisch muziek te genereren, bvb. met behulp van een computer. Geen enkele andere kunstvorm is zo sterk geformaliseerd als de muziek. We kunnen ons immers wel voorstellen dat een computer muziek zou genereren, maar om een computer vanuit het niets een schilderij te laten genereren ontbreekt het ons toch aan houvast. n de harmonieleer uit deze formalisering zich vooral in de vorm van regels. Deze regels bepalen wat toegelaten is of niet in de harmonie, en zijn het voorwerp van heel wat cursussen en handboeken. n voorgaande thesissen werd reeds een applicatie ontwikkeld die kan controleren of een ingevoerde partituur aan de harmonieregels voldoet. Deze applicatie kreeg de naam Ramo. n dit werk is het de bedoeling Ramo uit te breiden met automatische harmonisatie en daarvoor de nodige algoritmen te ontwerpen. Om dit mogelijk te maken, wordt het systeem ook uitgebreid met productieregels en heuristische regels. De algoritmen zijn regelgebaseerd omdat er in het systeem een verzameling is van regels die bepalen of een oplossing geldig is of niet. Deze regelset kan probleemloos gewijzigd worden, zonder dat de algoritmen daarom moeten veranderen. Bij het begrip automatische harmonisatie denken mensen vaak aan synthesizers die automatisch een bijpassend akkoord laten horen wanneer men een noot indrukt. Deze synthesizers gebruiken echter een eenvoudiger algoritme. Door de real-time vereisten kunnen synthesizers bij de keuze van een akkoord weinig rekening houden met de context, en al zeker niet met wat er nog zal volgen. Wanneer de volgende noot gekend is, moet het vorige akkoord al lang beslist zijn. Backtracking over een volledige opgave is voor dergelijke synthesizers dan ook geen optie. 1

8 HOOFDSTUK 1. NLEDNG 2 De algoritmen die we in dit werk zullen ontwerpen, houden wel rekening met de context. eder akkoord hangt af van zijn voorgangers en opvolgers, en de akkoorden moeten correct verbonden worden volgens de verbindingsregels. n deze algoritmen zullen we dan ook uitvoerig gebruik maken van backtracking. 1.2 Overzicht n het volgende hoofdstuk geven we een inleiding tot de harmonie, waarin de belangrijkste begrippen uiteengezet worden die voor de rest van deze tekst van belang zijn. n Hoofdstuk 3 bespreken we de geschiedenis en de mogelijkheden van Ramo. ervolgens geven we in Hoofdstuk 4 een overzicht van de methoden voor algoritmische compositie die in de literatuur beschreven zijn. We zetten er ook de principes van backtracking en genetische algoritmen uiteen, en maken een vergelijking tussen beide. De controleregels, productieregels en heuristische regels die we nodig hebben ter ondersteuning van de algoritmen worden respectievelijk besproken in Hoofdstuk, en 7. n Hoofdstuk 8 worden de verschillende ontworpen backtracking-algoritmen uiteengezet. We doen ook een aantal testen en vergelijken de resultaten met elkaar. Ten slotte geven we nog een aantal eindbeschouwingen in Hoofdstuk 9. Bij dit werk hoort ook een CD met het programma Ramo, de broncode, documentatie, een aantal testbestanden en een digitale versie van deze tekst. Meer informatie over het uitvoeren van het programma e.d. is te vinden in het bestand Overzicht.txt in de rootmap op de CD. 1.3 Opmerking i.v.m. muziektheorie n deze tekst worden heel wat begrippen uit de notenleer en harmonieleer gebruikt. Het is niet realistisch hier de hele notenleer en harmonieleer te willen uiteenzetten, dus enige muzikale voorkennis is wel noodzakelijk. Goede inleidingen tot de notenleer zijn bvb. te vinden in [12, 1] en ook in de thesis van Arne Brasseur [4] pp Aangezien veel mensen wel notenleer kennen maar geen harmonie, willen we deze tekst ook toegankelijk maken voor de lezer met een basiskennis notenleer. Daarom geven we in Hoofdstuk 2 een inleiding tot de harmonie. Men verwacht misschien niet meteen 20 pagina 's muziektheorie aan te treen in een informaticathesis, maar we zijn van mening dat dit noodzakelijk is als basis voor het vervolg van de tekst. Lezers die over de nodige harmoniekennis beschikken, kunnen dit hoofdstuk gerust overslaan. Overigens is er op het einde van deze tekst een index, waarin onder andere de muziektermen kunnen opgezocht worden.

9 Hoofdstuk 2 nleiding tot de harmonie 2.1 Situering Wanneer musici een muziekstuk analyseren, doen zij dit vaak aan de hand van verschillende elementen, die samen de totale klank van de muziek bepalen. Deze elementen zijn: Melodie: de opeenvolging van (gelijke of verschillende) toonhoogtes, in een bepaald ritme Metrum: de opeenvolging van zware en lichte tellen in de muziek Ritme: de opeenvolging van langere en kortere tonen en rusten Dynamiek: de verhouding in klanksterkte in de muziek Tempo: de snelheid waaraan de muziek wordt uitgevoerd Timbre: de typische klankkleur van de instrumenten en/of stemmen die de muziek uitvoeren orm: de manier waarop een muziekstuk is opgebouwd Harmonie: het gelijktijdig samengaan van tonen met verschillende toonhoogtes n een cursus notenleer maken leerlingen hoofdzakelijk kennis met melodie, metrum, ritme, dynamiek, tempo, timbre en vorm. Omdat de harmonie enerzijds een zeer belangrijk element is in de muziek, en anderzijds door velen als één van de moeilijkere domeinen in de muziektheorie wordt beschouwd, wordt een cursus notenleer meestal gevolgd door een afzonderlijke cursus harmonie. We geven hier een korte inleiding tot de harmonie. 3

10 HOOFDSTUK 2. NLEDNG TOT DE HARMONE Harmonieleer en harmonieregels Wanneer we op een piano drie willekeurige toetsen gelijktijdig indrukken, is de kans groot dat dit niet als een mooi geheel zal klinken. Hoewel elk van deze tonen op zich heel normaal klinkt, creëren ze samen een gevoel van spanning. Men spreekt dan van een dissonante samenklank. Daar tegenover staan de tonen die wél als een goed samenpassend geheel klinken. Deze geven een gevoel van rust en noemen we consonant. Door de spanning die ze veroorzaken, vragen dissonanten erom dat ze gevolgd worden door de rust van een consonante samenklank. Men zegt dan dat de dissonant oplost naar de consonant. Doorheen de muziekgeschiedenis waren de opvattingen over consonantie en dissonantie niet altijd dezelfde. Bij het begin van het ontstaan van de meerstemmigheid in de vroege middeleeuwen werden enkel de reine kwart, de reine kwint en het rein octaaf als consonant beschouwd. Zelfs grote en kleine tertsen en sexten beschouwde men toen als dissonant. De dissonant werd echter meer en meer geëmancipeerd door de eeuwen heen. Tijdens de renaissance (ca ) werden ook de tertsen en sexten, zowel grote als kleine, als consonant aanvaard. Andere dissonanten kwamen ook voor, maar vooral als toevallige versieringen. anaf de barok (ca ) werd de dissonant als zelfstandig akkoord aanvaard, hoewel de harmonisatie nog vooral op drieklanken gebaseerd was. Tijdens de romantiek (ca ) en de twintigste eeuw werd uitvoerig gebruik gemaakt van vierklanken en andere dissonanten die vaak pas laat of zelfs helemaal niet oplossen. De spanningen en ontladingen die ontstaan door de manier waarop tonen worden samengevoegd, worden bestudeerd in de harmonieleer. Heel wat componisten hebben hun inzichten omtrent de harmonie neergeschreven in een traktaat. Het bekendste en meest invloedrijke traktaat is ongetwijfeld dat van de Franse componist Jean-Philippe Rameau, getiteld Traité de l'harmonie, réduite à ses principes naturels. Hierin beschrijft hij het idee dat ieder akkoord een functie heeft ten opzichte van de andere akkoorden, en dat spanningen en rust kunnen verklaard worden aan de hand van deze functies. Het programma Ramo is dan ook genoemd naar deze componist. Figuur 2.1: Traité de l'harmonie van Jean-Philippe Rameau

11 HOOFDSTUK 2. NLEDNG TOT DE HARMONE eel van de traktaten over harmonie speciceren een verzameling harmonieregels die bepalen welke noten mogen samenklinken, en op welke manier deze samenklanken met elkaar mogen verbonden worden. n een cursus harmonie worden dan ook heel wat regels aangeleerd die bepalen wat er wel en niet mag. n sectie 2. geven we een aantal voorbeelden van dergelijke regels. Hierbij moeten we wel een belangrijke kanttekening maken. Aangezien er bijna evenveel traktaten bestaan als componisten, bestaat er geen unieke verzameling regels die men als wet moet aanvaarden. De harmonieregels zijn ook niet opgesteld als recept voor hoe men in de toekomst moet componeren, maar veeleer als een beschrijving van hoe de componisten in het verleden te werk gingen. We kunnen dus zeggen dat de harmonieregels de muziek volgen, en niet omgekeerd, en dat de harmonieregels slechts in principe gelden. Wel hebben de harmonieregels een belangrijke pedagogische waarde. Doordat in oefeningen voor beginners bepaalde harmonieregels moeten nageleefd worden, wordt de leerling gestimuleerd tot horizontale en verticale controle van zijn werk, en kan de leerling zijn harmonisch gevoel ontwikkelen naar het voorbeeld van de grote componisten uit de geschiedenis. Pas in een meer gevorderd stadium kan de leerling op oordeelkundige wijze afwijken van de vooropgestelde harmonieregels. Toch zijn er een aantal regels die algemeen aanvaard worden en waarop overtredingen zeer uitzonderlijk zijn, zoals bvb. de regel van de parallelle kwinten en octaven (zie 2..3). Een andere belangrijke opmerking is dat de harmonieregels slechts de syntax van de muziek zijn. Een muziekstuk dat aan alle regels voldoet, is nog niet noodzakelijk mooi. Bij een gegeven baslijn moet men een vloeiende melodie kunnen schrijven, en bij een gegeven melodie moet men de juiste harmonische onderbouw kunnen vinden. Dit vergt enige aanleg en veel oefening, en is duidelijk meer dan het louter toepassen van een aantal regels. 2.3 Tonale muziek n de harmonieleer wordt vooral tonale muziek bestudeerd. Tonale muziek is gebaseerd op grote en kleine tertstoonladders (zie 2.4.2) en draait rond één centrale toon, die we de tonica noemen. Melodieën beginnen en eindigen vaak op de tonica. De andere tonen staan in een vaste relatie tot de tonica. De dominant (toon die een kwint boven de tonica ligt) en de subdominant (toon die een kwint onder de tonica ligt) spelen ook een belangrijke rol. De andere tonen uit de toonladder zijn minder belangrijk, en helemaal ondergeschikt zijn de toonladdervreemde noten.

12 HOOFDSTUK 2. NLEDNG TOT DE HARMONE n de muziekgeschiedenis duurde de tonale periode van ca. 180 tot ca n deze periode vinden we componisten als Antonio ivaldi, Johann Sebastian Bach, Georg Friedrich Händel, Wolfgang Amadeus Mozart, Ludwig van Beethoven en vele anderen. Tegenhangers van de tonale muziek zijn de modale muziek en de atonaliteit. n de modale muziek worden geen grote en kleine tertstoonladders gebruikt, maar wel een andere soort toonladders die we modi noemen. Deze modi zijn in feite rotaties van de grote en kleine tertstoonladder, waardoor de hele en halve tonen op andere plaatsen terechtkomen. oorbeelden zijn de dorische, lydische en frygische modus. Het modale toonsysteem werd tijdens de middeleeuwen veelvuldig gebruikt in Gregoriaanse gezangen, en ging dus in de muziekgeschiedenis het tonaal systeem vooraf. Omdat ze zo vaak in religieuze muziek voorkomen, worden de modi ook kerktoonladders genoemd. Aan het einde van de tonale periode, in de tweede helft van de negentiende eeuw, begon men meer en meer gebruik te maken van toonladdervreemde noten. Als gevolg hiervan begon de tonaliteit te vervagen en ontstond de atonaliteit. n het atonaal toonsysteem zijn alle tonen gelijkwaardig en is er geen centrale toon meer. Dissonanten zijn hier schering en inslag. De componist Arnold Schoenberg ( ) speelde een belangrijke rol in de ontwikkeling van de atonaliteit. Het programma Ramo richt zich tot nu toe op tonale muziek, omdat in harmoniecursussen voornamelijk de tonale harmonie onderwezen wordt. 2.4 Algemene begrippen n de volgende paragrafen beschrijven we een aantal belangrijke concepten uit de harmonie. We beperken ons hier tot de concepten die relevant zijn voor het vervolg van dit werk Stemmen en stembereik Harmonisaties worden steeds uitgewerkt alsof ze voor een vierstemmig koor bedoeld zijn. Er zijn dus altijd 4 stemmen, die van hoog naar laag sopraan, alt, tenor en bas genoemd worden. De sopraan en alt zijn vrouwenstemmen, en worden in solsleutel genoteerd op de bovenste notenbalk. Tenor en bas zijn mannenstemmen en worden in fasleutel genoteerd op de onderste notenbalk. Om de sopraanstem en de altstem van elkaar te kunnen onderscheiden, worden de stokken van de noten in de sopraanstem altijd naar boven genoteerd, en die in de altstem altijd naar beneden. Op analoge wijze worden bij de tenorstem de stokken naar boven geschreven en bij de basstem naar beneden. Met de termen sopraan, alt, tenor en bas doelen we zowel op de zanger, als op de melodielijn die hij/zij zingt. De bas is een belangrijke stem omdat deze de

13 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 7 laagste stem is en dus het fundament vormt van de harmonie. Ook de sopraan verdient de nodige aandacht omdat dit de stem is die voor de luisteraar het meest in het oor springt. Een melodieuze sopraanstem is dus wenselijk. Aangezien een harmonisatie uitvoerbaar moet zijn door een koor, moet bij het harmoniseren rekening gehouden worden met de vocale mogelijkheden van de zangers. De ene stemsoort kan hogere of lagere toonhoogten aan dan de andere. We zeggen dat iedere stemsoort zijn eigen stembereik heeft. n de literatuur is men het niet altijd eens over de precieze grenzen, maar Figuur 2.2 toont een typisch stembereik voor sopraan, alt, tenor en bas. Men kan natuurlijk ook een harmonisatie schrijven die enkel voor instrumenten bedoeld is. n dat geval kan men deze grenzen licht overschrijden. Figuur 2.2: Stembereik voor sopraan, alt, tenor en bas Toonladders en toontrappen Een toonladder wordt gekenmerkt door de plaatsen waar de hele en halve tonen zich bevinden. Elke toonladder bestaat uit zeven graden of toontrappen die genummerd worden met Romeinse cijfers. De toontrap die volgt op toontrap wordt soms als genoteerd, maar we zullen deze hier telkens als toontrap noteren. Bij een grote tertstoonladder ligt er een halve toon tussen en en tussen en, en een hele toon tussen de andere toontrappen. n Figuur 2.3 zien we de grote tertstoonladder van do, of kortweg do groot. De halve tonen zijn aangeduid als een groot teken tussen de 2 toontrappen. Figuur 2.3: Grote tertstoonladder: voorbeeld op do. oor kleine tertstoonladders bestaan er drie varianten. n Figuur 2.4 zien we de drie varianten van de kleine tertstoonladder van la, of kortweg la klein.

14 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 8 Figuur 2.4: De drie varianten van de kleine tertstoonladder: voorbeeld op la. Oude wijze = antieke wijze = eolische wijze: de halve tonen liggen tussen en en tussen en. Tussen de overige graden ligt telkens een hele toon. Harmonische wijze: Deze wijze is dezelfde als de oude wijze, maar graad wordt met een halve toon verhoogd. Deze verhoging (meestal een kruis of herstellingsteken) wordt niet aan de voortekening genoteerd, maar wel als toevallig wijzigingsteken in de loop van het stuk. Als gevolg van deze verhoging, is er een extra halve toon tussen en. Tussen en ligt nu een vermeerderde secunde (= een secunde bestaande uit drie halve tonen in plaats van de gewoonlijke één of twee halve tonen). Melodische wijze: Ook deze wijze is dezelfde als de oude wijze, maar hier worden graad en graad beide met een halve toon verhoogd. Deze wijze wordt enkel stijgend gebruikt, en niet dalend. Ook deze verhogingen worden als toevallig wijzigingsteken genoteerd, en niet aan de voortekening. Door de verhoging van de zevende graad, ligt er ook bij deze wijze een halve toon tussen en. Doordat ook de zesde graad verhoogd is, ligt er geen vermeerderde secunde meer tussen en, en is de halve toon tussen en een hele toon geworden. De toontrappen hebben ook elk een eigen naam. Tabel 2.1 geeft de benaming voor elk van de toontrappen.

15 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 9 Toontrap Benaming Tonica Boventonica Mediant Subdominant Dominant Bovendominant Leidtoon of ondertonica Tabel 2.1: Benaming van de 7 toontrappen Merk op dat er voor de zevende toontrap twee benamingen zijn. De benaming leidtoon gebruiken we wanneer er een halve toon is tussen toontrap en toontrap. Dit is het geval bij een grote tertstoonladder, en bij de harmonische en melodische wijze van de kleine tertstoonladder. De leidtoon vraagt er als het ware om gevolgd te worden door de tonica, de leidtoon leidt dus naar de tonica. Bij de oude wijze van de kleine tertstoonladder, is er echter een hele toon tussen de zevende en de eerste toontrap. n dit geval leidt de zevende toontrap niet naar de tonica, en spreken we van een ondertonica. n de harmonie gebruikt men voor kleine tertstoonladders steeds de harmonische wijze. Bij harmonisaties in een kleine tertstoonladder moet men er dus over waken dat de zevende graad steeds met een halve toon verhoogd is Akkoorden Een akkoord is een samenklank die ontstaat door 2 of meer tertsen op elkaar te stapelen. De noot waarop het akkoord gebouwd wordt, noemen we de grondnoot. Naargelang het aantal noten waaruit ze bestaan, kunnen we volgende soorten akkoorden onderscheiden: Drieklanken of kwintakkoorden zijn een opeenstapeling van twee tertsen. Ze bestaan uit de grondnoot met daarop de terts en de kwint, bvb. do - mi - sol. ierklanken of septiemakkoorden zijn een opeenstapeling van drie tertsen. Ze bestaan uit de grondnoot met daarop de terts, de kwint en de septime, bvb. do - mi - sol - si. ijfklanken of none-akkoorden zijn een opeenstapeling van vier tertsen. Ze bestaan uit de grondnoot met daarop de terts, de kwint, de septime en de none, bvb. do - mi - sol - si - re.

16 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 10 Figuur 2.: Kwintakkoord, septiemakkoord en none-akkoord met do als grondnoot. Bij de opbouw van akkoorden moet men steeds binnen de toonaard blijven, dus het kwintakkoord op re is in do groot re - fa - la, maar in re groot re - fa # - la. Aangezien none-akkoorden een vrij gevorderd concept zijn, beperkt Ramo zich tot kwintakkoorden en septiemakkoorden. n tonale muziek geldt ook voor de akkoorden dat sommige een belangrijkere functie hebben dan andere. Net zoals de tonicanoot, heeft ook de tonicadrieklank (de drieklank met de tonica als grondnoot) een centrale functie. De subdominantdrieklank en de dominantdrieklank (resp. de drieklanken met toontrappen en als grondnoot) hebben ook een belangrijke rol, terwijl de overige drieklanken van minder groot belang zijn. Daarom noemt men de akkoorden op, en de hoofdakkoorden en de drieklanken op,, en de nevenakkoorden. Aan de hand van een Romeins cijfer kunnen we de toontrap van de grondnoot noteren onder het akkoord. n Figuur 2. zien we de hoofdakkoorden en nevenakkoorden in do groot en la klein. Bemerk ook de verhoging van de zevende graad bij de akkoorden in la klein. Figuur 2.: Hoofdakkoorden en nevenakkoorden in do groot (boven) en la klein (onder) Realisaties van akkoorden We hebben eerder al gezien dat de harmonie vierstemmig geschreven wordt. We moeten dus aan elke stem een akkoordnoot toekennen in een bepaald octaaf. Hiervoor zijn er verschillende mogelijkheden. Een toekenning van de akkoordnoten aan de 4 stemmen

17 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 11 noemen we een realisatie van het akkoord. Figuur 2.7 geeft (niet-uitputtend) enkele mogelijke realisaties van het tonica-akkoord in do groot. Merk op dat het hier steeds om hetzelfde akkoord gaat. Figuur 2.7: Enkele mogelijke realisaties van het tonica-akkoord in do groot. n het geval van een drieklank zijn er maar 3 noten, maar we moeten aan 4 stemmen een noot toekennen. Eén van de akkoordnoten zal dus 2x voorkomen. We spreken dan van een verdubbeling van de grondnoot, de terts of de kwint van het akkoord. Wanneer de noten in de drie bovenstemmen zo dicht tegen elkaar liggen dat er geen akkoordnoot meer tussen kan, spreken we van enge ligging. Wanneer er telkens een akkoordnoot tussen gelaten wordt, ligt het akkoord in wijde ligging. Wanneer tussen sopraan en alt nog een akkoordnoot kan tussengevoegd worden maar niet tussen alt en tenor (of omgekeerd), spreken we van gemengde ligging. Bij elk van deze liggingen wordt de afstand tussen bas en tenor niet in rekening genomen. n Figuur 2.8 zijn enkele voorbeelden weergegeven van de drie liggingen. De akkoordnoten die bij wijde of gemengde ligging tussen twee stemmen zouden kunnen geplaatst worden, zijn weergegeven als zwarte noten zonder stok. Figuur 2.8: Enge, wijde en gemengde ligging van het akkoord in do groot Omkeringen Tot nu toe hebben we steeds de grondnoot in de bas genoteerd. Het akkoord ligt dan in grondligging. Wanneer een andere noot dan de grondnoot in de bas ligt, is er sprake

18 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 12 van een omkering van het akkoord. Wanneer de terts in de bas ligt, is dit de eerste omkering. Wanneer de kwint in de bas ligt, is dit de tweede omkering. n het geval van septiemakkoorden is er ook nog een derde omkering, waarbij de septime in de bas ligt. Als voorbeeld bekijken we het tonica-akkoord van do groot. De grondnoot is hier do. Wanneer do in de bas ligt, ligt het akkoord dus in grondligging. Een terts boven de grondnoot vinden we de noot mi, dus bij de eerste omkering ligt mi in de bas. Op analoge wijze vinden we dat bij de tweede omkering sol in de bas ligt, en bij de derde omkering si. Elke omkering heeft ook zijn eigen benaming en notatie. Tabel 2.2 geeft een overzicht van de verschillende omkeringen. Onder ligging verstaan we hier de grondligging of een omkering van het akkoord, niet te verwarren met de enge, wijde en gemengde ligging uit de vorige sectie. De polyfonie is het aantal noten in het akkoord, dus 3 voor een drieklank en 4 voor een vierklank. Polyfonie Ligging Basnoot Naam Notatie 3 grondligging grondnoot kwintakkoord 3 eerste omkering terts sextakkoord 3 tweede omkering kwint kwartsextakkoord 4 grondligging grondnoot dominant septiemakkoord 7 4 eerste omkering terts kwintsextakkoord 4 tweede omkering kwint tertskwartakkoord 4 derde omkering septime secundeakkoord 2 Tabel 2.2: Overzicht van de omkeringen De notatie in Arabische cijfers die hier gebruikt wordt, legt dus de polyfonie en de ligging van het akkoord ondubbelzinnig vast. We noemen deze aanduiding de becijfering van het akkoord. De getallen die gebruikt worden in de becijfering komen overeen met de intervallen die in de naam van het akkoord voorkomen. Bijvoorbeeld bij een kwartsextakkoord in do groot met do als grondnoot vinden we sol in de bas, en do, mi en sol in de bovenstemmen. De benaming kwartsextakkoord is afkomstig van het feit dat in de bovenstemmen, naast een verdubbeling van de basnoot sol, de kwart boven de basnoot (do) en de sext boven de basnoot (mi) voorkomen. Doordat een sext een interval is dat uit noten bestaat, en een kwart een interval dat uit 4 noten bestaat, komen we aan de notatie 4. Er bestaan nog andere notaties dan de notatie die we hier voorstellen. n Frankrijk wordt een andere notatie gebruikt voor de septiemakkoorden, en in jazz-theorieboeken gebruikt men totaal andere akkoordsymbolen. n deze tekst en in Ramo zullen we ons echter steeds houden aan de notatie uit Tabel 2.2.

19 HOOFDSTUK 2. NLEDNG TOT DE HARMONE Beschrijvingen Een toontrap, genoteerd met een Romeins cijfer, en een becijfering, genoteerd met één of twee Arabische cijfers, leggen een akkoord en zijn ligging ondubbelzinnig vast. De combinatie van een toontrap en een becijfering, noemen we een beschrijving van een akkoord. De becijfering wordt steeds boven de toontrap genoteerd. n Figuur 2.9 zien we enkele voorbeelden van akkoorden met hun beschrijvingen. Merk op dat er ook per beschrijving verschillende realisaties mogelijk zijn. Figuur 2.9: Akkoorden met hun beschrijvingen (in do groot) Beweging De manier waarop twee stemmen bewegen ten opzichte van elkaar is ook belangrijk in de harmonie. We onderscheiden drie soorten bewegingen: Gelijke beweging: beide stemmen stijgen of beide stemmen dalen. Tegenbeweging: de ene stem stijgt en de andere stem daalt. Zijdelingse beweging: één stem blijft liggen en de andere stem stijgt of daalt. Men streeft meestal naar zoveel mogelijk tegenbeweging. Figuur 2.10: De drie soorten beweging tussen twee stemmen.

20 HOOFDSTUK 2. NLEDNG TOT DE HARMONE Cadenzen Een cadens is een opeenvolging van akkoorden die de toonaard bevestigt. Ze worden gebruikt aan het einde van een stuk, of aan het einde van een muzikale zin van een stuk. We beperken ons hier tot de belangrijkste soorten cadenzen. De volmaakte cadens is een - verbinding. Deze verbinding geeft een zeer duidelijk slotgevoel. Het is dan ook de cadens bij uitstek om een stuk mee af te sluiten. De plagale cadens is een - verbinding. Deze cadens wordt ook gebruikt aan het einde van een stuk, en wordt bijna altijd voorafgegaan door een volmaakte cadens. De gebroken cadens is een - verbinding. Deze cadens wordt nooit gebruikt aan het denitieve slot van een stuk, maar wel aan het eind van een deel van een stuk. Deze cadens klinkt alsof het slot eraan komt, maar doordat er geen een maar akkoord volgt, blijkt het slot toch nog even op zich te laten wachten. Om deze reden wordt de gebroken cadens soms ook valse cadens of bedrieglijke cadens genoemd. De halve cadens is een tijdelijk rustpunt op het dominant akkoord. Deze cadens wordt gebruikt om een deel van een stuk dat nog niet gedaan is tijdelijk neer te leggen. Een volmaakte cadens wordt vaak voorafgegaan door een akkoord met subdominantfunctie (een akkoord op toontrap of ), hoewel dit niet verplicht is. De volledige verbinding is dan bvb Op dezelfde manier kan ook een gebroken cadens of een halve cadens voorafgegaan worden door een subdominant. n Figuur 2.11 zien we de verschillende soorten cadenzen, waarbij de volmaakte, gebroken en halve cadens voorafgegaan worden door een subdominant. Aangezien cadenzen een punt van rust zijn in de muziek, kunnen we ze vergelijken met leestekens in een tekst. Een volmaakte cadens komt dan overeen met een punt aan het einde van een zin, terwijl een halve cadens of gebroken cadens overeenkomt met een komma.

21 HOOFDSTUK 2. NLEDNG TOT DE HARMONE Modulaties Figuur 2.11: Cadenzen in do groot. Wanneer een muziekstuk van de ene toonaard naar de andere overgaat, noemen we dit een modulatie. n Ramo gebruiken we enkel de diatonische modulatie. Het is niet wenselijk dat een muziekstuk zeer abrupt van de ene toonaard naar de andere overgaat. Daarom is er bij een diatonische modulatie steeds één akkoord dat zowel in de eerste toonaard als in de tweede toonaard kan voorkomen zonder toonaardvreemde noten te bevatten. We noemen dit akkoord het spilakkoord. Dit spilakkoord wordt dan beschreven met 2 verschillende toontrappen, één voor elke toonaard. Wanneer we bvb. moduleren van do groot naar sol groot, kan de drieklank do - mi - sol als spilakkoord dienen, want de noten in deze drieklank komen in beide toonaarden voor. n do groot is de beschrijving van deze drieklank, en in sol groot is de beschrijving. Merk op dat een spilakkoord 2 verschillende toontrappen heeft, maar dat de becijfering wel steeds gelijk blijft. Om de modulatie te bevestigen, laat men na een spilakkoord best zo snel mogelijk de noten horen uit de nieuwe toonaard die in de vorige toonaard niet voorkwamen. Dit gebeurt vaak door middel van een cadens, al dan niet voorafgegaan door een subdominant. Figuur 2.12: Modulatie van do groot naar sol groot.

22 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 1 2. Harmonieregels Er bestaan heel veel verschillende harmonieregels en in Ramo zijn er ook al heel wat regels geïmplementeerd. Sommige regels daarvan zijn van fundamenteel belang, terwijl andere zich op details richten die minder vaak voorkomen. n deze sectie willen we een overzicht geven van de soorten regels die er bestaan, en dit illustreren met enkele voorbeelden. Een volledig overzicht van de geïmplementeerde regels in Ramo is te vinden in de thesis van Wouter Rogiers ([23], appendix A) Akkoordregels De akkoordregels zijn de verticale regels. Ze hebben betrekking op de 4 noten die een akkoord realiseren. Bij het evalueren van een akkoordregel, moeten we dus enkel het akkoord zelf bekijken en niet de akkoorden die eraan voorafgaan of erop volgen. Enkele voorbeelden: Stembereik: Een stem mag de grenzen van zijn stembereik niet overschrijden. Stemkruising: Een lagere stem mag geen noot toegewezen krijgen die hoger is dan een noot in een hogere stem. Afstand tussen stemmen: Het interval tussen sopraan en alt, en tussen alt en tenor, mag niet groter zijn dan een octaaf. Deze beperking geldt niet voor het interval tussen tenor en bas. Geen akkoordvreemde noten: Geen enkele stem mag een noot bevatten die niet tot het akkoord behoort. erdubbeling: Naargelang de ligging van het akkoord, mogen of moeten bepaalde noten wel of niet verdubbeld worden. Bvb. bij hoofdakkoorden (akkoorden op toontrappen, en ) in grondligging moet de grondnoot verdubbeld worden. Figuur 2.13: Enkele overtredingen van akkoordregels

23 HOOFDSTUK 2. NLEDNG TOT DE HARMONE Melodieregels De melodieregels zijn de horizontale regels. We kunnen deze stem per stem evalueren, zonder rekening te houden met de andere stemmen. Enkele voorbeelden: Leidtoon: Wanneer de leidtoon (de zevende toontrap van de toonladder) voorkomt in een stem, moet de volgende noot in diezelfde stem de tonica zijn. Tritonus: Een vermeerderde kwart (tritonus genoemd omdat een vermeerderde kwart uit drie hele tonen bestaat) tussen twee opeenvolgende noten in dezelfde stem is verboden. n Figuur 2.14 zien we een voorbeeld van een tritonus in de sopraan. ermeerderde secunde: Een vermeerderde secunde tussen twee opeenvolgende noten in dezelfde stem is verboden. Bij grote tertstoonladders kan dit niet voorkomen. Bij de harmonische kleine tertstoonladder moet men hier wel op letten, omdat er dan tussen en een vermeerderde secunde ligt (zie 2.4.2) Figuur 2.14: ermeerderde kwart in de sopraanstem erbindingsregels De verbindingsregels bepalen hoe akkoorden en hun realisaties met elkaar mogen verbonden worden. Een eerste soort verbindingsregels houdt enkel rekening met de beschrijvingen: Bepaalde beschrijvingen mogen niet met elkaar verbonden worden. De belangrijkste verboden verbinding is -, hoewel deze in de popmuziek wel vaak gebruikt wordt. Andere verboden verbindingen zijn bvb. -, -, -, -, -, - en -, ongeacht de becijfering.

24 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 18 Een tweede soort verbindingsregels heeft betrekking op de noten in de realisaties van meerdere opeenvolgende akkoorden. Dit zijn dus zowel horizontale als verticale regels. Hierbij kan al dan niet rekening gehouden worden met de beschrijvingen. Enkele voorbeelden: Stemoverschrijding: Een noot in een bepaalde stem mag in diezelfde stem niet gevolgd worden door een noot die hoger (of lager) ligt dan een noot uit een hogere (of lagere) stem in het eerste akkoord. Tegenbeweging: Sommige verbindingen eisen dat de 3 bovenstemmen tegenbeweging maken met de bas, bvb. de verbinding -. Parallelle primen, kwinten en octaven: Wanneer het gereduceerde interval (d.i. het interval modulo een octaaf) tussen twee stemmen een kwint is, mag het gereduceerde interval tussen diezelfde stemmen in het volgende akkoord niet weer een kwint zijn, behalve wanneer de betreende stemmen blijven liggen. Hetzelfde geldt voor primen (gelijkklanken, bvb. sol - sol op dezelfde toonhoogte) en octaven. Dit is één van de belangrijkste regels uit de harmonie. Een overtreding op deze regel wordt bijna altijd als een ernstige fout beschouwd. n Figuur 2.1 zien we een voorbeeld van parallelle kwinten. Figuur 2.1: oorbeeld van parellelle kwinten 2..4 Metrumregels Dit zijn akkoordregels, melodieregels of verbindingsregels die rekening houden met de positie van de akkoorden binnen hun maat. Het kan bvb. van belang zijn of een akkoord op een sterke of op een zwakke tel komt. Hoewel het in de muziektheorie geen ociële benaming is, hebben we regels van dit type verzameld onder de naam metrumregels. Enkele voorbeelden van metrumregels:

25 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 19 Gesyncopeerde harmonieën: Een beschrijving mag niet op een lichte tel starten en op een zware tel verdergezet worden. n Figuur 2.1 zien we een gesyncopeerde harmonie waarbij het dominant akkoord op de tweede (lichte) tel start, en doorgaat op de derde (sterke) tel. Nieuwe beschrijving na maatstreep: Bij het begin van een maat moet een nieuwe beschrijving begonnen worden. Figuur 2.1: Gesyncopeerde harmonie Ook veel regels in verband met kwartsextakkoorden (drieklanken waarbij de kwint in de bas ligt, zie 2.4.) vallen onder deze categorie. n tegenstelling tot de andere liggingen, is het gebruik van kwartsextakkoorden slechts in een aantal specieke situaties toegelaten. n Ramo zijn enkel de volgende mogelijkheden toegelaten: oorslagakkoord: Kwartsextakkoord op een sterke tel, dat gevolgd wordt door het kwintakkoord op de toontrap een kwint hoger, bvb oorslagakkoorden worden vaak gebruikt in cadenzen. Een volmaakte cadens kan er dan bvb. uitzien als Wisselakkoord: Kwartsextakkoord op een lichte tel, voorafgegaan en gevolgd door het kwintakkoord op de toontrap een kwint hoger, bvb Wisselakkoorden worden vaak gebruikt als afwisseling bij een lang aangehouden basnoot. Doorgangsakkoord: Kwartsextakkoord op een lichte tel, waarbij de bas als een trapje stijgt of daalt in secunden. Een doorgangsakkoord mag slechts door zeer specieke beschrijvingen voorafgegaan en gevolgd worden. We gaan hier in deze

26 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 20 tekst niet in detail op in, een gedetailleerd overzicht is te vinden in [23], hoofdstuk 1. Een voorbeeld van een mogelijke verbinding is Figuur 2.17: Correct gebruik van kwartsextakkoorden. 2. Harmonieopgaven Tot slot van dit hoofdstuk bespreken we nog enkele typische opgaven zoals die in harmoniecursussen gegeven worden. Deze zullen in Hoofdstuk 8 ook de meest voor de hand liggende input zijn voor de algoritmen in Ramo die de oefeningen proberen op te lossen Harmoniseren van een bas met beschrijvingen De eenvoudigste oefening is de bas met beschrijvingen. n de opgave is dan de basstem volledig ingevuld, terwijl de andere 3 stemmen niet ingevuld zijn. Ook alle beschrijvingen zijn gegeven. De leerling weet dus voor elke basnoot welk akkoord er moet komen en in welke ligging. De leerling moet dan enkel nog de bovenste 3 stemmen invullen, volgens de harmonieregels uiteraard, en zoveel mogelijk voor een melodieuze sopraanstem zorgen. n Figuur 2.18 zien we een voorbeeld van een dergelijke opgave en een van de mogelijke oplossingen Harmoniseren van een bas zonder beschrijvingen ets moeilijker wordt het wanneer de basstem gegeven is, maar de beschrijvingen nog door de leerling moeten ingevuld worden. De leerling moet dan zelf de meest geschikte

27 HOOFDSTUK 2. NLEDNG TOT DE HARMONE 21 Figuur 2.18: Opgave met gegeven bas en beschrijvingen (boven) + mogelijke oplossing (onder) beschrijvingen kiezen. Het aantal mogelijke beschrijvingen per basnoot is wel niet zo groot. Daarnaast moeten ook bij deze oefening de drie bovenstemmen ingevuld worden volgens de harmonieregels en moet er aandacht besteed worden aan de sopraan Harmoniseren van een sopraan Bij deze oefening is enkel de sopraanstem gegeven. De leerling moet dan de tenor, alt, bas en de beschrijvingen invullen. Hierbij zijn er meestal vrij veel mogelijke beschrijvingen per noot in de sopraan. De leerling moet dus ook zelf bepalen welke cadenzen er op welke plaatsen komen. Dit zijn de moeilijkste oefeningen, maar tegelijk ook de interessantste, omdat de leerling in het harmoniseren van een sopraan veel meer creativiteit kwijt kan dan in het harmoniseren van een bas.

28 Hoofdstuk 3 Het programma Ramo 3.1 Bedoeling Ramo werd oorspronkelijk ontwikkeld als een interactieve harmonietrainer. Leerlingen moesten hun werk kunnen invoeren in het programma, en het programma zou de fouten in de oefening aanduiden. Op die manier kon de docent ontlast worden van het telkens opnieuw verbeteren van dezelfde elementaire fouten. Het programma was in de eerste plaats bedoeld voor conservatoriumstudenten, maar zou even goed bruikbaar kunnen zijn voor leerlingen die harmonie volgen aan een muziekacademie. n deze thesis is het de bedoeling verder te gaan, en Ramo ook zelf de opgaven te laten oplossen. Om een aantal keuzes te kunnen verantwoorden, geven we in de volgende paragrafen een beknopt overzicht van het verloop van de ontwikkeling tot nu toe. 3.2 Het oorspronkelijke Ramo programma Bart an Lysebetten en Wouter Rogiers schreven de eerste versie van Ramo in het academiejaar Het programma werd geschreven in Java en maakt gebruik van XML om bestanden op te slaan. Ramo bestond in feite uit 3 verschillende applicaties: één voor de student, één voor de docent, en één waarmee harmonieregels kunnen gegroepeerd worden Student, docent en regelgroepeerder We bespreken hier kort de mogelijkheden van de drie deelapplicaties van het oorspronkelijke programma. Eerst en vooral bespreken we de versie voor de student. Een belangrijk onderdeel van de versie van Ramo voor de student is de noteneditor. Hiermee kan de student zijn oplossing voor een opgave invoeren. Het muziekblad wordt 22

29 HOOFDSTUK 3. HET PROGRAMMA RAMO 23 door de noteneditor opgevat als één lange horizontale notenbalk, waaronder de toonaarden en de beschrijvingen aangegeven zijn. erticaal wordt het muziekblad ingedeeld in harmonische cellen. Dit zijn groepen van 4 noten die gelijktijdig klinken. Deze indeling is mogelijk doordat de stemvoering homoritmisch is: alle stemmen hebben hetzelfde ritme. Een muziekblad kan opgeslagen worden als een *.ramo bestand. n een regelbestand (*.rl bestand) zijn de regels opgeslagen waaraan de oplossing moet voldoen. Na een dergelijk regelbestand ingeladen te hebben, kan de student zijn oplossing checken. ndien er overtredingen zijn, verschijnt dan onderaan in beeld een lijst met de gemaakte fouten. Wanneer de student één van deze fouten uit de lijst aanklikt, wordt de fout soms ook in rood aangeduid op de partituur, bvb. door één of meer noten te omcirkelen of door één of meer akkoorden te omkaderen. erder heeft de student ook nog de mogelijkheid zijn muziekblad af te spelen. n Figuur 3.1 zien we de GU voor de student met de noteneditor, de lijst met overtredingen en een grasche aanduiding voor één van de fouten. Figuur 3.1: GU voor de student Een typische use case (= opeenvolging van gebeurtenissen in een bepaalde volgorde die samen een zinvolle toepassing van het systeem vormen) voor de student is de volgende: 1. De student opent een *.ramo bestand met de opgave die door de docent werd opgesteld. 2. De student voert zijn oplossing in met behulp van de noteneditor. 3. De student laadt het *.rl bestand in met de regels waaraan moet voldaan worden.

30 HOOFDSTUK 3. HET PROGRAMMA RAMO De student laat zijn oplossing controleren.. De student bekijkt de eventuele fouten en brengt verbeteringen aan waar nodig.. De student slaat zijn oplossing op in een *.ramo bestand. De tweede deelapplicatie is de versie voor de docent. Deze verschilt niet veel van die voor de student. Alle mogelijkheden voor de student zijn bij de docent ook aanwezig, maar de docent heeft nog een aantal extra mogelijkheden. Zo kan hij bvb. bepaalde noten of een hele stem van een opgave vast zetten. De student kan in zijn oplossing deze noten dan niet wijzigen. Ook kan de docent de voortekening van de opgave bepalen, en maten toevoegen of verwijderen. Ten slotte is er nog de regelgroepeerder. n de oorspronkelijke versie van Ramo is een vaste set van regels geïmplementeerd. De gebruiker kan hier zelf geen regels aan toevoegen. Wel kan de gebruiker een subset van deze regels speciceren met behulp van de regelgroepeerder. Hiermee kan men een regelbestand aanmaken dat vervolgens in de applicatie voor student of docent kan ingeladen worden om muziekbladen te controleren volgens deze regels. Figuur 3.2: De regelgroepeerder uit het oorspronkelijke programma GU en regelsysteem We kunnen het systeem enerzijds bekijken als verdeeld in 3 componenten, namelijk de 3 applicaties zoals hierboven beschreven. Maar zoals uiteengezet in [2] bestaat er niet zoiets als dé structuur van een systeem, en kan een systeem steeds op verschillende manieren in componenten verdeeld worden. Een andere kijk op het systeem levert ons twee componenten: enerzijds de grasche gebruikersinterface (GU) en anderzijds het

31 HOOFDSTUK 3. HET PROGRAMMA RAMO 2 regelsysteem. De GU zorgt voor de interactie met de gebruiker: het tonen en editeren van muziekbladen, het aanduiden van fouten enz. Het regelsysteem zorgt voor de interne logica en is verantwoordelijk voor het evalueren van een muziekblad. De regels in het regelsysteem zijn proceduraal uitgedrukt, wat betekent dat ze uitgedrukt worden als uitvoerbare code. Elke regel wordt geëvalueerd door een check methode uit te voeren die het muziekblad of (een deel ervan) controleert en een boolean retourneert die aangeeft of aan de regel voldaan is. n deze versie van het regelsysteem zijn de regels hardgecodeerd. Meestal is er één klasse per regel. Soms zijn er van één klasse ook verschillende instanties mogelijk die dan elk verschillende regels voorstellen. De regels voor verboden verbindingen zijn bvb. allemaal een instantie van dezelfde klasse. n elk geval legt het feit dat de regels hardgecodeerd zijn beperkingen op aan het systeem, en zou een meer exibel regelsysteem wenselijk zijn. 3.3 Het nieuwe regelsysteem n het academiejaar werd een nieuwe versie van het regelsysteem geïmplementeerd door Arne Brasseur. Het basisidee hierbij was dat het mechanisme (hóe regels evalueren) moet gescheiden worden van het beleid (wélke regels evalueren). Het beleid verandert doorgaans immers veel sneller dan het mechanisme. Er werd ook een nieuwe regeleditor geïmplementeerd. Hierin kan de gebruiker zelf beschrijvingen van regels opstellen, en instanties van deze regels maken, en dit alles opslaan in een bestandsformaat in XML. Er zijn dus geen hardgecodeerde regels meer Regelbeschrijvingen en instanties Figuur 3.3 toont hoe een beschrijving van een regel in de nieuwe regeleditor er uitziet. De regels worden zoals in het vorige regelsysteem nog steeds proceduraal uitgedrukt. Bij het evalueren van de regel wordt de code uitgevoerd die door de gebruiker ingevoerd wordt. De gebruiker kan ook een aantal parameters aanmaken om in de code te gebruiken. Deze parameters kunnen van het type int of String zijn, maar er zijn ook parametertypes voorzien die akkoorden, toontrappen, becijferingen, noten, intervallen enz. voorstellen. De gebruiker kan ook een tekstuele foutboodschap opgeven, waarin hij gebruik kan maken van de gedenieerde parameters door hun naam tussen accolades te plaatsen. Er kan een foutboodschap voor verschillende talen opgegeven worden, bvb. Nederlands. De regel die in het voorbeeld beschreven wordt, is de regel Afstand tussen stemmen uit 2..1 die bepaalt dat de afstand tussen sopraan en alt en tussen alt en tenor niet groter dan een octaaf mag zijn. n het voorbeeld kan men echter zien dat de beschrijving niet vastlegt over welke stemmen en over welk interval het gaat. De parameters

32 HOOFDSTUK 3. HET PROGRAMMA RAMO 2 Figuur 3.3: Beschrijving van een regel in de nieuwe regeleditor upperoice en loweroice bepalen de stemmen, en de parameter maxnterval bepaalt het maximum interval dat tussen upperoice en loweroice mag liggen. Het is duidelijk dat de beschrijving van de regel niet op zichzelf kan gebruikt worden. De parameters moeten nog concrete waarden krijgen. Daarvoor moeten instanties van de regels aangemaakt worden die aan de parameters een concrete waarde geven. Figuur 3.4 geeft een voorbeeld van een dergelijke instantie, waarbij de afstand tussen alt en tenor niet groter mag zijn dan een octaaf. Figuur 3.4: nstantie van een regel in de nieuwe regeleditor Op die manier kan de gebruiker al de gewenste regelbeschrijvingen zelf aanmaken en de nodige instanties creëren. Enkel instanties van regels kunnen uitgevoerd worden,

33 HOOFDSTUK 3. HET PROGRAMMA RAMO 27 dus ook voor regelbeschrijvingen zonder parameters moet een instantie aangemaakt worden. Zowel voor de beschrijvingen van regels als voor de instanties van regels is een bestandsformaat in XML gedenieerd Uitvoeren van regels Om de regels te evalueren werd gebruik gemaakt van het Bean Scripting Framework (BSF ). Dit framework maakt het gebruik van scripting mogelijk in java, wat betekent dat code onmiddellijk uitgevoerd kan worden zonder deze eerst te compileren. Die code kan geschreven zijn in een scriptingtaal zoals JavaScript of Python. De code wordt dan at runtime geïnterpreteerd. Aangezien Java normaal niet als een geïnterpreteerde taal gebruikt wordt, moeten we om dit ook voor Java mogelijk te maken de hulp inroepen van de BeanShell, een interpreter voor Java broncode. n theorie is het mogelijk de regels in de nieuwe regeleditor te speciceren in verschillende talen, maar in de praktijk is enkel Java voorzien Errortickets Telkens als een regel faalt, wordt een errorticket afgeleverd. Dit errorticket bevat tekstuele informatie over de fout en eventueel ook een grasche weergave. oor elke regelbeschrijving kan de gebruiker ook vastleggen welk soort errorticket er moet afgeleverd worden. Er zijn verschillende types mogelijk, die elk een eigen grasche weergave hebben zoals bvb. een cirkel rond een noot, een lijn, een kader rond cellen... ets gelijkaardig was in het oorspronkelijke programma ook al voorzien, maar was toen nog niet geïmplementeerd aan de hand van errortickets. Naargelang hun type hebben errortickets verschillende informatie nodig om zichzelf te kunnen tekenen. Een errorticket met enkel tekst heeft geen verdere informatie nodig. Een errorticket dat getekend wordt als een cirkeltje rond een noot moet weten in welke cel en in welke stem de noot moet omcirkeld worden, terwijl een errorticket dat getekend wordt als een kader rond cellen moet weten wat de startcel is en hoeveel cellen er omkaderd moeten worden. Deze informatie wordt meegegeven als parameters voor het errorticket. n Figuur 3. zien we het editorvenster voor een errorticket. Figuur 3.: Editorvenster voor een errorticket

34 HOOFDSTUK 3. HET PROGRAMMA RAMO Afweging tussen beide regelsystemen Uit het voorgaande is gebleken dat de recentste versie van het regelsysteem een duidelijk voordeel heeft op het oorspronkelijke regelsysteem, namelijk de exibiliteit. Bij de start van deze thesis was het dan ook de bedoeling met dit regelsysteem verder te werken. Dit regelsysteem bleek echter een belangrijk nadeel te hebben, namelijk de snelheid. Het evalueren van een muziekblad van 4 maten aan de hand van een regelset met 21 regels, duurde gemiddeld 00 à 700 milliseconden met uitschieters tot 2 seconden. Uit enkele tijdmetingen bleek dat het grootste deel van de tijd gespendeerd werd in de eval methode van de klasse BSFManager, de methode die voor het interpreteren van de code zorgt. De lage snelheid lag dus wel degelijk aan het Bean Scripting Framework. oor de use case beschreven in 3.2.1, dus de student die een opgave oplost en controleert, is dat geen onoverkomelijk nadeel. Maar voor de backtracking-algoritmen die wij in gedachten hadden, zouden zodanig veel checks nodig zijn dat de snelheid met dit regelsysteem absoluut onaanvaardbaar zou worden. Het oorspronkelijke regelsysteem daarentegen kon een muziekblad met dezelfde grootte evalueren in 1 milliseconden, en dit met een veel grotere regelset. n dit geval vonden we het dus verantwoord snelheid te verkiezen boven exibiliteit, en besloten we terug te keren naar het oude regelsysteem.

35 Hoofdstuk 4 Methoden voor algoritmische compositie 4.1 Algoritmische compositie Algoritmische compositie kan omschreven worden als een sequentie van bewerkingen om muzikale elementen in een eindig aantal stappen te combineren tot een muzikaal geheel [19]. n [1] vinden we nog een andere denitie, namelijk het gebruik van formele methoden om muziek te creëren met minimale menselijke interventie. Het is interessant te onderstrepen dat het hier niet noodzakelijk om computergegenereerde muziek gaat. Het idee van het formaliseren van het compositieproces is al eeuwenoud. Een voorbeeld hiervan is de canon. n zijn eenvoudigste vorm is dit een techniek waarbij de componist één melodie componeert en vervolgens aan de verschillende stemmen dezelfde melodie toekent, maar verschoven over een aantal tellen. Tijdens de vroegrenaissance ontwikkelde deze canontechniek zich tot een intellectueel spel. Zo zijn er bvb. canons waarbij de tweede stem de intervallen van de melodie omgekeerd uitvoert (canon in omkering), of waarbij de andere stemmen de duur van de noten proportioneel vergroten of verkleinen (proportiecanon), of waarbij elke stem de melodie een kwint hoger of lager inzet dan zijn voorganger en zo de kwintencirkel doorlopen wordt (cirkelcanon). De technieken die hier gebruikt worden kunnen we de algoritmen noemen die de componist gebruikt om zijn muziekwerk te creëren. Hierbij gebeurt een deel van het componeerwerk niet door menselijke creativiteit maar wel door het volgen van een algoritme. Bij algoritmische compositie wordt ook zeer vaak gebruik gemaakt van het toeval. Bepaalde beslissingen worden dan op willekeurige wijze genomen. Wolfgang Amadeus Mozart deed dit reeds in zijn Musikalisches Wurfelspiel (muzikaal dobbelspel). Door het gooien van een dobbelsteen werden een aantal vooraf gecomponeerde maten op willekeurige wijze aan elkaar geplakt. 29

36 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 30 Nog een voorbeeld van algoritmen in muziek is het serialisme (twintigste eeuw) waarin muzikale elementen in reeksen worden geplaatst, en vervolgens allerlei transformaties op deze reeksen gebeuren zoals omkering, spiegeling... Het zijn niet alleen de noten die in reeksen geplaatst worden, maar ook alle andere elementen zoals bvb. de klanksterkte en de gebruikte instrumenten. Het hoeft ons dan ook niet te verwonderen dat men na de uitvinding van de computer al snel geïnteresseerd was in manieren om de computer muziek te laten genereren. n de negentiende eeuw deed Ada Lovelace, die als pionier in de informatica het eerste programma schreef voor de analytical engine van Charles Babbage, reeds de volgende voorspelling: Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientic pieces of music of any degree of complexity or extent. [14] Om het automatisch componeren van muziek waar te maken, zijn al verschillende benaderingen geprobeerd, de ene al met meer succes dan de andere. n wat volgt beschrijven we een aantal van de reeds geprobeerde benaderingen. n het bijzonder besteden we aandacht aan constraint satisfaction problems met backtracking en genetische algoritmen en maken we een vergelijking tussen deze twee. We vermelden ook nog een aantal andere benaderingen. Tot slot zetten we kort onze eigen methode uiteen, die in de volgende hoofdstukken verder uitgewerkt wordt.

37 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Constraint satisfaction problem met backtracking Harmonisatie als een constraint satisfaction problem Het probleem van harmonisatie kan uitgedrukt worden als een constraint satisfaction problem (CSP). We geven eerst een denitie voor een CSP en gaan vervolgens na hoe dit gebruikt wordt voor harmonisatie. Denitie constraint satisfaction problem Een constraint satisfaction problem is een probleem waarbij een set S = { 1,..., m } van m variabelen waarbij elke variabele i waarden aanneemt uit een eindig domein D i een set C = {C 1, C 2,..., C n } van n restricties (constraints) op de waarden van deze variabelen gegeven zijn, en waarbij het de bedoeling is een waarde toe te kennen aan al deze variabelen op een zodanige manier dat aan alle constraints voldaan is. De constraints uit C beperken het aantal mogelijke combinaties van waarden die men kan toekennen aan de variabelen uit S. Soms wordt ook nog onderscheid gemaakt tussen hard constraints, restricties waaraan strikt moet voldaan worden, en soft constraints, waarbij dit niet verplicht is maar wel wenselijk. ariabelen, domein en constraints in het harmonisatieprobleem Noem g de grootte van het muziekblad uitgedrukt in aantal akkoorden. Bij het vierstemmige harmonisatieprobleem moet er aan 8 x g variabelen een waarde toegekend worden, elk met hun eigen domein. Per akkoord hebben we de volgende variabelen: Toontrap 1, met als domein {,,,,,, } (domeingrootte: 7) Toontrap 2, met als domein {,,,,,, } (domeingrootte: 7) Becijfering 1, met als domein {,, Becijfering 2, met als domein {,, 4, 7,, 4 3 4, 7,, 4 3, 2} (domeingrootte: 7), 2} (domeingrootte: 7) De sopraanstem, met als domein het bereik [do(0).. la(1)] (domeingrootte: 1)

38 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 32 De altstem, met als domein het bereik [sol(-1)..re(1)] (domeingrootte: ) De tenorstem, met als domein het bereik [do(-1)..la(0)] (domeingrootte: 1) De basstem, met als domein het bereik [fa(-2)..re(0)] (domeingrootte: 1) De domeingrootte voor sopraan, alt, tenor en bas werd bepaald door alle noten tussen de ondergrens en de bovengrens te tellen, inclusief hun varianten met (dubbel-)kruis en (dubbel-)mol, voor zover die de boven- en ondergrens respecteren. oor de sopraan is do#(1) dus geldig, maar la#(2) niet. Het totaal aantal combinaties voor één akkoord is dus het product van de grootte van al deze domeinen. Dit product P bedraagt P = = Het aantal mogelijkheden Q om een muziekblad van bvb. 1 akkoorden te harmoniseren bedraagt dan: Q = P 1 =, We hebben dus een gigantische zoekruimte, zelfs voor een muziekblad van maar 1 akkoorden. Gelukkig zijn lang niet alle combinaties zinvol. Het muziekblad moet namelijk voldoen aan de harmonieregels. We kunnen de harmonieregels dus beschouwen als de constraints die opgelegd worden aan deze variabelen. Door deze constraints wordt de zoekruimte al een heel stuk kleiner, hoewel ze nog steeds heel groot is. erder moeten we opmerken dat de opgave zelf uiteraard ook nog een aantal beperkingen oplegt. Wanneer bvb. de basstem gegeven is, kunnen we dit zien als extra constraints op de basstemvariabelen. Een andere mogelijkheid is dit als een verandering van domein te zien, waarbij elke basstemvariabele een domein krijgt met grootte 1. Probleem in twee niveaus We kunnen het harmonisatieprobleem op twee niveaus bekijken: op nootniveau en op akkoordniveau. F. Pachet [17, 18] benadrukt in meerdere artikels het belang hiervan. Bovenop de 8 hierboven beschreven variabelen (noten, toontrappen en becijferingen) moet volgens hem ook een akkoordvariabele beschouwd worden. Het probleem kan dan in twee delen opgelost worden. n de eerste stap houdt het algoritme enkel rekening met de constraints voor noten. Dit zijn de akkoordregels zoals bvb. de stemkruisingregel. n deze stap zoekt het algoritme naar combinaties van

39 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 33 de 8 variabelen die voldoen aan deze constraints. Op die manier wordt een domein opgesteld voor de akkoordvariabele. n de tweede stap worden dan de constraints tussen akkoorden geëvalueerd, zoals bvb. de regel van de parallelle kwinten. Pachet geeft twee argumenten voor deze methode. Een eerste argument is dat de zoekruimte hierdoor aanzienlijk verkleind wordt. De waarden in het opgestelde domein voor de akkoordvariabele voldoen reeds aan een aantal constraints. Dit aantal combinaties is dus veel kleiner dan de combinaties die we in de vorige paragraaf berekenden. Ter vergelijking: een experiment in Ramo waarbij voor een lege akkoordvariabele alle geldige instanties werden geteld leverde 7 mogelijkheden op in do groot. Een tweede argument is dat, om regels te kunnen evalueren die op meerdere akkoorden betrekking hebben, vaak alle noten in de cel al een waarde moeten hebben. Door deze manier van werken komen de inter-akkoordregels pas in het spel op het moment dat de akkoorden volledig ingevuld zijn, en ontstaan er geen problemen waarbij dergelijke regels moeten geëvalueerd worden op half ingevulde cellen.

40 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Backtracking Een veelgebruikte manier om een CSP op te lossen, is backtracking. We beschrijven hier eerst algemeen de werking van backtracking. n de volgende sectie bespreken we de mogelijkheden van backtracking voor harmonisatie. Basisidee Het basisidee van backtracking is dat elke mogelijke oplossing voor het probleem geprobeerd wordt, tot wanneer een geldige oplossing gevonden is, of tot wanneer er geen enkele oplossing meer is die men nog kan proberen. Het aantal mogelijke oplossingen moet dus eindig zijn, anders eindigt het algoritme nooit indien er geen oplossing is. Stel dat we aan 1 variabelen een waarde moeten toekennen. Het backtrackingalgoritme kent één voor één aan deze 1 variabelen een waarde toe. Er zijn dus 1 punten waar een keuze moet gemaakt worden. n harmonisatie kan deze keuze bvb. zijn Welke noot gaan we invullen in die stem in die cel? Het backtracking-algoritme kiest een waarde voor de variabele en gaat verder met de volgende stap waar een keuze moet gemaakt worden. Dit gebeurt meestal door een recursieve oproep. ndien de genomen keuze achteraf een slechte keuze blijkt te zijn, keert het backtracking-algoritme één stap terug en kiest een andere waarde voor de variabele. Zoekboom Door al deze keuzes ontstaat een zoekboom, die op een diepte-eerst manier doorzocht wordt. Figuur 4.1 illustreert de volgorde waarin een backtracking-algoritme een zoekboom doorzoekt. Figuur 4.1: Zoekboom in een backtracking-algoritme Testen van oplossingen De vraag is nu natuurlijk hoe we weten dat een keuze een slechte keuze was. Hiervoor worden er op alle oplossingen tests uitgevoerd. Wanneer we een volledige oplossing

41 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 3 hebben, zitten we in een blad van de zoekboom, en zijn de volgende resultaten van de test mogelijk: De oplossing is ongeldig: het algoritme zet een stap terug en zoekt verder. oorbeeld in harmonisatie: de oplossing bevat overtredingen op de harmonieregels. De oplossing is geldig: het algoritme retourneert de oplossing en stopt. oorbeeld in harmonisatie: de oplossing overtreedt geen enkele harmonieregel. Figuur 4.2 toont een voorbeeld van een geldige oplossing in de zoekboom, waarbij het algoritme stopt. Figuur 4.2: Geldige oplossing in een backtracking-algoritme Testen van deeloplossingen Het is vaak mogelijk een oplossing al af te wijzen wanneer nog maar een deel ervan gekend is. Daarom worden ook tests uitgevoerd op deeloplossingen, wanneer bvb. nog maar van de 1 variabelen ingevuld zijn. n dat geval zitten we in een interne top van de zoekboom en zijn volgende resultaten van de test mogelijk: De deeloplossing is ongeldig: op basis van wat we nu weten kan deze deeloplossing al zeker nooit meer tot een geldige oplossing leiden. Het heeft dan geen zin verder te zoeken in die tak van de zoekboom. Alle afstammelingen van deze deeloplossing zullen ook ongeldig zijn. Het algoritme zal dus onmiddellijk een stap terugzetten zonder de kinderen van de huidige top te evalueren. Deze techniek wordt pruning of snoeien genoemd, omdat men als het ware een deel van de zoekboom wegsnoeit. Hierdoor kunnen soms grote delen van de zoekruimte overgeslagen worden, waardoor het algoritme aanzienlijk versnelt. Figuur 4.3 illustreert het principe van snoeien. oorbeeld in harmonisatie: de huidige deeloplossing bevat reeds overtredingen op de harmonieregels. Wanneer men met deze oplossing verdergaat, zal elke oplossing die ervan afstamt diezelfde overtredingen bevatten.

42 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 3 Onzeker: de deeloplossing is niet ongeldig verklaard, en kan dus nog tot een geldige oplossing leiden. Aangezien de oplossing nog niet volledig is, kunnen we nu nog niet weten of er echt een geldige oplossing uit zal voortvloeien, maar het is tot nu toe nog steeds mogelijk. Het algoritme gaat dus verder met de kinderen van de huidige top in de zoekboom. oorbeeld in harmonisatie: in de huidige deeloplossing zijn geen overtredingen gevonden. Misschien leidt deze deeloplossing tot een geldige oplossing, misschien ook niet. Figuur 4.3: Snoeien van de zoekboom Deze tests worden heel vaak uitgevoerd. Het spreekt dus voor zich dat deze tests snel moeten kunnen uitgevoerd worden, bij voorkeur in constante tijd. ndien de tests teveel tijd innemen vertragen ze het algoritme, waardoor de versnelling door het snoeien misschien wel teniet wordt gedaan. Backtracking voor Constraint Satisfaction Problems Uit het voorgaande blijkt dat backtracking zeer geschikt is om een CSP op te lossen. Een backtracking-algoritme kent één voor één een waarde toe aan de variabelen uit het CSP. Het testen van een oplossing of deeloplossing gebeurt hier door na te gaan of aan de constraints voldaan is. Wanneer dus na het invullen van slechts een deel van de variabelen al één van de constraints geschonden is, zal het algoritme niet op dat spoor verdergaan.

43 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Backtracking voor algoritmische harmonisatie Backtracking wordt door onderzoekers als een van de belangrijkste methoden voor harmonisatie gezien. Er werd zelfs al een programmeertaal speciaal voor dit doel geschreven. Deze taal is geschreven door Ebcioglu (1988) en werd Backtracking Specication Language (BSL) genoemd. Ebcioglu gebruikte BSL om CHORAL te implementeren. Dit is een systeem voor harmonisatie van koralen 1 in de stijl van Johann Sebastian Bach. De input is een koraalmelodie en het systeem genereert aan de hand van 30 regels de middenstemmen en de bas. CHORAL is het eerste systeem voor automatische harmonisatie waarmee resultaten van hoge kwaliteit bekomen werden. Het werk van Ebcioglu is zeer invloedrijk en er wordt dan ook zeer vaak naar gerefereerd. Dit werk is hierop geen uitzondering. Een gelijkaardig systeem vinden we bij Pachet en Roy [17]. Zij schreven een framework genaamd BackTalk (Backtracking in SmallTalk). BackTalk is een extensie van Smalltalk om constraint satisfaction problems op een objectgeoriënteerde manier voor te stellen. Het framework voorziet één klasse waarmee variabelen voorgesteld worden en verschillende klassen om constraints voor te stellen. De CSP's worden opgelost door backtracking, vandaar de naam van het framework. n wat volgt, bespreken we een aantal interessante technieken die reeds geprobeerd zijn in combinatie met backtracking. Harmonisatieplan Door te werken volgens een harmonisatieplan kan het probleem op een gestructureerde manier opgelost worden. Een harmonisatieplan legt éérst alle beschrijvingen vast. Pas daarna worden de noten ingevuld. Zo heeft men meer controle over de akkoordkeuze dan wanneer men willekeurige beschrijvingen probeert en controleert of ze slagen. Men kan op die manier bvb. de cadenzen op voorhand vastleggen. Een ander voordeel is dat door de beschrijvingen op voorhand vast te leggen, het aantal mogelijke noten per stem drastisch gereduceerd wordt. Wanneer bvb. voor een bepaald akkoord de beschrijving in do groot is vastgelegd, zijn enkel nog de noten fa, la en do mogelijk (in verschillende octaven). Het aantal noten dat moet geprobeerd worden, is dus veel kleiner dan wanneer men alle noten zou moeten proberen. Een dergelijke benadering met een harmonisatieplan vinden we in het systeem COM- POzE van Henz et al. [13]. Onze ervaring is echter dat dit slechts in een beperkt aantal gevallen blijkt te werken (zie Hoofdstuk 8). 1 Religieuze melodieën voor koor, in de tijd van Bach meestal vierstemmig.

44 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 38 Productieregels voor beschrijvingen Wanneer al één of meerdere noten gegeven zijn, bvb. in de sopraan of bas, kan men in plaats van passief alle mogelijk beschrijvingen te proberen en te controleren welke er slagen, ook actief de mogelijke beschrijvingen genereren. Deze regels die zelf mogelijke waarden genereren noemen we productieregels. Wanneer bvb. in do groot een do in de sopraan staat, kan een productieregel bepalen dat enkel de drieklanken (fa-la-do), (la-do-mi) en (do-mi-sol) mogelijk zijn en hun omkeringen. Op deze manier verkleint het aantal mogelijkheden voor de beschrijvingen aanzienlijk, waardoor ook het aantal mogelijkheden voor de noten aanzienlijk vermindert. n dit voorbeeld, waarbij enkel drieklanken gebruikt worden, is bvb. al geen re of si meer mogelijk voor de noten. n [21] is een chord sequence generator beschreven die dergelijke productieregels voor beschrijvingen implementeert. Woordenboek Ramirez en Peralta [21] beschrijven een methode waarbij men om de beschrijvingen te kiezen het aantal gekende akkoordprogressies probeert te maximaliseren. Deze gekende progressies zijn opgeslagen in een woordenboek. Zo kan men vermijden dat eigenaardige progressies gekozen worden waar er een progressie mogelijk was die veel logischer is. Merk wel op dat deze gekende progressies niet noodzakelijk verplicht zijn volgens de harmonieregels. De gekende progressies mogen dus niet als hard constraints geïmplementeerd worden. Backjumping Backjumping is een variant op backtracking waarbij niet één, maar meerdere niveaus teruggekeerd wordt. De nog niet geprobeerde nakomelingen van de tussenliggende knopen worden dan niet meer geprobeerd. Als kan bewezen worden dat hierdoor geen geldige mogelijkheden verloren gaan, spreken we van een safe jump. Een safe jump komt de eciëntie ten goede, zonder de betrouwbaarheid van het algoritme te schaden. Figuur 4.4 illustreert het idee van backjumping. Backjumping is in het bijzonder bruikbaar voor regels die betrekking hebben op meer dan 2 cellen. Wanneer bvb. een regel die betrekking heeft op 3 akkoorden overtreden blijkt te zijn, kan het soms beter zijn meteen terug te keren naar het eerste akkoord van de drie in plaats van naar het tweede akkoord terug te keren. Men 'springt' dan twee stappen terug in plaats van één.

45 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 39 Figuur 4.4: Backjumping Ebcioglu (zie boven) implementeerde deze techniek in BSL en maakt er gebruik van in zijn CHORAL systeem. Hoewel dit zeker een nuttige techniek is, zullen we in Hoofdstuk 8 zien dat dit in Ramo niet nodig is. Heuristische regels Heuristische regels zijn in deze context regels die geen overtredingen op harmonieregels detecteren, maar die uit esthetische overwegingen bepalen of iets een goede keuze is. Ze kunnen dus geïmplementeerd worden als soft constraints. Heuristische regels geven een indicatie van wat er moet gebeuren als er meerdere mogelijkheden zijn die aan de hard constraints voldoen. oorbeelden van heuristische regels zijn criteria zoals Tegenbeweging tussen sopraan en bas is goed. Stapsgewijze beweging in de sopraan is goed. eel grote sprongen in sopraan of bas is niet goed. aak kennen deze heuristische regels een score toe aan de akkoordrealisaties die ze evalueren. Naargelang het belang van de heuristische regel, kan de waarde van de score groter of kleiner zijn. Straen Een gelijkaardige benadering als die in de vorige paragraaf vinden we bij Schottstaedt [24]. Zijn werk is gebaseerd op het traktaat Gradus ad Parnassum van Johann Joseph Fux. Omdat Fux veel van de regels in zijn traktaat slechts als richtlijnen bedoelde, moeten in het werk van Schottstaedt ook niet alle regels strikt gevolgd worden. Om het relatieve belang van de regels uit te drukken, kent hij aan elke regel een straf toe die bepaalt hoe erg het is als de regel overtreden wordt. Regels die strikt moeten gevolgd worden, krijgen een oneindig hoge straf. Op deze manier kan men ervoor zorgen dat de

46 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 40 strikte regels nooit overtreden worden, en dat als het niet anders kan wel andere regels overtreden worden, maar dan bij voorkeur diegene met de lichtste straf. De regel van de parallelle kwinten is een voorbeeld van een regel met een oneindige straf. De stembereikregel, die bepaalt dat stemmen binnen de grenzen van hun bereik moeten blijven, is een regel met een hoge straf maar geen oneindige straf. Als het echt niet anders kan, mag de stembereikregel in dit systeem dus overtreden worden. Omdat men wil kunnen snoeien zodra de straunctie te hoog wordt, is het van belang dat de straunctie monotoon is. Er zijn dus geen beloningen want die zouden de straunctie plots weer kunnen doen dalen.

47 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Genetische algoritmen Wat zijn genetische algoritmen Genetische algoritmen (GA) of evolutionaire algoritmen halen hun inspiratie in de natuur. Ze zijn een soort simulatie van het proces van evolutie en natuurlijke selectie van Charles Darwin (189). Ze werden voor het eerst gebruikt in de jaren '70 door John Holland. n een genetisch algoritme worden de mogelijke oplossingen voor een probleem voorgesteld als individuen in een populatie. Net zoals in de natuur is het ene individu beter aangepast aan zijn omgeving (tter) dan het andere, waardoor het proces van natuurlijke selectie kan plaatsvinden. Het algoritme start met een initiële populatie. Meestal zijn de individuen in deze populatie willekeurig gekozen. n elke stap van het algoritme worden een aantal individuen geselecteerd die kinderen krijgen. De kinderen ondergaan vervolgens kleine wijzigingen, mutaties genoemd, en worden toegevoegd aan de populatie. Om de grootte van de populatie in de hand te houden, worden ook een aantal individuen geselecteerd die moeten sterven en dus uit de populatie verwijderd worden. Dit proces wordt herhaald tot wanneer aan een zekere stopvoorwaarde voldaan is. Het algoritme kan bvb. stoppen na een bepaald aantal stappen, of wanneer alle individuen in de populatie aan elkaar gelijk zijn. n dat geval spreken we van convergentie. ndividuen De individuen, door Wiggins [27, 28] ook chromosomen genoemd, stellen zoals gezegd de mogelijke oplossingen van het probleem voor. Om de individuen voor te stellen, wordt vaak gebruik gemaakt van een codering, bvb. een binaire string of een karakterstring. Fitnessfunctie De tnessfunctie bepaalt de tness van een individu door een numerieke waarde toe te kennen aan de kwaliteit ervan. Elk individu heeft dus op elk moment zijn eigen tness. Elke stap van het algoritme streeft een zo hoog mogelijke tness van de individuen in de populatie na. n plaats van een tnessfunctie wordt soms ook een menselijke opinie gebruikt. n dat geval spreekt men van een interactief genetisch algoritme. Operatoren voor mutaties en crossover Een mutatie is een wijziging aan één individu uit de populatie. Wanneer we S de verzameling van alle mogelijke individuen noemen, is een operator voor mutatie een

48 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 42 unaire transformatie m van de vorm m : S S Crossover wordt gebruikt om meerdere individuen samen een kind te laten krijgen. Dit gebeurt door een nieuw individu te creëren dat eigenschappen heeft van alle ouders. n het beste geval is hierdoor dan een individu gecreëerd dat het beste van de ouders combineert. Het aantal ouders is naar analogie met de natuur vaak twee, maar crossover met meer dan twee ouders kan ook. Een operator voor crossover is dus een n-aire (n 2) transformatie c van de vorm c : S... S S Meestal zijn er meerdere operatoren voor mutatie en voor crossover. Bij mutatie of crossover moet dan op een of andere manier gekozen worden welke operator zal gebruikt worden. Men kan bvb. de operator willekeurig kiezen, waarbij elke operator een eigen kans heeft om gekozen te worden. Selectie De selectie van individuen is zeer belangrijk in een genetisch algoritme. Men moet de individuen selecteren die zich zullen voortplanten en ook diegene die uit de populatie verwijderd worden. De selectie gebeurt op basis van de tness van de individuen. Het is logisch om bij de selectie voorrang te geven aan de goede oplossingen voor het probleem, dus de individuen met een hoge tness, maar om te vermijden dat men in lokale optima vast geraakt, is het van belang dat men ook soms minder tte individuen de kans geeft. Om deze reden gebeurt de selectie meestal op basis van kansen. Hoe groter de tness van een individu, hoe groter de kans dat het individu gekozen wordt. ariaties op genetische algoritmen Op genetische algoritmen zijn allerlei variaties mogelijk. n plaats van de kinderen aan de populatie toe te voegen, kan men bvb. in elke stap een nieuwe populatie creëren. n het eerste geval spreekt men van een steady-state genetisch algoritme, in het tweede geval van een generationeel genetisch algoritme. Een andere mogelijkheid is het eilandmodel. n dit model evolueren verschillende populaties tegelijkertijd onafhankelijk van elkaar, alsof elke populatie geïsoleerd op zijn eigen eiland zit. Wanneer een individu toch verhuist van de ene populatie naar de andere, noemt men dit een migratie. Men kan ook extra natuurelementen toevoegen aan het genetisch algoritme. Men kan bvb. de individuen een geslacht geven, waardoor crossover slechts tussen bepaalde

49 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 43 combinaties van individuen mogelijk is. Men kan ook een leeftijd toekennen aan de individuen zodat ze in iedere stap verouderen. De leeftijd kan dan samen met de tness bepalen hoe lang een individu nog mag leven. Algoritme in pseudocode De pseudocode voor een genetisch algoritme is weergegeven in Algoritme 1. Algoritme 1 Genetisch algoritme 1: Kies startpopulatie P {kies startpopulatie, bvb. willekeurig} 2: while (not stopconditie) do 3: bepaalfitness(p) {bepaal tness voor elk individu uit populatie} 4: Stel K creëerkinderen(p) {selecteer ouders en pas crossover toe} : muteer(k ) {voer mutaties uit op de kinderen} : voegndividuentoe(k, P) {voeg de kinderen toe aan de populatie} 7: verwijderndividuen(p) {selecteer individuen die moeten sterven} 8: end while Genetische algoritmen voor harmonisatie Genetische algoritmen in algoritmische compositie zijn reeds uitgebreid bestudeerd door Wiggins et al. [19, 20, 27, 28], zowel voor harmonisatie als voor het genereren van instrumentale solo's. n wat volgt, bekijken we hoe genetische algoritmen kunnen gebruikt worden voor harmonisatie. ndividuen voor harmonisatie De individuen zijn de mogelijke oplossingen voor het harmonisatieprobleem, waarbij de ene al meer regels overtreedt dan de andere. Ze worden voorgesteld als een 4 x n matrix van noten, met n het aantal akkoorden. Fitnessfunctie voor harmonisatie De tnessfunctie kent een numerieke waarde toe aan de kwaliteit van de oplossing. Een oplossing is van lage kwaliteit wanneer veel harmonieregels overtreden worden, en van hogere kwaliteit wanneer weinig of geen harmonieregels overtreden worden. n bespraken we reeds straen en heuristische regels. Ook hier kan men werken met gewogen straen per overtreden regel. Eventueel kunnen daar bovenop ook nog heuristische regels gebruikt worden om te bepalen wat er goed klinkt. Uiteraard kan een mens nog altijd beter beoordelen wat er goed klinkt dan een computer. nteractieve genetische algoritmen, waarbij de tnessfunctie vervangen wordt door

50 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 44 een menselijke opinie, zijn hier dus wel een optie. Toch heeft dit ook heel wat nadelen. De gebruiker moet heel veel oplossingen evalueren, waardoor het evalueren van de oplossingen een ernstige bottleneck zou worden. Uiteraard is de beoordeling door een menselijke gebruiker ook altijd subjectief, en verder is er nog een psychologisch aspect. Wanneer iemand hetzelfde muziekstuk steeds opnieuw hoort met kleine wijzigingen, treedt er na verloop van tijd gewenning op. Hierdoor zal de gebruiker een oplossing na een paar varianten gehoord te hebben misschien beter beoordelen dan de eerste keer dat hij het hoorde, wat de objectiviteit van de beoordeling in het gedrang brengt. Crossover voor harmonisatie Wiggins [28] geeft een mogelijke methode voor crossover tussen twee oplossingen of individuen. Beide individuen worden op hetzelfde punt in twee gesplitst, waarna het eerste deel van het ene individu gecombineerd wordt met het laatste deel van het andere individu. Uiteraard kunnen hierdoor fouten optreden tegen de verbindingsregels op het punt waar gesplitst werd, maar indien het kind het beste van beide ouders combineert, bevat het misschien minder andere fouten, waardoor de tness toch hoger kan zijn dan die van de ouders. Mutaties voor harmonisatie Er zijn heel wat mogelijkheden voor mutaties van een oplossing. We noemen er hier enkele: Een akkoordnoot vervangen door een willekeurige andere noot uit het akkoord. Twee stemmen omwisselen. Twee akkoorden omwisselen. Alle noten uit een akkoord vervangen door noten uit een ander akkoord. Het eerste en laatste akkoord vervangen door het tonica-akkoord. Merk op dat het hier niet om volledig willekeurige mutaties gaat, maar wel om probleemspecieke mutaties. Ze zijn zo gekozen dat ze op muzikaal gebied zinvol zijn. De mutatieoperatoren hebben dus zelf ook domeinkennis over het probleem. We spreken dan van gerichte mutaties. Gerichte mutaties maken het genetisch algoritme veel eciënter.

51 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Probleem van de overgang tussen oplossingen Wiggins [27] kaart een probleem aan i.v.m. genetische algoritmen voor harmonisatie. Er zijn heel veel regels in de harmonie die de kwaliteit van de oplossingen bepalen. We kunnen deze regels ook hier als constraints beschouwen. We zagen reeds in dat constraints de zoekruimte aanzienlijk verkleinen, wat goed is. Maar toch maken constraints het leven niet noodzakelijk makkelijker, want zij stellen ons voor een nieuw probleem: men moet van de ene geldige oplossing naar de andere kunnen gaan. n het harmonisatieprobleem kan men bijna nooit een noot veranderen zonder dat dit drastische gevolgen heeft op sommige of zelfs vele noten eromheen. De kwaliteit van een oplossing is immers extreem gevoelig voor kleine veranderingen. Het gevolg is dat wanneer men het geluk heeft een oplossing gevonden te hebben die geen enkele regel overtreedt, het zeer moeilijk is om vanuit deze oplossing naar een andere oplossing te gaan die ook geen enkele regel overtreedt. Daarvoor zijn specieke wijzigingen in veel details tegelijkertijd nodig. Genetische algoritmen zijn hier niet goed in. De kans dat alle nodige veranderingen op willekeurige wijze tegelijkertijd gebeuren is zo goed als nul. Men zou natuurlijk kunnen zoeken naar crossover- en mutatieoperatoren die nooit een geldige oplossing omzetten in een ongeldige oplossing, maar dat is absoluut niet triviaal. Michalewicz en Fogel [1] hebben het in deze context zelfs over wishful thinking. Dit probleem is een belangrijk nadeel, maar het is niet inherent aan genetische algoritmen. Eender welke heuristiek waarbij van de ene oplossing naar de andere moet overgegaan worden, zoals bvb. lokaal zoeken, zal met dit probleem te maken krijgen.

52 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Backtracking vs. genetische algoritmen n de voorgaande secties hebben we twee methoden besproken voor harmonisatie: backtracking en genetische algoritmen. n dit werk hebben we backtracking verkozen boven genetische algoritmen. n deze sectie geven we de argumenten voor en tegen beide benaderingen. Genetische algoritmen proberen niet alle combinaties. Dit heeft als voordeel dat ze goed presteren in grote zoekruimten, maar dat ze niet altijd het optimum vinden. Het is dus mogelijk dat een genetisch algoritme een oplossing vindt die fouten bevat tegen de harmonieregels, terwijl er wel degelijk een oplossing bestond die aan alle regels voldoet. Een backtracking-algoritme zal de foutloze oplossing steeds vinden, voor zover die bestaat, maar heeft als nadeel dat het - op snoeien na - de hele zoekruimte moet doorzoeken tot wanneer een oplossing gevonden is, en dus vertraagd wordt door de grootte van de zoekruimte. Een ander voordeel van genetische algoritmen is dat ze te allen tijde met volledige oplossingen werken. Men kan het algoritme op om het even welk moment stoppen, en men zal altijd volledig ingevulde oplossingen krijgen. Ook kan een genetisch algoritme meerdere oplossingen retourneren, zodat de gebruiker nog keuze heeft uit een aantal mogelijkheden. Een backtracking-algoritme werkt steeds met deeloplossingen. Er is pas een volledige oplossing wanneer het algoritme beëindigd is. Wanneer een backtracking-algoritme een geldige oplossing retourneert, is dit ook de enige oplossing die het algoritme tot dan toe heeft. Door het algoritme nog verder te laten uitvoeren kunnen wel nog oplossingen gevonden worden, maar dan is de kans groot dat deze goed zullen lijken op de reeds gevonden oplossing, omdat waarschijnlijk enkel in de laatste stappen dingen veranderd worden. Het is wel mogelijk een backtracking-algoritme álle oplossingen te laten genereren, wat een genetisch algoritme niet kan. De vaakst gehoorde kritiek op genetische algoritmen voor harmonisatie is echter dat ze niet op een gestructureerde manier werken. Alles gebeurt als gevolg van een toevallige wijziging en niet in functie van een doel (wat overigens in de natuur ook het geval is!). Men zegt dat het genetische algoritmen ontbreekt aan intentie [20, 28]. Backtrackingalgoritmen zijn juist wél zeer geschikt om het probleem op een gestructureerde manier op te lossen. Ze kunnen het probleem oplossen in een vaste volgorde, bvb. eerst de cadenzen vastleggen, dan de baslijn invullen en ten slotte de overige stemmen invullen. Zoals we eerder al zagen, kunnen ze ook werken volgens een harmonisatieplan dat eerst de beschrijvingen vastlegt (zie 4.2.3). Tabel 4.1 geeft een vergelijkend overzicht van de kenmerken van beide methoden. Nog een indicatie in het voordeel van backtracking is het feit dat Wiggins [20, 28], die heel wat artikels gepubliceerd heeft over genetische algoritmen voor harmonisatie, zelf

53 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 47 Genetisch algoritme Backtracking Kan goed om met grote zoekruimten indt meestal het optimum niet Kan altijd een (suboptimale) oplossing geven, ook wanneer het algoritme onderbroken wordt Kan meerdere oplossingen geven. s niet in staat alle oplossingen te genereren. Werkt ongestructureerd met toevallige wijzigingen zonder intentie Uitvoeringstijd is sterk afhankelijk van de grootte van de zoekruimte indt een oplossing die aan alle regels voldoet (als er één is) Kan pas een oplossing geven na beëindigen van het algoritme Geeft meestal maar één oplossing Kan indien gewenst alle oplossingen genereren Kan werken volgens een zoekplan Tabel 4.1: ergelijking genetische algoritmen en backtracking concludeert dat backtracking een betere methode is. Wiggins deed namelijk een belangrijk experiment. Hij liet dezelfde opgaven oplossen door een genetisch algoritme en door een backtracking-algoritme. ervolgens liet hij de oplossing van het backtrackingalgoritme evalueren door de tnessfunctie van het genetisch algoritme. Beide systemen gebruikten dezelfde regels en hadden dus dezelfde domeinkennis. Het resultaat was dat de oplossingen die het backtracking-algoritme genereerde altijd beter waren, soms met een verhouding tot 40:1 in de waarde van de tnessfunctie! De betere kwaliteit van de resultaten in combinatie met de mogelijkheid om het probleem op een gestructureerde manier op te lossen, waren van doorslaggevend belang bij de keuze voor backtracking in dit werk.

54 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE Andere methoden Naast genetische algoritmen en backtracking-algoritmen zijn er nog een aantal andere benaderingen die reeds eectief bleken te zijn. Een veelbelovende methode waar reeds experimenten mee werden gedaan, zijn articieel intelligente systemen die leren. Dergelijke systemen hebben op voorhand geen domeinkennis, maar leiden de domeinkennis zelf af uit een aantal voorbeelden. Hild et al. werkten een dergelijke methode uit op basis van neurale netwerken. erder vermelden we ook nog de stochastische processen. Een stochastisch proces is een proces waarbij de beslissingen op willekeurige wijze worden genomen. Het gedrag van een stochastisch proces is iedere keer anders, en dus niet voorspelbaar. Stochastische processen voor muziek maken geen gebruik van regels. Wel wordt vaak gebruik gemaakt van Markov-ketens. Een Markov-keten is een rij van stochastische variabelen, waarbij men de mogelijke waarden voor de stochastische variabelen toestanden noemt. De kans dat naar een bepaalde toestand wordt overgegaan, hangt enkel af van de vorige toestand, en niet van de andere toestanden uit het verleden. n muziek kan men bvb. een Markov-keten opbouwen voor melodieën door bij een aantal muziekstukken na te gaan hoe vaak elke noot gevolgd wordt door elke andere noot. Men kan bvb. vaststellen dat do in 10 % van de gevallen gevolgd wordt door do, in 20 % van de gevallen door re, in 1 % van de gevallen door mi enz. Bij het genereren van een melodie zal dan op basis van die informatie uit de vorige noot telkens de volgende noot afgeleid worden. De volgende noot wordt willekeurig gekozen, maar met gewogen kansen die afhangen van de percentages uit de verworven informatie. Om hier goede resultaten te krijgen, moeten uiteraard eerst zoveel mogelijk muziekstukken geanalyseerd worden. Een vaak gehoorde kritiek op stochastische processen in muziek is echter dat men muziek helemaal niet als een Markov-keten mag zien. Stel bvb. dat we in plaats van de melodie de geluidssterkte als een Markov-keten zouden modelleren. Wanneer een reeks progressief luider wordende noten elkaar opvolgen, is de kans in de realiteit zeer groot dat er een nog luidere noot op zal volgen. We zitten dan in een crescendo (geleidelijke overgang van zacht naar hard). De Markov-keten zal hier echter geen rekening mee houden, en enkel kijken naar de geluidssterkte van de laatste noot. Wanneer in de voorbeeldmuziekstukken dan toevallig die geluidssterkte vaak gevolgd werd door een stillere, is de kans reëel dat een stillere geluidssterkte als opvolger gekozen wordt. Stochastische processen houden m.a.w. onvoldoende rekening met de muzikale context waarin men zich bevindt. Een gelijkaardige methode vinden we bij Hiller en saacson in 198. Dit was één van de eerste pogingen tot algoritmische compositie met de computer. Zij modelleerden het probleem als een eindige toestandsautomaat. Bij deze methode werkt men met een

55 HOOFDSTUK 4. METHODEN OOR ALGORTMSCHE COMPOSTE 49 eindig aantal mogelijke toestanden (getekend als toppen in een graaf) en een aantal geldige overgangen tussen toestanden (getekend als bogen die de toppen verbinden). Het resultaat is niet alleen een harmonisatie, maar een volledige compositie, die de lliac suite werd gedoopt. 4. Onze strategie De strategie die wij hanteren in Ramo maakt onder andere gebruik van een aantal ideeën uit de voorgaande secties. Het probleem wordt opgevat als een CSP dat opgelost wordt door een backtracking-algoritme. Om het aantal te proberen beschrijvingen en noten te beperken, worden de mogelijke beschrijvingen en mogelijke noten per beschrijving eerst gegenereerd door productieregels. Het backtracking-algoritme zoekt altijd eerst naar een geldige invulling van een cel die aan de akkoordregels voldoet, en controleert dan pas de regels die op meer cellen betrekking hebben. De testen in het backtracking-algoritme gebeuren door controleregels die nagaan of de oplossing aan de harmonieregels voldoet. Optioneel kan ook gebruik gemaakt worden van heuristische regels. Deze heuristische regels proberen de meest muzikaal verantwoorde keuze te nemen wanneer er meerdere geldige mogelijkheden zijn. De heuristische regels houden ook rekening met gekende akkoordprogressies. De controleregels, productieregels, heuristische regels en het backtracking-algoritme worden respectievelijk verder uitgewerkt in Hoofdstuk, Hoofdstuk, Hoofdstuk 7 en Hoofdstuk 8.

56 Hoofdstuk Controleregels.1 ereisten voor het regelsysteem Het gekozen regelsysteem werd oorspronkelijk geschreven met als doel het louter checken van één muziekblad. n dit werk is het echter de bedoeling dat het regelsysteem gebruikt wordt in backtracking-algoritmen. Het regelsysteem zal dus op een totaal andere manier gebruikt worden, waardoor er toch nog een aantal aanpassingen nodig waren. n wat volgt, beschrijven we eerst de vereisten waaraan het regelsysteem moet voldoen, en toetsen we vervolgens de bruikbaarheid van de verschillende soorten regels aan deze vereisten. Waar nodig, beschrijven we ook de gedane aanpassingen. De details van de backtracking-algoritmen zullen uiteengezet worden in Hoofdstuk 8. oor dit hoofdstuk is het enkel van belang te weten dat het muziekblad van links naar rechts wordt ingevuld, en de noten in de cellen van onder naar boven. Figuur.1: olgorde van invullen van de noten in het muziekblad Wanneer het regelsysteem voor zijn oorspronkelijk doel gebruikt wordt, namelijk het detecteren van de fouten in een muziekblad, wordt het hele muziekblad in één keer geëvalueerd en moet alles slechts 1x gecheckt worden. Het muziekblad wordt dan ook verondersteld volledig ingevuld te zijn. Als we het regelsysteem echter gebruiken in een backtracking-algoritme, worden er voortdurend kleine wijzigingen aangebracht aan het 0

57 HOOFDSTUK. CONTROLEREGELS 1 muziekblad (bvb. het toevoegen van een noot of het wijzigen van een noot) die telkens opnieuw moeten gecontroleerd worden. Niet alleen is het belangrijk dat dit snel gaat, maar het is ook belangrijk dat er niet méér gecontroleerd wordt dan strikt nodig is. Het zou bvb. geen goed idee zijn om wanneer één noot veranderd is, opnieuw het hele muziekblad te controleren. Stel bvb. ook dat cel 8 zonet een invulling gekregen heeft, en er gecontroleerd wordt op parallelle kwinten. De regel voor parallelle kwinten moet dan enkel de verbinding tussen cel 7 en cel 8 checken (de verbinding tussen cel 8 en cel 9 moet niet gecheckt worden omdat wegens de gedenieerde volgorde cel 9 dan nog geen invulling heeft). Het is niet nodig dat de regel voor parallelle kwinten na de wijziging in cel 8 ook de verbinding tussen cellen 3 en 4 controleert, want in cellen 3 en 4 kan helemaal geen parallelle kwint ontstaan enkel en alleen door een wijziging in cel 8. Per wijziging mag dus enkel datgene gecontroleerd worden dat door die wijziging kan beïnvloed zijn. erder is het ook belangrijk dat het regelsysteem moet kunnen omgaan met onvolledige informatie. Dit geldt zowel op muziekbladniveau als op celniveau. Op muziekbladniveau moeten we de verbindingen tussen cellen kunnen controleren zonder dat alle volgende cellen ook al ingevuld zijn. Op celniveau willen we fouten als stemkruising of een te grote afstand tussen stemmen al kunnen detecteren zonder dat alle noten in de stem al ingevuld zijn. n Figuur.2 zien we dat de tenor (stok naar boven) lager ligt dan de bas (stok naar beneden). Hier kan dus een stemkruising gedetecteerd worden, ook al zijn de alt en sopraan nog niet ingevuld. Figuur.2: Stemkruising van tenor en bas De reden waarom het regelsysteem moet kunnen omgaan met onvolledige informatie, is dat we fouten zo vroeg mogelijk willen detecteren. Het zou niet eciënt zijn als een muziekblad eerst volledig moet ingevuld worden alvorens er kan gecontroleerd worden. ntegendeel, het controleren moet al beginnen bij het invullen van de eerste cel. Omdat we fouten zo vroeg mogelijk willen detecteren, verdienen ook regels die op meer dan 2 cellen betrekking hebben de nodige aandacht. Soms kan men in de eerste 2 (of meer) cellen al zien dat de verbinding verkeerd zal zijn. Kwartsextakkoorden die op een lichte tel komen zijn hiervan een belangrijk voorbeeld. Een kwartsextakkoord dat start

58 HOOFDSTUK. CONTROLEREGELS 2 op een lichte tel moet ofwel als wisselakkoord ofwel als doorgangsakkoord fungeren, en maakt daarbij deel uit van een geheel van drie cellen (zie 2..4). De bas blijft daarbij liggen, of stijgt of daalt in secunden. Een andere mogelijkheid is er niet. Ondanks het feit dat een kwartsextakkoord op een lichte tel deel uitmaakt van een geheel van 3 cellen, kunnen we over de 2 cellen in Figuur.3 nu al zeggen dat de verbinding zeker ongeldig zal zijn. Het regelsysteem zou dit dus ook moeten detecteren. Figuur.3: Kwartsextverbinding die al zeker ongeldig is We kunnen de vereisten om het regelsysteem op een eciënte manier voor backtracking bruikbaar te maken als volgt formuleren: 1. Akkoordregels moeten waar nodig onvolledig ingevulde cellen kunnen checken. 2. Alle regels moeten een onvolledig ingevuld muziekblad kunnen checken. 3. Na een wijziging moet het mogelijk zijn enkel die noten, cellen of verbindingen te checken die door die wijziging kunnen beïnvloed zijn. 4. Fouten moeten zo vroeg mogelijk gedetecteerd worden. n de volgende sectie bespreken we de aanpassingen die gedaan werden aan het regelsysteem opdat het aan deze vereisten zou voldoen..2 Bruikbaarheid van de verschillende soorten regels Er zijn vijf soorten regels in het oorspronkelijke regelsysteem: akkoordregels, melodieregels, tweecellenregels, driecellenregels en muziekbladregels. Elk heeft zijn eigen interface waarmee de regel geëvalueerd wordt. Merk op dat de regels hier anders ingedeeld zijn dan in 2.. Hier gaat het over de manier waarop de regels geïmplementeerd zijn, terwijl het in 2. over muziektheorie gaat. n de volgende secties bekijken we voor elk van deze soorten regels of ze aan de vereisten voldoen, en indien dat niet het geval is, hoe we ze kunnen bruikbaar maken voor onze doelstellingen.

59 HOOFDSTUK. CONTROLEREGELS Celregels Regels van het type Celregel worden gebruikt voor de implementatie van de akkoordregels uit Ze worden geëvalueerd door een methode uit te voeren van de vorm boolean check(cel cel, List<Annotatie> annotaties); De parameter annotaties is een lijst waaraan de informatie over een eventuele overtreding (een object van het type Annotatie) moet toegevoegd worden. Deze parameter is in deze context van minder belang. Ook de regels van de andere types hebben deze parameter, we komen erop terug in.3. ia de parameter cel wordt juist één cel doorgegeven. Aan vereisten 2 en 3 kan dus makkelijk voldaan worden, het volstaat de regel enkel op te roepen voor de relevante cellen. oorwaarde 1 is echter niet voldaan. De check methode controleert namelijk telkens eerst of alle noten wel ingevuld zijn. ndien niet, gaat de check niet door en wordt de cel gewoon goed gerekend. Pas wanneer alle noten ingevuld zijn, kan er gecontroleerd worden. Nochtans zijn er wel degelijk celregels, zoals de eerder aangehaalde stemkruisingregel, die al vroeger fouten zouden kunnen detecteren. Om hieraan tegemoet te komen, werd voor sommige celregels een nieuwe implementatie voorzien die het mogelijk maakt dat onvolledige cellen gecontroleerd worden. Deze implementaties zijn te vinden in de package ramo.solve.regels.akkoordregels. Door deze wijziging worden fouten ook vroeger gedetecteerd, en is dus ook voorwaarde 4 voldaan. n het oorspronkelijke regelsysteem is er ook een regel ierstemmig van het type Celregel die een cel fout rekent wanneer niet alle 4 de stemmen ingevuld zijn. De student zou dan zijn opgave niet volledig afgewerkt hebben. Uiteraard doet een dergelijke regel hier meer kwaad dan goed, en laten we deze dus achterwege. Wegens de volgorde van het invullen van de noten (zie Figuur.1) zal elke stem in elke cel zeker ingevuld worden, en bestaat er dus geen risico op onvolledige cellen..2.2 Melodieregels Regels van het type Melodieregel implementeren de melodieregels uit De methode die een dergelijke regel evalueert, is van de vorm boolean check(list<cel> melodie, int stem, List<Annotatie> annotaties); Omdat melodieregels stem per stem geëvalueerd worden, geeft de parameter stem aan voor welke stem de regel moet geëvalueerd worden. De parameter melodie is de lijst met cellen waarvoor de gegeven stem moet geëvalueerd worden.

60 HOOFDSTUK. CONTROLEREGELS 4 Bij een melodieregel hoort ook altijd een methode int getmelodiegrootte(); die aangeeft hoe groot de lijst melodie moet zijn. oorwaarde 1 geldt enkel voor akkoordregels dus is hier niet relevant. oorwaarden 2 en 3 zijn net zoals bij de celregels voldaan: men hoeft nooit het volledige muziekblad te evalueren, maar wel enkel de relevante cellen. oor bijna alle melodieregels is de melodiegrootte gelijk aan 2. Het gaat dan om melodieregels zoals de vermeerderde secunde en tritonus die verboden zijn, de leidtoon die naar de tonica moet gaan... Er is bij dergelijke regels geen manier om vroeger de fout te detecteren dan door beide cellen te evalueren. oorwaarde 4 is in dat geval dus voldaan. De regel Opeenvolgendnterval is met een melodiegrootte van 3 de enige regel met een melodiegrootte die groter is dan 2. Deze regel bepaalt dat een gegeven interval (op te geven als parameter) niet 2x na elkaar stijgend of dalend mag voorkomen in dezelfde stem. Een instantie van deze regel is bvb. dat er geen twee stijgende of twee dalende kwarten na elkaar mogen voorkomen in dezelfde stem. Als we bij deze regel enkel de eerste twee cellen evalueren, is er geen manier om al te weten dat hetzelfde interval 2x na elkaar zal voorkomen. We kunnen dus niets doen om de fout al vroeger te detecteren. De fout wordt dus wel degelijk zo vroeg mogelijk gedetecteerd, waardoor voorwaarde 4 voldaan is. We kunnen besluiten dat de melodieregels aan alle voorwaarden voldoen, en we ze ongewijzigd kunnen gebruiken..2.3 Tweecellenregels Regels van het type Tweecellenregel worden gebruikt om de verbindingsregels uit 2..3 te implementeren. Ze worden geëvalueerd door een methode uit te voeren van de vorm boolean check(cel cel1, Cel cel2, List<Annotatie> annotaties); De parameters cel1 en cel2 zijn de cellen waarvoor men de verbinding wil evalueren. Ook hier is het mogelijk enkel de relevante cellen door te geven, en wordt de fout ook zo vroeg mogelijk gedetecteerd. De regel bekijkt de beide cellen om na te gaan of de verbinding klopt. Maar het is sowieso niet mogelijk om op basis van één cel al te zeggen of de verbinding correct zal zijn. De fout zou dus niet vroeger kunnen gedetecteerd worden dan nu al het geval is. Alle voorwaarden zijn dus voldaan voor de tweecellenregels.

61 HOOFDSTUK. CONTROLEREGELS.2.4 Driecellenregels Regels van het type Driecellenregel zijn analoog aan de tweecellenregels, maar dan met 3 cellen als input. De check methode ziet er als volgt uit: boolean check(cel cel1, Cel cel2, Cel cel3, List<Annotatie> annotaties); De regel Accentparallellen is de enige regel van dit type. Deze regel bekijkt de 3 cellen, maar ook bij deze regel zijn de 3 cellen noodzakelijk om een besluit te kunnen vormen of de regel voldaan is of niet, en wordt de fout dus zo vroeg mogelijk gedetecteerd. Alle voorwaarden zijn dus voldaan..2. Muziekbladregels Regels van het type Muziekbladregel controleren een volledig muziekblad in één keer. Ze hebben als checkmethode boolean check(muziekblad blad, List<Annotatie> annotaties); Dit is absoluut niet wat we nodig hebben, geen enkele voorwaarde is voldaan. De muziekbladregels worden in dit werk dan ook niet gebruikt. Het betreft de regels voor kwartsextakkoorden en gesyncopeerde harmonieën (zie 2..4) en de regels die bepalen dat het eerste en laatste akkoord het tonica-akkoord in grondligging moeten zijn. Het is nochtans mogelijk deze regels op een meer lokale manier te evalueren, zonder daarom een volledig muziekblad te evalueren. Daarom werd voor de regels in verband met kwartsextakkoorden en gesyncopeerde harmonieën een nieuwe implementatie voorzien. Deze implementatie is te vinden in de package ramo.solve.regels.variabelelengteregels. Het zijn immers regels waarvan niet op voorhand geweten is op hoeveel cellen ze betrekking zullen hebben, waardoor ze niet als bvb. een twee- of driecellenregel of melodieregel kunnen geïmplementeerd worden. De regels in verband met het tonica-akkoord aan het begin en aan het einde werden verhuisd naar de productieregels (zie Hoofdstuk )..3 Alle regels checken? Tot slot is er nog een belangrijk verschil tussen het evalueren van een muziekblad om de fouten aan de student mee te delen, en het evalueren met het oog op backtracking. n het eerste geval moeten álle fouten gedetecteerd worden. Men moet dus alle regels evalueren, en elke regel voegt de informatie over de fout toe aan de lijst annotaties.

62 HOOFDSTUK. CONTROLEREGELS oor backtracking is het echter niet nodig alle fouten te kennen. an zodra er één fout gevonden wordt, is de oplossing sowieso al incorrect. Zodra één fout is gevonden, zullen we dan ook de volgende regels niet meer evalueren, wat de snelheid ten goede komt. erder is de informatie over de aard van de fouten vooral van pedagogisch belang, maar is dit voor het backtracking-algoritme niet noodzakelijk. We zullen dan ook geen gebruik maken van de lijst annotaties.

63 Hoofdstuk Productieregels.1 Situering Naast de controleregels hebben we een nieuwe soort regels toegevoegd aan Ramo: de productieregels. Een productieregel is een actieve regel die, gegeven een cel, een reeks mogelijkheden genereert die aan de regel voldoen. De gegenereerde mogelijkheden zijn typisch een lijst van mogelijke beschrijvingen voor een cel of een lijst van mogelijke noten voor een bepaalde cel en stem. Het verschil met een controleregel dient hier duidelijk onderstreept te worden. Een productieregel genereert zélf mogelijke correcte invullingen, terwijl een controleregel voor een reeds ingevulde cel nagaat of de regel voldaan is. Door het gebruik van productieregels wordt het algoritme veel eciënter. Enerzijds verkleint de zoekruimte erdoor. Er worden immers enkel zinvolle mogelijkheden geprobeerd in plaats van alle mogelijkheden. Anderzijds moeten er ook minder controleregels gecontroleerd worden. ndien een productieregel bvb. garandeert dat een akkoord geen akkoordvreemde noten bevat, moet dit later ook niet meer gecontroleerd worden door de controleregels. n Ramo zijn er een aantal soorten productieregels. Een zeer belangrijke soort zijn de productieregels voor volledige kwintakkoorden en septiemakkoorden. Deze genereren voor een cel alle mogelijke beschrijvingen, rekening houdend met de ingevulde noten. Hierbij wordt verondersteld dat het akkoord volledig moet zijn, d.w.z. dat er geen akkoordnoten mogen ontbreken in de cel. Bij vierklanken in grondligging mag volgens de literatuur de kwint echter ontbreken. n dit geval is het akkoord dus niet volledig. Om te vermijden dat deze akkoorden uit de boot zouden vallen, is er ook een productieregel voorzien voor onvolledige septiemakkoorden. erder zijn er ook nog de productieregels voor noten. Deze genereren voor een bepaalde beschrijving en stem de lijst met mogelijke noten die in die stem kunnen ingevuld worden. Daarbij wordt ook rekening gehouden met het stembereik. Ten slotte zijn er 7

64 HOOFDSTUK. PRODUCTEREGELS 8 nog de productieregels in verband met de tonica, die bepalen of er al dan niet moet begonnen en geëindigd worden met het tonica-akkoord en/of de tonicanoot. Aan Ramo werd een settingsvenster toegevoegd waarin de gebruiker kan instellen welke productieregels er gebruikt worden. Figuur.1 toont een screenshot van dit settingsvenster. We zullen de verschillende soorten productieregels in de volgende paragrafen uitgebreid toelichten. Figuur.1: Settings in Ramo voor de productieregels.2 Productieregels voor volledige kwintakkoorden en septiemakkoorden.2.1 Doel De productieregels voor volledige kwintakkoorden en septiemakkoorden hebben als input een cel, en genereren een lijst met mogelijke beschrijvingen voor die cel als output. Er is een variant voor kwintakkoorden en een variant voor septiemakkoorden. n de implementatie volstaat het de polyfonie, 3 of 4, door te geven als parameter om aan te geven of het over kwintakkoorden of septiemakkoorden gaat. Precondities De precondities zijn de condities waaraan voldaan moet zijn voordat deze productieregels uitgevoerd worden op een cel:

65 HOOFDSTUK. PRODUCTEREGELS 9 1. ndien beide becijferingen ingevuld zijn, moeten deze gelijk zijn aan elkaar. 2. ndien beide toonaarden ingevuld zijn en één toontrap is gegeven, dan moeten alle noten uit het akkoord op deze toontrap in beide toonaarden voorkomen. 3. ndien beide toonaarden ingevuld zijn, en beide toontrappen zijn gegeven, dan moet het akkoord op de eerste gegeven toontrap in de eerste toonaard dezelfde noten bevatten als het akkoord op de tweede gegeven toontrap in de tweede toonaard. Het gaat hier dus om het elimineren van cellen die inconsistent zijn met zichzelf. Als één van de precondities niet voldaan is, worden de productieregels niet uitgevoerd. De gegenereerde set beschrijvingen is dan een lege verzameling. Merk op dat het consistent zijn van de eventuele ingevulde noten met de eventuele gegeven becijfering geen preconditie is. Het algoritme dat hiervoor nodig zou zijn, zou ons te ver leiden. ndien een dergelijke inconsistentie optreedt, zal dit door de productieregels zelf gedetecteerd worden en zullen zij geen enkele becijfering genereren. Postcondities De postcondities zijn de condities waaraan altijd voldaan is na uitvoeren van deze productieregels: 1. De cel bevat geen akkoordvreemde noten. 2. Er zijn voldoende vrije plaatsen in de cel om het akkoord te kunnen vervolledigen. 3. De beschrijving is realiseerbaar in de cel. Met deze laatste postconditie wordt bedoeld dat de noot die volgens de becijfering in de bas moet komen daar ook daadwerkelijk kan geplaatst worden, en er niet bvb. al een andere basnoot ingevuld is. Deze postcondities hoeven dus niet meer gecheckt te worden, en kunnen bij de controleregels achterwege gelaten worden..2.2 aststellingen Aan de hand van voorbeelden komen we tot een aantal vaststellingen waarmee rekening zal moeten gehouden worden in het algoritme om de beschrijvingen voor een cel vast te leggen. Het aantal voorbeelden kan misschien wat veel lijken, maar elk voorbeeld heeft zijn eigen eigenaardigheden die van belang zijn voor het algoritme. oor de eenvoud zijn alle voorbeelden in do groot.

66 HOOFDSTUK. PRODUCTEREGELS 0 oorbeeld 1: enkel basnoot gegeven Figuur.2: oorbeeld met basnoot gegeven Een veel voorkomende harmonie-oefening is een oefening waarbij enkel de baslijn gegeven is. Figuur.2 zou een cel uit een dergelijke opgave kunnen zijn. We willen de mogelijke beschrijvingen voor deze cel bepalen. We bekijken eerst van welke drieklanken deze basnoot deel kan uitmaken. Een fa komt voor in drie drieklanken, namelijk de drieklanken op toontrap (fa-la-do), (re-fala), en (si-re-fa). Echter, aangezien we de basnoot al kennen, is per toontrap maar één omkering mogelijk. We bekomen dus de volgende becijferingen:,, 4 Bij de vierklanken hebben we één toontrap extra die mogelijk is. De mogelijke vierklanken zijn die op toontrap (fa-la-do-mi), (re-fa-la-do), (si-re-fa-la) en (sol-si-re-fa). Ook hier is per toontrap maar één omkering mogelijk, en bekomen we de volgende becijferingen: 7,, 4 3, 2 Conclusies: oor één basnoot zijn verschillende toontrappen mogelijk. oor een basnoot zijn per toontrap hoogstens twee becijferingen mogelijk, namelijk een drieklank en eventueel een vierklank, aangezien de basnoot de omkering voor een bepaalde graad ondubbelzinnig vastlegt.

67 HOOFDSTUK. PRODUCTEREGELS 1 Figuur.3: oorbeeld met één niet-basnoot gegeven oorbeeld 2: één niet-basnoot gegeven Een ander type harmonie-oefening, is de oefening waarbij enkel de sopraanstem gegeven is. Ook hier moeten we een beschrijving bepalen. Figuur.3 is een voorbeeld van een cel uit een dergelijke oefening. Ook hier willen we de mogelijke beschrijvingen bepalen. Analoge redeneringen gelden voor cellen waarbij een noot uit een andere niet-basstem gegeven is. We zien opnieuw een noot fa. Net zoals in het vorige voorbeeld kan de noot fa deel uitmaken van de drieklanken op drie toontrappen: (fa-la-do), (re-fa-la), en (si-re-fa). Het verschil met het vorige voorbeeld, is dat hier de basnoot nog niet vastligt, en dus voor elke toontrap elke omkering nog mogelijk is. Er zijn dus veel meer mogelijke beschrijvingen:,, 4,,, 4,,, 4 Bij de vierklanken ligt het anders. De mogelijke vierklanken zijn nog steeds die op toontrap (fa-la-do-mi), (re-fa-la-do), (si-re-fa-la) en (sol-si-re-fa). Hoewel de basnoot hier nog niet vastligt, zijn toch niet alle omkeringen mogelijk. Anders dan bij een drieklank, moet in elk van de vier stemmen een verschillende noot komen om de vierklank volledig te kunnen realiseren. Bvb. voor de vierklank op toontrap (refa-la-do) kan in de bas nog een re, la of do komen, maar geen fa aangezien de noot fa dan 2x zou voorkomen en de plaats zou innemen van een andere noot. We bekomen dus de volgende beschrijvingen:, 4 3, 2, 7, 4 3, 2, 7,, 2, 7,, 4 3 Conclusies: oor één niet-basnoot zijn, net zoals bij een basnoot, verschillende toontrappen mogelijk.

68 HOOFDSTUK. PRODUCTEREGELS 2 oor een niet-basnoot zijn bij de drieklanken per toontrap alle omkeringen mogelijk. oor een niet-basnoot zijn bij de vierklanken per toontrap niet alle omkeringen mogelijk. De omkering waarbij de gegeven noot in de bas zou terechtkomen is namelijk niet mogelijk. oorbeeld 3: meerdere noten gegeven Figuur.4: oorbeeld met twee noten gegeven n Ramo is het ook mogelijk dat meerdere noten in een cel gegeven zijn, dus ook in dit geval moeten de becijferingen kunnen bepaald worden. n Figuur.4 zien we een voorbeeld waar twee noten ingevuld zijn, waaronder de basnoot. Bij de drieklanken zijn we nu heel wat beperkter dan in de vorige voorbeelden. De combinatie do-sol kan slechts in één drieklank voorkomen, en dat is in de drieklank op toontrap (do-mi-sol). Bovendien kennen we ook de becijfering, want do staat in de bas. Het akkoord ligt dus in grondligging. Er is dus maar één mogelijke beschrijving: Bij de vierklanken zijn er iets meer mogelijkheden. De combinatie do-sol komt voor in de vierklanken op toontrappen (do-mi-sol-si) en (la-do-mi-sol). Ook hier liggen de becijferingen al vast doordat de basnoot ingevuld is. We bekomen twee mogelijke beschrijvingen: 7, Conclusie: Wanneer meerdere noten gegeven zijn, worden de mogelijke drieklanken en vierklanken beperkt tot diegene waarin alle gegeven noten voorkomen. Dit kan het aantal mogelijkheden aanzienlijk reduceren.

69 HOOFDSTUK. PRODUCTEREGELS 3 Figuur.: oorbeeld met twee gelijke noten gegeven oorbeeld 4: twee gelijke noten gegeven Tot slot bekijken we nog een voorbeeld waarbij twee gelijke noten gegeven zijn. n Figuur. zien we een cel waarbij zowel in de alt als in de tenor een do staat. Op het eerste zicht lijkt er misschien niet zoveel aan de hand, maar ook dit legt extra beperkingen op. Bij de drieklanken zijn een aantal toontrappen mogelijk: (do-mi-sol), (la-do-mi) en (fa-la-do). Maar om de cel te vervolledigen tot een drieklank moeten er nog twee nieuwe noten ingevuld worden. Eén van beide zal dus onvermijdelijk in de bas terechtkomen, waardoor er dus geen do in de bas kan staan en de mogelijkheden voor de omkeringen beperkt worden zoals in voorbeeld 2. De mogelijke beschrijvingen zijn:, 4,, 4,, ierklanken zijn hier niet mogelijk, of tenminste niet als we veronderstellen dat de vierklank volledig moet zijn (zie.3 voor een uitzondering hierop). Conclusie: Wanneer dezelfde noot meerdere keren voorkomt, legt dit ook bij de drieklanken beperkingen op aan de mogelijke becijferingen..2.3 Algoritme Het algoritme om de beschrijvingen te genereren voor een cel verloopt in 3 stappen. Eerst wordt de minimale tertsensequentie (zie.2.4) berekend voor de noten die ingevuld zijn in de cel. Hiervan gebruik makend worden vervolgens de mogelijke toontrappen berekend, om ten slotte de mogelijke omkeringen te bepalen. n de volgende secties zetten we elk van deze drie stappen uiteen.

70 HOOFDSTUK. PRODUCTEREGELS Minimale tertsensequentie bepalen oor een gegeven set noten S en een gegeven toonaard T noemen we de minimale tertsensequentie (MTS) de kortste opeenvolging van tertsen in T die alle noten van S bevat. Deze minimale tertsensequentie is van belang omdat ze later zal gebruikt worden als basis om akkoorden mee op te bouwen. De minimale tertsensequentie zal dan ook de input zijn voor het algoritme dat de mogelijke toontrappen berekent. We bekijken eerst een voorbeeld. Stel S = {do, mi, fa}, T = do groot. Er zijn meerdere opeenvolgingen van tertsen te vinden in do groot die alle noten van S bevatten: do - mi - sol - si - re - fa mi - sol - si - re - fa - la - do fa - la - do - mi De laatste optie bevat duidelijk het kleinste aantal noten. Dit is dan ook de minimale tertsensequentie voor S in do groot. Figuur.: Bepalen van kortste deellijst in een circulaire lijst oor een gegeven toonladder kunnen we een lijst L van tertsen opbouwen, te beginnen bij de grondnoot. Deze lijst is 7 noten lang en bevat alle noten uit de toonladder. Het bepalen van de minimale tertsensequentie voor een set S komt dan neer op het bepalen

71 HOOFDSTUK. PRODUCTEREGELS van de kortste deellijst in L die alle noten uit S bevat, waarbij L als een circulaire lijst beschouwd wordt. Figuur. illustreert dit idee. Deze kortste deellijst wordt bepaald door voor elke noot in S zijn index in L te bepalen, en vervolgens uit deze indices de beste startindex te bepalen. Dit is beschreven in Algoritme 2. De implementatie van dit algoritme is te vinden in de klasse MinimalThirdSequenceGenerator. Algoritme 2 Bepalen van minimale tertsensequentie Parameters: set gezochtenoten, toonaard key Returns: minimale tertsensequentie 1: Stel tertsenntoonladder [0] tonica van key 2: for i from 1 to do 3: Stel tertsenntoonladder [i] tertsenntoonladder [i 1] + terts in key 4: end for : Stel index 0 : for i from 0 to do 7: if gezochtenoten bevat tertsenntoonladder [i] then 8: Stel indices[index ++] i 9: end if 10: end for 11: Stel startndex indices[0] 12: Stel minimumaantalnoten indices[indices.length 1] indices[0] : for i from 1 to indices.length 1 do 14: Stel aantalnoten 8 (indices[i] indices[i 1]) 1: if (aantalnoten < minimumaantalnoten) then 1: Stel minimumaantalnoten aantalnoten 17: Stel startndex indices[i] 18: end if 19: end for 20: for i from 0 to minimumaantalnoten 1 do 21: Stel MTS[i] tertsenntoonladder [(startndex + i)mod7] 22: end for 23: return MTS.2. Toontrappen genereren Het genereren van toontrappen is gebaseerd op het idee dat de minimale tertsensequentie zeker moet aanwezig zijn in het akkoord, en dat we de MTS kunnen uitbreiden met één of meer tertsen vooraan en/of achteraan om zo tot het juiste aantal noten te komen. De reden waarom de MTS in het akkoord moet aanwezig zijn, is dat akkoorden een opeenstapeling zijn van tertsen, en dat alle noten die in de cel staan ook in het akkoord moeten voorkomen. Aangezien de minimale tertsensequentie de kleinste opeenstapeling is van tertsen die alle ingevulde noten bevat, moet die dus ook in het akkoord voorkomen.

72 HOOFDSTUK. PRODUCTEREGELS We beschouwen eerst het voorbeeld in Figuur.7. De toonaard is do groot en we willen de toontrappen bepalen voor akkoorden met drie noten. De polyfonie is dus 3. Figuur.7: oorbeeld met MTS {do, mi} en 1 rust. De MTS voor deze cel is do-mi, en er is 1 rust in de cel. Alle noten uit de MTS zijn reeds aanwezig in de cel, dus daarvoor zijn geen extra plaatsen nodig. Om een akkoord met polyfonie 3 te bouwen vertrekkend van deze MTS, kunnen we vooraan de MTS een terts toevoegen of achteraan de MTS een terts toevoegen. Het resultaat hiervan is weergegeven in Figuur.8. De mogelijke drieklanken zijn dus do-mi-sol en la-do-mi. n do groot zijn dit de drieklanken op toontrappen en. Figuur.8: Drieklanken gebouwd op MTS met twee noten Akkoorden met 4 noten, dus polyfonie 4, kunnen we in dit voorbeeld echter niet genereren. Daarvoor zouden we twee tertsen moeten toevoegen aan de MTS, maar er is maar één rust in de cel. ierklanken zijn hier dus niet mogelijk. We bekijken nu het voorbeeld in Figuur.9. Hier zijn akkoorden met polyfonie 4 wel mogelijk. Figuur.9: oorbeeld met MTS {sol, si, re} en 2 rusten. De MTS voor deze cel is sol-si-re, en er zijn twee rusten in de cel. Een belangrijk punt hierbij is dat er in de MTS een noot staat die nog niet in de cel voorkomt, namelijk de noot si. Er zijn dan wel 2 rusten, maar één van hen zal zeker ingevuld worden met een si. Er blijft dus maar één echte vrije plaats over. Dit is in dit voorbeeld echter geen probleem: om een akkoord met 4 noten te maken, moeten we vooraan of achteraan

73 HOOFDSTUK. PRODUCTEREGELS 7 de MTS één terts toevoegen. Aangezien we één vrije plaats hebben, is dit mogelijk. Het resultaat hiervan is weergegeven in Figuur.10. De mogelijke vierklanken zijn dus sol-si-re-fa en mi-sol-si-re. n do groot zijn dit de vierklanken op toontrappen en. Figuur.10: ierklanken gebouwd op MTS met 3 noten Er zijn heel wat redenen waarom er geen enkele toontrap zou kunnen gegenereerd worden. Het al of niet bestaan van geldige toontrappen hangt af van: het aantal rusten in de cel: R het vereiste aantal noten in het akkoord: de polyfonie P de lengte van de minimale tertsensequentie: L het aantal noten in de MTS die nog niet in de cel voorkwamen: A Een eerste voorwaarde die moet voldaan zijn is: P L Als de lengte van de MTS groter is dan de polyfonie, zal het akkoord namelijk sowieso teveel noten bevatten. Een tweede voorwaarde is: R A P L mmers, zoals we in het voorbeeld al zagen, is het aantal noten dat we nog vrij kunnen invullen in de cel niet R, maar wel R A, aangezien niet noodzakelijk alle noten uit de MTS al aanwezig zijn in de cel, en deze ook hun plaats moeten krijgen. Om een akkoord met polyfonie P te kunnen bouwen, gebaseerd op een MTS met lengte L, moeten we nog P L tertsen toevoegen aan de MTS. Om dit te kunnen verwezenlijken moeten er nog P L vrije plaatsen zijn in de cel, vandaar R A P L. Resteert nog de vraag hoeveel toontrappen we dan kunnen genereren. ndien de voorwaarden voldaan zijn, kunnen we op de eerste toontrap van de MTS altijd een akkoord bouwen. Op de overige toontrappen van de MTS kan dat niet, aangezien dan niet de volledige MTS in het akkoord vervat zit. erder mogen we nog P L noten toevoegen. Er kunnen dus minstens 0 en maximaal P L tertsen vooraan toegevoegd worden, wat een totaal geeft van P L + 1 toontrappen. Het algoritme waarmee we de toontrappen berekenen is beschreven in Algoritme 3. De implementatie ervan is te vinden in de klasse DescriptionGenerator.

74 HOOFDSTUK. PRODUCTEREGELS 8 Algoritme 3 Berekenen van de mogelijke toontrappen Parameters: cel met aantal rusten R, aantal verschillende pitchclasses N, toonaard key, minimale tertsensequentie MTS met lengte L, polyfonie P Returns: lijst met mogelijke toontrappen 1: Stel A L N 2: Stel T toontrap van MTS[0] in key 3: if (P L and R - A P L) then 4: for i from 0 to P L do : voeg T toe aan toontrappen : Stel T T terts in key 7: end for 8: end if 9: return toontrappen.2. Becijferingen genereren Nu de toontrappen waarop de akkoorden gebouwd worden gekend zijn, moeten we enkel nog de mogelijke becijferingen bepalen. Het algoritme hiervoor is beschreven in Algoritme 4. Dit algoritme vraagt wel enige uitleg. Bij de parameters hebben we o.a. de lijst met gegenereerde toontrappen T. Dit is de output van algoritme 3. De set origineletoontrappen is een set met de toontrappen van de noten die in de cel aanwezig zijn. Om het overzicht te bewaren werd de berekening hiervan achterwege gelaten in het algoritme. n het algoritme wordt dan per gegenereerde toontrap uit T de becijferingen bepaald. Het algoritme is het ingewikkeldst wanneer de basnoot nog niet ingevuld is. n dat geval wordt berekend welke toontrappen voorkomen in een akkoord met de gegeven polyfonie op de huidige toontrap, en wordt bepaald welke daarvan nog niet in de cel voorkomen. Deze toontrappen worden opgeslagen in nognodigetoontrappen. Er zijn nu 2 mogelijkheden. Een eerste mogelijkheid is dat het aantal nog nodige graden gelijk is aan het aantal rusten. n dit geval zal elke rust ingevuld worden door één van de nog nodige graden. Bovendien zitten we in het geval waar de basnoot een rust is. De basnoot zal dus ingevuld worden met een toontrap uit nognodigetoontrappen, en niet met één uit origineletoontrappen. Enkel die becijferingen waarbij een toontrap uit nognodigetoontrappen in de bas staat zijn dus mogelijk. Om deze becijferingen te genereren wordt de createdescription methode gebruikt, waarop we zo dadelijk terugkomen. De tweede mogelijkheid is dat het aantal nog nodige graden groter is dan het aantal rusten. n dit geval moet de bas niet noodzakelijk ingevuld worden met één van de nog nodige graden. Eender welke toontrap uit het akkoord kan dan in de bas staan, dus alle omkeringen zijn mogelijk. Hiervoor wordt de createalldescriptions methode gebruikt.

75 HOOFDSTUK. PRODUCTEREGELS 9 Algoritme 4 Berekenen van mogelijke becijferingen voor gegeven toontrappen Parameters: lijst met gegenereerde toontrappen T, set origineletoontrappen, basnoot B, aantal rusten R, polyfonie P Returns: lijst met mogelijke beschrijvingen (toontrap - becijfering combinaties) 1: for i from 0 to T.length - 1 do 2: if (B is rust) then 3: Stel huidig T[i] 4: for j from 0 to P - 1 do : if (!origineletoontrappen bevat huidig) then : voeg huidig toe aan nognodigetoontrappen 7: end if 8: Stel huidig huidig + terts 9: end for 10: if (nognodigetoontrappen.length == R) then 11: for j from 0 to nognodigetoontrappen.length - 1 do 12: createdescription(t[i], nognodigetoontrappen[j ]) 13: end for 14: else 1: createalldescriptions(t[i]) 1: end if 17: else 18: createdescription(t[i], toontrap van B) 19: end if 20: end for Het kan in elk geval niet voorkomen dat het aantal nog nodige graden kleiner is dan het aantal rusten, want Algoritme 3 produceert geen toontrappen waarbij dit het geval is. Ten slotte is er nog het geval waarbij de basnoot al ingevuld was. n dit geval is er slechts één becijfering mogelijk. Ook deze wordt gegenereerd met de createdescription methode. De hulpmethode createdescription bepaalt de omkering wanneer de graad van de grondnoot en de graad van de basnoot gegeven zijn. Op basis van de omkering en de polyfonie wordt dan de becijfering bepaald. Deze becijfering vormt samen met de graad van de grondnoot de gegenereerde beschrijving. De hulpmethode createalldescriptions genereert gewoon alle becijferingen voor een gegeven polyfonie en toontrap. Hier komt dus weinig rekenwerk aan te pas. De implementatie van deze methoden en de implementatie van Algoritme 4 zijn te vinden in de klasse DescriptionGenerator.

76 HOOFDSTUK. PRODUCTEREGELS 70.3 Productieregel voor onvolledige septiemakkoorden n de voorgaande sectie werd steeds verondersteld dat een akkoord volledig moet zijn. Meestal is dat ook zo, maar er is een uitzondering. Bij septiemakkoorden in grondligging mag de kwint ontbreken. Dit betekent dat bvb. bij het septiemakkoord do-misol-si, indien do in de bas staat, de sol mag ontbreken. De realisatie in Figuur.11 is dus een geldige realisatie voor de beschrijving 7 in do groot. Figuur.11: Septiemakkoord in grondligging waarbij de kwint ontbreekt Wanneer er nu een cel gegeven is zoals die in Figuur.12, zou de productieregel uit de vorige sectie concluderen dat het septiemakkoord 7 niet mogelijk is. Er staan immers enkel nog maar do's in de cel. Mi, sol en si zouden er nog bij moeten, terwijl er maar twee vrije plaatsen meer zijn. Daarom werd een productieregel voorzien voor onvolle- Figuur.12: Cel waarbij septiemakkoord in grondligging wel degelijk mogelijk is dige septiemakkoorden, die hier wel degelijk de beschrijving 7 als een mogelijkheid genereert. Om dubbels te vermijden, genereert de productieregel deze beschrijving echter enkel indien het septiemakkoord met ontbrekende kwint wel mogelijk is, maar het volledige akkoord niet mogelijk is. ndien het volledige akkoord ook mogelijk is, zal de productieregel uit de vorige sectie deze beschrijving immers al gegenereerd hebben. De gebruiker kan deze productieregel activeren door Kwint mag ontbreken bij vierklanken in grondligging aan te vinken..4 Productieregels voor noten De productieregels voor noten genereren een lijst met mogelijke noten per stem en per beschrijving. oor iedere stem wordt dus een aparte lijst gegenereerd. Dit is omdat

77 HOOFDSTUK. PRODUCTEREGELS 71 elke stem zijn eigen stembereik heeft, maar ook omdat de bas een aparte behandeling nodig heeft. Het stembereik is per cel instelbaar door de gebruiker. Bij het genereren van de lijst met mogelijke noten voor sopraan, alt of tenor, zijn steeds alle noten uit het akkoord mogelijk, voor zover die binnen het stembereik liggen. Bvb. voor de beschrijving in do groot wordt de volgende lijst noten gegenereerd: do (0) mi (0) sol (0) do (1) mi (1) sol (1) n de bas kan echter enkel een do staan. Bij de becijfering moet de grondnoot immers in de bas komen. oor de bas wordt dus de volgende lijst noten gegenereerd: do ( 1) do (0) Merk ook op dat voor de sopraan, alt en tenor de becijfering niet uitmaakt. Alle noten kunnen immers voorkomen in de drie bovenstemmen, ongeacht de omkering. oor de drie bovenstemmen worden de noten dus enkel bepaald door de toontrap en niet door de becijfering. Bij de bas echter bepalen toontrap en becijfering samen de mogelijke noten. Het genereren van de notenlijsten is een berekening die heel vaak opnieuw moet gedaan worden, maar waarbij de input eigenlijk vaak dezelfde is. Om te vermijden dat het algoritme zou vertragen door deze berekening telkens opnieuw te doen, wordt gebruik gemaakt van een pitchlist cache. Dit is een boomstructuur waarin deze notenlijsten opgeslagen worden. Alle notenlijsten die ooit berekend werden, komen hierin terecht. Zo moeten ze geen tweede keer berekend worden. Figuur.13 toont een momentopname van de pitchlist cache. Op dit moment zitten er nog maar vijf notenlijsten in. Dit worden er uiteraard meer in de loop van de uitvoering van het algoritme. De notenlijsten worden opgeslagen per toonaard, per toontrap en per stem. Bij de bas wordt ook nog eens onderscheid gemaakt tussen de becijferingen. Deze pitchlist cache kan in principe voor de hele duur van het programma blijven bestaan. Er is geen reden om deze te wissen na het oplossen van één opgave. Wel moet men er rekening mee houden dat de notenlijsten niet meer correct zijn wanneer de gebruiker de stembereiken verandert. Tot slot kunnen we nog opmerken dat de becijferingen en 7 in feite dezelfde basnoot impliceren. Zowel bij het akkoord do - mi - sol als bij het akkoord do - mi - sol - si is de grondnoot namelijk dezelfde. Hetzelfde geldt voor de becijferingen en en de becijferingen en 4. n de implementatie werd hiermee rekening gehouden door 4 3 deze gevallen samen te nemen, wat de boom iets kleiner maakt.

78 HOOFDSTUK. PRODUCTEREGELS 72 Figuur.13: Pitchlist cache (S = sopraan, A = alt, T = tenor, B = bas). Productieregels in verband met de tonica n verband met de tonica zijn er vier productieregels, die de gebruiker allemaal kan activeren in het settingsvenster: 1. De eerste beschrijving moet zijn. 2. De laatste beschrijving moet zijn. 3. De eerste noot in de sopraan moet de tonica zijn. 4. De laatste noot in de sopraan moet de tonica zijn. De productieregels voor de tonica zijn exclusieve productieregels. Wanneer deze productieregels actief zijn, mag geen enkele andere productieregel beschrijvingen of noten toevoegen aan de gegenereerde lijst. Deze productieregels bepalen immers dat de tonica de enige geldige beschrijving of noot is. Andere mogelijkheden zijn dus niet toegelaten.

79 Hoofdstuk 7 Heuristische regels 7.1 Bedoeling Sommige harmonieregels zijn vrij strikt, zoals bvb. de regel van de parallelle kwinten en octaven. Er zijn echter ook regels die minder strikt zijn, en die wel mogen overtreden worden. Dit zijn eerder aanwijzingen die bepalen wat er in bepaalde situaties goed is, zonder dat het verplichte regels zijn, bvb. veel grote sprongen na elkaar is niet goed. Deze aanwijzingen zijn een probleem in onze algoritmen. ndien ze geïmplementeerd worden als controleregels, dan moet er ook echt aan voldaan worden. Een opgave kan dan onoplosbaar zijn, alleen maar doordat niet voldaan is aan een regel die in feite niet verplicht is. Het is echter ook geen goed idee deze aanwijzingen dan maar volledig achterwege te laten. Het algoritme dat de opgaven oplost, zal dan geen enkele reden hebben om er nog rekening mee te houden, waardoor er slechts bij toeval aan zal voldaan zijn. Er is dus een gulden middenweg nodig, die deze aanwijzingen opvolgt indien het kan, zonder echter de opgave onoplosbaar te verklaren indien het niet kan. Hiervoor werd nog een nieuwe soort regels toegevoegd aan Ramo, namelijk de heuristische regels. Deze zijn een soort vuistregels die bepalen wat de beste keuze is indien er meerdere geldige mogelijkheden zijn. 7.2 Werking Een objectieunctie is een functie die in optimalisatieproblemen bepaalt hoe goed een (deel-) oplossing is, door er een score aan toe te kennen. Ook hier gaan we op deze manier te werk. Elke heuristische regel evalueert zijn eigen criterium, en kent een score toe aan de deeloplossing naargelang de mate waarin aan dit criterium voldaan is. De waarde van de objectieunctie is dan de som van de scores die de heuristische regels toegekend hebben. 73

80 HOOFDSTUK 7. HEURSTSCHE REGELS 74 De heuristische regels werken op een gelijkaardige manier als de controleregels, maar in plaats van true of false retourneren ze een getal dat de score aangeeft. De implementatie van de heuristische regels is te vinden in de package ramo.solve.criteria. Elke heuristische regel implementeert een methode van de vorm double evaluate(cell[] cells, Maatcijfer m); die in de interface Criterium gedeclareerd is. Ook kan aan elke heuristische regel een gewicht toegekend worden. 7.3 Soorten heuristische regels Beschrijvingen Bepaalde beschrijvingen worden in de harmonie frequenter gebruikt dan andere. We willen bij het oplossen van de opgaven dan ook dat deze beschrijvingen frequenter voorkomen dan andere. Er zijn dus heuristische regels voorzien die een score toekennen aan deze frequente beschrijvingen. n [3] vinden we een opsomming van de beschrijvingen die als frequent worden beschouwd, namelijk,,,,,,,, en 4. Het is dan ook aan deze beschrijvingen dat in Ramo een score wordt toegekend. Wanneer we aan elke frequente beschrijving de score 1.0 toekennen, zal aan de maat in Figuur 7.1 de score 2.0 toegekend worden. Er zijn immers 2 frequente beschrijvingen en 2 niet-frequente. Figuur 7.1: oorbeeldopgave voor heuristische regels Ook zijn er heuristische regels die scores toekennen aan sequenties van beschrijvingen. Sequenties waaraan scores toegekend worden, zijn bvb. -, -, - -,

81 HOOFDSTUK 7. HEURSTSCHE REGELS Noten De heuristische regels voor noten kennen een score toe aan melodieën die als mooi beschouwd worden. Omdat men liever kleine intervallen heeft dan grote, wordt er bvb. een score toegekend aan secunden en tertsen in de sopraan. De grotere sprongen zijn dan benadeeld omdat die geen score krijgen. Overigens wordt ook geen score toegekend aan een prime. Dat is dan wel een klein interval, maar het is ook niet de bedoeling dat de stemmen voortdurend blijven liggen. Er is ook een heuristische regel die een score toekent voor tegenbeweging tussen sopraan en bas. Bij het evalueren van deze heuristische regel, wordt per 2 cellen nagegaan of de bas en sopraan tegenbeweging maken of niet. ndien voor elke keer dat er tegenbeweging is de score 1.0 wordt toegekend, krijgt het voorbeeld in Figuur 7.1 een score van 3.0. De sopraan is in dit voorbeeld immers steeds in tegenbeweging met de bas Modulaties Na een modulatie, een verandering van toonaard, is het goed als er een toonaardbevestiging is. Dit houdt in dat men zo snel mogelijk de noten die nieuw zijn in de nieuwe toonaard laat horen, zodat de luisteraar hoort dat er van toonaard veranderd is. Meestal gebeurt dit in de vorm van een cadens. n [3] is een hele lijst regels opgesomd die aangeven hoe de modulatie het best kan gebeuren. Deze regels zijn echter zeer speciek en kennen enorm veel verschillende gevallen. Aanvankelijk werden deze regels als controleregels geïmplementeerd, maar deze regels bleken veel te streng. Zodra men een voorbeeld uit een ander harmonieboek invoerde, was dit al ongeldig. Er werd dus afgestapt van het idee de regels voor modulatie als controleregels te implementeren. Toch zijn deze regels waardevol en is het goed er in de mate van het mogelijke naar te streven. Hier bleken de heuristische regels zeer nuttig te zijn. Er werden dan ook een aantal heuristische regels geïmplementeerd die een score toekennen aan bepaalde sequenties van beschrijvingen indien ze net na een modulatie voorkomen. Min of meer gebaseerd op [3], zijn dit de beschrijvingen die de heuristische regels in Ramo als de meest wenselijke beschouwen na een modulatie: Eerst een beschrijving met toontrap, of, maar enkel indien dit akkoord een noot bevat die in de vorige toonaard niet voorkwam; ervolgens ; Ten slotte of. De meest wenselijke combinatie van 3 beschrijvingen is echter niet altijd mogelijk. Daarom kennen de heuristische regels ook een score toe aan bvb. -, maar dan wel een lagere score.

82 HOOFDSTUK 7. HEURSTSCHE REGELS Cadenzen oor de cadenzen geldt hetzelfde als voor de modulaties. De regels zijn niet eenduidig en strikt genoeg om ze als controleregels te implementeren, maar toch is het belangrijk dat er naar een goede slotcadens gestreefd wordt. Er zijn dus een aantal sequenties die een score krijgen, maar enkel wanneer ze voorkomen aan het einde van een muziekblad. oorbeelden hiervan zijn -, - -, 4 - -, Opmerking over de subjectiviteit Daar het hier niet om strikte regels gaat, is de keuze van de heuristische regels en hun gewichten nog subjectiever dan de keuze van de controleregels. Bij voorkeur zou de gebruiker ze zelf moeten kunnen opgeven, of zouden ze moeten afgeleid worden uit een groot aantal muziekstukken. De vraag wélke heuristische regels hier precies zouden moeten gebruikt worden, vraagt nader musicologisch onderzoek, wat buiten het bestek van deze thesis valt. n elk geval is het mechanisme er, en werden bij wijze van proof of concept een aantal voorbeelden van heuristische regels geïmplementeerd. Hoewel de keuze van de heuristische regels hier eerder subjectief is, zal in Hoofdstuk 8 blijken dat ze wel degelijk tot betere resultaten leiden. Andere experimentatoren kunnen met andere heuristische regels komen tot resultaten die eveneens algemeen als beter beschouwd worden, maar die naar hun eigen subjectieve perceptie als nog beter of de beste beschouwd worden. De betere resultaten zijn een argument om de heuristische regels zeker te gebruiken.

83 Hoofdstuk 8 Backtracking-algoritmen 8.1 nleiding n dit hoofdstuk geven we een overzicht van de verschillende backtracking-algoritmen. De algoritmen zoeken een oplossing voor een harmonieopgave, en maken daarbij gebruik van de eerder besproken controleregels, productieregels en - optioneel - de heuristische regels. Daarbij laat het algoritme de reeds door de gebruiker ingevulde noten, toontrappen en becijferingen ongewijzigd, en vervolledigt het de opgave tot een partituur die aan de harmonieregels voldoet. Het concept harmonieopgave wordt dus iets algemener opgevat dan de typische opgaven uit 2.. Het algoritme kan klassieke opgaven zoals een gegeven bas of een gegeven sopraan oplossen, maar ook minder traditionele opgaven zijn mogelijk. Zo zijn bvb. opgaven mogelijk waarbij enkel de beschrijvingen of een deel ervan gegeven zijn, of waarbij één of meer stemmen deels ingevuld zijn enz. Het enige wat vereist is, is dat de toonaarden volledig ingevuld zijn. Uiteraard is het wel zo dat een opgave die op zich al fouten bevat, nooit tot een correcte oplossing zal leiden. n dat geval is de opgave dus niet oplosbaar. Het uitgangspunt dat de opgave verder aangevuld wordt tot een geldige partituur, maakt nog een aantal extra dingen mogelijk. Men kan bvb. ook de vier stemmen zelf volledig invullen en het algoritme de beschrijvingen laten genereren. Ook kan men het algoritme from scratch muziek laten genereren door, op de toonaarden na, helemaal niets in te vullen in de opgave. olgens dit idee werden drie algoritmen geïmplementeerd: Het eerste algoritme probeert de beschrijvingen en noten die door de productieregels gegenereerd worden in willekeurige volgorde, en aanvaardt de eerste oplossing die aan de harmonieregels voldoet. Het tweede algoritme bepaalt door vooruitkijken en door heuristische regels de beste keuze voor de beschrijvingen, en probeert de noten in willekeurige volgorde. 77

84 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 78 Het derde algoritme bepaalt door vooruitkijken en door heuristische regels de beste keuze voor de beschrijvingen én de noten. Het derde algoritme biedt nog een aantal extra mogelijkheden voor modulaties en cadenzen, en kan versneld worden door zich te beperken tot vaak voorkomende beschrijvingen. Ook is er bij alle drie de algoritmen de mogelijkheid tot beperkte backtracking. n Ramo kan de gebruiker het algoritme en de extra opties instellen in het settingsvenster 1. Figuur 8.1 toont een screenshot van dit settingsvenster. Er zijn overigens tooltips voorzien die de settings verduidelijken. Figuur 8.1: Settings voor de algoritmen in Ramo n de volgende secties beschrijven en evalueren we deze drie algoritmen en de extra opties. Om een vergelijking mogelijk te maken, testen we elk algoritme uit op dezelfde reeks standaardvoorbeelden. n Figuur 8.2 zien we de vier standaardvoorbeelden, namelijk een gegeven bas, een gegeven sopraan, een voorbeeld met modulaties en een voorbeeld dat lege cellen bevat. Daar waar twee dezelfde noten elkaar opvolgen, werden deze samengenomen als één langere noot. Deze standaardvoorbeelden zijn ook te vinden op de bijgeleverde cd in de map Testles/Standaardvoorbeelden. Tenzij waar anders vermeld, werden alle testen gedaan met de standaardinstellingen voor de productieregels, die men bekomt via de knop Standaardwaarden. 1 menu Oplossen nstellingen...

85 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 79 Figuur 8.2: De vier standaardvoorbeelden

86 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN Willekeurig algoritme Bedoeling Het willekeurig algoritme is het eerste algoritme dat ontworpen werd. Het heeft als doel zo snel mogelijk een oplossing te vinden die aan alle regels voldoet. Het algoritme houdt enkel rekening met de strikte harmonieregels. Er wordt hier dus geen gebruik gemaakt van heuristische regels. De door de productieregels gegenereerde beschrijvingen en noten worden in willekeurige volgorde geprobeerd, zodat telkens een andere oplossing bekomen wordt. Dit algoritme is het eenvoudigste van de drie algoritmen en ook het snelste, maar leidt wel tot de minst muzikale resultaten Algoritme oorbeeld Om dit algoritme te beschrijven, bekijken we het voorbeeld in Figuur 8.3. Het betreft hier een momentopname waarbij de eerste twee cellen reeds ingevuld zijn door het algoritme (zie deelguur a). De opgave is een baslijn in do groot, dus de sol in de bas in cel 3 maakt deel uit van de opgave. We willen cel 3 verder aanvullen op een geldige manier. Eerst en vooral moet er een beschrijving vastgelegd worden voor de cel. Wanneer we enkel met drieklanken werken, hebben de productieregels volgende beschrijvingen gegenereerd:,, n dit algoritme zullen we de beschrijvingen in willekeurige volgorde overlopen. n het voorbeeld is deze willekeurige volgorde de volgende:,, 4 4 Als eerste wordt dus de beschrijving in de cel geplaatst (b). Omdat we zo snel mogelijk willen snoeien, worden nu al de regels gecheckt die enkel betrekking hebben op de beschrijvingen en niet op de noten. Deze regels hebben we hier beschrijvingsregels genoemd. Uit deze check blijkt dat geen goede keuze was, want - een ongeldige verbinding (c). We beginnen dus niet de noten in te vullen voor de is

87 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 81 beschrijving, maar kiezen onmiddellijk een andere beschrijving. beschrijving die in de cel geplaatst wordt is keer wel slagen (e). De volgende (d), waarbij de beschrijvingsregels deze Nu kunnen we dus wel noten invullen in de cel. De bas was gegeven dus daar hoeft geen noot ingevuld te worden. We vullen de noten in van onder naar boven, dus de volgende stem die we invullen is de tenor. oor de tenor en beschrijving genereren de productieregels de volgende noten 2, reeds in willekeurige volgorde geplaatst: Eerst wordt dus een hoge re in de tenorstem geplaatst (f). Zoals we reeds zagen in.2.1 zijn er sommige akkoordregels die al kunnen gecontroleerd worden nog voor de cel volledig ingevuld is. Deze akkoordregels worden dus nu gecheckt, en er blijkt een overtreding te zijn. Er is namelijk een stemoverschrijding tussen tenor en alt (g). n plaats van verder te gaan met de altstem, proberen we dus de tweede mogelijke noot voor de tenor, namelijk sol (h). Opnieuw evalueren we deze akkoordregels, en er blijkt geen overtreding te zijn (i). We kunnen nu dus de alt invullen. De noten die door de productieregels gegenereerd werden voor de alt en beschrijving zijn in willekeurige volgorde: De eerste mogelijke noot, re, wordt geprobeerd (j) en de akkoordregels slagen (k). We gaan verder met de sopraan. De productieregels genereerden voor de sopraan en beschrijving de volgende beschrijvingen, in willekeurige volgorde: n de sopraan wordt eerst de noot sol ingevuld (l). Omdat de cel nu volledig ingevuld is, worden behalve de akkoordregels ook alle overige regels geëvalueerd. Nu worden 2 De guur geeft de verschillende mogelijke noten weer, geen melodie!

88 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 82 dus alle regels geëvalueerd behalve de beschrijvingsregels, die al gecontroleerd werden na het invullen van de beschrijving zelf. Er blijken echter fouten te zijn (m). De terts ontbreekt in het akkoord want de cel bevat 2 keer sol en 2 keer re, maar geen si. Bovendien is er een parallel octaaf tussen bas en sopraan. We proberen dus een andere noot voor de sopraan. De volgende mogelijkheid uit de lijst is si. Deze noot wordt in de cel geplaatst (n). Opnieuw worden zowel de akkoordregels als de overige regels gecontroleerd. Weer blijkt er een overtreding te zijn: het interval tussen de sopraannoten van cel 2 en 3 is een vermeerderde kwart (o). De vermeerderde kwart, ook tritonus genoemd, is een verboden melodisch interval. Achtereenvolgens worden nu de lage re, hoge re en hoge sol geprobeerd voor de sopraan. Allemaal blijken ze tot overtredingen te leiden. oor de overzichtelijkheid is dit achterwege gelaten in de guur. Aangezien geen enkele noot voor de sopraan hier tot een oplossing zal leiden, zit er niets anders op dan terug te keren (te backtracken) naar de vorige stap en daar een andere keuze te maken. De vorige stap was de altstem, dus daar zullen we een nieuwe noot moeten invullen. Er stond een re, die we nu vervangen door de volgende noot uit de lijst met mogelijke noten voor de alt, namelijk een lage si (p). De akkoordregels slagen (q) en we kunnen opnieuw de sopraan proberen invullen. De sopraan begint nu met een schone lei. Ondanks het feit dat de noten bij de vorige poging allemaal faalden, is het wel degelijk mogelijk dat ze nu toch slagen, doordat de context veranderd is. We moeten dus opnieuw alle noten uitproberen voor de sopraan. Om het algoritme een zo willekeurig mogelijk karakter te geven, kiezen we eerst een nieuwe willekeurige volgorde voor de mogelijke noten voor de sopraan: De eerste noot, de lage re, wordt in de sopraan geplaatst (r). Alle regels worden gecontroleerd, behalve de beschrijvingsregels. Er blijkt geen enkele regel overtreden te zijn (s). We hebben dus een geldige volledige invulling gevonden voor cel 3, waarmee het proces voor deze cel beëindigd is. Er kan nu verdergegaan worden met de volgende cel, waarbij opnieuw eerst de beschrijving en vervolgens de stemmen van laag naar hoog ingevuld worden. ndien nodig, wordt er ook gebacktrackt over de cellen heen, waarbij een nieuwe invulling gekozen wordt voor de voorgaande cel. Op deze manier wordt verdergegaan tot het einde van het muziekblad bereikt is.

89 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 83 Figuur 8.3: erloop van het willekeurig algoritme

90 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 84 Algoritme in pseudocode Dit algoritme werd opgevat als twee verschillende methoden. De eerste methode, probeerbeschrijvingen(int celindex) itereert over de verschillende beschrijvingen voor de cel met de gegeven index. Wanneer een beschrijving voldoet aan de beschrijvingsregels, wordt de methode probeernoten(int celindex, int stemindex) opgeroepen, die de stemmen probeert in te vullen volgens deze beschrijving. De probeernoten methode itereert over de mogelijke noten voor die stem, rekening houdend met de gekozen beschrijving. Wanneer een noot wordt gevonden die geldig is volgens de akkoordregels, worden de andere stemmen recursief ingevuld. Wanneer de cel volledig ingevuld is, worden de overige regels gecontroleerd. Als ook deze slagen, wordt de probeerbeschrijvingen methode opgeroepen voor de volgende cel. De twee methoden zijn dus mutueel recursief, wat betekent dat ze allebei de andere oproepen. De algoritmen voor beide methoden zijn weergegeven in Algoritme en Algoritme. De parameter celindex is het chronologisch volgnummer van de cel in het muziekblad. n deze tekst wordt de celindex steeds geteld vanaf 1. De parameter stemindex geeft aan welke stem er moet ingevuld worden. De bas heeft stemindex 0, de tenor 1, de alt 2 en de sopraan 3. Er is ook een globale variabele cellen, namelijk een array met de cellen die moeten ingevuld worden. n de algoritmen in pseudocode die in deze tekst beschreven worden, geldt steeds dat voor and en or het rechterlid slechts geëvalueerd wordt indien nodig. oor x or y betekent dit dat y niet wordt geëvalueerd indien x waar is. oor x and y houdt dit in dat y niet wordt geëvalueerd indien x vals is Opmerkingen Lokaliteit van de regels n het algoritme dat we beschreven, worden de cellen altijd van links naar rechts ingevuld. Nochtans is het in backtracking-algoritmen meestal een goed idee de variabelen met het kleinste aantal mogelijkheden als eerste te proberen invullen. Op die manier kan men hoog in de zoekboom grote takken snoeien. n het harmonisatieprobleem zou dit erop neer komen dat de cellen waar al het meest is ingevuld, eerst worden bekeken, en als laatste de cellen waar het minst is ingevuld. Dit zou ertoe leiden dat de cellen niet van links naar rechts worden overlopen, maar dat er van de ene cel naar de andere wordt gesprongen. Dit heeft echter een groot nadeel. De harmonieregels zijn namelijk zeer lokaal. Als ze op meerdere cellen betrekking hebben, zijn dit vrijwel altijd cellen die naast elkaar liggen. Wanneer men dan de cellen in een niet-aansluitende volgorde gaat overlopen, zal men veel regels niet kunnen uitvoeren doordat de buren van de

91 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 8 Algoritme Willekeurig algoritme - probeerbeschrijvingen(int celindex) Parameters: index v/d huidige cel celindex Returns: true indien succes, anders false 1: Stel L lijst van beschrijvingen gegenereerd door productieregels 2: for elke beschrijving B in L do 3: cellen[celindex].zetbeschrijving(b) 4: if beschrijvingregelsgeslaagd(cellen, celindex) then : if probeernoten(celindex, 0) then : return true 7: end if 8: end if 9: end for 10: return false {geen enkele beschrijving leidde tot een oplossing} Algoritme Willekeurig algoritme - probeernoten(int celindex, int stemindex) Parameters: index v/d huidige cel celindex, index v/d huidige stem stemindex Returns: true indien succes, anders false 1: Stel L lijst van noten gegenereerd door productieregels 2: for elke noot N in L do 3: cellen[celindex].zetnoot(n ) 4: if akkoordregelsgeslaagd(cellen[celindex], stemindex) then : if stemindex < 3 then : if probeernoten(celindex, stemindex +1) then 7: return true 8: end if 9: else if overigeregelsgeslaagd(cellen, celindex) then 10: if celindex = cellen.length 1 or probeerbeschrijvingen(celindex +1) then 11: return true 12: end if 13: end if 14: end if 1: end for 1: return false {geen enkele noot leidde tot een oplossing}

92 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 8 huidige cel nog niet ingevuld zijn. Het gevolg is dus dat er juist veel lager in de zoekboom pas kan gesnoeid worden! Wegens de lokaliteit van de regels hebben we voor dit specieke probleem dus niet in volgorde van het aantal mogelijkheden gewerkt. Snoeien Het snoeien gebeurt hier door de harmonieregels te evalueren en niet verder te gaan met de huidige deeloplossing indien er overtredingen zijn. Het is belangrijk op te merken dat het snoeien in dit algoritme niet vrijblijvend is. Om eciëntieredenen evalueren de regels steeds enkel de laatste cel en het aantal voorgangers van de laatste cel dat nodig is om de regel te kunnen evalueren. Het is dus niet zo dat elke check de hele deeloplossing tot nu toe evalueert. Dat zou te veel tijd innemen. Omdat een cel, eens er naar een volgende cel is overgegaan, niet meer wordt gecontroleerd, is men dus verplicht in elke stap steeds de regels te evalueren en te snoeien waar mogelijk. Backjumping Backjumping zou in deze context betekenen dat er meerdere stemmen of meerdere cellen in één keer teruggekeerd wordt. n.2 hebben we er echter voor gezorgd dat elke fout zo vroeg mogelijk wordt gedetecteerd. Wanneer een regel bvb. betrekking heeft op drie cellen, en het gaat in de tweede cel al fout, zal dit dan al gedetecteerd worden. Men kan dan meteen terugkeren van cel 2 naar cel 1, waardoor achteraf een jump van cel 3 naar cel 1 niet nodig is. Om deze reden is het niet noodzakelijk in dit algoritme van backjumping gebruik te maken. Policy Er wordt in dit algoritme geïtereerd over beschrijvingen en over noten, in een bepaalde volgorde. Deze volgorde wordt van buitenaf vastgelegd door een policy. Hier hebben we een random policy gebruikt die een willekeurige volgorde toekent aan de beschrijvingen en aan de noten. Er zijn echter ook andere policies mogelijk, bvb. op basis van prioriteiten. n het volgende algoritme zullen we daarvan een voorbeeld zien Resultaten De resultaten die met het willekeurig algoritme bekomen werden voor de vier standaardvoorbeelden, zijn weergegeven in Figuur 8.4. Ook de tijden zijn erbij vermeld. We bekijken de positieve en negatieve kenmerken van de resultaten voor elk voorbeeld.

93 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 87 oorbeeld 1: Gegeven bas Deze baslijn van 1 maten lang werd correct geharmoniseerd in amper 2 ms. Alle akkoorden zijn correct verboden, bvb. bij de - verbindingen in maten 7 en 1 dalen de drie bovenstemmen inderdaad, zoals het hoort. Ook zijn er nergens parallelle kwinten of parallelle octaven te vinden, en komen er geen ongeldige sequenties van beschrijvingen voor, zoals bvb. - wel degelijk alle ongeldige mogelijkheden.. Wat dat betreft, snoeit het regelsysteem dus Wel worden niet altijd de meest voor de hand liggende beschrijvingen gekozen. n maat 4 wordt bvb. 2 keer de beschrijving echter de voorkeur geven aan de beschrijving en gebruikt. De meeste muzikanten zouden hier. Ook voor de beschrijvingen zijn er alternatieven die vaker gebruikt worden. erder is de melodie ook zeer willekeurig. Er zijn veel onverwachte sprongen, en vooral de sprong in de sopraan op het slotakkoord is geen goed idee. Het slotakkoord hoort immers een akkoord van rust te zijn, waarop niet meer gesprongen wordt. Met dergelijke zaken houdt dit algoritme echter geen rekening, wat meteen ook de reden is waarom het zo snel is. Merk op dat er hier wel degelijk een slotcadens is, maar dit is toeval. Er zal zeker niet altijd automatisch een goede slotcadens gekozen worden, zie bvb. het volgende voorbeeld. oorbeeld 2: Gegeven sopraan Deze sopraan werd geharmoniseerd in 31 ms. Dit is sneller dan voorbeeld 1, omdat het hier over een korter stukje gaat. Bij een gegeven sopraan is de zoekruimte groter dan bij een gegeven bas, omdat er meer verschillende beschrijvingen mogelijk zijn per cel. Toch is het algoritme niet minder snel voor een sopraan dan voor een bas, omdat sowieso de eerste beschrijving die slaagt gekozen wordt. Ook hier is alles correct verbonden. De - want bij deze verbinding moet de terts van het verbinding is geen triviale verbinding, de grondnoot, wat nochtans niet altijd het geval is voor het zien we dat dit correct gebeurt. akkoord verdubbeld worden ipv akkoord. n maat 4 Het belangrijkste minpunt aan deze oplossing, is de keuze van de beschrijvingen in de laatste maat, die absoluut geen goede slotcadens vormen. Ook moet bij een gegeven sopraan de baslijn nog door het algoritme gecomponeerd worden. Een aaneensluitende bas met kleine intervallen zou beter geweest zijn dan de willekeurig springende bas die

94 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 88 we hier vinden. Wat dit betreft hadden vooral de cellen t.e.m. 8, waar we twee grote sprongen na elkaar in dezelfde richting zien in de bas, beter gekund. oorbeeld 3: Modulatie n dit voorbeeld zien we dat de modulatie correct wordt uitgevoerd. Er is bij elke modulatie een spilakkoord, dat inderdaad in de beide toonaarden kan voorkomen, en de twee toontrappen van het spilakkoord zijn correct. Wel is er na de modulaties geen goede toonaardbevestiging. De ene modulatie wordt gevolgd door andere door - -, terwijl - en en de beter zouden geweest zijn. oorbeeld 4: Lege cellen Aan de tijdmeting te zien, heeft het algoritme weinig last van de lege cellen. Dit is ook logisch, aangezien de lege cellen gewoon willekeurig worden ingevuld. Wat er wordt ingevuld in de lege cellen, blijkt dan ook niet echt de beste keuze te zijn. Bovendien ontbreekt ook hier een goede slotcadens. Algemeen n het algemeen presteert dit algoritme zeer goed qua snelheid. De combinatorische explosie blijkt minder een probleem te zijn dan verwacht. Dit is te verklaren door het feit dat er zeer veel verschillende oplossingen zijn in de zoekruimte, en er dus altijd wel snel een van die oplossingen gevonden wordt. Een andere voordeel van dit algoritme is dat het telkens een andere oplossing geeft. Dit is handig wanneer men meerdere totaal verschillende oplossingen wil. Wat men ook kan doen, is datgene wat men goed vindt aan een oplossing behouden, de andere cellen leegmaken, en het algoritme opnieuw uitvoeren. Men krijgt dan een nieuwe invulling voor de cellen die niet naar wens waren. Wel zijn de resultaten, hoewel steeds correct, soms wat onlogisch op muzikaal gebied. Zoals te verwachten was, is iets wat aan de harmonieregels voldoet nog niet noodzakelijk muzikaal.

95 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 89 Figuur 8.4: Resultaten van het willekeurig algoritme

96 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN Uitbreidingen Beperkte backtracking Zoals uit de experimenten blijkt, vindt het willekeurig algoritme meestal snel een oplossing. Door het snoeien, en doordat er veel oplossingen mogelijk zijn, moet daarbij nooit de hele zoekruimte doorzocht worden. Wanneer er echter geen oplossing bestaat, zal op het snoeien na wel de hele zoekruimte doorzocht worden. Dit neemt zeer veel tijd in beslag. Dit neemt zelfs zodanig veel tijd in, dat het niet realistisch is dat een gebruiker zal willen wachten tot de héle zoekruimte doorzocht is, om dan pas melding te krijgen dat er geen oplossing kon gevonden worden. Er werd dus gezocht naar een manier om het zoekproces sneller te stoppen. Hiervoor bekijken we het proces van backtracking eens van naderbij. Door de index van de cel die momenteel bekeken wordt te vergelijken met de hoogste index van een cel die al bereikt werd, kunnen we nagaan hoe ver er teruggekeerd wordt. Hiervoor wordt een globale variabele hoogstbereiktecelndex bijgehouden. Bij elke oproep van de methode probeerbeschrijvingen of probeernoten, wordt de celindex vergeleken met hoogstbereiktecelndex. ndien de celindex groter is dan hoogstbereiktecelndex, wordt hoogstbereiktecelndex gelijkgesteld aan de celindex. Figuur 8.: Backtracking informatie voor het standaardvoorbeeld met gegeven bas Figuur 8. toont een (ingekort) stukje van de output die dit oplevert voor het standaardvoorbeeld met de gegeven bas. We zien hier dat er voor cellen 14 t.e.m. 19 helemaal niet wordt teruggekeerd naar vorige cellen. anaf cel 12 wordt wel teruggekeerd naar cel 11, en vanaf cel 13 wordt twee stappen teruggekeerd tot cel 11. Een belangrijke vaststelling is dat er bijna nooit ver teruggekeerd wordt. De verklaring hiervoor ligt in het feit dat de harmonieregels zeer lokaal zijn, en het dus gewoonlijk volstaat slechts 1 of 2 cellen terug te keren om een overtreding te herstellen. De methode die we gebruiken om het zoekproces sneller te stoppen, is gebaseerd op deze vaststelling. n plaats van helemaal tot cel 1 te backtracken, wordt slechts een

97 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 91 beperkt aantal cellen teruggekeerd, bvb. 3. Wanneer we d het aantal cellen noemen dat er mag teruggekeerd worden, kan dit idee ook als volgt verwoord worden: Wanneer in de zoekboom een nakomeling bereikt is van top v, die op een afstand d ligt van v, worden alle nog niet geprobeerde kinderen van v gesnoeid. Figuur 8. illustreert dit idee voor d = 3. Figuur 8.: Beperkte backtracking Door deze techniek wordt met d = 3 binnen aanvaardbare tijd gemeld dat er geen oplossing kan gevonden worden. Doordat niet de hele zoekruimte doorzocht wordt, verliest men hier wel de garantie dat een melding dat er geen oplossing kon gevonden worden ook werkelijk betekent dat er geen oplossing bestaat. Uit experimenten blijkt echter dat voor d = 3 bijna altijd een oplossing gevonden wordt, indien er één bestaat. De gebruiker kan in Ramo aanvinken of er al dan niet gebruik gemaakt wordt van beperkte backtracking. Ook de waarde d is instelbaar. Deze waarde d kan men beschouwen als een maat voor hoe lang de gebruiker wil wachten vooraleer te concluderen dat er geen oplossing meer zal gevonden worden. Deze optie kan ook gebruikt worden bij de twee andere backtracking-algoritmen die we nog zullen bespreken. Aantal oplossingen bepalen Het beschreven algoritme kan via een eenvoudige aanpassing ook gebruikt worden om het aantal mogelijke oplossingen te tellen. Het algoritme stopt dan niet wanneer één oplossing gevonden is. n plaats daarvan, wordt een teller verhoogd die het aantal gevonden oplossingen bijhoudt, en wordt er verder gezocht. Op die manier wordt de hele zoekruimte afgelopen, met snoeien uiteraard. Dit kan uitgevoerd worden in Ramo via het menu Oplossen Bepaal aantal oplossingen. n Figuur 8.7 zien we enkele voorbeelden. Deze voorbeelden zijn ook te vinden op de bijgeleverde cd in de map Testles/BepaalAantalOplossingen. Het algoritme kan bvb. gebruikt worden om te bepalen op hoeveel manieren een bepaalde beschrijving in een

98 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 92 cel kan gerealiseerd worden (oorbeeld 1). oor dit voorbeeld werden de opties voor de productieregels uitgevinkt die bepalen dat er moet gestart en geëindigd worden op de tonica, omdat dit het aantal oplossingen zou beperken. De andere 2 voorbeelden werden wel met de standaardproductieregels opgelost. Tabel 8.1 geeft de resultaten weer voor elk van deze voorbeelden, incl. de tijd die nodig was om het aantal oplossingen te bepalen. Figuur 8.7: Testopgaven waarvoor het aantal oplossingen bepaald wordt Opgave Aantal oplossingen Tijd oorbeeld ms oorbeeld ms oorbeeld ms Tabel 8.1: Aantal oplossingen + tijdmeting voor enkele testopgaven Dat er zoveel mogelijke harmonisaties zijn voor een korte sopraan van slechts 8 noten, is wel een interessante observatie. Als harmoniestudent heeft men vaak het gevoel dat er slechts enkele oplossingen mogelijk zijn. Dat blijkt dus niet zo te zijn! Doordat er zoveel oplossingen mogelijk zijn, hebben we niet geprobeerd álle oplossingen te genereren. Dit zou veel geheugen vragen, en het zijn sowieso toch veel meer oplossingen dan de gebruiker ooit zal bekijken. Daarom hebben we ons beperkt tot het tellen van het aantal oplossingen. ndien de gebruiker meerdere oplossingen wenst, kan hij het willekeurig algoritme gewoon meerdere keren na elkaar uitvoeren.

99 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN Algoritme met vooruitkijken voor beschrijvingen Bedoeling n het vorige algoritme was de keuze van de beschrijvingen soms niet echt logisch. Wanneer er bvb. in do groot een sol in de bas staat, is de meest logische beschrijving voor deze cel. Het is zeer ongebruikelijk om in dit geval de beschrijving aan de cel toe te kennen. Toch zal het willekeurig algoritme aan deze beide beschrijvingen dezelfde kans geven. n het algoritme dat we hier bespreken, is het de bedoeling de keuze voor de beschrijvingen te verbeteren. Onlogische beschrijvingen willen we in de mate van het mogelijke vermijden, door prioriteit te geven aan de meest muzikale keuze Benaderingen Om de keuze van de beschrijvingen te verbeteren, zijn verschillende benaderingen mogelijk. Een eerste mogelijkheid is per cel de mogelijke beschrijvingen te sorteren met behulp van de heuristische regels, zodat de beste keuze eerst komt en de minst logische keuzes op het einde. Een tweede mogelijkheid is te werken met een harmonisatieplan (zie ook 4.2.3). Dit zou inhouden dat we eerst alle beschrijvingen vastleggen, rekening houdend met de heuristische regels, en dan pas de noten invullen. Deze benaderingen bleken echter allebei niet goed te presteren. We beschrijven eerst de problemen die deze benaderingen met zich meebrachten, en zetten daarna de gebruikte benadering uiteen. Beschrijvingen sorteren per cel Per cel kan men aan elke mogelijke beschrijving een score laten toekennen door de heuristische regels. ervolgens kan men de beschrijvingen dan volgens deze score sorteren in aopende volgorde. Op die manier worden de beschrijvingen met de hoogste score eerst geprobeerd. n Figuur 8.8 zien we een voorbeeld in do groot waarin de beschrijvingen moeten gekozen worden. Onder elke basnoot staan verticaal de mogelijke beschrijvingen voor die basnoot weergegeven. De heuristische regels zouden - terecht - voor cel 1 de beschrijving beschrijving verkiezen en voor cel 3 beschrijving de verkiezen. oor cel 2 zou de gekozen worden, wat op zich geen slechte beschrijving is. De heuristische regels geven echter een hogere score aan de sequentie - - dan aan de

100 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 94 sequentie - -, waardoor het in deze context beter zou zijn toch voor te kiezen. Wanneer we de beschrijvingen enkel per cel sorteren, wordt er geen rekening gehouden met de sequenties die men in de gegeven context zou kunnen vormen. We hebben dus een benadering nodig die niet enkel met de huidige cel rekening houdt, maar ook met de andere cellen eromheen. Figuur 8.8: oorbeeld: 3 cellen met hun mogelijke beschrijvingen olledig harmonisatieplan Een benadering die wel rekening houdt met de andere cellen, is een benadering waarbij een harmonisatieplan wordt opgesteld. Men legt dan eerst alle beschrijvingen vast, rekening houdend met de heuristische regels. Daarna worden de noten ingevuld. Het probleem met deze benadering is dat de opgave niet altijd oplosbaar is met de vastgelegde beschrijvingen. Uit experimenten bleek dat slechts bij een gegeven bas en wanneer enkel kwintakkoorden gebruikt worden, er een redelijke kans bestaat dat de opgave na het vastleggen van de beschrijvingen nog oplosbaar zal zijn. Wanneer een andere stem dan de bas gegeven is, bvb. de sopraan, is de opgave na het vastleggen van de beschrijvingen vaak niet oplosbaar. Een verklaring hiervoor is dat de verbindingsregels veel strikter zijn voor de sopraan en voor de middenstemmen dan voor de bas. Als dan een andere stem dan de bas gegeven is, kan vaak geen geldige verbinding meer gevonden worden. n Figuur 8.9 zien we een voorbeeld in do groot waarbij de sopraan gegeven is en het harmonisatieplan reeds volledig ingevuld is. n het harmonisatieplan vinden we voor cel 3 en 4 resp. de beschrijvingen en. Dit zijn wel plausibele beschrijvingen, maar de verbinding - eist dat de sopraan, alt en tenor dalen. Doordat in de sopraan reeds de stijgende noten fa - sol zijn ingevuld, is deze opgave dus niet oplosbaar. Ook bij het gebruik van septiemakkoorden, zelfs voor een gegeven bas, blijken de regels meestal te streng te zijn, waardoor de opgave onoplosbaar wordt.

101 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 9 Figuur 8.9: Harmonisatieplan dat de opgave onoplosbaar maakt Oplossing: lokaal harmonisatieplan Uit het voorgaande blijkt dat we best rekening houden met de context om de beschrijvingen te kiezen, maar dat alle beschrijvingen in één keer vastleggen ook niet goed werkt. We hebben dus een meer lokale aanpak nodig die zich echter niet beperkt tot één cel. Ook willen we de beschrijvingen niet onherroepelijk vastleggen, maar willen we erop kunnen terugkomen indien nodig. De oplossing bestond erin te werken met een lokaal harmonisatieplan. Dit is een harmonisatieplan dat op slechts enkele cellen betrekking heeft, en dat voor elke cel herzien wordt. n het backtracking-algoritme wordt hiervoor gebruik gemaakt van vooruitkijken. Dit betekent dat, behalve de huidige cel, ook nog een aantal volgende cellen worden bekeken en in rekening genomen bij het nemen van de beslissing voor de huidige cel. Het aantal cellen dat vooruitgekeken wordt, is variabel en kan door de gebruiker ingesteld worden in Ramo Algoritme oorbeeld Om dit algoritme te illustreren, bekijken we het voorbeeld in Figuur Ook hier is de opgave een bas in do groot en werken we enkel met kwintakkoorden. De eerste vijf cellen zijn al ingevuld. We moeten nu starten met het invullen van cel. Zoals bij het vorige algoritme, kiezen we ook hier eerst de beschrijving voor de cel. We kiezen de beschrijving deze keer echter niet willekeurig, maar door het opstellen van een lokaal harmonisatieplan. Hiervoor kijken we bvb. 2 cellen vooruit, wat betekent dat we cel tot en met 8 in rekening nemen om de beschrijving voor cel te kiezen. n Figuur 8.11 zijn verticaal onder de basnoten de mogelijke beschrijvingen voor cel, 7 en 8 weergegeven. Uit de beschrijvingen genereren we nu alle geldige combinaties. Aangezien er voor elk van de 3 cellen 3 mogelijke beschrijvingen zijn, zijn er in totaal 3 3 = 27 combinaties, maar die zijn niet allemaal geldig. Zo is onder andere 4-4 een ongeldige verbinding. Het genereren van deze geldige combinaties gebeurt ook door backtracking met snoeien, waarbij voor het snoeien uiteraard enkel de

102 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 9 Figuur 8.10: oorbeeldopgave voor algoritme met vooruitkijken voor beschrijvingen Figuur 8.11: Beschrijvingen gegenereerd door de productieregels voor cel, 7 en 8 beschrijvingsregels gebruikt worden. Hierbij worden enkel de verbindingen binnen de cellen, 7 en 8 gecheckt. De verbinding met de voorgaande cellen wordt pas later gecontroleerd. De reden hiervoor is dat we deze combinaties willen cachen, om eventueel later opnieuw te gebruiken bij een andere invulling voor de cellen 1 t.e.m.. Het genereren van de combinaties gebeurt immers maar één keer, terwijl ze later misschien wel meerdere keren in verschillende contexten zullen geëvalueerd worden. We bekomen op deze manier 20 geldige combinaties: We willen al deze combinaties nu rangschikken van goed naar slecht. Dit doen we door quoteringen toe te kennen, voorgesteld door een geheel getal. Hoe hoger de quotering, hoe beter de combinatie. Om deze quotering toe te kennen, bekijken we niet enkel de combinatie zelf, maar ook de 3 beschrijvingen die eraan voorafgaan. n dit geval zijn dat de beschrijvingen uit cellen 3 tot, namelijk. oor elke

103 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 97 combinatie moet dus gezet worden. Op deze manier wordt ook rekening gehouden met eventuele sequenties die ontstaan in combinatie met de voorgangers. Er worden 3 voorgangers bekeken, en niet meer dan 3, omdat de heuristische regels die tot nu toe geïmplementeerd werden, geen quoteringen toekennen aan langere sequenties. Zoals reeds eerder gezegd, werden de beschrijvingsregels bij het genereren van deze combinaties enkel gecheckt voor de beschrijvingen binnen de combinatie zelf. We evalueren nu ook de verbinding van de combinatie met zijn voorgangers aan de hand van deze beschrijvingsregels. oor sommige combinaties zal blijken dat de verbinding met zijn voorgangers ongeldig is. Deze combinaties krijgen dan 1 als quotering. oor de overige combinaties wordt de quotering bepaald door de heuristische regels. ervolgens sorteren we de combinaties volgens aopende quotering en we bekomen: (score: 29.0) 11. (score: 2.0) 12. (score: 24.0) 13. (score: 21.0) 14. (score: 21.0) 1. (score: 21.0) 1. (score: 21.0) 17. (score: 19.0) 18. (score: 19.0) 19. (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) (score: 1.0) n geval van gelijkstand werd een willekeurige volgorde genomen. Op basis van deze gesorteerde combinaties kunnen we nu een sortering opstellen van de beschrijvingen voor cel. Daarvoor overlopen we alle combinaties van boven naar onder, en voegen telkens de beschrijving voor cel toe aan een lijst, voor zover die beschrijving nog niet in de lijst voorkomt. We starten met de eerste combinatie, namelijk. Dit is de combinatie die we als optimaal beschouwen voor de cellen tot en met 8., want deze heeft de hoogste score gekregen. Deze combinatie noemen we dan ook het lokaal harmonisatieplan voor de cellen tot en met 8. Dit is namelijk de combinatie die we bij voorkeur willen realiseren. Om deze combinatie te kunnen realiseren, moeten we dus ook de beschrijving voor cel uit deze combinatie als eerste keuze nemen voor cel. Deze beschrijving is. We voegen deze als eerste toe aan de lijst:

104 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 98 ervolgens bekijken we de tweede combinatie. Dit is de tweede keuze, voor het geval de eerste combinatie niet realiseerbaar blijkt. n deze combinatie vinden we beschrijving voor cel. Deze beschrijving komt nog niet voor in de lijst, dus we voegen ze toe:, ervolgens vinden we in de derde combinatie de beschrijving voor cel. Deze komt wel al voor in de lijst. Het heeft geen zin een beschrijving 2x op te nemen in een gesorteerde lijst, dus we voegen de beschrijving niet toe aan de lijst. Hetzelfde geldt voor combinatie 4 en combinatie. n combinatie vinden we dan de beschrijving 4 toegevoegd: voor cel. Deze beschrijving kwam nog niet voor in de lijst, en wordt dus,, 4 n combinaties 7 t.e.m. 20 vinden we geen beschrijvingen meer voor cel die niet in de lijst voorkomen. De volgorde waarin de beschrijvingen voor cel geprobeerd worden, ligt dus nu vast. De beschrijvingen zullen in deze volgorde geprobeerd worden, en de noten worden ingevuld op dezelfde manier als in het willekeurig algoritme. Merk op dat we hier enkel een volgorde vastleggen voor cel, en dat we niets vastleggen voor cel 7 en 8. We kijken dus meer dan 1 cel vooruit, om de beschrijving voor slechts 1 cel vast te leggen. Op die manier kan het harmonisatieplan voortdurend herzien worden. oor cel 7 wordt dezelfde procedure gewoon opnieuw gestart, waarbij vooruitgekeken wordt tot en met cel 9. Doordat er dan een cel verder vooruitgekeken wordt, is er informatie voorhanden die we in de vorige stap niet hadden. Het is perfect mogelijk dat de combinatie die we voor cel tot en met 8 als eerste keuze beschouwden, namelijk, op basis van deze nieuwe informatie toch niet optimaal blijkt te zijn. De sortering van de beschrijvingen voor cel 7 wordt dan opgesteld op basis van de nieuwe sortering van combinaties. Er wordt hierbij geen rekening meer gehouden met wat we in de vorige stap, toen de volgorde van de beschrijvingen voor cel werd bepaald, als beste keuze beschouwden.

105 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 99 Algoritme in pseudocode oor het algoritme in pseudocode verwijzen we naar Algoritme en Algoritme. Dit algoritme werkt in feite op juist dezelfde manier als het willekeurige algoritme. Enkel de volgorde waarin de beschrijvingen geprobeerd worden is anders, maar deze volgorde wordt van buitenaf bepaald door de policy. Het algoritme in pseudocode voor het bepalen van de volgorde van de beschrijvingen, is weergegeven in Algoritme 7. Op lijn 1 vinden we de methodeoproep genereercombinaties(celindex, aantalooruitkijken). Hier worden alle geldige combinaties gegenereerd voor de cellen vanaf celindex tot en met celindex + aantalooruitkijken. De gegenereerde combinaties zullen dus aantalooruitkijken + 1 cellen lang zijn. Op lijn 3 vinden we de methodeoproep evalueer(c, celindex, 3). Dit betekent dat de combinatie geldt voor positie celindex en volgende, en dat de drie cellen voor celindex ook in rekening moeten genomen worden bij de evaluatie. Uiteraard worden er minder voorafgaande cellen in rekening genomen wanneer celindex < 3. Bij het evalueren wordt eerst de geldigheid van de verbinding nagegaan. ndien ongeldig krijgt de combinatie de score 1. ndien geldig, bepalen de heuristische regels de score. Algoritme 7 Bepalen van de volgorde voor de beschrijvingen Parameters: index van de huidige cel celindex, aantal cellen vooruitkijken aantal- ooruitkijken Returns: gesorteerde lijst met beschrijvingen voor cel celindex 1: Stel combinatielijst genereercombinaties(celindex, aantalooruitkijken) 2: for elke combinatie C in combinatielijst do 3: evalueer(c, celindex, 3) 4: end for : sorteerolgensscore(combinatielijst) : for elke combinatie C in combinatielijst do 7: Stel B eerste beschrijving in C 8: if not gesorteerdelijst.contains(b) then 9: gesorteerdelijst.add(b) 10: end if 11: end for 12: return gesorteerdelijst Resultaten De resultaten van dit algoritme voor de vier standaardvoorbeelden, zijn weergegeven in Figuur 8.12.

106 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 100 Figuur 8.12: Resultaten van het algoritme met vooruitkijken voor beschrijvingen

107 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 101 oorbeeld 1: Gegeven bas Dit algoritme geeft duidelijk een betere keuze voor de beschrijvingen bij de bas dan het willekeurige algoritme. Zo wordt er bvb. nu wel degelijk gekozen in maat 4, waar het vorige algoritme soms koos. Dat de noten nog steeds in willekeurige volgorde gekozen worden, is echter goed te merken. Zo wordt er in het slotakkoord gesprongen met de middenstemmen, die nochtans ook zouden kunnen blijven liggen. Ook in maten 4, 8 en 12 hadden de stemmen kunnen blijven liggen in plaats van te springen, om zo een rustpunt in te lassen op het einde van een muzikale zin. oorbeeld 2: Gegeven sopraan Het algoritme doet er hier 1779 ms over om de sopraan te harmoniseren, wat veel langer is dan de 172 ms die nodig waren om een bas te harmoniseren. Dit komt doordat hier combinaties van beschrijvingen gegenereerd worden, en dit er bij een sopraan veel meer zijn dan bij een bas. Hier speelt het dus voor de uitvoeringstijd wel een rol dat het om een gegeven sopraan gaat. Ook hier is de keuze van de beschrijvingen beter dan bij het willekeurige algoritme, maar opvallend is dat er toch geen goede slotcadens is. Nochtans is een goede slotcadens hier wel degelijk de eerste keuze, maar het algoritme slaagt er niet in deze eerste keuze te realiseren. Dit is een van de problemen die we zullen aanpakken in het volgende algoritme. oorbeeld 3: Modulatie Ook hier vinden we een betere keuze van de beschrijvingen. Bij de modulaties is het spilakkoord correct, maar is er nog steeds geen goede toonaardbevestiging. Zoals bij de slotcadens in het voorbeeld met de sopraan, slaagt het algoritme er niet in de beste keuze te realiseren. Bij het volgende algoritme zal een extra optie voorzien worden om de kans te vergroten dat de toonaardbevestiging na een modulatie kan gerealiseerd worden. oorbeeld 4: Lege cellen Het algoritme doet er 484 ms over om deze sopraan te harmoniseren, waarin drie noten ontbreken. De lege cellen hebben hier duidelijk grote invloed op de tijd die nodig is om de sopraan te harmoniseren. Wel worden de lege cellen ingevuld met een sequentie die van de heuristische regels een hoge score krijgt. De invulling van de lege cellen is dus veel beter dan bij het willekeurig algoritme.

108 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 102 Algemeen De keuze van de beschrijvingen is in dit algoritme duidelijk muzikaler dan in het vorige algoritme. Wel vertonen de noten nog hetzelfde willekeurige gedrag als het willekeurig algoritme. Wat de snelheid betreft, is dit algoritme trager dan het willekeurig algoritme, en heeft het aantal combinaties een duidelijk merkbare invloed op de uitvoeringstijd. De tijden om een opgave te harmoniseren blijven echter altijd aanvaardbaar.

109 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN Algoritme met vooruitkijken voor beschrijvingen en noten Bedoeling Dit algoritme heeft twee bedoelingen. De eerste bedoeling is het verbeteren van de keuze voor de noten. Het vorige algoritme zorgde dan wel voor een betere keuze van de beschrijvingen, maar de noten werden nog steeds in willekeurige volgorde overlopen. Het zou logisch zijn ook voor de noten de voorkeur te geven aan bepaalde noten om zo een mooie melodie te bekomen. We kunnen bvb. grote sprongen in de sopraan vermijden, streven naar tegenbeweging tussen bas en sopraan etc. De tweede bedoeling is de kans vergroten dat het lokaal harmonisatieplan ook echt kan gerealiseerd worden in de cellen. Bij het vorige algoritme treedt hierbij soms een probleem op, dat we hier eerst toelichten. n Figuur 8.13 zien we de eerste maat van een gegeven sopraan in re groot. We passen hierop nu het vorige algoritme toe. Alle geldige combinaties van beschrijvingen worden dus gegenereerd voor de eerste drie cellen, en deze worden gesorteerd volgens aopende score. Figuur 8.13: oorbeeldopgave: gegeven sopraan in re groot Omdat het aantal combinaties vrij groot is, geven we hier enkel de eerste 10 weer: (score: 13.0). (score: 9.0) 7. (score: 9.0) 8. (score: 9.0) 9. 4 (score: 9.0) (score: 9.0) (score: 9.0) (score: 9.0) (score: 9.0) (score: 9.0) Het lokaal harmonisatieplan voor cellen 1 tot en met 3 is dus. We streven er dus naar deze combinatie van beschrijvingen te realiseren. olgens het vorige algoritme kiezen we beschrijving voor de eerste cel. ervolgens worden de noten ingevuld, die in willekeurige volgorde geprobeerd worden. Het resultaat hiervan zien we in Figuur 8.14.

110 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 104 Figuur 8.14: oorbeeldopgave: eerste cel is ingevuld. Dit proces herhaalt zich nu voor cel 2. De combinaties worden nu geëvalueerd met de eerste cel als voorganger. De eerste 10 gesorteerde combinaties zijn de volgende: (score: 19.0). (score: 1.0) 7. (score: 1.0) 8. (score: 1.0) 9. (score: 1.0) 10. (score: 1.0) (score: 1.0) (score: 14.0) (score: 13.0) (score: 13.0) De eerste keuze voor cellen 2 tot en met 4 is uit de vorige stap,, is dus nog steeds een goede keuze. De eerste beschrijvingen die we proberen voor cel 2, zijn dus. Het lokaal harmonisatieplan,,, en dat het probleem zich situeert. Wanneer we de eerste keuze. Het is hier proberen, blijkt dit te falen. De beschrijving vraagt in re groot namelijk een mi in de bas. Een hoge mi is echter geen optie, want die valt buiten het stembereik van de bas. Een lage mi is ook geen optie, want in cel 1 staat er een hoge re in de bas. Dat zou leiden tot een septimesprong in de bas, wat een verboden interval is. Er is dus geen mogelijkheid om deze beschrijving te realiseren. De volgende beschrijving vereist ook een mi in de bas, dus hier hebben we juist hetzelfde probleem. De derde beschrijving slaagt wel en leidt uiteindelijk tot de oplossing die weergegeven is in Figuur 8.1. Deze oplossing is echter duidelijk suboptimaal, want de gebruikte combinatie van beschrijvingen is slechts zevende in de sortering. Het algoritme is er niet in geslaagd de eerste keuze te realiseren. Figuur 8.1: oorbeeldopgave: suboptimale oplossing

111 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 10 eronderstel nu dat in Figuur 8.14 in cel 1 in de bas geen hoge re stond, maar een lage re. Dan hadden we in de tweede cel probleemloos een lage mi in de bas kunnen zetten. De lage mi is niet buiten stembereik voor de bas, en vormt ook geen verboden interval met de lage re in cel 1. De eerste keuze voor de beschrijving voor cel 1,, kan dan wel degelijk gerealiseerd worden, en leidt bvb. tot de oplossing in Figuur 8.1. Deze oplossing is beter, want hier wordt de eerste keuze wel gerealiseerd. Figuur 8.1: oorbeeldopgave: betere oplossing Het probleem hier is dus in feite dat het lokaal harmonisatieplan niet kan gerealiseerd worden, terwijl het met een andere keuze voor de noten in cel 1 wel mogelijk was geweest. Door in de keuze van de noten ook hiermee rekening te houden, willen we dergelijke problemen vermijden Algoritme Dit algoritme heeft twee interessante eigenschappen, namelijk het vergroten van de kans dat het lokaal harmonisatieplan kan gerealiseerd worden, en het verbeteren van de keuze voor de noten. Omdat deze eerste eigenschap het best tot zijn recht komt bij een gegeven sopraan, en de tweede eigenschap beter tot zijn recht komt bij een gegeven bas, bespreken we dit algoritme aan de hand van twee voorbeelden. Het betreft hier andere (kortere) voorbeelden dan de standaardvoorbeelden. oorbeeld 1: Gegeven sopraan We hernemen het voorbeeld uit de vorige sectie. n de vorige sectie bleek dat het algoritme met vooruitkijken voor enkel de beschrijvingen er hier niet altijd in slaagde de beste combinatie te realiseren. We zullen zien dat het algoritme met vooruitkijken voor beschrijvingen en noten hier wel in slaagt. Een ander belangrijk verschil met het vorige algoritme, is dat er niet meer over beschrijvingen en noten geïtereerd wordt, maar wel over combinaties van beschrijvingen en over realisaties van akkoorden. De opgave van het voorbeeld is te zien in Figuur Eerst worden alle combinaties voor de beschrijvingen gegenereerd en gesorteerd, op dezelfde manier als in het vorige

112 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 10 algoritme. Het resultaat hiervan is dezelfde gesorteerde lijst met combinaties als de lijst op pagina 103. De volgende stap is nu het genereren van alle combinaties voor de noten. Dit is echter minder evident dan het genereren van alle combinaties voor de beschrijvingen. oor welke beschrijvingen moeten we immers de combinaties van noten genereren? De oplossing bestond erin af te stappen van het itereren over een gesorteerde lijst beschrijvingen voor één cel, maar over de volledige combinaties van beschrijvingen te itereren. Bij het genereren van alle combinaties van noten, wordt dan telkens de huidige combinatie van beschrijvingen doorgegeven, zodat het algoritme weet voor welke beschrijvingen de combinaties van noten moeten gegenereerd worden. De eerste combinatie van beschrijvingen die geprobeerd wordt, is logischerwijs de combinatie die bovenaan de rangschikking staat, namelijk. Men zou nu kunnen exhaustief alle combinaties van noten genereren voor de gekozen beschrijvingen. We gaan echter op een iets andere manier te werk, waarbij er gemakkelijker tussenresultaten kunnen opgeslagen worden. Eerst worden voor elke cel afzonderlijk alle geldige realisaties gegenereerd van de beschrijving die moet gerealiseerd worden. Hierbij worden dus enkel akkoordregels geëvalueerd. oor cel 1 bestaan er 4 mogelijke realisaties voor de beschrijving. oor cel 2 is er slechts één geldige realisatie voor de beschrijving en voor cel 3 zijn er 10 realisaties mogelijk voor de beschrijving. Al deze mogelijke realisaties voor de cellen 1, 2 en 3 zijn weergegeven in Figuur Deze realisaties worden opgeslagen in een realisatiecataloog. oor elke cel wordt een dergelijke realisatiecataloog bijgehouden die beschrijvingen mapt op een lijst van realisaties. n de implementatie is dit een Map van het type HashMap<Description, List<Realisation> >. ndien de huidige poging niet slaagt, zullen er waarschijnlijk nog andere beschrijvingen voor deze cel geprobeerd worden. Ook voor deze beschrijvingen worden dan de mogelijke realisaties gegenereerd en in de realisatiecataloog opgeslagen. Wanneer we dan een volgende keer (na backtracking) de realisaties nodig hebben voor dezelfde beschrijving voor dezelfde cel, hoeven we ze niet opnieuw te genereren, maar kunnen we ze gewoon in realisatiecataloog opzoeken. De realisatiecataloog dient dus als een soort cache, die de eciëntie ten goede komt. We kennen nu de geldige realisaties voor de drie cellen, maar we weten nog niet welke er op een geldige manier met elkaar kunnen verbonden worden. ia backtracking worden nu de geldige combinaties van deze realisaties bepaald. Hierbij moeten de beschrijvingsregels niet gecheckt worden, want die zijn al gecheckt op het moment dat de combinaties van beschrijvingen gegenereerd werden. Ook de akkoordregels moeten niet gecheckt worden, want die zijn gecheckt bij het genereren van de realisaties. Slechts

113 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 107 Figuur 8.17: Mogelijke realisaties voor cellen 1, 2 en 3 4 combinaties van realisaties blijken geldig te zijn. Deze zijn weergegeven in Figuur Net zoals we bij het vorige algoritme twee cellen vooruitkeken om de beschrijvingen voor één cel te bepalen, kijken we nu twee cellen vooruit om de realisaties voor één cel te bepalen. Alle combinaties in Figuur 8.18 blijken dezelfde invulling te hebben voor cel 1. Slechts één van de vier realisaties voor cel 1 blijkt dus te leiden naar een realisatie van de combinatie. Dit is de realisatie die omkaderd is in Figuur We zullen dan ook enkel deze realisatie als mogelijkheid behouden, omdat we van de andere realisaties nu al weten dat ze het lokaal harmonisatieplan niet kunnen realiseren. De gekozen realisatie wordt dan ingevuld in de cel, waarna het proces zich herhaalt voor cel 2 enz. tot het einde bereikt is. Uiteraard wordt er ook teruggekeerd naar de vorige cellen indien een deeloplossing niet tot een globale oplossing leidt. Merk op dat de andere realisaties daarom niet weggegooid worden. ndien het huidige lokaal harmonisatieplan na backtracking toch niet tot een oplossing blijkt te leiden, zullen andere combinaties van beschrijvingen geprobeerd worden voor de cellen 1 tot en met 3. ndien die realisaties voor deze andere combinaties wel goed blijken te zijn, zullen ze dan wel geprobeerd worden. Er worden in dit algoritme dus zeker nooit geldige mogelijkheden overboord gegooid. Wanneer we bij het selecteren van de realisaties voor het luxeprobleem staan dat meerdere realisaties het lokaal harmonisatieplan kunnen realiseren, kunnen we ook nog prioriteit geven aan de realisatie die tot de meest muzikale invulling leidt. Wat de

114 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 108 Figuur 8.18: Alle realisaties voor de combinatie meest muzikale invulling is, wordt bepaald door de heuristische regels. Deze situatie doet zich echter vaker voor bij een bas dan bij een sopraan, dus bekijken we nu een voorbeeld met een gegeven bas. oorbeeld 2: Gegeven bas De voorbeeldopgave met gegeven bas is weergegeven in Figuur Cel 1 is al ingevuld door het algoritme. Er moet dus nu gestart worden met het invullen van cel 2. Figuur 8.19: oorbeeldopgave met gegeven bas Opnieuw worden alle geldige combinaties voor de beschrijvingen bepaald. Deze worden geëvalueerd, waarbij ook cel 1 in rekening genomen wordt. Er blijken slechts 4 combinaties geldig te zijn: 1. (score: 13.0) 2. (score: 13.0)

115 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN (score: 8.0) 4. (score:.0) De eerste keuze voor de beschrijvingen voor cel 2 tot en met 4 blijkt te zijn. ervolgens worden op dezelfde manier als in het vorige voorbeeld alle realisaties gegenereerd voor cellen 2, 3 en 4, en worden de geldige combinaties van realisaties gegenereerd. We laten de details hiervan achterwege. Er blijken twee realisaties van te zijn voor cel 2 die tot een geldige invulling van het lokaal harmonisatieplan leiden. Deze twee realisaties zijn weergegeven in Figuur Figuur 8.20: Realisaties voor cel 2 die het lokaal harmonisatieplan doen slagen n totaal blijken er 34 combinaties van realisaties te zijn die een geldige invulling zijn voor de beschrijvingen. n Figuur 8.21 zijn enkele hiervan weergegeven, met hun rangnummer in de sortering en hun score. We zien bvb. dat de heuristische regels voorrang geven aan tegenbeweging tussen sopraan en bas. De dalende beweging mi-do in de sopraan in cellen 2 en 3 in de combinatie met rangnummer 1 is bvb. beter dan de stijgende beweging mi-sol die we op dezelfde plaats vinden in de combinatie met rangnummer 2. Anderzijds worden ook de parallelle sexten tussen sopraan en bas als goed beschouwd. Deze zijn te zien in cellen 3 en 4 in de combinaties met rangnummer 1 en 11. Het is ook hier de bedoeling door meerdere cellen vooruit te kijken, een volgorde voor de realisaties voor slechts één cel te bepalen, namelijk cel 2. De beschrijvingen voor cel 2 die het lokaal harmonisatieplan kunnen realiseren hebben we al gevonden, dat zijn de beschrijvingen in Figuur Aangezien we hier twee mogelijkheden hebben die het lokaal harmonisatieplan kunnen realiseren, gaan we ze ook nog sorteren naargelang welke het lokaal harmonisatieplan op de mooiste manier kan realiseren. De realisaties worden gesorteerd op dezelfde manier als de beschrijvingen in het vorige algoritme. De eerste keuze zal dus de realisatie zijn die gebruikt wordt in de beste combinatie in Figuur We bekomen dan de sortering in Figuur De eerste keuze voor de realisatie wordt dan ingevuld in cel 2, waarna het proces zich herhaalt voor cel 3.

116 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 110 Figuur 8.21: Enkele geldige combinaties van realisaties voor Figuur 8.22: Sortering van de realisaties voor cel 2. Algoritme in pseudocode Hier gebruiken we een ander algoritme dan Algoritme en, aangezien er niet over beschrijvingen en noten maar wel over combinaties en realisaties geïtereerd wordt. Er wordt ook niet meer gebruik gemaakt van mutueel recursieve methoden, maar van slechts één recursieve methode probeercombinaties(int celindex). Het algoritme in pseudocode is weergegeven in Algoritme 8. Merk op dat in dit algoritme nergens regels gecontroleerd worden! De realisaties in de lijst realisaties zijn immers altijd geldig, doordat de regels bij het selecteren van de realisaties al gecheckt zijn. ndien geen enkele realisatie kon gevonden worden die aan de regels voldoet, is de lijst realisaties gewoon leeg.

117 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 111 Algoritme 8 Algoritme met vooruitkijken voor beschrijvingen en noten - probeercombinaties(int celindex) Parameters: index v/d huidige cel celindex Returns: true indien succes, anders false 1: { genereer alle geldige combinaties van beschrijvingen} 2: Stel combinaties genereerbeschrijvingencombinaties(celindex) 3: { itereer over de combinaties } 4: for elke combinatie huidigecombinatie in combinaties do : { bepaal alle realisaties die huidigecombinatie kunnen realiseren en sorteer volgens score } : Stel realisaties getgesorteerderealisaties(celindex, huidigecombinatie) 7: { itereer over de realisaties } 8: for elke realisatie R in realisaties do 9: cel.zetrealisatie(r) { zet zowel beschrijving als noten in de cel } 10: if celindex = cellen.length 1 or probeercombinaties(celindex + 1) then 11: return true 12: end if 13: end for 14: end for 1: return false Opmerkingen Combinatie uit vorige stap Bij het vorige algoritme werd in geval van ex aequo tussen combinaties van beschrijvingen een willekeurige volgorde toegekend. Bij dit algoritme is het echter beter in dat geval rekening te houden met de combinatie die voor de vorige cel werd gekozen. Stel bvb. dat voor cel 1 de combinatie A B C de beste combinatie van beschrijvingen was die kon gerealiseerd worden, en dat bij het rangschikken van de combinaties voor cel 2 er een ex aequo is tussen B C D en B' C' D. Het is in dit geval beter voor B C D te kiezen, omdat de realisatie van de beschrijving A in cel 1 zo gekozen is dat die A B C op een zo mooi mogelijke manier kan realiseren. Om deze reden wordt bij het opvragen van de combinaties van beschrijvingen ook telkens de combinatie uit de vorige stap meegegeven. Desactiveren van realisaties Zoals reeds eerder beschreven, worden alle gegenereerde realisaties opgeslagen in een realisatiecataloog. Een optimalisatie die we hier kunnen doorvoeren, is dat niet altijd alle realisaties moeten geprobeerd worden. an realisaties die al eerder geprobeerd zijn, is immers al geweten dat die niet tot een oplossing geleid hebben. Stel bvb. dat in een opgave voor cel 1 eerst de combinatie van beschrijvingen A B C wordt geprobeerd. Stel dat er 10 mogelijke realisaties zijn voor beschrijving A, waarvan er drie het lokaal

118 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 112 harmonisatieplan doen slagen en deze 3 dus geprobeerd worden. ndien deze realisaties uiteindelijk toch niet tot een oplossing leiden, wordt de volgende combinatie voor cel 1 geprobeerd, bvb. A B' C'. Het heeft nu geen zin die 3 realisaties nog opnieuw te proberen, want we weten al dat die falen. We beperken ons dus nu tot de overige 7 realisaties voor A. Dit is goed voor de eciëntie omdat er naarmate men verder komt in de lijst met combinaties, steeds minder realisaties moeten geprobeerd worden. Deze realisaties worden echter niet uit de lijst verwijderd. Wanneer men na backtracking weer op dezelfde cel uitkomt, begint het proces immers weer van voor af aan, en moeten wel degelijk alle realisaties geprobeerd worden. Daarom kunnen realisaties als actief of niet actief gemarkeerd worden. Bij het overlopen van de realisaties, worden niet actieve realisaties overgeslagen. Wanneer het proces start voor een cel, worden alle realisaties (opnieuw) als actief gemarkeerd Resultaten De resultaten van dit algoritme voor de vier standaardvoorbeelden zijn weergegeven in Figuur oorbeeld 1: Gegeven bas Hier vinden we een goede keuze van de beschrijvingen, en de melodie is ook muzikaler. Er zijn bvb. minder grote sprongen dan in de vorige oplossingen voor deze opgave. Wat vooral opvalt, is dat er nu niet meer gesprongen wordt op de rustpunten. Zowel in het slotakkoord, als in maten 4, 8 en 12 blijven de stemmen liggen. oorbeeld 2: Gegeven sopraan Hier vinden we een betere keuze van de beschrijvingen dan bij het vorige algoritme, ondanks het feit dat het vorige algoritme ook vooruitkijkt voor de beschrijvingen. Het huidige algoritme slaagt er immers in de slotcadens te realiseren. Ook hier wordt er op het slotakkoord niet gesprongen. erder valt hier ook de aaneensluitende bas op. De melodie van deze bas is veel minder willekeurig dan die bij het willekeurige algoritme. Er zijn bvb. veel stijgende secunden in de bas, wat door de heuristische regels als goed wordt beschouwd. oorbeeld 3: Modulatie Net zoals de slotcadens in het voorbeeld met de sopraan, slaagt het algoritme er hier ook in de toonaardbevestiging na de modulaties te realiseren.

119 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 113 oorbeeld 4: Lege cellen Dit algoritme vult de lege cellen wel in met een goede keuze voor de beschrijvingen en noten, maar heeft nog meer last van het aantal combinaties dan het vorige algoritme. Het algoritme deed er 17 ms over om deze sopraan te harmoniseren, wat toch wel vrij lang is. Algemeen Dit algoritme presteert duidelijk veel beter dan het willekeurig algoritme qua muzikaliteit. Het algoritme moet echter niet enkel geëvalueerd worden in termen van muzikaliteit, maar ook in termen van het al of niet realiseren van de eerste keuze voor de beschrijvingen. Dat dit algoritme hier beter in slaagt dan het vorige algoritme, blijkt onder andere uit de slotcadenzen en de toonaardbevestigingen na modulaties. Het enige probleem is de tijd wanneer er lege cellen zijn. n de volgende sectie zullen we een optie voorzien om hieraan te verhelpen.

120 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN 114 Figuur 8.23: Resultaten v/h algoritme met vooruitkijken voor beschrijvingen en noten

121 HOOFDSTUK 8. BACKTRACKNG-ALGORTMEN Uitbreidingen Modulaties Bij dit algoritme is er een optie Extra vooruitkijken voor modulaties. n Ramo kan deze optie door de gebruiker aangevinkt worden. Zoals we zagen bij de testvoorbeelden, lukt de toonaardbevestiging vaak wel, maar dit is niet altijd het geval. De bedoeling van deze optie is de kans te vergroten dat na een modulatie een goede toonaardbevestiging kan gerealiseerd worden. Wanneer bij het vooruitkijken een cel wordt gedetecteerd met een modulatie, m.a.w. waar de twee toonaarden niet aan elkaar gelijk zijn, wordt er nog verder vooruitgekeken dan het normale aantal cellen. Er is echter geen vast aantal cellen waarnaar extra vooruitgekeken wordt. Er wordt steeds vooruitgekeken tot en met de derde cel na de modulatie, omdat de heuristische regels voor modulaties betrekking hebben op maximum vier cellen, de cel met de modulatie inbegrepen. Door dit extra vooruitkijken, wordt het aantal combinaties van beschrijvingen wel erg groot. Om hieraan tegemoet te komen, proberen we voor de drie cellen na de modulatie eerst een beperkte set van beschrijvingen, namelijk de beschrijvingen die typisch in een modulatie voorkomen. Dit verkleint het aantal mogelijkheden aanzienlijk. ndien dit faalt, is er geen toonaardbevestiging mogelijk. Het extra vooruitkijken heeft dan ook geen zin meer. n dat geval wordt een tweede poging gedaan zonder extra vooruitkijken, en waarbij wel alle beschrijvingen in beschouwing worden genomen. De beschrijvingen die we als typisch beschouwen na modulaties, zijn,,,, en. n Figuur 8.24 zien we een voorbeeldopgave met een modulatie. Er wordt standaard twee cellen vooruitgekeken. Ter illustratie geven we hier per cel de strategie voor het vooruitkijken: Figuur 8.24: oorbeeldopgave met modulatie Cel 1: kijkt eerst vooruit tot en met cel 3 geen modulatie gedetecteerd alle beschrijvingen voor cel 1 t.e.m. 3

Geschreven Harmonie. Annemarijn Verbeeck Page 0

Geschreven Harmonie. Annemarijn Verbeeck Page 0 Geschreven Harmonie Annemarijn Verbeeck Page 0 Geschreven harmonie I. Inleiding 1. Tessituur Tessituur van de sopraan Tessituur van de alt Tessituur van de tenor Tessituur van de bas 2. Notatie van de

Nadere informatie

Toonhoogte. Toonaarden Groot of klein

Toonhoogte. Toonaarden Groot of klein Toonhoogte Een klank ontstaat door trilling. Een snaar, een riet, een trommelvel, wordt aan het trillen gebracht, en deze trilling doet ook luchtdeeltjes trillen, waardoor het geluid zich voortplant. Hoe

Nadere informatie

Hagelandse Academie voor Muziek en Woord OEFENINGEN BOEK L2 NAAM:... Hagelandse Academie voor Muziek en woord - AMV L 2 - Oefeningenboek p.

Hagelandse Academie voor Muziek en Woord OEFENINGEN BOEK L2 NAAM:... Hagelandse Academie voor Muziek en woord - AMV L 2 - Oefeningenboek p. Hagelandse Academie voor Muziek en Woord OEFENINGEN BOEK L2 NAAM:... Hagelandse Academie voor Muziek en woord - AMV L 2 - Oefeningenboek p. 1 Oefenblad 1 Wijzigingstekens 3-4 Oefenblad 2 Hele en halve

Nadere informatie

Kempische Steenweg 400 3500 Hasselt Tel. : 011 27 84 60 www.musart.be. Basistheorie m.b.t. de toelatingsproeven voor het 4 e en 5 e jaar

Kempische Steenweg 400 3500 Hasselt Tel. : 011 27 84 60 www.musart.be. Basistheorie m.b.t. de toelatingsproeven voor het 4 e en 5 e jaar Kempische Steenweg 400 3500 Hasselt Tel. : 011 27 84 60 www.musart.be Basistheorie m.b.t. de toelatingsproeven voor het 4 e en 5 e jaar 1. INTERVALLEN OF TOONAFSTANDEN 1.1. Inleiding De onderlinge verhouding

Nadere informatie

Hagelandse Academie voor Muziek en Woord OEFENINGENBOEK. Naam:...

Hagelandse Academie voor Muziek en Woord OEFENINGENBOEK. Naam:... Hagelandse Academie voor Muziek en Woord OEFENINGENBOEK L3 Naam:.... INHOUDSTABEL A. HERHALING GROTE EN KLEINE TERTSTOONLADDERS... 3 B. GROTE EN KLEINE TERTSTOONLADDERS MET # EN B... 4 C. DE KLEINE TERTSTOONLADDER

Nadere informatie

Algemene Muziek Theorie 3de jaar

Algemene Muziek Theorie 3de jaar Algemene Muziek Theorie 3de jaar AMT M3-1 - Theorie A. HERHALING AMT M1 & 2... - 2-1. Hoofdakkoorden en nevenakkoorden; verbindingsregels.... - 2-2. Akkoordverloopschema.t... - 3-3. Harmoniseren van melodieën,

Nadere informatie

Hagelandse Academie voor Muziek en Woord THEORIE L3. Naam:...

Hagelandse Academie voor Muziek en Woord THEORIE L3. Naam:... Hagelandse Academie voor Muziek en Woord THEORIE L3 Naam:.... INHOUDSTABEL A. Herhaling grote en kleine tertstoonladders... 3 1. Grote tertstoonladders... 3 2. Kleine tertstoonladders... 3 3. Volgorde

Nadere informatie

Hagelandse Academie voor Muziek en Woord THEORIE L2 NAAM:... Hagelandse academie voor muziek en woord - AMV L2 : Theorie p.

Hagelandse Academie voor Muziek en Woord THEORIE L2 NAAM:... Hagelandse academie voor muziek en woord - AMV L2 : Theorie p. Hagelandse Academie voor Muziek en Woord THEORIE L2 NAAM:... Hagelandse academie voor muziek en woord - AMV L2 : Theorie p. Wijzigingstekens 3 Toonladder van Fa groot 3-4 Fasleutel 4 Syncope 4 Triool 5

Nadere informatie

sample Inhoudstafel :

sample Inhoudstafel : Inhoudstafel : Inhoudstafel... 1 Begeleidingspraktijk?... 2 Vier deelgebieden... 2 Praktische Harmonie en Begeleiding... 3 Akkoorden... 3 Letterbenamingen en Akkoordsymbolen... 4 Omkeringen... 6 De Hoofdgraden...

Nadere informatie

Muziek Theorie 1ste jaar

Muziek Theorie 1ste jaar Muziek Theorie 1ste jaar 1 Theorie A. HERHALING ALGEMENE MUZIEKTHEORIE... 3 1. hoofd- en nevenakkoorden... 3 2. melodiebouw... 5 3. versieringsnoten... 5 4. letterakkoorden... 6 B. DE KWART-SIXT LIGGING...

Nadere informatie

Toonaarden. Grote en kleine tertstoonladders

Toonaarden. Grote en kleine tertstoonladders Toonaarden Grote en kleine tertstoonladders De meeste westerse muziek staat in een grote of een kleine toonaard. Die twee soorten toonaarden heb je al uitgebreid bekeken bij AMV. Even een herhaling. Er

Nadere informatie

EEN SELECTIE UIT: Algemene Muziekleer. Ch.Hendrikx & L.Jakobs

EEN SELECTIE UIT: Algemene Muziekleer. Ch.Hendrikx & L.Jakobs EEN SELECTIE UIT: Algemene Muziekleer Ch.Hendrikx & L.Jakobs versie 2009 Inhoud Notatie... 2 Sleutels, hulplijnen,... 2 Octaafaanduiding... 3 Voortekens... 4 Notenwaarden en rusten... 8 Toonladders...

Nadere informatie

De hele noot Deze noot duurt 4 tellen

De hele noot Deze noot duurt 4 tellen HERHALING KLAS 1. In de eerste klas heb je geleerd hoe je een melodie of een ritme moet spelen. Een ritme is een stukje muziek dat je kunt klappen of op een trommel kunt spelen. Een ritme bestaat uit lange

Nadere informatie

THEORIE D. Begrippen : toonsoort,toonladder,akkoord,drieklank,vierklank,grondtoon,leidtoon,mineur, majeur,modaal.

THEORIE D. Begrippen : toonsoort,toonladder,akkoord,drieklank,vierklank,grondtoon,leidtoon,mineur, majeur,modaal. THEORIE D Wat moet je leren : Begrippen : toonsoort,toonladder,akkoord,drieklank,vierklank,grondtoon,leidtoon,mineur, majeur,modaal. De grote en kleine terts toonladders. Kerktoonladders : dorisch. De

Nadere informatie

sample G = sol Let op volgende zaken:

sample G = sol Let op volgende zaken: Inhoud 1. de toonladder van do 4 2. de intervallen 9 3. de wondere wereld der drieklanken 11 4. diatonische harmonie 14 5. pentatonieken 18 6. de wonderbaarlijke geschiedenis van I, IV en V 22 7. wat kan

Nadere informatie

Hagelandse Academie voor Muziek en Woord L 1 NAAM:... Hagelandse academie voor Muziek en Woord - AMV L1 : Theorie p.

Hagelandse Academie voor Muziek en Woord L 1 NAAM:... Hagelandse academie voor Muziek en Woord - AMV L1 : Theorie p. Hagelandse Academie voor Muziek en Woord THEORIE L 1 NAAM:... Hagelandse academie voor Muziek en Woord - AMV L1 : Theorie p. We schrijven noten op een NOTENBALK. Die bestaat uit 5 lijnen. We tellen ze

Nadere informatie

sample Les 17 - $. 2. G & \ \.. % \ \ #. " 2. Am ...#. -.# .! - %. # ... D -.!... E.! - Les 17: CD 2 nr 9 û $... & \ \ 1. D

sample Les 17 - $. 2. G & \ \.. % \ \ #.  2. Am ...#. -.# .! - %. # ... D -.!... E.! - Les 17: CD 2 nr 9 û $... & \ \ 1. D Les 17 Toonaard? O groot of la klein? SOL groot of mi klein? & \ \ & \ \ antabile (zangerig) legato Les 17: 2 nr 9 û $ & # " & 1 & #! 2 Em & Em ine 0 0 % \ \ - 1 & 7 2 Q E 0! - - $ $ E Q 2 Em 1 olden River

Nadere informatie

Reinier Maliepaard: kerktoonsoorten ofwel modi

Reinier Maliepaard: kerktoonsoorten ofwel modi Reinier Maliepaard: kerktoonsoorten ofwel modi 1.1. Systematisering Lang nadat de Gregoriaanse melodieën al ingeburgerd waren, werden deze gesystematiseerd tot in 8 kerktoonsoorten ofwel modi. De volgende

Nadere informatie

sample L E S 18 â. " % O O O O \ \ % O O O O . =75 Uit het fragment For Children :

sample L E S 18 â.  % O O O O \ \ % O O O O . =75 Uit het fragment For Children : Uit het fragment For Children : a) Noteer de maatcijfers b) oorstreep wat fout is: For Children bevat veel maatwisselingen c) Verklaar de dynamische tekens maatveranderingen F = forte (luid, sterk) accent,

Nadere informatie

Alles over akkoorden en akkoordverbindingen. Klassieke Harmonieleer

Alles over akkoorden en akkoordverbindingen. Klassieke Harmonieleer Alles over akkoorden en akkoordverbindingen Klassieke Harmonieleer 1 INHOUD 1. INLEIDING 2. ALGEMENE BEGRIPPEN 2.1. INLEIDING. 2.2. TWEEKLANKEN. 2.2.1. Inleiding. 3 2.2.2. Overzicht van de enkelvoudige

Nadere informatie

Muziektheorie-examen D

Muziektheorie-examen D Muziektheorie-examen D 2016 In te vullen door de leerling Naam: In te vullen door de docent Aantal punten... Docent:.. Cijfer.. Instrument: Geslaagd: Ja / nee Het examen bestaat uit de volgende onderdelen:

Nadere informatie

Tips voor gehoortraining

Tips voor gehoortraining Tips voor gehoortraining Doel Gehoortraining is nooit doel op zich, maar staat in dienst van je ontwikkeling tot musicus. Gehoortraining geeft daarvoor de noodzakelijke en fundamentele ondersteuning. Bij

Nadere informatie

samengesteld bovenste cijfer is 4 of meer

samengesteld bovenste cijfer is 4 of meer Werkblad C Les 1 Naam:.. enkelvoudig bovenste cijfer is 2 of samengesteld bovenste cijfer is 4 of meer regelmatig onregelmatig 2-delig (binair) -delig (ternair) 2 2 2 2 4 8 2 4 8 4 4 4 6 6 12 4 2 8 4 8

Nadere informatie

Impressionisme. Wanneer? Kenmerken van muziek uit het impressionisme

Impressionisme. Wanneer? Kenmerken van muziek uit het impressionisme Impressionisme Wanneer? Aan het einde van de negentiende eeuw lopen verschillende stijlen door elkaar. Je had de postromantiek in Duitsland, die verder gingen in romantische stijl met vooral Wagner als

Nadere informatie

ALGEMENE MUZIEKLEER VOOR HET B-EXAMEN

ALGEMENE MUZIEKLEER VOOR HET B-EXAMEN ALGEMENE MUZIEKLEER VOOR HET B-EXAMEN INHOUDSOPGAVE TEMPO AANDUIDINGEN... 3 INTERVALLEN... 4 MAATSOORTEN EN RITME TRIOLEN... 5 MAATSOORTEN EN RITME - SYNCOPEN... 6 MAATSOORTEN EN RITME - HET SWINGRITME...

Nadere informatie

De opbouw van notenladders

De opbouw van notenladders De opbouw van notenladders Door Dirk Schut Voorwoord Iedereen kent de notennamen wel: a, bes, b, c, cis, d, es, e, f, fis, g en gis, maar wat stellen deze namen voor en waarom vinden we juist deze noten

Nadere informatie

MUZIEK EN WISKUNDE: samen klinkt het goed! INTERVALLEN: KWINT EN OCTAAF

MUZIEK EN WISKUNDE: samen klinkt het goed! INTERVALLEN: KWINT EN OCTAAF LES 1 INTERVALLEN: KWINT EN OCTAAF Basis notenleer We hebben 7 notennamen: do re mi fa- sol la si (-do) Deze notennamen kunnen we ook wel in letters weergeven: C D E F G A B (-C) Als we dan terug bij do

Nadere informatie

Hagelandse Academie voor Muziek en Woord THEORIE L4. Naam:...

Hagelandse Academie voor Muziek en Woord THEORIE L4. Naam:... Hagelandse Academie voor Muziek en Woord THEORIE L4 Naam:.... INHOUDSTABEL A. Tertstoonladders 3 1. Grote tertstoonladders 3 1) Herhaling grote tertstoonladders 3 2) Volgorde van # en b 3 3) De grote voortekening-truk.

Nadere informatie

Intervallen. Een interval is de afstand tussen twee tonen. Dit kan melodisch of harmonisch zijn.

Intervallen. Een interval is de afstand tussen twee tonen. Dit kan melodisch of harmonisch zijn. Intervallen Intervallen Een interval is de afstand tussen twee tonen. Dit kan melodisch of harmonisch zijn. De benaming is hetzelfde voor zowel melodisch als harmonisch. Voor de uitleg gebruik ik C groot.

Nadere informatie

SOLFEGE GEHOORVORMING

SOLFEGE GEHOORVORMING SOLFEGE GEHOORVORMING TIPS & TRICKS ArtEZ Conservatorium Reinier Maliepaard 1 INHOUDSOPGAVE 1. intervallen 2. toonladders 3. melodie 4. meerstemmigheid 5. horen en lezen ArtEZ Conservatorium Reinier Maliepaard

Nadere informatie

Een handige link met wat basisinformatie over akkoorden is: http://studwww.ugent.be/~mfvhauwe/wauter/reason/notenenakkoorden.html

Een handige link met wat basisinformatie over akkoorden is: http://studwww.ugent.be/~mfvhauwe/wauter/reason/notenenakkoorden.html Een handige link met wat basisinformatie over akkoorden is: http://studwww.ugent.be/~mfvhauwe/wauter/reason/notenenakkoorden.html Ze gaan er helaas er niet zo diep op in, maar om snel wat dingen duidelijk

Nadere informatie

KSO STUDIERICHTING MUZIEK

KSO STUDIERICHTING MUZIEK KSO STUDIERICHTING MUZIEK TECHNISCHE EN MUZIKALE TOELATINGSEISEN Schooljaar 2012-2013 Beste leerling/ouder Hieronder vind je de nodige uitleg bij de technische en muzikale toelatingseisen voor het schooljaar

Nadere informatie

1. Het ritme wat ik voor ga spelen bestaat uit twee bouwstenen en extra halve noot. Schrijf de nummers van de goede bouwstenen op de juiste plek.

1. Het ritme wat ik voor ga spelen bestaat uit twee bouwstenen en extra halve noot. Schrijf de nummers van de goede bouwstenen op de juiste plek. Werkblad B Les 1 Naam:. 1. Het ritme wat ik voor ga spelen bestaat uit twee bouwstenen en extra halve noot. Schrijf de nummers van de goede bouwstenen op de juiste plek.. Het ritme wat ik voor ga spelen

Nadere informatie

Hennie Schouten HARMONIELEER. Oud-Hoofdleraar Amsterdamsch Conservatorium. Elfde druk

Hennie Schouten HARMONIELEER. Oud-Hoofdleraar Amsterdamsch Conservatorium. Elfde druk HARMONIELEER HARMONIELEER Boekbeschrijving De harmonieleer wordt door vele leerlingen als het moeilijkste muziek-theoretische vak beschouwd. Teneinde voor hen de weg zoveel mogelijk te effenen, is er in

Nadere informatie

INHOUDSOPGAVE. Harmoniseren met I, IV en V in de toonsoort C Pagina 6. Harmoniseren met I, IV en V in de toonsoorten D, F en G Pagina 11

INHOUDSOPGAVE. Harmoniseren met I, IV en V in de toonsoort C Pagina 6. Harmoniseren met I, IV en V in de toonsoorten D, F en G Pagina 11 INHOUDSOPGAVE Voorwoord Pagina 2 De basis Pagina 3 Harmoniseren met I, IV en V in de toonsoort C Pagina 6 Harmoniseren met I, IV en V in de toonsoorten D, F en G Pagina 11 Harmoniseren met I t/m VI Pagina

Nadere informatie

Begintermen Basiscursus 1

Begintermen Basiscursus 1 Begintermen Basiscursus 1 noten kunnen lezen en benoemen in de vioolsleutel, met kruisen en mollen notenwaarden en rusten van hele t/m zestiende kunnen lezen en benoemen inzicht hebben in maatsoorten:

Nadere informatie

Inleiding in de jazzharmonie op de piano

Inleiding in de jazzharmonie op de piano Inleiding in de jazzharmonie op de piano Masja van der Meer INLEIDING 3 HOE GEBRUIK JE HET BOEK? 4 Tijdsplanning studeren: 5 HOOFDSTUK 1: DE BASIS 6 Welke kennis en vaardigheden heb je nodig? 6 Notatie,

Nadere informatie

Toelatingsexamen LUISTERVAARDIGHEDEN

Toelatingsexamen LUISTERVAARDIGHEDEN ANTWOORDEN Toelatingsexamen blad Conservatorium Utrecht - Bmus-klassiek LUISTERVAARDIGHEDEN 206 OPDRACHT : omcirkel het voorgespeelde fragmentje A B 2A 2B A B 4A 4B OPDRACHT 2: geef de maatsoort van de

Nadere informatie

Eindexamen muziek vwo 2007-I

Eindexamen muziek vwo 2007-I Beoordelingsmodel J.H. Schein - Da Jakob vollendet hatte 1 maximumscore 1 één van de volgende: Soms is het (eerste) interval stijgend, soms dalend. Soms is het interval een secunde, soms een terts. ook

Nadere informatie

ANTWOORDBLAD D-EXAMEN THEORIE 2017

ANTWOORDBLAD D-EXAMEN THEORIE 2017 ANTWOORDBLAD D-EXAMEN THEORIE 017 LUISTERVRAGEN Je hoort vier drieklanken. Geef aan of ze majeur, mineur, overmatig of verminderd zijn Punten 1 1. majeur mineur overmatig verminderd. majeur mineur overmatig

Nadere informatie

Voor polyfone muziek bestaan er een aantal specifieke vormen. De belangrijkste daarvan zijn de canon en de fuga.

Voor polyfone muziek bestaan er een aantal specifieke vormen. De belangrijkste daarvan zijn de canon en de fuga. Polyfone muziek Inleiding Polyfonie is een Grieks woord dat letterlijk veel klank betekent. Het wordt gebruikt voor meerstemmige muziek waarbij elke stem zelfstandig is. Er is dus niet één melodie met

Nadere informatie

De snaarinstrumenten. 1. De strijkinstrumenten

De snaarinstrumenten. 1. De strijkinstrumenten De snaarinstrumenten Bij snaarinstrumenten of chordofonen wordt de klank voortgebracht door een snaar. Je kan een snaar op verschillende manieren aan het trillen brengen. Hierdoor kunnen we de instrumenten

Nadere informatie

HOOFDSTUK 13 : CADENSVORMING

HOOFDSTUK 13 : CADENSVORMING HOOFDSTUK 13 : CADENSVORMING Het doel van akkoorden kan je best omschrijven als : de basis waarop een melodie zich kan op voortbewegen. In de muziektheorie kunnen we nog een stap verder gaan : de harmonie

Nadere informatie

Muziektheorie. Uitgave januari 2004. Tekst: DIRK VIAENE

Muziektheorie. Uitgave januari 2004. Tekst: DIRK VIAENE Uitgave januari 2004 Tekst: DIRK VIAENE Inhoud 1 Inhoud 1 Inhoud... 1 2 Toonsysteem en toonnotatie...4 3 Tonaliteit en toonladders...5 3.1 Tonaliteit...5 3.2 Toonladders...5 3.2.1 Stamtoonladders...5 3.2.2

Nadere informatie

Over afstanden in een toonladder, majeur en mineur (noodzakelijk voorproefje)

Over afstanden in een toonladder, majeur en mineur (noodzakelijk voorproefje) Gelders Projectkoor / Project van huis en haard / info Wat maakt muziek westers of oosters/arabisch? De verklaring hiervoor vanuit de muziektheorie is interessant in het project van huis en haard. Daarom

Nadere informatie

1.2 Maatwisseling, polyritmiek, polymetriek en hemiool

1.2 Maatwisseling, polyritmiek, polymetriek en hemiool 1 Inhoud 1 Maat en ritme 1.1 Onderwerpen uit C....2 1.2 Maatwisseling, polyritmiek, polymetriek en hemiool...2 2 Toonladders 2.1 Onderwerpen uit C....3 2.2 De pentatonische toonladder, hele toonstoonladder

Nadere informatie

Voorbereidend Wetenschappelijk Onderwijs Tijdvak 2 Dinsdag 22 juni uur

Voorbereidend Wetenschappelijk Onderwijs Tijdvak 2 Dinsdag 22 juni uur Muziek Examen VWO Voorbereidend Wetenschappelijk Onderwijs Tijdvak Dinsdag juni.0 6.00 uur 9 99 Opgavenboekje Examennummer... Naam... Dit examen bestaat uit 54 vragen. Voor elk vraagnummer is aangegeven

Nadere informatie

ODM theoretisch toelatingsexamen

ODM theoretisch toelatingsexamen ODM theoretisch toelatingsexamen Gehoortest Herkennenbenoemen enof noteren: Majeur- vs mineurtonaliteit Maatsoorten herkennen Intervallen tm het octaaf Drieklanken in grondligging en omkering Melodische

Nadere informatie

Impressionisme. Wanneer? Kenmerken van muziek uit het impressionisme

Impressionisme. Wanneer? Kenmerken van muziek uit het impressionisme Impressionisme Wanneer? Aan het einde van de negentiende eeuw lopen verschillende stijlen door elkaar. Je had de postromantiek in Duitsland, die verder gingen in romantische stijl met vooral Wagner als

Nadere informatie

Liedvormen. Liedvormen

Liedvormen. Liedvormen Liedvormen - Stel dat je maar een kort liedje mag zingen of spelen. Bij welk van deze stukken kan je maar een deel ervan zingen, zonder dat het vreemd klinkt? Duid deze onderverdelingen aan op de partituur.

Nadere informatie

HOOFDSTUK 18 : INLEIDING TOT DE RITMIEK

HOOFDSTUK 18 : INLEIDING TOT DE RITMIEK HOOFDSTUK 18 : INLEIDING TOT DE RITMIEK Hierbij starten we met het 2de deel van deze gitaarcursus; de ritmiek. Het noteren van ritmische patronen is in de muzieknotatie als laatste ingevoerd, in het begin

Nadere informatie

Eindexamen Muziek vwo 2003-I

Eindexamen Muziek vwo 2003-I 3 Antwoordmodel Aan het juiste antwoord op een meerkeuzevraag wordt 1 punt toegekend. Orlandus Lassus - Osculetur me 1 onderdeel 4 2 twee van de volgende: Het onderdeel is volledig achtstemmig. Er wordt

Nadere informatie

wat betekent: wat betekent: al fine allegro wat betekent: wat betekent: andante crescendo cresc. wat betekent: wat betekent: da capo

wat betekent: wat betekent: al fine allegro wat betekent: wat betekent: andante crescendo cresc. wat betekent: wat betekent: da capo al fine allegro andante crescendo cresc. da capo decrescendo decresc. diminuendo dim. forte levendig en snel tot het einde versterken gaande verzachten herhalen vanaf het begin luid verzachten legato lento

Nadere informatie

Annemarijn Verbeeck,

Annemarijn Verbeeck, DEEL II 1. Akoestika 1.1 Geluid Definitie Menselijk gehoor Trilling Eigenschappen van toon Annemarijn Verbeeck, 2011 10 Combinatietonen Combinatietonen zijn tonen die zacht meeklinken bij 2 of meerdere

Nadere informatie

Copyright Co Atpress

Copyright Co Atpress Het Ei van Co Beknopte gebruiksaanwijzing Akkoordenschuifsysteem van Co Atpress (Kees Jaspers) Het in twee kleuren uitgevoerde akkoordenschuifsysteem Het Ei van Co berust geheel op algemene muziektheoretische

Nadere informatie

Begrippenlijst muziektheorie

Begrippenlijst muziektheorie Begrippenlijst muziektheorie Hieronder staat de begrippenlijst muziektheorie. De meeste begrippen worden uitgelegd in diverse video s op pabowijzer als onderdeel van het boek Nieuw Geluid. ISBN: 978 90

Nadere informatie

THEORIE B. Begrippen : toonsoort,toonladder,akkoord,drieklank,grondtoon,leidtoon. Een melodie die voorgespeeld wordt opschrijven (melodisch dictee).

THEORIE B. Begrippen : toonsoort,toonladder,akkoord,drieklank,grondtoon,leidtoon. Een melodie die voorgespeeld wordt opschrijven (melodisch dictee). THEORIE B Wat moet je leren : Basisstof (laatste twee bladen). Begrippen : toonsoort,toonladder,akkoord,drieklank,grondtoon,leidtoon. De grote terts toonladders t/m drie kruizen en mollen. Voortekens van

Nadere informatie

op een constant tempo leert lezen. Nemen we onderstaande eens door : Eerst bekijk je de ritmische parameter

op een constant tempo leert lezen. Nemen we onderstaande eens door : Eerst bekijk je de ritmische parameter Om in het begin het noorden niet te verliezen gaan we alle parameters opsplitsen in verschillende hoofdstukken, zodat je alle informatie in stukken leert kennen. Voorlopig gebruiken we 2 parameters ; toonhoogte/notennaam

Nadere informatie

NOOTZAKEN BASISBEGRIPPEN UIT DE THEORIE HOOFDSTUK NEGEN BASISBEGRIPPEN VAN HET CONTRAPUNT VAN DE WESTERSE MUZIEK

NOOTZAKEN BASISBEGRIPPEN UIT DE THEORIE HOOFDSTUK NEGEN BASISBEGRIPPEN VAN HET CONTRAPUNT VAN DE WESTERSE MUZIEK RUDOLF RASCH MIJN WERK OP INTERNET, DEEL TWEE NOOTZAKEN BASISBEGRIPPEN UIT DE THEORIE VAN DE WESTERSE MUZIEK HOOFDSTUK NEGEN BASISBEGRIPPEN VAN HET CONTRAPUNT Verwijzingen naar deze tekst graag als volgt:

Nadere informatie

Algemene Muziek Theorie 2de jaar

Algemene Muziek Theorie 2de jaar Algemene Muziek Theorie 2de jaar - 1 - Theorie A. Herhaling AMT M1...- 3-1. Maatsoorten en ritme, intervallen, toontrapbenamingen etc....- 3-2. Herhaling hoofdakkoorden I IV en V (T, S en D)...- 3 - B.

Nadere informatie

Voorwoord bij het leerlingenboek

Voorwoord bij het leerlingenboek Voorwoord bij het leerlingenboek Deze AMV-methode is geschreven omdat er een leemte was in specifiek materiaal voor volwassenen. De theoretische invulling is bewust eenvoudig gehouden. Voor hongerigen

Nadere informatie

Eisen standaardpakket Algemene Theoretische vakken, klassiek

Eisen standaardpakket Algemene Theoretische vakken, klassiek Eisen standaardpakket Algemene Theoretische vakken, klassiek SOLFÈGE A / B Solfège A: klassikaal a. het herkennen/noteren van een aantal intervallen, drie- en vierklanken (in functionele liggingen) met

Nadere informatie

, 7 traptreden (een septet heeft 7 spelers) Het octaaf is het interval tussen bijvoorbeeld een lage d en een hoge d, of een lage gis en een

, 7 traptreden (een septet heeft 7 spelers) Het octaaf is het interval tussen bijvoorbeeld een lage d en een hoge d, of een lage gis en een De intervallen De afstand tussen twee tonen noem je een interval. Ze hebben eeuwenoude namen: prime, secunde, terts, kwart en kwint die afstammen van de Latijse rangtelwoorden (primus: eerste, secundus:

Nadere informatie

Tàakbladen. 1.[Jll I ll,[.t. Jll. J,h. "-rfi[n. Jil. ,;;;;.;;; c) ?),hj. *À*" nftg -*_***^ t o* u...e,*o\.*...\r.*-q.*..."*.à. Legato:,q*\^r."íà*}sJ!

Tàakbladen. 1.[Jll I ll,[.t. Jll. J,h. -rfi[n. Jil. ,;;;;.;;; c) ?),hj. *À* nftg -*_***^ t o* u...e,*o\.*...\r.*-q.*...*.à. Legato:,q*\^r.íà*}sJ! Tàakbladen Les Vul aan. Schrijf de naam of afkorting. Langzaam = R* o.. *À*" nftg -*_***^ \l* tqft"*rslàe- /\*) \, \.***.* *.{:-.cb- -,;;;;.;;; c) f-leef de betekenis. staccato' \e*."x.,..ft\fsitào* Legato:,q*\^r."íà*}sJ!

Nadere informatie

THEORIE A INHOUD. Hoofdstuk 1 Het muziekschrift blz. 2. Hoofdstuk 2 Notenwaarden en rusttekens blz. 2 / 3. Hoofdstuk 3 Maatsoorten I blz.

THEORIE A INHOUD. Hoofdstuk 1 Het muziekschrift blz. 2. Hoofdstuk 2 Notenwaarden en rusttekens blz. 2 / 3. Hoofdstuk 3 Maatsoorten I blz. THEORIE A INHOUD Hoofdstuk 1 Het muziekschrift blz. 2 Hoofdstuk 2 Notenwaarden en rusttekens blz. 2 / 3 Hoofdstuk 3 Maatsoorten I blz. 3 Hoofdstuk 4 Tempo blz. 4 Hoofdstuk 5 Dynamische tekens blz. 4 Hoofdstuk

Nadere informatie

Theorie groep 2. Popcursus

Theorie groep 2. Popcursus Theorie groep 2 Popcursus DWORP 2015 In het najaar: Harmonie in de Praktijk Improvisatieworkshops Inleiding tot de Jazzgeschiedenis Zie: halewynstichting.be POPCURSUS 2015 THEORIE GROEP 2 1 THEORIE GEVORDERDEN

Nadere informatie

Diatoniek Cadensen en voicelead Hoofdstuk

Diatoniek Cadensen en voicelead Hoofdstuk Diatoniek Cadensen en voicelead Hoofdstuk 11 12-13 CM Diatonische akkoorden Dm Em 2 FM GM 3 Am B 4 Diatonische graadsakkoorden Graadsakkoorden blijven ONGEWIJZIGD Ze zijn in ELKE toonaard DEZELFDE De VIe

Nadere informatie

Eindexamen Muziek havo 2003-I

Eindexamen Muziek havo 2003-I 3 Antwoordmodel Aan het juiste antwoord op een meerkeuzevraag wordt 1 punt toegekend. Silvia, mijn lief 1 cello/gamba 1 luit/gitaar 1 2 sopraan 1 tenor 1 3 per juiste regel 1 www. - 1 - 4 amineur Indien

Nadere informatie

De symfonie. Welke symfonie hoor je? Schrijf de juiste volgorde in de kaders bij de cd-hoezen.

De symfonie. Welke symfonie hoor je? Schrijf de juiste volgorde in de kaders bij de cd-hoezen. De symfonie Welke symfonie hoor je? Schrijf de juiste volgorde in de kaders bij de cd-hoezen. Welke van deze symfonieën spreekt je het meest aan en waarom? Welke van deze symfonieën spreekt je het minst

Nadere informatie

Theorie A examen G I T A A R

Theorie A examen G I T A A R Theorie A examen G I T A A R De stemming van de gitaar is e b g D A E E E N P A A R S P E C I A L E E F F E C T E N Z I J N : G O L P E : T I K O P D E K L A N K K A S T G L I S S A N D O : H O O R B A

Nadere informatie

THEORIE C. Begrippen : toonsoort,toonladder,akkoord,drieklank,grondtoon,leidtoon

THEORIE C. Begrippen : toonsoort,toonladder,akkoord,drieklank,grondtoon,leidtoon THEORIE C Wat moet je leren : Basisstof (laatste twee bladen) Begrippen : toonsoort,toonladder,akkoord,drieklank,grondtoon,leidtoon De grote en kleine terts toonladders t/m drie kruizen en mollen De grote

Nadere informatie

Een regelgebaseerd softwareraamwerk voor het redeneren over muziekschriftuur

Een regelgebaseerd softwareraamwerk voor het redeneren over muziekschriftuur Universiteit Gent Faculteit Ingenieurswetenschappen Vakgroep toegepaste wiskunde en informatica Voorzitter: Prof. Dr. Guido Vanden Berghe Een regelgebaseerd softwareraamwerk voor het redeneren over muziekschriftuur

Nadere informatie

Toonladders en 3-klanken. Toonladders en 3-klanken. Toonladders en 3-klanken. PHCC-G Walk-in. Beginselen van muziek-theo-rie.

Toonladders en 3-klanken. Toonladders en 3-klanken. Toonladders en 3-klanken. PHCC-G Walk-in. Beginselen van muziek-theo-rie. Toonladders en 3-klanken PHCC-G Walk-in Beginselen van muziek-theo-rie Noodzakelijke kennis bij gebruik van muziekprogramma's Akkoorden-hulpje bij melodiën Theo Henrichs - 29 Toonladders en 3-klanken Agenda

Nadere informatie

Module 3e. Algemene muziekleer, componeren en gehoortraining met Music Ace

Module 3e. Algemene muziekleer, componeren en gehoortraining met Music Ace Module 3e Algemene muziekleer, componeren en gehoortraining met Music Ace Studielast: 4-14 uur. Doel: Leren omgaan met dit softwarepakket of onderdelen ervan (zoals het Doodle pad om mee te componeren).

Nadere informatie

Dit keer ga je aan de slag met het fantastische stuk River flows van Yurima waarin je zult ontdekken;

Dit keer ga je aan de slag met het fantastische stuk River flows van Yurima waarin je zult ontdekken; River flows Yiruma Dit keer ga je aan de slag met het fantastische stuk River flows van Yurima waarin je zult ontdekken; - dat het eigenlijk uit 2 thema s bestaat waarop gevarieerd wordt - de basistheorie

Nadere informatie

Theorie groep 1. Jazzcursus

Theorie groep 1. Jazzcursus Theorie groep 1 Jazzcursus DWORP 2017 Deze zomer verder nog: Popcursus 20 25 augustus En in het najaar: Harmonie in Theorie (vanaf oktober 2017) Harmonie in de Praktijk Improvisatieworkshops Inleiding

Nadere informatie

Afdeling I. 1. Zet er zelf een G- of F-sleutel voor (Wat voor instrument speel je?) en benoem dan de volgende noten:

Afdeling I. 1. Zet er zelf een G- of F-sleutel voor (Wat voor instrument speel je?) en benoem dan de volgende noten: - 1 - Notatie en toonstelsel Afdeling I 1. Zet er zelf een G- of F-sleutel voor (Wat voor instrument speel je?) en benoem dan de volgende noten:. Noteer de noten op de notenbalk. Zet weer de juiste sleutel

Nadere informatie

DE ZINGENDE TOREN pag. 1

DE ZINGENDE TOREN pag. 1 DE ZINGENDE TOREN pag. 1 Handleiding voor componisten Deze handleiding bestaat uit een map met aanwijzingen en suggesties voor componisten en een bijgesloten cd met daarop klankvoorbeelden van het instrument

Nadere informatie

?Theorie. Kort overzicht met de belangrijkste dingen die je wilt of moet weten over muzieknotatie.

?Theorie. Kort overzicht met de belangrijkste dingen die je wilt of moet weten over muzieknotatie. ?Theorie Kort overzicht met de belangrijkste dingen die je wilt of moet weten over muzieknotatie Deel2: Muziektheorie Tom Overtoom - De Muziekclub TH - pag 27 Noten en notatie = hele noot ( tellen) = hele

Nadere informatie

Zondag 16 oktober 2016 Koorstage in de orthodoxe parochie H. Andreas te Gent Onder de leiding van Paul Morreel

Zondag 16 oktober 2016 Koorstage in de orthodoxe parochie H. Andreas te Gent Onder de leiding van Paul Morreel Zondag 16 oktober 2016 Koorstage in de orthodoxe parochie H. Andreas te Gent Onder de leiding van Paul Morreel De opkomst voor de eerste koorstage die plaats vond in de schoot van de parochie te Gent was

Nadere informatie

AMV Algemene Muzikale Vorming. Volwassenen. Ph. Thiran

AMV Algemene Muzikale Vorming. Volwassenen. Ph. Thiran AMV Algemene Muzikale Vorming Volwassenen Ph. Thiran Inhoudstafel Inhoudstafel... 1 Italiaanse woorden... 2 Notatie & Symbolen... 3 De noten & de rusten... 5 De maat... 7 De maat van een muziekstuk...

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 Inleiding 7 2 Voorkennis 7 3 Het cursusmateriaal 7 4 Structuur, symbolen en taalgebruik 8 5 De cursus bestuderen 9 6 Studiebegeleiding 10 7 Huiswerkopgaven 10 8 Het tentamen

Nadere informatie

THEORIE EXAMEN A 2019

THEORIE EXAMEN A 2019 THEORIE EXAMEN A 2019 LUISTERVRAGEN VRAAG 1 Je hoort 4 grote tertstoonladders, geef aan of ze goed of fout klinken. Je hoort eerst een voorbeeld: Voorbeeld: goed fout Toonladder 1 goed fout Toonladder

Nadere informatie

DIDACTISCH LESMATERIAAL & DIDACTISCH TIPS TOOLBOX

DIDACTISCH LESMATERIAAL & DIDACTISCH TIPS TOOLBOX DIDACTISCH LESMATERIAAL & DIDACTISCH TIPS TOOLBOX Musix rond Vier weverkens LES 1: (bijlagen 1,2 > deze kunnen ev. Via smartboard worden geprojecteerd ) Viva voce aanleren 1 ste strofe Vier weverkens (Kaderen

Nadere informatie

EPTA. Muziektheorie A1-A2-B. MANSARDA - SINTRA muziekuitgaven. Landelijk Graadexamen Systeem. European Piano Teachers Association

EPTA. Muziektheorie A1-A2-B. MANSARDA - SINTRA muziekuitgaven. Landelijk Graadexamen Systeem. European Piano Teachers Association MANSARDA - SINTRA muziekuitgaven e-mail: mansarda-sintra@planet.nl internet: www.mansarda-sintra.com Rozenstraat 23 1271 NS Huizen tel: 035-5239454 Muziektheorie Landelijk Graadexamen Systeem A1-A2-B EPTA

Nadere informatie

De namen van de noten komen uit het alfabet. We gebruiken de eerste zeven letters: A B C D E F G Na de G komt opnieuw de noot A.

De namen van de noten komen uit het alfabet. We gebruiken de eerste zeven letters: A B C D E F G Na de G komt opnieuw de noot A. blz. 1 Toonhoogte a Eeuwen lang hebben mensen gezocht naar een goede manier om muziek op te schrijven. De eerste voorbeelden van genoteerde muziek komen uit de 9e eeuw. Deze vorm van muziekschrift was

Nadere informatie

Humaniora Kindsheid Jesu Kempische Steenweg 400 3500 HASSELT. Infomap KSO Muziek

Humaniora Kindsheid Jesu Kempische Steenweg 400 3500 HASSELT. Infomap KSO Muziek Humaniora Kindsheid Jesu Kempische Steenweg 400 500 HASSELT 0 7 84 60 Infomap KSO Muziek MUZIEKHUMANIORA KINDSHEID JESU Alle leerlingen die aan de muziekhumaniora willen studeren, moeten slagen in een

Nadere informatie

THE LOST CHORD HARMONISEREN OP TOETSINSTRUMENTEN STEPHEN TAYLOR

THE LOST CHORD HARMONISEREN OP TOETSINSTRUMENTEN STEPHEN TAYLOR THE LOST CHORD HARMONISEREN OP TOETSINSTRUMENTEN I STEPHEN TAYLOR The Lost Chord Seated one day at the organ, I was weary and ill at ease, And my fingers wander d idly Over the noisy keys; I know not

Nadere informatie

HOOFDSTUK 30 : ARPEGGIO S

HOOFDSTUK 30 : ARPEGGIO S HOOFDSTUK 30 : ARPEGGIO S 1. Arpeggio s met drieklanken Arpeggio staat voor de term gebroken akkoord en bestaat dus enkel uit akkoordnoten. Deze techniek is zeer effectief, want elke toon die je speelt

Nadere informatie

Harmonische Analyse. 3 Tentamens in 3 moeilijkheidsgraden. voor gevorderde studenten. door Rowy

Harmonische Analyse. 3 Tentamens in 3 moeilijkheidsgraden. voor gevorderde studenten. door Rowy Harmonische Analyse 3 Tentamens in 3 moeilijkheidsgraden voor gevorderde studenten door Rowy Harmonische Analyse Om de tentamens te kunnen maken, moet u in het bezit zijn van het album Content, dat bestaat

Nadere informatie

Theorie groep 1. Jazzcursus

Theorie groep 1. Jazzcursus Theorie groep 1 Jazzcursus DWORP 2016 Deze zomer verder nog: Popcursus 21 26 augustus En in het najaar: Harmonie in Theorie (vanaf oktober 2016) Harmonie in de Praktijk Improvisatieworkshops Inleiding

Nadere informatie

Algemene Muziek Theorie. 1 ste jaar AMT M1 1

Algemene Muziek Theorie. 1 ste jaar AMT M1 1 Algemene Muziek Theorie 1 ste jaar 1 Theorie 1. Maatsoorten en ritme... 4 2. Intervallen en toontrapbenamingen... 10 2.1. Intervallen... 10 2.2. Toontrapbenamingen:... 12 3. toonaarden... 15 3.1. De toonaard

Nadere informatie

Creatief piano spelen

Creatief piano spelen Creatief piano spelen Module Peter Vanseevelt uitgave: anuari 0 Inhoud Intervallen (toonafstanden)... Omspeling... 4 Stap van de trap... 4 Ver en dihti... 4 Voorzihtig!... Spreid e vingers!... Oefening

Nadere informatie

Gehoor AMV1. deel 1. mi sol la vierde noot 2 achtste noten vierde rust. Cecilia Gehoor deel1.indd 1 18/06/ :11:48

Gehoor AMV1. deel 1. mi sol la vierde noot 2 achtste noten vierde rust. Cecilia Gehoor deel1.indd 1 18/06/ :11:48 Gehoor MV1 deel 1 of mi sol la vierde noot 2 achtste noten vierde rust 1 ecilia Gehoor deel1.indd 1 18/06/2014 10:11:48 Naam: Oefening 1 Welke prent past bij de muziek? Welke niet? lfred Schnittke Geboren:

Nadere informatie

AnnA Boek I Begeleidingsboek Samen musiceren en de weg ernaartoe! Diane Reynders Walter Schraeyen

AnnA Boek I Begeleidingsboek Samen musiceren en de weg ernaartoe! Diane Reynders Walter Schraeyen AnnA Boek I Begeleidingsboek Samen musiceren...... en de weg ernaartoe! sample Diane Reynders Walter Schraeyen AnnA...... is een nieuwe methode voor MCV én GroepsMusiceren. Centraal staan het verwerven

Nadere informatie

Handleiding bij de Booktest Generator

Handleiding bij de Booktest Generator Handleiding bij de Booktest Generator Het programma voor het maken van toetsen bij boeken. (c) 2005/2009 Visiria Uitgeversmaatschappij Twisk Inleiding Onze dank voor het aanvragen van de Booktest Generator.

Nadere informatie

Het notenschrift De basis

Het notenschrift De basis Vervolgcursus Lesweek 1: Het notenschrift De basis Inleiding In deze eerste lesweek van de gevorderden cursus wordt de basis besproken van het notenschrift. Hoe ziet het notenschrift eruit en hoe kunt

Nadere informatie

Theorie groep 2. Popcursus

Theorie groep 2. Popcursus Theorie groep 2 Popcursus DWORP 2016 In het najaar: Harmonie in de Praktijk Improvisatieworkshops Inleiding tot de Jazzgeschiedenis Zie: halewynstichting.be POPCURSUS 2016 THEORIE GROEP 2 1 THEORIE GEVORDERDEN

Nadere informatie

RUDOLF RASCH MIJN WERK OP INTERNET, DEEL TWEE NOOTZAKEN BASISBEGRIPPEN UIT DE THEORIE VAN DE WESTERSE MUZIEK HOOFDSTUK VIER SEPTIEMAKKOORDEN

RUDOLF RASCH MIJN WERK OP INTERNET, DEEL TWEE NOOTZAKEN BASISBEGRIPPEN UIT DE THEORIE VAN DE WESTERSE MUZIEK HOOFDSTUK VIER SEPTIEMAKKOORDEN RUDOLF RASCH MIJN WERK OP INTERNET, DEEL TWEE NOOTZAKEN BASISBEGRIPPEN UIT DE THEORIE VAN DE WESTERSE MUZIEK HOOFDSTUK VIER SEPTIEMAKKOORDEN Verwijzingen naar deze tekst graag als volgt: Rudolf Rasch,

Nadere informatie