125
MINISTERO DELL’UNIVERSITA’ E DELLA RICERCA CONSERVATORIO DI MUSICA “SAN PIETRO A MAJELLA” NAPOLI Istituto di Alta Formazione Artistica e Musicale Diploma Accademico di I livello in Discipline Musicali TESI DI LAUREA IN MUSICA ELETTRONICA E NUOVE TECNOLOGIE SINTESI WAVETABLE SWITCHING PER MULTIPLEXING DI SEGNALI E CONTROLLO DEI PARAMETRI MEDIANTE PROCESSI STOCASTICI MARKOVIANI Relatore Candidato Chiar.mo Prof. Stefano Silvestri Agostino Di Scipio Matricola CM150 Anno Accademico 2008/2009

MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

MINISTERO DELL’UNIVERSITA’ E DELLA RICERCA

CONSERVATORIO DI MUSICA

“SAN PIETRO A MAJELLA”

NAPOLI

Istituto di Alta Formazione Artistica e Musicale

Diploma Accademico di I livello in Discipline Musicali

TESI DI LAUREA IN

MUSICA ELETTRONICA E NUOVE TECNOLOGIE

SINTESI WAVETABLE SWITCHING PER MULTIPLEXING DI SEGNALI

E CONTROLLO DEI PARAMETRI MEDIANTE

PROCESSI STOCASTICI MARKOVIANI

Relatore Candidato

Chiar.mo Prof. Stefano Silvestri

Agostino Di Scipio Matricola CM150

Anno Accademico 2008/2009

Page 2: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

- 2 -

INDICE

0.0 ABSTRACT 1.0 INTRODUZIONE 3 2.0 MODELLI DI SINTESI E DEFINIZIONE DEI PARAMETRI DI CONTROLLO 2.1 Teoria e applicazioni di sintesi wavetable switching…………………….7

2.1.1 Metodi alternativi di commutazione vettoriale………………………...20 2.1.2 Problematiche di shifting delle fasi di commutazione-finestratura…24

2.2 Multiplexing di segnali ed emulazione del processo hardware……….28

2.2.1 Tecniche di wavetable switching per multiplexing…………………...34 2.2.2 Algoritmi di multiplexing a 2 e 3Bit per il tempo reale………………..45

3.0 PROCESSI STOCASTICI PER IL CONTROLLO DI PARAMETRI COMPOSITIVI 3.1 Generatori di sequenze pseudo-casuali uniformi di Lehmer…………..50 3.1.1 Metodo lineare congruenziale per il tempo reale…………………….59 3.2 Catene di Markov e Matrici di transizione…………………………………61

3.2.1 Random walks a barriere riflettenti…………………………………….65 3.2.2 Applicazione del moto Browniano di particelle……………………….72

4.0 “STUDIO SONORO III”, basato su Multiplexing discreto e processi Stocastici

4.1 Struttura generale e modalità di lavoro……………………………………81 4.1.1 Controllo stocastico degli eventi ……………….………...………..….83 4.1.2 Ottimizzazione del Wavetable Multiplexing per il tempo differito…..87

4.1.3 Programma “RandomScore” per la gestione dei parametri di note..89 4.1.4 Partitura d’ascolto introduttiva………………………………………….91

5.0 Sviluppi, conclusioni, ringraziamenti 94 APPENDICE A: Oscillatore virtuale e sintesi wavetable look-up……………………...96 APPENDICE B: Elenco degli esempi sonori e delle figure…………………………….123 Bibliografia

Page 3: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

- 3 -

0.0 ABSTRACT Il fine della tesi è quello di esaminare e sviluppare determinate tecniche di generazione

sonora derivabili essenzialmente da modelli di sintesi wavetable look-up, basati su

oscillatori a forma d’onda fissa tabulata. In generale gli algoritmi wavetable rappresentano

il fondamento per un vasto campo di applicazioni, sia di carattere semplice che complesso

e possono adoperarsi nella definizione di originali strumenti di elaborazione non standard,

destinati alla rappresentazione di segnali tempo discreti. Il lavoro tratta in particolare

dell’implementazione di modelli wavetable switching introducendo processi numerici di

multiplexing per la commutazione di segnali. Tali applicazioni verranno ottimizzate per la

computazione in tempo differito e per quella in tempo reale, sfruttando determinati

linguaggi di programmazione. In maniera forse ambiziosa si cercherà di introdurre queste

tecniche sperimentali, di carattere comunque elementare, per applicazioni d’ambito

compositivo-musicale. Grazie alle procedure di elaborazione per multiplexing, ed alla

gestione di un numero limitato di parametri, è possibile definire forme spettrali armoniche e

pseudo-armoniche caratterizzate da una singolare microdinamica frequenziale.

L’indagine delle strutture potenzialmente musicali verrà condotta con l’ausilio di strumenti

di generazione randomica, sviluppando un primo studio compositivo basato interamente

sul modello di generazione proposto. L’automazione dei parametri di controllo verrà

esercitata mediante sistemi dinamici tempo-discreti legati alla complessità, dove

particolare attenzione verrà posta ad applicazioni stocastiche fondamentali, riguardanti la

generazione di variabili aleatorie uniformi (v.a.) da impiegare in modelli Markoviani.

La generazione di serie pseudo-casuali è utile nella definizione di strutture spettrali quasi

autonome, sfruttabili all’atto di un indagine sonora euristica.

1.0 INTRODUZIONE L’esperienza musicale informatica, ed in particolar modo quella inerente al settore della

composizione algoritmica, si avvale oggi di un ampio campo di conoscenze provenienti da

ambiti di studio apparentemente lontani. Le possibili applicazioni si riferiscono ad una

moltitudine di settori che vanno ad es. dalla ricerca di metodi alternativi di sintesi del

suono, alla realizzazione di modelli fisici complessi, od alla composizione mediante sistemi

dinamici non lineari tempo discreti ed ancora, ad un livello superiore, all’applicazione delle

tecniche di intelligenza artificiale secondo noti paradigmi. In pratica si afferma

Page 4: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

- 4 -

costantemente l’idea secondo la quale <<un intero settore della musica contemporanea è

sorto (e vive) stimolato da queste possibilità: la musica elettronica>> [2a]. In generale si

può quindi affermare che l’ambiente musicale elettroacustico, e quello elettronico orientato

all’informatica, non può prescindere dalla continua acquisizione di nozioni a carattere

scientifico.

Dal canto loro discipline scientifiche, come l’informatica, l’elettronica pura e la fisica

acustica, trovano nelle applicazioni tecnologico-musicali colte, momenti ideali di

sperimentazione e analisi che, negli altri ambiti legati alla produzione commerciale,

sembrerebbero superflui.

Nelle arti del suono l’identità tecnico-scientifica è osservabile sotto un profilo applicativo,

ed esercita, tra l’altro, un importanza rilevante ai fini dell’aggiornamento verso nuove

tecnologie.

In linea generale molti altri settori dell’arte sono destinati ad acquisire solide basi

scientifiche per il supporto di strumenti tecnologici di elevata complessità. Ad es. nelle

istallazioni sonore interattive si fa spesso uso di tecnologie derivanti dal settore cibernetico

e della robotica, inerenti sistemi di attuazione, auto-regolazione e rilevamento, mentre

nella musica algoritmica esistono, tra l’altro, orientamenti basati su noti paradigmi di

programmazione genetica e neurale e più in generale su forme di intelligenza artificiale

simbolica e connessionista. Sempre nell’ambito della musica informatica, altri campi di

interesse possono riguardare ad es. la sperimentazione di procedure stocastiche per

l’automazione dei parametri compositivi e la ricerca di metodi alternativi di sintesi ed

elaborazione.

Con i campi descritti si intende semplicemente sottolineare l’interdisciplinarietà tra le

attività musicali tecnologiche e le applicazioni tecnico-scientifiche, fornendo uno scenario

introduttivo per le argomentazioni esposte nella tesi. Tali argomentazioni non riguardano

applicazioni complesse anche se supportate dalla teoria dell’informatica musicale e

dell’elaborazione numerica dei segnali discreti ad uno stato fondamentale.

Sotto gli aspetti enunciati, la tesi cerca di sostenere una attività di ricerca basata sullo

studio ed ampliamento di alcune tecniche derivanti dal settore della sintesi digitale.

In particolare l’idea è riferita al recupero di alcuni metodi di elaborazione non standard

attivati, tra l’altro, su sistemi commerciali per il tempo reale: processi di wavetable

switching o di commutazione tabellare [3].

In tal caso il metodo di sintesi sperimentato è anche il modello su cui agire per la

composizione musicale, dove l’indagine delle strutture sonore è coadiuvata dall’utilizzo di

Page 5: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

- 5 -

particolari procedure stocastiche. In linea di principio si sviluppa un orientamento

particolare di <<musicologia cognitiva>> [3a] di più basso livello, dove la consapevolezza

dello strumento tecnico, quì rappresentato dall’algoritmo di sintesi, viene acquisita di pari

passo alla costruzione del metodo stesso. L’intervento dello strumento nel processo

creativo avviene in generale secondo l’idea del <<comporre-il-suono prima del

convenzionale comporre-coi-suoni>> [A. Di Scipio, p.18, (5)]. Tuttavia si parte dalla

sperimentazione di una tecnica algoritmica da impiegare proprio come <<strumento di

virtualizzazione, di esplorazione, di apertura all’ignoto, prima del consolidamento del

noto>> [5], il computer come mezzo di pensiero e ideazione.

Con tali presupposti si cerca di affermare che può esistere, nel primo dominio di

modellizzazione [5-3a] e più nello specifico nei modelli del materiale, un’area destinata

unicamente allo studio ed alla sperimentazione tecnica di hardware e software, dove la

ricerca sul suono e dei suoi attributi percettivi è molto lontana, disponendo solo di un’idea

sommaria del risultato effettivo. Tale area è di pertinenza del compositore e provoca

materialmente il ritardo del dominio riguardante i modelli della struttura musicale, al quale

però si arriva con una consapevolezza del mezzo molto più profonda.

In altre parole nella musica informatica si può partire dalla costruzione del modello di

sintesi dove, nel caso vengano sperimentate “tecniche nuove” per la ricerca del fin-qui-

inudito [5], risultano necessari tempi di apprendimento utili per poi arrivare all’articolazione

ed organizzazione del materiale sonoro ricavato per la composizione.

In linea generale, dal punto di vista dell’ideazione del metodo di generazione, l’approccio

di sintesi qui condotto potrebbe riportare alle sperimentazioni effettuate verso la metà degli

anni 60’ da John M. Chowning (1934), nei confronti della modulazione di frequenza

impiegata come tecnica di sintesi per la produzione di spettri complessi. Nello specifico del

metodo di trattamento dei segnali in tabella è possibile comunque riscontrare una duplice

possibilità di generazione. In primis, attraverso l’uso di determinati parametri e funzioni

tabellari armoniche, è possibile sintetizzare spettri caratterizzati da una complessità

riconducibile alla modulazione. Per condizioni semplici di elaborazione il processo base è

formalizzabile attraverso le equazioni della modulazione di ampiezza semplice.

D’altro canto diverse condizioni di generazione permettono rappresentazioni micro-

temporali del segnale acustico tale che si possa lavorare sulla spettro-morfologia al livello

di distribuzioni di densità e ordinamento variabile. L’uso di particolari coefficienti e funzioni

tabellari impulsive o irregolari, possono definire una rappresentazione quantistica-

deterministica del suono. Quest’ultimo aspetto, unito all’introduzione delle tecniche

Page 6: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

- 6 -

stocastiche per il controllo di parametri compositivi legati alla microstruttura e

macrostruttura, potrebbe ricondurre alle sperimentazioni algoritmiche di Iannis Xenakis

(1922-2001) e Barry Truax (1947).

In tal sede i sistemi deterministici relativi alla complessità stocastica divengono utili ai fini

dell’indagine compositivo-sonora, dove è possibile sperimentare articolazioni dinamiche

differenti per ogni stream sonoro. Oltre la gestione degli spettri in dominio tempo-

frequenza, anche la gestione statistica dello spazio quadrifonico è una dimensione

investigata nella composizione.

Il fine complessivo della tesi è quello di evidenziare possibili ottimizzazioni della sintesi

wavetable switching, attuando processi di multiplexing di segnali, per computazioni in

tempo differito ed in tempo reale. Alla caratterizzazione dei risultati di sintesi segue una

valutazione formale degli effetti prodotti dalla variazione dei coefficienti di generazione, nel

dominio del tempo e della frequenza. Non verranno tralasciati brevi richiami teorici utili

all’illustrazione ed al confronto delle metodologie proposte.

Alla famiglia

Page 7: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 7 -

2.0 MODELLI DI SINTESI E DEFINIZIONE DEI PARAMETRI DI CONTROLLO Nel presente capitolo verranno trattate alcune tecniche di sintesi derivate sostanzialmente

dal modello wavetable look-up. Si discuterà in particolare della specifica variante

wavetable switching, conducendo uno studio sull’applicazione del processo standard di

multiplexing STDM (Signal Time Division Multiplexing) per la commutazione dinamica e

sequenziale di contenuti spettrali allocati in tabelle. Tale tecnica verrà ottimizzata per

applicazioni numeriche di sintesi del suono, analizzando i risultati spettrali per mezzo di

algoritmi basati su DFT. Con il metodo proposto è possibile generare segnali armonici e

pseudo-armonici caratterizzati da una certa ricchezza e dinamica freqeunziale. Tuttavia

particolari coefficienti di generazione danno luogo ad artefatti interessanti, sfruttabili

maggiormente per scopi compositivi. In generale la produzione di spettri complessi può

essere utile nei procedimenti di elaborazione, quali ad es. il filtraggio delle bande mediante

sistemi LTI. Lungo il capitolo ci si soffermerà sulla caratterizzazione dei parametri di

sintesi, in previsione anche dell’applicazione di modelli stocastici e statistici.

2.1 Teoria e applicazioni di sintesi wavetable switching La sintesi wavetable, di cui all’APPENDICE A viene fornita una più rigorosa definizione,

rappresenta una forma di generazione digitale, per modelli del segnale, sperimentata

inizialmente presso il contesto di ricerca1 dei Bell Labs (AT&T – Bell Laboratories) e

adottata successivamente su sistemi di elaborazione musicale in ambito commerciale2.

Tale tecnica stabilisce una rappresentazione del suono attraverso punti di forme d’onda

allocati in aree di memoria. Il prototipo di oscillatore wavetable è quindi formato da una

tabella circolare di valori sequenziali e da un accumulatore di fase per la generazione di

1 Ricerche di computer music introdotte verso gli anni ‘50-’60, soprattutto da Max Mathews (1926). 2 La tecnica è stata sperimentata in primo luogo da Wolfgang Palm della PPG (1975), verso fine anni ‘70. Da allora è stata implementata in diverse forme su vari sintetizzatori digitali, costruiti a scopo commerciale (’80) ad es. da PPG, Ensoniq, Waldorf, Access, Sequential Circuits, Roland, Kawai, Korg, Casio, ecc. Molti software e linguaggi di sintesi attuali si basano concettualmente sul sistema wavetable.

Page 8: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 8 -

indirizzi progressivi. In base al sistema di elaborazione devono sussistere alcuni

escamotage tecnici per la variazione coerente del parametro di frequenza (ad es. indici

frazionari) e per la limitazione di distorsione armonica prodotta dai punti della stessa

funzione segnale (ad es. interpolazioni lineari).

Molti metodi di sintesi, anche su sistemi più recenti, possono basarsi sull’implementazione

di algoritmi wavetable look-up, rispettando il procedimento standard di lettura dei periodi

memorizzati in tabelle. Una singola tabella può contenere una forma d’onda periodica al

quale corrisponde un certo contenuto spettrale armonico. È anche possibile elaborare lo

stesso contenuto armonico mediante somma discreta di funzioni semplici tabulate.

Quest’ultimo procedimento rappresenta di fatto un’applicazione di sintesi additive table

look-up, assimilabile concettualmente alla sommatoria discreta di Fourier.

Teoricamente si può evidenziare un’equivalenza tra wavetable semplice e sintesi additiva

armonica3 (a spettro fisso o statico).

Altri metodi derivati direttamente dalla wavetable permettono invece di ricavare spettri

dinamici sfruttando un meccanismo di combinazione sequenziale di più funzioni tabulate4;

procedimenti attuati al fine di cambiare dinamicamente la forma d’onda risultante nel

tempo. Il passaggio da una funzione all’altra può avvenire mediante una serie di tabelle di

inviluppo a sfasamento fisso (phase-locked). Queste hanno il compito di modulare in modo

sequenziale i segnali. In fig.1 è rappresentato lo schema di principio degli oscillatori

accumulatori di fase (Phase accumulator wavetabel oscillator) modulati in ampiezza

secondo funzioni di inviluppo5 a sfasamento fisso. Da questo procedimento deriva un

vettore di uscita [ ]ny contente parte dei valori di ogni periodo nT memorizzato.

3 Si veda in bibliografia [1a]: R.Bristow-Johnson “Wavetable Synthesis 101, A Fundamental Prospective”, (1996) – Wave Mechanics, Inc. AES convention. 4 A tal proposito si cita A.Horner, J.Beauchamp, L.Haken, “Methods for Multiple Wavetable Synthesis of Musical Instrument Tones”, (1993) – J. Audio Eng.Doc. 5 Il tipo di funzione di inviluppo, la quantità di sfasamento e la velocità di modulazione definiranno un certo risultato spettrale.

Page 9: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 9 -

Fig. 1 Crossfading sequenziale di oscillatori wavetable accumulatori di fase

Il processo di fading di ogni segnale di uscita [ ]nv è indipendente dal processo di

accumulazione e indirizzamento negli oscillatori di generazione.

Per definire l’inviluppo su singoli periodi di segnale tabulati è opportuno porre la frequenza

di modulazione come nenv Tf /1= tale che envn TT = , indicando con nT un

generico periodo tra tutti gli NT disponibili. Quindi con le funzioni di inviluppo a

sfasamento fisso di fig.1, il segnale [ ]ny sarà definito dal contributo dei valori istantanei

di ogni periodo tabulato6. Generalizzando è possibile affermare che, in base al tipo di

overlapping causato dalle funzioni di inviluppo, il segnale risultante sarà formato da

sottoinsiemi di valori nn TQ ∈ . Per definire invece l’inviluppo su più periodi di

segnale [ ]nv , corrispondenti ad una certa durata complessiva SrNt /=∆ , la

6 Questo metodo è anche indicato come cross table sampling (campionamento a tabelle incrociate) in quanto agisce un incrocio dei periodi dei segnali dato dall’overlapping delle funzioni di inviluppo sfasate.

Page 10: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 10 -

frequenza di modulazione sarà tfenv ∆= /1 . Per lunghe e uguali durate dei

segnali [ ]nv i periodi di inviluppo definiranno un overlapping graduale7.

Esistono anche altre forme transizionali di sintesi8 basate invece sulla commutazione

dinamica delle forme d’onda table look-up. Il metodo wavetable switching9 è un processo

transizioneale privo di overlapping e cross-fading tra periodi: si passa direttamente da una

forma d’onda all’altra per mezzo di una selezione (switching) che provoca, se i punti posti

al margine adiacente delle tabelle commutate hanno valore diverso, una serie di

discontinuità a carattere impulsivo nello spettro risultante. Per elevate velocità di

commutazione tali discontinuità producono fluttuazioni quasi periodiche dello spettro.

Si rende noto che, in linea di principio, un generico processo wavetable switching può

essere ricondotto alla modulazione dei segnali [ ]nv mediante onde quadre10. La fig.2

mostra alcune equivalenze del processo di switcing con quello di fading visto in

precedenza. In tal caso i vettori monodimenzionali [ ]nv di periodo nT , vengono modulati

dal corrispondente periodo di inviluppo nenv TT = . I periodi envT sono onde rettangolari

i cui valori 1=ia rappresentano il tempo di commutazione effettivo detto cmT , di durata

complessiva ncm TT 31= . Il valore ia è in pratica una funzione Booleana il cui stato

7 Supponendo di disporre di quattro wavetable ed altrettanti inviluppi a sfasamento fisso, il procedimento può essere visto come una forma base di sintesi vettoriale, dove interviene un graduale cross-fade tra contenuti spettrali (tuttavia le tabelle non sono poste ai vertici di un quadrato ideale). 8 Si indicano in generale le procedure di transito, graduali o istantanee, verso uno o più periodi di segnale. 9 In origine questa variante della wavetable è stata implementata a scopo commerciale sul sintetizzatore digitale PPG Wave. In esso la posizione e la forma dei periodi tabulati erano definibili dall’utente. Il calcolo di forme d’onda intermedie permetteva di unire le diverse fasi dei segnali ed il processo dinamico di commutazione poteva essere controllato da generatori di inviluppo EG, oscillatori LFO, ecc. Regolando velocità e tipo di andamento dello switching era possibile produrre caratteristiche spettrali riconducibili a quelle di segnali analogici. Per maggiori, si veda in bibliografia [3]. 10 I due impulsi unitari ( )nδ , posti ai margini delle funzioni, rappresentano in tal caso tempi ideali di

commutazione praticamente nulli.

Page 11: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 11 -

prefissato può essere sfasato di tn ∆+ϕ per ogni envT . La sequenza delle

commutazioni sfasate [ ]nw definirà il nuovo vettore somma [ ]ny , formato da frazioni

di campioni NQ (in tal caso N è riferito ai campioni complessivi del generico NT ).

Fig. 2 Schema di principio di wavetable switching per inviluppi tabulati

Al periodo risultante yT corrisponderà uno spettro periodico arricchito dalla non

correlazione dei campioni (differenze di fase) ai margini di ogni frazione commutata nQ .

Una delle tecniche praticabili per la riduzione dell’effetto di arricchimento spettrale consiste

nella finestratura del periodo di commutazione cmT , che sia esso ccm TT ≤ o

ccm TT > . Nel caso di fig.2 i periodi di commutazione avvengono tre volte nella durata

Page 12: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 12 -

del periodo del segnale tabulato nT , allora il periodo della funzione di finestratura λT

corrisponderà a ncm TTT 31=⇒λ , con envn TT = . Per l’implementazione

algoritmica occorrerà quindi un periodo di inviluppo envT formato da funzioni di

finestratura-commutazione11 di una certa forma. La forma delle finestre deve infatti

garantire un forzatura a zero tra le ampiezze ai margini di cmT . Come mostra il seguente

esempio, una delle funzioni più utilizzate allo scopo è la finestra gaussiana12:

Fig. 3 switching di periodi tabulati e finestrati secondo gaussiana

Dalla figura si nota che la commutazione avviene per periodi uguali ed il valore dei punti è

portato a zero in concomitanza dell’impulso ideale di commutazione.

Si riassumono di seguito le possibilità fondamentali di implementazione per una generica

tecnica di switching, espressa in termini di modulazione del segnale:

• Con ncm TT < . Switching mediante funzioni di commutazione-finestratura definite

all’interno di ogni periodo di inviluppo nenv TT = . Si avrà commutazione sequenziale

delle frazioni di segnale nn TQ ∈ per periodi λTTcm = sfasati in modo consecutivo

nella durata envT . Si pone quindi nnenv Tff 1== .

11 Ai fini pratici si può sfruttare una sola funzione di commutazione non-lineare che determini al contempo il risultato di forzatura a zero. 12 La funzione gaussiana è in pratica una sinusoide sfasata di 270°, rettificata e con off-set 0.

Page 13: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 13 -

• Con ncm TT = . Switching di periodi interi table look-up mediante funzioni di

commutazione-finestratura λTTcm = definite in un periodo di inviluppo

ncmNcmenv TTTTT =⋅= | . Con NT si indica la quantità totale di wavetable. La

commutazione sequenziale è ottenuta tramite sfasamento consecutivo e statico di ogni

envT e quindi di cmT . Ne deriva che NnNn

env TfTT

f //1

==.

• Con ncm TT > . Switching di vettori [ ]nv formati da più periodi iT quantificabili in

una durata di tempo t∆ . Il periodo di commutazione sarà tTcm ∆= e quindi la

grandezza dell’inviluppo13 Nenv TtT ⋅∆= , ovvero dato dalla quantità di vettori da

commutare e dal numero di oscillatori wavetable. Stabilendo tf t ∆=∆ /1 , la frequenza

del periodo di inviluppo complessivo è Ntenv Tff /∆= .

In ogni caso le frequenze dei segnali ottenuti mediante oscillatori wavetable14 paralleli

dovranno equivalere. Infatti il processo di switching, visto in termini di modulazione

secondo funzioni di inviluppo, è coerente alla grandezza di nT .

Per la valutazione di alcuni effetti di generazione si propone una prima applicazione di

wavetable switching secondo funzioni di inviluppo, mediante il quale è possibile definire

13 Si rende noto che, avendo posto in tal caso tTcm ∆= si ha che cmTT =λ per cui essendo

cmn TT < la finestratura non potrà definire la forzatura a zero ai margini di nT riducendo solo le ultime

differenze di fase (e ampiezza) agli estremi di t∆ . In breve nTTt >=∆ λ . 14 Nei tre punti sopraesposti si sottintende una stessa frequenza di generazione nn Tf /1= per ogni

oscillatore wavetable. In altre parole i periodi delle sequenze [ ]nv devono risultare simmetrici tra loro per

definire operazioni di commutazione e finestratura sfasate in modo univoco nel vettore di uscita [ ]ny .

Page 14: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 14 -

frequenze di commutazione-finestratura indipendenti da quelle degli oscillatori. In pratica si

potranno sintetizzare segnali impostando i tre casi ncm TT ≥ e ncm TT < :

; ---------------------------------------------------------------------------------------- ; Sintesi Wavetable Switching - ALG. 1 - ; mediante funzioni di inviluppo per la commutazione ; di più periodi Tc tabulati wave look-up ; funzione finestratura equivalente a funzione commutazione ; (test su segnali semplici) ;---------------------------------------------------------------------------------------- <CsoundSynthesizer> <CsOptions> ;-+P -W -o WavetabSwitchingMod1b_mappaGen5.wav </CsOptions> <CsInstruments> sr = 44100 kr = 44100 ksmps = 1 nchnls = 2 instr 1 iDN = 3 ;numero oscillatori wavetable da commutare iamp0 = ampdb(p4) ;amp wave look-up ;-------------------------------segnali da commutare nel tempo ifn = p5 ;freqeunze oscillatori segnali itab1 = p9 itab2 = p10 itab3 = p11 av0 oscili iamp0,ifn,itab1 ;wavetable look-up av1 oscili iamp0,ifn,itab2 av2 oscili iamp0,ifn,itab3 ;---------------------------------------switching semplice mediante funzioni tabulate kfcm linseg p6,p3/2,p7,p3/2,p8 itenv = 2 ;tipo di funzione finestratura-inviluppo (Tcm=delta t) acm0 oscili 1,kfcm,itenv ;funzioni di inviluppo di periodo Tenv acm1 oscili 1,kfcm,itenv,.666 ;per ottenere commutazioni successive ogni funzione è sfasata acm2 oscili 1,kfcm,itenv,.333 amap0 = (acm0-.001)*1/(1-.001) ;mappa o trasformazione spazio vettoriale [.001,1]->[0,1] amap1 = (acm1-.001)*1/(1-.001) ;per gen5 amap2 = (acm2-.001)*1/(1-.001) aw0 = av0*amap0 ;processo di commutazione per modulazione binaria aw1 = av1*amap1 aw2 = av2*amap2 ;---------------------------------------passaggio in uscita ay = aw0+aw1+aw2 kenv linen 1,1,p3,1 ;Inviluppo trapezoidale outs ay*kenv,ay*kenv endin </CsInstruments> <CsScore> ;-----------------------------------------------funzione di commutazione-finestratura f1 0 8192 5 .001 500 1 1731 1 500 .001 5461 .001 ;Tcm=1/3 del periodo completo Tenv f2 0 8192 7 .001 100 1 2530 1 100 .001 5460 .001 ;Tcm=1/3 di Tenv, emulazione commutazione per triggher (Tcm quadro in Tenv) f3 0 8192 6 .001 1265 1 100 1 100 1 1265 .001 5462 .001 ;curva "simil gaussiana" nel periodo di inviluppo (gen 6 polinimiale cubico) ;-----------------------------------------------tabelle da commutare (per osc wavetable) f9 0 8192 10 1 0 1 f10 0 8192 10 1 0 1 0 0 1 f11 0 8192 10 1 f12 0 8192 10 1 .5 .25 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 ;nf atk dur iamp0 ifn ifcm1 ifcm2 ifcm3 itab1 itab2 itab3 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;TEST 0 ifcm<fn -> Tcm>Tn, durata lunga e wavetable sinusoidali ;i1 0 20 80 100 1 1 1 11 11 11 TEST 1 fcm<fn quindi Tcm>Tn, segnali tabulati semplici i1 0 4 80 1000 1 1 1 11 11 11 ;TEST 2 fcm<fn quindi Tcm>Tn, segnali tabulati anche complessi ;i1 0 4 80 1000 40 40 40 9 11 12 ;TEST 3 fn>20Hz, fcm<fn quindi Tcm>Tn, segnali tabulati semplici ;i1 0 20 80 100 50 48 53 11 11 11

