Sei sulla pagina 1di 20

Modelli di Sintesi

TEORIA E REALIZZAZIONI PRATICHE MEDIANTE C-SOUND

Introduzione Modelli di Sintesi prescelti: Modulazione dAmpiezza Modulazione ad Anello Modulazione di Frequenza Sintesi Granulare Esempi di Realizzazione con C-Sound Listati dei Programmi Esempi Sonori Conclusioni

INTRODUZIONE
Bisogna premettere, prima di parlare, che tutto ci che riguarda il Trattamento del segnale, fatto con un computer, riguarda una sequenza di numeri. Vale a dire che tutto ci che toccheremo nei Modelli di Sintesi, o altro, sono sempre sequenze di numeri, questo perch il linguaggio usato dal computer un linguaggio Binario fatto di 0 e 1. Esistono molti metodi di Sintesi per laudio digitale. Essi sono diversi nella loro applicazione, nei presupposti, nella realizzazione, ecc. Per cui quasi inutile parlare di Sintesi se prima non si spiega: A) che cosa la Sintesi B) i metodi principali partendo dal pi semplice Che cosa la Sintesi? prima di tutto come terminologia, giusto per capire cosa succede, deriva dal greco snthesis composizione, ordinamento, che una derivazione di syntithnai mettere insieme. Nel caso della Sintesi Musicale, che viene fatta attraverso un computer, si tratta di produrre o riprodurre artificialmente qualcosa di esistente in natura: sintesi vocale del parlato = riproduzione elettroacustica computerizzata della voce umana. Il Metodo pi semplice per capire meglio la Sintesi, il Campionamento. Si tratta pi semplicemente di prelevare un campione di un suono o di un rumore, o di un effetto sonoro in genere. Prendiamo per esempio il campionamento di uno strumento. Se prendiamo una chitarra, ci mettiamo un microfono e lo attacchiamo al computer, possiamo (attraverso vari tipi di programmi) registrare tutto ci che suoniamo con la chitarra. Passare dal suono Analogico a quello Digitale vuol dire passare da una variazione continua di tensione elettrica ad una sequenza numerica. Per fare questo il computer dispone di un Convertitore Analogico-Digitale che converte il suono in numeri, (sequenza numerica) secondo una frequenza di Campionamento gi fissata in 44100 Campioni al secondo. Per sentire le modifiche che faremo poi al suono, il suono viene ri-trasferito attraverso un Convertitore Digitale-Analogico, che converte il suono da una sequenza numerica, ad una variazione continua di tensione elettrica. La Sintesi Digitale pura, proprio perch digitale sta nellescludere il campionamento. Viene generata, quindi, direttamente sul computer la sequenza numerica che verr convertita poi in segnale analogico. In questa discussione si parler prevalentemente della Sintesi Digitale, ponendo per come esempi non solo quelli digitali ma anche campioni di suono presi da strumenti reali. nei vari metodi di Sintesi che si trovano ci sono la Sintesi Addittiva, la Sintesi Sottrattiva, la Sintesi per Modulazione, la Sintesi Granulare, la Sintesi per Formanti ecc ecc..

Ovviamente possibile modificare il suono digitale (sia campionato, sia puro) in moltissime maniere, per mezzo di filtri, per metodi di sintesi ecc.. Le tipologie di Sintesi che andremo a vedere fanno parte della Sintesi per modulazione e della Sintesi Granulare. Se da una parte, il suono viene arricchito aggiungendo forme donda, (sintesi addittiva) dallaltra, con un suono molto ricco, viene modificato togliendo alcuni tipi di frequenza. (sintesi sottrattiva) da unaltra parte ancora (come negli esempi) una forma donda ne modula unaltra. Un discorso diverso sar invece per la sintesi granulare, ma lo vedremo pi avanti.

MODELLI DI SINTESI PRESCELTI


I modelli di sintesi prescelti per questa discussione sono quattro:

Modulazione di Ampiezza Modulazione ad Anello Modulazione di Frequenza Sintesi Granulare

Sia la modulazione di Ampiezza, sia quella ad Anello e di Frequenza, si basano sulla tecnica della sintesi per modulazione, vale a dire che il risultato finale sar una modulazione della ampiezza o della frequenza di una forma donda.

