Jesper Juellund Jensen | |||||||||||||||||||||||||||||||||||||||||||||
|
Prolog-program til rytmemodellerRytmeJeg vil i dette afsnit omforme den generelle model for rytme til Prolog. Det vil foregå ved først at vælge en datarepræsentation i Prolog og derefter omforme hver enkelt regel til prolog. 1. DatarepræsentationProlog kan naturligvis ikke umiddelbart arbejde med symboler som og . I stedet må der anvendes en repræsentation, som Prolog kan anvende. Tal – teksttryk, tonelængder og metriske positionerDer anvendes tal til at repræsentere teksttryk, tonelængder og metriske positioner (Bratko 1986: 28ff): Teksttryk er repræsenteret ved heltal. Jeg har valgt at arbejde med seks teksttryk: 1 (), 2 (), 3 (), 4 (), 5 () og 6 (). Rytmiske længder er ligeledes repræsenteret ved med heltal. Da længder skal tilhøre det laveste lag i metrummet (regel d2), vil jeg for nemheds skyld lade denne rytmiske værdi være repræsenteret ved værdien 1. Man kan så selv bestemme, hvad man vil tolke det som: Hvis man for eksempel tolker 1 som , vil 4 være en repræsentation af osv. Metriske positioner repræsenteres også ved heltal, der angiver afstanden fra startpositionen i metrummet. Positionen 0 er således typisk første slag i første (betonede) takt. Et andet eksempel er positionen 12, der – hvis startpositionen er første slag i første takt, det laveste lag i metrummet er , og taktarten er – kan tolkes som tolv ottendedele efter første slag i første takt eller med andre ord 3-slaget i anden takt: Struktur – tonerEn tone består jo ifølge regel a2 af tre egenskaber: a2) En „tone“ X er karakteriseret ved følgende tre egenskaber: I Prolog repræsenteres en tone ved et struktureret objekt (Bratko 1986: 30ff) – der også ofte bare kaldes en struktur. En struktur er netop en samling af egenskaber – i dette tilfælde af teksttryk, position og længde. En struktur har et navn (funktor), og jeg har her valgt navnet Et eksempel på en tone er Lister – metrum og rytmerMetrummet (regel b1 og b2) vil blive repræsenteret af en liste af heltal. Som nævnt ovenfor vælger jeg altid at sætte det laveste lag i metrummet til tallet 1. I Prolog angives lister med kantede parenteser (Bratko 1986: 64ff), og et eksempel på en angivelse af et metrum er således En rytme er ifølge regel a3 defineret som en liste af toner. Et eksempel er rytmen
Når man henviser til lister, kan man undertiden brug for at opdele listen i det første element og resten. Dette gøres i Prolog ved hjælp af en lodret streg: 2. KlausulerGrundlæggende består Prolog-programmer af en række klausuler. En klausul definerer et eller andet forhold og kan have to former: faktum eller regel. FaktumEt faktum (Bratko 1986: 3ff) angiver et eller andet, der altid er sandt. Et eksempel fra Prolog-programmet, der definerer rytme, er:
Denne regel angiver simpelthen blot, at RegelEn regel (Bratko 1986: 8ff), der angiver, at en konklusion er sandt, hvis en eller flere betingelser er opfyldt. Et eksempel på en simpel regel er:
Denne regel siger, at hvis Hvis flere betingelser skal være opfyldt, adskilles de af komma. For eksempel:
Denne regel siger altså (igen læst bagfra): Hvis betingelserne » Reglerne ovenfor gør brug af variabler, der generelt skrives med stort begyndelsesbogstav (f.eks. „ En speciel variabel er Rekursive reglerEn rekursiv regel er en regel, der kan anvendes flere gange til at beskrive et eller andet. Man kan også sige, at en rekursiv regel er en regel, der anvender konklusionen i betingelsen. Rekursive regler anvendes blandt andet i logik, sprogvidenskab og datalogi. I musik kendes rekursion blandt andet fra Per Nørgårds kompositionsprincipper. Som eksempel kan tages reglen om tekstrytme ovenfor: a1) En „tekstrytme“ for en frase er en liste med teksttryk Denne regel kan omformes til en rekursiv regel: a1+) En liste af et teksttryk og en tekstrytme er en tekstrytme Hvis for eksempel vi har teksttrykket og tekstrytmen [,,], så siger regel a1+, at [,,,] også er en tekstrytme. Regel a1+ er dog ikke tilstrækkelig til at definere tekstrytme, hvilket vi kan se, hvis vi forsøger at anvende reglen til at undersøge, om for eksempel [,,] er en tekstrytme. Dette vil foregå af følgende skridt:
Men nu kan vi ikke komme længere med regel a1+, da [] ikke er sammensat af et teksttryk og en tekstrytme. Den tomme liste kan anskues som et grænsetilfælde og giver altså anledning til regel a1°, der siger, at [] er en tekstrytme: a1°) En tom liste er en tekstrytme Rekursive definitioner vil som regel være opbygget af to regler, som jeg her vil give symbolerne + og °:
De to regler for tekstrytme kan nu let omformes til Prolog: a1+) En liste af et teksttryk og en tekstrytme er en tekstrytme
Denne regel siger altså (igen læst bagfra): Hvis betingelserne » a1°) En tom liste er en tekstrytme
Denne klausul er et simpelt faktum, der blot siger, at Jeg vil nedenfor i vid udstrækning gøres brug af rekursive regler, og en del af de oprindelige regler omformes til rekursive definitioner. Dette gælder i særdeleshed defintioner, hvor betingelser skal være opfyldt for alle elementer i en liste. 3. Simple data (regel a1-2 og d1-2)Jeg har allerede ovenfor diskuteret datarepræsentationen, men vil her kort redegøre for de klausuler (fakta og regler), som det resulterer i i programmet. TeksttrykDe seks teksttryk repræsenteres som nævnt ved heltal: 1 (), 2 (), 3 (), 4 (), 5 () og 6 (). Dette kan i Prolog angives med følgende seks fakta:
Rytmiske længderRytmiske længder angives med heltal, hvor 1 er afstanden mellem slag i det laveste metriske lag, for eksempel . Man kan bemærke, at regel d2 – »længder skal tilhøre det laveste metriske lag i metrummet« – med denne repræsentation automatisk er opfyldt, da der kun anvendes heltal til længder, og da det laveste lag i metrummet jo altid sættes til 1. I princippet kan længder være alle naturlige tal, da toner kan vilkårligt lange. Af hensyn til den procedurale mening af Prolog-programmet, må man dog konkret angive nogle gyldige længder. Da længder i de to modeller for rytmiske normer højst kan være tre gange det laveste metriske lag, kan længder altså være enten 1, 2 eller 3, hvilket i Prolog kan angives med følgende fakta:
Rytmiske positionerRytmiske positioner repræsenteres jo også ved heltal, der angiver afstanden fra metrummets startposition. Herved er også regel regel d1 – »positioner skal tilhøre det laveste metriske lag i metrummet« – automatisk opfyldt, da der kun anvendes heltal til positioner. 4. Rytme (regel a3-4 og d3)Repræsentationen af data ifølge regel a1 og a2 (samt d1, d2) er nu beskrevet, og med hensyn til de simple data mangler nu blot definitionen af en „rytme“, således som den er beskrevet af regel a3, a4 og d3: a3) En „rytme“ for en frase er en liste af toner a4) For en given tone X og dens efterfølger Y, skal XPosition + XLængde = YPosition d3) Den sidste tone skal ende på en position, der tilhører det næstlaveste metriske lag i metrummet/p> Disse regler kan omformuleres til en rekursiv definition af rytme, hvor der skelnes mellem rytmer af mindst to toner og rytmer af præcis en tone: r+) En liste af to toner, X og Y, og en rytme, R, er en rytme, hvis Regel r+ omhandler rytmer af mindst to toner. Reglen udnytter, at hvis den sidste tone i listen af Y og R ender på en positition, der tilhører det næstlaveste metriske lag i metrummet, så må det jo også gælde rytmen af Y, X og R. Der er derfor ingen grund til at medtage regel d3 i den rekursive regel om rytmer med mindst toner. r°) En liste af én tone, X, er en rytme, hvis X ender på en position, der tilhører det næstlaveste metriske lag i metrummet Regel r° handler om rytmen med netop én tone, og her er regel d3 relevant, da tonen i en rytme med kun en tone jo i sagens natur også er den sidste tone. Til gengæld er regel a4 ikke relevant, da den handler om rytmer med mindst to toner. Disse to regler, r+ og r°, giver anledning til følgende to Prolog-regler, der altså udtrykker en rytme i et metrum:
Rytme med start i „første periode“Med den angivne definition er begge nedenstående rytmer eksempler på rytmer: Men disse to rytmer opfattes jo som to udgaver af den „samme“ rytme, og for ikke helt bogstaveligt at få uendelig mange løsninger, vil jeg kræve, at rytmer skal starte i et bestemt tidsområde, som jeg vil kalde første periode. I eksemplet ovenfor i er første periode den første takt. Generelt vil jeg definere første periode som [0 .. S-B], hvor S er det højeste lag i metrummet, og B er det laveste lag i metrummet. Er metrummet for eksempel [ , , , ], er S altså , og B er . S-B er derfor = eller med andre ord netop „4og“ i første takt. Første periode er altså fra 1-slaget til „4og“ i første takt. I den valgte repræsentation kan det udtrykkes således: Første periode er [0 .. S-1], hvor S er det højeste lag i metrummet Er metrummet for eksempel Der defineres derfor en relation mellem en rytme og et metrum, hvor positionen af den første tone i rytmen skal være i „første periode“ af metrummet. Definitionen på en
Definitionen kan (læst bagrfra) udtrykkes således: Hvis listen af Jeg vil ikke her omtale relationen 5. Metrum (regel b1-2)Metrummet (regel b1 og b2) et som nævnt repræsenteret ved en liste af heltal, hvor det laveste lag i metrummet er tallet 1. For eksempel vil [ , , , ] således skulle angives Regel b2 indeholder et krav om at et tal (et lag) skal kunne udtrykkes som et multiplum af et andet tal (det efterfølgende lag). At et tal, X, kan udtrykkes som et multiplum af et andet, Y, kan også formuleres som, at Y-resten af X skal være 0: Hvis man dividerer X med Y skal resten altså være 0. I Prolog angives Y-rest af X som „ Reglerne om metrum omformuleres her til en rekursiv definition, der igen består af to regler: m+) En liste af to lag, X og Y, og et metrum, M, er et metrum, hvis
m°) Listen [1] er et metrum I Prolog kan disse to regler udtrykkes:
6. At tilhøre et metrisk lag (regel c1-2 og til dels d3)PositionerRegel c1 definerer, hvad det vil sige, at en position tilhører et metrisk lag: c1) En position P siges at „tilhøre“ et metrisk lag M, hvis P kan udtrykkes som et multiplum af M Igen omformuleres reglen om at et tal, her P, skal være et multiplum af et andet, her M, til at M-resten af P skal være 0: I Prolog kan man derfor definere relationen
LængderRegel c2 definerer, hvad det vil sige, at en længde tilhører et metrisk lag: c2) En længde L siges at „tilhøre“ et metrisk lag M, hvis L kan udtrykkes som et multiplum af M Regel c2 er ikke nødvendig at definere i Prolog, da den eneste regel, der handler om længder og metriske lag (regel d2) – »længder skal tilhøre det laveste metriske lag, dvs. det sidste element, i metrummet» – jo som nævnt ovenfor allerede er opfyldt i kraft af repræsentationen. At tilhøre det næstlaveste metriske lagOvenfor klaredes regel d3 om at sidste tone skal tilhøre det næstlaveste metriske lag ved at anvende relationen t+) Hvis P tilhører det næstlaveste lag i et metrum, M, så tilhører P også det næstlaveste lag i et metrum, der består af et vilkårligt lag og metrummet M Et eksempel: Hvis t°) Hvis P tilhører et metrisk lag, L, så tilhører P det næstlaveste metriske lag i et metrum af to lag, hvor det højeste (og dermed næstlaveste) lag er L I Prolog kan disse to regler udtrykkes således:
7. Metrisk betoning (regel e)Reglen om metrisk betoning siger: e) For et par af positioner P, Q gælder, at P „er mere metrisk betonet end“ Q, hvis og kun hvis P tilhører et højere metrisk lag end Q Reglen kan omformuleres til, at det højeste metriske lag, som P tilhører i det givne metrum, skal være større end det højeste metriske lag, som Q tilhører. Der er derfor brug for en relation, der beskriver det højeste metriske lag, en position tilhører: En positions højeste metriske lagEn positions højeste metriske lag kan formuleres ved hjælp af endnu en rekursiv definition: e+) Hvis L er det højeste lag, som en position, P, tilhører i et metrum, M, så er L også det højste lag, som P tilhører i metrummet af et højere lag, H, og M, hvis P ikke tilhører H Er e°) Hvis P tilhører det højeste lag, L, i et metrum, så er L det højeste lag i metrummet, som P tilhører Er metrummet for eksempel Igen lader reglerne sig nu let oversætte til Prolog:
Forhold mellem metrisk betoning af to positionerSelve definitionen af det metriske betoningsforhold mellem to positioner, P og Q, kan nu udtrykkes således:
Det højeste metriske lag, som 8. Afslutning – rytmeAlle reglerne for rytme er nu omformet til Prolog. De findes i dokumentet „Rytme.pro“ (inkl. en relation,
| ||||||||||||||||||||||||||||||||||||||||||||
Siden ses bedst i en browser, der overholder W3C’s standard for html. |