% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % SYNKOPER % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % ikkeSynkope( Tone , Metrum ) % ============================ % Er den angivne tone synkoperet (dvs. går ind over en mere betonet metrisk % position end tonens start)? ikkeSynkope( tone(_,Position,LaengdePlus1) , Metrum ) :- laengde(LaengdePlus1), Laengde is LaengdePlus1-1, ikkeSynkope( tone(_, Position, Laengde), Metrum ), SidstePosition is Position+Laengde, erMereEllerLigesaaBetonet(Position, SidstePosition, Metrum). ikkeSynkope( tone(_,_,1) , _). % udenSynkoper( Rytme , Metrum ) % ============================== udenSynkoper([T|R], Metrum) :- ikkeSynkope(T, Metrum), udenSynkoper(R, Metrum). udenSynkoper([],_). % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % OVERENSSTEMMELSE MELLEM TEKSTTRYK OG METRISK BETONING % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % overensstemmelseMellemTrykOgBetoning( X , Y , Metrum ) % ====================================================== % Er der overensstemmelse mellem teksttryk og metrisk betoning for toneparret X, Y? overensstemmelseMellemTrykOgBetoning(tone(Xteksttryk,_,_), tone(Yteksttryk,_,_), _) :- Xteksttryk=Yteksttryk, erMereBetonet(Xposition, Yposition, Metrum). % overensstemmelseMellemTrykOgBetoning( Rytme , Metrum ) % ====================================================== % Er der overensstemmelse mellem teksttryk og metrisk betoning i Rytme? overensstemmelseMellemTrykOgBetoning([X,Y|R], Metrum):- overensstemmelseMellemTrykOgBetoning(X, Y, Metrum ), overensstemmelseMellemTrykOgBetoning(Y, X, Metrum ), overensstemmelseMellemTrykOgBetoning([X|R], Metrum), overensstemmelseMellemTrykOgBetoning([Y|R], Metrum). overensstemmelseMellemTrykOgBetoning([_],_). % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % SIMPEL MELODIRYTME % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % simpelMelodirytme( Rytme , Metrum ) % =================================== simpelMelodirytme(Rytme, Metrum):- rytmeMedStartIFoerstePeriode(Rytme, Metrum), udenSynkoper(Rytme, Metrum), overensstemmelseMellemTrykOgBetoning(Rytme, Metrum). % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % SIMPEL MELODIRYTME, DER HAR EN BESTEMT TEKSTRYTME % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % simpelMelodirytmeMedTekstrytmen( Rytme , Tekstrytme , Metrum ) % ================================================================== % Rytme er en simpel melodirytme i Metrum med samme tekstrytme som Tekstrytme. simpelMelodirytmeMedTekstrytmen(Rytme, Tekstrytme, Metrum):- harTekstrytmen(Rytme,Tekstrytme), simpelMelodirytme(Rytme, Metrum).