MODULAZIONE DI AMPIEZZA E MODULAZIONE AD ANELLO


Una modulazione lalterazione della ampiezza o della frequenza o della fase di un oscillatore provocata da un altro segnale. Per non fare confusione, diremo che cosa in breve un Oscillatore. Un oscillatore un circuito elettronico che genera forme d'onda di frequenza, forma e ampiezza di molteplici tipi senza un segnale di ingresso. Alcuni sono progettati per poterne generare di frequenza, forma e ampiezza variabile tramite potenziometri. Quindi possibile attraverso un oscillatore generare una forma donda che risulti intonata anche senza un segnale preventivamente campionato da una fonte sonora Per comodit Chiameremo Suono la forma donda prodotta dalloscillatore. Come dicevamo la modulazione lalterazione dellampiezza o della frequenza o della fase di un Suono provocata da un altro segnale. Il suono modulato viene detto Portante (carrier) mentre il suono che modula viene detto Modulante (modulator) Quando la frequenza del suono modulante risulta pi alta del suono modulato, si hanno la comparsa di nuove frequenze che si aggiungono alla portante, e sono pari alla somma della portante pi la modulante (C + M) e alla sottrazione della portante meno la modulante, (C - M) e vengono dette Bande Laterali perch appaiono in modo simmetrico sopra e sotto la frequenza della portante. Dalla comparsa di queste nuove frequenze nasce la tecnica della Modulazione di Ampiezza (AM=Amplitude Modulation) e della Modulazione ad Anello (RM=Ring Modulation) La differenza tra i due tipi di modulazione sta nel fatto che nella Modulazione di Ampiezza avremo un segnale unipolare, mentre nella Modulazione ad Anello avremo un segnale bipolare.
Segnale Unipolare Segnale Bipolare

Il segnale bipolare un segnale che oscilla tra valori positivi e valori negativi dampiezza il segnale Unipolare un segnale che oscilla solo tra i valori positivi o negativi es. di segnale bipolare es. di segnale unipolare
(segnale unipolare nel campo positivo)! ! ! ! ! ! abimod oscili 1, 220, 1 aunimod =abimod+1

a1 oscili 10000, 220, 1

;Audio1, Oscillatore, Ampiezza, Frequenza, Funzione

Quando il segnale modulante di tipo Bipolare si ottiene una Modulazione ad Anello, quando invece il segnale modulante di tipo Unipolare si ottiene una Modulazione di Ampiezza. Per creare un segnale unipolare bisogna aggiungere una costante. La costante un segnale che non varia a una oscillazione bipolare. Questa costante viene chiamata DC Offset (Direct Current Offset, oppure componente di corrente continua) Nel caso del segnale modulante unipolare, lo spettro del segnale risultante conserva anche la componente frequenziale della portante oltre alla somma e differenza di portante e modulante facciamo qualche esempio:

Esempi di Realizzazione con C-Sound Mod Ampiezza 01


<CsoundSynthesizer>! <CsOptions> </CsOptions> <CsInstruments> sr = 44100! kr = 4410! ksmps = 10! nchnls = 1! ! ! ! ! ! ! ! ! ! ! ;ORCHESTRA

! ! ! !

! ! ! !

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Contol Rate (frequenza di campionamento dei segnali di controllo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..) ;Strumento n 1 ;Ampiezza oscillante tra 5000 e -5000 ;aggiungendo un DCOffset 5000 avremo una modulante unipolare ;Portante, lAmpiezza data dalla oscillazione unipolare tra 0 e 10000 ;uscita

instr 1! ! ! ! abimod oscili 5000, 200, 1! aunimod = abimod+5000! ! aport oscili aunimod, 800, 1! out aport! ! ! ! endin

! ! ! ! !

</CsInstruments>! ! ! ! ;SCORE <CsScore> f 1 0 4096 10 1 ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale i 1 0 3! ! ;Strumento1, attacco immediato (zero secondi), durata in sec.

Mod Ampiezza 02
<CsoundSynthesizer>! <CsOptions> </CsOptions> <CsInstruments> ! ;ORCHESTRA

sr = 44100! kr = 4410! ksmps = 10! nchnls = 1!

! ! ! !

! ! ! !

