Modelli di Sintesi
TEORIA E REALIZZAZIONI REALIZZAZIONI PRATICHE PRATICHE MEDIANTE C-SOUND
Introduzione
Modelli di Sintesi prescelti:
Modulazione d’Ampiezza
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 l’audio 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 s ýnthesis “composizione, ordinamento”, che è una derivazione di syntithénai “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 nell’escludere 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 d’onda, (sintesi addittiva) dall’altra, con un suono molto ricco, viene modificato togliendo alcuni tipi di frequenza. (sintesi sottrattiva) da un’altra parte ancora (come negli esempi) una forma d’onda ne modula un’altra. 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 d’onda.
MODULAZIONE DI AMPIEZZA E MODULAZIONE AD ANELLO
Una modulazione è l’alterazione 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 d’onda che risulti intonata anche senza un segnale preventivamente campionato da una fonte sonora
Per comodità Chiameremo “Suono” la forma d’onda prodotta dall’oscillatore.
Come dicevamo la modulazione è l’alterazione dell’ampiezza 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 d’ampiezza il segnale Unipolare è un segnale che oscilla solo tra i valori positivi o negativi
es. di segnale bipolare
a1 oscili 10000, 220, 1
;Audio1, Oscillatore, Ampiezza, Frequenza, Funzione
es. di segnale unipolare (segnale unipolare nel campo positivo)
abimod oscili 1, 220, 1
!
aunimod =abimod+1
!
!
!
!
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
;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..)
instr 1 abimod oscili 5000, 200, 1 aunimod = abimod+5000 aport oscili aunimod, 800, 1 out aport endin
;Strumento n° 1 ;Ampiezza oscillante tra 5000 e -5000 ;aggiungendo un DCOffset 5000 avremo una modulante unipolare ;Portante, l’Ampiezza è data dalla oscillazione unipolare tra 0 e 10000 ;uscita
f 1 0 4096 10 1 i 1 0 3
;SCORE ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale ;Strumento1, attacco immediato (zero secondi), durata in sec.
Mod Ampiezza 02
;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..)
instr 1 kenv linseg 0, p3, 5000!! amod oscili kenv, 1000, 1 aport oscili 5000+amod, 2000, 1 out aport endin
;Strumento 1 ;inviluppo dell’ampiezza della modulante da 0 a 5000 ;Variazione dell’indice di modulazione da 0 a 1
;SCORE f 1 0 4096 10 1 ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale i 1 0 4 ;Strumento1, attacco immediato (zero secondi), durata in sec. e
Mod Anello
;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..)
instr 1 abimod oscili 5000, 200, 1
;Strumento1 ;Ampiezza oscillante tra -5000 e 5000
aport oscili abimod, 800, 1 out aport endin
;Portante, l’ampiezza è data dalla oscillazione bipolare tra -5000 e 5000
f 1 0 4096 10 1 i 1 0 3
;SCORE ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale ;Strumento1, attacco immediato, (zero secondi) durata 3 secondi
Mod Anello 02
;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..)
instr 1 abimod oscili 100, 250, 1 aport oscili 100*abimod, 800, 1 amolt = abimod+aport out aport endin
;Strumento1 ;Modulante bipolare ;Portante
f 1 0 4096 10 1
;SCORE
i 1 0 3 e
;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) 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à l’ampiezza ma la frequenza, appunto, del suono portante.
Prendiamo due oscillatori. Alla frequenza dell’oscillatore portante viene sommata l’uscita dell’oscillatore modulante, in questo modo la frequenza dell’oscillatore portante subisce una serie di variazioni che spingono la frequenza verso l’acuto o il grave (quando l’oscillatore modulante è positivo quello portante sale di frequenza, quando quello modulante è negativo, quello portante scende di frequenza) per indicare l’escursione 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 infinita data da tutte le frequenze. In realtà però di tutte le bande presenti solo poche sono quelle significative, per determinare un numero approssimativo di bande laterali significative ci serve quello che viene chiamato Indice di Modulazione. seguendo la formula per cui I= D/M (considerando D e M costanti) l’indice di
modulazione ci fornirà il numero approssimativo di bande laterali significative. Nella FM la posizione delle bande laterali è determinata dalla relazione tra portante e modulante, mentre il numero di bande laterali è proporzionale all’ampiezza del segnale modulante.
Esempi di Realizzazione con C-Sound Mod Frequenza
ORCHESTRA
sr = 44100 kr = 2205 ksmps = 20 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..)
instr 1 icamp = p4 !! icfrq = p5 !! imfrq = p6 !! indx = p7
;ampiezza portante (unità assolute) ; frequenza portante (Hz) ; frequenza modulante (Hz) ; indice di modulazione
;-------MODULANTE
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
f 1 0 4096 10 1 ;
azione
;SCORE ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale
durata
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
ampzz port
freq.port
10000 10000 10000 10000 10000 10000 10000 10000
1000 1000 1000 1000 1000 1000 1000 1000
!! !! !! !! !! !! !! !!
freq mod
indice modulazione
3 3 3 3 100 100 100 100
10 30 50 1000 10 30 50 1000
Mod Frequenza 02
--midi-key-cps=4 --midi-velocity=5
ORCHESTRA
sr = 44100 ksmps = 128 nchnls = 1
;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"
!
!
kmodatt kmoddec kmodsus kmodrel amodenv
!
!
!
!
; inviluppo della modulante
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
; Strumento di innesco dal bottone
instr 99
;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
;SCORE f 1 0 4096 10 1 ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale i 99 0 30 ;Strumento 99, attacco immediato, (zero secondi) durata 30 secondi e
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 un’alta 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 modifica dei singoli grani varia a seconda
di come viene pensato l’evento sonoro, è possibile intervallare i grani con delle pause, oppure sovrapporli, è possibile modificare la durata, frequenza, forma d’onda, inviluppo, densità di ogni singolo grano nel tempo, tutto questo influisce notevolmente sul risultato sonoro.
La necessità di un controllo di alto livello, richiede la definizione 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)
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..)
sr = 44100 kr = 4410 ksmps = 10 nchnls = 2 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 ;SCORE f 1 0 4096 10 1 ;Funzione1, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale f 2 0 4096 19 1 .5 270 .5 ;Funzione2, attacco immediato (zero secondi), numero punti tabella, GEN (generatore forme d’onda) ampiezza della fondamentale earmoniche successive
;
ins
i 1 e
az
dur
ampzz
hz
0
5
10000 500
dens
ampoff frqoff
dur
st
30
10000 200
.05
.5
Sintesi Granulare 02 (con file sonoro esterno)
-odac
nchnls = 2 ksmps = 16 0dbfs = 1 giWin1 giWin2 giWin3 giWin4 giWin5 giWin6 giWin7 giWin8 giWin9 giDisttab giCosine giPan!!
opcode
ftgen!! 1, 0, 4096, 20, 1, 1 ; Hamming ; von Hann ftgen!! 2, 0, 4096, 20, 2, 1 ftgen!! 3, 0, 4096, 20, 3, 1 ; Triangle (Bartlett) ; Blackman (3-term) ftgen!! 4, 0, 4096, 20, 4, 1 ; Blackman-Harris (4-term) ftgen!! 5, 0, 4096, 20, 5, 1 ; Gauss ftgen!! 6, 0, 4096, 20, 6, 1 ftgen!! 7, 0, 4096, 20, 7, 1, 6 ; Kaiser ; Rectangle ftgen!! 8, 0, 4096, 20, 8, 1 ; Sync ftgen!! 9, 0, 4096, 20, 9, 1 ; for kdistribution ftgen!! 0, 0, 32768, 7, 0, 32768, 1 ; cosine ftgen!! 0, 0, 8193, 9, 1, 1, 90 ftgen!! 0, 0, 32768, -21, 1 ; for panning (random values between 0 and 1)
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
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 kmax
instr 1
; master instrument ;;write the soundfile 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"
event_i outvalue
; 0=Hamming, 1=von Hann, 2=Bartlett, 3=Triangle, ;4=Blackman-Harris, ;5=Gauss, 6=Kaiser, 7=Rectangle, 8=Sync
"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
0
kchanged changed if kchanged == 1 then event!!
kwinshape
event!!
; position of the pointer through the sample ; sends 1 if the windowshape has changed
"i", -10, 0, -1
; turn off previous instance of i10
"i", 10, 0, -1, kwinshape+1, gksamplepos
endif
endin
instr 10
; performs granular synthesis ;;used parameters for the partikkel opcode
iwin = p4 ; shape of the grain window ; pointer position at the beginning igksamplepos = p5 ifiltab = giFile ; buffer to read ; speed of reading the buffer (1=normal) kspeed invalue "speed" ; set playback speed to 0 kspeed0 invalue "speed0" ; set playback speed to 1 kspeed1 invalue "speed1" kgrainrate invalue "grainrate" ;grains per second
; turn on new instance
kgrainsize kcent!! kgrainamp kdist!! kposrand kcentrand kpan icosintab idisttab kwaveform imax_grains
invalue "grainsize" invalue "transp" invalue "gain" invalue "dist" invalue "posrand" invalue "centrand" invalue "pan" = giCosine = giDisttab = giFile = 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 = (kspeed1==1 ? 1 : kspeed)))
(kspeed0==1 && kspeed1==1 ? 1 : (kspeed0==1 ? 0 :
;;unused parameters for the partikkel opcode ; sync input (disabled) async!! = 0 ; use only secondary envelope kenv2amt = 1 ienv2tab = iwin ; grain (secondary) envelope ; default attack envelope (flat) ienv_attack = -1 ; default decay envelope (flat) ienv_decay = -1 ; no meaning in this case (use only secondary envelope, ienv2tab) ksustain_amount = 0.5 ; no meaning in this case (use only secondary envelope, ienv2tab) ka_d_ratio = 0.5 igainmasks = -1 ; (default) no gain masking ; no frequency sweep ksweepshape = 0 iwavfreqstarttab = -1 ; default frequency sweep start ; default frequency sweep end iwavfreqendtab = !! -1 ; no FM input awavfm = 0 ; default FM scaling (=1) ifmamptab = -1 ; default FM envelope (flat) kfmenv = -1 ; cosine ftable icosine = giCosine kTrainCps = kgrainrate ; set trainlet cps equal to grain rate ; number of partials in trainlet knumpartials = 1 ; balance of partials in trainlet kchroma = 1 ; random gain masking (disabled) krandommask = 0 ; (default) equal mix of source waveforms and no amplitude for trainlets iwaveamptab = -1 kwavekey = 1 ; original key for each source waveform ;get length of source wave file, needed for both transposition and time pointer
ifilen ifildur kamp
= =
= =
kcentrand 1 / ifildur iorig * cent(kcent + kcentrand)
kcentrand iorig!! kwavfreq
tableng giFile ifilen / sr ;amplitude kgrainamp * 0dbfs ; grain amplitude
rand !!
tableiw tableiw ichannelmasks =
0, 0, giPan 32766, 1, giPan giPan
;transposition ; random transposition ; original pitch ;panning, using channel masks ; change index 0 ... ; ... and 1 for ichannelmasks ; ftable for panning
;;time pointer
afilposphas phasor kspeed / ifildur, igksamplepos
kposrandsec!! kposrand arndpos
= kposrand / 1000 = kposrandsec / ifildur linrand kposrand
; in general ;generate random deviation of the time pointer ; ms -> sec ; phase values (0-1) ; random offset in phase values
asamplepos gksamplepos!!
= afilposphas + arndpos downsamp asamplepos
;add random deviation to the time pointer ; resulting phase values (0-1) ; export pointer position
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!! kright apL1, apR1 apL2, apR2 aL aR
= = pan2 pan2 = = outs
imid - kpan/2 imid + kpan/2 agrL, kleft agrR, kright apL1 + apL2 apR1 + apR2 aL, aR
;;show output
kdbrange kpeakhold kTrigDisp
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
endin ;SCORE i 1 0 3600 ;Strumento1, attacco immediato, (zero secondi) durata 3600 secondi (1 ora) e
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 d’onda 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 d’onda degli esempi sonori, e per elaborare, seppure poco, alcuni file musicali da inserire nell’esempio della Sintesi Granulare.
CONCLUSIONI In Conclusione, abbiamo visto come una forma d’onda (suono) possa modulare un’altra in maniera pressoché diversa, (modulazione di ampiezza, ad anello, o di frequenza) oppure come la forma d’onda 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 l’aiuto 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