Page 15: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 15 -

;TEST 4 fn>20Hz, fcm<fn quindi Tcm>Tn, segnali tabulati anche complessi ;i1 0 20 80 80 20 18 19 10 11 12 ;TEST 5 caso particolare: fn>20Hz, fcm>fn quindi Tcm<Tn, segnali tabulati semplici ;i1 0 20 80 80 82 82 82 11 11 11 ;TEST 6 caso particolare: fn>20Hz, fcm>fn quindi Tcm<Tn, segnali tabulati anche complessi ;i1 0 20 80 80 82 83 81 10 11 12 ;TEST 7 caso particolare: fn>20Hz, fcm>>fn quindi Tcm<<Tn, segnali tabulati semplici ;i1 0 20 80 100 440 440 440 11 11 11 ;TEST 8 caso particolare: fn>20Hz, fcm>>fn quindi Tcm<<Tn, segnali anche complessi ;i1 0 20 80 100 395 420 410 10 11 12 ;TEST 9 complex: fn>20Hz, fcm>fn quindi Tcm<Tn, segnali tabulati anche complessi ;i1 0 20 80 80 83 81 82 11 11 11 ;i1 0 20 80 80 82 83 81 10 11 12 </CsScore> </CsoundSynthesizer>

Nell’algoritmo il periodo di inviluppo envT definisce il periodo di commutazione ideale

cmT pari a Nenvcm DTT /= , in tal caso 3/envT in quanto il numero di tabelle o

segnali da commutare è 3=ND . Per ottenere switching sequenziali è opportuno

sfasare di t∆ ogni nϕ di envT nei rispettivi oscillatori (acmn), come mostrato di seguito:

Fig. 4 Commutazione ideale mediante periodi di inviluppo sfasati, contenenti Tcm

Nell’implementazione in C-Sound le tabelle envT sono quantificate in campioni

nN 2= . Dividendo il periodo di inviluppo bisognerà limitare le cifre decimali effettuando

un arrotondamento15. Conℑ viene rappresentato il segmento minimo in campioni utile

15 Nelle funzioni di C-Sound non rappresenta errore dichiarare numeri di campioni frazionari per i segmenti di tabella, tuttavia è opportuno limitare quozienti con un numero elevato di cifre decimali. Si rende noto che, volendo disporre di singole funzioni che svolgano contemporaneamente il compito di commutazione-finestratura, non è pratico definire in tabella Tenv curve particolari di periodo Tcm=Tenv/Dn.

Page 16: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 16 -

nella f1 per evidenziare i periodi di commutazione16, separandoli di N=500. Con riferimento

alla Fig.2-4 la nota “TEST 1” presenta Hzfcm 1= , con cmT tendenzialmente quadro e

segnali semplici (periodi sinusoidali) nT da commutare. La frequenza di questi segnali è

Hzfff 20210 >== . Nello spettro risultante si avrà quindi una banda piuttosto

stretta (quasi una singola riga spettrale) e nel dominio del tempo sarà apprezzabile la

modulazione d’ampiezza (modulazione di trigger) definita dalla curva di finestratura-

switching17. In tal caso si avranno 3 modulazioni al secondo per cui in 4 secondi di suono

saranno visibili 12 switch:

Fig. 5 Analisi nel tempo ed FFT del segnale TEST 1, Tcm quadro

16 In dominio analogico tale periodo potrebbe essere assimilato al tempo fisico che occorre per attivare una porta logica di commutazione, ossia per mandare in interdizione/saturazione i transistor. 17 Più precisamente si illustra un processo di commutazione privo di finestratura in quanto il periodo

λT è tendenzialmente quadro. Adottando periodi di commutazione ideali (quadri o rettangolari), dove la

commutazione avviene in 0=t , si introducono impulsi nello spettro risultante (si ricorda che ad un impulso unitario ideale, una singola riga verticale nel tempo, corrisponde una riga orizzontale nello spettro in frequenza).

Page 17: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 17 -

La seguente figura mostra l’applicazione di periodi di inviluppo sfasati, contenenti cmT

determinati secondo curve: si approssima il periodo di commutazione alla funzione

gaussiana definendo un unico periodo che agisce anche da finestra, forzando a 0 i valori

di ampiezza dei campioni ai margini di ogni cmT e limitando di fatto lo sfasamento:

Fig. 6 TEST 1, periodo di inviluppo contenente Tcm non lineari (f3), Fcm=1Hz, Fn>20Hz

Applicando una funzione di commutazione-finestratura di forma tendente alla gaussiana18,

si limita il contributo spettrale delle bande laterali.

Tale procedimento può essere definito in generale attraverso le formule della modulazione

di ampiezza semplice. Disponendo ad es. di una frequenza Hzfcm 40= si avranno

18 Per definire funzioni di finestratura curve cmTT =λ in envT è possibile adottare segmenti

polinomiali cubici. A tal proposito si vedano ad es. GEN 06 e 08 in C-Sound. Alla Fig. 9 è riportata l’implementazione della finestra Gaussiana standard, dove si adottano oscillatori diversi per definire periodi di commutazione e di finestratura di pari grandezza.

Page 18: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 18 -

bande laterali attorno alle fondamentali dei segnali commutati. Nel TEST 1 i segnali sono

bande semplici di 1Khz, per cui nello spettro risulteranno somme e differenze con 1Khz:

Fig. 7 Analisi nel tempo ed FFT del segnale TEST 1 con Fcm=40Hz e itenv=1

In pratica si modulano alternamente più portanti ( )αsin . Supponendo una funzione di

modulazione (o commutazione) sinusoidale19 ( )βsin , il risultato spettrale riferito ad una

sola portante sarà dato teoricamente da:

E.1 ( ) ( )[ ]βα sin1sin +⋅

Si esprime quindi una modulante unipolare che definisce un periodo di commutazione

semplificato come envcm TT = . Sviluppando la E.1 e applicando le formule di prostaferesi

si giungerà al risultato spettrale:

E.2 ( ) ( ) ( )[ ]=+⋅ αβα sinsinsin

19 Od anche Gaussiana. Ibidem commento n°12.

Page 19: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 19 -

( ) ( ) ( )[ ]αβαβα sincoscos

21

++−−=

Ovvero attorno ad un’unica banda sinusoidale commutata saranno presenti somme e

differenze più la banda stessa. Tale equivalenza trigonometrica con il processo di

switching semplice vale ovviamente per condizioni elementari. Disponendo infatti di

complesse funzioni di finestratura-commutazione, diversi spettri da commutare, frequenze

fondamentali distante tra loro e frequenze di commutazione Hzfcm 20> , si può

facilmente giungere a risultati sonori molto complessi, caratterizzati da particolari

microdinamiche spettrali ridondanti.

Alla commutazione di differenti periodi table look-up, soprattutto per fondamentali diversi,

corrispondono differenti righe spettrali. Tale risultato potrebbe essere ricondotto ad una

forma di sintesi additiva in cui venga sommato il prodotto di più modulazioni d’ampiezza:

Fig. 8 Analisi TEST 2, con Fcm=40Hz e switching di spettri diversi di pari fondamentale

Page 20: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 20 -

La figura mostra l’apparente sovrapposizione delle laterali. Tuttavia le commutazioni

avvengono in tempi diversi, sfasati e sequenziali (condizione standard). Per cui nello

spettro reale le bande saranno presenti solo entro determinati periodi di tempo.

Tale comportamento è interessante in quanto mette in gioco capacità psico-fisiche del

sistema uditivo riguardanti la fusione temporale di segnali brevi. In particolare i periodi di

commutazione, semplificati come envcm TT = , garantiranno fusione percettiva se il

tempo di avvenimento di ogni switch è sec04.040 ⇒≈ msTcm che equivale a

Hzfcm 2504.01 == , proprio superando il limite degli infrasuoni.

Altri effetti interessanti si ottengono per segnali Hzfn 20> e frequenze di

commutazione ncmncm TTff <> | . Questo è il caso in cui la commutazione avviene

entro i periodi di segnale audio, quindi nello spettro risultante potranno apparire alcuni

artefatti dovuti ad es. alla mancanza di risoluzione della funzione di finestratura-

commutazione20. Ulteriore arricchimento spettrale può derivare dall’impiego di elevate

frequenze di commutazione e funzioni tabulate ad ampio contenuto armonico. In tal caso

infatti le bande laterali potranno cadere in foldover , sommandosi al restante contenuto.

2.1.1 Metodi alternativi di commutazione vettoriale I procedimenti fino ad ora descritti sono stati esposti sulla base dell’equivalenza tra

processo di commutazione e modulazione semplice di ampiezza. La selezione dei vettori è

infatti definita da funzioni di inviluppo che contengono periodi di commutazione

booleani, al quale si allineano finestre per la riduzione delle differenze di fase.

20 Negli algoritmi, per limitare gli effetti di arricchimento spettrale, bisognerà adottare finestre di forma

particolare aventi un numero elevato di punti in tabella (ad es. da 132 a 162 campioni). In generale la

condizione ncm TT < è possibile ma implica una generazione non coerente al processo di sintesi, in quanto

la velocità di commutazione diviene inferiore alla periodicità del segnale in wavetable.

Page 21: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 21 -

E’ possibile implementare metodi più flessibili di commutazione del segnale in cui si renda

indipendente il periodo di finestratura dal periodo stesso di commutazione. In altri termini

non è necessario definire Tcm*iDN funzioni rettangolari di inviluppo Tenv, che contengano

periodi di commutazione o corrispondenti periodi non-lineari di finestratura (occorrenti in

ALG.1). Una diversa implementazione può essere basata su cicli condizionati:

;----------------------------------------------------------------------------------------- ; Sintesi Wavetable Switching - ALG. 2 - ; secondo processo di commutazione a cicli condizionati ; di tabelle wave look-up ; (test su singola funzione sinusoidale tabulata) ;----------------------------------------------------------------------------------------- <CsoundSynthesizer> <CsOptions> -+P ;-W -o WavetabMuxCicli2.wav </CsOptions> <CsInstruments> sr = 44100 kr = 44100 ksmps = 1 nchnls = 1;2 instr 1 iDN = 4 ;numero di tabelle da commutare iamp0 = ampdb(p4) ;amp wave look-up idist = p7 ;moltiplicatore bande freq. segnali D1,D2,D3 ;-----------------------------------------------DN oscillatori commutati itab0 = 99 ;wave look-up itab1 = 98 itab2 = 97 itab3 = 96 if0 = p5*idist ;freqeunze oscillatori distanziate con idist>1 if1 = if0*idist if2 = if1*idist if3 = if2*idist aD0 oscili iamp0,if0,itab0 aD1 oscili iamp0,if1,itab1 aD2 oscili iamp0,if2,itab2 aD3 oscili iamp0,if3,itab3 ;-----------------------------------------------lettura valore array (da 0 a Dn) ifcm = p6 ;frequenza di selezione kindx oscil 1,ifcm,2 ;oscillatore dell'indice di lettura knt table kindx,1,1 ;indice riscalato tra 0 e 1 (non-row) ;-----------------------------------------------COMMUTAZIONE a logica di selezione delle uscite if knt==0 kgoto lab0 ;se il contatore è 0 poni segnale D0 in out kgoto next0 ;altrimenti procede lab0: asw = aD0 kgoto rein next0: if knt==1 kgoto lab1 kgoto next1 lab1: asw = aD1 kgoto rein next1: if knt==2 kgoto lab2 kgoto next2 lab2: asw = aD2 kgoto rein next2: if knt==3 kgoto lab3 kgoto next3 lab3: asw = aD3 kgoto rein next3: rein: ;-----------------------------------------------passaggio in uscita

Page 22: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 22 -

kwndw oscil 1,ifcm*iDN,50 ;finestratura segnale multiplicato ;fwndw=ifmux*iDN (quattro finestre per 1 periodo di multiplex Tmux=1/fmux) aswitching = asw*kwndw ;e deve variare proporzionalmente al variare della freqeunza di mux ;aflt tone amultiplex, 22050 ;filtro L-P kenv linen 1,1,p3,1 ;Inviluppo trapezoidale outs aswitching*kenv;,amultiplex*kenv endin </CsInstruments> <CsScore> f1 0 4 -2 0 1 2 3 ;vettore 2^n=>DN f2 0 4 7 0 4 1 ;rampa di 4 punti, indici di lettura da 0 a 3 ;-----------------------------------------------tabelle da commutare (DN=4) f99 0 8192 10 1 ; f99 0 32768 10 1 f98 0 8192 10 1 f97 0 8192 10 1 f96 0 8192 10 1 ;-----------------------------------------------finstratura zerocrossing tabelle mux f50 0 8192 8 0 4096 1 4096 0 ;gaussiana di finestratura per ogni segnale in out ;f50 0 32768 0 16384 1 16384 0 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;p1 p2 p3 p4 p5 p6 p7 ;nf atk dur iamp0 if0 ifcm idist ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;TEST 1 problema di sfasamento progressivo finestratura - indirizzamento indici per commutazione ;i1 0 5 80 100 167 1.5 ;TEST 2 f0>20Hz, fcm<20Hz, f0=f1=f2=f3 ;i1 0 4 80 80 5 1 ;TEST 3 f0>20Hz, fcm>20Hz, f0=f1=f2=f3 ;i1 0 4 80 100 40 1 ;TEST 4 f0>20Hz, fcm>20Hz, f0=!f1=!f2=!f3 ;i1 0 4 80 100 40 1.5 ;TEST 5 ;i1 0 4 80 100 168 2.1 ;TEST 6 ;i1 0 4 80 80 40 .3 ;TEST 7 ;i1 0 4 80 100 50 100 ;TEST 8 fcm<20Hz, f0>20Hz (usare senza kenv) i1 0 1 80 100 1 3 </CsScore> </CsoundSynthesizer>

La logica alla base di questo diverso approccio consente di definire il direzionamento

dell’output attraverso indici di selezione kindx. Vi è quindi un lettore di tabella degli indici

(Knt) contenente valori costanti (vettore f1) ed un oscillatore degli indici di lettura (kindx)

che permette di richiamare in modo sequenziale ogni valore del vettore f2. La frequenza di

prelievo degli indici è la frequenza di selezione detta ifcm. La commutazione del segnale in

uscita deriva dal confronto dell’indice attuale con una costante. Se il ciclo condizionale

definisce vera la condizione knt==n allora viene posto in uscita il vettore segnale aDn. Il

procedimento può essere ripetuto fino alla frequenza di Nyquist21 ed ogni indice

permetterà di direzionare in output la corrispondente variabile dell’oscillatore wavetable

21 Più precisamente si può riconoscere un limite teorico della grandezza (o frazione) del segnale

commutato paria a 2/

11

SrD

TQ N

nn ≤⋅= .

Page 23: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 23 -

(Dn-1). Per la dichiarazione delle frequenze ifn degli oscillatori è stata impiegata la serie

semplice ifn+1=ifn-1*idist, dove idist è un semplice moltiplicatore. In tal modo diviene

possibile distanziare ogni banda successiva (per idist>1).

Mediante questa tecnica è possibile effettuare tutte le operazioni viste in precedenza

usufruendo di maggiori flessibilità dovute al fatto di non dover preallocare funzioni di

inviluppo a sfasamento fisso per le commutazioni successive. Infatti il motore di switching

sequenziale è rappresentato dalla logica IF-THEN e dal vettore degli indici.

Con questo modello il periodo di finestratura è correlato all’oscillazione degli indici

ed è dipendente dalla quantità di oscillatori wavetabel look-up iDN da commutare.

Più precisamente la frequenza di finestratura λf dipenderà da quella di commutazione

cmcm Tf 1= secondo la seguente formula:

E.3 Ncm Dff ⋅=λ

Ossia una frequenza che deve essere ND volte quella di commutazione22, infatti il

periodo cmT è diviso equamente per il numero di indici massimi23 NN Di = utili nella

selezione delle wavetable. In altri termini è possibile scrivere Ncm DTT /=λ .

Nel caso specifico 4=ND per cui in dominio temporale si avranno quattro finestre per

un periodo di selezione24 (switching). Questa legge di proporzionalità è utile nel far

quadrare i periodi di commutazione con quelli di finestratura. Ne deriva che al variare di

cmf si avrà uno spostamento direttamente proporzionale di λf .

22 Successivamente indicata come “ifmux”. 23 In questo caso il vettore degli indici deve essere una potenza di due e quindi si è limitati ad un

numero corrispondente di tabelle nND 2⇒ .

24 Successivamente indicato come “Tmux=1/fmux”.

Page 24: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 24 -

Attraverso l’algoritmo precedentemente esposto è possibile dichiarare basse frequenze di

selezione Hzfcm 1= , ed alte distanze 1>dist delle frequenze Hzfn 20> dei

segnali in tabella, al fine di distinguere le singole bande nello spettro risultante. Si avrà che

sec25./1sec,1|44 ===== λλλ fTTHzff cmcm . La frequenza di

commutazione permetterà di generare tutti gli indirizzi di selezione in un secondo di suono:

Fig. 9 Analisi TEST 8, fcm<20Hz, f0>20Hz (;kenv commentato)

2.1.2 Problematiche di shifting delle fasi di commutazione-finestratura Come affermato in precedenza il procedimento di finestratura è indispensabile nella

riduzione delle incoerenze di fase ai margini di ogni envcm TT ⊂ . La forma della finestra

tabulata deve essere scelta principalmente in base ai segnali NT (Fig.1) ed alle

Page 25: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 25 -

frequenze di commutazione25 da applicare. In fig.10 si riporta un confronto tra due esempi

di sintesi (con ALG.2): nel primo è applicata una finestra Gaussiana, mentre nel secondo

si esclude l’oscillatore di finestratura tramite commento della rispettiva variabile ;*kwndw.

In entrambe i casi Hzfcm 168= per cui si hanno velocità di finestratura

Hzf 6724168 =⋅=λ :

Fig. 10 a) Analisi TEST 5 con finestratura, b) TEST 5 privo di finestratura Questo tipo di funzione è sufficiente nell’eliminazione del “taglio” o glitch prodotto ad inizio

e termine di ogni periodo di commutazione. In Fig.8-b si denota il rumore del processo di

switching indotto oltre i 3KHz, (con probabilità di foldover).

25 Funzioni quali Gaussian, Hanning, o Blackman-Harris possono ridurre discontinuità in banda audio. Viceversa forme più “spigolose”, quali Bartlett, Sync, Rectangle, Exp, inducono arricchimenti indesiderati dello spettro risultante. Non a caso nella AM si adottano funzioni sinusoidali (riconducibili alla gaussiana) per ridurre la dispersione spettrale (limitazione delle bande laterali). In ogni caso la forma della finestratura è da

rapportare anche alle modalità di commutazione ncm TT ≥ e ncm TT < , ovvero alla velocità di switching

rispetto la frequenza dei segnali in tabella. Nei successivi algoritmi per il tempo reale (ALG.5-6) verranno adottate finestre di Hannig (o Hann). Tale curva di inviluppo è adottata nella FFT per la definizione di uno zero-crossing delle ampiezze ai margini di ogni blocco di analisi [8].

Page 26: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 26 -

Supponendo di commutare periodi uguali di ogni vettore segnale [ ]nv , se la frequenza

dell’oscillatore che definisce la funzione di finestratura differisce anche solo di poche

frazioni di Hz rispetto la velocità di lettura degli indici dei valori di switch, il vettore [ ]ny

sarà caratterizzato da uno sfasamento progressivo dei periodi cmT e Ncm DTT /=λ :

Fig. 11 Shift delle fasi dei periodi finestratura/commutazione

La fig.11 illustra questo effetto di shifting progressivo delle fasi26 tra le due funzioni.

Nell’implementazione in C-Sound si nota un errore27 indotto dall’oscillatore “oscili” di

finestratura, rispetto un oscillatore analogo di richiamo degli indici dell’array di

commutazione. Il ritardo progressivo della finestratura decentra la forzatura a zero tale che

venga rivelato il glitch prodotto dalle discordanze di campioni. Si effettua un esempio

concreto di sintesi usufruendo ancora di Alg.2, e con il successivo sonogramma (Fig.12) si

illustra la relativa presenza dell’errore di shifting nel tempo, per una durata complessiva

della nota pari a sec5=t . In linea generale più estesa è la durata della nota, più è

26 In dettaglio l’errore di sfasamento diviene così elevato che l’impulso di commutazione appare in

concomitanza del picco massimo dell’onda di finestratura λλϕ T2

1= . In questi casi esso provoca un

arricchimento spettrale dovuto alla sua altezza. In teoria supponendo un’ampiezza del segnale

2

290

16

≈= dBA l’impulso avrà spettro fino ad 2/Sr .

27 In C-Sound l’errore può derivare dalle dimensioni differenti (in punti) impiegate per la funzione di finestratura e per la tabella dei valori di commutazione. Gli oscillatori wavetable dovranno rapportare il numero di punti nella durata di uno stesso periodo di generazione. Per cui valori di arrotondamento, per eccesso o troncamento, possono produrre minime differenze nell’incremento della fase, corrispondenti a variazioni minime della grandezza di periodo (e frequenza), in accumulo ad ogni ciclo di generazione.

Page 27: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 27 -

evidente la comparsa graduale (ed alternata) di impulsi nel sonogramma. La figura mostra

intensità più chiare che denotano energie maggiori:

Fig. 12 Problema di shifting delle fasi commutazione-finestratura, TEST 1

Nella durata della nota avviene un progressivo arricchimento spettrale dovuto proprio alla

graduale comparsa degli impulsi. La complessità dell’arricchimento spettrale varierà

oltretutto al variare dei parametri di generazione: commutando infatti vettori [ ]nv di

diversa frequenza nf , e quindi di diverso nT , si ha che il periodo Ncm DTT /=λ

ridurrà le rispettive differenze di fase cmT∀ϕ . In caso di shifting graduale appariranno

impulsi differenti in misura delle rispettive differenze di fase di ogni segnale commutato.

Riepilogando in breve, i modelli wavetable switching caratterizzati da due oscillatori che si

occupano separatamente di definire il periodo di commutazione cmT e di finestratura λT

possono essere soggetti ad errori di shifting microtemporale, derivanti dalla computazione

Page 28: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 28 -

delle routine wavetable. Per lunghe durate di generazione l’effetto di decorrelazione di

fase può apparire crescente e ciclico. Come soluzione principale al problema si può

accedere alla tabella dei valori di commutazione mediante indici definiti da un fasore.

Come si farà nelle successive implementazioni qui adoperate (si veda listato Alg.4 e 15).

Il valore n di uscita dal fasore sarà perfettamente 10 ≤≤ n e permetterà una

maggiore sincronia tra gli stati del processo commutazione-finestratura, limitando lo shift.

2.2 Multiplexing di segnali ed emulazione del processo hardware

Per ottimizzare il processo di switching dei vettori [ ]nv è possibile ricorrere a tecniche

ideate appositamente per la commutazione di segnali. La tecnica hardware di Multiplexing

(o commutazione) si avvale di un circuito integrato detto Multiplexer al quale è affidato il

compito di smistare più sorgenti di ingresso (in precedenza indicate come ND ) verso

un'unica uscita. Per le applicazioni della tesi si è scelto quindi di adottare il processo di

multiplexing come tecnica ideale di commutazione negli algoritmi di sintesi wavetable

switching. Per l’implementazione del circuito di base non può essere omessa una breve

introduzione alla parte teorica.

Il multiplexing è un procedimento derivante dalle applicazioni di elettronica digitale e

telecomunicazioni. Spesso nei circuiti digitali vi è l’esigenza di trasmettere diversi segnali

su un'unica linea (o bus dati) e quindi di smistare, in perfetta sincronia, i dati nuovamente

su linee parallele. I circuiti che permettono di effettuare queste operazioni sono detti

rispettivamente di multiplexing e demultiplexing. Si ha quindi un circuito complesso detto

Multiplexer (selettore) ed il suo complementare detto Demultiplexer (distributore). Per gli

scopi della tesi si può omettere la definizione del funzionamento interno dell’integrato in

termini di tensioni, correnti e zone di lavoro dei transitori. Le funzioni logiche, svolte

materialmente da configurazioni di questi ultimi componenti, possono essere esemplificate

Page 29: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 29 -

dagli schemi di porte logiche. Attraverso tale studio si può definire una struttura algoritmica

che emula la logica cablata del multiplexer. Il dispositivo può essere rappresentato in

generale mediante un unico blocco complesso:

Fig. 13 Rappresentazione modulare del Multiplexer

A tale modulo corrisponde una determinata funzione definita per un numero di ingressi

(minimo due) ed una sola uscita. Nella trattazione si discuterà di applicazioni di

Multiplexing TDM (Time Division Multiplexing), commutazione a condivisione temporale28.

La tecnica TDM prevede una suddivisione nel tempo del canale di trasmissione.

In altri termini i segmenti da trasferire (nel caso della sintesi si parla di sottoperiodi, periodi

o più periodi di vettori tempo-discreti) vengono trasmessi uno dopo l’altro in uscita, con

velocità di scansione e ordine prestabilito mediante temporizzatore e contatore (Fig.13).

Ne deriva che questa tecnica ben si appresta per procedure di switching sequenziale di

segnali. Nelle applicazioni elettroniche i circuiti di multiplexing implicano l’utilizzo di un

codificatore (o encoder) ed un decodificatore (o decoder). Il primo consente la

combinazione dei segnali binari in fase di trasmissione, mentre il secondo interviene nella

separazione dei segnali stessi in fase di ricezione. Tuttavia nei processi di sintesi del

suono si adotteranno procedure equivalenti per la scansione della commutazione e per

28 Si demanda a fonti disponibili in letteratura per una più rigorosa trattazione dei procedimenti hardware di multiplexing e demultiplexing, a condivisione di tempo e frequenza. Per informazioni specifiche si veda in bibliografia [1],[2].

Page 30: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 30 -

l’indirizzamento sincronico degli ingressi in uscita, omettendo la fase di decodifica e

replicando la selezione secondo porte logiche. Si ipotizza un solo canale virtuale di

trasferimento rappresentato dal passaggio dal convertitore verso i trasduttori.

Nella seguente figura si riporta il circuito fondamentale, e la relativa tabella della verità, di

un selettore logico a 4 ingressi dati:

Fig. 14 Circuito di multiplexer a 2 Bit, con porte AND

Tale struttura di definizione servirà per una prima implementazione algoritmica.

Il circuito equivalente è costituito da porte logiche i cui ingressi si suddividono in ingressi

dati 1−nD e di selezione, indicati come BA, . Ad ogni ingresso corrisponde un dato

binario (od anche un segnale [ ]nv ) da riportare in uscita sequenziale U . Il numero di

ingressi possibili dipende dalla capacità in bit del multiplexer. Disponendo di soli due

ingressi di selezione è possibile applicare Bitb 2= , che permettono a loro volta di

smistare in uscita 42 == bU ingressi dati. La condizione b2 deve essere

soddisfatta al fine di impiegare parole di bit tali da consentire combinazioni sufficienti ad

Page 31: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 31 -

individuare univocamente tutti gli ingressi dati29. In base alla tabella della verità,

ipotizzando come bit di indirizzo 0=A e 0=B , si può constatare l’abilitazione di

0I (dove alla prima porta AND si ha 0&& DBA ) tale che il dato presente

all’ingresso 0D venga trasferito all’uscita, sia esso 0 o 1. La velocità di distribuzione in

uscita della frazione di segnale iQ dipende dalla velocità di generazione delle parole di

indirizzo (o selezione) binarie, che commutano le porte logiche. Si riporta di seguito

l’implementazione in BASIC del multiplexer a 2 Bit di Fig.14:

'------------------------------------------------------------------------------------------------- ' SIMULAZIONE DI MULTIPLEXER (logica cablata) - ALG. 3 - ' a 2 bit di selezione ' 4 ingressi dati Dn-1 ' da selezionare in uscita U ' i vettori Dn-1 rappresentano l'ingresso del selettore ' i vettori A,B rappresentano vettori di bit di selezione ' scorrere dal bit 00 a 11 si avranno multiplexati in uscita U ' i quattro vettori binari D0,D1,D2,D3 ogniuno di 4 elementi '------------------------------------------------------------------------------------------------- cnt=0 'contatore ciclo vettnum=4 'numero di vettori in ingresso divide=0 'inizializza divisore colonne output do while cnt<vettnum 'fintanto che il contatore < vettnum stampa U in base ai bit di selezione A() print ">>>>>>>>>>>>>";:print "bit selezione:";A(IDmx+1);B(IDmx+1);" vettore multiplexato da ingresso:D";cnt '-------------------------ingressi dati Dn-1 (da assumere come vettori binari) DIM D0(4) DIM D1(4) DIM D2(4) DIM D3(4) D0(1)=1:D0(2)=1:D0(3)=1:D0(4)=1 'indici vettori monodimensionali di bit D1(1)=0:D1(2)=0:D1(3)=0:D1(4)=0 D2(1)=0:D2(2)=1:D2(3)=0:D2(4)=1 D3(1)=1:D3(2)=0:D3(3)=0:D3(4)=1 '-------------------------ingressi di selezione (2bit) DIM A(4) 'bit di selezione posti come vettori per ottenere switching tra vettori segnali DIM B(4) '-------------------------0 decimale A(1)=0 B(1)=0 '-------------------------1 decimale A(2)=0 B(2)=1 '-------------------------2 decimale A(3)=1 B(3)=0 '-------------------------3 decimale A(4)=1 B(4)=1 '-------------------------'ciclo di multiplexing (selezione vettore su U) for i=1 to 4 IDmx=cnt+1 'ottiene bit "00 01 10 11" in sequenza in base al cnt '//////////////////////////////////////////////////////////////processo di multiplexing con porte logiche a più ingressi ANOT=myNOT(A(IDmx)) 'porte complementari Not BNOT=myNOT(B(IDmx))

29 Nelle applicazioni di sintesi, sia in tempo differito che in tempo reale, la condizione di dover

disporre di un numero binario di indirizzi, e quindi di supportare ingressi in numero n2 , può coincidere con la dichiarazione della grandezza di tabella (valori potenze di due) per la routine di oscillatore wavetable.

Page 32: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 32 -

AND1=D0(i) AND ANOT AND BNOT 'porta & 1 AND2=D1(i) AND B(IDmx) AND ANOT 'porta & 2 AND3=D2(i) AND A(IDmx) AND BNOT 'porta & 3 AND4=D3(i) AND A(IDmx) AND B(IDmx) 'porta & 4 U=AND1 OR AND2 OR AND3 OR AND4 'porta >/ di OUT locate 10,i+divide+1:print U 'formattazione output next i divide=divide+5 'contatore divisore colonne cnt=cnt+1 'contatore multiplicazione dell'uscita loop '-------------------------funzione logica NOT ricavata da or esclusiva function myNOT(x) x=x XOR 1 myNOT=x end function END 'altra soluzione per NOT 'if x=1 then ' x=0 ' else ' x=1 ' end if

L’algoritmo implementa la logica cablata alla base del circuito reale ed emula quindi il

comportamento di selezione sequenziale mediante operatori logici. Questi ultimi effettuano

solo operazioni booleane per cui, in questa specifica applicazione, sia le tabelle di

selezione che quelle di ingresso dati vengono assunte in termini di vettori

monodimenzionali binari. In base alla fig.14 sono state implementate 4 porte AND, 2 porte

NOT, 1 porta OR. In termini aritmetici tali porte possono rispettivamente corrispondere

all’operatore di moltiplicazione, negazione e addizione. La funzione svolta dell’algoritmo

può essere riassunta nel modo seguente. Successivamente al dimensionamento dei

vettori segnale DIM Dn(), assunti in tal caso come sequenze di bit, vi è la dichiarazione

delle sequenze di selezione DIM A(),B(). Il processo di Multiplexing o selezione viene

svolto in un ciclo FOR ed al contempo sono state predisposte una serie di operazioni di

incremento dell’indice I e IDmx per scorrere in modo sequenziale il contenuto dei rispettivi

vettori dati Dn(i) ed indirizzi A,B(IDmx). In particolare l’istruzione di iterazione, da I=0 alla

grandezza dei vettori Dn=4 (quantità di elementi), contiene le operazioni logiche che

permettono la commutazione di un solo ingresso verso l’uscita. Ovviamente in uscita

dovranno passare i quattro elementi in sequenza del vettore di ingresso Dn() selezionato,

così l’indice dell’elemento corrispondente è incrementato direttamente dal ciclo FOR.

La lettura del valore binario di commutazione IDmx è definita mediante contatore

Page 33: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 33 -

cnt=cnt+1 che incrementa secondo ciclo DO WHILE. In pratica il contenuto delle due

stringhe di bit A,B viene richiamato fintanto che non si è arrivati al numero massimo di

vettori segnale vettnum=4 agli ingressi disponibili. Ad ogni ciclo WHILE interviene

l’incremento del contatore cnt tale che gli indirizzi A,B(IDmx) commutino uno dei quattro

vettori di ingresso Dn. Quindi le operazioni logiche vengono svolte Dn=4 volte per

selezionare ogni valore del vettore dati Dn.

In base al valore attuale dei vettori paralleli A/B, che formano i bit di indirizzo, verranno

commutati in uscita i rispettivi valori di una sola sequenza D0,D1,D2 o D3.

Una serie di comandi di formattazione dell’output agiscono nello stesso ciclo DO WHILE

per visualizzare in uscita i quattro vettori di Bit dati Dn al variare dell’indirizzo A,B.

In particolare si incrementa la sequenza di indirizzi in modo unitario per richiamare l’ordine

AB=00 (0 decimale); AB=01 (1 decimale); AB=10 (2 decimale); AB=11 (3 decimale),

costatando l’uscita sequenziale dei vettori dati: D0=1 1 1 1, D1=0 0 0 0, D2=0 1 0 1,

D3=1 0 0 1. Il risultato di uscita è riportato in fig.15, dal quale si evince il corretto

funzionamento dell’algoritmo in base alla tabella delle verità precedentemente esposta.

La differenza tra un multiplexer a 3Bit rispetto il modello a 2bit risiede nella quantità di

ingressi smistabili. Parole di 3Bit permettono di smistare in uscita 8 sequenze di ingresso.

Inoltre dal calcolo combinatorio e dalla teoria delle reti combinatorie è possibile stabilire,

nota la funzione di trasferimento ( )DfU = [1] e dato un numero di ingressi

dati 1−nD da porre in uscita U , tutte le combinazioni possibili degli ingressi dati da

applicare in uscita secondo disposizioni semplici, con permutazione e con ripetizione30.

30 La generica combinazione semplice stabilisce tutti i raggruppamenti formati con k oggetti diversi,

tra gli n dati: Il numero di combinazioni semplici di n oggetti di classe k è quindi ( )!!!

, knknC kn −= , dove

si ritengono distinti due raggruppamenti se differiscono di almeno un oggetto. Le permutazioni sono invece

allineamenti costruiti senza ripetizione di oggetti e per tanto si ha !nPn = . Le disposizioni con ripetizione di

n oggetti di classe k sono definite escludendo allineamenti di uguali oggetti per tipo, ordine di posizione e -

Page 34: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 34 -

Le combinazioni rappresentano oggetto di interesse per un’altra sede di studio. In tal caso

ci si sofferma nell’applicazione della sequenza ordinata, ossia definita da vettori di

indirizzo (o i bit di selezione): ,...,,...,,,...,,...,,,...,, 110110 −−= ni bbbaaaBA

tale che Nbababa nnn ==== 2,;2,;1, 1100 individuazioni ordinate di dati.

Fig. 15 Risultato di uscita del processo software di Multiplexing 2Bit

Il modello ALG.3 è ottimizzabile per le procedure di sintesi wavetable switching a patto che

vengano adottate alcune modifiche riferite alla computazione di vettori segnale.

2.2.1 Tecniche di Wavetable switching per multiplexing Nel modello wavetable switching l’impiego del criterio di multiplexing deriva dalla necessità

di stabilire una maggiore flessibilità di elaborazione. Sebbene la commutazione logica

possa sembrare più complessa rispetto le procedure di modulazione secondo funzioni di

inviluppo fisse, esistono una serie di vantaggi riguardanti la possibilità ad es. di rendere

indipendenti la funzione di finestratura con il periodo di commutazione, di definire un

ordine qualsiasi di selezione dei segnali (retrogrado, random ecc.), gestire un ampio

numero di ingressi (con Multiplexer ad ampie parole di Bit), ecc. il tutto senza dover

numero di ripetizioni di un dato oggetto; si ha pertanto k

kn nD =,' . Per maggiori, si veda A.Guerraggio

“Matematica generale, programma di matematica, fisica, elettronica”, [14].

Page 35: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 35 -

stanziare preventivamente tabelle di inviluppo per la commutazione-finestratura e stabilire

quindi la forma e il grado di sfasamento dei relativi periodi di commutazione.

In linea generale le possibilità dell’algoritmo “wavetable multiplexing” sono quelle già

esaminate in precedenza e riguardano la commutazione di frazioni di periodo

ncmn TTQ ≤= o ncmn TTQ >= . Nel primo caso la frequenza di commutazione è

ncm ff ≥ per cui si selezionerà più volte all’interno dei singoli periodi in tabella.

È utile notare che in modalità ncm ff = , supponendo margini di tabelle terminanti sullo

zero, il periodo di finestratura cmTT =λ garantirà uno zero-crossing superfluo.

Nel secondo caso, per ogni cmT , si commutano più periodi nT del corrispondente vettore

segnale [ ]nv . I periodi di segnale nT devono essere valutati in termini di durata

complessiva t∆ . Per le applicazioni seguenti è utile rinominare i parametri di generazione

come segue: cmmux

muxcm TTff

⇒=⇒

1. Con { }110 ,...,, −= NN DDDD ed

110 ,...,, −NfDfDfD si indicano rispettivamente gli ingressi dati definiti da segnali e

le loro frequenze. Si riporta in Fig.13 lo schema complessivo di wavetable switching

secondo multiplexer. Nel diagramma gli oscillatori wavetable leggono tabelle contenenti

periodi di funzioni arbitrarie e le rispettive uscite [ ]nv sono considerate come sequenze

attuali in ingresso al modulo di multiplexing. Il selettore di b2 ingressi consente di

distribuire i dati in un tempo dipendente dalla frequenza di multiplexing cmf , ossia la

frequenza di un fasore che definisce ciclicamente gli indici per il richiamo dei bit di indirizzo

Page 36: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 36 -

o selezione. In particolare il modulo convertitore (conv.) è adibito alla trasformazione dei

valori decimali n in relativi bit di indirizzo.

Fig. 16 schema di principio di wavetable switching per multiplexing

Il modulo convertitore può essere sostituito anche da b tabelle in cui siano memorizzati

direttamente i bit di indirizzo. Ponendo un numero di bit 2=b si avranno due stringhe

monodimensionali contenenti rispettivamente l’MSB e l’LSB di ogni parola. In tal caso il

fasore richiama31 gli indici (interi) dei valori di bit di entrambe le tabelle per comporre

un'unica parola agli ingressi A e B del selettore.

Lo schema ideale di Fig.16 mostra anche l’oscillatore wavetable adibito alla generazione

della funzione di finestratura (inviluppo). Si rende noto che per garantire una sincronia tra

31 L’operazione di richiamo dell’indice è una parte cruciale dell’intero algoritmo. Essa deve essere determinata da un unico fasore per ambedue i wavetable che supportano le tabelle di indirizzamento. Se i singoli bit fossero definiti da routine differenti, ritardi di fase (indici sovrapposti) produrrebbero errori nella composizione delle parole (word) di selezione.

Page 37: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 37 -

processo di commutazione e finestratura, il richiamo degli indici della tabella di λT deve

essere definito da un fasore analogo a quello degli ingressi di indirizzo, con la differenza

imposta nella frequenza di generazione muxN fDf =λ . Per frequenze

Hzf 20≈λ la funzione di finestratura è un segnale32 in banda audio teoricamente

subentrante nello spettro di uscita. Tuttavia, per frequenze di multiplexing

Hzfmux 20> e tabelle nT non sinusoidali, il contributo del segnale di finestratura può

essere mascherato dalla complessità33 delle bande laterali attorno alle portanti dei segnali

commutati.

Il riscalamento dell’ampiezza in uscita assume un’importanza marginale. Per coerenza

all’ampiezza (unitaria e costante) delle tabelle, il divisore corrisponde preferibilmente34 al

numero massimo di wavetable. Si riporta di seguito l’intera implementazione dell’algoritmo

wavetable switching caratterizzato dall’introduzione del sistema multiplexer a 2Bit, per la

commutazione dei vettori table look-up di ingresso:

;---------------------------------------------------------------------------------------------- ; Sintesi Wavetable Switching - ALG. 4 - ; mediante MULTIPLEXER combinatorio a 2Bit selezione ; accesso a tabelle indici selezione KA KB mediante fasore. ; freqeunza finestratura iDN volte freqeunza fasore per multiplex ; (test su singole funzioni sinusoidali tabulate) ;---------------------------------------------------------------------------------------------- <CsoundSynthesizer> <CsOptions> -+P ;-W -o WavetableSimulatedMultiplexPhasor1.wav </CsOptions> <CsInstruments> sr = 44100 kr = 44100 ksmps = 1 nchnls = 1;2 instr 1 ;-----------------------inizializzazione a 0 delle variabili di multiplex kD0 = 0

32 La ripetizione ciclica di una funzione periodica, di forma ad es. gaussiana, corrisponde ad un segnale limitato alla sola dinamica positiva (segnale unipolare) e caratterizzato da ampiezza e frequenza fondamentale. 33 In linea generale, mediante i processi di modulazione è possibile sintetizzare suoni caratterizzati da una certa ricchezza spettrale anche mediante la variazione di uno o pochi parametri di controllo. 34 Si ricorda che in tal caso la sovrapposizione delle laterali è una condizione delimitata dall’effetto psicoacustico di fusione percettiva.

Page 38: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 38 -

kD1 = 0 kD2 = 0 kD3 = 0 iDN = 4 ;numero di tabelle da multiplexare iamp0 = ampdb(p4) ;amp wave look-up idist = p6 ;distanziatore bande freq. segnali D1,D2,D3 ;-----------------------------------------------INGRESSO DATO COSTANTE da porre in sucita iDcst = 1 ;-----------------------------------------------INGRESSI SELEZIONE ;selezione dinamica ingressi da D0 a Dn ifmux = p7 ifmux2 = p8 ifmux3 = p9 kglissmx linseg ifmux,p3/2,ifmux2,p3/2,ifmux3 ;glissando frequenza di selezione kindx phasor kglissmx ;indice vettori secondo fasore da 0 a 1 ;-----------------------------------------------;richiamo indirizzi binari in parallo kA table kindx,1,1 ;interpretazione dell'indice non-row kB table kindx,2,1 ;(poteva anche essere row dato che la ;funzione usata va da 0 a 1) ;-----------------------------------------------MULTIPLEXING con porte logiche (seleziona iDcst per moltiplicare vettori differenti) ;operazioni NOT secondo calcoli kNOTA = abs((kA*1)-1) ;se kA=0 : 0*1-1=-1 abs 1 ,;se kA=1 : 1*1-1=0 abs 0 kNOTB = abs((kB*1)-1) ;se kB=0 : 0*1-1=-1 abs 1 ,;se kB=1 : 1*1-1=0 abs 0 ;-------------------------------;operazioni di PORTA AND 3 ingressi kD0 = iDcst*kNOTA*kNOTB ;porta & 1 kD1 = iDcst*kB*kNOTA ;porta & 2 kD2 = iDcst*kA*kNOTB ;porta & 3 kD3 = iDcst*kA*kB ;porta & 4 ;-----------------------------------------------DN oscillatori multiplicati itab0 = p10 ;wave look-up itab1 = p11 itab2 = p12 itab3 = p13 ifD0 = p5*idist ;freqeunza oscillatori ifD1 = ifD0*idist ifD2 = ifD1*idist ifD3 = ifD2*idist aD0 oscili iamp0,ifD0,itab0 aD1 oscili iamp0,ifD1,itab1 aD2 oscili iamp0,ifD2,itab2 aD3 oscili iamp0,ifD3,itab3 ;-----------------------------------------------finestratura del segnale multiplexato kwndw oscili 1,kglissmx*iDN,99 ;fwndw=ifmux*iDN (quattro finestre per 1 periodo di multiplex Tmux=1/fmux) e ;deve variare proporzionalmente al variare della freqeunza di mux ;-----------------------------------------------passaggio in uscita (selezione del vettore segnale) ;passerà in uscita solo il vettore confermato meditante kDnn=1 ;I0 I1 I2 I3 amultiplex = (aD0*kD0)+(aD1*kD1)+(aD2*kD2)+(aD3*kD3) ;operazione di porta OR 4 ingressi aU = amultiplex*kwndw ;astabil balance ;elimina instabilità di ampiezza ;aflt tone aU, 22050 ;filtro L-P kenv linen 1,1,p3,1 ;Inviluppo trapezoidale outs aU*kenv ;,aU*kenv endin </CsInstruments> <CsScore> ;-----------------indirizzi di selezione 2Bit (grandezza vettori n^2=>DN) ;decimale:0 1 2 3 f1 0 4 -2 0 0 1 1 ;vettore A 1°stringa di bit f2 0 4 -2 0 1 0 1 ;vettore B 2°stringa di bit ;-----------------vettore per accedere in sequenza ai bit f3 0 4 7 0 4 1 ;rampa di 4 punti, indici di lettura da 0 a 3 decimali ;-----------------------------------------------tabelle da multiplexare f4 0 8192 10 1 ;sin f5 0 8192 10 1 0 1 f6 0 8192 10 1 0 1 0 0 1 f7 0 8192 10 1 .5 .25 ;f8 0 8192 08 0 2048 1 2048 0 2048 -1 2048 0 ;-----------------------------------------------funzione glissando (da 40 fino al triplo) f8 0 8192 -7 0 8192 1 ;-----------------------------------------------finstratura zerocrossing tabelle mux ;inviluppo per ogni segnale multiplexato f99 0 8192 08 0 1500 .025 2596 1 2596 .025 1500 0 ;gaussiana ripida ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 ;nf atk dur iamp0 ifD0 idist ifmux ifmux2 ifmux3 itab1 itab2 itab3 itab4

Page 39: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 39 -

;TEST 0 fmux<20Hz costanti, fDn raddoppiate, tabelle sinusoidali, si commutano più Tn entro ;ogni Tmux dove Tmux avviene quattro volte in 1sec (proporzionalmente anche la finestratura Tlambda) ;per la commutazione dei segnali in wavetable Dn i1 0 5 80 300 2 1 1 1 4 4 4 4 ;TEST 1 fmux e Tmux divengono porgressivamente uguali alla freqeunza base f0 e T0 (caso Tn=Tcm o Tmux) ;i1 0 10 80 100 1 1 100 100 4 4 4 4 ;TEST 2 fmux<f0 e Tmux>T0 in modo crescente (caso Tmux o Tcm>Tn) ;i1 0 10 80 100 1 1 200 200 4 4 4 4 ;TEST 3 fmux>f0 e Tmux<T0 in modo decrescente (caso Tmux o Tcm<Tn) ;i1 0 10 80 100 1 200 100 10 4 4 4 4 ;TEST 4 durata lunga, fmux costanti, tabelle sinusoidali, fD0=fD1=fD2=fD3>20Hz ;i1 0 20 80 1000 1 20 20 20 4 4 4 4 ;TEST 5 fmux costanti, tabelle diverse, fD0=fD1=fD2=fD3>20Hz ;i1 0 10 80 80 1 1 1 1 4 5 6 7 ;TEST 6 durata lunga, Sweep fmux, tabelle diverse, fD0=fD1=fD2=fD3>20Hz (valutare zone di rallentamento) ;i1 0 20 80 80 1 20 50 100 4 5 6 7 ;TEST 7 durata lunga, fmux costanti, tabelle sin, fD0=!fD1=!fD2=!fD3>20Hz ;i1 0 5 80 1000 2 40 40 40 4 4 4 4 ;TEST 8 durata lunga, fmux costanti, tabelle sin, fD0=!fD1=!fD2=!fD3>20Hz ;i1 0 10 80 40 2 40 38 43 4 5 6 7 </CsScore> </CsoundSynthesizer>

La struttura del multiplexer è stata riadattata per operare su segnali sonori senza

modifiche alla logica fondamentale di selezione [Par. 2.2]. In linea generale le procedure

implementate consentono di mandare in uscita i singoli ingressi aDn in base alla presenza

di uno e zeri sulle porte AND. Tutte le funzioni logiche sono state ricavate mediante

operazioni aritmetiche per ottimizzare la computazione vettoriale. In particolare le variabili

kDn contengono risultati binari stabiliti in base ai vettori di indirizzo kA,KB e alle funzioni di

negazione kNOTA, kNOTB35. Producendo una parola di selelzione compresa tra

0 e 2Dn-1=3 la variabile kDn corrispondente passerà allo stato logico alto, confermando il

segnale aDn presente alla porta OR a più ingressi. La variabile amultiplex contiene il

risultato di commutazione del segnale aDn, di uscita al corrispondente oscillatore

wavetable look-up. Si può notare che l’accesso agli indici dei vettori di selezione kA,KB

(i cui valori sono preallocati in tabella) è definito mediante fasore, con frequenza variabile

secondo segmenti di retta. Al variare della frequenza di lettura degli indici, ossia al variare

35 Per coerenza alla struttura del multiplexer si è preferito definire funzioni logiche operanti unicamente su stati booleani. Per cui agli ingressi delle porte AND, oltre al risultato dei vettori di selezione e delle funzioni NOT, è prevista una costante iDcst=1 rappresentante un ingresso dati fittizio.

Page 40: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 40 -

dei periodi di commutazione, deve modificarsi proporzionalmente anche la frequenza di

generazione della finestratura posta alla variabile kwndw. In fine, per aumentare

l’efficienza del processo, sono state definite alcune variabili di inizializzazione KDn=0

adibite all’azzeramento degli stati di commutazione per ogni nuovo ciclo. Si riportano di

seguito una serie di risultati di analisi nel tempo ed in frequenza (con indicazione

dell’ampiezza in dB) che confermano l’effettivo funzionamento del modello implementato:

Fig. 17 TEST 0, frequenza di multiplex 1Hz e durata nota 5sec

Nello spettro risultane si notano le singole bande spettrali corrispondenti alla

commutazione di quattro sinusoidi allocate in tabella. Avendo posto Hzfmux 1= si

avranno 4=ND commutazioni uguali per ogni secondo di suono. Nel grafico della

forma d’onda si può constatare l’effetto della funzione di finestratura, per basse velocità di

commutazione paragonabile ad un tremolo. Ponendo Hzfmux 20≥ e frequenze dei

Page 41: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 41 -

segnali in tabella uguali è possibile valutare un allargamento spettrale assimilabile al

risultato di una AM (Amplitude Modulation) semplice:

Fig. 18 TEST 4, Fmux=20Hz, fD0= fD1= fD2= fD3=1000Hz

Nell’esempio si denota la presenza di laterali36 mp ff − ed mp ff + attorno la

portante pf unica (ed unipolare). Alla fig.19 si riporta lo stesso effetto di allargamento

spettrale per bande fDn diverse (iFD0=1000, idist=2), sempre ad ampiezze An

costanti ed muxf in banda udibile. In quest’ ultimo caso si valutano bande laterali attorno

a quattro pseudo portanti, corrispondenti alle sinusoidi memorizzate in table look-up.

36 Non trattandosi di una vera e propria tecnica AM non è possibile definire l’ampiezza delle laterali in base all’indice di modulazione esplicito I ; dove ad es. per le prime due laterali si stimerebbe

approssimativamente un ampiezza ampI

A ⎟⎠⎞

⎜⎝⎛≈± 2

, per 1=I .

Page 42: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 42 -

Fig. 19 TEST 7, Fmux>20Hz, fD0= 1000, idist=2

Fig. 20 TEST 8, Fmux variabile in P3, ifD0=40Hz, idist=2

Page 43: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 43 -

La fig.20 mostra invece uno spettro complesso ottenuto mediante commutazione di

funzioni tabellari non soltanto sinusoidali. Il sonogramma conferma la deviazione lineare

della frequenza muxf , fluttuante di pochi Hz lungo la durata del segnale. La parte

superiore dello spettro non mostra particolari forme di distorsione armonica prodotte dalla

commutazione. L’efficienza del processo di generazione deriva quindi dal funzionamento

del fasore abbinato all’oscillatore di finestratura. In altre parole non avviene uno

sfasamento tra funzione di finestratura e periodi di commutazione e quindi non vi è

progressiva introduzione di glitch37.

Il prossimo esempio di sintesi mostra uno sweep della frequenza di multiplex da

ifmux1=20Hz a ifmux2=100Hz, con ampiezze costanti iamp0=80dB, tabelle diverse

(pseudo-armoniche ecc.) e frequenze delle wavetable costanti ifDn=80Hz:

Fig. 21 TEST 6, glissando frequenza Multiplex

37 Si può confermare una sufficiente sincronia tra finestre di inviluppo e periodi di commutazione tale che non avvenga un progressivo arricchimento armonico nel tempo.

Page 44: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 44 -

Lungo l’incremento lineare dei valori di frequenza si assiste ad un’apparente

“decelerazione-accellerazione” del processo di modulazione. Questo comportamento è

tipico del metodo di sintesi e si manifesta al variare della frequenza di multiplexing.

I range sonori caratterizzati da questo effetto dinamico, (si veda ad es. la fig.21, nel tempo

t=2,t=4.8,t=16, la fig.20 e 22), presentano un potenziale musicale sfruttabile per scopi

compositivi.

La ricerca di zone musicalmente interessanti e performabili può essere agevolata

dall’impiego di modelli algoritmici che operino in tempo reale, mediante il quale è possibile

scoprire facilmente anche una serie di artefatti38 (limiti) di generazione. In definitiva tutti i

parametri osservati fino ad ora saranno oggetto di controllo nei capitoli successivi.

Fig. 22 TEST 1, glissando di fmux fino alla condizione stabile Tn=Tmux o Tcm, con Itabn=f4

È possibile notare una dinamicità estesa al variare di fmux, da 0 a 100Hz, con ifDn=100Hz.

38 Ad esempio adottando alte frequenze di multiplex e frequenze delle wavetable <20Hz si provocano una serie di non-linearità spettrali (glitch, clip), interessanti dal punto di vista compositivo. In ogni caso è consigliabile non eccedere nella freqeunza di multiplex per non produrre elevato foldover, soprattutto per multiplexing di spettri complessi ad elevato contenuto armonico.

Page 45: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 45 -

2.2.2 Algoritmi di multiplexing a 2 e 3 Bit per il tempo reale Si riporta di seguito l’implementazione in Pure Data del modello ALG.4, per operazioni di

switching a 2Bit, ottimizzato per la computazione in tempo reale: - ALG.5 -

In tal caso il segnale generato dalle wavetabele (presenti ad un livello superiore del patch)

è direzionato direttamente nelle porte AND mediante inlet~, ed il processo di

commutazione sequenziale deriva dall’implementazione del multiplexer combinatorio

ALG.3 visto in precedenza. Il porting per il tempo reale richiede l’aggiunta di un oggetto

capace di definire la dimensione minima del blocco di computazione, in campioni N , per

le elaborazioni nel subpatch. La condizione di definire un blocco di computazione minimo

Page 46: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 46 -

è essenziale al fine di poter commutare, in tempo reale, frazioni minime di segnale NQ ,

di ogni generico NT . Ponendo un valore minimo per l’argomento di Block~, in tal caso

2=N , si avrà che la frequenza di multiplexing potrà coprire l’intera gamma udibile.

Infatti il periodo di multiplexing muxT minore possibile (pari alla minima dimensione di

NQ ) diviene ( ) sec000045351.04410021 ≈== SrNTcm e quindi la

frequenza massima di commutazione39 sarà Hzfmux 22050= .

L’algoritmo presentato è racchiuso all’interno di un unico oggetto chiamato “pd

multiplexer~” (richiamabile anche come astrazione).

Di seguito si mostra (a sinistra) il contenuto del subpatch “pd ID Selection 2Bit” nel quale

sono allocati i vettori di indirizzo o commutazione. Il richiamo degli indici BA ii , , operato

dai rispettivi oggetti Tabread~ A-B, è in tal caso sequenziale e ordinato (da A=0,B=0 a

A=1,B=1). Tornando al subpatch “pd Multiplexer~”, si mostra (a destra) il contenuto di “pd

window” in cui avviene l’allocazione della tabella del periodo di finestratura:

Fig. 23

39 Sperimentalmente si può valutare che per blocchi di computazione 64≥N (valore di defoult in

pd) non è possibile ottenere un perfetto multiplexing dei segnali audio. Ponendo 64=N la dimensione

minima dei blocchi di computazione è sec001451.0/ ≈= SrNT quindi frazioni di segnale

TQi < sarebbero saltate in commutazione. Il periodo in campioni corrispondente a sec001451.0≈T può

essere calcolato, mediante formula inversa, con 6444100001451.0 ≈⋅=⋅= SrTN .

Page 47: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 47 -

In “pd Multiplexer~”40 l’oggetto tabread4 Hamming richiama i campioni del periodo di

finestratura alla giusta frequenza (fȜ=fmux*Dn o Ntab) definita da un fasore. Ad un livello

superiore l’intero ALG.5 contiene le wavetable look-up dei segnali da commutare e la

definizione complessiva dei parametri (variabili):

Vi è la possibilità di richiamare un insieme di parametri tramite i message box.

Tali parametri riguardano, similmente ad ALG.4, la frequenza di multiplexing fmx, quella dei

segnali in tabella frq0 e imlt (paramentro equivalente a idist in ALG.4) ed alcuni range per la

definizione delle frequenze massime, rngMx per fmux e rng per i segnali in wavetable.

Le tabelle Dn=4 sono graficamente poste nel subpatch “pd wavetable look-up”, il cui

contenuto è mostrato in seguito (a sinistra). Queste vengono lette dai rispettivi tabread4~

wavetablen in “pd wavetablen”, il cui contenuto è mostrati di seguito (a destra). L’uscita di

ogni “pd wavetablen” (vettore segnale y[n]) entra in un ingresso In del multiplexer.

40 Si rende noto che in Pure Data, nella libreria Zexy v2.1, è presente un oggetto specifico per il Multiplexing di vettori (ad Sr e Kr) detto multiplex~. Nelle tecniche di sintesi per commutazione vettoriale esso può aumentare l’efficienza del codice. In tal sede non viene condotta un’analisi del “multiplex~.c”.

Page 48: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 48 -

Fig. 24

La costruzione dell’algoritmo di multiplexer a 3Bit (ALG.6) è stata effettuata a partire dal

seguente schema logico, al quale corrisponde una tabella delle verità più estesa:

Fig. 25 Circuito logico di Multiplexer a 3Bit e sua rappresentazione schematica

Mediante tale circuito è possibile smistare 23=8 ingressi dati Dn o In in uscita U:

Fig. 26 Tabella delle verità corrispondente al multiplexer a 3Bit

Page 49: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte I – Modelli di sintesi e definizione dei parametri di controllo Stefano Silvestri

Rev. 2 A.A. 08/09 - 49 -

La struttura algoritmica che ne deriva è leggermente più complessa. In essa aumenta

sostanzialmente il numero di tabelle (Dn=8) da commutare, e quindi il numero di subpatch

“pd wavetablen”. Gli oggetti per la finestratura, quelli per la memorizzazione di tabelle non

variano rispetto ad ALG.5 e per questo si riporta per praticità il solo subpatch

“pd multiplexer 3bit”, incentrando l’attenzione sul circuito combinatorio: - ALG.6 -

La logica alla base del processo non varia, anche se il numero di porte logiche è in pratica

raddoppiato rispetto ad ALG.4. Ovviamente in tal caso si modifica la costante fȜ=fmux*Dn ed

il valore dei punti del periodo di commutazione dovrà essere elevato (N=216 o 217).

Il controllo stocastico previsto per i parametri di sintesi verrà trattato nel seguente capitolo.

Page 50: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 50 -

3.0 PROCESSI STOCASTICI PER IL CONTROLLO DI PARAMETRI COMPOSITIVI

Nel capitolo verranno illustrati alcuni processi stocastici, atti alla generazione di variabili

pseudo-casuali discrete, da applicare ai modelli di sintesi per il tempo reale.

L’implementazione dei metodi di generazione di variabili aleatorie è utile al fine di

supportare modelli Markoviani di ordine elementare. In altri termini, i procedimenti di

Random Wolks e la simulazione dei moti Browniani sono basati su generatori di sequenze

pseudo-casuali (PRN’s, pseudorandom numbers). Tali modelli saranno sfruttati nella

composizione musicale sia a livello microstrutturale che macrostrutturale. Nel primo caso

ci riferisce alla possibilità di rendere funzione del tempo determinati attributi spettrali, come

frequenza e ampiezza di generazione, secondo ordini randomici limitati e prevedibili.

Nel secondo caso ci si riferisce alla gestione di intere strutture sonore entro diverse

dimenzioni compositive, come ad es. lo spazio di diffusione.

In linea generale il controllo stocastico al livello microstrutturale è utile al fine di imporre

andamenti dinamici non ridondanti per le componenti spettrali. Infatti, come visto in

precedenza, i processi di wavetable switching permettono di sintetizzare suoni

caratterizzati da una ciclicità regolare (periodica) delle componenti frequenziali1.

In particolare è possibile definire intervalli di variazione, opportunamente studiati, per le

frequenze di generazione degli oscillatori wavetable, per le frequenze di multiplexing e per

gli inviluppi di ampiezza ecc. Tutte possibilità di controllo indagate e testate all’interno della

composizione.

Riguardo alle tecniche di generazione aleatoria è possibile constatare una serie di

limitazioni da risolvere con metodi di cumulazione delle distribuzioni (metodi di

composizione o miscugli di distribuzioni). In altre parole devono sussistere una serie di

correzioni e controlli per limitare la periodicità delle serie numeriche. In tal sede ci si limita

1 Nei risultati di sintesi si può osservare che la leggera variazione delle componenti spettrali, maggiormente discriminabile per determinati parametri numerici, si manifesta anche con coefficienti costanti. Tale comportamento deriva dall’interazione dei segnali in tabella con il processi di switching.

Page 51: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 51 -

all’implementazione di determinate equazioni in modelli strutturati per il tempo reale,

demandando ad altra sede una più accurata analisi formale delle distribuzioni generate.

3.1 Generatori di sequenze p seudo-casuali uniformi di Lehmer

La simulazione o Metodi “Monte Carlo” [J. Von Neumann (1903-1957) e S. Ulam (1909-

1984)] impiegano procedure con numeri pseudo-casuali (o v.a, variabili aleatorie).

In generale i numeri pseudo-casuali sono utili nel progetto di algoritmi probabilistici e per

generare dati arbitrari di input, al fine di prove sperimentali euristiche. Quest’ultima

possibilità è riferita, tra l’altro, alla composizione stocastica al computer [si veda Xenakis

(1922-2001), Barry Truax (1947)], dove si generano distribuzioni di variabili aleatorie

impiegate come variabili indipendenti di parametri compositivi.

Una v.a. è un numero che ha probabilità di occorrere entro un dato intervallo di variabilità.

In tal sede si considerano distribuzioni uniformi per cui la probabilità p che occorra un

numero i è omogenea in tutto l’intervallo dato2. Considerando le variabili uniformi come

sequenze numeriche si ha che la distribuzione X è determinata da un vettore di

probabilità [ ]npppP ,..., 10= tale che ( ) ipiXX === con

ni ,...,2,1,0= . In dominio discreto la sequenza di generazione ip , di valore atteso

compreso entro un intervallo limitato, si ripete entro un periodo di tempo limitato.

Il generatore pseudo-casuale3 è un algoritmo deterministico capace di simulare eventi

aleatori (o stocastici) che siano attestabili a tutti gli effetti secondo proprietà statistiche.

2 L’intervallo di generazione può essere ad es. quello [ ]1,0 dei numeri Naturali od un generico [ ]ds,

dei numeri Interi, con ds < . 3 Si rende noto che, dato un generatore deterministico, è sempre possibile prevedere anticipatamente la sequenza random una volta che sia nota l’equazione alla base dell’algoritmo stesso. Tale osservazione contraddice la definizione di processo stocastico. Tuttavia costruendo generatori pseudo-casuali capaci di superare test statistici di casualità, di uniformità e indipendenza (si vedano ad es. per l’uniformità: test del Chi-quadro, test di Kolmogoroff-Smirnoff, mentre per l’indipendenza: test dei Gap, test spettrale) è possibile generare variabili aleatorie di buona approssimazione.

Page 52: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 52 -

Nell’ambito della computazione, per via della ricorrenza del periodo della serie (ripetizione

della sequenza) non tutti i modelli di generatori algoritmici danno risultati soddisfacenti

[Knuth (1969-1973)]. Tale affermazione è da non sottovalutare specialmente nei casi in cui

si debbano ottenere, a livello dell’indagine compositivo-musicale, ad es. determinate

variazioni spettrali sempre differenti nel tempo4.

Tra i generatori più semplici si annoverano quelli basati sul metodo middle-square5 [J. Von

Neumann, 1946] e quelli introdotti dal matematico esperto di numeri D. H. Lehmer nel

1948-1951, e riproposti da Park e Miller (1988) per applicazioni computazionali di carattere

generale. Il generatore di Lemer, propriamente indicato con il temine di LCG o generatore

lineare congruenziale (o metodo moltiplicativo lineare congruenziale), è capace di produrre

v.a. uniformemente distribuite mediante due parametri principali, il modulo m ed il

moltiplicatore a . In linea generale m deve essere un numero primo grande, mentre il

secondo deve essere un intero 12 −<< ma . Scelto l’intero iniziale 0x , detto seme

della serie6, l’algoritmo deve generare la sequenza 110 ..., −= nxxxp , basandosi su

una formula iterativa:

E.1 ( ) inxfx nn ,...2,1|1 ==+

Dove ( )nxf è una funzione definita per ogni intero 11 −<< mx

secondo ( ) ( ) maxxf mod= . Il rapporto mxn / è detto numero pseudo-casuale e

la successione di tali rapporti è detta sequenza pseudo-casuale. Tramite rapporto è

4 Similmente alla risoluzione di problemi di fisica mediante simulazioni di tipo probabilistico. Si indicano a tal proposito i primi studi condotti dal matematico S. Ulam (1909-1984). 5 Tale metodo ha valenza solo storica dato che le sequenze di numeri generati degradano rapidamente al valore costante. Esso può classificarsi come generatore quasi-casuale e nella sua semplicità evidenzia la necessità di disporre di molte v.a. in tempi brevi al calcolatore. 6 Valore compreso tra 1 ed 1−m da cui parte la sequenza numerica, sempre identica ad ogni ripetizione del periodo.

Page 53: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 53 -

possibile generare sequenze di reali in rrrr ..., 10= entro l’intervallo chiuso [ ]1,0 dove

mxr nn /= per in ,...2,1= . La E.1 è alla base dei metodi congruenziali e permette

di definire sequenze virtualmente infinite di numeri random che superino i test statistici di

casualità, a patto che siano definiti in modo corretto i parametri di generazione, dipendenti

tra l’altro dalla parola macchina del calcolatore.

Essendo m primo ( ) 110 −<<∀≠ mxxf n , la qual cosa evita che ad un certo

punto della generazione vengano prodotti solo zeri nella sequenza degli stati attuali nx .

Inoltre i valori reali 1,0 == rr non sono mai generati (approssimati), dove il minore

mr /1= ed il maggiore mr /11−= . Si dimostra che scegliendo opportunamente

ma, la sequenza x è indistinguibile da una successione di interi estratti casualmente

dall’insieme { }1,...,2,1 −= mP . In tal modo è opportuno che ma, siano scelti per

definire un periodo massimo, ovvero in modo che il generatore non generi due volte lo

steso valore senza aver prodotto nel frattempo tutti gli 2−m valori possibili.

I metodi introdotti da Lehmer vengono implementati in due forme indicate come:

• Metodo moltiplicativo (lineare) congruenziale.

• Metodo congruenziale misto.

Nel primo caso si generano numeri pseudo-casuali, stabilendo il seme 0x e ottenendo i

numeri successivi della serie tramite la E.1, riscrivibile come:

E.2 [ ]maxx nn mod1−=

Con ma, interi positivi ed 1≥n . La E.2 risulta dalla definizione dei numeri congrui di

modulo m :

Page 54: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 54 -

E.3 ( )[ ]maxrestox nn /1−=

Nel metodo congruenziale misto si generano numeri pseudo-casuali, stabilendo il

seme 0x e ottenendo i numeri successivi nx della serie p con:

E.4 [ ] ( )[ ]{ }mcaxmcaxx nnn /modmod 11 +⇒+= −−

Dove c è un numero dispari ( 1+c ) intero positivo ed 1≥n .

In ogni caso la successione dei numeri generati è definita allo steso modo della E.1,

attraverso rapporto pseudo-casuale e sequenza costruita per i valori 1,...,2,1 −m .

Per effettuare i primi test di valutazione delle sequenze uniformemente distribuite,

in tempo differito, si riporta la seguente funzione Matlab basata sul modello

congruenziale misto:

function x=LCG(seme,a,c,m,n) - ALG.7 - % %Generatore lineare congruenziale %generatore di un vettore di numeri pseudo-casuali di dimensione n % x=zeros(1,n); %vettore monodimnsionale in cui definire le v.a. x(1)=seme; %valore seme X0 definito come indice del vettore for i=1:n-1 %da 1 a n-1 x(i+1)=mod(a*x(i)+c,m) %funzione modulo secondo metodo congruenziale misto end

Inizializzando, alla command window, i valori 30,31,0,13 ==== nmca e

ponendo seme 10 =x si ottengono in output:

ans = Columns 1 through 15 1 13 14 27 10 6 16 22 7 29 5 3 8 11 19 Columns 16 through 30 30 18 17 4 21 25 15 9 24 2 26 28 23 20 12

Dove ans è una variabile provvisoria (automaticamente definita da Matlab) che contiene

una successione di periodo 301=−m dove compaiono tutti gli nx per poi ripetersi

dopo 30x . Tale ripetizione non dipende dalla scelta di 0x se 0x è non nullo.

Il seme 00 =x origina una successione costante pari a 0 per 0=c indipendentemente

Page 55: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 55 -

da ma, . Il test di generazione permette di osservare che ponendo 0=c il generatore è

puramente moltiplicativo. In altre parole da un generatore congruenziale misto si ottiene il

metodo moltiplicativo lineare congruenziale. Il massimo periodo generabile da quest’ultimo

metodo è 1−m , dove in caso di 0≠c si avrà un periodo massimo pari ad m in

quanto comparirà anche 0=nx .

I criteri per la scelta del seme e modulo [11] sono la chiave per una sufficiente

generazione pseudo-casuale e si possono riassumere le seguenti condizioni ideali da

rispettare:

1. Scelto il seme, la successione deve risultare uniforme in 0 e 1 ed indipendente.

2. Scelto il seme, il numero di v.a. generate deve essere elevato al fine di evitare

ripetizioni (periodo m-1 esteso).

3. Bisogna progettare algoritmi di generazione efficienti dal punto di vista della

computazione, adatti al sistema (hardware/software) sul quale devono operare.

La scelta del numero m , che garantisce un periodo di dimensioni 1−m , è dipendente

dalla parola macchina del calcolatore ossia dalla capacità di rappresentazione numerica.

Anche la scelta di ca, risulta il punto cruciale per la convalida di una sequenza come

successione pseudo-aleatoria. Alcuni standard di inizializzazione, introdotti da Miller e

Park, vengono di seguito riportati:

• Su computer con parola macchina di 32Bits si ha 1231−=m ed

1680775 ==a e 0=c (metodo puramente moltiplicativo).

• Su sistemi con parole di 36Bits si ha 31255;12 535 ==−= am .

Aggiungendo che è possibile adottare, su sistemi a 16Bits: a=55=3125, m=216=65536,

c=0, con seme X0 non nullo. Dove il periodo m-1 è sufficientemente grande.

Page 56: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 56 -

Nel primo caso il periodo massimo è 646.483.147.2=m , un numero abbastanza

valido per applicazioni compositivo-musicali stocastiche (semplici), meno valido per

applicazioni scientifiche relative ad es. alle simulazioni di fisica delle particelle.

In base a quanto detto, l’implementazione definitiva in matlab del generatore pseudo-

casuale può essere quindi la seguente:

function x=fn_myrand(n) - ALG.8 - %funzione fn_MyRand %implementazione del generatore pseudo-casuale secondo LCG %richiede funzione LCG.m in workdir % seme=100*sum(clock); %seme dipendente dalla funzione clock che restituisce la data fornita dal sistema operativo %ad ogni RUN si avrà un seme inizializzato in modo diverso %-----------------------inizializzazione costanti di generazione m=2147483647; %modulo a=16807; %moltiplicatore c=0; %metodo congruenziale misto per c=!0, metodo puramente moltiplicativo lineare

%congruenziale per c=0 x=LCG(seme,a,c,m,n)./m; %calcolato con rapporto vettoriale pseudo-casuale seme=x(n); %vettore sequenze pseudo-casuali di variabili reali %-----------------------istogramma di freqeunza N=50; colormap(gray) hist(x,N); %crea un istogramma di freqeunza x in N sottointervalli di ampiezza uguale %(calcola quanti valori di x in y cadono in un dato intervallo Nx) title('istogramma di frequenza del generatore uniforme'); xlabel('Xn'); ylabel('distribuzioni');

La funzione calcola anche l’istogramma di frequenze x entro l’intervallo prestabilito, dove

nel caso di distribuzione uniforme ideale il valore medio è dato da N

n=℘

, con n

valori da generare e dividere in N sottointervalli di uguale ampiezza per l’istogramma.

Con le costanti dichiarate si potranno avere estremi della generazione pari a

40000000000.min ≈x ed 9999999995.≈Maxx . L’istruzione clock()

nell’algoritmo permette di ottenere un seme di generazione sempre diverso ad ogni nuovo

Run della sequenza7. Si riportano di seguito una serie di test effettuati con questa funzione

e con variabili n definite direttamente dalla command window di Matlab:

7 Implementazione simile alle funzioni rnd(n) o rand(n) associate al RANDOMIZE TIMER in vari dialetti BASIC.

Page 57: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 57 -

a)

b)

Fig. 1 a) generazione con n=1000, b) n=10000

In figura 1-a l’istogramma mostra che, con 50=N , il valore medio della frequenza è

Page 58: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 58 -

pari a 2050/1000 = , nel caso di fig.1-b si ha un valore medio uniforme pari a

20050/10000 = , come dimostrano la maggior parte dei picchi nx di valore

compreso approssimativamente tra 150 e 250.

In linea generale la forma (e la sintassi) con cui viene fornito un generatore pseudo-

random8 può essere )(nrndr = , con opzione di inizializzazione del seme iseed .

Per la variazione della sequenza casuale [ ]nr , entro intervalli diversi dal dominio reale

[ ]1,0=ℜ o intero [ ]1,1 −=+ mZ , è possibile stabilire intervalli arbitrari

( ) vxdsv n ⊂= |, , generando il reale r in ( )1,0 e ponendo ( )sdrsn −+= .

Allo stesso modo per generare un intero [ )dsn ,∈ , con ds, interi, si può porre

( )⎣ ⎦sdrsn −+= . Si può inoltre variare la probabilità di generazione ip

rendendola diversa dalla distribuzione uniforme 1=ip , producendo ancora la

sequenza9 r in ( )1,0 ed effettuando un’azione logica ad es. solo se 0, ≠≤ ppr .

In linea di principio, per la variazione della sequenza randomica e dell’intervallo in cui essa

agisce, si possono definire una serie di operazioni vettoriali10, che siano anche funzione di

variabili del tempo11.

8 Similmente ai generatori random in librerie di funzioni matematiche, nei linguaggi di programmazione generale o di sintesi del suono. La differenza risiede nel parametro n che in queste routine

semplifica direttamente la scelta del range di variazione casuale, ossia l’intervallo di valori [ )n,0 , da 0 ad

1−n . Nel generatore teorico il valore attuale nx è definito invece dal numero pseudo-casuale mxr nn /= . 9 Si ricorda che la sequenza generata ha periodo 10 −≤ mm , con 10 −= mm (periodo massimo)

solo se m è primo ed a è una sua radice primitiva ovvero: mama nm mod1,mod11 ≡≡− per 11 −<< mn . 10 Trasformazioni vettoriali (prodotti per scalari ecc.) o mappe numeriche (e grafiche)

[ ] [ ]kzvyxv ,, 21 =→= , che implicano almeno una somma (off-set di traslazione) ed un prodotto, dove il simbolo”→ ” indica una trasformazione lineare. 11 Maschera di tendenza o procedura che impone un certo andamento nel tempo non deterministico.

Page 59: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 59 -

In fine per il generatore numerico pseudo-casuale, in tempo reale, è possibile controllare

anche il tempo di generazione del valore 1+nx .

3.1.1 Metodo lineare congruenziale per il tempo reale L’algoritmo di generatore pseudo-casuale per il tempo reale permette di definire sequenze

di v.a. in un periodo di generazione corrispondente all’intervallo di tempo t∆ . Si definirà

quindi un passo di generazione per ogni variabile successiva 1+nx fino al termine del

periodo massimo 1−m . Con riferimento alla funzione “fn_myrand”, quindi alla function

“LCG”, si riporta l’implementazione in PD del metodo lineare congruenziale: - ALG.9 -

Page 60: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 60 -

In tal caso il subpatch “pd sperimentazione di coefficienti” contiene varie costanti di test.

Sufficienti risultati di decorrelazione12 sono stati ottenuti con parole di 16Bits e con 0=c

(modello puramente moltiplicativo). Il subpatch “pd formattab” si occupa della

formattazione delle tabelle che contengono il risultato grafico. I buffer sono scritti mediante

tabwrite per ogni valore nx della sequenza aleatoria, fino ad 100=n . Il rapporto

pseudo-casuale fornisce quindi i valori [ ]10 <<= in :

Fig. 2 Punti discreti ed interpolati della sequenza pseudo-casuale uniforme

I test grafici dimostrano l’assenza di correlazione, avendo posto un seme 150 =x con

655362,31255 165 ==== ma . La subroutine “Audiotest” pone la sequenza

pseudo-aleatoria come moltiplicatore del valore di frequenza di un oscillatore audio.

Tale procedura permette di valutare il comportamento della sequenza nei confronti del

controllo di un parametro specifico di sintesi. Il test condotto con i valori esposti restituisce

variazioni di frequenza apparentemente casuali13, se i coefficienti mca ,, rimangano

costanti. Per produrre variazioni continue della frequenza è possibile interpolare ogni

12 Il valore attuale nx della sequenza aleatoria sembra non dipendere dal precedente 1−nx . In altre

parole vi è indipendenza tra 1, +nn xx per 0>n o assenza di correlazione. 13 In teoria, per alte velocità di generazione, la distribuzione uniforme dovrebbe restituire un processo di rumore bianco. Tra gli esempi sonori allegati alla tesi è possibile ascoltare anche l’esito del controllo stocastico della frequenza dell’oscillatore sinusoidale.

Page 61: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 61 -

elemento nn xx ,1− tramite FIR 1° passa-basso (uno zero ), definendo la media aritmetica

n

xM

n

ii∑

== 1, secondo e.d.f.

[ ] [ ] [ ] [ ] [ ]2

11

21

21 −+

=−+=nxnx

nxnxny:

In precedenza si è detto che il periodo di generazione delle v.a è lungo abbastanza per

fornire una sequenza apparentemente randomica, avendo posto determinate costanti.

Tuttavia per il controllo stocastico degli algoritmi di sintesi in tempo reale, in particolar

modo per le variazioni continue di tutti i parametri correlati al suono, è opportuno

adoperare serie perfettamente pseudo-random definite entro periodi molto lunghi14, al fine

di non produrre cicli e ridondanze spettrali.

3.2 Catene di Markov e Matrici di transizione I valori pseudo-casuali, generabili attraverso i precedenti modelli congruenziali,

definiscono in tal sede gli stati successivi di un processo Markoviano. In altre parole le

sequenze di v.a. sono utili nella definizione delle catene di Markov e nei moti Browniani.

14 Maggiore è il periodo definito da m , più tempo la sequenza pseudo-aleatoria impiegherà ad esaurirsi.

Page 62: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 62 -

Un processo stocastico15 consiste in un insieme di istanti al quale sono associate variabili

casuali. La manifestazione di un dato istante è detta stato del processo, dove la probabilità

di passaggio da uno stato is ad un altro js è detta probabilità di transizione. Un tipo

semplice di processo stocastico è descritto dalla successione di variabili casuali

indipendenti. Tuttavia è possibile definire sequenze in cui lo stato attuale dipenda da

quello che lo precede immediatamente (sistema con memoria). Tra i processi stocastici di

eventi indipendenti si annoverano le cosiddette catene di Markov, introdotte dal

matematico russo A. Markov (1856-1922). Procedimenti del genere possono essere

adottati per modellare l’andamento di fenomeni fisici che si evolvono nel tempo. Nella

composizione algoritmica i modelli Markoviani discreti sono altrettanto utili per definire

controlli indipendenti e probabilistici. Associata ad una catena di Markov vi è una matrice16

P delle probabilità di transizione (o matrice stocastica), la quale può essere impiegata sia

per analizzare ogni stato della sequenza che per sintetizzare il procedimento stesso.

In dominio discreto tutte le matrici di transizione (m.t.) producono stati finiti rispetto ai

modelli reali che possono produrre stati infiniti (continui). Disponendo ad esempio di

insiemi numerici pseudo-casuali uniformi { }CBAA ααα ,,= , { }CBAB βββ ,,=

{ }CBAC γγγ ,,= , dove le variabili casuali possibili hanno stesso peso e sono

CBACBA iii ,,=== , la probabilità che si transiti dallo stato A verso C , per

mezzo del corrispondente numero pseudo-casuale Cα (nuovo stato), è data da

CBA

Cpααα

α++

=. Allo stesso modo da B a C si ha

CBA

Cpβββ

β++

=,

15 Dal greco ‘stoichòn’, “caso”. 16 La matrice P indica alla riga gli stati di partenza mentre alla colonna quelli di arrivo (matrice quadrata).

Page 63: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 63 -

mentre da C a C si ha CBA

Cpγγγ

γ++

=. Indicando con ijp la probabilità di

andare dallo stato i a quello j è possibile definire la matrice di transizione:

E.5

CCCBCA

BCBBBA

ACABAA

Ppp

ppp

ppp

P =

Dove la somma degli elementi di una riga è sempre pari ad uno17. Lo stato di avvio di una

catena di Markov avviene a partire da una distribuzione iniziale di probabilità Ip . In base

all’esempio CBAI pppp = che indica la probabilità di partire dallo stato I ,

con 0≥Ip e∑ =1ip . Per conoscere gli stati successivi della catena è opportuno

basarsi sulle probabilità singole dei vari stati precedenti [9], come illustrato graficamente

dalla seguente figura:

Fig. 3 Stati possibili definiti da una generica m.t.

In altri termini la probabilità p di trovarsi allo stato generico jp , al secondo transito, è

data da CjCBjBAjA ppppppp ++= .

17 Proprietà caratteristica delle catene di Markov, che individua l’evento certo, è il passaggio unitario dallo stato i verso i possibili CBA ,, , secondo l’esito del rispettivo numero pseudo-casuale iii γβα ,, .

Page 64: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 64 -

Come affermato, nel caso del generatore ideale di numeri pseudo-casuali, l’insieme di

eventi indipendenti kEEE ,...,, 10 ha probabilità p che si manifesti una successione di

eventi indipendenti tra loro { } kk pppEEEp ,...,,...,, 1010 == . In un catena di

Markov l’evento kE non è associato alla singola probabilità kp , ma ad una coppia

ordinata di eventi jkE al quale corrisponde la probabilità condizionata18 jkp .

La probabilità che nella carena di Markov si manifesti una successione di eventi

{ }nEEE ,...,, 10 è data dal prodotto della probabilità 0a , del primo evento 0E (stato di

avvio o motore primo), con la probabilità 01a del possibile evento successivo 1E . In

termini generali si comprende che maggiore è il numero di eventi maggiori sono le

possibilità di transizione: { } nnn pppaaEEEp ,1231201010 ...... −= .

Nella composizione algoritmica una delle catene di Markov più impiegate è il cosiddetto

Random Walks (passeggiata casuale lungo la retta); processo molto utile nella definizione

di sequenze di valori indipendenti, legati da un incremento/decremento unitario (Random

Walks standard). In termini geometrici la sequenza avviene lungo l’asse x , dove ogni

stato è individuato da un punto di coordinate intere [9]. Il valore attuale della sequenza ha

probabilità di spostamento positivo+P o negativo

−q tale che 1=+ −+ qP

(differiscono di 1). Ammettendo di essere nello stato generico nE le transizioni possibili

sono 0|, ,1,1, === −−

++ hkkkkk pqpPp per 1,1 −+≠ kkh , ovvero lo

stato successivo è definito da un passo unitario. Partendo inoltre da un determinato stato

18 Probabilità che avvenga l’evento esimok − essendosi manifestato l’evento esimoj − , dove ogni evento attuale dipende dal precedente.

Page 65: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 65 -

k , dopo n passi sequenziali, si può essere ancora in k o in nk − o nk + .

In ogni caso la probabilità di transito tP è definita in base ai passi come nn

t qpP ,= .

3.2.1 Random walks a barriere riflettenti Si presenta di seguito l’implementazione algoritmica del Random Walks a barriere

riflettenti19, una particolare catena di Markov discreta caratterizzata da probabilità

certe 1,1, +− =ss hkhk pp , con sh limite sinistro della sequenza, e 1,1, −+ =

dd hkhk pp ,

con dh limite destro della sequenza. In termini grafici si può indicare il tutto in fig.4:

Fig. 4 Random Walks ideale a barrire riflettenti unitarie

Le probabilità degli stati nE , agli estremi della sequenza, sono condizionate dalla

presenza di barriere di riflessione unitaria. Ponendo ad es. stati possibili 5=nE si ha la

matrice di transizione (considerando stati En-1):

E.6

01000

000

000

000

00010

3,40,4

4,32,30,3

3,21,20,2

2,10,1

4,03,02,01,00,0

+−

+−

+−

=pq

pq

pq

P

19 Variante della passeggiata casuale a barriere di arresto, o Random Walks a stati di assorbimento.

Page 66: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 66 -

Se lo stato attuale è 0E si ha il successivo stato certo 1E . Se lo stato attuale è 4E si ha il

successivo stato certo 3E . In tutti gli altri casi si hanno probabilità p di passare

da iE ad 1+iE oppure probabilità pq −=1 di transitare allo stato precedente 1−iE ,

dove in ogni caso esiste una distribuzione di probabilità iniziale 0µ [12].

La seguente implementazione in Matlab prevede l’utilizzo della precedente funzione LCG

(algoritmi 7 e 8) e di normali istruzioni condizionate:

%implementazione del Random Walks a barriere riflettenti (o elastiche) - ALG.10 - %utilizzo del generatore di numeri pseudo-casuali secondo %metodo moltiplicativo lineare congruenziale (LCG) clear,clc,close all %-----------------------inizializzazione variabili n=100; %quantità di v.a. bar=10; %valore assoluto di barriera %-----------------------inizializzazione costanti del generatore seme=100*sum(clock); %seme sempre diverso ad ogni Run m=2147483647; %modulo a=16807; %moltiplicatore c=0; %metodo congruenziale misto per c=!0, metodo puramente moltiplicativo lineare congruenziale per c=0 %----------------------- x=zeros(1,n); %vettore monodimnsionale in cui definire le v.a. j=zeros(1,n); %vettore monodimnsionale in cui definire gli stati del random walks x(1)=seme; %valore iniziale x0 forzato all'indice 0 del vetore pseudo-casuale for i=1:n-1 %da 1 a n-1 x(i+1)=mod(a*x(i)+c,m); %funzione modulo secondo metodo congruenziale misto x(i)=x(i)./m %rapporto vettoriale per numero pseudo-casuale %-----------------------random walks a passo unitario if x(i)>.5; %50% di possibilità di passo unitario positivo (incremento) j(i+1)=j(i)+1; else %50% di possibilità di passo unitario negativo (incremento) (da .1 a .5, non conta lo 0) j(i+1)=j(i)-1; end %-----------------------barriere riflettenti a passo unitario if j(i+1)>=bar; j(i+1)=j(i)-1; elseif j(i+1)<=-bar; j(i+1)=j(i)+1; end end %plot procedura random subplot(2,1,1),plot(x, '.k') title('v.a. distribuzione uniforme'),xlabel('n'),ylabel('xn') axis([0 n 0 1]) subplot(2,1,2),plot(x, '-k') title('v.a. interpolati'),xlabel('n'),ylabel('xn') axis([0 n 0 1]) figure %plot procedura randomWalks subplot(2,1,1),plot(j, 'vk') title('Random Walks reflex bars'),xlabel('passi x'),ylabel('stati k+1,k-1'),axis([0 n 0 1]) axis([0 n -bar bar]) subplot(2,1,2),plot(j, '-k') title('interpolazione stati'),xlabel('passi x'),ylabel('stati k+1,k-1'),axis([0 n 0 1]) axis([0 n -bar bar])

Si riportano i seguenti test di esempio con 10,100 == barn .

Page 67: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 67 -

Fig. 5 Risultato del generatore congruenziale lineare

Fig. 6 Risultato del Random Walks a barriere riflettenti, |bar|=10

Page 68: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 68 -

I possibili stati sono differenti ad ogni generazione e limitati entro un margine assoluto di

barriera B . Impiegando una distribuzione uniforme di nx , definita dal generatore

congruenziale puramente moltiplicativo, si avranno uguali possibilità di passare agli stati

EEE ii ,, 11 −+ nel random walks. Con riferimento all’algoritmo n°10 si riporta di seguito

l’implementazione da sfruttare nelle applicazioni compositive per il tempo reale20: - ALG.11 -

20 Nella composizione, gli algoritmi per il tempo reale andranno snelliti dal punto di vista della grafica e delle operazioni superflue. Ad es. possono essere adottare astrazioni dell’intero patch, in cui escludere tutte le tabelle per il plotting a schermo. Si potranno anche eliminare alcune operazioni esplicite rendendole implicite in altre procedure di calcolo. I collegamenti definiti da send/receive potranno essere sostituiti inoltre da patchcord, più chiari nel riconoscimento del flusso.

Page 69: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 69 -

Ogni valore successivo 1+nx della sequenza è definito dall’oggetto metro (in alto), che

scandisce in pratica la velocità dell’intero processo Markoviano discreto. Definito un seme

di partenza 0x , mediante send di semeW=1 (dall’message box) , viene inizializzata la

generazione di una v.a. mediante subpatch “pd randomLCG” (Alg. n°9), che racchiude il

modello lineare congruenziale per il tempo reale visto in precedenza. Al contempo il seme

viene incrementato o decrementato in base all’esito dell’arrotondamento )( nxround .

Tale operazione standard, definita dal subpatch “pd fn_round”, arrotonda all’intero più

vicino. Si riporta di seguito (a sinistra) il contenuto di “pd fn_round”, in cui è sfruttata la

funzione “pd fn_floor” (a destra):

La funzione semplice round, per valori 10 << x , è definita da ⎣ ⎦5.+= xy ,

rappresentabile anche come ( )5.+xfloor , dove floor (o int) è la funzione parte intera

inferiore21, che arrotonda il numero reale x al più piccolo intero xn < (arrotondamento

per difetto). L’operazione ( )nxround , per v.a. definite dal rapporto mxn / (numero

21 Tale funzione è contrapposta alla funzione standard ceiling (o ceil), parte intera superiore indicata con ⎡ ⎤ ⎣ ⎦xx −−= . Di un numero reale x , ceil definisce il più piccolo intero xn > (arrotondamento per

eccesso).

Page 70: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 70 -

pseudo-casuale), restituirà valori di uscita 0,1 == yy , dove la probabilità discreta di

uscita è 2/1=p : basandosi sulla distribuzione di v.a. uniformi esistono possibilità al

50% che si abbia 0 o 1. Si illustra il procedimento di arrotondamento della v.a. mediante il

seguente algoritmo in Matlab:

%Plotting funzione ROUND(xn) per random=0<xn<1 probabilità P=1/2 di round=1,0 - ALG.12 - %(implementata per la v.a. del Random Walks) %utilizzo del generatore di numeri pseudo-casuali secondo metodo moltiplicativo lineare congruenziale (LCG) clear,clc,close all t=100 %-----------------------inizializzazione costanti del generatore LCG seme=100*sum(clock); %seme sempre diverso ad ogni Run m=2147483647; %modulo a=16807; %moltiplicatore c=0; %metodo congruenziale misto per c=!0, metodo puramente moltiplicativo lineare congruenziale per c=0 %----------------------- x=zeros(1,t); %vettore del tempo in cui definire la probabilità p=1/2 che round(xn) sia 0 o 1 x(1)=seme; for i=1:t x(i+1)=mod(a.*x(i)+c,m); %funzione modulo secondo metodo congruenziale misto x(i)=(round(x(i)./m)); %rapporto vettoriale per numero pseudo-casuale end plot(x,'o-k'); title('v.a. uniformi yn=round(xn)'),xlabel('t'),ylabel('yn'),axis([0 t -.5 1.5]),grid on

L’arrotondamento della sequenza uniforme 10 << nx restituisce ancora una sequenza

uniformerete distribuita, definita da 1;0 == nn yy per 100=t stati generati:

Fig. 7 Esito uniforme di Round(xn) nel processo di Random Walks, per t=100

Anche l’equazione del random Walks è ricorsiva e per tanto il valore attuale nx , sommato

all’incremento inc=1 o decremento dec=-1 (in base al Round), ritorna all’ingresso.

Page 71: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 71 -

Con riferimento alla E.1 del capitolo, l’equazione del random walks semplice (privo di

barriere) può essere pertanto descritta:

E.7 nnn kxx += −1 con ⎩⎨⎧−

=1

1nk

Tornando in alg. n°11, il processo di barriera dei passi è definito all’interno della ricorsione.

In pratica se la variabile bxn > interviene un incremento unitario della stessa nx per

bxn > o un decremento unitario per bxn −>− . Nel caso specifico 10=b . Quindi

i valori generabili dal random Walks saranno compresi nell’intervallo [ ]10,10− , a meno

di una trasformazione vettoriale del dominio [ ] ] [nn,10,10 −→− .

Di seguito si riportano i risultati grafici normali e interpolati, definiti dai rispettivi tabwrite:

Fig. 8 V.a. discrete ed interpolate e passi corrispondenti del Random Walks

Page 72: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 72 -

A sinistra vengono visualizzati gli esiti indipendenti inerenti al generatore congruenziale,

mentre a destra è possibile valutare gli stati dipendenti della catena di Markov. Il subpatch

“pd formatTab”, visto in precedenza, fornisce la formattazione dei grafici. L’interpolazione

dei valori (grafico in basso a sinistra) è operata dal subpatch “pd fn_Mean”; in pratica un

sistema FIR L-P per vettori numerici, simile a quello visto in precedenza:

Anche in questo caso, tramite il subpatch “pd AUDIOTEST”, sono stati condotti alcuni

esperimenti acustici inerenti il controllo di un parametro particolare di sintesi22.

In linea generale il processo di “camminata lungo la retta” è utile nel definire variazioni

continue di parametri macro e/o microstrutturali inerenti la sintesi del suono.

3.2.2 Applicazione del moto Browniano di particelle La logica alla base del Ranom walks può essere sfruttata per la simulazione al calcolatore

di un moto Browniano ideale. Il moto Browniano23, scoperto da Robert Brown (1775.1858)

22 Si vedano gli esempi sonori allegati. 23 Il moto delle particelle immerse in un fluido può essere di seguito riassunto: Quando un fluido è in equilibrio termodinamico, stato in cui le variabili termodinamiche sono costanti nel tempo, le molecole che lo compongono sono in movimento (nell’ordine del micrometro). Disponendo nel fluido particelle leggere, di massa visibile, è possibile notare che ogni una di esse segue un moto disordinato, appunto il moto detto Browniano. Tale moto è causato dal gran numero di eventi di urto, detti scattering, subiti dalla particella da parte delle molecole dello stesso fluido in cui è immersa. Il modello matematico del moto Browniano, in tempo continuo, è definito dal processo di Wiener, il quale attua incrementi indipendenti per variabili di tempo indipendenti.

Page 73: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 73 -

nel 1828 e formalizzato in seguito da Albert Einstein (1879-1955), fornisce l’evidenza fisica

dell’esistenza delle molecole, e quindi dell’atomo. In tal sede il modello algoritmico può

essere ricondotto ad un insieme di processi Markoviani in parallelo, dove il singolo

Random Walks implementato rappresenti una traiettoria singola nello spazio. Infatti il moto

ideale, di una particella immersa in un fluido, è caotico e tridimensionale. Nel caso

monodimensionale le proprietà della camminata Browniana si riducono a quelle del

Random Walks standard: moto senza barriere o con barriere di riflessione o di

assorbimento. Sia la particella x , posizionata ad es. in 0=nx al tempo 0=t , si avrà

ad ogni istante uno spostamento equiprobabile ed indipendente (dal passo precedente)

pari a 11, −+ nn xx . Si dimostra che la probabilità ip che la particella raggiunga il punto

nxn = , in caso di moto con barriere e numero di spostamenti ±∞=n , è 1=ip .

Stabilendo anche che, ovunque sia la barriera si è certi che la particella la raggiunga.

Indicando con { }( )ixppi == la probabilità24 che la particella raggiunga la posizione

ix = si ha, come nel caso del Random Walks:

E.8 ( )112

1−+ += iii ppp

Dove si definisce la posizione di ix = solo per 1,1 −=+= ixix . Inoltre la

posizione iniziale è data da 10 =p (distribuzione di probabilità iniziale) con probabilità

24 In base alla teoria della probabilità discreta ci si può basare sulle formalizzazioni inerenti le variabile aleatoria discreta (v.a.) X , caratterizzata dall’insieme di valori Nixi ,...,1, = (tale che N sia

infinito) con probabilità di assunzione dei valori { }( )ii xXPp == e funzione di probabilità ( ) ii pxf = .

Quest’ultima soddisfa appunto ( ) 11

=∑=

N

iixf , dove ad X si associa il valor medio ( ) i

N

ii xxf∑

=

=1

µ e la

varianza ( ) ( )∑=

−=N

iii xfx

1

22 µσ .

Page 74: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 74 -

consecutive ipi ∀=1 . Ovviamente il metodo lineare congruenziale è in tal caso alla

base della generazione di v.a., per cui sarà sempre implicita una distribuzione uniforme.

Come nel Random Walks, il valore atteso del numero di passi n , necessari a

raggiungere le barriere, è 2n . Si propone di seguito una simulazione in Matlab del Moto

Browniano in tre dimensioni, privo di barriere:

%--------------------------------------------------------------------------------------- % MOTO BROWNIANO o Brown Walks (in 3D) - ALG.13 - % simulazione del moto (n passi unitari) di una particella % immersa in un fluido. %basato su equazioni del generatore lineare congruenziale %(tre generatori per definire moto su assi x y z) %--------------------------------------------------------------------------------------- clear,clc,close all n=10000; %numero di passi del brown wolks x=zeros(1,n); %inizializza vettori sequenze moto browniano y=zeros(1,n); z=zeros(1,n); %--------------------------------inizializza costanti generatore lineare congruenziale iseed1=.5; %variazione del seme iseed2=.2; iseed3=.7; %--------------------------------seme definito dal clock di sistema seme1=(100*sum(clock))*iseed1; %seme sempre diverso ad ogni Run (sum: somma di matrici) seme2=(100*sum(clock))*iseed2; seme3=(100*sum(clock))*iseed3; %--------------------------------costanti del metodo congruenziale m=2147483647; %modulo a=16807; %moltiplicatore c=0; %metodo congruenziale misto per c=!0, metodo puramente moltiplicativo lineare congruenziale c=0 %--------------------------------vettore monodimnsionale in cui definire le v.a. xg1=zeros(1,n); xg2=zeros(1,n); xg3=zeros(1,n);

xg1(1)=seme1; %valore seme-n X0 definito come indice del vettore del random xg2(1)=seme2; xg3(1)=seme3; %-----------------------definizione passi del moto browniano (per ogni xn) %inc=1; for i=1:n-1 %-----------------------------definixione delle xn+1 xg1(i+1)=mod(a*xg1(i)+c,m); %funzione modulo secondo metodo congruenziale misto xg1(i)=xg1(i)./m; %rapporto vettoriale per il 1° vettore pseudo-casuale xg2(i+1)=mod(a*xg2(i)+c,m); xg2(i)=xg2(i)./m; xg3(i+1)=mod(a*xg3(i)+c,m); xg3(i)=xg3(i)./m; %-----------------------------definizione del moto x(i+1)=x(i)+1-2*round(xg1(i)); %vettori con passo indipendente (random walks) y(i+1)=y(i)+1-2*round(xg2(i)); z(i+1)=z(i)+1-2*round(xg3(i)); end plot3(x,y,z, 'k'); title('simulazione del moto Browniano di particelle') xlabel('x');,ylabel('y');,zlabel('z');

Nell’algoritmo si possono notare metodi ricorsivi di Random Wolks ridotti ad una somma

ed una differenza e funzione di arrotondamento Round. In linea generale sono stati

Page 75: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 75 -

implementati tre LCG, con prodotto del seme (differenziato in base al clock del sistema)

per un moltiplicatore Iseed, che inizializza la sequenza di 0x in modo diverso per ogni

generatore pseudo-aleatorio. I vettori x,y,z conterranno i valori della sequenza Markoviana

mentre xg1,xg2,xg3 le corrispondenti v.a. ottenute tramite equazione lineare dell’LCG.

Il Brown Walks (o moto Browniano) così definito è quindi una “matrice tridimensionale”.

I seguenti grafici riportano il risultato di una serie di test condotti per n passi effettuati:

a)

b) c)

Fig. 9 Moto Browniano in 3D con a) N=2000, b) N=4000, c) N=10000

Page 76: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 76 -

Per quanto concerne le applicazioni per il tempo reale è possibile implementare, in Pure

Data, una versione dell’algoritmo del moto Browniano adottando tre Random Walks

monodimensionali a barriere riflettenti. In pratica si ci si basa sul metodo proposto nell’alg.

n°13, riguardante la definizione del moto pseudo-casuale di particelle su singoli assi,

aggiungendo margini di barriera. Di seguito si riporta il modello complessivo contenente

alcune sotto funzioni ottimizzate: - ALG.14 -

E’ possibile notare i tre generatori di sequenze Markoviane definiti come subpatch

“pd RndWalksV0.3”, da impiegare come funzioni o astrazioni. Ponendo il confronto con

l’alg. n°11, tali sottoprogrammi possono generar e sequenze di v.a. indipendenti e diverse

per ogni generatore. Ai loro ingressi, da destra a sinistra, ricevono gli argomenti

riguardanti l’aggiornamento della variabile attuale Xn, la definizione del variatore del seme

ed il ritardo in secondi da porre all’oggetto interno “pd fn_mean”. All’uscita degli stessi

oggetti è possibile usufruire di una sequenza Markoviana discreta (outlet destro) ed

Page 77: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 77 -

interpolata (outlet sinistro). Il metodo di interpolazione è analogo a quello dell’Algoritmo

n°11 trattato in precedenza. Si riporta il c ontenuto di “pd RndWalksV0.3” dell’ alg. n°14:

Si adotta in tal caso un incremento/decremento ridotto ad un prodotto e una somma del

risultato di arrotondamento all’intero più vicino.

L’attenzione ricade anche sul nuovo subpatch “pd randLCGv0.3”, sostanzialmente

derivato dagli alg. n°8 e 9 anche se sono stati effettuati alcuni miglioramenti. In esso è

presente l’oggetto time che permette di differenziare la serie di v.a. per ogni nuovo run del

software. Dovendo inoltre caricare più generatori “LCG” contemporaneamente, sia per il

Page 78: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 78 -

Random Walks e per il Brown Walks che per la struttura intera del brano, è stato

predisposto un parametro iseed che permette di produrre semi x0 differenti per ogni

generatore y, similmente all’ alg. n°13. L’interno di “pd randLCGv0.3” è di seguito riportato:

Ogni subpatch è stato privato di ogni potenziale causa di errore di computazione25.

Bisogna tuttavia riconoscere che, adottando parametri diversi da quelli previsti, gli oggetti

scritti in tal sede possono condurre a risultati non corretti, molto più facilmente di quanto

25 Ad esempio in Pure data, definire oggetti send/receive multipli genera un errore di scrittura della variabile (che da locale viene inviata globalmente). Al contempo definire buffer multipli, con stesso nome, comporta un errore di sovrapposizione delle allocazioni di memoria.

Page 79: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

Parte II – Processi stocastici per il controllo dei parametri compositivi Stefano Silvestri

Rev. 2 A.A. 08/09 - 79 -

possa avvenire con funzioni di libreria, scritte tramite linguaggio di più basso livello.

Dal punto di vista della composizione algoritmica il Brown Walks, similmente al processo

Markoviano precedentemente esposto, può essere utile nel definire variazioni continue di

variabili macro e/o microstrutturali, ma al contempo è interessante una sua

implementazione per mettere in relazione più parametri tra loro, rendendoli funzione di tre

spostamenti dimensionali indipendenti (ad es. altezza e spazio o ampiezza e spazio ecc.).

Applicazioni tradizionali di controllo26 dello spazio di diffusione quadrifonica prevedono

l’utilizzo di un asse del Brown Walks per la definizione del moto longitudinale, dove l’altro

asse orizzontale definisce il moto laterale. L’asse verticale può essere legato ad un altro

parametro previsto dall’algoritmo di spazializzazione27. Per semplificare è possibile

attribuire ad ogni asse un qualsiasi parametro che tragga vantaggio dalla sequenza

Markoviana, di caratteristiche ben note. Si riportano di seguito alcuni test di generazione

effettuati con l’algoritmo n°14:

Fig. 10 Esito del Brown Walks nel tempo in base agli stati dei Random Walks

Si rimanda a fonti disponibili in letteratura per una più completa e dettagliata definizione

formale dei processi stocastici in generale ed applicati alla composizione musicale.

26 Si demanda all’APPENDICE B per un esempio [n°17] di controllo di tre parametri audio, ampiezza, frequenza e pan stereo, resi dipendenti dal moto Browniano tridimensionale. Per praticità non si riporta l’algoritmo, chiamato “PD AUDIO TEST”, in allegato comunque alla tesi nel “Moto Browniano_semplice.pd”. 27 Algoritmi particolari di spazializzazione tridimensionale, come quelli basati sulla riverberazione o su filtri HTRF, ecc., prevedono ulteriori parametri di spostamento controllabili.

Page 80: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 80 -

4.0 “STUDIO SONORO III”, basato su Mult iplexing discreto e processi stocastici Il progetto compositivo di seguito presentato è frutto di un primo studio sulle possibili

applicazioni musicali della sintesi per wavetable multiplexing la quale, come esaminato

in precedenza, permette la rappresentazione di diverse morfologie spettrali in base

alla modifica dei parametri di generazione e al contenuto delle funzioni in tabella.

Si dimostra quindi che è possibile comporre diverse strutture sonore interessanti, forme

organizzative di proprietà microdinamiche che possono sovrapporsi e susseguirsi per

creare particolari gesti di carattere più o meno complesso.

Le sperimentazioni qui condotte sono state effettuate attraverso modelli di multiplexer

discreti a 2 e 3Bit, già trattati in precedenza. L’azione su tali modelli avviene tuttavia ad

uno stato fondamentale, nel senso che l’indagine delle strutture sonore, potenzialmente

musicali, si svolge secondo la gestione di parametri di base riguardanti la frequenza di

Multiplexing (fmux), quella dei Wavetable (fDn), le rispettive ampiezze e la scelta del

contenuto armonico delle tabelle da commutare. In definitiva non vengono introdotti nuovi

parametri di gestione, concentrando l’attenzione sul potenziale definito dal processo di

commutazione-finestratura1.

In generale ampia attenzione è stata rivolta alle note condizioni2 di generazione

ncm TT ≥ , ncm TT < , sfruttabili per sperimentare eventi sonori di carattere differente.

Mediante tali modalità è possibile sintetizzare forme spettrali caratterizzate da “zone” di

una certa dinamica tempo-frequenziale ricorrente. L’osservazione di queste zone, di

1 Sono state effettuate operazioni semplici, basandosi su pochi controlli di generazione sonora, proprio per analizzare in modo coerente la risposta dei modelli algoritmici al variare dei coefficienti. Una volta attesto caratteristiche tempo-spettrali particolari si è cercato di marcarne le dinamiche attraverso metodi pseudo-aleatori. 2 Si ricorda che il caso ncm TT < è un’ opzione particolare in cui il modello di generazione espone i

suoi limiti. In altre parole tale condizione è utile per mostrare una serie di artefatti, anche compositivamente interessanti, dovuti alla commutazione di frazioni di periodo nn TQ < , dove la forma e risoluzione di

ncm TTT <=λ divine una parte critica per la presenza di rumore estraneo alle funzioni in wavetable.

Page 81: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 81 -

maggior interesse per la composizione, è coadiuvata dai processi stocastici già definiti in

precedenza. Tali processi permettono, tra l’altro, di diversificare dinamiche frequenziali

ridondanti.

In linea generale lo “Studio sonoro III”, similmente ai precedenti studi musicali, pone il suo

obbiettivo nella pura ricerca sonora mediata dall’utilizzo di sistemi di sintesi standard (e

lineari) e/o non standard (lineari o non lineari). Per l’impiego della sola sintesi digitale il

lavoro potrebbe essere superficialmente ricondotto allo “Studio sonoro I”3, in cui vengono

indagate, tra l’altro, strutture musicali ricavate a partire dalla sintesi per modulazione di

ampiezza e ad anello. Per quanto concerne l’acquisizione di particolari segnali sonori,

maturati attraverso tecniche di generazione sperimentali, ci si potrebbe ricollegare “Studio

Sonoro II”4, in cui l’indagine musicale è condotta tramite il “GSC” (generatore di segnali

complessi”), un sistema analogico auto-costruito che permette di elaborare segnali

complessi grazie ad un processo di modulazione simile alla PWM, ed alla modulazione di

triggher.

Non è un caso che tali lavori, assieme ad “Ascolto strutturato”5, abbiano un punto di

collegamento con “Studio Sonoro III”, nel quale stavolta si tenta di auto-costruire una

tecnica di sintesi digitale, basata su multiplexing vettoriale, protendendo verso una

valutazione del potenziale sonoro applicabile in termini compositivi.

4.1 Struttura generale e modalità di lavoro Il brano è strutturato in due principali macrostrutture di eventi da diffondere in

contemporanea. Una prima parte per supporto, composta da registrazioni di segnali

3 Si veda “studio sonoro I” (11/07/07), per “AM”,”RM”, con Numeri Primi e Primi “Gemelli” (stereo 2.1 e quadrifonica 4.1). 4 Si veda “studio sonoro II” (07/10/09), per generatore di segnali analogico, funzioni randomiche ed algoritmi di automazione mediante analisi d’inviluppo e controllo quadrifonia (Versioni quadrifoniche 4.0). 5 Lavoro compositivo del 10/02/09 in cui sono stati condotti primi esperimenti, tra l’altro, con semplici DC Motor sfruttati per generare attrito a partire dal contatto del rotore sulle corde del pianoforte. Inoltre la manipolazione degli eventi sonori registrati (con microfoni “piezo-scopi” sperimentali) è avvenuta mediante versioni di base del programma “Auto Score”, per la generazione automatica (pseudo-aleatoria) di partiture.

Page 82: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 82 -

effettuate da modelli di multiplexer a 2 e 3Bit, per il tempo reale e differito. Una seconda

parte sovrastante è elaborata e performata in tempo reale tramite l’algoritmo n°6 del

paragrafo 2.2.2 [fig. 25], il multiplexer a 3Bit esaminato in precedenza. Gli algoritmi sfruttati

per la parte in tempo differito, e quello per la parte in tempo reale, vengono controllati

mediante processi stocastici attuati in diverse modalità di implementazione.

Gli eventi ottenuti tramite i modelli a 2Bit, implementati in C-Sound, sono il frutto di