! ! ! !

! ! ! ! ! ! ! 1

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Contol Rate (frequenza di campionamento dei segnali di controllo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..) ;Strumento 1 ;inviluppo dellampiezza della modulante da 0 a 5000 ;Variazione dellindice di modulazione da 0 a 1

instr 1! ! ! ! kenv linseg 0, p3, 5000!! amod oscili kenv, 1000, 1! aport oscili 5000+amod, 2000, out aport endin

</CsInstruments>! ! ! ! ;SCORE <CsScore> f 1 0 4096 10 1 ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale i 1 0 4! ! ;Strumento1, attacco immediato (zero secondi), durata in sec. e </CsScore> </CsoundSynthesizer>

Mod Anello
<CsoundSynthesizer>! <CsOptions> </CsOptions> <CsInstruments> ! ! ;ORCHESTRA

sr = 44100! kr = 4410! ksmps = 10! nchnls = 1!

! ! ! !

! ! ! !

! ! ! !

! ! ! ! ! ! !

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Contol Rate (frequenza di campionamento dei segnali di controllo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..) ;Strumento1 ;Ampiezza oscillante tra -5000 e 5000 ;Portante, lampiezza data dalla oscillazione bipolare tra -5000 e 5000

instr 1! ! ! ! abimod oscili 5000, 200, 1! aport oscili abimod, 800, 1! out aport endin

</CsInstruments>! ! ! ! ;SCORE <CsScore> f 1 0 4096 10 1! ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale i 1 0 3! ! ;Strumento1, attacco immediato, (zero secondi) durata 3 secondi </CsScore> </CsoundSynthesizer>

Mod Anello 02
<CsoundSynthesizer>! <CsOptions> </CsOptions> <CsInstruments> sr = 44100! kr = 4410! ksmps = 10! nchnls = 1! ! ! ! ! ! ! ! ! ! ! ;ORCHESTRA

! ! ! !

! ! ! !

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Contol Rate (frequenza di campionamento dei segnali di controllo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..) ;Strumento1 ;Modulante bipolare ;Portante

instr 1! ! ! ! ! abimod oscili 100, 250, 1! ! aport oscili 100*abimod, 800, 1! amolt = abimod+aport out aport endin </CsInstruments>! ! <CsScore> f 1 0 4096 10 1! ! i 1 0 3! ! ! e </CsScore> </CsoundSynthesizer> ! ! ! !

;SCORE

;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale ;Strumento1, attacco immediato, (zero secondi) durata 3 secondi

MODULAZIONE DI FREQUENZA

come si visto per la modulazione di ampiezza, anche la modulazione di frequenza si basa su un suono portante ed uno modulante, il suono (segnale) modulante per, in questo caso, non moduler lampiezza ma la frequenza, appunto, del suono portante.

Prendiamo due oscillatori. Alla frequenza delloscillatore portante viene sommata luscita delloscillatore modulante, in questo modo la frequenza delloscillatore portante subisce una serie di variazioni che spingono la frequenza verso lacuto o il grave (quando loscillatore modulante positivo quello portante sale di frequenza, quando quello modulante negativo, quello portante scende di frequenza) per indicare lescursione massima, misurata in Hz, subita dalla frequenza della portante che dipende dalla ampiezza della modulante si usa il termine Frequenza di deviazione di picco (peak frequency deviation) o pi semplicemente Deviazione

La differenza principale tra FM e RM e AM sta nel fatto che nella FM non ci sono solo due o tre bande laterali, ma una serie teoricamente innita data da tutte le frequenze. In realt per di tutte le bande presenti solo poche sono quelle signicative, per determinare un numero approssimativo di bande laterali signicative ci serve quello che viene chiamato Indice di Modulazione. seguendo la formula per cui I= D/M (considerando D e M costanti) lindice di modulazione ci fornir il numero approssimativo di bande laterali signicative. Nella FM la posizione delle bande laterali determinata dalla relazione tra portante e modulante, mentre il numero di bande laterali proporzionale allampiezza del segnale modulante.

Esempi di Realizzazione con C-Sound Mod Frequenza

<CsoundSynthesizer>! <CsOptions> </CsOptions> <CsInstruments> sr = 44100! kr = 2205! ksmps = 20! nchnls = 1! ! ! ! ! ! ! ! !

