Informatica applicata alla musica Introduzione a Csound 31/10/2006
Che cos’è Csound Software per la sintesi digitale diretta del suono. Validità stabile. Supporti a Csound.
Ottenere suoni con Csound Orchestra e partitura file orchestra Programma Csound file audio scheda audio amplificatore file partitura
Elaborare suoni precedentemente campionati microfono scheda audio, A/D file audio registrato file orchestra Programma Csound file audio scheda audio, D/A amplificatore file partitura
Scrivere un’orchestra Header: dà quattro informazioni di base che tutti gli strumenti dovranno adottare. Esempio: sr = 44100 kr = 4410 ksmps = 10 nchnls = 1
Scrivere un’orchestra Strumenti: costituiscono le varie “macchine virtuali” che si vogliono costruire. Esempio: instr 1 anuovaorc oscil 10000, 220, 1 out anuovaorc endin
Scrivere una partitura (score) Funzioni: servono a creare forme d’onda di cui possiamo scegliere le caratteristiche. Esempio: f1 0 4096 10 1
Scrivere una partitura (score) Note: sono composte da determinati parametri di cui gli unici tre obbligatori (p1, p2, p3) sono quelli che indicano lo strumento che deve suonare, il tempo di attacco e la durata. Esempio: i1 0 3 i1 4 2 i1 6 2
Generazione di sinusoidi ;01_sinusoidi.orc sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 instr 1 anuovaorc oscil 10000, 220, 1 out anuovaorc endin ;01_sinusoidi.sco f1 0 4096 10 1 i1 0 3 i1 4 2 i1 6 2 Esempio 01_sinusoidi
GEN10 Generazione di un suono complesso composto da cinque sinusoidi in rapporto armonico. f1 0 4096 10 1 1 1 1 1 Quinta armonica con ampiezza 15 volte maggiore rispetto alla fondamentale. f1 0 4096 10 1 1 1 1 15 Solo quinta armonica f1 0 4096 10 0 0 0 0 1 Esempi 02_GEN10, 03_GEN10, 04_GEN10
Cambiare ampiezza e frequenza AMPIEZZA E FREQUENZA FISSE PER OGNI NOTA ; 01_sinusoidi.orc sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 instr 1 anuovaorc oscil 10000, 220, 1 out anuovaorc endin ; 01_sinusoidi.sco f1 0 4096 10 1 i1 0 3 i1 4 2 i1 6 2 AMPIEZZA E FREQUENZA DEFINITE PER OGNI NOTA ; 05_cambio_ampfreq.orc sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 instr 1 asuoni oscil p4, p5, 1 out asuoni endin ; 05_cambio_ampfreq.sco f1 0 4096 10 1 ;p1 p2 p3 p4 p5 i1 0 3 40000 110 i1 4 2 20000 110 i1 6 2 10000 440 I1 9 2 40000 440 Esempio 05_cambio_ampfreq
Polifonia Gli strumenti Csound sono polifonici senza limite di voci. Esempio score: f1 0 4096 10 1 ;p1 p2 p3 p4 p5 i1 0 3 7000 261.625 ;DO i1 0 3 7000 329.627 ;MI i1 0 3 7000 391.995 ;SOL i1 0 3 7000 466.163 ;SI Esempio 06_polifonia
Numero strumenti Csound non pone limite al numero di strumenti che possono suonare contemporaneamente. Esempio: ;orchestra sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 instr 1 aprimo oscil p4, p5, 1 out aprimo endin instr 2 asecondo oscil p4, p5, 2 out asecondo ;score f1 0 4096 10 1 f2 0 4096 10 0 1 ;p1 p2 p3 p4 p5 i1 0 3 10000 222 i2 4 3 10000 222 i1 8 3 8000 800 i2 12 3 8000 800 Esempio: 07_piùstrum
Variabili di controllo: i glissandi Creare eventi sonori che glissano da una frequenza ad un’altra all’interno di una nota. Esempio strumento: valore iniziale tempo valore finale instr 1 kglis line 220, p3, 440 a1 oscil p4, kglis, 1 out a1 endin Esempio: 08_gliss
Variabili di controllo: inviluppi di ampiezza Creare una dinamica interna al suono: inviluppo. Esempio strumento: instr 1 kenv line 0, p3, 10000 a2 oscil kenv, 220, 1 out a2 endin Esempio 09_inviluppo
Modalità per gestire ampiezza e frequenza Metodo fisso Metodo dipendente da parametri dello score Metodo dipendente da una variabile di controllo
Manipolare più segmenti contemporaneamente L’opcode linseg consente di costruire più segmenti consecutivi (a differenza di line che ne genera uno solo). nella prima metà del tempo globale nella seconda metà del tempo globale instr1 kglissa linseg 800, p3/2, 1000, p3/2, 400 anew oscil 1500, kglissa, 1 out anew endin Esempio: 10_linseg
Variabili di controllo che giacciono su uno o più segmenti di esponenziale Per avere un glissando più naturale: usare un segmento di esponenziale. line expon instr 1 kglis expon 220, p3, 440 a1 oscil p4, kglis, 1 out a1 endin
Variabili di controllo che giacciono su uno o più segmenti di esponenziale linseg expseg segmenti di esponenziale per la frequenza segmenti di esponenziale per l’ampiezza instr1 kglissa expseg p5, p3/2, p6, p3/2, p7 kinvil expseg .001, p3/3, 1000, p3/3, 10000, p3/3, .001 anew oscil kinvil, kglissa, 1 out anew endin Esempio: 11_esponenziale
Inviluppi con l’opcode linen Creare inviluppi di ampiezza trapezoidali di tipo attacco-costanza-estinzione. tempo di attacco tempo di estinzione instr 1 kenv linen 10000, .1, p3, .5 a1 oscil kenv, 440, 1 out a1 endin Esempio: 12_trapezio
Codifica frequenza in ottave e semitoni nome nota Hz Cpspch DO 261.63 8.00 DO# 277.18 8.01 RE 293.66 8.02 RE# 311.13 8.03 MI 329.63 8.04 FA 349.23 8.05 FA# 370.00 8.06 SOL 392.00 8.07 SOL# LA 440.00 8.09 LA# 466.17 8.10 SI 493.86 8.11 523.26 9.00 ;strumento instr 1 ifreq = cpspch(p5) a1 oscil p4, ifreq, 1 out a1 endin ;score f1 0 4096 10 1 ;p1 p2 p3 p4 p5 i1 0 3 7000 8.00 i1 0 3 7000 8.02 i1 0 3 7000 8.04 i1 0 3 7000 9.00 Esempio: 13_scala
Codifica ampiezza in deciBel ;strumento instr 1 iamp = ampdb(p4) ifreq = cpspch(p5) a1 oscil iamp, ifreq, 1 out a1 endin dB valore 90 31622.78 88 25118.86 … 2 1.26 1.00 Esempio 14_dB
Notazioni abbreviate Note senza pause: ogni nota inizia dove termina la precedente (+). Stesso valore ripetuto (.). Valori che variano linearmente (>). i1 0 1 10000 200 i1 + . 10000 > i1 + . 10000 600 Esempio: 15_simbolispeciali
Costanti e variabili Costanti: valori che non cambiano nel corso dell’esecuzione (sr, kr, sr/kr, …). Variabili: “cassetti” dove vengono depositati i risultati delle operazioni che seguono: di inizializzazione; di controllo; audio.
Riferimenti utili R.Boulanger, The Csound book, Cambridge, MIT Press, 2000. R.Bianchini, A.Cipriani, Il suono virtuale, Roma, ConTempoNet, 2001. http://www.csounds.com