sperimentazioni condotte sia in modo deterministico che stocastico, attraverso funzioni

pseudo-casuali utili alla modifica dei coefficienti di generazione. In quest’ultimo caso si

agisce con un apposito programma di scrittura delle partiture, illustrato in seguito.

La prima modalità di lavoro è stata appunto quella di sperimentare diversi coefficienti e

parametri in modo euristico, demandando ad uno step successivo la scelta dei possibili

range di escursione numerica per il controllo tramite variabili aleatorie. Il lavoro di controllo

ha quindi richiesto l’introduzione di semplici mappe vettoriali, o trasformazioni lineari, per

adattare offset e intervalli di variazione specifici.

Parte dei macroeventi così ricavati, assieme ad altri eventi sintetizzati in tempo reale, sono

stati in seguito strutturati in reti di buffer in Pure Data, nel quale avviene principalmente il

controllo stocastico della spazializzazione. In base a scelte compositive la gestione dello

spazio d’ascolto è definita anche in modo determnistico (DT), ed in ogni caso essa può

agire nello spazio quadrifonico e/o sul fronte stereo.

In linea generale nel brano, attraverso stesse modalità di elaborazione, vengono

sintetizzate due principali macro-categorie spettrali di propriètà ben diverse. Una è definita

dal Multiplexing sequenziale di tabelle di contenuto puramente armonico, l’altra è definita

mediante lo stesso procedimento attuato per segnali tabulati pseudo-impulsivi. Dalla prima

si ottengono fasce sonore in cui, in base alla distanza delle componenti interne, possono

ricorrere battimenti di primo ordine (e secondo) ed effetti di filtraggio dovuti alla

sovrapposizione di periodi t∆ sfasati (si veda par. 2.1). Nel secondo caso può sussistere

Page 83: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 83 -

un effetto di filtraggio analogo, prodotto dalla sovrapposizione di irregolarità istantanee

impulsive, distribuite temporalmente dal processo di commutazione.

Per praticità la caratterizzazione del materiale sonoro può essere intesa in termini di

densità temprale e range spettrale6. In tal senso si hanno:

• Strutture ad alta frequenza, tonico-armoniche/ inarmoniche.

• Fasce sonore tonico-armoniche/inarmoniche di media frequenza.

• Strutture toniche a basa frequenza.

• Spettri di rumore o segnali inarmonici a bassa frequenza.

• Microstrutture pseudo-impulsive o pseudo-granulari più o meno dense.

• Spettri pseudo-granulari di media densità ad alta frequenza.

Ogni macrostruttura, che comprende al suo interno queste sonorità, presenta dinamiche

tempo-frequenziali ben discriminabili, insite nel processo di elaborazione per multiplexing

e accentuate a partire da modelli Markoviani basati su LCG. In particolare l’escursione

delle frequenza di multiplexing può scorgere intervalli di microaccelerazione e

decelerazione della modulazione.

Si rende noto che le macrostrutture quadrifoniche, sintetizzate per la parte in tempo

differito, sono state ridisposte attraverso editor wave multitraccia.

4.1.1 Controllo stocastico degli eventi Come affermato in precedenza, alcuni macroeventi, ricavati con modelli per il tempo reale

e differito, sono stati strutturati in reti di buffer in Pure Data per il controllo in real time della

spazializzazione e della sequenza di sovrapposizione. Di seguito si rappresenta lo schema

di principio dell’algoritmo adibito al caricamento dei macroeventi sonori, sintetizzati a loro

volta mediante wavetable multiplexing in C-Sound (a 2Bit) e Pure Data (2-3Bit):

6 Modalità di classificazione del materiale sfruttata all’atto della composizione degli stessi eventi sonori.

Page 84: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 84 -

Fig. 1 Schema di principio dell’algoritmo di lettura e gestione dei macroeventi

In ogni buffer sono stati caricati eventi di lunghezza differente7, scelti appositamente per

essere introdotti all’interno di un certo dialogo compositivo. La sequenza di attivazione di

questi avviene in modo automatico. In altri termini il buffer attuale richiama lo start di una o

più tabelle successive, mediante un controllo deterministico dello stato di durata (ctrl

status). Tale modalità permette di ricavare sovrapposizioni multiple, che producono in

maniera automatica un certo aumento della densità spettrale (e temporale nel caso si

adottino tabelle impulsive o irregolari).

Il modulo di gestione dello spazio [Fig.1], come quello opzionale di filtraggio comb, è

rappresentato (in tratteggio) come un blocco complesso intercambiabile, che racchiude al

suo interno la formula di diffusione quadrifonica controllata da sistemi basati su generatori

7 I modelli di sintesi, che hanno generato tali eventi, sono fondamentalmente quelli analizzati lungo la tesi, anche se alcuni interventi di ottimizzazione ne modificano leggermente la struttura. Bisogna inoltre considerare l’introduzione dei sistemi stocastici discreti per la variazione dei parametri spettrali quali: ampiezza, frequenza dei segnali, frequenza di multiplexing delle wavetable. La modifica dei coefficienti, entro range di variazione continui, è ottenuta mediante Random Walks e Moto Browniano di Particelle. Inoltre sono state adoperate tecniche, già esaminate lungo la tesi, per l’interpolazione delle sequenze di v.a. tramite sistemi FIR, permettendo ai singoli LCG di adoperarsi nel controllo.

Page 85: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 85 -

lineari congruenziali8. Si riportano di seguito le semplici formule di spazializzazione

adottate negli algoritmi:

E.1 ( ) varghvalft vkykvy =−= ;1 con ( ) [ ]1,0,|10 →<< dskva

Dove con rghlft yy , si definiscono i segnali diretti ai diffusori tale che con

rghlfts yyq = sia definita una certa differenza di spostamento9. Il vettore di ingresso

v è quindi modulato dal vettore casuale vak in cui gli estremi dell’intervallo di v.a.

subiscono una trasformazione lineare in dominio chiuso [ ]1,0 . Nel caso di controllo della

diffusione quadrifonica si avrà analogamente:

E.2 ( ) ( ) varghvalftvargtvalft kyykyykyykyy ==−=−= 4321 ;;1;1

Dove con ny si intende l’ordine dei diffusori.

Si rendo noto che, in sede di sperimentazione, la gestione stocastica dei parametri di

spazializzazione in tempo reale è utile per valutare la mancanza di correlazione degli LCG.

In casi particolari di spostamento deterministico, la spazializzaizone avviene in circolo ed è

formalizzabile con:

E.2 wy +⎭⎬⎫

⎩⎨⎧

⎥⎦⎤

⎢⎣⎡⋅⎥⎦

⎤⎢⎣⎡= )cos(

2

1sin)sin(

2

1cos1 βπαπ

wy +⎭⎬⎫

⎩⎨⎧

⎥⎦⎤

⎢⎣⎡⋅⎥⎦

⎤⎢⎣⎡= )cos(

2

1sin)sin(

2

1sin2 βπαπ

8 La tipologia di spostamento è formalmente lineare in quanto definita da una distribuzione puramente uniforme nel tempo. 9 Si rende noto che la gestione della differenza di ampiezza, su due diffusori “pseudo-stereo”, è

anche descrivibile mediante semplice sistema ( )⎩⎨⎧

<<−=

=10;

12

1 kkAA

kAA

v

v, dove nA riassume l’ampiezza

dei segnali di ingresso vA .

Page 86: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 86 -

wy +⎭⎬⎫

⎩⎨⎧

⎥⎦⎤

⎢⎣⎡⋅⎥⎦

⎤⎢⎣⎡= )cos(

2

1cos)sin(

2

1cos3 βπαπ

wy +⎭⎬⎫

⎩⎨⎧

⎥⎦⎤

⎢⎣⎡⋅⎥⎦

⎤⎢⎣⎡= )cos(

2

1cos)sin(

2

1sin4 βπαπ

Dove ( ) ( )βα cossin sono appunto due angoli sfasati di 180° che definiscono il

controllo di rotazione, e w è un coefficiente di off-set 10 << w che permette di

definire il raggio r della circonferenza, dal centro 0=r al diametro rd 2= .

Il controllo dei parametri di sintesi, negli algoritmi di generazione, avviene mediante

analoghi sistemi stocastici, dove ogni vettore di v.a. subisce una serie di trasformazioni

lineari per il passaggio delle nx ad intervalli determinati. Si definiscono quindi range di

escursione, con margini mini e massimi, sperimentati a partire dal riconoscimento di zone

spettrali particolarmente dinamiche. Di conseguenza, per le variazioni di ampiezza e

frequenza, si sfrutta l’azione interpolata del Random Walks e del Brown Walks, mentre in

alcuni casi si adottano direttamente LCG e sistemi FIR per l’interpolazione10 delle nx .

Il sistema comb è stato sfruttato in alcuni casi sia per prolungare dinamiche nel tempo,

adottando un N esteso, che per enfatizzare alcuni picchi spettrali, con N contenuto.

Per la sua equazione di demanda in [2b, 3b].

Il modello di multiplexer a 3 Bit, con il quale si definisce la parte del discorso sonoro in

tempo reale, può essere controllato deterministicamente (DT) senza restrizioni di azione, a

patto che si rispettino i preset di coefficienti prestabiliti nell’algoritmo. La variazione dei

parametri è comunque in parte stocastica, vale a dire che se il risultato sonoro non viene

controllato esso sarà comunque variabile in breve misura (nella fmux, fn, An).

10 Secondo media aritmetica tra campione precedente e successivo della sequenza. Per maggiori si demanda alla bibliografia.

Page 87: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 87 -

4.1.2 Ottimizzazione del Wavetable Mu ltiplexing per il tempo differito Le elaborazioni sonore ottenute in tempo differito sono state effettuate con modelli

ottimizzati per la sintesi di segnali di lunga durata. Sul modello di Alg.4 [pag. 37] è stato

sviluppato un nuovo algoritmo di multiplexer a 2Bit, il quale risolve ulteriormente il

problema di shift delle fasi (par. 2.1.2), tra il periodo di finestratura e periodi di

commutazione. In esso si adotta una soluzione che prevede un secondo fasore per il

richiamo degli indici dei vettori di commutazione. Tale algoritmo rende notevolmente più

stabile l’azione nel tempo di λT rispetto muxT , i quali vengono definiti da operatori

differenti11. Per limitare notevolmente errori (non voluti) di generazione, è opportuno

adottare l’opcode phasor anche per il richiamo dei punti della funzione di finestratura,

come mostrato di seguito:

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; Algoritmo per la parte in tempo differito di Studio Sonoro III - Alg. 15 - ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: <CsoundSynthesizer> <CsOptions> ;-+P -W -o StWavetableSimulatedMultiplexPhasor3.wav </CsOptions> <CsInstruments> sr = 44100 kr = 44100 ksmps = 1 nchnls = 1 ;2 (mono for patch in pd) instr 1 ;-------------------------------------------------------------------------------------------------------------- ; Sintesi Wavetable Switching ; mediante MULTIPLEXER combinatorio a 2Bit selezione ; FASORE PER LA TABELLA INDIRIZZI con FASORE per la tabella finestratura ; (freq. fasore finestratura iDN volte freq. fasore per multiplex) ;-----------------------inizializzazione a 0 delle variabili di multiplex kD0 = 0 kD1 = 0 kD2 = 0 kD3 = 0 iDN = 4 ;numero di tabelle da multiplexare iamp0 = ampdb(p4) ;amp wave look-up idist = p6 ;distanziatore bande freq. segnali D1,D2,D3 ;-----------------------------------------------INGRESSO DATO COSTANTE da porre in sucita iDcst = 1 ;-----------------------------------------------INGRESSI SELEZIONE(selezione dinamica degli ingressi da D0 a Dn) ifmux = p7 ifmux2 = p8 ifmux3 = p9

11 Alcuni test di generazione condotti in C-Sound sollevano il problema della perdita di sincronia tra oscillatori wavetable, scaturita da errori prolungati dello step di incremento. Per chiarimenti ulteriori si veda il capitolo 2.0 e l’appendice A.

Page 88: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 88 -

kglissmx linseg ifmux,p3/2,ifmux2,p3/2,ifmux3 ;glissando frequenza di selezione kindx phasor kglissmx ;indice vettori secondo fasore da 0 a 1 ;-----------------------------------------------;richiamo indirizzi binari in parallo kA table kindx,1,1 ;interpretazione dell'indice non-row kB table kindx,2,1 ;(poteva anche essere row dato che la ;funzione usata va da 0 a 1) ;-----------------------------------------------MULTIPLEXING con porte logiche (seleziona iDcst per moltiplicare vettori differenti) ;operazioni NOT secondo calcoli kNOTA = abs((kA*1)-1) ;se kA=0 : 0*1-1=-1 abs 1 ,;se kA=1 : 1*1-1=0 abs 0 kNOTB = abs((kB*1)-1) ;se kB=0 : 0*1-1=-1 abs 1 ,;se kB=1 : 1*1-1=0 abs 0 ;-------------------------------;operazioni di PORTA AND 3 ingressi kD0 = iDcst*kNOTA*kNOTB ;porta & 1 kD1 = iDcst*kB*kNOTA ;porta & 2 kD2 = iDcst*kA*kNOTB ;porta & 3 kD3 = iDcst*kA*kB ;porta & 4 ;-----------------------------------------------DN oscillatori multiplicati itab0 = p10 ;wave look-up itab1 = p11 itab2 = p12 itab3 = p13 ifD0 = p5*idist ;freqeunza oscillatori ifD1 = ifD0*idist ifD2 = ifD1*idist ifD3 = ifD2*idist aD0 oscili iamp0,ifD0,itab0 aD1 oscili iamp0,ifD1,itab1 aD2 oscili iamp0,ifD2,itab2 aD3 oscili iamp0,ifD3,itab3 ;-----------------------------------------------finestratura del segnale multiplexato kindxfin phasor kglissmx*iDN ;deifnizione di un fasore per la lettura della kwndw table kindxfin,99,1 ;tabella finestratutra ;kwndw oscili 1,kglissmx*iDN,99 ;fwndw=ifmux*iDN (quattro finestre per 1 periodo di multiplex Tmux=1/fmux) e ;deve variare proporzionalmente al variare della freqeunza di mux ;-----------------------------------------------passaggio in uscita (selezione del vettore segnale) ;passerà in uscita solo il vettore confermato meditante kDnn=1 ;I0 I1 I2 I3 amultiplex = (aD0*kD0)+(aD1*kD1)+(aD2*kD2)+(aD3*kD3) ;operazione di porta OR 4 ingressi aI = amultiplex*kwndw ;astabil balance ;elimina instabilità di ampiezza ;aflt tone aU, 22050 ;filtro L-P kenv oscili 1,1/p3,p14 ;Inviluppo kenvs = (kenv-.001)*1/(1-.001) ;mappa o trasformazione spazio vettoriale [.001,1]->[0,1], (gen5) aU = aI*kenvs ker linen 1,.001,p3,.001;1 ;Inviluppo trapezoidale elimina errori di termine inviluppo aUer = aU*ker outs aUer endin </CsInstruments> <CsScore> ;-----------------indirizzi di selezione 2Bit (grandezza vettori n^2=>DN) ;decimale:0 1 2 3 f1 0 4 -2 0 0 1 1 ;vettore A 1°stringa di bit f2 0 4 -2 0 1 0 1 ;vettore B 2°stringa di bit ;-----------------vettore per accedere in sequenza ai bit f3 0 4 7 0 4 1 ;rampa di 4 punti, indici di lettura da 0 a 3 decimali ;-----------------------------------------------tabelle da multiplexare ;f4 0 32768 10 1 ;sin ;f5 0 32768 10 1 0 1 ;f6 0 32768 10 1 0 1 0 0 1 ;f7 0 32768 10 1 .5 .25 ;--------------------------tabelle per pseudo-granulare f4 0 32768 7 .001 16283 .001 100 1 100 .001 16283 .001 ;gradino unitario f5 0 32768 5 .001 16283 .001 100 .5 100 .001 16283 .001 ;rettangolare exp positiva f6 0 32768 7 .001 16283 .001 100 -.2 100 .001 16283 .001 ;gradino negativo f7 0 32768 5 .001 16283 .001 100 -1 100 .001 16283 .001 ;gradino negativo ;f8 0 8192 08 0 2048 1 2048 0 2048 -1 2048 0 ;-----------------------------------------------funzione glissando (da 40 fino al triplo) f8 0 32768 -7 0 32768 1 ;-----------------------------------------------finstratura zerocrossing tabelle mux ;inviluppo per ogni segnale multiplexato f99 0 8192 08 0 1500 .025 2596 1 2596 .025 1500 0 ;gaussiana ripida f100 0 32768 20 1 ;-----------------------------------------------funzioni inviluppo f50 0 32768 8 .001 31768 1 1000 .001 ;curva inizio lento f51 0 32768 8 .001 100 .5 31668 1 1000 .001 ;curva iniziale breve corpo esteso f52 0 32768 5 .001 26768 .7 1000 1 5000 .001 ;esponenzile inizio lento

Page 89: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 89 -

f53 0 32769 7 .001 1000 .5 10000 1 11768 1 10000 .001 ;curva iniziale breve corpo esteso lineare f54 0 32768 7 .001 500 1 10000 1 21268 1 1000 .001 ;curva iniziale breve corpo esteso lineare f55 0 32768 5 .001 21768 .05 10000 1 1000 .001 ;esponenzile lento release impulsivo f56 0 32768 5 .001 100 1 32668 .001 ;release esponenziale lento ;-----------------------------------------------New env func. (macrostrutture tempo-dinamiche) ;f50 0 32768 5 .001 32768 1 ;f51 0 32768 5 1 32768 .001 ;f52 0 32768 08 .001 32768 1 ;f53 0 32768 06 1 32768 .001 ;f54 0 32768 7 .001 32000 .2 768 1 ;f55 0 32768 5 .001 16384 1 16384 .001 ;f56 0 32768 08 .001 16384 .5 8192 1 8192 .001 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 ;nf atk dur iamp0 ifD0 idist ifmux ifmux2 ifmux3 itab1 itab2 itab3 itab4 ienv /* ;------------------------crescendo1 ;turbolenza 1 i1 0 50.3 80 90 .91 80 81 82 4 5 6 7 i1 0 50.3 80 90 .92 80 83 81 5 4 6 7 52 i1 37 20 70 90 .9 82 80 83 5 4 7 6 . i1 37 20 70 90 .9 81 84 80 7 5 6 4 50 i1 41 30 70 90 .92 75 82 90 4 5 6 7 . i1 41 30 70 90 .89 82 84 91 5 4 7 6 53 i1 44 60 83 90 .93 80 95 90 4 5 6 7 . i1 44 60 83 90 .93 83 95 87 4 5 6 7 53 i1 74 .5 80 90 .6 80 96 80 4 4 4 4 53 */

Con tale algoritmo sono state sperimentate molte strutture sonore, incluse nella

composizione, impiegando vari parametri deterministici. Inoltre si è affidato ad un ulteriore

programma il compito di scrivere note con campi (o parametri) pseudo-randomici.

4.1.3 Programma “RandomScore” per la gestione dei parametri di note

Il programma seguente permettere di scrivere partiture per elaborazioni con l’algoritmo

n°15. Al runnig è possibile inserire una serie di impostazioni specifiche quali, il numero di

eventi (o note) da generare, la loro durata, l’ampiezza minima e massima, ed altri range

entro i quali definire le frequenza delle wavetable e del multiplexing. In automatico il

programma seleziona le tabelle di inviluppo, tra quelle disponibili, e definisce la sequenza

o sovrapposizione delle note, costruendo eventi macrostrutturali di densità variabile.

Il dialetto BASIC utilizzato ha richiesto la creazione di alcune funzioni non presenti in

libreria, come ad es. la funzione “myTruncation” per il troncamento delle cifre decimali12.

Si riporta di seguito il codice scritto in J. Basic:

12 Anche per gli algoritmi in pure data è stato effettuato in tal sede uno studio sugli algoritmi di arrotondamento e troncamento di cifre decimali in virgola mobile.

Page 90: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 90 -

'************************************************************ - Alg. 16 - ' STUDIO SONORO III ' Algoritmo di generazione partitura automatica ' secondo parametri pseudo-casuali ' v0.1 ' (02/06/2010) '************************************************************ call myRandomizeTimer '------------------------------------------------------------open file input "inserire il nome del file (senza spazi)_"; filenames$ call spc if filenames$ = "0" then filenames$ = "studioSonoroIII" : print ">>>>>>defoult ="; filenames$;".sco" 'default call spc Open filenames$;".sco" For Output As #1 'file in scrittura '------------------------------------------------------------parametri di input input "insert n°note da generare_"; n call spc if n=0 then n=50 : print ">>>>>>defoult n="; n;" " call spc input "insert ActionTime Max_"; action '(lunghezza del macroevento in sec) call spc if action=0 then action=30 : print ">>>>>>defoult attk="; action;"s" call spc input "insert durata Max di ogni nota_"; lung call spc if lung=0 then lung=5 : print ">>>>>>defoult dur="; lung;"s" call spc [label] input "insert intervallo min e Max di ampiezza (dB) per ogni nota_"; ampmin, ampMax if ampmin=0 then if ampMax=0 then ampmin=20:ampMax=80 print ">>>>>>defoult amp compresa tra="; ampmin;"&";ampMax;"dB"; end if end if if ampMax<ampmin then print "negative amp retry!": goto [label] call spc call spc input "insert ifD0 (freq. base in Hz) di ogni nota_"; basef call spc if basef=0 then basef=90 : print ">>>>>>defoult ifD0 ="; basef;"Hz" call spc input "insert idist frequenza wavetable_"; mlt call spc if mlt=0 then mlt=.90 : print ">>>>>>defoult idist="; mlt;"*" call spc input "insert frequenza Multiplexing (Hz)_"; cpsm call spc if cpsm=0 then cpsm=80 : print ">>>>>>defoult ifmux="; cpsm;"Hz" call spc '----------------------scrittura su file parametri inizializzazione scelti Print #1, ";plot parametri di inizializzazione:" Print #1, ";i1";",file:";filenames$;",note:";n;",attks(s):";action;",durs(s):";lung;",ampmin:";ampmin;",ampMax:";ampMax;"(dB)"; Print #1, ",ifD0(Hz):";basef;",idist:";mlt;",multiplexFreq(Hz):";cpsm Print #1, " " '------------------------------------------formatt. output Print #1, ";p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14" Print #1, ";nf atk dur iamp0 ifD0 idist ifmux ifmux2 ifmux3 itab1-2-3-4 ienv" '------------------------------------------eventi della partitura For I = 0 To n atk = rnd(1)*action 'attacco note 0<atk<action dur = .1+(rnd(1)*lung) 'durata note .1<dur<lung+.1 amp = ampmin+(rnd(1)*(ampMax-ampmin)) 'amp dB note 20<dB<60+20 ifD0 = basef+((rnd(1)*2)-1) 'basef+(-1<rnd<1) idist = mlt 'idist = mlt+((rnd(1)*2)-1)/10 'basef+(-0.1<rnd<0.1) ifmux1= cpsm+((rnd(1)*2)-1)*(rnd(1)*10) '(multiplext+(-10<rnd<10) ifmux2= cpsm+((rnd(1)*2)-1)*(rnd(1)*10) ifmux3= cpsm+((rnd(1)*2)-1)*(rnd(1)*10) itab1 = int((rnd(1)*3))+5 'tabelle possibili 4 5 6 7 itab2 = int((rnd(1)*3))+5 itab3 = int((rnd(1)*3))+5 itab4 = int((rnd(1)*3))+5 ienv = 50+int((rnd(1)*7)) 'funzioni di inviluppo possibili da 50 a 56 '----------------------------------maschera formatt. number Print #1, "i1";" "; using("####.##",atk);" "; using("###.##",dur);" "; using("##",amp);" "; Print #1, using("#####.#",ifD0);" "; using("##.######",idist);" "; Print #1, using("#####.##",ifmux1);" "; using("#####.##",ifmux2);" "; using("#####.##",ifmux3);" ";

Page 91: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 91 -

Print #1, using("###",itab1);" ";using("##",itab2);" ";using("##",itab3);" ";using("##",itab4);" "; Print #1, " ";using("##",ienv) Next I close #1 print Chr$(13);"Parametri generati nel file_"; filenames$;".sco" print ">>>>>>fine" '---------------------------------SUB myRandomizeTimer v0.2 (see myRandomizeTimerV0.2.bas) sub myRandomizeTimer time$ = time$() 'valori timer computer (hh:mm:ss) second$ = right$(time$, 2) 'secondi reali (ss) presi a partire dai primi 2 caratteri della stringa da destra second = val(second$) 'conversione da stringa a intero time = second/60 'valori n: 0.00000000<n<1.00000000 randomize time 'seme del random sempre diverso in base ai secondi della macchina trunc = myTruncation(time,3) 'richiamo di funzione di troncamento a tre cifre dopo la virgola randomize time 'seme del random sempre diverso in base ai secondi s della macchina 0<s<1 'print time end sub '------------------------------------------------funzione troncamento cifre decimali v0.1 function myTruncation(x, n) conv1$ = str$(x) 'converte da intero a stringa select case n case 1 trunc$ = using("############.#",conv1$) case 2 trunc$ = using("############.##",conv1$) case 3 trunc$ = using("############.###",conv1$) case else print "not set precision in myTruncation!" end select y = val(trunc$) myTruncation = y end function sub spc 'funzione space print " " end sub

Si demanda ad altra sede per una più accurata illustrazione delle funzioni implementate.

Ovviamente i parametri generati mediante funzioni pseudo-random, corrispondono al

numero di coefficienti previsti nell’algoritmo di generazione. Come affermato ad inizio

capitolo, in tal sede non vengono introdotti particolari parametri di controllo, mantenendo la

tecnica di multiplexer di segnali ad un livello base13. Piuttosto di indaga sulla complessità

delle variabili di controllo per un numero ristretto di parametri.

4.1.3 Partitura d’ascolto introduttiva

Si riporta di seguito un idea provvisoria di partitura generale su cui verrà sviluppata l’ intera

composizione. Anche se nella versione definitiva possono sussistere variazioni, tale

13 L’aggiornamento degli algoritmi ed il loro perfezionamento, in termini di ampliamento delle possibilità di elaborazione, è sede di un argomentazione a se stante. Si riservano quindi una serie di ulteriori opportunità di controllo, da sperimentare e affinare in sudi successivi. Si demanda alle conclusioni [cap. 5.0] per possibili previsioni sullo sviluppo del modello di sintesi proposto.

Page 92: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 92 -

schema è comunque approssimativamente utile per seguire le parti principali dello studio.

In esso vengono riportate macrostrutture di diverso contenuto, organizzate in un certo

modo per essere diffuse su supporto o performate in tempo reale mediante controller.

Page 93: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

“Studio Sonoro III”, basato su Multiplexing discreto e processi stocastici Stefano Silvestri

Rev. 2 A.A. 08/09 - 93 -

Le fasce armoniche sostenute (“arm”, “tonic” - “high”, “mid”, “low”) sono caratterizzate da

una certa altezza media percepita. La ricchezza spettrale di queste costruzioni toniche è

riconducibile alla FM, anche se il procedimento di generazione è ben diverso.

Le strutture sonore impulsive (granulari-impulsive - “high”, “low”) rappresentano eventi

micro-strutturali attestabili in termini di densità temporale, dove il segnale tabulato diviene

singolo “quanto sonoro”, similmente ad un procedimento granulare.

In conclusione, la semplice differenza del contenuto tabellare garantisce risultati sonori

differenti anche se agiscono stesse leggi di manipolazione. Questa particolare dualità di

rappresentazione sonora è probabilmente una caratteristica interessante, insita nel

modello introdotto.

Si demanda ad altra sede per una più accurata illustrazione degli algoritmi, per le parti in

tempo differito e reale, e per le modalità di esecuzione e costruzione previste nel brano.

Page 94: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

94

5.0 Sviluppi, conclusioni, ringraziamenti Il tema dei processi stocastici comprende un vasto campo si conoscenze che si affianca,

tra l’altro, ad ulteriori settori come la statistica ed il caos deterministico. Una sufficiente

descrizione teorica riguardante i fenomeni aleatori è ovviamente al di fuori delle

prospettive della tesi. In essa infatti sono state trattate applicazioni stocastiche specifiche,

utili alla gestione dei modelli particolari di sintesi, omettendo molte delle nozioni di base

inerenti ad es. la teoria delle probabilità, l’analisi delle varabili aleatorie, i modelli di

distribuzione di probabilità, i processi di rumore statistico e le inerenti leggi probabilistiche

ecc. L’analisi dettagliata delle serie di numeri pseudo-casuali, il test delle distribuzioni,

l’andamento grafico delle funzioni, sono materia importante di sviluppo e ottimizzazione

per l’elaborazione di funzioni deterministiche al calcolatore. Tali argomenti risultano di

notevole interesse e rappresentano il supporto fondamentale per l’applicazione dei metodi

stocastici di ordine più complesso, che possano introdurre anche alla complessità dei

sistemi dinamici non-lineari del caos deterministico1.

Un primo sviluppo può quindi riguardare l’approfondimento delle metodiche di generazione

aleatoria in merito al controllo dei parametri di elaborazione, per modelli di sintesi in

generale e con particolare riferimento alla tecnica di wavetable multiplexing. Altri sviluppi

possono riguardare l’ampliamento del modello stesso di multiplexer, sperimentando

processi software con un numero maggiore di ingressi dati ed altre ipotetiche

implementazione in hardware basate su unità a microcontrollore. Usufruendo sempre della

memorizzazione dei segnali (o periodi di essi) in tabella è possibile sviluppare tecniche

wavetable multiplexing capaci inoltre di commutare sorgenti sonore acquisite in tempo

reale (contenuti in tabella variabili). Può risultare interessante, tra l’altro, ampliare il

modello stesso mediante l’introduzione di nuovi parametri. Si può pensare all’aggiunta di

un parametro di scala per la funzione di finestratura2, da rendere anche funzione di una

variabile indipendente. Tutti esperimenti da proporre in aggiornamenti successivi.

Definiscono l’ambito di studio per una trattazione a se stante alcune argomentazioni che

non hanno trovato spazio nella tesi. Non è stato possibile ad es. approfondire i discorsi

inerenti le basi dell’elettronica digitale, dal quale bisogna partire per la comprensione dei

circuiti di ordine più complesso e si rinvia ad altra sede una più dettagliata illustrazione dei

1 A tal proposito si veda A. Di Scipio, (1991). Caos deterministico, composizione e sintesi del suono, in Atti IX Colloquio di Informatica Musicale, pp.337-350, Genova. 2 Elevando ad una potenza x la curva di finestratura è possibile renderla più ripida per 1<x e meno ripida per 1>x , osservando gli effetti acustici che ne derivano nel tempo.

Page 95: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

95

criteri di manipolazione dei vettori numerici, quali ad es. l’impiego di maschere di

tendenza, trasformazioni lineari di spazi vettoriali (applicazioni o mappe numeriche e

grafiche), iterazioni funzionali non lineari, sfruttati peraltro nella composizione.

In conclusione è possibile affermare che l’aspetto riguardante i procedimenti di sintesi,

derivati dalla wavetable, è molto vasto. Come affermato, molte applicazioni di sintesi sono

strettamente connesse all’impiego di tabelle e possono essere considerate varianti

algoritmiche non standard atte a fornire rappresentazioni alternative del suono.

Non dovrebbe risultare errato sostenere che la variante di wavetable switching qui

introdotta potrebbe essere assimilata ad un processo granulare-deterministico atto a

fornire una rappresentazione quantistica [Xenakis, Gabor], pur sempre ordinata, degli

stream sonori. Tale processo può essere controllato stocasticamente per limitare le

ridondanze spettrali dovute alle periodicità di commutazione. Il controllo stocastico della

commutazione può essere quindi assimilato ad un front-end nuovo-caratteristico per il

controllo di una “tipologia particolare di sintesi granulare”, dove operazioni quali la lettura

delle tabelle e la finestratura rappresentano la generazione del grano, mentre l’apparato di

commutazione è ciò che guida i parametri del grano stesso.

Parametri come la densità sarebbero quindi attribuibili alle velocità di transizione ed alle

dimensioni dei segnali commutati. Bisogna poi considerare l’ulteriore possibilità di

modificare la sequenza dei segnali di ingresso nD in tutte le combinazioni di nT possibili.

Si intende ringraziare il Docente principale Agostino Di Scipio, per i grandi insegnamenti e

le ottime possibilità di attività e studio offerte durante il triennio accademico.

Altri ringraziamenti sono rivolti a tutti i professori dei corsi complementari, in particolar

modo al Prof. Sergio Cavaliere del corso esterno di elaborazione numerica ed al Prof.

Stefano Busiello di matematica. Un ringraziamento particolare è rivolto al M°Giosuè

Grassia il quale, da amico e collega di studi, è stato presente in momenti rilevanti anche al

di fuori del corso, offrendo importanti consigli.

Page 96: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 96 -

APPENDICE A: Oscillatore virtua le e sintesi wavetable look-up La denominazione “oscillatore virtuale” deriva dalla terminologia tecnica adottata sui primi

sistemi a microelaboratore per indicare un tipo di oscillatore digitale completamente

numerico. A differenza dei corrispondenti circuiti analogici e/o digitali, l’oscillatore

numerico è rappresentato da un algoritmo capace di sintetizzare campioni di un vettore da

intendersi come segnale. Nel caso discreto il valore istantaneo della forma d’onda è

rappresentato mediante bit ad ogni Tc . Questo dovrà essere convertito in corrispondente

valore di tensione bipolare ppV , al quale segue una conversione in onda di pressione

realizzata dai trasduttori posti al termine della catena elettroacustica.

I vantaggi di un oscillatore numerico (o virtuale), rispetto l’equivalente analogico, risiedono

nella precisione e praticità di impiego1.

L’oscillatore numerico è più correttamente definibile come un processo algoritmico che

implementa un’operazione matematica inerente il calcolo ciclico dei valori dei punti di un

vettore segnale. Così come nel continuo la quasi periodicità o armonicità di alcune

componenti spettrali contribuisce alla percezione di altezza, nel discreto la ripetizione

ciclica del vettore (o array di valori numerici) emula il comportamento periodico,

restituendo una percezione di altezza2 all’atto della conversione. In pratica l’oscillatore

standard permette la sintesi di un certo contenuto spettrale periodico. Nel caso semplice

viene prodotta una singola riga spettrale al quale corrisponde una singola forma d’onda

sinusoidale (o cosinusoidale). L’oscillatore semplice permette quindi di calcolare

l’andamento nel tempo di una funzione semplice.

1 Su un calcolatore è possibile implementare numerosi oscillatori e definire procedure per la generazione di varie forma d’onda, semplici o complesse, senza oramai grossi problemi di risorse di computazione (almeno per applicazioni non avanzate). 2 Alla percezione di altezza, restituita nel caso semplice da una singola componente f , è implicita

una certa intensità A . Ogni oscillatore semplice calcola almeno i valori per entrambe le varabili Af , in funzione del tempo.

Page 97: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 97 -

Formalmente l’equazione trigonometrica della forma d’onda semplice, che permette il

calcolo dei campioni della sequenza numerica, è data da:

E.1 [ ] ( )[ ]φτπ +∆= nfAns 2sin

Dove [ ]ns esprime il segnale si ampiezza A del campione n al tempo τ∆n e

quindi n è l’ordine del campione generato. Si definisce in tal caso

genericamente τ∆ come intervallo di tempo minimo tra due campioni successivi.

In termini di elaborazione numerica si ha che fcTc

1==∆τ

. Infine f è la

frequenza del segnale prevista nella pulsazioneω , esprimibile nel modo equivalente

Tf /22 ππω == .

Tecnicamente una qualsiasi funzione discreta deve essere costruita per punti ed è quindi

necessario definire arbitrariamente un vettore dei punti vt su cui la funzione deve essere

calcolata e ripetuta ciclicamente. L’operazione successiva riguarda la dichiarazione dei

valori della funzione. Volendo implementare, in linguaggio Matlab, l’equazione della forma

d’onda sinusoidale [E.1] e volendone visualizzare il risultato graficamente si riporta il

semplice algoritmo:

%---------------------------------- % forma d'onda sinusoidale %---------------------------------- clear clc close all vt=linspace(0,0.01,512); %vettore dei punti su ascissa f=500 %inizializza f x=1*sin(2*pi*f*vt); %vettore dei valori dell'onda seno plot(vt,x, 'k'); xlabel('vettore dei tempi [vt]'); ylabel('min e Max funzione'); title('Onda sinusoidale');

Page 98: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 98 -

Il risultato grafico è:

Fig. 1 Periodi della funzione sinusoidale

E’ evidente che con brevi rielaborazioni di questo stesso codice è possibile ottenere varie

forme d’onda. Ad esempio aggiungendo ad un nuovo vettore dei punti x l’equazione

cosinusoidale [ ] [ ]φω += nAnx ocos , e diminuendo f al fine di visualizzare nello

stesso vettore vt un numero minore di periodi (aumento di T ), è possibile mostrare due

onde che differiscano di fase:

%--------------------------------------------------- % forma d'onda sinusoidale e cosinusoide %--------------------------------------------------- clear clc close all vt1=linspace(0,0.01,512); %vettore dei punti su ascissa f1=200 %inizializza f x1=1*sin(2*pi*f1*vt1); %vettore dei valori dell'onda seno plot(vt1,x1, 'k'); hold on

Page 99: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 99 -

vt2=linspace(0,0.01,512); %vettore dei punti su ascissa f2=200 %inizializza f x2=1*cos(2*pi*f2*vt2); %valori coseno plot(vt2,x2, 'k'); xlabel('vettore dei tempi [vt]'); ylabel('min e Max'); title('funzioni seno e coseno');

Il risultato grafico permette di evidenziare ambedue le funzioni sovrapposte grazie al

comando “hold on”:

Fig. 2 Periodi sovrapposti delle funzioni seno, coseno

Gli algoritmi fino ad ora proposti sono strutturati in modo da visualizzare a schermo il

risultato del calcolo dei valori di una funzione. Si assume quindi che il segnale risultante

sia posto semplicemente in output grafico. Tuttavia un vero e proprio algoritmo di

oscillatore semplice si basa su una risoluzione audio, calcolando i valori del vettore in

ragione di parametri quali, frequenza di campionamento Sr , durata t , frequenza f e

Page 100: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 100 -

ampiezza A del segnale y . Prevede inoltre che il segnale risultante sia indirizzabile in

uscita al convertitore. Pertanto si può riscrivere un algoritmo che sia coerente ai parametri

della funzione segnale e che implementi l’operatore di output, in tal caso “soundsc(y,sr)”:

%----------------------------------------------------------------------- % OSCILLATORE VIRTUALE SEMPLICE %----------------------------------------------------------------------- clear close all clc %-------------------%inizializza variabili frq=1000 %frequenza amp=1 %ampiezza unitaria dur=.01 %durata (sec) Sr=44100 %freqeunza di campionamento %-------------------%base tempi da 0 alla durata in Tc=1/Sr t=0:1/Sr:dur; %da 0 a dur in 1/SR y=zeros(size(t)); %vettore di zeri lungo quanto t %-------------------ciclo dei valori for i=1:length(frq) %implementazione di x=A*sin(2*pi*f*vt) con 2*pi*f*t=om*t om=2*pi*frq(i); ph=om*t; y=y+amp(i)*sin(ph+0); %vettore valori ampiezze end soundsc(y,Sr) %funzione di ascolto vettore segnale %-------------------routine di visualizzazione subplot(2,1,1),plot(t,y,'k'); %formattazione grafica a due finestre len=round(length(y)/2); xlabel('durata (sec)'); ylabel('ampiezza assoluta'); title('oscillatore sinusoidale') %-------------------visualizzazione spettro e forma d'onda ay=abs(fft(y)); %abs è la funzione valore assoluto, fft ottiene la trasformata veloce ay=ay(1:len); %len funzione di arrotondamento fx=linspace(0,Sr/2,len); subplot(2,1,2),plot(fx,ay,'k'); xlabel('frequenza (Hz)'); ylabel('ampiezza assoluta'); title('spettro del segnale')

Dal punto di vista logico l’algoritmo può considerarsi come “l’oscillatore virtuale

propriamente detto”. Esso implementa un ciclo iterativo che calcola, per ogni periodo di

campionamento, il valore della funzione seno ponendo il risultato in un vettore y grande

Page 101: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 101 -

quanto t ed inizializzato con una serie di zeri. La scelta di Sr è arbitraria ed in tal

caso è in accordo al teorema del campionamento, dato che la risoluzione temporale

della funzione è determinata dall’intervallo minimo ms

SrTc 0226.

1≈=

.

Fondamentalmente il calcolo definisce di volta in volta, in base al valore di frequenza

“length(frq)”, il valore del campione attuale dato da “om=2*pi*frq(i);” ponendo il risultato

nel vettore ciclo ( )0sin +ph moltiplicato per il vettore dell’ampiezza corrispondente

( )iamp . I valori di quest’ultimo sono costanti ed unitari per tutta la durata “ph=om*t;”.

La fase iniziale è posta come costante 0=ph . Si riporta di seguito il risultato di sintesi:

Fig. 3 Forma d’onda e spettro del segnale risultante

Le routine di visualizzazione permettono di valutare, oltre che i cicli nel tempo, anche la

parte reale del segnale, valore assoluto della trasformata discreta “ay=abs(fft(y));”.

Page 102: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 102 -

Tale algoritmo può essere facilmente riscritto sottoforma di funzione3 da richiamare ogni

qual volta occorra la generazione di una sinusoide. I parametri della funzione potranno

essere inizializzati come argomenti, da definire anche mediante operazioni di controllo.

Ad es. si potrà effettuare modulazione dei valori della sinusoide sfruttando l’andamento nel

tempo di vettori lineari (spezzate di retta) e non lineari (curve anche esponenziali).

La semplice primitiva “oscillatore” diviene così rappresentata:

Fig. 4 Rappresentazione grafica della funzione oscillatore

È opportuno sottolineare che in tal caso non interviene un processo di tabulazione, il

calcolo dei punti dell’array4 è implicito all’atto del ciclo. Con questo si vuol precisare che la

primitiva si differenzia dal modello di oscillatore wavetable look-up, dove la tabella è un

array di valori preallocato in memoria.

In linea di principio i vantaggi della routine “oscillatore virtuale semplice” risiedono in:

• Mancanza di operazioni di lettura della memoria (solo scrittura del risultato).

• Economia di occupazione della risorse di memoria5.

L’algoritmo infatti si basa esclusivamente sul calcolo matematico dell’equazione.

Tuttavia per ottimizzare i tempi di computazione si dovrebbe ricorrere ad un linguaggio di

3 In via teorica il risultato di generazione di questa primitiva è assimilabile a quella ad es. degli Opcode “OSCIL” di C-Sound o dell’oggetto “OSC~” di PD, in ambienti differenti di programmazione. 4 Nei linguaggi di programmazione l’array esemplifica la rappresentazione matematica di un vettore o una matrice (anche multidimensionale) i cui elementi possono appartenere a vari insiemi numerici. 5 Per contro, nel modello wavetable il processo di interrogazione degli indirizzi fisici di memoria diviene non sottovalutabile soprattutto per routine che operino in tempo reale. Infatti si hanno tempi di indirizzamento e lettura (accesso-lettura) per ogni valore dell’array (o per blocchi di N alla volta). Nei linguaggi di sintesi l’operazione di tabulazione permette di allocare i punti del vettore in RAM.

Page 103: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 103 -

basso livello per usufruire del reale tempo macchina di svolgimento delle operazioni

matematiche.

In base a quanto precedentemente affermato si presenta la funzione “fn_osc”, la quale

potrà essere stanziata più volte in ambiente Matlab. Essa richiede gli stessi parametri

previsti nell’algoritmo precedente, da impostare stavolta come argomenti. Il calcolo si basa

sull’equazione in forma esplicita [E.1]:

%-------------------------------------------------------------------------------------------- % FUNZIONE OSCILLATORE VIRTUALE SEMPLICE % restituisce un vettore contenente un % segnale periodico sinusoidale % S.S.30/12/2009 % NOTE: richiede funzione fn_sonogram % SINTASSI: [y] = fn_osc (ampiezza,frequenza,durata, sample rate) %-------------------------------------------------------------------------------------------- function [y]=fn_osc(amp,frq,dur,SR) %--------------------inizializza variabili default if nargin<1 clear %azzera e cancella solo se si tratta dei defoult close all %altrimenti cancellerebbe i valori d'ingresso clc frq=100;amp=.5;dur=2;SR=44100; end %--------------------vettore del tempo t=linspace(0,dur,dur*SR); %--------------------envelope g=1; envspace=linspace(0,(pi*2),dur*SR); cosin=(cos(envspace))*-1; rscl=(cosin+1)/2; env=rscl*g; %--------------------calcolo funzioni fi=0; w=2*pi*frq; y=((amp.*env).*sin((w*t)+fi)); %y=amp.*sawtooth((w*t)+fi); %y=amp.*square((w*t)+fi); %--------------------esegue plotting onda e spettro solo se non ci sono argomenti di defoult if nargin<1 plot(rscl,'k');xlabel('N');ylabel('ampiezza assoluta'); title('funzione inviluppo'); grid on %-------------------- figure grid off

Page 104: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 104 -

plot(t,'--k') xlabel('x');ylabel('y'); title('vettore del tempo'); %--------------------plot signal figure plot(y,'k');xlabel('tempo in campioni');ylabel('ampiezza assoluta'); title('segnale nel tempo'); axis([0,length(t),-1,1]); %si considri che N=t*SR per cui t=N/SR => N*(1/SR) %--------------------OUTPUT DAC sound(y,SR); figure fn_sonogram(y,SR); title('sonogramma'); end

Si nota subito la definizione del vettore tempo e l’equazione esplicita della sinusoide6.

I parametri della funzione fn_osc sono tra parentesi (amp,frq,dur,SR) e sono per default

variabili7 locali, ossia vengono memorizzati in aree differenti di memoria del Workspace.

Per cui all’atto dell’utilizzo della funzione sarà possibile impiegare qualsiasi nome di

variabile. Lo stesso vale per il nome della variabile di uscita “y”.

Il vantaggio di tale applicazione risiede nella possibilità di richiamare più volte la funzione

sia in altri “M-files” che al prompt della command window. Scrivendo quindi solo il nome

della funzione, senza argomenti, verranno attivati i default seguiti dalla visualizzazione

grafica del risultato sonoro, posto al contempo in uscita al DAC. Scrivendo

preventivamente tutti gli argomenti, rispettandone l’ordine sintattico, sarà possibile

sintetizzare differenti frequenze senza visualizzazione automatica da parte della funzione,

scegliendo in seguito un tipo di visualizzazione del risultato.

Come se si trattasse di un vero e proprio Opcode (o UGen), tutta la presentazione

commentata, posta ad inizio codice, potrà essere richiamata al prompt dei comandi

digitando “help fn_osc” in modo da avere un riferimento della funzione.

6 Matlab mette a disposizione anche altri comandi per calcolare differenti forme d’onda. Nel codice presentato vi è quindi la possibilità di selezionare tali comandi eliminando il relativo commento. Tuttavia l’algoritmo di oscillatore semplice deve basarsi sulla funzione periodica sinusoidale o cosinusoidale, per la sintesi di una singola riga spettrale. 7 Le variabili utilizzate durante l’esecuzione della funzione vengono automaticamente cancellate dalla memoria al termine della stessa, per cui non occorrono comandi “clear”, “clc”.

Page 105: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 105 -

Per oggettivare quanto detto in precedenza, in merito al controllo dei parametri mediante

vettori, nel codice è stato inserito un processo di inviluppo di ampiezza basato su un

vettore contenente punti di un coseno rialzato (invertito e riscalato tra zero ed uno).

In tal caso la mappa produce un inviluppo crescente/decrescente secondo curva a

risoluzione Srtdur ⋅ (in linea al teorema di Nyquist). Per ottenere l’inviluppo si moltiplica8

quindi il parametro di ampiezza del segnale di uscita y, mediante prodotto vettoriale “.*”

(ossia elemento per elemento), con il vettore della funzione a valori 10 ≤≤ env .

Successivamente all’uscita del DAC si richiama una nuova funzione “fn_sonogram” che

richiede i parametri (y,SR), rispettivamente il segnale di uscita e frequenza di

campionamento (la funzione usa a sua volta “fx=specgram(x);” propria della libreria di

Matlab). I risultati di visualizzazione ottenuti dall’intera funzione “fn_osc” sono i seguenti:

(a)

8 È anche possibile sostituire direttamente il vettore di controllo al parametro della funzione. In tal caso bisognerà adottare direttamente valori assoluti.

Page 106: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 106 -

(b)

(c)

Fig. 5 a) vettore tempo, b) inviluppo, c) onda del segnale

