Csound

Abbozzo musica elettronica
Questa voce sugli argomenti linguaggi di programmazione e musica elettronica è solo un abbozzo.
Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento.
Csound
linguaggio di programmazione
Data di origine1986
Ultima versione6.18.1 (24 novembre 2022)
Implementazione di riferimento
LicenzaGNU Lesser General Public License
Sito webcsound.com/
Modifica dati su Wikidata · Manuale
Schermata di 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[1]. È possibile utilizzare in CSound i seguenti tipi di sintesi audio:

e molti altri tipi di sintesi derivati direttamente o indirettamente da quelle appena citate.

La storia

Sezione vuotaQuesta sezione sull'argomento informatica è ancora vuota. Aiutaci a scriverla!

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>

Note

  1. ^ (EN) Get started, su csound.com. URL consultato il 9 marzo 2020.

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su Csound

Collegamenti esterni

  • Sito ufficiale, su csound.com. Modifica su Wikidata
  • Csound, su packages.debian.org. Modifica su Wikidata
  • Repository sorgenti di Csound, su github.com. Modifica su Wikidata
  • (EN) Csound, su Free Software Directory. Modifica su Wikidata
  • Virtual Sound, su virtual-sound.com. URL consultato il 4 dicembre 2006 (archiviato dall'url originale il 6 dicembre 2006).
  • La voce Csound su musicainformatica.it, su musicainformatica.it.
Controllo di autoritàLCCN (EN) sh2002010420 · J9U (ENHE) 987007566471505171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica