next up previous contents
Next: Flere triks Up: C-sound Previous: C-sound

Et lite eksempel

For å lage en liten lyd med Csound, må vi først definere et instrument. Dette gjøres i orkesterfilen, som vi kan kalle eksempel.orc. Start opp en teksteditor med kommandoen jot eksempel.orc på Indy. På Mac skulle Word eller noe slikt være brukbart.

Skriv inn følgende (forklaring under):

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

instr 1
  a1    oscil  10000,440,1
  out   a1
endin

Header

Først i orkesterfilen må vi ha en header, der vi spesifiserer samplingfrekvens og et par andre rare ting. sr = 16000 betyr at vi ønsker en samplingfrekvens på 16 kHz. Dette er ikke mye, men nok til dette enkle eksemplet (beregningene går fortere jo lavere samplingfrekvens vi bruker). Ulike maskiner har litt ulike sett av tillatte samplingfrekvenser, på Indy kan man velge mellom 8000, 11025, 16000, 22050, 32000, 44100 og 48000.

Et viktig poeng i Csound er skillet mellom samplingrate og kontrollrate. Samplingraten er antall samples i lyden pr. sekund, og vi kunne godt ha beregnet alle tallene i instrumentet med denne hastigheten. Ofte har man imidlertid parametre som endrer seg noe langsommere, f.eks. enveloper. For å minske beregningstiden, kan man bestemme at disse verdiene skal oppdateres med en lavere hastighet. Denne lavere "samplingfrekvensen" kalles kontrollrate, og vi setter den her til 1000 Hz med kommandoen kr = 1000. Vi må også angi forholdet mellom samplingraten og kontrollraten med kommandoen ksmps = 16. Dette er selvsagt idiotisk, maskinen burde kunne klare denne divisjonen selv.

Kommandoen nchnls = 1 angir at vi skal lage en mono-lydfil.

Instrumentet

Man kan ha mange forskjellige instrumenter i et orkester, og disse nummereres i orkesterfilen. Dette gjøres i innledningen til instrumentdefinisjonen, her med kommandoen instr 1. Instrumentet avsluttes med kommandoen endin.

"Boksene" som vi skal koble sammen i et instrument angis på separate linjer. Hver linje begynner med et variabelnavn som brukes som referanse til output fra boksen. Så følger boksens type, med eventuelle typespesifikke parametre. De forskjellige boks-typene og deres parametre er beskrevet i Csound-manualen.

a1 oscil 10000,440,1 betyr således at vi setter opp en boks av type oscil, som er en generell oscillator. Den tar tre parametre, nemlig amplityde, frekvens og kurveform. Amplityden angis som et heltall, der 32767 er fullt utslag. Frekvensen oppgis i Hz. Kurveformen oppgis med et tabellnummer som refererer til en tabell som vi senere skal definere i partiturfilen.

Output fra oscillatoren sendes til variabelen a1. Ved å la variabelnavnet begynne med en a, angir vi at variabelen skal oppdateres for hvert sample ("audio rate"). Vi kunne dermed godt ha kalt variabelen "asparges", men ikke "potet". Hvis navnet hadde begynt med k, ville den blitt oppdatert med kontrollhastighet, dvs. her 1000 ganger i sekundet.

out a1 betyr at output fra instrumentet skal hentes fra variabelen a1.

Vi er nå ferdig med orkesterfilen.

Partituret

Så må vi lage partiturfilen. Vi kan kalle den eksempel.sco. Skriv inn følgende:

f1  0  4096  10  1
i1  0  4
e

f1 betyr at vi skal definere funksjonstabell nummer 1, som vi refererte til i orkesterfilen. Tabellen skal opprettes ved tidspunkt 0 sek, og den skal inneholde 4096 samples (må være en potens av 2). Vi skal bruke en subrutine som heter GEN10, derfor tallet 10. GEN10 tar som parametre de relative amplitydene til en overtonerekke; her spesifiserer vi bare en grunntone, slik at tabellen fylles med en sinusperiode.

Så følger alle "notene", dvs. oppkall av instrumenter til forskjellige tidspunkter. Her har vi bare en note; i1 betyr at vi skal bruke instrument nummer 1. Noten skal starte ved tidspunkt 0 sek, og skal vare i 4 sekunder.

e angir slutten på partiturfilen.

Vi kan nå starte Csound, på Indy gjøres det med kommandoen csound -Ao eksempel eksempel.orc eksempel.sco. Dette er litt mer inngående forklart i heftet Lokal guide til lydbehandling i UNIX. Csound skal nå produsere en lydfil med navnet eksempel. Spill lyden med f.eks. sfplay eksempel.

Som man ser, er syntaksen i Csound meget kortfattet, konsis og kryptisk. Det tar tid å venne seg til dette, men fordelen er at det blir mindre å skrive.


next up previous contents
Next: Flere triks Up: C-sound Previous: C-sound

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