Page 107: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 107 -

Trovando che sec2 di suono, ponendo HzSr 44100= , equivalgono ad

882001

=⋅=⋅= SrtTc

tN campioni nel tempo.

Il sonogramma del segnale y, ottenuto dalla funzione “fn_sonogram” è il seguente9:

Fig. 6 spettro sintetizzato del segnale semplice a 5Khz

In definitiva un importante caratteristica di questa funzione oscillatore è l’eliminazione del

calcolo della forma d’onda secondo cicli iterativi. Ovviamente anche in questo caso

l’algoritmo è per il tempo differito10.

9 La colorbar a destra, indica in chiaro le intensità maggiori mentre in scuro quelle minori. 10 Nei linguaggi di sintesi per il tempo differito le primitive restituiscono un risultato scritto per blocchi di N campioni per volta. Il tempo di sintesi dipenderà dalla durata dei vettori e dalla complessità delle operazioni. Le risoluzioni audio Sr e di controllo SrKr ≤ potranno influire sulla velocità di computazione. I linguaggi di sintesi per il tempo reale svolgono operazioni strutturate in modo diverso, infatti lettura/calcolo-scrittura devono avvenire entro un tempo Tct ≤ . Ogni sequenza di valori è computata per blocchi

di N campioni (in Pure Data limitati a N2 ), dove N è un buffer che garantisce “l’integrità” del vettore da mandare al DAC.

Page 108: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 108 -

Come detto, il fine ultimo di un processo numerico di sintesi è quello di stabilire una serie

di campioni quantizzati, da convertire in analogico. Esistono molteplici metodi per arrivare

al risultato del vettore segnale e molte metodologie possono portare ad uno stesso

risultato attraverso percorsi differenti. È infatti possibile ottenere forme d’onda sinusoidali

disponendo preventivamente di tutti i punti che ne compongono il periodo. La sintesi del

segnale sarà appunto la rilettura di tutti questi i campioni. Tale procedimento rappresenta

la logica di funzionamento di un oscillatore a forma d’onda tabulata (wavetable look-up),

elemento di partenza anche per molte altre applicazioni di sintesi del suono più

complesse. In generale la tecnica wavetable-lookup11 permette di definire punti di forme

d’onda arbitrarie, basandosi su un processo di tabulazione (o di archiviazione) preventiva

dei campioni in aree di memoria. Sia il vettore NnV i ⊂= , dove N è il numero di

tutti i punti ai cui indici i si trova un valore corrispondente in , bisognerà leggere ogni

esimoi − valore in con un certo passo (step di incremento) fino al completamento

del periodo di N punti. In altri termini leggere ciclicamente la sequenza composta dagli

esimii − valori dei campioni Nni ∈ servirà al fine di ricreare il segnale. Il passo

sarà calcolato in ragione della frequenza da percepire bf , indipendente dalla frequenza a

cui avviene il ciclo di scrittura dei campioni (tranne per generazione in tempo reale).

Idealmente il vettore dei punti V può essere rappresentato come una tabella dove ogni

colonna rappresenti l’ordine dell’indice alla cui riga vi siano gli in valori da leggere.

Mediante questa tecnica è possibile sintetizzare onde periodiche di forma qualsiasi a cui

11 Verso la metà degli anni Ottanta fu una delle tecniche commercialmente più diffuse grazie al perfezionamento dell’elettronica digitale, con il relativo aumento dell’integrazione e abbattimento dei costi di produzione dei discreti attivi e passivi.

Page 109: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 109 -

corrisponde un certo contenuto spettrale. Disponendo ad es. di 20=N elementi del

periodo, rappresentanti punti (o valori) di una sinusoide, il vettore corrispondente V può

essere raffigurato nel modo seguente:

Fig. 7 rappresentazione grafica del vettore tabella

Dove per ogni i esiste un valore assoluto ⎩⎨⎧

<≥−≥≥

=→∀0;0;

0;0;:|

nin

ninnin ii

e i valori della tabella potranno subire qualsiasi trasformazione12.

Tale sequenza di valori definisce una forma d’onda che andrà opportunamente letta da

una routine detta oscillatore wavetable look-up. Un generico oscillatore wavetable può

essere graficamente rappresentato mediante il seguente diagramma a moduli:

Fig. 8 Schema di principio dell’oscillatore wavetable look-up

Indicando che i punti del vettore possono essere letti, in linea di principio, da una routine

simile a quella vista in occasione dell’oscillatore virtuale semplice [Fig.4], con la differenza

12 Si demanda a fonti matematiche disponibili in bibliografia.

Page 110: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 110 -

dell’implementazione di un sistema di lettura degli indici inivi →∀∈ | , dove i valori

successivi della forma d’onda vengano richiamati esplicitamente mediante incremento

sii += . Questo semplice processo esclude l’equazione matematica del calcolo della

forma d’onda e richiede una tabella (TAB) di campioni N in cui siano esplicitati i valori

in per generare la sequenza [ ]ny . Il tipo di forma d’onda in memoria diviene quindi

parametro fondamentale del processo di generazione e, analogamente

all’implementazione della E.13, si potranno dichiarare valori di ampiezza, frequenza e fase

del segnale.

Viene di seguito proposto un algoritmo in Just BASIC che esemplifica il processo di lettura

ed output dei punti in di una tabella (array A) di valori assoluti:

'******************************************************************* '* OSCILLATORE WAVETABLE LOOK-UP '* 10/11/2009 '* V0.3 - con grafica '******************************************************************* [restart] 'dichiarazione degli elementi del vettore (insieme dei dati strutturati) TN=21 'periodo in (pseudo) campioni + guard point per il completamento a 0 DIM A(TN) 'inizializza grandezza vettore 1 periodo segnale (matrice 1xN) 'dichiarazione variabili input "scegliere tabella dei punti [1=SINE] [2=TRINGLE] [3=SQUARE] [4=SAW]_"; forma if forma=0 then forma=1 print "Tabella sinusoide istanziata con "; : print TN-1; : print "+1 campioni" select case forma case 1 goto [SINE] case 2 goto [TRINGLE] case 3 goto [SQUARE] case 4 goto [SAW] end select [rtrn] input "inserire la freqeunza di campionamento (Hz)_"; SR if SR=0 then SR=44100:print SR 'set defoult input "inserire la freqeunza desiderata (Hz)_"; frq 'frequenza in Hz if frq=0 then frq=2100:print frq input "inserire gradi della fase_"; grdi 'dichiarazione della fase in gradi print grdi input "inserire nuemro di periodi da generare_"; T 'numero di periodi if T=0 then T=2:print T input "procedere_? (s/n)"; c$ if c$ = "s" then goto [label] else goto [restart] end if wait [label]

Page 111: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 111 -

'-----------------Apertura modalità grafica per windows CLS open "Wavetable look-up oscillator" for graphics_fs_nsb as #1 'finestra grafica a tutto schermo senza scroll bars print #1, "down" 'modalità di disegno da sotto verso sopra print #1, "fill white" 'colore sfondo nero 'inizializza costanti per il ciclo 'inc=1 'incremento da variare per ottenere freqeunza qualsiasi riscl=10 'riscalamanto valori array tra 0-1 '-----------------------operazioni ph=(grdi/360)*TN 'conversione per l'indice o fase dell'array if ph<1 then 'controlla se la fase è zero inquanto l'indice minimo del vettore è 1 ph=1 end if periodi=TN*T inc=(frq*TN)/SR 'calcolo dell'incremento in base alla frequenza cicli=(SR/TN)*inc 'calcolo freqeunza di generazione supponendo che non sia dichiarata tempo=periodi*(1/SR) 'calcolo dei tempi in base a n periodi 'inizializza costanti per la grafica inc2=0 'step punti grafici ofst=100 'ofset delle coordinate punti grafici inv=-1 'inversione grafica del periodo graphamp=100 'ampiezza grafica dell'onda pro=11 'prolungamento segmento off-set in base al n° periodi count=0 axis=100 yas=450 shift=150 '-----------------ciclo di lettura array for i=1 to periodi indx=int(ph) 'inizializzazione dell'indice derivato dalla fase pnt=(((A(indx))/riscl)*graphamp)*inv 'lettura dei punti dal vettore con riscalamento tra 0 e 1, '>>>>>>>>>>>>>>>>>>>>>>>grafica 'aumento ampiezza grafica e inversione del peiodo print #1, "color black" 'colore puntatore bianco inc2=inc2+10 'step per ogni punto del plotting print #1, "place "; ph+ofst+inc2; " "; pnt+ofst+200 'posiziona il puntatore alla coordinata x,y print #1, "go 3" 'distanza del puntatore tra quella corrente a quella D (spessore puntatore) '>>>>>>>>>>>>>>>>>>>>>>> ph=ph+inc 'incrementa valore fase if ph > TN then 'controllo di fine ciclo ph=ph-TN end if '-----------------------plot ascissa di 0 offset for j=0 to periodi*pro ky=303 print #1, "place "; j+105; " "; ky 'coordinate x,y print #1, "go 1" next j '-----------------------plot ordinata di ampiezza unitaria for k=0 to 210 kx=105 print #1, "place "; kx; " "; k+195 'coordinate x,y print #1, "go 1" next k '-----------------------plotting dei valori array print #1, "backcolor white"