ORCHESTRA

! ! ! !

! ! ! !

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Contol Rate (frequenza di campionamento dei segnali di controllo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..)

instr 1 icamp = p4 !! icfrq = p5 !! imfrq = p6 !! indx = p7 ! ! ;-------MODULANTE

! ! ! !

;ampiezza portante (unit assolute) ; frequenza portante (Hz) ; frequenza modulante (Hz) ; indice di modulazione

amod oscili indx*imfrq,imfrq,1 ;--------PORTANTE ! ! ! ! ; ampiezza=ICAMP ; frequenza= ICFRQ + uscita dell'oscillatore modulante (AMOD)

acar oscili icamp, icfrq+amod, 1 outs acar endin </CsInstruments>! ! ! ;SCORE <CsScore> f 1 0 4096 10 1! ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale ; azione durata ampzz port 10000 10000 10000 10000 10000 10000 10000 10000 ! ! ! ! ! ! ! ! freq.port 1000 1000 1000 1000 1000 1000 1000 1000 !! !! !! !! !! !! !! !! freq mod 3 ! 3 ! 3 ! 3 ! 100 100 100 100 ! ! ! ! ! ! ! ! indice modulazione 10 30 50 1000 10 30 50 1000

i 1 ! 0 ! 2.9 ! ! i 1 ! 3 ! . ! ! i 1 ! 6. ! . ! ! i 1 ! 9. ! . ! ! i 1 ! 12 ! 2.9 ! ! i 1 ! 15 ! . ! ! i 1 ! 18 ! . ! ! i 1 ! 21 ! . ! ! e </CsScore> </CsoundSynthesizer>

! ! ! !

Mod Frequenza 02

<CsoundSynthesizer>! ! <CsOptions> --midi-key-cps=4 --midi-velocity=5 </CsOptions> <CsInstruments> sr = 44100! ! ksmps = 128!! nchnls = 1! ! ! ! ! ! ! !

ORCHESTRA

! ! !

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..)

instr 1 ifreq = p4 ! ! ! ! ; Da p4 nella partitura o cps da note MIDI

kmodfactor invalue "modfactor" kmodindex invalue "modindex" ! ! ! ! ! ! ; inviluppo della modulante

kmodatt kmoddec kmodsus kmodrel amodenv

invalue "modatt" invalue "moddec" invalue "modsus" invalue "modrel" madsr i(kmodatt), i(kmoddec), i(kmodsus), i(kmodrel)

kmodfreq = kmodfactor*ifreq ; Indice = Am * fc/fm kmodamp = kmodindex*kmodfactor*ifreq ; Modulante 2 amod poscil amodenv*kmodamp, kmodfreq, 1 ;inviluppo dell'ampiezza della portante kaatt invalue "aatt" kadec invalue "adec" kasus invalue "asus" karel invalue "arel" aenv madsr i(kaatt), i(kadec), i(kasus), i(karel) ; Portante aout poscil aenv, ifreq+amod, 1 ; Uscita klevel invalue "level" outvalue "index", kmodindex outs aout*klevel, aout*klevel endin

instr 98 ! ! ! ! kfreq invalue "freq" event "i", 1, 0, p3, kfreq turnoff endin instr 99 ! ! ! !

; Strumento di innesco dal bottone

;Sempre sullo strumento, Questo strumento aggiorna le frequenze del modulatore che dipendono dalla frequenza di base ed i fattori di freq.

kfreq invalue "freq" kmodfactor invalue "modfactor" outvalue "mod1freq", kfreq*kmodfacto ; Display dello spettro aoutl, aoutr monitor dispfft aoutl, 0.2, 4096 ; Attiva o disattiva la casella di controllo

kon invalue "on" ktrig changed kon if ktrig == 1 then ! if kon == 1 then ! ! event "i", 1, 0, -1, kfreq ! elseif kon == 0 then ! ! turnoff2 1, 0, 1 ! endif endif endin

</CsInstruments>! ! ! ;SCORE <CsScore> f 1 0 4096 10 1! ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale i 99 0 30! ! ;Strumento 99, attacco immediato, (zero secondi) durata 30 secondi e </CsScore> </CsoundSynthesizer>

SINTESI GRANULARE La Sintesi Granulare, parte dal presupposto di pensare il suono non solo come evento ondulatorio ma anche corpuscolare. Usando un linguaggio pi moderno e forse pi diretto si pu dire che il suono viene pensato come consistenza sonora, viene reso cio tridimensionale pensando non pi al suono come onda ma come massa sonora corposa.

La sintesi granulare genera unalta densit di eventi acustici chiamati Grani, la cui durata varia tra 1 e 100 millisecondi. (ms) I grani sono caratterizzati da un particolare inviluppo, generalmente simmetrico, che pu variare da un tipo gaussiano, a un inviluppo costituito da attacco, sustain, decay, o solo da attacco e decay. La modica dei singoli grani varia a seconda di come viene pensato levento sonoro, possibile intervallare i grani con delle pause, oppure sovrapporli, possibile modicare la durata, frequenza, forma donda, inviluppo, densit di ogni singolo grano nel tempo, tutto questo inuisce notevolmente sul risultato sonoro.

La necessit di un controllo di alto livello, richiede la denizione di un modello di composizione, per esempio si pu organizzare la massa dei grani distribuendoli seguendo la legge di distribuzione dei gas perfetti (Xenakis) oppure come degli ammassi che deriva da quella meteorologica (Roads) Facendo un paragone visuale di quello che succede il suono al suo interno non liscio ma rugoso

In generale per la sintesi granulare richiesto un notevole lavoro computazionale al calcolatore, per controllare i valori dei parametri relativi alla sintesi di ogni singolo grano.

Esempi di Realizzazione con C-Sound Sintesi Granulare (opcode grain)

<CsoundSynthesizer>! <CsOptions> </CsOptions> <CsInstruments> sr = 44100! kr = 4410! ksmps = 10! nchnls = 2! ! ! ! ! ! ! ! !

ORCHESTRA

! ! ! !

! ! ! !

;Sample Rate (frequenza di campionamento, 44100 campioni al secondo) ;Contol Rate (frequenza di campionamento dei segnali di controllo) ;Rapporto tra SR e KR ;Numero dei canali (1=mono, 2= stereo, ecc..)

instr 1 iamp = p4! ! ipitch = p5!! idens = p6! ! iampoff = p7! ifrqoff = p8! igdur = p9! ! ;stereo = p10! igfn = 1 ! ! iwfn = 2! ! imgdur = .5!!

! ! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! ! !

; ampiezza ; frequenza ; densit dei grani ; P7 = gamma d'ampiezza ; P8 = gamma di frequenza ; durata del grano ; (1=sinistra, 0=destra, .5=centro) ; funzione di inviluppo del grano ; forma d'onda del grano ; durata massima del grano

a1 grain iamp, ipitch, idens, iampoff, ifrqoff, igdur, igfn, iwfn, imgdur outs a1*p10, a1*(1-p10) endin </CsInstruments>! ! ! ! ;SCORE <CsScore> f 1 0 4096 10 1! ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza della fondamentale f 2 0 4096 19 1 .5 270 .5! ;Funzione2, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme donda) ampiezza
della fondamentale earmoniche successive

ins

az 0 !

dur 5 !

ampzz hz

dens

ampoff frqoff

dur

st

i ! 1 ! e </CsScore>

10000 500 ! 30 !

10000 200 ! .05 ! .5

Sintesi Granulare 02 (con le sonoro esterno)


<CsoundSynthesizer> <CsOptions> -odac </CsOptions> <CsInstruments>

nchnls = 2 ksmps = 16 0dbfs = 1 giWin1! giWin2! giWin3! giWin4! giWin5! giWin6! giWin7! giWin8! giWin9! giDisttab! giCosine! giPan!! ! ftgen!! 1, 0, 4096, 20, 1, 1
; Hamming ! ftgen!! 2, 0, 4096, 20, 2, 1
; von Hann ! ftgen!! 3, 0, 4096, 20, 3, 1
; Triangle (Bartlett) ! ftgen!! 4, 0, 4096, 20, 4, 1
; Blackman (3-term) ! ftgen!! 5, 0, 4096, 20, 5, 1
; Blackman-Harris (4-term) ! ftgen!! 6, 0, 4096, 20, 6, 1
; Gauss ! ftgen!! 7, 0, 4096, 20, 7, 1, 6
; Kaiser ! ftgen!! 8, 0, 4096, 20, 8, 1
; Rectangle ! ftgen!! 9, 0, 4096, 20, 9, 1
; Sync ftgen!! 0, 0, 32768, 7, 0, 32768, 1
; for kdistribution ftgen!! 0, 0, 8193, 9, 1, 1, 90

