CSound
CSound è un linguaggio di programmazione sviluppato tramite il linguaggio C. Esso permette, attraverso l’utilizzo di una grande varietà di opcode (funzioni), di creare sempre nuovi suoni partendo dal basso, dalle “fondamenta” del suono: le oscillazioni. È possibile utilizzare in CSound i seguenti tipi di sintesi audio:
- sintesi additiva
- sintesi sottrattiva
- sintesi granulare
- sintesi per formanti
- sintesi FM
- sintesi a modelli fisici
e molti altri tipi di sintesi derivati direttamente o indirettamente da quelle appena citate.
La storia
Il formato .csd
Un programma sorgente di CSound si presenta sotto forma di un unico file .csd diviso in sezioni da alcuni tag; le due sezioni più importanti sono gli Instruments e la Score; questi due termini, quando non esisteva ancora il formato unificato .csd, davano il nome ai due file sorgenti separati, l’uno con estensione .orc (orchestra = strumenti) e .sco (Score = partitura). Ancora oggi le funzioni del file-orchestra (Instruments) e del file-partitura (Score) sono rimaste invariate: semplicemente, da due file distinti si è passati a due sezioni di un unico file. Il formato unificato è infatti nato soltanto per la praticità di lavorare su un singolo documento.
Un sorgente .csd commentato
tutto ciò che viene dopo il ";" è un commento e viene quindi ignorato dal compilatore
<CsoundSynthesizer> ; questo è il tag che identifica un file sorgente di CSound <CsOptions> ; qui vanno messi gli eventuali flags del compilatore (es. "-W -o fabio.wav" compila un file wave fabio.wav) </CsOptions> <CsInstruments> ; qui inizia la sezione per creare gli strumenti ; questo blocco viene chiamato header ; sr = 44100; questa è la frequenza di campionamento audio in Hz kr = 4410; questa è la frequenza di campionamento dei parametri di controllo in Hz ksmps = 10; questo è sr/kr, in questo caso 10 nchnls = 1; questo è il numero di canali, in questo caso 1, mono ;----------------------------------------------------------------------------------------------------------------------- instr 1; qui dichiariamo l'inizio dello strumento 1 ; ; var audio opcode oscillatore amp freq funz ; a1 oscili 10000, 1000, 1 ; ; tutte le variabili audio devono iniziare per "a" (a1, a2, afabio, apippo...) ; alla variabile "a1" abbiamo collegato un oscillatore di ampiezza 10000, frequenza 1000, funzione 1 ; ; l'ampiezza va stabilita in valori assoluti (nel caso di file a 16 bit l'ampiezza massima in valori ; assoluti è uguale a 2 e x p 16 / 2 {\displaystyle 2exp16/2}, questo perché con valori assoluti intendiamo il massimo valore ; numerico in ampiezza di un singolo campione, o nella regione positiva o in quella negativa ; ; la frequenza va espressa in Hz ; ; il numero di funzione stabilisce in quale "tabella" il compilatore deve disegnare la funzione ; out a1; colleghiamo l'uscita dell'oscillatore all'uscita del compilatore ; endin; diciamo al compilatore che il nostro strumento è finito ; </CsInstruments> ; qui chiudiamo la sezione strumenti ; <CsScore> ; qui iniziamo la sezione score ; ; richiama la funz 1 istante di inizio n. di punti per disegnare la f GEN amp delle armoniche ; f1 0 4096 10 1 .7 .5 ; ; per prima cosa diciamo al compilatore di andare a leggere la funzione f1, che era il nostro oscillatore, ; ; poi dichiariamo l'istante in secondi dal quale la nostra funzione deve iniziare, in questo caso 0 ; ; scegliamo il numero di punti, che, nella tabella immaginaria, il compilatore dovrà usare per disegnare la funzione ; N.B. il numero di punti deve essere sempre una potenza di 2 o in casi particolari ( 2 n ) + 1 {\displaystyle (2^{n})+1}
; ; adesso decidiamo che tipo di Metodo di Generazione di funzioni deve essere usato, in questo caso abbiamo scelto la GEN 10 che ; disegna sinusoidi ; ; infine scegliamo l'ampiezza della fondamentale e delle successive armoniche ; N.B. l'ampiezza deve essere sempre rapportata all'ampiezza dell'oscillatore, per esempio nel nostro caso, dato che il nostro ; oscillatore ha un'amp. di 10000, la fondamentale risulterà essere 10000*1, la I° armonica 10000*0.7, la II° 10000*0.5 ; ; adesso non ci resta che tracciare le note sul "pentagramma" i1 0 12 ; questo significa che lo strumento 1 (i1) suonerà dall'istante 0 per 12 secondi ; </CsScore> ; chiude la score </CsoundSynthesizer> ; chiude il sorgente
Lo stesso file sorgente senza commenti
<CsoundSynthesizer> <CsOptions> </CsOptions> <CsInstruments> ; sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; instr 1 ; a1 oscili 10000, 1000, 1 ; out a1 ; endin ; </CsInstruments> ; <CsScore> ; f1 0 4096 10 1 .7 .5 ; i1 0 12 ; </CsScore> </CsoundSynthesizer>
Collegamenti esterni
- Official Csound Website, csounds.com.
- Virtual Sound, virtual-sound.com.
- La voce Csound su musicainformatica.it, musicainformatica.it.
Fonte: Wikipedia
Voce: CSound nel sito http://www.musicainformatica.it/argomenti/csound.php
Cenni storici – La prima versione di Csound fu terminata dopo una lunga attività di ricerca condotta da Barry Vercoe nel corso di oltre un decennio. Nel 1968 sviluppò il Music 360 a cui fece seguito, l’anno dopo, il Music 11. Nei primi anni Ottanta, invece, Vercoe si è dedicato alle problematiche dell’interazione dal vivo tra computer ed esecutore, realizzando il Synthetic Performer. È dall’insieme di queste attività di ricerca che nel 1986, al prestigioso M.I.T. di Cambridge, nel Massachusetts, Barry Vercoe terminò il nuovo linguaggio per la musica informatica, ultimo nato tra i Music N e anche il più longevo. Sulla nascita di Csound, oltre i precedenti lavori di Vercoe, ha inciso molto anche la mutata situazione tecnologica di quegli anni. Oltre la disponibilità di computer prestanti ed economici, rispetto a quelli disponibili negli anni precedenti, incise anche la diffusione del linguaggio C che garantiva sia una portabilità più vasta sia una semplificazione rispetto all’uso del nuovo linguaggio.[1]
Il rapporto con i predecessori – Le precedenti esperienze di Vercoe, come abbiamo appena accennato, hanno avuto un ruolo importante nella nascita di Csound, ed è chiaro, allora, che quest’ultimo stringe un rapporto stretto con i software e i sistemi sviluppati negli anni precedenti. Al di là del rapporto di discendenza indiretta con il Music IV, Csound stringe un legame particolare con il Music 11, tanto che il codice di questo poteva essere letto anche con Csound. Altrettanto interessante e importante è il rapporto con il Synthetic Performer. Essendo programmato già in C, alcune funzioni di questo particolare sistema furono riadattate per Csound.
Le novità – Fin dai primi anni Csound fu apprezzato per alcune novità che lo distinguevano positivamente dai suoi antenati più datati, come il Music IV e il Music V. In particolare va segnalata la distinzione, peraltro già introdotta con il Music 11 e poi perfezionata, tra segnali di controllo e segnali audio (che in Csound si identificano semplicemente anteponendo la lettera k o a al nome della variabile) che, grazie alla differenziazione delle frequenza di campionamento, determinava un minor carico di lavoro sulla CPU e quindi migliori prestazioni. Csound fu progettato per mettere insieme quanto di meglio si potesse ricavare dal linguaggio C, dal Fortran e dall’Assembler. Alle novità della prima versione si aggiunsero, nel corso degli anni successivi, numerose altre funzioni che hanno contribuito a fare di Csound un programma professionale e flessibile alle diverse esigenze. Tra i tanti aspetti che si potrebbero citare ricordiamo almeno l’adozione dei comandi veloci (che permettevano di snellire e velocizzare la compilazione del codice, aspetto tutt’altro che indifferente in un programma basato su un approccio alfanumerico), l’implementazione di interfacce grafiche, i numerosi programmi di utilità, l’utilizzo in tempo reale, l’adozione del formato unico .csd (che sostituì il doppio formato .orc per l’orchestra, o instruments, e .sco per la partitura, in inglese score) e altro ancora. Tutto questo ha contribuito ha fare di Csound un linguaggio professionale utile per numerose applicazioni nell’ambito della musica informatica.
Tempo reale – Tra le novità più importanti, rispetto sia ai precedenti linguaggi della famiglia Music N sia rispetto alle esigenze di coloro interessati all’uso del computer in ambito musicale, vi è la possibilità di utilizzare Csound anche per applicazioni in tempo reale. Sebbene oggi non vi siano problemi all’utilizzo di Csound in tempo reale, si è trattata di una novità introdotta con una certa gradualità. La prima versione di Csound in tempo reale è stata rilasciata nel 1990 da Barry Veroce. In quell’occasione furono introdotte anche altre novità come l’implementazione della sintesi FOF (basata sul software Chant sviluppato all’Ircam di Parigi) e l’implementazione del PhaseVocoder, sul modello di quello sviluppato da Mark Dolson.[2] A questa prima versione ha fatto seguito, nel 1996, una nuova che migliorava in particolare l’uso del Midi all’interno dell’ambiente di lavoro.[3] Rispetto all’uso in tempo reale va ricordata anche la versione di CsoundAV, realizzata da Gabriel Maldonado, ricercatore indipendente, ideata per lavorare non solo con l’audio ma anche con la grafica video.
La comunità di riferimento – Accanto alle questioni tecniche, vi sono anche altri aspetti che hanno contribuito a fare di Csound un programma molto apprezzato. Innanzitutto va detto che Csound è disponibile in forma gratuita, scaricabile dal sito ufficiale, cosa che ha incentivato la nascita di una vasta comunità di riferimento interessata alla divulgazione e allo sviluppo di versioni più efficienti e di utilità che aumentano o migliorano le potenzialità del software di Vercoe. Tutto questo ha contribuito anche alla sua vasta diffusione tra privati ma anche all’interno di centri dedicati, a vario titolo, alla musica informatica. La comunità di riferimento oggi si offre anche come valido sostegno per la risoluzione delle diverse problematiche che è possibile incontrare durante l’utilizzo del software. Questa cosa, infine, ha permesso di avere a disposizione sul web una vasta mole di risorse e documenti che aiutano l’utente all’uso del programma.
Le utilità – Nel corso della sua storia Csound è stato affiancato da numerosi altri software o utilità che hanno contribuito e contribuiscono ancora oggi a facilitare l’uso di un linguaggio che per il suo approccio alfanumerico resta comunque piuttosto scomodo. A partire da Cscore, una delle prime utilità sviluppate dallo stesso Vercoe e pensato per facilitare la scrittura del file di partitura, si sono poi avute numerose utilità tra le quali ricordiamo almeno Cecilia, un’interfaccia grafica specifica per Csound, Blue (un ambiente di composizione per Csound basato su Java), Winsound (una versione di Csound per sistemi Windows), Macsound (versione di Csound per utenti Mac), QuteCsound (un ambiente di lavoro con interfaccia grafica) WinXound (un editor per Csound e CosundAV).
Le pubblicazioni – Non mancano infine le pubblicazioni dedicate al software di Veroce che aiutano a comprenderne l’utilizzo e facilitano l’applicazione di Csound in ambito musicale. Uno dei testi di riferimento è The Csound Book di Richard Boulanger. In Italia è stato pubblicato Il Suono Virtuale di Riccardo Riccardo Bianchini e Alessandro Cipriani, disponibile anche in lingua inglese con il titolo di Virtual Sound. Entrambi i testi, quello di Boulanger e di Bianchini e Cipriani, offrono una panoramica generale sulle diverse funzionalità del programma oltre a degli approfondimenti più specifici. Molto interessante è anche Cooking with Csound: Woodwind and Brass Recipies di Andrew Horner e Lydia Ayers. Si tratta di un testo che raccoglie numerosi esempi di listati che riproducono sonorità degli strumenti tradizionali. Da questo punto di vista è molto utile anche The Csound Catalog, anch’esso una sorta di libreria di codici già pronti per essere utilizzati. Accanto alle pubblicazioni cartacee vanno menzionate anche le riviste virtuali come The Csound Journal e The Csound Magazine. Maggiori informazioni si possono trovare sul sito ufficiale: http://www.csounds.com, mentre nella sezione risorse sono presenti i link ad alcuni materiali disponibili in rete.
Bibliografia
[1] Barry Vercoe, Foreword in The Csound Book, a cura di Richard Boulanger, The MIT Press, 2000.
[2] Barry Vercoe, Dan Ellis, Real-Time Csound: Software Synthesis with Sensing and Control, Proceedings of International Computer Music Conference, Glasgow, 1990.
[1] Barry Vercoe, Extended Csound, Proceedings of International Computer Music Conference, Hong Kong, 1996, pp. 141 – 142.
Rispondi