'contatore distaccato dal ciclo per incrementare successione valori count=count+1 if count>10 then count=0 axis=axis+shift 'ogni 10 scifta colonna a destra end if print #1, "place "; axis; " "; yas+count*20 : print #1, "| ";i; chr$(32);" =" 'Val=A(indx)/riscl print #1, "place "; axis+40; " "; yas+count*20 : print #1, "| "; A(indx)/riscl; next i 'plotting dei riferimenti e risultati print #1, "backcolor white" 'aggiorna il colore plot testo

Page 112: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 112 -

print #1, "place "; 85; " "; 200 : print #1, "|+1" print #1, "place "; 85; " "; 410 : print #1, "| -1" print #1, "place "; 85; " "; 315 : print #1, "| 0" print #1, "place "; 105; " "; 150 : print #1, "|Frequenza generazione ="; chr$(32); cicli;"Hz"; print #1, "place "; 105; " "; 130 : print #1, "|N° periodi visualizzati ="; chr$(32); T; print #1, "place "; 105; " "; 170 : print #1, "|Durata segnale generato ="; chr$(32); using("#.######", tempo);"Sec"; print #1, "place "; 100; " "; 90 : print #1, "| Fatto!" print #1, "place "; 105; " "; 110 : print #1, "|Sample rate ="; chr$(32); SR;"Hz"; wait '::::::::::::::::::::::::::::::TABELLE::::::::::::::::::::::::::::: [SINE] A(1)=0: A(2)=3.1: A(3)=5.9: A(4)=8.1: A(5)=9.5: A(6)=10: A(7)=9.5: A(8)=8.1: A(9)=5.9: A(10)=3.1 A(11)=0: A(12)=-3.1: A(13)=-5.9: A(14)=-8.1: A(15)=-9.5: A(16)=-10: A(17)=-9.5: A(18)=-8.1: A(19)=-5.9: A(20)=-3.1 goto [rtrn] [TRINGLE] A(1)=0: A(2)=2: A(3)=4: A(4)=6: A(5)=8: A(6)=10: A(7)=8: A(8)=6: A(9)=4: A(10)=2 A(11)=0: A(12)=-2: A(13)=-4: A(14)=-6: A(15)=-8: A(16)=-10: A(17)=-8: A(18)=-6: A(19)=-4: A(20)=-2 goto [rtrn] [SQUARE] A(1)=-10: A(2)=-10: A(3)=-10: A(4)=-10: A(5)=-10: A(6)=-10: A(7)=-10: A(8)=-10: A(9)=-10: A(10)=0 A(11)=10: A(12)=10: A(13)=10: A(14)=10: A(15)=10: A(16)=10: A(17)=10: A(18)=10: A(19)=10: A(20)=10 goto [rtrn] [SAW] A(1)=0: A(2)=1: A(3)=2: A(4)=3: A(5)=4: A(6)=5: A(7)=6: A(8)=7: A(9)=8: A(10)=9 A(11)=0: A(12)=-10: A(13)=-9: A(14)=-8: A(15)=-7: A(16)=-6: A(17)=-5: A(18)=-4: A(19)=-3: A(20)=-2 goto [rtrn] close #1 end

Nella prima parte del codice viene dimensionato il vettore ( )TNA dove TN è il

numero di punti totali della tabella. E’ possibile stabilire una grandezza qualsiasi di TN ,

dichiarandone i valori in per il vettore [ ] iniA = . Successivamente si passa alle

routine di introduzione delle variabili. In primis si stabilisce il tipo di tabella degli elementi

da richiamare. Sono state stanziate quattro tabelle contenenti periodi di forme d’onda

differenti, con valori 1010 <<− in , da riscalare ad 11 ≤≤− in .

Una struttura di controllo condizionato SELECT CASE permette far corrispondere all’array

di lettura A(i)=n uno dei vettori disponibili, selezionando quindi un tipo di periodo. Quando

il salto incondizionato GO TO riporta alla label “rtrn” la tabella è in memoria ed è possibile

inizializzare altre variabili quali: frequenza di campionamento, frequenza del segnale, fase

in gradi del segnale e numero di periodi da generare. Usando solo Enter è possibile

attivare i default. In fine scegliendo “s” è possibile iniziare il processo di generazione e

visualizzazione della tabella. La finestra di output visualizza quindi i risultati numerici e

Page 113: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 113 -

grafici del processo. Segue il calcolo del valore della fase N

nph ⋅=

360

o

in rapporto

ai gradi on di input e al periodo in campioni detto TN . Si sceglie quindi la quantità di

periodi da ripetere mediante TTN ⋅ , con 1<T per ottenere frazioni di ciclo, con

1>= nT per ottenere n cicli successivi a cui corrisponde una certa durata

temporale13. Durate complessivamente stimabili con sec/1 =⋅= NSrt quindi

TSrN ⋅= . Si definisce in seguito la quantità Sr

TNf

SrTNfinc b

b

⋅=⋅⋅=

1

che servirà al fine di stabilire il passo di incremento (o di scansione) in base alla frequenza

desiderata bf . Il valore dei cicli al secondo (o frequenza percepita) è definito mediante

( ) HzSrTNfb =⋅= /1 , quindi in base all’incremento14 si avrà che

HzincTN

Srfb =⋅=

[6]. Ne segue che, supponendo HzSr 44100= e

21=TN campioni, per una frequenza arbitraria Hzfb 2100= il passo di

incremento sarà15 1

44100

212100=

⋅=inc

, trovando infatti che si avrà proprio la

frequenza percepita Hzfb 21001

2144100

=⋅⎟⎠⎞

⎜⎝⎛=

. Volendo inoltre sintetizzare

13 Estensione complessiva del vettore segnale. 14 In pratica il valore che influenza la fase “ph” del ciclo di lettura dell’array A(indx=int(ph)). In caso di inc=1 si avrà che ph=ph+1 quindi l’indice (o puntatore dell’array) è unitario (indx=1), o meglio corrisponderà ad ogni Nni ∈ (si prende un valore alla volta).

Page 114: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 114 -

solo 2=T periodi si avrà una durata complessiva del segnale pari a

( ) sec00095238.44100

421≈=⋅= TTN

Srt

. Il valore della fase iniziale non

influenza ovviamente la frequenza e ponendo i gradi pari a 0=on si avrà fase

0=ph .

Tornando al codice, dopo l’implementazione di queste operazioni, seguono una serie di

costanti per la formattazione degli elementi grafici. Questi valori saranno utili nella stessa

routine del ciclo di lettura dell’array. Tale routine va da 1=i alla grandezza massima del

periodo TN . L’indice indx è derivato dalla parte intera della fase Ph e consente di

accede in modo sequenziale alla tabella per l’estrazione di ogni valore.

Subendo determinate operazioni16, l’array di punti viene così posto in uscita17 mediante

comando di posizionamento grafico print #1, “PLACE x,y”. Si passa in seguito

all’operazione di incremento della fase incPhPh += , un aggiornamento in base al

suo stato precedente aumentato di inc .

L’istruzione condizionata successiva permette di ripetere l’intero periodo della funzione, se

solo se il ciclo termina con TNPh > , mediante azzeramento dell’indice derivato dalla

fase. Si passa quindi alla visualizzazione degli assi x, y del grafico ed al valore dei punti

della tabella generata.

16 In particolare: traslazione, inversione e ridimensionamento dei punti dell’output grafico, per una sufficiente visualizzazione della funzione. 17 È possibile modificare l’algoritmo in maniera da scrivere i dati ricavati direttamente su file sequenziale, creando un file grezzo (.row) a meno della dichiarazione di uno specifico header. Tale file potrà essere letto mediante editor che lo supporti, dichiarando una certa frequenza di campionamento e bit di quantizzazione per ottenere un segnale audio.

Page 115: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 115 -

Il valore della fase Ph , che gestisce l’incremento nel ciclo, può essere frazionario al fine

di ottenere un valore qualsiasi di frequenza18; all’array ( )TNA si accederà sempre con

indici interi mediante )int( ph , senza causare errori di “out of range”. Si può in fine

notare che le tabelle contengono 20=TN punti effettivi, ma occorrono 1+TN

valori per il completamento della funzione sullo zero (aggiunta di guard point). L’algoritmo

non impone grandezze NN 2= , cosa che invece avviene in alcuni linguaggi di sintesi.

Si riportano di seguito alcuni test ottenuti con differenti parametri di input:

(a) (b)

18 Per variare la frequenza di generazione è possibile leggere due volte ogni valore della tabella [ ] iniA = in modo da aumentare il periodo TN e quindi diminuire la frequenza. Tuttavia in questo caso si

porta al massimo ad un raddoppio dell’indice i2 e quindi ad un raddoppio della grandezza del vettore. Simmetricamente è possibile leggere la tabella saltando ogni volta un valore tale che venga dimezzata la grandezza di TN e quindi sia raddoppiata la frequenza di generazione. A questo corrisponde un indice

i2/1 . Tuttavia la variazione di grandezza di TN è una tecnica non molto pratica e conviene almeno rendere il valore della fase frazionario.

Page 116: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 116 -

(c) (d) (e)

(f)

Page 117: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 117 -

(g) (h)

Fig. 9 a) Periodo di tabella sinusoidale, b) triangolare An=1/(2n+1)2, c) quadra An=1/(2n+1), d) dente di sega An=1/n, e) seno sfasato di 90°, f) periodi consecutivi TN*3,

ph=180°, g) risultato con f=1Khz, h) completamento con zeri TN>A(i)

Si può notare che la disposizione dei punti non è sempre precisa ed è comunque priva di

una forma di interpolazione19. Presupponendo che la forma d’onda semplice sia posta in

output al convertitore, le discontinuità e le imperfezioni si tradurranno in una distorsione

armonica (introduzione di armoniche superiori) del segnale. In base alla fig.9-h è

interessante notare inoltre che se la grandezza iniziale del vettore TN è maggiore del

numero di elementi effettivi della tabella )(iA vi sarà un completamento automatico di

tanti zeri fino al termine di ogni ciclo. Nell’esempio avendo posto 40=TN elementi,

1=T , ed indici complessivi di )(iA pari a 21=i , si avranno 40-21=19 zeri di

completamento a partire dal 21° indice.

19 Aggiunta di punti intermedi calcolati in base ai valori del campione precedente e successivo. La posizione dei punti intermedi aggiunti tra tutti i campioni del periodo, garantisce un aumento di risoluzione del segnale e può essere ottenuta mediante interpolazione lineare, binomiale ecc. Si demanda a fonti disponibili in letteratura per informazioni dettagliate sui metodi di interpolazione.

Page 118: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 118 -

L’esempio di oscillatore wavetable sopradescritto permette di ottenere successioni di

numeri che si ripetono costantemente nei cicli di lettura, ad ampiezza e frequenza base

costante. Il segnale periodico così ottenuto è rappresentabile teoricamente mediante serie

di Fourier [De Poli, pag.16], corrispondente in dominio continuo a:

E.14 ( ) ( )k

M

kk kftcAts ϕπ += ∑

=

2cos1

Dove kc è l’ampiezza in modulo della singola componente k e kϕ è la fase. Seguono i

parametri ampiezza A e pulsazione ω . Nel caso di tabulazione sinusoidale, l’onda è

priva di M armoniche superiori ed il valore di fase e ampiezza esiste solo per 1=k

(il fondamentale).

Anche in questo caso è possibile sfruttare, mediante prodotto vettoriale, una seconda

funzione tabulata per il controllo di uno o più parametri dell’oscillatore wavetable.

Un semplice controllo dell’ampiezza nel tempo può essere rappresentato con:

Fig. 10 Oscillatore wavetable controllato in ampiezza da LFO (low frequency oscillator)

Page 119: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 119 -

La funzione di inviluppo del secondo oscillatore è composta anch’essa da N punti

formanti in tal caso quattro spezzate di retta per ottenere un classico ADSR lineare.

Il controllo può agire su diversi parametri dell’oscillatore20 ed in generale è utile per

applicazioni di sintesi di spettri dinamici.

Casi di sintesi leggermente più complessi, come ad es. la wavetable additive syntesis,

prevedono l’implementazione di più oscillatori a forma d’onda fissa. Nell’additiva table

look-up lo spettro è dato dalla somma di k componenti tabulate. Diviene ad es. possibile

sintetizzare suoni periodici mediante la somma di più armoniche, di frequenze multiple

intere del fondamentale, che si evolvano anche nel tempo:

E.15 ( ) ( ) ( )k

M

kk kfttAts ϕπ +=∑

=

2cos1

Il parametro di ampiezza in funzione del tempo potrà essere definito mediante funzione

tabulata, la cui frequenza sia minore21 di quella impiegata per l’oscillatore audio.

In base alla E.14-15 si potrà definire l’equazione della sintesi additiva wavetable look-up

con inviluppo:

E.16 ( ) ( ) ( )k

M

kk kftctAts ϕπ += ∑

=

2cos1

Ogni addendo della sommatoria corrisponde ad una forma d’onda cosinusoidale tabulata,

e controllata dalla funzione inviluppo. Ponendo il caso che anche le frequenze di ogni

oscillatore siano funzione del tempo si ha formalmente:

E.17 ( ) ( ) ( )[ ]{ }kk

M

kk tttAts ϕω +=∑

=

cos1

20 Un ulteriore parametro può essere rappresentato dalla lettura retrograda del vettore numerico A(i), ponendo l’incremento negativo ph=Ph-inc tale che si possa puntare al valore dell’indice precedente. 21 Solitamente la frequenza della funzione di controllo è pari all’inverso della durata del segnale audio.

Page 120: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 120 -

Dove ( )tkω indica la pulsazione variabile in t della esimak − armonica.

A conclusione del capitolo si propone un modello non-standard di oscillatore virtuale, ossia

un algoritmo basato su costrutti iterativi FOR e istruzioni condizionali IF-THEN mediante il

quale è possibile generare funzioni quadre e rettangolari nel tempo. La computazione del

vettore x(i)=A è basata quindi su operazioni logiche e non sul calcolo matematico del

valore di ogni campione successivo, procedimento che è invece alla base dell’oscillatore

virtuale standard:

%------------------------------------------------------------- % Onda quadra ad ampiezza unitaria % da utilizzare in workdir assieme % alle funzioni da caricare %------------------------------------------------------------- clc close all clear vt=linspace(0,0.01,500); %vettore dei tempi A=1; %valore del primo campione cnt=0; for i=1 : 500, if cnt<50 %ogni 50 campioni mantiene costante il campione corrente cnt=cnt+1; else cnt=0; A=-A; %ogni 50 campioni inverte l'ampiezza end x(i)=A; %vettore dei campioni del ciclo end plot(vt,x, 'k'); axis([0 0.01 -1.2 1.2]); %formattazione degli assi del grafico: xmin,xMax ymin,yMax xlabel('vettore dei tempi [vt]'); ylabel('y'); title('Onda quadra'); %------------------plot spettro FFT con calcolo db %figure %SR=44100 %ay=abs(fft(x)); %ay=ay(1:round(length(x)/2)); %FFT %fax=(0:length(ay)-1)*SR/2/length(ay); %asse tempi per lo spettro %plot(fax,mydb(ay,0),'k'),title('spettro SR/2'),ylabel('dB'),axis tight %------------------plot spettro FFT, ampiezza secondo valore reale figure SR=44100 Nfft=10000 fn_spettroDFT(x,SR,Nfft)

L’operazione iniziale riguarda la definizione del vettore lineare monodimensionale VT a

cui sono associati gli indici d’ascissa dei valori. Segue l’incremento di una variabile

Page 121: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 121 -

(contatore) che definirà il valore dei campioni del periodo, ponendo A=1 per cnt<50 ed

A=0 per cnt>50 dove si ha quindi un duty cycle22 %50=δ ; infatti con periodi di

campioni 1005050

22=+=

∆+

∆=∆

TTT

corrisponde per l’appunto

T21

5.010050

⇒==δ, affermando che %50=δ per ogni 100 campioni su

500 complessivi23. Si riporta di seguito il risultato grafico della funzione, al quale si

presuppone un ipotetico valore di picco unitario:

Fig. 11 Oscillatore non standard e risultato di una funzione quadra con %50=δ

22 Si definisce duty cycle il rapporto ( ) T

t

tt

t 1

21

1 =+

=δ , dove 21,tt sono i momenti (o durate

temporali) dei semiperiodi. Quindi il periodo di funzione è quadro ponendo 21 tt = . 23 Con 500=N si avranno 5100/500 = periodi.

Page 122: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE A – Oscillatore virtuale e sintesi wavetable look-up Stefano Silvestri

Rev. 2 A.A. 08/09 - 122 -

Il contenuto spettrale di questa forma d’onda è formalmente definibile in base alla funzione

ideale di decadimento delle ampiezze del segnale quadro:

E.18 ( )12/1 += nAn

Dove con 12 +n si intendono ordini dispari di armoniche, 0A è l’ampiezza del

fondamentale a cui seguono gli esimin − ordini superiori. Per poter definire la

frequenza di questa funzione periodica si quantifica idealmente

sec2/1500⇒=N , per cui ponendo KhzSr 1.44= si ha che ogni periodo

( ) msSrT 26.2/1100 ≈= per cui la frequenza fondamentale sarà

Hzf 44100226.0/10 ≈= . In base al teorema di Fourier, una forma d’onda

quadra è ottenuta teoricamente da una serie infinita di armoniche dispari, ma nel discreto

si può produrre una funzione nel tempo grafica, tralasciando la sintesi delle note proprietà

spettrali. La Fig.11 può essere ugualmente analizzata mediante DFT, ottenendo il

seguente risultato:

Fig. 12 Spettro della funzione quadra mediante DFT

Page 123: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE B – Elenco degli esempi sonori e delle figure Stefano Silvestri

Rev. 2 A.A. 08/09 123

APPENDICE B: Elenco degli esempi sonori e delle figure

N° Evento Caratteristica Cap. Fig. Pag. Algoritmo1 Test 1 Analisi nel tempo ed FFT del segnale TEST

1, Tcm quadro 2.0 5 16 Alg.1

2 Test 1 periodo di inviluppo contenente Tcm non lineari (f3), Fcm=1Hz, Fn>20Hz

// 6 17 //

3 Test 1 Analisi nel tempo ed FFT del segnale TEST 1 con Fcm=40Hz e itenv=1

// 7 18 //

4 Test 2 Analisi TEST 2, con Fcm=40Hz e switching di spettri diversi di pari fondamentale

// 8 19 //

5 Test 8 Analisi TEST 8, fcm<20Hz, f0>20Hz (;kenv commentato)

// 9 24 Alg.2

6 Test 5 Analisi TEST 5 con finestratura, TEST 5 privo di finestratura

// 10 25 //

7 Test 1 Problema di shifting delle fasi commutazione-finestratura, TEST 1

// 12 27 //

8 Test 0 frequenza di multiplex 1Hz e durata nota 5sec

// 17 40 Alg.4

9 Test 4 Fmux=20Hz, fD0= fD1= fD2= fD3=1000Hz // 18 41 // 10 Test 7 Fmux>20Hz, fD0= 1000, idist=2 // 19 42 // 11 Test 8 Fmux variabile in P3, ifD0=40Hz, idist=2 // 20 // // 12 Test 6 glissando frequenza Multiplex // 21 43 // 13 Test 1 glissando di fmux fino alla condizione stabile

Tn=Tmux o Tcm, con Itabn=f4 // 22 44 //

14 Pd_test control osc congruenziale_di Lehmer

Punti discreti ed interpolati della sequenza pseudo-casuale uniforme

3.0 2 59 Alg.9

15 Pd_test control osc randomWalks

V.a. discrete ed interpolate e passi corrispondenti del Random Walks

// 8 71 Alg.11

16 Pd_test control osc BrownianWalks

Esito del Brown Walks nel tempo in base agli stati dei Random Walks

// 10 79 Alg.14

Tab. 1 Elenco dei test formali con figure

N° Alg. 4: “WavetableSimulatedMultiplexPhasor1.csd” 17 WavetableSimulatedMultiplexPhasor1_Test 1.wav 18 WavetableSimulatedMultiplexPhasor1_Test 2.wav 19 WavetableSimulatedMultiplexPhasor1_Test 3.wav 20 WavetableSimulatedMultiplexPhasor1_Test 4.wav 21 WavetableSimulatedMultiplexPhasor1_Test 5.wav 22 WavetableSimulatedMultiplexPhasor1_Test 6.wav 23 WavetableSimulatedMultiplexPhasor1_Test 7.wav 24 WavetableSimulatedMultiplexPhasor1_Test 7a.wav 25 WavetableSimulatedMultiplexPhasor1_Test 8.wav 26 WavetableSimulatedMultiplexPhasor1_Test9.wav 27 WavetableSimulatedMultiplexPhasor1_Test10.wav 28 WavetableSimulatedMultiplexPhasor1_Test11.wav 29 WavetableSimulatedMultiplexPhasor1_Test12.wav 30 WavetableSimulatedMultiplexPhasor1_Test13.wav 31 WavetableSimulatedMultiplexPhasor1_Test14.wav 32 WavetableSimulatedMultiplexPhasor1_Test15.wav 33 WavetableSimulatedMultiplexPhasor1_Test16.wav 34 WavetableSimulatedMultiplexPhasor1_Test17.wav 35 WavetableSimulatedMultiplexPhasor1_Test18.wav

Tab. 2 Parte degli esempi sonori ottenuti con l’algoritmo n°4

Page 124: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

APPENDICE B – Elenco degli esempi sonori e delle figure Stefano Silvestri

Rev. 2 A.A. 08/09 124

N° Algoritmo “WavetableSimulatedMultiplexPhasor0.csd” 36 WavetableSimulatedMultiplexPhasor0_Test 0.wav 37 WavetableSimulatedMultiplexPhasor0_Test 1.wav 38 WavetableSimulatedMultiplexPhasor0_Test 2.wav 39 WavetableSimulatedMultiplexPhasor0_Test 3.wav 40 WavetableSimulatedMultiplexPhasor0_Test 4.wav 41 WavetableSimulatedMultiplexPhasor0_Test 5.wav 42 WavetableSimulatedMultiplexPhasor0_Test 6.wav 43 WavetableSimulatedMultiplexPhasor0_Test 7.wav 44 WavetableSimulatedMultiplexPhasor0_Test 8.wav 45 WavetableSimulatedMultiplexPhasor0_Test 9.wav 46 WavetableSimulatedMultiplexPhasor0_Test 10.wav 47 WavetableSimulatedMultiplexPhasor0_Test 11.wav

Tab. 3 Parte degli esempi sonori ottenuti con la versione precedente di Alg.4

N° Algoritmo “St_Wavetable Multiplexing_2Bit_1.pd” 48 St_WavetableMultiplexing_2Bit_low1.wav 49 St_WavetableMultiplexing_3Bit_1_high1.wav 50 St_WavetableMultiplexing_3Bit_1_inarm2.wav 51 St_WavetableMultiplexing_3Bit_1_inarm3.wav N° Algoritmo “St_Wavetable Multiplexing_2Bit_mlt.pd” 52 St_WavetableMultiplexing_2Bit_mlt_high1.wav 53 St_WavetableMultiplexing_2Bit_mlt_low1.wav 54 St_WavetableMultiplexing_2Bit_mlt_MidTonic1.wav 55 St_WavetableMultiplexing_2Bit_mlt_MidTonic2.wav 56 St_WavetableMultiplexing_2Bit_mlt_MidTonic3.wav N° Algoritmo “St_Wavetable Multiplexing_3Bit_1.pd” 57 St_WavetableMultiplexing_3Bit_1_inarm3.wav 58 WavetableMultiplexing_3Bit_1_low1.wav

Tab. 4 Parte degli eventi generati in Real Time, con parametri stocastici

N° Algoritmo “St_WavetableSimulatedMultiplexPhasor3.csd” con partiture generate in “RandomScore”

59 mid-tonic1.wav 60 midLow-inarm2.wav 61 mid-inarm4b.wav 62 high1_j3.wav 63 high1_prova.wav 64 high4.wav

Tab. 5 Parte degli eventi generati in tempo differito, con partiture stocastiche

I file riportati nelle tabelle sono contenuti, in ordine numerato, nel CD audio allegato alla

tesi. Per tutti gli altri esempi sonori di test o compositivi si demanda alle partiture e preset.

Page 125: MINISTERO DELL’UNIVERSITA’ E DELLA RICERCAelettroacustica.pbworks.com/w/file/fetch/23864177/tesi... · 2020. 7. 29. · attività musicali tecnologiche e le applicazioni tecnico-scientifiche,

125

BIBLIOGRAFIA [1] L. Pallottini, (1985). Sistemi ed Automazione Vol.I, Edizioni Cupido – Bologna.

[2] A. Bossi, E. Sesto (1994). Elettronica Pratica, Editoriale Delfino – Milano.

[3] D. T. Horn, (1988). Il Sintetizzatore, Franco Muzzio Editore – Padova.

[4] C. Dodge, T. A.Jerse, (1997). Computer Music, Schirmer Books – New York.

[5] A. Di Scipio, (1995). Teoria e prassi della musica nell’era dell’informatica,

Giuseppe Laterza Editore.

[6] R. Bianchini, A. Cipriani, (2000). Il suono virtuale, Contempo Edizioni – Roma.

[7] M. Del Duca, (1987). Musica digitale, Franco Muzzio Editore – Padova.

[8] A. Grande, (2007). Musica con PD, Gruppo editoriale L’espresso S.p.A. – Roma.

[9] M. Molluzzo, (1997). Introduzione ai processi stocastici: Le catene di Markov,

Edizioni Tecnos – Milano.

[10] G. Galati, G. Pavan, (2006). Teoria dei fenomeni aleatori, Texmat – Roma.

[11] S. Scippapercola, (1995). Le basi della statistica computazionale, Rocco Curto

Editore – Napoli.

[12] G. Naldi, L. Pareschi, (2007). Matlab, concetti e progetti, Apogeo.

[13] D. M. Etter, D. C. Kuncicky (1999). Introduzione a Matlab, Apogeo.

[14] A. Guerraggio, (1999). Matematica generale, Bollati Boringhieri.

[15] A. Bertossi, (2004). Algoritmi e strutture di dati, (Appendice A), UTET libreria.

ARTICOLI

[1a] R. Bristow-johnson. Wavetable Synthesis 101, A Fundamental Perspective, Wave

Mechanics, Inc.

[2a] G. De Poli, Tecniche numeriche di sintesi della musica, C.S.C. – uni. Padova.

[3a] A. Di Scipio, (1998). Compositional Models In Xenakis’ Electroacoustic Music,

printed in Perspectives of New Music, Seattle, USA, 36(2).

DISPENSE

[1b] G. De Poli, C. Drioli, F. Avanzini (1999), Sintesi dei segnali audio, (Cap.5),

dipartimento di ingegneria, università di Padova.

[2b] Prof. A. Di Scipio, Corso di informatica musicale III, acustica e psicoacustica II&III.

[3b] Prof. S.Cavaliere, Corso esterno di Elaborazione numerica dei segnali per la

multimedialità, (Dip.Fisica, Fed.II, NA).

[4b] D.Rocchesso, (1998). Elaborazione del suono, appunti del corso di informatica

musicale, C.S.C. – Università di Padova, centro tempo reale.