; cosine ftgen!! 0, 0, 32768, -21, 1

; for panning (random values between 0 and 1)

opcode!

ShowLED_a, 0, Sakkk

;shows an audiosignal in an outvalue channel, in dB or raw amplitudes ;Soutchan: string as name of the outvalue channel ;asig: audio signal to be shown ;kdispfreq: refresh frequency of the display (Hz) ;kdb: 1 = show as db, 0 = show as raw amplitudes (both in the range 0-1) ;kdbrange: if idb=1: which dB range is shown Soutchan, asig, ktrig, kdb, kdbrange! xin kdispval! max_k!asig, ktrig, 1 ! if kdb != 0 then kdb ! ! = ! ! dbfsamp(kdispval) kval !! = ! ! (kdbrange + kdb) / kdbrange ! else kval! ! =! ! kdispval ! endif ! if ktrig == 1 then ! ! outvalue! Soutchan, kval ! endif endop opcode ShowOver_a, 0, Sakk ;shows if asig has been larger than 1 and stays khold seconds ;Soutchan: string as name of the outvalue channel ;kdispfreq: refresh frequency of the display (Hz) Soutchan, asig, ktrig, khold! xin kon! ! init! ! 0 ktim! ! times kstart! ! init! ! 0

kend! ! khold!!

init! ! =! !

0 (khold < .01 ? .01 : khold)


; avoiding too short hold times

kmax! ! max_k!! asig, ktrig, 1 ! if kon == 0 && kmax > 1 && ktrig == 1 then kstart! ! =! ! ktim kend! ! =! ! kstart + khold ! ! outvalue! Soutchan, kmax kon! ! =! ! 1 ! endif ! if kon == 1 && ktim > kend && ktrig == 1 then ! ! outvalue! Soutchan, 0 kon! ! =! ! 0 ! endif endop

instr 1


; master instrument ;;write the soundle to the buffer (ftable) giSound

Sfile!! giFile!

invalue! "_Browse1" ! ftgen!! 0, 0, 0, -1, Sfile, 0, 0, 1

;;select shape of the grain envelope and show it kwinshape!





invalue!



"winshape"

; 0=Hamming, 1=von Hann, 2=Bartlett, 3=Triangle,

;4=Blackman-Harris,

;5=Gauss, 6=Kaiser, 7=Rectangle, 8=Sync

event_i! outvalue!

"i", 10, 0, -1, i(kwinshape)+1 "ftab", 12-(kwinshape)


; graph widget shows selected window shape

;;triggers i 10 at the beginning and whenever the grain envelope has changed

gksamplepos!init! ! kchanged! changed! if kchanged == 1 then



event!!
endif endin
event!!

; position of the pointer through the sample ; sends 1 if the windowshape has changed ; turn off previous instance of i10

kwinshape

"i", -10, 0, -1

"i", 10, 0, -1, kwinshape+1, gksamplepos


; turn on new instance

instr 10
; performs granular synthesis ;;used parameters for the partikkel opcode iwin! ! =! p4

; shape of the grain window igksamplepos =! p5

; pointer position at the beginning ifiltab! =! giFile
; buffer to read kspeed! invalue! "speed"
; speed of reading the buffer (1=normal) kspeed0! invalue! "speed0"
; set playback speed to 0 kspeed1! invalue! "speed1"
; set playback speed to 1 kgrainrate! invalue! "grainrate"
;grains per second

kgrainsize! invalue! "grainsize"


kcent!! invalue! "transp"
kgrainamp! invalue! "gain"
kdist!! invalue! "dist"
kposrand! invalue! "posrand"
kcentrand! invalue! "centrand"
kpan! ! invalue! "pan"

icosintab! =! giCosine

