next up previous contents
Next: Synteseteknikker Up: C-sound Previous: Et lite eksempel

Flere triks

P-felter

Instrumentet i forrige kapittel kunne bare spille en fast frekvens med en fast lydstyrke. Det må vi fikse. Parametre i instrumentet kan styres fra verdier som vi oppgir i partiturfilen. Parametrene til i-kommandoene i partiturfilen heter p1, p2 osv. De tre første p-feltene har en fast betydning:

eqnarray3518

(se eksemplet i forrige avsnitt).

De resterende p-feltene (p4, p5 etc.) kan vi benytte som vi vil. Vi kan la p4 styre frekvens og p5 amplityde. Det finnes en funksjon som heter cpspch som gjør om fra formatet oktav.pitchklasse til en frekvens i Hz. Funksjonen ampdb gjør om fra en dB-verdi til en amplityde.

Orkesterfilen kan da skrives slik:

sr     =  16000
kr     =  1000
ksmps  =  16
nchnls =  1

instr 1
  a1	oscil	ampdb(p5),cpspch(p4),1
  out	a1
endin

Og partiturfilen kan se slik ut (legg merke til at semikolon markerer en kommentar):

f1  0  4096  10  1
;   p2 (start)    p3 (varighet)    p4 (frekvens)    p5 (styrke)
i1  0             0.1              8.00             50
i1  0.2           0.1              8.00             55
i1  0.4           0.1              8.00             60
i1  0.8           0.1              8.04             65
i1  1.2           0.1              8.07             70
i1  1.6           1                9.00             70
i1  1.6           1                9.04             70
i1  1.6           1                9.07             70
e

Envelopes, GENs, carry

Vi fortsetter å bygge ut instrumentet fra forrige avsnitt. For det første vil vi gjerne legge en omhyllingskurve (envelope) på hver tone. Vi blar litt i Csound-manualen, og finner "boksen" (enhetsgeneratoren) linen. Formatet er definert slik:

    kr linen kamp,irise,idur,idec
    ar linen xamp,irise,idur,idec

Typisk Csound-kryptisk! Hva betyr dette? Det man forsøker å få fram er at linen kan produsere sin output enten med "kontrollrate" eller med "audio rate" (samplingfrekvensen). Attack-tiden ("rise") kan oppdateres med "initialiseringsrate", dvs. hver gang instrumentet kalles opp fra en i-kommando i partituret. Det sammet gjelder "dur" og "dec" (release-tiden). Amplityden kan oppdateres med kontrollrate eller langsommere dersom output oppdateres med kontrollrate. Hvis output oppdateres med audio rate, kan amplityden oppdateres med alle slags hastigheter (angitt med "x").

Vi velger k-versjonen, og sender output fra linen inn i amplityde-parameteren til oscillatoren. I tillegg lar vi kurveform-parameteren styres fra et nytt p-felt, slik at vi kan endre klangfargen for hver note:

sr     =  16000
kr     =  4000
ksmps  =  4
nchnls =  1

instr 1
  k1    linen   ampdb(p5),0.05,p3,p3*0.4
  a1    oscil   k1,cpspch(p4),p6
        out     a1
endin

I partiturfilen definerer vi en funksjonstabell nummer 2 ved hjelp av GEN10, med et rikere spektrum (8 overtoner), og legger til et nytt p-felt p6. I tillegg utnytter vi en nyttig finesse i syntaksen, nemlig carry-tegnet punktum. Et punktum betyr at vi skal bruke samme verdi som i forrige linje. De siste punktum på en linje kan utelates. Det finnes flere andre carry-tegn, bl.a. pluss, som betyr at vi skal bruke p2+p3 fra forrige linje, dvs. tidspunktet for forrige notes slutt (brukes ikke her).

f1  0  4096  10  1
f2  0  4096  10  1 .6 .3 .1 .3 .6 .3 .1
;   p2 (start)  p3 (varighet)  p4 (frekvens)  p5 (styrke)  p6 (kurve)
i1  0           0.1            8.00           50           1
i1  0.2         .              .              55
i1  0.4         .              .              60
i1  0.8         .              8.04           65
i1  1.2         .              8.07           70
i1  1.6         1              9.00           .            2
i1  .           .              9.04
i1  .           .              9.07
e


next up previous contents
Next: Synteseteknikker Up: C-sound Previous: Et lite eksempel

\yvind Hammer
Fri Feb 21 21:39:51 MET 1997