|
Cakewalk Application Language |
|
|
|
Pagina 5 van 15 ConstantenCakewalk kent ook een aantal vooraf gedefinieerde constanten: | TRUE | Een boolean constante die aangeeft dat iets waar is. De waarde is ‘1’. | | FALSE | Een boolean constante die aangeeft dat iets niet waar is. De waarde is ‘0’. | | TIMEBASE | Deze constante geeft het aantal tikken per kwartnoot aan. | | VERSION | Versienummer van CAL. | Nu we de belangrijkste datatypen hebben leren kennen, kunnen we de functies van CAL bekijken. De functies zijn onder te verdelen in: declaraties, toewijzingen (assignments) , invoer, uitvoer, buffer, rekenkundig, relationeel, boolean, ‘control flow’, ‘musical time’, menu, etc. We zullen een programma laten zien, dat goed aangeeft hoe CAL je productiviteit kan verhogen. Het programma maakt van iedere geselecteerde noot een staccato noot en verhoogt de velocity met 25%. | 1 | (do | | | | 2 | | (forEachEvent | ; voor iedere geselecteerde ; event | | 3> | | | (if (== Event.Kind NOTE) | ; als het event een noot is | | 4 | | | | (do | ; dan | | 5 | | | | (= Note.Dur (/ Note.Dur 2)) | ; halveer je de nootlengten en | | 6 | | | (= Note.Vel (/ (* Note.Vel 125) 100)) | ; verhoog de velocity met 25% | | 7 | | | (if (> Note.Vel 127) (= Note.Vel 127)) | ; zorg dat de velocity nooit ; groter wordt dan127 | | 8 | | | ) | | ; einde van do | | 9 | | | ) | | | ; einde van if | | 10 | | ) | ; einde van forEachEvent | | 11 | ) | | ; end of do | We gaan nu na wat er gebeurt op iedere regel van dit programma. - Het programma openen we met een do-opdracht.
- Binnen forEachEvent lopen we langs alle geselecteerde Events.
- Als het Event een noot is, voeren we alles uit binnen de volgende do-opdracht.
- Binnen deze do-opdracht nesten we alle opdrachten voor wanneer het Event een noot is.
- We halveren de lengte van de noot (/ Note.Dur 2) en maken Note.Dur gelijk aan het resultaat met (= Note.Dur ‛&‛&).
- We vermenigvuldigen de velocity van de noot met 125, delen het door 100 en bergen het resultaat weer op in Note.Vel.
- Als de velocity groter is dan 127 maken we het gelijk aan 127, want groter mag het niet zijn.
- Hier sluiten we de tweede do-opdracht af.
- Hier sluiten we de if-functie af.
- Hier sluiten we de forEachEvent-functie af.
- Hier sluiten we de eerste do-opdracht af en daarmee het programma.
Wat je ziet is dat bij een geneste structuur, zoals (= Note.Dur (/ Note.Dur 2)), CAL dit verwerkt van binnen naar buiten. Dus eerste wordt (/Note.Dur 2) berekend en daarna dit resultaat gebruikt in (= Note.Dur ‛&..).
|
|
Laatste aanpassing ( woensdag, 19 december 2007 )
|