idisttab! =! ! giDisttab
kwaveform! = ! giFile

imax_grains!=! 200


; length of the grains in ms ; pitch transposition in cent ; volume ; distribution (0=periodic, 1=scattered) ; time position randomness (offset) of the read pointer in ms ; transposition randomness in cents (up and down) ; panning narrow (0) to wide (1) ; ftable with a cosine waveform ; ftable with values for scattered distribution ; source waveform ; maximum number of grains per k-period

;;speed either by slider value or by checkbox kspeed! ! =! ! (kspeed0==1 && kspeed1==1 ? 1 : (kspeed0==1 ? 0 : (kspeed1==1 ? 1 : kspeed))) ;;unused parameters for the partikkel opcode async!! = ! ! 0
; sync input (disabled)
kenv2amt! = ! ! 1
; use only secondary envelope ienv2tab ! = ! ! iwin
; grain (secondary) envelope ienv_attack!= ! ! -1
; default attack envelope (at) ienv_decay! = ! ! -1
; default decay envelope (at) ksustain_amount = ! ! 0.5
; no meaning in this case (use only secondary envelope, ienv2tab) ka_d_ratio! = ! ! 0.5
; no meaning in this case (use only secondary envelope, ienv2tab) igainmasks! = ! ! -1
; (default) no gain masking ksweepshape!= ! ! 0
; no frequency sweep iwavfreqstarttab = ! ! -1
; default frequency sweep start iwavfreqendtab = !! -1
; default frequency sweep end awavfm! ! = ! 0
; no FM input ifmamptab! = ! ! -1
; default FM scaling (=1) kfmenv! ! = ! -1
; default FM envelope (at) icosine! = ! ! giCosine
; cosine ftable kTrainCps! = ! kgrainrate
; set trainlet cps equal to grain rate knumpartials! = ! ! 1
; number of partials in trainlet kchroma! = ! ! 1
; balance of partials in trainlet krandommask!= ! ! 0
; random gain masking (disabled) iwaveamptab!=! ! -1
; (default) equal mix of source waveforms and no amplitude for trainlets kwavekey! = ! ! 1
; original key for each source waveform ;get length of source wave le, needed for both transposition and time pointer ifilen! ! tableng! giFile ifildur! = ! ! ifilen / sr
;amplitude kamp! ! = ! ! kgrainamp * 0dbfs
; grain amplitude






;transposition kcentrand! rand !! kcentrand

; random transposition iorig!! = ! ! 1 / ifildur

; original pitch kwavfreq! = ! ! iorig * cent(kcent + kcentrand)






;panning, using channel masks

tableiw! 0, 0, giPan


; change index 0 ...

tableiw! 32766, 1, giPan

; ... and 1 for ichannelmasks ichannelmasks = ! ! giPan


; ftable for panning ;;time pointer afilposphas!phasor kspeed / ifildur, igksamplepos

; in general







;generate random deviation of the time pointer kposrandsec!! = kposrand / 1000


; ms -> sec kposrand! ! = kposrandsec / ifildur


; phase values (0-1) arndpos! ! linrand! kposrand


; random offset in phase values

;add random deviation to the time pointer ; resulting phase values (0-1) ; export pointer position

asamplepos! ! gksamplepos!!

= afilposphas + arndpos

downsamp! asamplepos

agrL, agrR! partikkel kgrainrate, kdist, giDisttab, async, kenv2amt, ienv2tab, \ ! ! ienv_attack, ienv_decay, ksustain_amount, ka_d_ratio, kgrainsize, kamp, igainmasks, \ ! ! kwavfreq, ksweepshape, iwavfreqstarttab, iwavfreqendtab, awavfm, \ ! ! ifmamptab, kfmenv, icosine, kTrainCps, knumpartials, \ ! ! kchroma, ichannelmasks, krandommask, kwaveform, kwaveform, kwaveform, kwaveform, \ ! ! iwaveamptab, asamplepos, asamplepos, asamplepos, asamplepos, \ ! ! kwavekey, kwavekey, kwavekey, kwavekey, imax_grains ;panning, modifying the values of ichannelmasks imid! ! = ! ! .5
; center kleft!! = ! ! imid - kpan/2 kright! ! =! ! imid + kpan/2 apL1, apR1! pan2! ! agrL, kleft apL2, apR2! pan2! ! agrR, kright aL! ! =! ! apL1 + apL2 aR! ! =! ! apR1 + apR2 ! ! outs! ! aL, aR ;;show output kdbrange! kpeakhold! kTrigDisp! ! ! ! ! ! ! ! ! endin

