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
 

Interactie met de gebruiker

We hebben invoer- en uitvoerfuncties. De invoerfuncties zijn:

(getInt <naam> <prompt> <minimum> <maximum>)

(getWord <naam> <prompt> <minimum> <maximum>)

(getTime <naam> <prompt>)

Hierin is:

<naam> de naam van de variabele;
<prompt>           het bericht dat in een ‘window’ op het scherm verschijnt;
<minimum> de minimum waarde die de invoer mag hebben;
<maximum> de maximale waarde die de invoer mag hebben.

Je ziet dat met getInt invoer voor een integer variabele kan worden gevraagd. Bij getWord geldt hetzelfde voor een word variabele. Bij getTime wordt de invoer van de gebruiker die in ‘Measure:Beat:Tick’ wordt ingevoerd, omgezet in ‘raw time’ en opgeslagen in een dword variabele. Bij getTime kunnen geen limieten worden opgegeven.

We breiden het eerste voorbeeld uit 'De syntax van CAL' nu uit met het vragen aan de gebruiker om de gewenste Note Velocity waarde op te geven.

1

(do

; open het programma

2

    (int nVelocity 100)

; declareer de variabele nVelocity

3

    (getInt nVelocity “Velocity: “ 0 127)

; vraag om invoer

4

    (forEachEvent

; proces iedere geselecteerde
; Event binnen de range

5

        (if  (== Event.Kind NOTE)

; Als het een note is,

6

           (= Note.Vel nVelocity)               

; dan zet  je de note velocity
; op de gevraagde waarde

7

        )

; einde van  if

8

    )

; einde van forEachEvent

9

)

; einde van do

In de toegevoegde programmaregels gebeurt het volgende:

  1. Het programma wordt geopend met een do statement. Alle programma statements staan binnen deze do en het afsluitende haakje hiervan vind je in regel 9;
  2. De integer nVelocity met als initiële waarde 100 wordt gedeclareerd;
  3. In een ‘window’ wordt een bericht 'Velocity' gezet met als initiële waarde 100. Dit bericht is de string tussen dubbele aanhalingstekens. Toegestane waarden lopen van 0 tot 127;
  1. De ‘noot ‘ krijgt hier de waarde die de gebruiker aangegeven heeft;
  1. Het do statement wordt met een haakje sluiten afgesloten. Dit is dus ook het einde van het programma.

De uitvoerfuncties zijn:

(message <waarde> [[<waarde>] ‛&...])

(pause <waarde> [[<waarde>] ‛&...])

(format <waarde> [[<waarde>] ‛&...])

Deze functies geven een bericht in de ‘status bar’ van Cakewalk. Bij de pause functie stopt Cakewalk. Via een ‘dialoog window’ krijgt de gebruiker de mogelijkheid door te gaan (OK) of het proces af te breken (CANCEL). Het bericht van message en pause in de ‘status bar’ kan opgebouwd zijn uit een willekeurige combinatie van variabelen van het type: string, integer, long, word en dword.

De format functie is niet echt een uitvoerfunctie, maar converteert een combinatie van variabelen tot één string.

De functie message wordt vooral gebruikt om bijvoorbeeld extra informatie aan de gebruiker te verschaffen of voortgangsberichten naar de gebruiker te sturen. De pause functie is handig bij het testen van programma's.

We breiden ons voorbeeld programma nu uit met een extra informatie bij het vragen van invoer door de gebruiker.

1

(do

; open het programma

2

    (int nVelocity 100)

; declareer de variabele nVelocity

2a

    (message "Toegestane waarden voor velocity zijn: 0 tot en met 127")

3

    (getInt nVelocity “Velocity: “ 0 127)

; vraag om invoer

4

    (forEachEvent

; proces iedere geselecteerde
; Event binnen de range

5

        (if  (== Event.Kind NOTE)

; Als het een note is,

6

                (= Note.Vel nVelocity)               

; dan zet  je de note velocity
; op de gevraagde waarde

7

       )

; einde van  if

8

   )

; einde van forEachEvent

9

)

; einde van do

We verklaren hieronder alleen de toegevoegde programmaregel:

2a.   Alvorens de gebruiker om invoer te vragen wordt met de functie message een bericht op de status bar’ gegeven, waarin de toegestane waarde van de invoer wordt aangegeven.



Laatste aanpassing ( woensdag, 19 december 2007 )
 
Volgende >
© 2012 HCCmuziek.nl
Joomla! is Free Software released under the GNU/GPL License.