Wachtwoord kwijt?
Home arrow Sonar arrow Cakewalk Application Language
Cakewalk Application Language Print E-mail
Artikel Index
Cakewalk Application Language
De syntax van CAL
Datatypen
Events
Constanten
Declaraties
Interactie met de gebruiker
Rekenkundige bewerkingen
Relationele functies
Logische operatoren
Muziek tijdfuncties
Flow control functies
Aanmaken van een CAL-programma
Uitvoeren van een CAL-programma
Voetnoten
 

Constanten

Cakewalk 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.

  1. Het programma openen we met een do-opdracht.
  2. Binnen forEachEvent lopen we langs alle geselecteerde Events.
  3. Als het Event een noot is, voeren we alles uit binnen de volgende do-opdracht.
  4. Binnen deze do-opdracht nesten we alle opdrachten voor wanneer het Event een noot is.
  5. We halveren de lengte van de noot (/ Note.Dur 2) en maken Note.Dur gelijk aan het resultaat met (= Note.Dur ‛&‛&).
  6. We vermenigvuldigen de velocity van de noot met 125, delen het door 100 en bergen het resultaat weer op in Note.Vel.
  7. Als de velocity groter is dan 127 maken we het gelijk aan 127, want groter mag het niet zijn.
  8. Hier sluiten we de tweede do-opdracht af.
  9. Hier sluiten we de if-functie af.
  10. Hier sluiten we de forEachEvent-functie af.
  11. 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 )
 
Volgende >
© 2012 HCCmuziek.nl
Joomla! is Free Software released under the GNU/GPL License.