invalue! invalue! metro!! ShowLED_a! ShowLED_a! ShowOver_a! ShowOver_a!

"dbrange"
"peakhold"
10 "outL", aL, "outR", aR, "outLover", "outRover",

;dB range for the meters ;Duration of clip indicator hold in seconds kTrigDisp, 1, kdbrange kTrigDisp, 1, kdbrange aL, kTrigDisp, kpeakhold aR, kTrigDisp, kpeakhold

</CsInstruments>! ! ! ;SCORE <CsScore> i 1 0 3600! ;Strumento1, attacco immediato, (zero secondi) durata 3600 secondi (1 ora) e </CsScore> </CsoundSynthesizer>

ESEMPI SONORI Gli esempi sonori sono stati realizzati con C-Sound versione 5.12.4 per Mac-intel e QuteCsound versione 0.4.6 per Mac-Intel Esportati direttamente in formato WAV da QuteCsound NOTE SUI PROGRAMMI USATI CSound E un linguaggio di programmazione sviluppato tramite il linguaggio C. E permette, attraverso l'utilizzo di una grande variet di opcode (funzioni), di creare suoni e di modulare suoni in maniera complessa. Nel lavoro di questa tesi non stato possibile per lavorare direttamente su Csound, poich non supportava bene il sistema operativo da me usato: Mac OS X Snow Leopard 10.6.5 QuteCsound E in pratica Csound ma sviluppato per funzionare con Snow Leopard, cambia soprattutto la grafica molto pi intuitiva, l Orchestra e lo Score sono nella stessa finestra, non ci sono pi le cartelle di ORC e SCO, e soprattutto si pu creare una serie di WIDGET impostabili con le funzioni degli opcode per poter avere cos tutta una serie personalizzata di console da poter usare a piacimento e in tempo reale. La versione usata per questa tesi la 0.4.6 Audacity E un Sequencer, ovvero un programma capace di gestire l'esecuzione e la registrazione di pi tracce contemporaneamente, e di poter modificare il suono applicando varie funzioni e filtri tipo vocoder, phaser, equalizzatori e altro nella versione di QuteCsound viene dato come sequencer predefinito, per aprire i file in un programma esterno. Tuttavia presenta sempre alcuni limiti nel trattamento del suono. stato usato solo per individuare la forma donda di alcuni esempi. Logic Pro 9 E il sequencer di Apple, molto pi completo di Audacity, diciamo che nella sua ultima versione, (la 9) riesce a competere bene con altri software del calibro di Cubase e ProTools. E stato usato per vedere le forme donda degli esempi sonori, e per elaborare, seppure poco, alcuni file musicali da inserire nellesempio della Sintesi Granulare.

CONCLUSIONI In Conclusione, abbiamo visto come una forma donda (suono) possa modulare unaltra in maniera pressoch diversa, (modulazione di ampiezza, ad anello, o di frequenza) oppure come la forma donda possa essere intesa come suono corposo. (sintesi granulare) Sebbene i modelli di Sintesi qui presentati siano modelli di Sintesi per Modulazione, (AM, RM, e FM) e la Sintesi Granulare, ancora prima della semplice Sintesi Addittiva o Sintesi Sottrattiva, non vuol dire che siano migliori o pi complessi, ma per capire che da questi tipi di sintesi, intesi come esempi semplici, che si possono poi ottenere, capendo il funzionamento di portante, modulante, bande laterali ecc, archittetture pi smaglianti o complesse. Soprattutto con laiuto di programmi dedicati, (tipo c-sound) e con il nuovo sviluppo di computer sempre pi veloci possibile realizzare non solo vari esempi o archittetture ma pensare di spingersi sempre un passo avanti per realizzare suoni pi complessi o magari nuovi, pensando che un suono, sempre, come tutta la natura, un fenomeno in continua evoluzione.

Filippo Marcori

Potrebbero piacerti anche