PRESENTAZIONE DELLA

"SLMI"

STAZIONE DI LAVORO MUSICALE INTELLIGENTE

(Intelligent Music Workstation)

 

Goffredo Haus, Direttore Scientifico

LIM-DSI, Universita' degli Studi di Milano

 

L'idea del progetto "Stazione di Lavoro Musicale Intelligente" nasce dall'esigenza di rendere disponibile un ambiente unico per l'elaborazione numerica dell'informazione musicale e audio, in cui si integrino tanto le applicazioni software e hardware commercialmente reperibili con i più flessibili ambienti informatici sviluppati presso i centri di ricerca del settore.

L'obiettivo centrale è di fornire uno strumento per potenziare la produttività individuale del creativo operante in campo musicale, sia esso un compositore, un interprete, un editore, un musicologo, un produttore musicale o altro ancora.

Questo progetto muove anche dalla considerazione che, dal punto di vista scientifico, l'Informatica Musicale delinea un campo di investigazione complesso: la musica costituisce un dominio in cui verificare e sviluppare proficuamente sia metodologie che applicazioni propriamente informatiche.

L'Informatica Musicale non è tuttavia un mero settore applicativo dell'informatica, privo quindi di originali contributi scientifici. Una significativa mole di risultati, soprattutto a livello teorico, conferma il ruolo importante che tale disciplina ha assunto ormai anche dal punto di vista puramente informatico.

L'attività di ricerca e sviluppo della SLMI si colloca in questo contesto internazionale come attività "ponte" tra la ricerca pura e l'applicazione industriale; con tali linee guida, si è inteso conseguire i seguenti obiettivi :

1) realizzazione e sperimentazione di un'interfaccia utente evoluta (grafica spinta, linguaggi iconici, navigazione ipertestuale) per la SLMI;

2) integrazione di funzionalità musicali in un'unica stazione di lavoro con possibilità di intervento da parte dell'utente ai vari livelli di rappresentazione dell'informazione musicale che caratterizzano i diversi ambiti operativi del settore;

3) integrazione dei moduli applicativi commerciali con i moduli applicativi prototipali della SLMI;

4) validazione della SLMI mediante attività pilota di utenze specifiche del settore.

Rispetto ai prodotti attualmente disponibili sul mercato internazionale, la SLMI costituisce un nuovo tipo di prodotto, pur nella sua veste prototipale, in cui le funzionalità usualmente separate sono integrate in un unico e più accessibile ambiente di lavoro; l'effetto principale è un sensibile incremento di produttività, considerando la stazione di lavoro tanto nella sua completezza (eventualmente in differenti versioni corrispondenti a vari livelli di prestazioni), quanto considerando i suoi ambienti operativi specifici messi a disposizione dall'interfaccia ipertestuale; gli ambienti predisposti sono orientati alla composizione musicale, alla performance musicale e multimediale, all'analisi/sintesi di partiture, all'orchestrazione, al laboratorio audio digitale, al mastering di supporti audio.

Inoltre, la SLMI è un ambiente aperto a cui si possono aggiungere e togliere moduli applicativi e quindi organizzarli nei più svariati modi per rendere più efficienti le modalità di utilizzo della SLMI stessa da parte dell'utente finale. In pratica la SLMI consiste in un insieme di moduli applicativi che possono essere utilizzati in una qualsivoglia combinazione e integrati con un qualsivoglia insieme di moduli applicativi commerciali per costituire ambiti operativi specifici, realizzabili direttamente dall'utente mediante gli strumenti messi a disposizione dall'interfaccia ipertestuale. Questi nuovi ambienti si aggiungeranno o si sostituiranno a quelli già disponibili nel nostro prototipo.

 

Architettura della SLMI.

 

La SLMI si configura come un insieme di moduli hardware e software organizzati in modo gerarchico.

In prima approssimazione, il sistema è strutturato a quattro livelli:

 

0. Livello hardware:

Sistema di elaborazione general purpose.

Moduli per la elaborazione numerica di suoni.

Dispositivi per la registrazione e la riproduzione del suono.

Dispositivi di controllo e distribuzione di segnali (patchbay MIDI e di segnali audio, mixer).

 

1. Livello S/W 1:

Moduli a basso livello per le attività di analisi-sintesi del suono, la costruzione e l'elaborazione di campioni e modelli timbrici e la produzione di master audio numerici.

 

2. Livello S/W 2:

Moduli ad alto livello per le attività di composizione, analisi/sintesi di testi musicali e di strutture di testi musicali, performance musicale e audio visuale, orchestrazione, DTP musicale.

 

3. Interfaccia utente:

Interfaccia utente ad alto livello di tipo ipertestuale.

 

Nel seguente diagramma funzionale sono rappresentati i livelli S/W 1 e 2.

 

 

Nel diagramma precedente sono riportati i collegamenti funzionali esistenti all'interno della SLMI. A parte i comandi MIDI, che attualmente costituiscono l'unico tipo di comunicazione fra i diversi ambienti hardware/software in cui è stata organizzata la SLMI (Macintosh e NeXT), i moduli comunicano mediante file il cui tipo di formato è specificato nel seguente elenco:

 

• SMF: Standard MIDI File formato 0 e 1;

• PNF: file prodotti e letti da ScoreSynth contenenti modelli di Reti di Petri;

• TCF: file di formato Tab Converter;

• PCF: file di formato Professional Composer;

• SSF: file prodotti da ScoreSegmenter risultanti da un'operazione d'analisi;

• SDF: file di formato Sound Designer;

• LTF: file prodotti da LASy Workbench;

• SND: file sonori di formato NeXT.

 

Come gia accennato in precedenza, oltre ai file, i moduli della SLMI comunicano fra loro e con l'esterno mediante canali di informazione alternativi (sia logici che fisici), quali ad esempio i messaggi MIDI.

Il diagramma riportato in seguito illustra, ad alto livello, le funzionalità operanti in tempo reale della SLMI, i messaggi presenti nei canali di comunicazione sono:

 

• MIDI: messaggi MIDI;

• TAB: parametri di sintesi;

• DS/AS: segnale digitale/analogico;

• MMT: collegamento virtuale effettuato mediante MIDI Management Tools.

 

I collegamenti illustrati sono in verità virtuali in quanto all'interno della SLMI alcuni moduli entrano in concorrenza specialmente per quanto riguarda l'utilizzo del DSP, tale vincolo porta alle seguenti conclusioni:

• Waver, LASy e il Driver MIDI/DSP richiedono l'uso del medesimo DSP, non è possibile quindi eseguirli contemporaneamente;

• ScoreSynth, MusSer, Traslitteratore, Temper, Functional Performer non possono essere utilizzati contemporaneamente sul medesimo calcolatore in quanto richiedono una continua interazione con l'utente e quindi un continuo utilizzo del display;

• Il Sequencer MIDI/DSP può comunicare mediante i MIDI Management Tools (MMT) con tutte le applicazioni che possiedono tale tipo di interfaccia, ad esempio i moduli della SLMI: ScoreSynth, Functional Performer e il Driver MIDI/DSP. Quest'ultimo può essere utilizzato parallelamente in quanto il Sequencer MIDI/DSP opzionalmente disattiva il possesso della scheda;

• Il Driver MIDI/DSP comunica mediante MMT con tutte le applicazioni interfacciabili, ad esempio all'interno della SLMI con i moduli ScoreSynth, Functional Performer e Sequencer MIDI/DSP;

• FilterAut, CellAut, VoiceLab richiedono contemporaneamente l'uso dell'unico DSP disponibile attualmente in ambiente NeXT, ciò esclude l'esecuzione parallela sul medesimo calcolatore;

• L'interfaccia MIDI mette in comunicazione le applicazioni agenti su diversi calcolatori, è possibile infatti un'eventuale comunicazione fra i due ambienti controllando ad esempio VoiceLab mediante il Sequencer MIDI/DSP.

Il livello "Interfaccia utente" è costituito da un insieme di moduli intercambiabili che operano su un insieme di stack attivi di HyperCard, per le seguenti attività: gestione delle richieste utente; presentazione di risultati/diagnostiche in formati standard; presentazione di oggetti/entità ad un livello di astrazione adatto ad un utente che intende operare in un particolare sotto ambiente.

 

Librerie disponibili nella SLMI

 

I moduli della SLMI hanno accesso in lettura e scrittura a un insieme di librerie che costituiscono uno degli elementi costitutivi essenziali della SLMI stessa; in questo paragrafo vengono succintamente descritte tali librerie; nel Rapporto tecnico R3 ("Specifiche funzionali dei moduli della STAZIONE DI LAVORO MUSICALE INTELLIGENTE") saranno dettagliati i vincoli relativi agli accessi per ogni singolo modulo.

 

Libreria di reti di Petri "macro"

Il modulo ScoreSynth ha accesso ad una libreria di esempi di reti "macro" ovvero un insieme di costrutti di reti di Petri che sono descritti in forma parametrica e che possono essere invocati mediante parametri formali per valore. Questa libreria è stata progettata per rendere disponibile quell'insieme di costrutti che ricorrono sovente nello sviluppo di modelli di partiture con reti di Petri e rendere perciò più efficiente la fase di editing dei modelli formali.

 

Libreria di routine di lettura/scrittura di Standard MIDI File v 1.0

Questa libreria (costituita da una cinquantina di routine) costituisce un vero e proprio modulo della SLMI e come tale sarà descritta più succintamente nel prossimo paragrafo. E' stata progettata per rendere disponibile in forma standard a tutti i ricercatori del presente progetto un valido strumento di comunicazione fra i moduli applicativi reperibili in commercio e i moduli della SLMI. Tanto le applicazioni commerciali quanto i moduli della SLMI hanno funzionalità di import/export di file a livello di partitura MIDI come SMF v 1.0.

 

Libreria di patch timbriche per microprogrammi del DSP Motorola 56001

Il modulo Sequencer MIDI-DSP consente di variare parametricamente il modello timbrico corrente mediante patch timbriche; ogni microprogramma sviluppato per tale modulo ha a disposizione un corredo di patch timbriche (analogamente a quanto accade per i preset dei sintetizzatori MIDI) organizzati in una libreria di 128 suoni accessibile dal sequencer. L'utente di quest'ultimo potrà ovviamente sviluppare le sue specifiche patch timbriche e aggiungerle alla libreria sviluppata nell'ambito del presente progetto.

 

Primitive Sonore

Il modulo di TimbreLab utilizza un insieme di funzioni mediante le quali è possibile realizzare tutte le tecniche di sintesi sonora.

La libreria è strutturata in cinque sezioni le quali evidenziano i diversi utilizzi durante la fase di programmazione timbrica:

1) Generatori di onde inviluppo

2) Generatori di rumore

3) Oscillatori

3) Tool

5) Funzioni di nuova creazione.

Le prime tre sezioni hanno un significato intuitivo, la sezione dedicata ai tool comprende tutte le funzioni agenti sul segnale prodotto dai generatori: sincronizzatori, interruttori, funzioni di ritardo, filtri...

L'ultima sezione contiene attualmente qualche esempio, essa è dedicata alle funzioni realizzate dall'utente.

 

Libreria di patch timbriche del Driver MIDI/DSP

Il modulo Driver MIDI-DSP ha introdotto un ampliamento del formato Patch timbriche per microprogrammi (Patch File). Ora è possibile avere contemporaneamente a disposizione 128 serie (bank) di 128 suoni ciascuno, sempre organizzati in una libreria accessibile al Driver MIDI/DSP. E' da sottolineare che mentre il Driver MIDI/DSP legge i Patch File del Sequencer MIDI/DSP essendone un ampliamento, quest'ultimo non può leggere i Patch File del Driver a meno che questo non sia a bank singolo. Tramite il Driver MIDI/DSP l'utente potrà ovviamente sviluppare nuove patch e aggiungerle alla libreria sviluppata nell'ambito del presente progetto.

 

Banca timbrica di campioni sonori

Il modulo SampleBuster è basato su una banca timbrica di campioni sonori costituita da circa 7.000 elementi delle seguenti famiglie timbriche originali:

f1) MUMS (McGill University Master Samples)

f2) Sound Examples (M.I.T.)

f3) AKAI S900 Samples Library

f4) AKAI S950 Samples Library

f5) AKAI S1000 Samples Library

f6) libreria di suoni campionati del L.I.M.

Le famiglie timbriche f1 ed f2 sono memorizzate su CD-DA (Compact Disc Digital Audio); le famiglie f3, f4, f5 ed f6 sono memorizzate su dischi magnetici. Tali campioni non sono disponibili all'interno della stazione di lavoro in quanto non costituiscono materiale originale del Laboratorio di Informatica Musicale, ma provengono dall'esterno.

Ovviamente è possibile utilizzare e organizzare campioni provenienti da qualsiasi biblioteca, essendo i criteri ed i formati scelti per la caratterizzazione dei campioni di carattere assolutamente generale.

 

 

Standard utilizzati nell'implementazione

 

Al fine di rendere i moduli della SLMI integrati pienamente con i moduli applicativi reperibili in commercio è stato convenuto di adottare un insieme

di standard per la codifica dei dati e per lo sviluppo del software di cui i seguenti sono i più rilevanti:

s1) MIDI Management Tools : come ambiente MIDI standard per lo sviluppo di moduli che, contemporaneamente attivi nel sistema, utilizzano il protocollo MIDI; consente di connettere logicamente in tempo reale i flussi MIDI in ingresso e in uscita ai/dai vari moduli della SLMI e ai/dai moduli commerciali implementati nel medesimo ambiente; in tal modo i vari moduli si scambiano flussi di dati in tempo reale consentendo così di costruire applicazioni più complesse combinando opportunamente i singoli moduli;

s2) Standard MIDI File v.1.0 : come standard per la codifica dei file contenenti partiture a livello MIDI; consente di scambiare tali informazioni tra tutti i moduli della SLMI e con i moduli commerciali che operano a livello di partitura MIDI;

s3) Digidesign Soundfile : come standard per la codifica di dati di tipo sonoro (campioni sonori, master digitali); consente di scambiare dati di tipo sonoro tra tutti i moduli di editing, di registrazione, di sintesi e di analisi del suono in forma numerica.

 

 

Ambienti della SLMI

 

In questo paragrafo sono brevemente discusse le funzionalità di alto livello della SLMI che possono configurarsi come ambiti operativi specifici per l'utente finale, sia in relazione ai moduli propri della SLMI che in relazione a moduli applicativi reperibili in commercio.

 

Composizione

L'attività di composizione musicale può anche essere realizzata combinando la scrittura tradizionale resa possibile dai programmi composer commerciali insieme con la scrittura non tradizionale basata su reti di Petri, oggetti musicali e algoritmi con il modulo ScoreSynth. Per la composizione di opere musicali di natura seriale è stato realizzato MusSer, un modulo specifico per la generazione di serie musicali equilibrate con un qualsivoglia temperamento equabile a n gradi (con n pari). Gli oggetti musicali argomento degli algoritmi definiti nei modelli ScoreSynth possono essere derivati tanto da moduli applicativi commerciali via Standard MIDI File che dal modulo MusSer o anche dal modulo ScoreSegmenter che decompone in oggetti musicali intere partiture precedentemente codificate.

E' in corso la realizzazione del modulo ModelSynth, il quale, ricevendo in ingresso il risultato della computazione di ScoreSegmenter, sintetizza reti di Petri.

 

Analisi/sintesi testi musicali

La trasformazione di testi musicali preesistenti è una peculiare funzionalità della SLMI resa possibile dall'uso combinato dei moduli ScoreSegmenter (per l'analisi della partitura e la sua decomposizione in oggetti musicali), ScoreSynth (per la sintesi di trasformazioni della partitura mediante modelli di reti di Petri) e Functional Performer (per la sintesi di trasformazioni della partitura mediante operatori in tempo reale).

Il modulo ModelSynth costituisce il collegamento responsabile della comunicazione fra i moduli ScoreSynth e ScoreSegmenter.

 

Analisi strutture testi musicali

Il modulo ScoreSegmenter, come già accennato qui sopra, consente di identificare gli oggetti musicali di cui è composta una partitura. Comprende numerose opzioni per segmentare e riesce a riconoscere con una particolare affidabilità i brani musicali in forma di fuga o di sonata. E' quindi uno strumento essenziale e fortemente innovativo di supporto al musicologo e in generale allo studioso dei testi musicali.

 

Performance musicale

Il modulo Functional Performer permette di eseguire brani musicali attivando da tastiera ASCII funzioni musicali che vengono applicate ad oggetti musicali predisposti precedentemente o tramite moduli SLMI o tramite composer o sequencer commerciali in formato Standard MIDI File.

 

Performance audiovisuale

Il modulo TEMPER permette di eseguire automaticamente processi audio visuali costituiti da animazioni grafiche nello stile del pittore M. C. Escher e processi MIDI ottenuti per traslitterazione delle animazioni grafiche (interpretate come piani melodici).

 

Analisi-sintesi suono

In ambiente Macintosh è disponibile un modulo (microprogramma per DSP Motorola 56001) per l'analisi e la sintesi con la trasformata di Wavelet. In combinazione con programmi come Digidesign SoftSynth e Digidesign SoundDesigner é possibile confrontare e potenziare le caratteristiche della analisi-sintesi additiva per armoniche con quelle della analisi-sintesi mediante trasformata wavelet.

In ambiente NeXT é situato il modulo di VoiceLab dedicato alla sintesi del parlato. Esso è in grado di effettuare operazioni di analisi sul contenuto di Sound File formato NeXT provenienti da altre applicazioni, é disponibile inoltre il modulo FilterAut, il quale effettua la stima della frequenza della fondamentale di un segnale analogico.

 

Preparazione modelli timbrici

E' disponibile un ambiente sperimentale, in ambiente Macintosh, formato da un insieme di moduli (alcuni dei quali utilizzano dei microprogrammi per il DSP Motorola 56001) per la sintesi del suono secondo diversi modelli di sintesi.

Waver (Ambiente sperimentale per microprogrammi DSP per Sound Accelerator Card) consente di sperimentare in tempo reale tre tecniche di sintesi: Funzioni in due variabili, Waveshaping e l'uso della trasformata di Wavalet.

LASy Workbench implementa la sintesi sonora LASy (tecnica di sintesi che utilizza automi cellulari) in tempo reale.

Il modulo Driver MIDI/DSP realizza diverse tecniche di sintesi quali Waveshaping, Funzioni in due variabili, LASy, ricevendo in ingresso comandi MIDI in tempo reale attraverso il MMT.

TimbreLab consiste in un sistema ad architettura aperta per la programmazione timbrica che permette la realizzazione di tutte le tecniche di sintesi presenti in letteratura, differisce dai precedenti non permettendo l'ascolto del segnale prodotto in tempo reale.

In ambiente NeXT è disponibile il modulo CellAut dedicato alla sintesi sonora LASy in tempo reale.

 

Orchestrazione

L'attività di orchestrazione è una delle più complesse per il musicista; richiede un ciclo ipotesi-di-orchestrazione/sperimentazione-sonora/editing-dell'assetto-orchestrale che si ripete tante volte quante sono necessarie per il raggiungimento dell'obiettivo di tessitura timbrica ricercata; per questo è stato progettato un ambiente in cui siano operativi concorrentemente due tipi di moduli software: uno di supporto alla ricerca dei suoni nella banca di timbri disponibili (il modulo SampleBuster o gli ambienti per la sperimentazione timbrica nella SLMI) e l'altro per l'esecuzione dei brani nelle varie ipotesi di tessitura timbrica (un qualunque sequencer MIDI commerciale con il Driver MIDI/DSP o il modulo Sequencer MIDI-DSP nella SLMI, che consentono di controllare contemporaneamente unità di sintesi MIDI e DSP microprogrammati in tempo reale).

 

DTP musicale

Integrando i moduli della SLMI capaci di generare partiture (ScoreSynth, Functional Performer) con gli strumenti per il Desk Top Publishing musicale commerciali (ad es. il programma Finale della Coda Music Software), è possibile ottenere le partiture generate in notazione tradizionale e ai massimi livelli di qualità (fotocompositrici che accettano codici PostScript; es. Linotronics 100 P).

 

Produzione master audio numerici

I programmi sequencer commerciali, il modulo Sequencer MIDI-DSP e alcuni programmi e dispositivi di utilità (Digidesign DAT I/O, Digidesign SoundTools) consentono di registrare, prima a livello MIDI e poi come audio digitale su disco rigido SCSI, su nastro DAT e come audio analogico su nastri open reel, il master delle produzioni musicali.

 

 

Descrizione applicazioni software

 

Interfaccia SLMI

IMW Interface è un'interfaccia utente di tipo ipertestuale per la Stazione di Lavoro Musicale Intelligente. Il programma è stato implementato in ambiente HyperCard su computer Macintosh, per poter raggiungere l'alto grado di ipermedialità e di interazione richiesto da un'applicazione di questo tipo, sfruttando nello stesso tempo una grafica efficace. E' evidente che l'utilizzo dell'interfaccia ha senso solo insieme agli altri moduli della Stazione di Lavoro, almeno ad una parte di essi, e ai programmi commerciali.

 

SampleBuster

L'applicazione consiste nella gestione ragionata e guidata di una raccolta di campioni audio provenienti da diverse biblioteche e memorizzati con diversi formati fisici, utilizzabili in ambienti di produzione musicale professionali e non, con alcune utility per la gestione veloce delle apparecchiature esterne, collegate al sistema.

Ovviamente è possibile utilizzare e organizzare campioni provenienti da qualsiasi biblioteca, essendo i criteri ed i formati scelti per la caratterizzazione dei campioni di carattere assolutamente generale.

 

ScoreSynth 3.0

ScoreSynth 3.0, è un Editor/Esecutore/Debugger di Reti di Petri Musicali (RPM). Partendo dalla definizione di Reti di Petri posti/transizioni temporizzate dotate di capacità sui posti, di molteplicità sugli archi e morfismi di tipo raffinamento, alla definizione delle RPM si è giunti associando ai nodi di tipo posto il concetto di Oggetto Musicale e ai nodi di tipo transizione quello di Algoritmo di trasformazione degli Oggetti Musicali stessi. Un Oggetto Musicale è una sequenza di messaggi MIDI (Musical Instrument Digital Interface); un Algoritmo è una sequenza di Operatori Musicali applicabili sia ai parametri che specificano una nota: altezza, intensità, durata, timbro (canale MIDI); sia all'ordine in cui le note sono disposte all'interno di un Oggetto Musicale.

 

Score Segmenter

Obbiettivo dell'applicazione è la segmentazione di brani musicali quale primo passo per una varietà di applicazioni musicologiche ed in particolare per la strumentazione automatica mediante elaboratore. Si tratta cioè della ricerca ed identificazione dei vari oggetti musicali di cui è composto il brano, dove per oggetti intendiamo quei fraseggi o pensieri musicali che l'autore ha espresso e che ha ripreso e trasformato, secondo i vari canoni musicali.

E' possibile comunque un utilizzo dell'applicazione anche per effettuare ricerche di sequenze date fornite dall'utente in testi musicali.

 

Temper

Temper è un'abbreviazione per TEssellating Music PERformer, ovvero Esecutore di Musica Tassellante (musica generata automaticamente da tassellazioni). Deve intendersi per tassellazione una combinazione teoricamente infinita (ma in pratica limitata dalle dimensioni del disegno) di figure di uno o più tipi sul piano, in maniera tale che i loro contorni combacino perfettamente.

Mediante l'assegnazione di alcuni parametri, Temper permette la generazione e la produzione di sequenze musicali rigidamente determinate dalle tassellazioni che le generano, senza alcun ulteriore intervento umano; la corrispondenza è quindi tale da giustificare l'uso del termine "tassellante" per questo tipo di musica.

 

Traslitteratore

L'applicazione consente di realizzare in modo automatico, secondo alcune regole di traslitterazione, la trasformazione di un testo letterario in uno spartito musicale.

Traslitteratore consente altresì di ascoltare i brani ottenuti dalla traslitterazione, sia attraverso i suoni prodotti con il sintetizzatore interno al Macintosh oppure utilizzando uno o più strumenti musicali esterni collegati mediante l'interfaccia MIDI. Tale traduttore é in grado di tradurre anche i simboli di accelerando e ritardando che si possono inserire nel testo, ottenendo così un aspetto innovativo: in questo modo é infatti possibile rimuovere, in parte, quella sensazione di appiattimento espressivo caratteristico dell'elaboratore.

 

Functional Performer

Il modulo Functional Performer si configura come strumento per la performance funzionale in tempo reale di oggetti musicali.

Le strutture musicali costituenti le primitive su cui operare sono definite come frammenti melodici cioè sequenze di note musicali caratterizzate da altezza, durata e intensità. Ai frammenti melodici sono associati gli oggetti grafici che ne permettono la manipolazione da parte dell'utente attraverso gli operatori di trasformazione implementati. Gli operatori di trasformazione modificano i frammenti selezionati fornendo il risultato della loro applicazione in tempo reale.

Il modulo accetta in input una serie di frammenti musicali codificati in forma di Standard MIDI File. A tal fine sono state utilizzati le routine ed il ciclo di lettura di SMF del modulo Libreria di routine di lettura/scrittura di Standard MIDI File 1.0.

 

Mus.Ser

Mus.Ser, sviluppata in ambiente Macintosh, si occupa della generazione di stringhe numeriche/musicali di natura seriale, nonché del reperimento di quelle serie che presentano caratteristiche utili in ambito musicale, quindi interpretabili come "spezzoni" di partiture musicali e inviabili allo strumento musicale collegato per generare sequenze sonore.

 

Sequencer MIDI/DSP

Il Sequencer MIDI/DSP è un MIDI Sequencer costruito per il controllo di una scheda dedicata al Digital Signal Processing, la quale viene vista da programma come un sintetizzatore a cui è possibile inviare sequenze di dati MIDI come a un qualsiasi dispositivo MIDI esterno.

L'applicazione consente di effettuare tre attività principali: registrazione, editing e riproduzione di sequenze MIDI distribuite su molteplici tracce (num max = 32). Queste possono essere singolarmente assegnate per pilotare l'esecuzione di dispositivi MIDI esterni e/o la scheda DSP interna, é possibile inoltre effettuare delle operazioni di mixing sulle tracce. E'possibile inoltre richiamare il modulo Waver e assegnare differenti modelli timbrici a delegati al il controllo della scheda DSP.

 

Driver MIDI/DSP

Il programma DMD è un Driver MIDI costruito per il controllo di una scheda dedicata al Digital Signal Processing (Sound Accelerator, Audiomedia), che si avvale di un processore Motorola 56001.

Si può considerare questa applicazione come un naturale sviluppo del Sequencer MIDI/DSP; si sono aumentate le capacità di comunicazione a livello MIDI in tempo reale e sono state rese disponibili più elevate possibilità di controllo timbrico.

Ma la caratteristica principale è senza dubbio rappresentata dalla possibilità di inviare messaggi MIDI per il controllo della scheda da parte di una qualunque applicazione compatibile con il MIDI Manager.

 

Waver

L'applicazione WAVER è un 'banco di lavoro' per la sperimentazione di 3 tecniche di sintesi:

- Sintesi mediante Funzioni di Due Variabili (TVF nel seguito)

- Sintesi Waveshaping (WSH nel seguito ma anche DNL Distorsione Non Lineare)

- Sintesi mediante l'uso di Wavelet (WLT nel seguito ma anche WT Wavelet Transform)

Tale ambiente di sperimentazione è stato sviluppato per computer Macintosh della serie II dotati di DSP Digidesign basato su Motorola 56001 (Sound Accelerator, Audiomedia).

 

LASy Workbench

Il LASy Workbench (LW) é un'applicazione sviluppata per la realizzazione dell'algoritmo di sintesi LASy (Linear Automata Synthesis) su un calcolatore Macintosh (dotato di una scheda Sound Accelerator I o II oppure di Audiomedia I o II della Digidesign).

Il LW risponde ad una duplice funzione: si tratta di uno strumento di esecuzione musicale LASy controllabile in tempo reale con comandi MIDI o con periferiche di ingresso (tastiera alfa numerica e mouse); inoltre costituisce un ambiente di ricerca e di sperimentazione della sintesi LASy.

 

TimbreLab

L'applicazione (eseguibile in ambiente Macintosh) consiste in un sistema ad architettura aperta per la programmazione timbrica con interfaccia iconica.

A differenza di LASy e Waver, TimbreLab permette la realizzazione delle diverse tecniche di sintesi disponibili in letteratura, il tempo computazionale relativo alla produzione di un segnale digitale é però proporzionale alla lunghezza espressa in numero di campioni del segnale stesso (tale vincolo deriva dalla assoluta generalità richiesta durante la fase di progetto).

 

VoiceLab

VoiceLab è il risultato di un lavoro di tesi che costituisce un'indagine nel campo della sintesi della voce in generale e del parlato in particolare, con controllo dell'andamento intonativo del parlato sintetico. Questa applicazione costituisce quindi una base per sintetizzare anche il canto, che altro non è se non un caso particolare di intonazione. VoiceLab è eseguibile in ambiente NeXT ed è costituita da una parte di codice che viene eseguita sul processore principale e da un modulo di sintesi del segnale vocale scritto in microcodice che gira su DSP Motorola 56001, di serie su tutti i sistemi NeXT.

 

Cellular Automata Sound Processor

CellAut (esegubile in ambiente NeXT) sintetizza un segnale utilizzando l'algoritmo LASy a partire da una forma d'onda e una funzione di transizione scelte dall'utente. Quest'ultimo ha un controllo duplice sull'evoluzione della sintesi: i parametri della funzione di transizione sono modificabili tramite oggetti grafici e l'altezza del suono prodotto è controllata dall'altezza di un segnale analogico rilevato da un microfono.

Parallelamente a CellAut, è stata sviluppata una seconda applicazione, FilterAut, che consente di filtrare in tempo reale un segnale analogico e contemporaneamente di variare i parametri di filtraggio. Inoltre FilterAut calcola l'altezza del segnale e invia la nota corrispondente come una sequenza di comandi sul canale MIDI collegato al calcolatore.

 

La libreria di microprogrammi di sintesi

Il presente modulo consiste in un insieme di routine per la sintesi del suono utilizzato da quattro software della stazione di lavoro: Driver MIDI/DSP, Sequencer MIDI/DSP, WAVER, LASy Workbench.

Tali routine sono rese disponibili sotto forma di risorsa nel file "DSP Code Resources".

 

Standard MIDI files Library

Si tratta di una libreria sviluppata per calcolatori Macintosh e fornisce un insieme di routine per la gestione dei processi di lettura e scrittura di Standard MIDI File di formato '0' e '1' seguendo la sintassi formalizzata nel documento Standard Midi File versione 1.0 pubblicato dalla 'International Midi Association'.

 

ModelSynth

E' in corso la realizzazione del modulo ModelSynth, il quale permette di ricavare automaticamente un modello di Reti di Petri a partire dall'analisi effettuata da ScoreSegmenter. I modelli di Reti di Petri prodotti sono a loro volta utilizzati per eventuali analisi, eseguiti e o manipolati dal modulo ScoreSynth. Possiamo quindi dire che ModelSynth rappresenta un importante momento di confronto tra l'analisi e la sintesi di partiture musicali codificate mediante lo standard MIDI.

 

Descrizione esempi musicali

 

Traccia 2. Applicazione: Musser

 

Opzione tonalità del menu Ricerca

Parametri: tonalità DO

 

lungh. 3: re# mi fa# fa la# do# si sol re sol# do la

lungh. 4: re sol fa do do# mi fa# la# la re# si sol#

lungh. 5: sol fa# mi fa do la si re# sol# re la# do#

lungh. 6: sol sol# la# la mi do fa si re fa# re# do#

 

Traccia 3. Applicazione: Musser

 

Opzione mappa predef. del menu Ricerca

Es 2a: mappa cercata = 3,3,3,3

re sol fa do# do re# la mi fa# la# si sol#

3 do re# fa la# 3 do# sol# 3 re mi sol la 3 fa# si

 

Es 2b: mappa cercata = 3,4,5

do fa sol# la sol mi la# re do# re# si fa#

3 do# re# sol# 5 fa 4 mi fa# si

 

Es 2c: mappa cercata = 5,4,3

do fa sol# sol re# la la# re mi do# si fa#

5 re# sol# 4 fa 3 re mi fa# la si

 

Es 2d: mappa cercata = 6,3,3

do fa sol# sol re re# si la do# la# mi fa#

6 re# 3 re mi la 3 si

 

Traccia 4. Applicazione: ScoreSegmenter

 

"Fuga II a tre voci "dal Clavicembalo ben temperato di J. S. Bach.

Presenteremo ora i risultati relativi all'analisi della fuga.

La sessione di analisi è composta da diverse segmentazioni successive i cui parametri sono scelti in base ai risultati forniti dalle quelle precedenti

 

Traccia 5. Applicazione: ScoreSegmenter

 

La sessione di analisi eseguita da ScoreSegmenter sulla "Fuga II a tre voci" ha portato all'identificazione del segmento "Soggetto".

La prima fase di segmentazione porta all'identificazione del primo dei temi definiti, il quale è esattamente il tema, strettamente inteso, o soggetto della fuga.

 

Partitura del "Soggetto"

 

 

 

Traccia 6. Applicazione: ScoreSegmenter

 

La sessione di analisi eseguita da ScoreSegmenter sulla "Fuga II a tre

voci" ha portato all'identificazione del segmento "Controsoggetto".

L'identificazione del controsoggetto è avvenuta considerando il brano ha uno spiccato carattere contrappuntistico e che le ricorrenze di un frammento individuato sono per lo più dislocate negli ultimi due terzi del brano. Da queste due osservazioni deduciamo che vale al pena di tentare di definire meglio il tema in questione e che il primo tentativo da farsi è l'aumento della parte di presentazione, che è la parte del brano entro cui il SEGMENTER ricerca i temi in fase di definizione.

 

Partitura del "Controsoggetto"

 

Traccia 7. Applicazione: ScoreSegmenter

 

La sessione di analisi eseguita da ScoreSegmenter sulla "Fuga II a tre voci" ha portato all'identificazione del segmento "Esempio di progressione".

 

Partitura della "Progressione"

 

Traccia 8. Applicazione: ScoreSegmenter

 

La sessione di analisi eseguita da ScoreSegmenter sulla "Fuga II a tre

voci" ha portato all'identificazione del segmento "Frammento del soggetto".

 

Partitura del"Frammento del soggetto"

 

Traccia 9. Applicazione: ScoreSegmenter

 

La sessione di analisi eseguita da ScoreSegmenter sulla "Fuga II a tre voci" ha portato all'identificazione del segmento "Frammento del

controsoggetto".

 

Partitura del"Frammento del controsoggetto"

 

 

 

 

 

Traccia 10. Applicazione: ScoreSegmenter

 

La sessione di analisi eseguita da ScoreSegmenter sulla "Fuga II a tre voci" ha portato all'identificazione del segmento "Progressione del frammento del soggetto".

 

Partitura della "Progressione del frammento del soggetto"

 

 

Traccia 11. Applicazione: ScoreSynth

 

Tema di "Fra Martino".

 

 

Traccia 12. Applicazione: ScoreSynth

 

Tema di "Fra Martino" trasformato da operatori di inversione speculare.

 

 

Traccia 13. Applicazione: ScoreSynth

 

Tema di "Fra Martino" trasformato da operatori di retrogradazione.

 

 

Traccia 14. Applicazione: ScoreSynth

 

Un'esecuzione della partitura in uscita generata da un modello IEEE deterministico.

 

 

Traccia 15. Applicazione: ScoreSynth

 

Un'esecuzione della partitura in uscita generata da un modello IEEE non deterministico.

 

 

Traccia 16. Applicazione: ScoreSynth

 

Diversa esecuzione della partitura generata dal modello IEEE non deterministico. La descrizione dei brani trovasi in "SCORESYNTH:

a System for the Synthesis of Music Scores based on Petri Nets and a Music Algebra", (IEEE Computer, Vol.24, N.7),G. Haus, A. Sametti, Tech. Report 7/78, CNR-PFI2, luglio 1992.

 

 

Traccia 17. Applicazione: ScoreSynth

 

La rete generante il brano implementa l'algoritmo dei cinque filosofi. I posti J1, J2, J3, J4, J5 sono abilitati in modo non deterministico rispettando il seguente vincolo: ogni posto abilitato (ad esempio J2) esclude automaticamente l'abilitazione dei posti contigui (in questo caso J1 e J3).

 

 

J1.. J5 sono costituiti da un posto sottorete, (J's contenuto nella cartella dedicata all'esempio) che con algoritmo non deterministico trasforma un oggetto musicale descritto in un file MIDI.

 

Traccia 18. Applicazione: ScoreSynth

 

"Octaphonic Patterns", di Goffredo Haus, per timbri sintetici e campionati, elaboratore elettronico e periferiche MIDI, realizzato presso il Laboratorio di Informatica Musicale dell'Università degli Studi di Milano, 1989.

 

Traccia 19. Applicazione: Temper

 

"Retro": realizza una retrogradazione delle altezze e delle durate.

 

Tassellazione1 Tassellazione 2

 

Questo risultato è determinato dinamicamente dal progressivo orientamento da sinistra a destra dell'asse verticale della tassellazione, che provoca in sequenza:

• la scansione sempre più ravvicinata dei vertici, che da luogo ad

un addensamento degli eventi musicali (in questo caso è una scala discendente);

• la scansione contemporanea di tutti gli eventi nel momento in

cui i due assi sono ortogonali (accordo).

• l'inversione della esecuzione degli intervalli (scala ascendente) abbinata a una progressiva rarefazione (nello spazio e quindi nel tempo) degli stessi.

 

 

Traccia 20. Applicazione: Temper

 

"Accordo": realizza in due modi un cambiamento di accordo, variando il parametro scala (nella trasformazione tra la prima e la seconda tassellazione) oppure il parametro intervallo (nella trasformazione tra le terza e la quarta tassellazione).

 

Tassellazioni 1 e 2 Tassellazioni 3 e 4

 

In linea generale il parametro intervallo individua una relazione intervallare costante tra i vertici (in senso verticale) contigui della tassellazione. Questa relazione può subire variazioni determinate dalla scala scelta.

 

 

Traccia 21. Applicazione: Temper

 

"Punti": inserimento di un punto sul lato orizzontale e transizione da una situazione polifonica (cinque voci fisse) ad una monofonica (mediante l'utilizzo del menu voci). Si avverte il movimento sincronico delle parti sugli intervalli di seconda e terza maggiore, quarta e quinta: la sequenza viene poi retrogradata ed eseguita da una sola parte.

 

Sequenza di tassellazioni con relativa trasformazione

 

Inserimento di un punto sul lato verticale e transizione da una situazione polifonica (cinque voci fisse) ad una monofonica (mediante l'utilizzo del menu voci): dapprima tutte e cinque le parti eseguono accordi

incrementando la scansione temporale; la sequenza delle durate viene poi invertita ed eseguita da una sola parte.

 

Sequenza di tassellazioni con relativa trasformazione

 

 

Traccia 22. Applicazione: Temper

 

"Generale": performance complessiva descritta in Guida operativa del modulo "TEMPER", P. Morini, D. Tanzi,Tech. Report M/34, CNR-PFI2, dicembre 1992.

 

 

Traccia 23. Applicazione: Traslitteratore

 

Traslitterazione della poesia L'ultima ora di Venezia di Arnaldo Fusinato che qui riportiamo (scala Venezia).

 

 

E' fosco l'aere, Fra i rotti nuvoli

il cielo è muto, dell'occidente

e io sul tacito l raggio perdesi

veron seduto, del sol morente

in solitaria e mesto sibila

malinconia, per l'aria bruna

ti guardo e lagrimo, l'ultimo gemito

Venezia mia. della laguna.

 

 

Passa una gondola No, no, non splendere

della città: su tanti guai,

"Ehi, della gondola sole d'Italia,

qual novità?" non splender mai!

"Il morbo infuria, E sulla veneta

il pan ci manca, spenta fortuna

sul ponte sventola sia eterno il gemito

bandiera bianca". della laguna!

 

 

Venezia, l'ultima Ma non le ignivome

ora è venuta; palle roventi,

illustre martire, né i mille fulmini

tu sei perduta ... su te stridenti,

Il morbo infuria, troncaro ai liberi

il pan ti manca: tuoi dì lo stame ...

sul ponte sventola Viva Venezia!

bandiera bianca. Muore di fame

 

 

Sulle tue pagine Viva Venezia!

scolpisci o Storia, Feroce, altera,

le altrui nequizie difese intrepida

e la sua gloria: la sua bandiera;

e grida ai posteri ma il morbo infuria,

tre volte infame ma il pan le manca ...

chi vuol Venezia Sul ponte sventola

morta di fame! bandiera bianca!

 

 

Ed ora infrangasi Ramingo ed esule,

qui sulla pietra, su suol straniero,

finché è ancor libera, vivrai, Venezia,

questa mia cetra. nel mio pensiero.

A te, Venezia, Vivrai, nel tempio

l'ultimo canto, qui del mio core,

l'ultimo bacio, come l'immagine

l'ultimo pianto. del primo amore.

Ma il vento sibila,

ma l'onda è scura,

ma tutta in gemito

è la natura;

le corde stridono,

la voce manca ...

Sul ponte sventola

bandiera bianca.

 

Traccia 24. Applicazione: Traslitteratore

 

Traslitterazione con armonizzazione della poesia L'ultima ora di Venezia di Arnaldo Fusinato sopra riportata.

 

Traccia 25. Applicazione: Traslitteratore

 

Traslitterazione con accompagnamento della poesia L'ultima ora di Venezia di Arnaldo Fusinato .

 

Traccia 26. Applicazione: Traslitteratore

 

"Otello e Yago", traslitterazione di Antonio Rodriguez Selles, per elaboratore elettronico e periferiche MIDI, ottenuta dal dialogo originale dall'Otello di William Shakespeare (atto terzo, scena terza, versi 91-262, versione in spagnolo):

 

*Othello*

Mujer! Criatura adorable! Alma mía maldita!

Pero te amo! Confúndanse los cielos

si dejo de quererte!

*Yago*

Mi muy noble señor...

*Othello*

Decíais, Yago?

*Yago*

Michael Cassio...conocía Cassio

vuestro amor por ella cuando con vos la cortejaba?

*Othello*

Lo sabía; claro que lo sabía. Y a qué vuestra pregunta?

*Yago*

No, nada; era curiosidad. Solamente

eso; nada de importancia.

*Othello*

Curiosidad, Yago?

*Yago*

Me sorprendió saber que ya la conocía

*Othello*

Y tanto! Y llevó nuestros mensajes a menudo.

*Yago*

A menudo?

*Othello*

A menudo! Sí, a menudo! Algo no os gusta?

No es Cassio hombre honesto?

*Yago*

Honesto mi señor?

 

 

 

*Othello*

Honesto, sí, honesto!

*Yago*

Algo sabría yo si así no fuera.

*Othello*

Pensáis,Yago?

*Yago*

Pensar, señor?

*Othello*

Pensar señor! Eco de mi voz es eso!

Algo sucio tiene metido en su pensamiento!

Algo horrible y que no puede decirse... Algo

intentáis decirme. Decíais que no os gustó Cassio

cuando escapó al verme? No os gustó, no es así?

Y cuando lamenté que casi consejero era

y que, a menudo, me acompañaba a cortejarla, gritesteis:

<< A menudo?>> y fruncisteis el ceño, con las cejas juntas,

como si entre ellas tuvieras aprisionado

lo más horrible. Si cierto es que amas

muéstrame lo que encierras.

*Yago*

Que os amo lo sabéis bien.

*Othello*

Lo sé. Sí!

Y porque sé también que eres honesto

y calculador de las palabras antes de pronunciarlas,

me preocupan tus silencios con mayor razón.

Si de algún bellaco desleal y falso se tratara

lo encontraría normal, pero, en hombre honesto,

ésas son secretas, advertecias que pujan en el alma

para que la pasión no los desvele.

*Yago*

A Michael Cassio

lo tengo por hombre honesto, puedo jurarlo.

*Othello*

A mí así me parece.

*Yago*

Lo que parecen

tendrían que ser los hombres! Sólo eso! Nada más.

*Othello*

Cierto! Ser lo que aparentan!

*Yago*

Y Cassio es honesto!

*Othello*

Qué otra cosa quieres decirme?

Te lo ruego, dime todo lo que piensas,

tal y como lo estés rumiando; con las palabras

más graves, si graves son los pensamientos.

 

 

 

 

 

 

 

*Yago*

Mi buen señor,

os pido me perdonéis pues, aunque obligado por el deber,

no lo estoy en lo que hasta a los esclavos se permite:

revelar lo que pienso. Que eso que pienso es vil

e indigno es? Nombradme un palacio donde indignidad

o vileza no penetren. En qué corazó aun lleno

de virtud, y leal, no encontramos sospechas

sucias, en concordia instaladas, en el horrible lugar

y en la hora que justicia se debate?

*Othello*

A la amistad traicionas, Yago, si ofendida

la encuentras y, aun así, extrañas de su oído

lo que verdaderamente piensas.

*Yago*

Ruego a vuestra señoria

que si por ventura hubiese vicio en mi sospecha

- confieso que ésa es inclinación en mí natural:

intuir delitos y, celoso en demasía, ver

donde no hay pecado -, vos, que tenéis sabiduría,

a alguien que tan torpemente se equivoca,

podéis ignorar, así apartando la inquetud,

no escuchando cavilaciones que pudieran ser inciertas

o dudosas. A nuestro sosiego y bienestar no conviene

- ni a mi honoradez, dignidad de hombre o prudencia-

dejaros conocer lo que yo pienso.

*Othello*

Lo que eso signifique no lo entiendo.

*Yago*

La buena fama es, mi buen señor, el tesoro

más apreciado que hombres y mujeres guardan

en sus almas: quien meta mano en mi bolsa,

basura encuentra, y no roba nada ni algo..

Mi bolsa es mía, y fue de muchos: de miles

fue esclava. Pero mi fama, quien ésa ma robe,

se lleva con él lo que no le enriquece,

pero me deja pobre sin nada.

*Othello*

Me dirás - voto al Cielo! - lo que estás pensando?

*Yago*

No podría, aunque mi corazón tuvierais,

poseyéndolo. No lo haré mientras sea su dueño.

*Othello*

Cómo!

*Yago*

Guardaos de los celos, mi buen señor!

pues es monstruo de obscenos ojos que se goza

con la carne que lo nutre. Feliz es el engañado

que acepta su destino y desprecia a quien le robó

su honra. Infortunio tiene quien ama, sin embargo,

y además sospecha; quien sospechando, ardiente ama.

 

*Othello*

Así me torturas!

*Yago*

Rico, y muy rico, es el pobre satisfecho.

Mas, es pobre como el crudo invierno

aquél que tiene mucho y teme perderlo todo.

Que el Cielo misericorde libre de los celos

a todos de mi casta.

*Othello*

Esto por qué me lo decís?

Piensas acaso que celos hago de mi vida,

siguiendo, mudable, loa caprichos de la luna,

con sospechas continuas? No. Dudar una vez

basta para tomar resolución. En macho cabrío

me convierta, si mi alma yo entrego

a tomar en consideración las sospechas vanas, infundadas,

que ahora me sugieres. Que no es razón de celos

decir que mi esposa es bella, cordial en la mesa,

sociable de palabra y trato, y que bien canta, y que toca

y baila, pues son virtudes claras de mujer

virtuosa. Como tampoco lo es que mi mérito

sea escaso. No me asusta. No lo temo. Ojps tiene

ella, y los puso en mí eligiéndome. No, Yago,

he de ver antes de dudar y, cuando dude, pruebas

debo tener. Y al tenerlas, diréle adíos

o al amor o a los celos. Sólo eso!

*Yago*

Me alegra que habléis así, pues ahora puedo,

por el amor y deber que os profeso, hablar

con mayor libertad: escuchad lo que mi corazón

os dice, tal como él lo dicta. De pruebas

nada he dicho. Pero vigilad a vuestra esposa,

y a Cassio. Miradles atento, sin celos, simplemente,

pero con cautela. No querría ver que un alma

noble y generosa sufriera, por bondad, engaño

Atento pues! Que conozco muy bien a nuestras gentes,

y en Venecia les mujeres le cuentan al Cielo

lo que le ocultarían a sus maridos, y es su virtud

que el pecado quede oculto aunque se cometa.

*Othello*

De eso...estáis convencido?

*Yago*

Engañó a un padre ocultándole vuestra boda,

y cuanto más asustada se mostraba por vuestras miradas,

y temblaba, más las apetecía.

*Othello*

Así era.

*Yago*

Entonces, pues...

si joven podía hacer acopio de tanto fingimiento,

hasta sellar los ojos de su padre como a puerta de roble

y hacerle pensar que se trataba de magia...

Mas, perdoname, os lo ruego; sólo merezco castigo,

aunque por amor de vos haga.

 

 

 

 

*Othello*

Eterna será mi gratitud.

*Yago*

Siento que todo esto os dejara tan abatido.

*Othello*

No! No, no, no! En lo más mínimo!

*Yago*

Yo me telo que sí.

Espero que comprendáis que lo que dije fue guiado por

amor.

Però es tan grande vuestro abatimento!

He de rogaros que no concedáis a mis palabras

mayor alcance que el que en verdad tienen:

una mera suposición, una sospecha.

*Othello*

Así lo haré.

*Yago*

Si no fuera así, noble señor,

tendería yo que lamentar mis palabras

y el efecto que produjeron y que no deseaba.

Cassio es mi amigo. Oh, ese abatimiento vuestro!

*Othello*

No, no, no!

No! No dejo de creer en la honestidad de Desdémona.

*Yago*

En ella viva, pues, y que vos podáis así creerlo!

*Othello*

Y sin embargo, cuando Naturaleza pierde el rumbo...

*Yago*

Eso es lo malo. Con franqueza, mi señor,

el haber rechazado tyanto partidos como tenía,

pretendientes de su condición, raza, rango...

- que es a lo que siempre tiende la Naturaleza -

hace suponer una voluntad algo viciada,

una, digamos, desarmonía, corrupción y desorden..

Oh, perdonadme, mi señor! En absoluto a ella

me refiero; aunque un temor me queda:

que su alma, en nueva consideración de su juicio,

siéntase tentada a compararos con los de su país,

llegando a arrepentirse de lo hecho.

*Othello*

Adiós! Adiós, digo!

Infórmame puntual de lo que sepas;

y que tu esposa vigile. Déjame ahora!

*Yago*

Tomo licencia para marchame, mi señor.

*Othello*

Por qué tuve desposarme? Sin duda, amigo,

honesto Yago, sabes más , mucho más de lo que dices.

 

 

 

 

 

 

*Yago*

Ruego a mi señor no siga torturándose

en este asunto. Dadle tiempo al tiempo.

Quizá Cassio podría haber continuado en su puesto

- pues, en verdad es muy apto para el mismo-

pero si cumple a su señoria mantenerle apartado

podrías de este modo observarle, saber cuanto hace,

percibir hasta qué punto vuestra esposa insiste

en su favor, y con qué vehemencia importuna.

Mucho aprenderéis de eso. Entretanto, señor, os ruego

dejeis por demasiado exagerados mis temores

- aunque razones no me falten para ello -,

y confiad en su inocencia... Os lo ruego, humilmente.

*Othello*

No temas a mi persona.

*Yago*

De nuevo me despido.

 

Il brano è stato realizzato presso il Laboratorio di Informatica Musicale dell'Università degli Studi di Milano (1987).

 

Traccia 27. Applicazione: LASy Worrkbench

 

Invenzione di Bach (Frase): Instrument Table 0, Instrument 7.

 

Traccia 28. Applicazione: LASy Worrkbench

 

Invenzione di Bach (Frase): Instrument Table 0, Instrument 8.

 

Traccia 29. Applicazione: LASy Worrkbench

 

Invenzione di Bach (Frase): Instrument Table 2, Instrument 3.

 

Traccia 30. Applicazione: LASy Worrkbench

 

Invenzione di Bach (Frase): Instrument 2, Instrument 5.

 

Traccia 31. Applicazione: LASy Worrkbench

 

Invenzione di Bach (Frase): Instrument 2, Instrument 6.

 

Gli esempi sono realizzati con i timbri, selezionati tra quelli disponibili nella tabella di default dell'applicazione LASy Workbench, ossia un banco di lavoro dedicato alla sintesi sonora mediante automi cellulari:

I parametri di sintesi di ogni timbro sono contenuti nella relativa finestra dello strumento attivo (vedi: Guida operativa del modulo "LASy Workbench",J. Chareyron, Tech. Report M/30, CNR-PFI2, ottobre 1992.).

 

 

 

 

Traccia 32. Applicazione: Functional Performer

 

Trasformazioni sulle altezze.

 

In questo breve esempio é dimostrata una applicazione tra le tante possibili,consistente nell'impiego di alcune trasformazioni sulle altezze, applicate ad un frammento-modello, che ascolterete esposto nella prima battuta di 4/4.

Le trasformazioni sulle altezze, applicate al frammento-modello eseguito con timbro di pianoforte, sono state, nell'ordine, le seguenti :

- Modello

- Traslazione (con parametro + 5)

- Dilatazione o contrazione (con parametro +1)

- Retrogradazione

- Rotazione destra/sinistra (con parametri D/1)

- Inversione speculare (con parametro 1)

Successione degli intervalli del frammento modello: seconda maggiore, seconda maggiore, unisono, seconda minore.

 

Partitura generata

 

Traccia 33 Applicazione: Functional Performer

 

Trasformazioni sulle durate.

 

In questo secondo esempio é dimostrata una applicazione tra le tante possibili, consistente nell'impiego di trasformazioni sulle durate, sempre applicate al medesimo frammento, esposto nella prima battuta di 4/4. Le trasformazioni eseguite con timbro di pianoforte sono state, nell'ordine, le seguenti :

- Modello

- Retrogradazione

- Rotazione destra/sinistra (con parametri D/1)

- Dilatazione (con parametro +1,5)

Successione delle durate del frammento modello: quarto, quarto, ottavo, ottavo, pausa di un ottavo, ottavo.

 

Partitura generata

 

Traccia 34. Applicazione: Functional Performer

 

Trasformazioni sulle dinamiche.

 

Questa volta é dimostrata una applicazione dell'impiego delle trasformazioni sulle dinamiche, sempre applicate al frammento preso come modello, esposto con timbro di pianoforte nella prima battuta della durata di 4/4. Le trasformazioni sulle dinamiche, sono state, nell'ordine, le seguenti (in tutto 4 battute):

- Modello

- Retrogradazione

- Rotazione destra/sinistra (con parametri D/1)

- Inversione speculare (con parametro 2)

Successione delle dinamiche nel frammento modello:

Partitura generata

 

Traccia 35. Applicazione: Functional Performer

 

Polifonia a tre parti.

 

Questo esempio consente di rendersi conto dei risultati ottenibili mediante l' impiego di trasformazioni estese a più di una linea melodica, senza che, peraltro, venga aggiunto nuovo materiale all'originale: infatti, sia applicate in successione, che in combinazione (che si dà ogni volta che la funzione viene contrassegnata nella partitura operativa tramite l'argomento "Prec"), e attivate su 3 linee melodiche, le trasformazioni applicate sempre su un unico frammento dimostrano come sia relativamente agevole raggiungere risultati di qualche interesse, se il contesto timbrico lo consente: si é pensato, al proposito, di utilizzare le timbriche di un violoncello campionato, capaci di conferire la necessaria corposità ed efficacia alle escursioni dinamiche: il risultato interpretativo del testo, ottenuto dalla conversione di SMF é stato affidato dunque a un trio di violoncelli.

In particolare, ecco l'elenco delle trasformazioni applicate al modello, su ogni singola parte, riguardanti l'esempio 4:

 

Parte I: Parte II: Parte III:

 

Modello

R Din (Prec)

Modello

Rot Din D/1 (Prec)

Tr - 1(Mod) Modello

Rot Din D/1(Prec) R Din (Prec)

Tr - 2(Mod) Modello

Rot Din S/1(Prec) R Din (Prec)

Tr - 1(Mod) Again Tr + 5 (Modello)

Again Again Dil Alt + 1 (Prec)

Contr 1 (Mod) Tr + 1 (Prec) Dil Alt + 1 (Prec)

Rot Din D/1(Prec) R Din (Prec) Dil Alt + 1 (Prec)

Dil 1 (Mod) Dil Dur 1,7 (Prec) Dil Dur 1,9 (Prec)

R Din (Prec)

Dil Dur 1,6 (Prec) R Alt (Prec) Again

 

 

 

 

 

 

 

 

 

 

 

Partitura generata

 

 

 

 

 

Traccia 36. Applicazione: Functional Performer

 

Questo esempio ripropone la medesima struttura a canone su tre parti elaborata nell'esempio precedente. Di diverso vi é la strumentazione, pensata in questo caso su tre canali MIDI differenziati per ottenere il controllo di periferiche politimbriche, e un più veloce tempo di esecuzione, che, stanti le caratteristiche dell'esempio, a nostro parere é risultato più adeguato per un Ensemble di tipo percussivo, ottenuto raggruppando in una configurazione di performance alcune voci scelte tra quelle reperibili su un modulo di sintesi FM TX802:

 

Parte III: (Canale MIDI 1) Vibrafono, Guitar Box.

 

Parte II: (Canale MIDI 2) Celeste

 

Parte I: (Canale MIDI 3) String Bass

 

 

Bibliografia essenziale

 

A. Camurri, G. Haus, A. Stiglitz, R. Zaccaria: "LRC C4 MUSIC: orientamenti generali, definizione degli intenti e premessa alle specifiche funzionali", Tech. Report 7/08, CNR-PF "Sistemi Informatici e Calcolo Parallelo", novembre 1989.

 

A. Camurri, G. Haus, A. Stiglitz, R. Zaccaria: "LRC C4 MUSIC: architettura, specifiche funzionali di alto livello e standard di documentazione della STAZIONE DI LAVORO MUSICALE INTELLIGENTE", Tech. Report 7/09, CNR-PF "Sistemi Informatici e Calcolo Parallelo", novembre 1989.

 

AA.VV. (A. Stiglitz editor): "Specifiche funzionali di alto livello dei moduli della STAZIONE DI LAVORO MUSICALE INTELLIGENTE - Unita' Operativa dell'Universita' degli Studi di Milano", Tech. Report 7/53, CNR-PF "Sistemi Informatici e Calcolo Parallelo", marzo 1991.

 

G. Haus, A. Stiglitz: "A Software Tool for the Functional Performance of Music", (reprint dai Proceedings of the Second International Symposium on Electronic Art, Groningen, The Netherlands), Tech. Report 7/54, CNR-PF "Sistemi Informatici e Calcolo Parallelo", marzo 1991.

 

G. Haus, A. Sametti: "SCORESYNTH: a System for the Synthesis of Music Scores based on Petri Nets and a Music Algebra", (reprint da IEEE Computer, Vol.24, N.7) Tech. Report 7/78, CNR-PF "Sistemi Informatici e Calcolo Parallelo", luglio 1991.

 

G. Haus, P. Morini: "TEMPER: a System for Music Synthesis from Animated Tessellations", (reprint da Leonardo, Journal of the ISAST, Vol.25, N.3/4), Tech. Report 7/90, CNR-PF "Sistemi Informatici e Calcolo Parallelo", agosto 1992.

 

G. Haus, A. Sametti: "SCORESYNTH: a System for the Synthesis of Music Scores based on Petri Nets and a Music Algebra", (reprint da "Readings in Computer Generated Music", D. Baggi Ed., pp.53-78, IEEE Computer Society Press), Tech. Report 7/112, CNR-PF "Sistemi Informatici e Calcolo Parallelo", agosto 1992.

 

A. Ballista, E. Casali, J. Chareyron, G. Haus: "A MIDI/DSP Sound Processing Environment for a Computer Music Workstation", (reprint da Computer Music Journal, Vol.16, N.3), Tech. Report 7/113, CNR-PF "Sistemi Informatici e Calcolo Parallelo", novembre 1992.

 

I. Pighi e AA.VV.: "Integrazione dell'architettura e delle specifiche funzionali di alto livello dei moduli della STAZIONE DI LAVORO MUSICALE INTELLIGENTE - Unita' Operativa dell'Universita' degli Studi di Milano", Tech. Report 7/117, CNR-PF "Sistemi Informatici e Calcolo Parallelo", UNI/MI/DSI6, febbraio 1993.

 

G. Haus, A. Stiglitz: "The Functional Performer System", Interface, Vol.23, N.1, pp.53-75, Swets & Zeitlinger B.V., Amsterdam, 1993.

 

AA.VV.: Serie di Rapporti Tecnici MUSIC (circa 45 documenti), Series Editor G. Haus, CNR-PF "Sistemi Informatici e Calcolo Parallelo", UNI/MI/DSI6, 1989-1993.

 

 

 

 

 

Gli utenti della SLMI

 

Numerose istituzioni di ricerca, università, centri sperimentali e associazioni culturali senza fine di lucro hanno richiesto tutta o in parte (soprattutto l'ambiente integrato per l'elaborazione MIDI/DSP e i moduli ScoreSynth, ScoreSegmenter, Temper e Traslitteratore) per lo svolgimento di attività di ricerca e/o didattica scientifico-musicale. Di questi alcuni hanno già ricevuto, altri sono in fase di acquisizione del nostro software. Al 30 aprile 1993 il parco utenti della Stazione di Lavoro Musicale Intelligente è il seguente:

 

Utenti attivi

 

New York University, Tisch School of the Arts, Dept of Film and Television, New York, U.S.A.

 

University of North Texas, College of Music, Center for Experimental Music and Intermedia (CEMI), Denton, Texas, U.S.A.

 

Jerusalem Rubin Academy of Music and Dance, Givat Ram Campus, Jerusalem, ISRAELE

 

Electronics and Electrical Engineering Department, Sharif University of Technology, Teheran, IRAN

 

Fachbereich Informatik, Universität Oldenburg, GERMANIA

 

Dipartimento di Elettronica e Informatica, Universita' di Padova

 

Dipartimento di Scienze dell'Informazione, Universita' degli Studi di Roma "La Sapienza"

 

Dipartimento di Matematica, Universita' degli Studi di Milano

 

Civica Scuola di Musica di Milano

 

Accademia dei Concordi, Rovigo

 

Centro Regionale di Catalogazione e Restauro dei Beni Culturali, Regione Autonoma Friuli-Venezia Giulia

 

LADSEB-CNR, Padova

 

Utenti in fase di acquisizione della SLMI

 

Department of Music, College of Fine Arts and Communication, Towson State University, Maryland, U.S.A.

 

Elektroakustisches Institut, Hochschule fur Musik, Vienna

 

Center for Contemporary Music, Mills College, Oakland, CA, USA

 

Queen's University, Kingston, Canada

 

UIUC Electronic Music Studios

 

Electronic Music Lab, Jerusalem Music Academy

 

Motorola Inc., Irvine, California, USA

 

Estudio de Musica Electroacustica, Buenos Aires, ARGENTINA

 

Come si ottiene la SLMI

 

Le istituzioni di ricerca, le università, i centri sperimentali, le associazioni culturali senza fine di lucro interessate ad acquisire tutta o parte della SLMI e, più in generale, tutte le persone o enti interessati ad avere informazioni sulla SLMI o ad impostare collaborazioni con il L.I.M.-D.S.I., possono contattare:

 

Prof. Goffredo Haus, Direttore Scientifico

L.I.M. - Laboratorio di Informatica Musicale

Dipartimento di Scienze dell'Informazione

Università degli Studi di Milano

via Comelico, 39

I-20135 Milano (Italia)

fax +39 2 55006.373

tel. +39 2 55006.338 / .382 / .380

E-mail music@imiucca.csi.unimi.it

 

Quali risorse sono necessarie per usare la SLMI

 

In generale, per poter garantire il funzionamento di tutte le applicazioni della SLMI , sono da ritenersi necessarie le risorse riportate qui di seguito; informazioni più dettagliate (funzionamento, esempi, requisiti specifici etc.) sono disponibili per .ogni applicazione nelle relative cartelle del CD-ROM.

 

Requisiti hardware per il corretto funzionamento

- Calcolatore Macintosh II, IIci, IIcx, IIfx, Quadra 950

- Scheda DSP Sound Accelerator /Audiomedia della Digidesign

- Interfaccia MIDI

- Lettore CD-ROM

 

Requisiti software per il corretto funzionamento:

- System versione 6.05 o successive;

- Finder versione 6.1 o successive;

- MultiFinder versione 6.1b9 e successive;

- MIDI Manager Tools versione 2.01 e successive

- Digidesign Init

 

Requisiti firmware per il corretto funzionamento

- ROM di almeno di 256 KByte

- Non sono richiesti particolari Manager residenti.

 

Software di supporto

- LabVIEW™ versione 2.2. (Timbre Lab)

- HyperCard™ 2.0 (IMW Interface, Sample Buster);

 

 

Il ruolo della comunicazione visiva nella

Stazione di Lavoro Musicale Intelligente‡

 

 

Goffredo HAUS

L.I.M. - Laboratorio di Informatica Musicale

Dipartimento di Scienze dell'Informazione

Università degli Studi di Milano

 

 

 

 

 

Riassunto

 

Questo articolo descrive brevemente le principali caratteristiche di comunicazione visiva nella Stazione di Lavoro Musicale Intelligente. Sono disponibili tre livelli di comunicazione: una shell al livello cognitivo per la composizione musicale aiutata da elaboratore, un livello strutturale/simbolico per l'elaborazione delle partiture e un livello fisico per l'elaborazione numerica delsegnale audio. Diversi ambienti di interfaccia sono disponibili in riferimento ai diversi aspetti della pragmatica musicale tradizionale. La maggior parte delle funzionalità può essere fruita per mezzo di linguaggi iconici "ad hoc".

 

 

 

Abstract

 

This paper briefly describes the main characteristics of visual communication within the Intelligent Music Workstation. Three levels of communication are available for the user: a cognitive level shell for computer aided music composition, a symbolic/structural level for score processing and a physical level for audio digital signal processing. Different interface environments are available with respect to traditional music pragmatics. Most of the functionalities can be enjoyed by means of "ad hoc" iconic languages.

 

 

 

 

 

 

 

 

 

 

 

 

‡ Questo lavoro è stato realizzato con il supporto e nell'ambito della LRC C4 MUSIC: "STAZIONE DI LAVORO MUSICALE INTELLIGENTE", obiettivo C: SISTEMI AVANZATI DI PRODUTTIVITA' INDIVIDUALE, sottoprogetto 7: SISTEMI DI SUPPORTO AL LAVORO INTELLETTUALE, progetto finalizzato SISTEMI INFORMATICI E CALCOLO PARALLELO del Consiglio Nazionale delle Ricerche (Contratti N° 89.00031.69 e 90.00678.PF69); è stato presentato in forma di poster nell'ambito della sessione "Conoscenza per immagini" al Convegno ICOGRAPHICS '91.

 

Introduzione

 

Le applicazioni informatiche orientate a specifici campi professionali sono generalmente più efficaci e più facilmente adottate quando le modalità di fruizione sono tali da non richiedere rilevanti sforzi di training all'utente e da sembrare il più possibile simili alla pragmatica tradizionale. Nel campo delle applicazioni artistiche, e musicali in particolare, questo risultato può essere conseguito soprattutto mediante opportune interfacce utente che sfruttino le possibilità di evocazione di simboli grafici e architetture di interazione flessibili e diagonali ovvero né strettamente sequenziali né strettamente gerarchiche. Inoltre, le diverse attività musicali sono caratterizzate ognuna da funzionalità, gerghi e modalità operative proprie anche se con molte sovrapposizioni.

 

Di queste considerazioni è stato perciò tenuto conto nella definizione dei requisiti della Stazione di Lavoro Musicale Intelligente (SLMI), ponendo particolare enfasi sia sulla scelta dei linguaggi di comunicazione utente-sistema, che nella progettazione di opportuni ambiti operativi [1][2].

 

La SLMI è costituita dal nucleo, dalle applicazioni e dai tool nel contesto di un architettura caratterizzata da tre livelli di accesso alla SLMI, corrispondenti a tre livelli differenti di rappresentazione dell'informazione musicale:

* una shell di ausilio alla composizione musicale (livello cognitivo),

* un ambiente per l'elaborazione di partiture musicali (livello simbolico/strutturale),

* un ambiente per l'elaborazione numerica di segnali audio (livello esecutivo/operativo).

 

Interfaccia utente e ambienti operativi della SLMI

 

I tre livelli sono mutuamente comunicanti e accessibili mediante un'interfaccia utente omogenea di tipo ipertestuale . L'architettura del sistema, di cui viene fornita una descrizione generale dettagliata in [2] (vedi Figura 1), è inoltre tale da consentire la derivazione di sottoinsiemi del sistema globale, dedicati a particolari attività, per ognuno dei quali è stato realizzato uno specifico ambiente al più alto livello di interazione.

 

L'ambiente di "Interfaccia utente" è costituito da un insieme di moduli interscambiabili che operano su un insieme di stack attivi di HyperCard, per le seguenti attività: gestione delle richieste utente; presentazione di risultati/diagnostiche in formati standard; presentazione di oggetti/entità ad un livello di astrazione adatto ad un utente che intende operare in un particolare sottoambiente. La schermata per la selezione di ambienti operativi è dotata di Help in linea per la descrizione delle modalità operative della SLMI, peraltro molto intuitive.

 

I moduli di interfaccia utente di alto livello della SLMI sono i seguenti:

* ingresso nella SLMI (Figura 2);

* selezione di ambienti operativi (Figura 3);

* indice della SLMI con accesso alla documentazione (Figure 4 e 5);

* ambiente di composizione;

* ambiente di analisi/sintesi di partiture;

* ambiente di performance musicale;

* ambiente di laboratorio numerico del suono (Figura 6);

* ambiente di orchestrazione;

* ambiente di mastering di supporti audio;

* selezione di librerie e data base;

* utility di preview di suoni e Standard MIDI File;

* gestione di sistema della SLMI per l'integrazione e per la rimozione

di moduli applicativi commerciali (Figura 7).

 

Attraverso questi moduli di interfaccia si può navigare attraverso i particolari moduli applicativi con estrema flessibilità; la comunicazione visiva è a questo livello determinante ed è realizzata mediante le tipiche tecniche ad icone dei sistemi ipertestuali; il linguaggio iconico che caratterizza questo livello è sufficientemente generale da risultare idoneo per i vari tipi di utenti dei diversi ambiti operativi che possono essere fruiti.

 

Per tutti gli ambienti operativi sono state adottate le seguenti convenzioni:

* a sinistra una palette di utility non specifiche della SLMI;

* al centro i moduli applicativi della SLMI specifici per il particolare ambiente operativo;

* a destra in alto in un cerchio, i moduli applicativi commerciali specifici per il particolare

ambiente operativo;

* a destra in basso in un rettangolo, le utility specifiche della SLMI, uguali per tutti gli

ambienti operativi.

 

Il musicista non deve preoccuparsi né della coerenza dei formati dei file previsti dai diversi moduli applicativi commerciali e non, né di entrare e uscire dai diversi moduli: l'interfaccia provvede a questo mettendo a disposizione quanto si ritiene possa essere di utilità per una certa funzione (composizione, orchestrazione, mastering, etc.). Il musicista stesso può personalizzare gli ambienti operativi introducendo nuovi strumenti software commerciali di suo interesse ed eventualmente rimuovendo moduli previsti nella SLMI non di suo interesse (Figura 7).

 

La comunicazione visuale nei moduli applicativi della SLMI

 

Ai livelli inferiori, e specialmente nei moduli applicativi (sintetizzatori di partiture, segmentatori di partiture, impaginatori di partiture, composer, sequencer, editor di suoni, sintetizzatori/analizzatori di suoni, ecc.), la comunicazione visiva è realizzata sempre attraverso tecniche ad icone, ma con specifici linguaggi iconici per ogni singolo ambito operativo.

 

Alcuni esempi particolarmente significativi sono qui di seguito accennati. Il modulo ScoreSynth [3] adotta la grafica delle reti di Petri per rappresentare i rapporti causali tra gli oggetti musicali e le loro trasformazioni; in Figura 8 è mostrato un esempio di sessione di editing un modello di reti di Petri musicali, mentre in Figura 9 è riportata una mappa di oggetti musicali generati mediente l'esecuzione di un modello di reti di Petri musicali; durante l'esecuzione di un modello infatti l'utente osserva i risultati sulla mappa degli oggetti musicali che via via si forma e può intervenire interattivamente in ogni istante per fermare il modello, chiedere informazioni sulla genesi degli oggetti musicali ed eventualmente modificare il modello per ottenere un nuovo comportamento dello stesso.

 

Nel modulo TEMPER [4] l'artista definisce la sua composizione grafico/musicale partendo dalla definizione di icone per la tassellazione del piano (Figura 10); la successione delle tassellazioni include quelle definite dall'artista e quelle generate automaticamente per interpolazione nell'animazione che trasforma gradualmente le tassellazioni definite dall'artista l'una nell'altra, secondo un percorso grafico a sua volta definito dall'artista come se fosse una partitura dell'animazione grafica. Ogni tassellazione viene interpretata dal programma secondo i parametri musicali definiti dall'artista (Figura 11) e trasformata in musica eseguita via interfaccia e periferiche MIDI.

 

Anche negli altri moduli la comunicazione visuale ha un ruolo primario, ma ne omettiamo la citazione esplicita per brevità.

 

Combinazione di moduli applicativi

 

Al fine di rendere possibile la combinazione dei moduli applicativi della SLMI tra loro e con i moduli applicativi commerciali più diffusi con modalità semplici e intuitive per l'utente, sono stati implementati i seguenti standard nei moduli applicativi della SLMI:

s1) MIDI Manager Tool Set : come ambiente standard per lo sviluppo di moduli che utilizzano l'interfaccia MIDI sotto Multifinder (ambiente multitasking per Macintosh); consente di connettere logicamente in tempo reale i flussi MIDI in ingresso e in uscita ai/dai vari moduli della SLMI e dei moduli commerciali implementati nel medesimo ambiente; in tal modo i vari moduli si scambiano flussi di dati in tempo reale consentendo così di costruire applicazioni più complesse combinando opportunamente i singoli moduli;

s2) Standard MIDI File v.1.0 : come standard per la codifica dei file contenenti partiture a livello MIDI; consente di scambiare tali informazioni tra tutti i moduli della SLMI e con i moduli commerciali che operano a livello di partitura MIDI;

s3) Digidesign Soundfile : come standard per la codifica di dati di tipo sonoro (campioni sonori, master digitali); consente di scambiare dati di tipo sonoro tra tutti i moduli di editing, di registrazione, di sintesi e di analisi del suono in forma numerica.

 

In particolare, lo standard s1 consente di ottenere moduli applicativi complessi combinando tra loro i singoli moduli della SLMI o moduli software commerciali definendo canali di comunicazione MIDI tra di essi a livello software. In Figura 12 è mostrato un esempio di connessione tra la tastiera MIDI sullo schermo, il modulo ScoreSynth, il modulo MIDI/DSP Sequencer e l'interfaccia MIDI fisica.

 

 

Ringraziamenti

 

Questo lavoro è stato reso possibile solo grazie alla collaborazione di numerose persone tra ricercatori, musicisti e studenti; in particolare desidero ringraziare per il loro costante contributo di idee e di lavoro: A. Ballista, P. Bettitoni, A. Camurri, E. Casali, J. Chareyron, F. Lonati, A. Monizza, P. Morini, A. Paccagnini, G. Penocchio, A. Rodriguez, A. Sametti, A. Scolaro, A. Stiglitz, D. Tanzi, R. Zaccaria.

 

Riferimenti bibliografici

 

[1] A. Camurri, G. Haus, A. Stiglitz, R. Zaccaria: "LRC C4 MUSIC: orientamenti generali, definizione degli intenti e premessa alle specifiche funzionali", Tech. Report 7/08, Progetto Finalizzato "SISTEMI INFORMATICI E CALCOLO PARALLELO", Consiglio Nazionale delle Ricerche, novembre 1989.

 

[2] A. Camurri, G. Haus, A. Stiglitz, R. Zaccaria: "LRC C4 MUSIC: architettura, specifiche funzionali di alto livello e standard di documentazione della STAZIONE DI LAVORO MUSICALE INTELLIGENTE", Tech. Report 7/09, Progetto Finalizzato "SISTEMI INFORMATICI E CALCOLO PARALLELO", Consiglio Nazionale delle Ricerche, novembre 1989.

 

[3] G. Haus, A. Sametti: "SCORESYNTH: a System for the Synthesis of Music Scores based on Petri Nets and a Music Algebra", IEEE Computer, July 1991 (accettato per pubblicazione).

 

[4] G. Haus, P. Morini: "TEMPER: a System for the Synthesis of Tessellation Animation and Music", Leonardo, ISAST, Journal of the ISAST, Pergamon Journals, San Francisco, CA, 1991 (sottoposto per pubblicazione).

 

 

 

 

 

Figura 1: Architettura software della Stazione di Lavoro Musicale Intelligente.

 

 

 

 

 

Figura 2: Ambiente introduttivo della SLMI: a sinistra gli ambiti

dei moduli applicativi commerciali, a destra l'accesso alla

documentazione della SLMI, in alto i comandi generali;

tra questi, GO per entrare negli ambienti operativi propri

della SLMI.

 

 

 

 

 

Figura 3: Schermata per la selezione dell'ambiente operativo.

 

 

 

 

 

Figura 4: Indice dei moduli di documentazione.

 

 

 

 

Figura 5: Scheda di modulo di documentazione; per ogni modulo applicativo della

SLMI sono disponibili un manuale utente e un documento di note

tecniche.

 

 

 

 

 

 

Figura 6: Sound Lab: ambiente operativo per l'elaborazione numerica del segnale

audio; a sinistra una palette di utility non specifiche; al centro i moduli

applicativi specifici della SLMI; a destra nel cerchio i moduli applicativi

specifici commerciali; a destra nel rettangolo le utility specifiche della

SLMI.

Tutti gli ambienti operativi hanno questa struttura standard.

 

 

 

 

Figura 7: Gestore di sistema della SLMI per l'integrazione e per la rimozione

di moduli applicativi commerciali.

 

 

 

 

 

Figura 8: Esempio di sessione di editing di un modello di partitura realizzato

mediante rappresentazione grafica di reti di Petri (modulo ScoreSynth).

 

 

 

 

 

 

Figura 9: Esempio di sessione di esecuzione di un modello a reti di Petri; viene

prodotta una mappa grafica degli "oggetti musicali" generati; il

musicista può intervenire fermando l'esecuzione del modello in

qualunque momento, ottenere informazioni sugli eventi che hanno

generato gli oggetti musicali ed eventualmente tornare all'editor

delle reti di Petri per modificare il modello attuale.

 

 

 

 

 

Figura 10: Esempio di sessione di editing di un icona nel modulo applicativo

TEMPER; la costruzione dell'icona rappresenta la definizione di un

vero e proprio elemento generativo musicale: verrà infatti interpretato

in esecuzione come un frammento di piano melodico (tempo/durate in

ascisse e altezze in ordinate).

 

 

 

 

 

Figura 11: Esempio di impostazione di parametri musicali per l'esecuzione con

il modulo TEMPER; con l'impostazione qui rappresentata, le

trasformazioni graduali di icone producono musica le cui altezze

appartengono alla scala equamente temperata in 12 semitoni, secondo

una scala pentatonica cinese impostata sul sol della settima ottava (79).

 

 

 

 

Figura 12: Esempio di integrazione tra diversi moduli applicativi in un unico

modulo più complesso: sia il modulo ScoreSynth che la tastiera MIDI

fungono da generatori di eventi MIDI, il Sequencer MIDI/DSP registra

gli eventi MIDI su tracce separate e ne consente l'ascolto inviando i

codici MIDI alle periferiche per la sintesi del suono connesse alla

interfaccia MIDI fisica: tutti questi processi sono attivi

concorrentemente in multitasking.

 

 

L'ambiente per l'analisi/re-sintesi di partiture della "Stazione di Lavoro Musicale Intelligente"

 

Goffredo Haus, Alberto Sametti

 

Laboratorio di Informatica Musicale

Dipartimento di Scienze del'Informazione

Università degli Studi di Milano

via Comelico 39

I-20135 Milano (Italia)

fax +39 2 55006373

e-mail: music@imiucca.csi.unimi.it

 

 

 

Abstract

 

In this work we describe the analysis/re-synthesis environment of the "Intelligent Music Workstation". It consists of three software modules:

a) ScoreSegmenter, which is able to decompose a score into a set of basic music objects and a number of transformation relationships among various occurrences of basic music objects within the score; it tries to recognize the main theme of the piece, if any exists; then it finds any instance of the main theme considering also any possible transformations of it; both entire and partial instances are considered; this automatic process is controlled through many configuration parameters the user can set;

b) ModelSynth, which synthesizes a Petri Net model representing the generative structures of the original score; it starts from informations extracted by ScoreSegmenter such as the number of voices within the score, the presence of loops, the application of music transformation (transposition, retrogradation, mirror inversion, …), etc.;

c) ScoreSynth, which executes that Petri Net model either resynthesizing the original score or synthesizing new scores, depending on eventual editing of the formal model.

 

 

 

This research has been supported by the Italian National Research Council in the frame of the MUSIC Topic (LRC C4): "INTELLIGENT MUSIC WORKSTATION", Subproject 7: SISTEMI DI SUPPORTO AL LAVORO INTELLETTUALE, Finalized Project SISTEMI INFORMATICI E CALCOLO PARALLELO.

Introduzione

 

L'ambiente per l'analisi/re-sintesi di partiture costituisce il livello più astratto (strutturale/simbo-lico) della "Stazione di Lavoro Musicale Intelligente" [1].

Esso fornisce strumenti interattivi per la scomposizione automatica di partiture, per la sintesi di modelli generativi basati sui risultati della scom-posizione e per l'esecuzione di tali modelli.

E' un ambiente mirato allo incremento della produttività individuale tanto del musicologo quanto del compositore.

Consente infatti di individuare strutture nascoste nelle partiture e di utilizzarle o per dare una rappresentazione più astratta e strutturata delle partiture stesse o per generare varietà di partiture con caratteristiche strutturali più o meno (a piacere del musicista) affini a quelle di una partitura data.

L'ambiente è costituito da tre moduli s/w: ScoreSegmenter (per la scomposizione), ModelSynth (per la sintesi dei modelli generativi), ScoreSynth (per la esecuzione dei modelli ovvero per la sintesi di nuove partiture). E' bene sottolineare che l'esecuzione con ScoreSynth di un modello generato da ModelSynth, senza che il musicista vi apporti modifica alcuna, avrà come effetto la generazione della partitura di partenza che era stata scomposta con ScoreSegmenter.

Architettura software

 

In questo capitolo analizzeremo quella che è l'architettura software più generale, cioè il contesto in cui si inserisce il modulo centrale, ModelSynth. Come si vede in Fig. 1, direttamente correlati con esso esistono gli altri due moduli ScoreSegmenter [2] [3] e Score-Synth [4]. Illustriamo brevemen-te le peculiarità dei tre moduli.

 

 

 

Fig. 1: architettura moduli s/w.

 

ScoreSegmenter si pone lo obiettivo della segmentazione di brani musicali quale primo passo per una futura loro strumen-tazione automatica proposta dall'elaboratore. Si tratta cioè della ricerca dei vari oggetti musicali con cui è composto il brano, dove per oggetti intendiamo quei frammenti musicali che l'autore ha espresso e che ha ripreso e trasformato, secondo i vari canoni musicali, in relazione al periodo storico e alla forma compositiva. E' uno strumento informatico prototipa-le che consente di accostarsi ai testi musicali non come pura sequenza di note, bensì vedendo i testi stessi come un edificio espressivo fatto da alcuni elementi di base strutturati funzionalmente fra loro in vario modo. ScoreSegmenter è quindi essenzialmente uno strumento di analisi.

ScoreSynth al contrario è uno strumento di sintesi. Esso rende disponibile un ambiente integrato per la creazione, debugging ed esecuzione di modelli di partiture musicali basati sul formalismo delle reti di Petri. L'obiettivo primario del modulo ScoreSynth è quello di mettere a disposizione del ‘musicista’ uno strumento molto potente ed efficace che permette di considerare l'attività compositiva da un punto di vista architetturale: il ‘musicista’ manipola sequenze, funzioni di trasformazione e strutture.

Infine, ModelSynth permette di tradurre, in termini di modelli di reti di Petri eseguibili da ScoreSynth, i risultati dell'analisi operata dal modulo Score-Segmenter.

 

 

 

Fig. 2: flussi di Input/Output.

 

 

Specifiche funzionali e input/output

 

Considerando i tre moduli da un punto di vista funzionale vediamo ora quali trasformazioni definiscono e cosa costituisce il dominio e il codominio per ciascuni di essi.

 

ScoreSegmenter

 

ScoreSegmenter è in grado di leggere una partitura espressa in notazione musicale tradizionale e generare un file di supporto (detto ‘file di lavoro’), corrispondente al file in ingresso, tramite cui operare la propria analisi, i vari temi riconosciuti in formato SMF (Standard MIDI File 1.0) e, più importante, una tabella testuale contenente i risultati delle ricerche.

Quest'ultima tabella, per ogni tema o frammento trovato, riporta le seguenti informazioni: la voce, la nota iniziale e la nota finale all'interno della partitura, l'operatore eventualmente appli-cato e la prima nota riconosciuta del tema. D'ora in poi faremo riferimento ad ogni riga della tabella con il termine ‘atomo’.

Affinchè le tabelle dello ScoreSegmenter siano significa-tive si devono fissare i parametri di impostazione della segmenta-zione in modo da effettuare ricerche esclusive su frammenti e temi. In modo da evitare che una sequenza di note, in una certa posizione nella partitura, appartengano a più temi o frammenti.

 

ModelSynth

 

ModelSynth legge i frammenti riconosciuti e memorizzati in formato SMF e la tabella testuale prodotta dall'analisi dello ScoreSegmenter; li analizza iterativamente al fine di individuare strutture descrivibili mediante reti di Petri; infine, sintetizza un modello di reti di Petri generativo gerarchico, eseguibile da ScoreSynth, avente i frammenti in formato SMF associati ad opportuni nodi del modello.

 

ScoreSynth

 

Come detto ScoreSynth permette l'editing, il debugging e la esecuzione di modelli di reti di Petri orientati alla sintesi di partiture musicali MIDI. Per una dettagliata descrizione delle fun-zionalità si rimanda all'articolo citato in bibliografia.

 

Criteri di analisi del

modulo ScoreSegmenter.

 

Un primo aspetto fondamentale del modulo consiste nella realizzazione degli algoritmi per la ricerca delle occorrenze degli oggetti musicali, o di loro sottoparti, all'interno del brano (oggetti che possono essere individuati dall'elaboratore stesso o forniti dall'utente). Come noto, a questo proposito sono due gli elementi da considerare: gli attributi della singola nota e la trasformazione musicale che la nota stessa ha subito assieme alle note che la precedono e/o seguono. Gli attributi sono la durata, l'accento, il nome della nota, l'altezza in semitoni e l'andamento dell'intervallo. Per quanto riguarda le trasforma-zioni, nel presente lavoro sono state considerate quelle applicate agli attributi di posizione, o grado, sia nella scala tonale che nella scala diatonica. Tali trasformazioni sono state realizzate attraverso tre tipi diversi di operatori algebrici e loro combinazioni, precisamente si tratta dell'operatore di trasposizione, di inversione speculare e di retrogradazione. Tali operatori applicati, come detto, al nome delle note, realizzano le corrispondenti trasformazioni musicali tonali, applicati all'altezza in semitoni, le trasformazioni reali. Per fornire buona duttilità a questo strumento di analisi, si è reso possibile intervenire, in mondo interattivo, per variare notevolmente lo ‘stile’ con cui le ricerche sono condotte, scegliendo quali attributi considerare, quali trasformazioni e quale tasso di variabilità applicare alle analisi tonali.

Un secondo aspetto è la segmentazione vera e propria. Per semplicità ci siamo basati sulla forma musicale della fuga, generalizzandola poi per le altre forme, anche se sarebbe opportuno ampliare l'algoritmo al fine di individuare, con maggior precisione e specificità, il tema vero e proprio del brano nelle altre forme. Per la individuazione degli oggetti ci si è basati non solo sulle loro ripetizioni, che sono evidentemente un aspetto necessario ma non sufficiente ai fini musicali. Un tema ha infatti anche un impianto tonale (ad eccezione della musica moderna) e metrico dai quali non è possibile prescindere. Per tener conto anche di questi aspetti vengono formulate delle richieste per le note degli ipotetici temi, in relazione all'appartenenza e affermazione della tonalità a seconda tel tipo di oggetto (tetico, acefalo e anacrusico) e in relazione alla esaustività e compiutezza del pensiero musicale, quale effetto della metrica. Anche per questa fase di individuazione dei temi si è predisposta una serie di parametri da specificare interattivamente sia circa gli elementi da valutare nella definizione del tema (tonalità, metrica, lunghezza del fraseggio, numero minimo di ripetizioni, ecc.), sia circa la ripetizione stessa degli oggetti.

 

Criteri di analisi/re-sintesi

del modulo ModelSynth.

 

In sostanza ciò che ModelSynth compie è una operazione inversa rispetto a quella dello ScoreSegmenter. Infatti cerca di ricostituire la struttura del brano musicale analizzato e atomizzato. Chiaramente questa operazione per non essere un passaggio ridondante deve conferire alla struttura finale del brano alcune caratteristiche significative. Queste caratteristiche si possono riassumere in una sola: rappresentare con modelli flessibili il contenuto informativo del brano, dove per ‘informativo’ intendiamo le relazione tra gli atomi costituenti e le loro trasformazioni nel corso dello svolgimento. Ciò che viene realizzato è quindi l'analisi di una analisi, allo scopo di, da una parte, fornire una rappresentazione alternativa, dall'altra estrarre e codificare l'informazione per la resintesi.

La prima analisi compiuta da ModelSynth è quella di operare il parsing della tabella prodotta dallo ScoreSegmenter, generata a seguito di una richiesta di segmentazione di un brano, utilizzando come supporto il file di lavoro relativo. Questa fase permette la rappresentazione in un formato intermedio dei risultati contenuti nelle tabelle. Ovvero salva tutti i temi riconosciuti assegnando un codice di riferimento, suddivide tutti gli atomi per voce, riordina le loro occorrenze secondo una chiave temporale e recupera dal file di lavoro tutte quelle parti (sequenze di note e pause), che possiamo chiamare ‘scarti’, giudicati non significativi dallo algoritmo di segmentazione, ma che costituiscono la colla tra i vari atomi.

Secondariamente vengono consi-derati gli operatori applicati agli atomi. Poiché gli operatori riconosciuti dallo ScoreSegmen-ter sono un sottoinsieme stretto di quelli disponibili in Score-Synth, questa operazione è immediata.

A questo punto ModelSynth ha a disposizione tutte le informazioni necessarie per operare la propria analisi e quindi la costruzione automatica di un modello di Reti di Petri, in formato ScoreSynth, corrispondente al brano di partenza e che metta in evidenza, se presenti, i costrutti relazionali e le funzioni di trasformazioni utilizzate. Fondamentale in questa fase è la possibilità di sfruttare i meccanismi di chiamate parametriche a reti gerarchiche messa a disposizione da ScoreSynth. Questi realizzano la separazione tra struttura del brano e temi. La struttura viene identificata dalle relazioni tra i temi, le loro ripetizioni e le loro trasformazioni, e viene quindi codificata in un modello. I temi svolgono solamente il ruolo dei dati.

L'analisi procede considerando singolarmente le voci. Le strutture che si cerca di riconoscere sono i loop semplici, i loop con selezione e la ripetizione di pattern specifici.

Con loop semplici intendiamo le successioni di un tema o di una sua trasformazione. Ad esempio, considerando il tema A e un operatore T, una successione come

 

T(A) - T(A) - T(A) - T(A)

 

può essere rappresentata da una rete macro che realizzi un loop alla quale vengono passati come parametri il tema, l'operatore e il numero delle ripetizioni.

Un loop con selezione invece si ha se varia l'operatore applicato ad un medesimo tema. Ad esempio, nella successione:

 

T(A) - R(A) - I(A)

 

Questa tipologia di costrutto utilizza sempre come base una rete di tipo loop, con la differenza che l'oggetto del looping non è un singolo elemento, ma una sottorete macro alla quale vengono passati come parametri gli operatori da applicare ad ogni ciclo.

Oltre alla risoluzione dei loop vanno riconosciuti anche i pattern. E i pattern possono essere ricercati a diversi livelli. Al livello degli operatori; ad esempio in successioni relative ad uno stesso tema come:

 

T(A) - R(A) - T(A) -

R(A) - T(A) - R(A)

 

Al livello dei temi; come in

 

T(A) - R(B) - I(C) -

T(A) - R(B) - I(C)

 

O infine a livello di intere reti.

Le fasi più significative della analisi del ModelSynth si possono quindi riassumere mediante i seguenti passi:

i) creazione di una rappre-sentazione intermedia;

ii) riconoscimento di pattern sugli operatori;

iii) riconoscimento di loop semplici o con selezione;

iv) riconoscimento di pattern sui temi;

v) riconoscimento di pattern su intere reti;

vi) torna a v).

Il processo di analisi continua solamente se il passo v) è in grado di operare almeno un riconoscimento.

 

Nele reti di Petri raffigurate nelle figure seguenti viene mostrato quale potrebbe essere il risultato, almeno per quanto riguarda gli aspetti più generali, dell'analisi operata da Model-Synth su un brano di nome "PieceX". In particolare la figura 3 rappresenta la rete di più alto livello del modello; la figura 4 la sottorete relativa alle parti in gioco (in questo esempio, tre); e, la figura 5, la rete che ‘raccoglie’ tutti i temi completi riconosciuti da ScoreSegmenter. La figura 6, invece, mostra come nel modello può essere rappresentata la applicazione di un operatore ad un tema: l'operatore nella riga sottostante indica che la trasformazione da esso operata fa riferimento al tema "Theme2". Questa semplice rete potrebbe essere invocata più volte in un modello. Pertanto verrebbe

 

 

Fig. 3: la rete generata

di livello più alto.

 

 

 

Fig. 4: la rete "PieceX".

 

 

 

Fig. 5: la rete con tutti

i temi riconosciuti.

 

Fig. 6: un esempio di appli-cazione di un operatore di trasposizione ad un tema.

 

 

Futuri sviluppi

 

L'ambiente per l'analisi/re-sintesi di partiture qui brevemente descritto è da considerare un prototipo per la ricerca sperimentale che avrà tante più possibilità di accrescere la finezza delle sue fasi di analisi quanta più sistemtica sperimen-tazione potremo attuare, con le seguenti finalità primarie:

I) generalizzazione della capacità di segmentazione dello ScoreSegmenter alle più svariate forme musicali; attualmente, per quanto sia in grado di scomporre qualsivoglia partitura, ha maggiore capacità, ovvero produce meno scarti, con brani in forma di fuga o di sonata;

II) estensione delle capacità di analisi/re-sintesi del ModelSynth per l'individuazione di strutture sempre più profonde; in particolare, si può potenziare ulteriormente l'individuazione di strutture affini estendendo l'attuale nozione di rete macro in modo tale che una rete macro possa essere considerata come un parametro di un altra rete macro; questa possibilità richiede una coerente estensione del modulo ScoreSynth.

In termini ancor più generali, possiamo pensare ad un approccio, quale quello qui seguito nel caso delle partiture musicali, applicato al caso dei processi multimediali, dove si possano scomporre, organizzare in modelli generativi e sintetizzare processi costituiti da suoni, immagini e testi.

 

Bibliografia

 

[1] I. Pighi e AA.VV.: "Integrazione dell'architettura e delle specifiche funzionali di alto livello dei moduli della Stazione di Lavoro Musicale Intelligente - Unità Operativa dell'Università degli Studi di Milano", Tech. Report M/42, CNR-PFI2 MUSIC Series, 1993.

 

[2] F. Lonati: Guida operativa del modulo "ScoreSegmenter", Tech. Report M/18, CNR-PFI2 MUSIC Series, 1991.

 

[3] F. Lonati: Note tecniche del modulo "ScoreSegmenter", Tech. Report M/19, CNR-PFI2 MUSIC Series, 1991.

 

[4] G. Haus, A. Sametti: "SCORESYNTH: a System for the Synthesis of Music Scores based on Petri Nets and a Music Algebra", in "Readings in Computer Generated Music", D. Baggi Ed., pp.53-78, IEEE Computer Society Press, 1992.

 

 

UN AMBIENTE INTEGRATO PER LA ELABORAZIONE MUSICALE MIDI E LA SINTESI DEL SUONO MEDIANTE MODULI DSP°

 

A. Ballista, E. Casali, J. Chareyron, G. Haus

 

 

L.I.M. - Laboratorio di Informatica Musicale, Dipartimento di Scienze dell'Informazione

Università degli Studi di Milano, via Moretto da Brescia 9, I-20133 Milano, Italia

E-mail: music@imiucca.unimi.it

Tel: +39 2 7575249 Fax: +39 2 76110556

 

 

Parole chiave: sequencing, MIDI, digital signal processing, microprogrammazione, programmazione timbrica, mixing

 

ABSTRACT

 

In this paper the Sound Processing Environment (SPE) of the Intelligent Music Workstation (IMW) is described. IMW-SPE integrates MIDI devices and DSP units allowing the user to control both MIDI devices and DSP units within the same sequencing environment so that DSP units may be considered if they were real time MIDI devices with timbre controlling capabilities. IMW-SPE consists of three subsystems: the MIDI/DSP sequencing program (SQAN) and two timbre programming software modules (Waver and LASy Workbench) which implement a number of digital sound synthesis techniques by DSP units. The end-user has complete control of the whole environment by means of MIDI programming only and without the need of direct DSP microprogramming.

 

The Waver Workbench allows sound synthesis by Two-Variable Functions, Waveshaping and analysis/synthesis by Wavelet Transforms. The LASy Workbench implements Linear Automata Synthesis. The SQAN DSP microprogram library includes Two-Variable Functions, Waveshaping and Linear Automata Synthesis sound synthesis units.

 

IMW-SPE is an open environment so that a musician can add his own sound synthesis units. It is also possible to import/export both sounds and MIDI files by means of Digidesign Sound Designer II and Standard MIDI File 1.0 formats respectively.

 

This work has been developed in the frame of the Intelligent Music Workstation (IMW) Project which is devoted to the design and development of a music software/hardware environment in which commercially available products are integrated with prototypal modules built up in the frame of musical informatics research.

 

 

 

1. Introduzione

 

Negli ultimi dieci anni le applicazioni di Computer Music si sono prevalentemente sviluppate in due ambiti paralleli, il primo basato su dispositivi MIDI (sintetizzatori, campionatori, mixer, effetti, sequencer) e il secondo basato su unità DSP (add-on board, unità stand-alone, sistemi DSP ad architettura matriciale).

 

Grazie alla loro facilità d'uso, all'affidabilità, al basso costo ed alla disponibilità di software per la loro gestione, i dispositivi MIDI hanno avuto una grande diffusione mentre così non è stato per le unità DSP a causa della loro difficile programmazione, della mancanza di software dedicato e della loro difficile reperibilità. D'altra parte, i dispositivi MIDI hanno alcune limitazioni intrinseche, come specificato da (Loy, 1985), mentre le unità DSP, potendo essere programmate, permettono più flessibilità di utilizzazione e il loro costo sta diventando sempre più accessibile. In più, le crescenti capacità computazionali degli odierni Personal Computer general purpose permettono ormai l'utilizzo di schede DSP per applicazioni real time.

 

E' per questi motivi che noi abbiamo pensato che fosse arrivato il momento di integrare in una sola applicazione a finalità musicali le peculiarità del mondo MIDI e quelle del mondo DSP e che permettesse il controllo delle schede per il Signal Processing via codifica MIDI, aprendo quindi una significativa finestra sul controllo del suono in tempo reale, reso finalmente accessibile da un ambiente standardizzato e largamente diffuso.

 

In questo articolo mostreremo i risultati della nostra ricerca, condotta nell'ambito del progetto di ricerca Stazione di Lavoro Musicale Intelligente (SLMI) (Camurri et al., 1989; Stiglitz Ed., 1991), realizzata nell'ambito del Progetto Finalizzato "Sistemi informatici e calcolo parallelo" del C.N.R. e tesa ad evidenziare la possibilità di integrazione tra software commerciali ed alcuni prototipi realizzati presso il L.I.M. dell'Università di Milano e presso il D.I.S.T. dell'Università di Genova. La maggior parte dei prototipi realizzati è stata sviluppata per lavorare su macchine Macintosh. Tutte le applicazioni sono in grado di leggere e/o scrivere Standard MIDI File 1.0 nei differenti formati definiti. I SoundFile sono compatibili con il formato di Sound Designer II della Digidesign.

 

E' infine importante mettere in luce che la SLMI è un sistema aperto, al quale gli utenti possono aggiungere e togliere le applicazioni con cui sono abituati a lavorare allo scopo di trovare utili sinergie con i programmi prototipali della workstation, potendo comunicare tra le varie applicazioni tramite gli standard sopracitati.

 

 

2. Architettura generale dell'ambiente software

 

In questo articolo parleremo di tre applicazioni, SQAN (MIDI/DSP Sequencer), Waver Workbench (Sintesi mediante Two Variable Function, Waveshaping, Wavelet) e LASy Workbench (Sintesi mediante Automi Cellulari). Queste tre applicazioni sono in grado di scambiarsi informazione in modo intenso e atipico, costituendo un vero e proprio ambiente integrato per la costruzione, l'elaborazione e l'uso di suoni sintetizzati mediante DSP con la possibilità di esecuzione integrata a normali dispositivi MIDI.

 

Quando si parla di un insieme di tool software in grado di scambiarsi informazioni, è necessario innanzitutto chiarire di che tipo di informazione si tratta. Il nostro sistema si basa su tre standard diffusi: Standard MIDI Files 1.0 e MIDI Management Tools (per lo scambio di dati MIDI), Digidesign SoundFile (per lo scambio di informazione audio). Abbiamo inoltre definito un nuovo formato per lo scambio di parametri per la sintesi del suono tra le tre applicazioni che abbiamo chiamato Patch File.

 

Figura 1

 

 

Tipo di linguaggi usati per la costruzione del sistema software:

Linguaggi di alto livello per Macintosh (Pascal, C)

Linguaggio di basso livello per Macintosh e DSP (Assembly 68000 e 56000)

Linguaggio per DSP (Assembly 56000)

 

Come si può notare dalla Figura 1, SQAN, pur essendo un'applicazione distinta da LASy Workbench e da Waver Workbench, possiede alcune parti di codice che sono state integrate nella sua struttura come apparirà più chiaro in seguito.

 

Il sequencer può leggere e scrivere Standard MIDI Files 1.0 e Patch Files per lo scambio di informazioni con il mondo MIDI da una parte (rappresentato dalle ormai numerose applicazioni commerciali) e il mondo di ricerca e sviluppo rimbrico su DSP dall'altra (rappresentato nel nostro caso da Waver Workbench e LASy Workbench). Queste ultime due applicazioni possono inoltre leggere e scrivere Patch Files per creare ed elaborare suoni che potranno essere usati da SQAN. Così, nelle due applicazioni orientate allo sviluppo timbrico, potremo trovare in più rispetto al sequencer alcune features particolari e strumenti di generazione delle tabelle utilizzate dalle sintesi e che non sono propriamente necessari in una applicazione orientata alla performance quale è SQAN. Poiché la configurazione del DSP dipende fortemente dal tipo di sintesi usata, diciamo per completezza che il Patch File ha un codice di identificazione che specifica il tipo si sintesi da cui è stato creato e da cui può quindi essere usato. Questo implica che mentre SQAN è in grado di leggere tutti i tipi di Patch Files, non c'é finora nessun buon motivo per cui ad esempio LASy Workbench, che gestisce la sintesi mediante Automi cellulari, sia in grado di leggere Patch Files creati per la gestione della sintesi mediante Waveshaping.

 

Infine possiamo dire che il sequencer è compatibile con il MIDI Managment Tools sotto MultiFinder e quindi, tra l'altro, consente di eseguire il brano musicale in uso anche se il MIDI/DSP Sequencer non è l'applicazione corrente realizzando una sorta di multitasking su Macintosh.

 

 

3. Il Sequencer MIDI/DSP (SQAN)

 

Il modulo Sequencer MIDI/DSP (SQAN) è un'applicazione, sviluppata in ambiente MPW su computer Macintosh, di tipo sequencer (registratore e processore di sequenze di dati musicali in formato MIDI) per il controllo simultaneo e sincrono di unità MIDI e di schede DSP e per il mixing a livello MIDI di sequenze musicali.

 

 

 

Figura 2

 

 

L'applicazione è composta da due sezioni: un sequencer MIDI che unisce alle consuete funzioni di registrazione, riproduzione ed elaborazione di sequenze MIDI anche la possibilità di controllare, tramite un apposito driver, da 1 a 4 schede Digidesign Sound Accelerator (basate sul DSP Motorola 56001) collocate internamente al Macintosh, vedendole come normali unità di sintesi esterne controllabili via MIDI; un mixer per il bilanciamento dei livelli di intensità di differenti e contemporanee sequenze di dati musicali (numero massimo: 32) che opera direttamente sulle sequenze di dati MIDI, agendo sul parametro MIDI standard key-velocity, ed eliminando quindi la necessità di utilizzare per l'attività di mixing un apposito dispositivo hardware esterno di tipo convenzionale. In Figura 2 è mostrata l'architettura hardware del sistema.

 

Il Sequencer MIDI/DSP legge e scrive Standard MIDI Files 1.0 ed è compatibile con il MIDI Managment Tools della Apple Computer, potendo così scambiare dati MIDI con altre applicazioni aperte nel sistema tramite PatchBay, il pannello di controllo del MIDI Managment Tools.

 

In Figura 3 è infine riportato il pannello di controllo di una traccia dove si possono selezionare le unità di sintesi desiderate (MIDI e/o DSP).

 

 

Figura 3

 

 

Ma tra tutte le caratteristiche di SQAN, quella di maggiore interesse attualmente è senz'altro la sua capacità di controllare via MIDI una o più schede DSP, vedendo queste ultime come normali sintetizzatori di suoni che però sono collocati internamente al calcolatore e sono programmabili.

 

 

3.1 Integrazione MIDI/DSP

 

Nel suo normale processo di lettura temporizzata dei dati MIDI che formano il brano musicale corrente, SQAN controlla se il messaggio MIDI appartiene o meno ad una traccia assegnata al DSP e in caso affermativo esegue una chiamata ad un driver per tradurre il significato del messaggio MIDI in termini in fraquenza ed intensità interpretabili dalle routines di controllo del DSP. Cosicché la prima cosa da fare parlando di integrazione MIDI/DSP è di definire le relazioni semantiche tra i comandi MIDI e le azioni del DSP. Ovviamente non tutti i messaggi MIDI sono da considerarsi interessanti per un primo approccio verso l'integrazione MIDI/DSP. Noi abbiamo per ora concentrato la nostra attenzione sui comandi MIDI di Note On, Note Off e Program Change.

 

E' abbastanza chiaro ed intuitivo che si possono definire le seguenti:

 

Note On -----> Operazioni di inizio suono

 

Note Off -----> Operazioni di fine suono

 

Una volta che SQAN ha passato un messaggio di Note On al driver DSP, è il driver stesso che, in dipendenza del tipo di sintesi in uso sulla scheda, deve mandare al DSP uno o più messaggi per generare un suono di una specifica frequenza (Key number) e dinamica (Key velocity). Il modo di calcolare la frequenza del suono dipende strettamente da tipo di sintesi che si sta usando ed è quindi opportuno disporre di un driver per ogni sintesi. Notiamo inoltre che la variazione del parametro di dinamica (Key Velocity) solitamente causa un cambiamento nel contenuto armonico del suono prodotto; l'algoritmo di sintesi è ovviamente libero di trattare l'informazione di dinamica nel modo più opportuno.

 

Il messaggio di Note Off provoca l'interruzione di un suono di una specifica frequenza che è attivo sul DSP ponendo il volume della scheda a zero. L'implementatore della sintesi è anche qui libero di gestire eventuali altri parametri che possono essere in dipendenza di questo evento come velocità di Decay, Release etc.

 

Controllando il flusso dei Note On e dei Note Off, l'algoritmo di sintesi è in grado di conoscere attraverso il driver quale livello di polifonia è richiesto dalle tracce assegnate ad uno specifico DSP. In questo modo la sintesi potrà comportarsi correttamente ripetto al suo livello di polifonia.

 

Ora è importante definire le altre azioni della scheda afferenti al controllo dinamico dello spettro sonoro, inviluppo e variazione del suono da mandare in esecuzione. Queste azioni definiscono quello che comunemente indichiamo con il nome di "timbro".

 

Con il termine Patch noi facciamo riferimento all'insieme di dati e/o azioni che possono determinare cambiamenti della forma d'onda. In linea di principio un Patch può essere un insieme di parametri di sintesi, un identificatore di un algoritmo, una tabella o un'altra struttura dati da caricare sul DSP, un file di campioni. Così, quando vogliamo cambiare il "timbro" del suono corrente, dobbiamo mandare un messaggio, un messaggio MIDI, alla scheda. Poiché nel mondo MIDI esiste già un comando per cambiare timbro sui normali sintetizzatori e poiché noi vediamo il DSP come un sintetizzatore, abbiamo scelto il messaggio MIDI di Program Change per controllare l'aspetto timbrico del suono generato dalla scheda.

 

Possiamo così scrivere che:

 

Program Change -----> Patch Change Operations

 

Questa scelta implica due importanti situazioni: abbiamo la possibilità di indirizzare una tabella di 128 (7 bit) Patch (inclusi nel Patch file) senza dover cambiare la tabella stessa e, usando il messaggio MIDI di Program Change, siamo sicuri che tutti gli utenti di sistemi MIDI conoscono il significato del messaggio MIDI utilizzato per il cambiamento del "timbro".

 

Quindi, inserendo nella sequenza MIDI una opportuna successione di Program Change Messages tramite un apposito dialogo, si può gestire il comportamento del DSP dal punto di vista timbrico. E' importante sottolineare che al momento della ricezione del messaggio di Program Change, l'algoritmo di sintesi può, immediatamente e con qualsivoglia criterio, cambiare il suono sulla scheda anche se ci si trova tra un Note On e un Note Off; sugli usuali strumenti MIDI questa operazione è raramente implementata e in ogni caso di difficile impostazione. E' inoltre possibile creare e modificare librerie di "suoni", ognuna costituita da 128 possibili elementi, per configurare adeguatamente la scheda in dipendenza della sintesi che si intende usare. Le sintesi che sono state finora implementate sono: Two Variable Function Synthesis, WaveShaping Synthesis, Linear Automata Synthesis, come vedremo più in particolare nel § 5.

 

 

4. Ambiente sperimentale per microprogrammi DSP per Sound Accelerator Card

 

Il modulo Ambiente sperimentale per microprogrammi DSP per Sound Accelerator Card consente di costruire e modificare modelli timbrici basati su alcune tecniche specifiche di sintesi del suono (Wavelet, Waveshaping, TVF, Automi cellulari).

In particolare, è attualmente costituito da quattro sottoambienti, uno per ciascuna tecnica di sintesi implementata: uno per l'editing di modelli timbrici basati sulla tecnica di sintesi per Wavelet; un altro per l'editing di modelli timbrici basati sulla tecnica di sintesi per Waveshaping; un altro ancora per l'editing di modelli timbrici basati sulla tecnica di sintesi per funzioni a due variabili; infine l'ultimo, LASy (Linear Automata Synthesis) per l'editing di modelli timbrici basati su una tecnica di sintesi che utilizza automi cellulari come modelli per l'evoluzione dei suoni. I primi tre sottoambienti sono accessibili da una singola applicazione, Waver Workbench, mentre la tecnica LASy è resa disponibile dall'applicazione LASy Workbench. I modelli timbrici generati per mezzo delle tecniche di sintesi (a parte la tecnica Wavelet, come vedremo nel prossimo paragrafo) possono essere archiviati sotto forma di Patch File, un formato contenente informazione sul tipo di configurazione sonora predisposta per la scheda e che può essere letto dal Sequencer MIDI/DSP.

 

 

4.1 Waver Workbench

 

Waver Workbench è una applicazione nata per sperimentare tre tipi di sintesi:

- Two Variable Function Synthesis (TVF Synth). E' completamente descritta in (Mitsuhashi,1982) e sviluppata in (Borgonovo & Haus, 1986). E' una tecnica di sintesi non usata commercialmente, ma oggetto di ricerca da molti anni presso il L.I.M. Consiste essenzialmente nel campionamento di una funzione bidimensionale lungo un'orbita definita da un insieme di parametri.

- Waveshaping Synthesis (WSH Synth). E' completamente descritta in (Reinhard,1981) ed è ben conosciuta e usata commercialmente. Consiste nello "shaping" di un'onda sinusoidale, che viene poi utilizzata come argomento di un polinomio assegnato.

- Wavelet Transform Synthesis (WLT Synth). E' nata principalmente come tecnica di analisi simile alle Fourier Transform (Kronland-Martinet, 1988). La WLT può anche essere usata per sintetizzare suoni poiché, dopo il calcolo della trasformata, esistono molte regole di ricostruzione che permettono di resintetizzare il suono dopo che su di esso sono state eseguite interessanti manipolazioni.

 

Waver Workbench è un'applicazione utile sia per realizzare ricerca sul comportamento delle sintesi implementate, sia per realizzare, oltre ai Patch File, altre tabelle che è possible usare anche dall'ambiente Sequencer MIDI/DSP per la produzione di suoni. Per quanto riguarda in particolare le sintesi TVF e WSH è per entrambe possibile, tramite un apposito dialogo, cambiare in tempo reale i parametri delle due sintesi ascoltando direttamente il risultato delle modifiche. Lanciando Waver possiamo accedere direttamente a tutte e tre le sintesi potendo inoltre visualizzare i suoni sintetizzati per mezzo della scrittura di SoundFile Digidesign.

 

Lo sviluppo di Waver è avvenuto in parallelo con lo sviluppo di SQAN e l'integrazione nel Sequencer MIDI/DSP di due delle sintesi di Waver (TVF e WSH) ha rappresentato il primo esperimento sul quale è stata definita l'intera strategia di integrazione. L'esclusione da SQAN della sintesi tramite Wavelet è avvenuta poiché erano necessari tempi di calcolo troppo elevati per essere eseguiti in tempo reale su un hardware come quello usato per la realizzazione del prototipo e in questa sede ha contribuito a chiarire i limiti di calcolo del prototipo stesso. E' apparso chiaro che l'architettura software di SQAN, con l'hardware disponibile in questa prima implementazione, era più adatta all'integrazione di metodi di sintesi algoritmica che all'implementazione di metodi di trasformazione di campioni che implicavano, nel nostro caso specifico, il trasferimento di una grande mole di dati.

 

 

4.2 LASy Workbench

 

La Linear Automata Synthesis è una nuova tecnica di sintesi che è completamente descritta in (Chareyron,1990). L'algoritmo LASy "vede" una tabella contenente un'onda campionata come un automa cellulare unidimensionale. Lo stato di ogni cella dell'automa è periodicamente calcolato utilizzando la sua regola di transizione. I valori corrispondenti sono inviati al DAC, permettendo la generazione di una vasta varietà di suoni in grado di automodificarsi.

 

Lasy Workbench è un sistema software che implementa l'algoritmo LASy. E' un'applicazione orientata sia alla ricerca che all'uso pratico. LASy Workbench permette ai musicisti di sperimentare la sintesi sonora e di creare librerie di strumenti software che usano l'algoritmo LASy e che possono essere usate dal sequencer SQAN. L'applicazione può anche essere usata come un modulo MIDI dedicato alla produzione di suoni permettendo su questi ultimi un controllo real-time.

 

Al momento del lancio dell'applicazione, vengono caricate automaticamente alcune tabelle di default per il controllo delle forme d'onda e delle regole di transizione, per consentire all'utente un uso immediato della sintesi LASy. La generazione del suono è controllata dalla tastiera del computer (come fosse una tastiera musicale nel senso comune del termine) o da un dispositivo MIDI che agisce esternamente che viene connesso al calcolatore tramite una interfaccia MIDI. Lo schermo mostra la maggior parte dei parametri della sintesi che possono essere modificati usando il mouse o la tastiera del calcolatore. I files di forme d'onda, regole di transizione e "strumenti" possono essere letti e scritti su hard disc.

 

Diversamente dallo sviluppo di Waver Workbench, sviluppato parallelamente a SQAN e già con una certa attenzione rivolta al problema della integrazione dei microprogrammi nel sequencer, LASy Workbench è nato come una applicazione stand-alone e l'integrazione della tecnica LASy è cominciata dopo il completamento di SQAN. Inoltre TVF and WSH sono due tecniche di sintesi che presentano molte caratteristiche in comune mentre LASy ha, come abbiamo visto, una natura completamente differente. Questo fatto ha, come vedremo in seguito, contribuito a collaudare le specifiche di integrazione di altre sintesi all'interno del Sequencer MIDI/DSP.

 

 

5. Microprogrammi per Sequencer MIDI/DSP e Sound Accelerator Card

 

Il modulo Microprogrammi per Sequencer MIDI/DSP e Sound Accelerator Card consiste in una libreria aperta di microprogrammi che implementano attualmente le seguenti teniche di sintesi: TVF, Waveshaping e Automi Cellulari.

 

 

5.1 Il modulo TVF del sequencer SQAN

 

Esaminiamo qui brevemente come la sintesi TVF (Two Variable Function) è stata integrata nel Sequencer MIDI/DSP.

 

Un microprogramma scritto in assembly 56000 realizza la sintesi in tempo reale campionando una tabella che contiene una funzione a due variabili su un'orbita definita da 10 parametri la quale può essere modificata per variare il timbro.

 

A causa della complessità dell'algoritmo, la sintesi è stata implementata soltanto in una versione monofonica; infatti abbiamo riscontrato problemi di tempo di calcolo dovuti al fatto di dover calcolare un singolo campione in meno di 1/44100 sec, che è il tempo che intercorre tra due interrupt successivi generati dalla porta SSI connessa al DAC della scheda Sound Accelerator. Per quanto riguarda la gestione dell'inviluppo, abbiamo usato un modello semplice, basato su tre parametri: volume, velocità di attacco e velocità di rilascio. Ciò ha permesso di semplificare la parte preposta al controllo dell'inviluppo orientando maggiormente il microprogramma verso il controllo del timbro.

In Figura 4 vediamo il dialogo principale di Waver per la sintesti TVF.

 

 

Figura 4

 

 

I tre pulsanti presenti nella parte inferiore del dialogo sono comuni a tutti gli algoritmi di sintesi inclusi in SQAN e hanno la stessa azione. La pressione sul pulsante "Save Patch" (salvataggio di un Patch) fa apparire il relativo dialogo di SQAN. Quando l'utente segnala l'accettazione dell'operazione di salvataggio del patch (dopo aver eventualmente modificato il nome proposto dal dialogo), il patch attivo (che corrisponde alla lista dei parametri visibili nel dialogo pricipale della sintesi LASy) viene salvato in memoria, e può ulteriormente essere ricaricato o modificato. L'insieme dei patch in memoria e le relative tabelle possono essere memorizzati in una delle memorie di massa in linea con la scelta della voce "Save Patch" del menu "File" di SQAN. La pressione sul pulsante "Load Patch" (caricamento di un patch) fa apparire il relativo dialogo di SQAN. Quando l'utente segnala l'accettazione dell'operazione di caricamento il patch attivo viene sostituito dal patch scelto. Il dialogo principale della sintesi LASy viene immediatamente aggiornato in modo che i valori visualizzati corrispondano a quelli dei parametri del patch appena caricato. La pressione sul pulsante "Edit Patch" (caricamento di un patch) fa apparire il relativo dialogo di SQAN. L'utente ha la possibilità di modificare il nome di un patch in memoria, o di sopprimerlo del tutto.

 

La struttura del file di Patch per la sintesi TVF vede:

- la parte statica costituita dalla tabella contenente la funzione di due variabili che viene spedita solo all'atto dell'apertura della sintesi;

- la parte dinamica costituita da un record contenente i 10 parametri di sintesi, i 3 parametri dell'inviluppo, il parametro T.

 

Questo record realizza il Patch e contiene i dati che vengono mobilitati ad ogni Program Change, che si realizza nella spedizione dei soli parametri cambiati rispetto ad un precedente Patch .

 

Nella parte alta del dialogo compaiono le due espressioni delle coordinate dell'orbita in cui ogni parametro è stato implementato come 'parametro freccia':

 

x(t) = fx T + px + Ix sin(jx À T + yx À)

y(t) = fy T + py + Iy sin(jy À T + yy À)

 

In particolare:

 

- fx, fy, jx, jy: sono parametri freccia di passo 1 moltiplicati per il parametro T

- px, py, yx, yy: sono parametri freccia di passo T

- T è uguale a 1/TableSize con TableSize parametro freccia di passo 1.

 

Tramite quest'ultimo si può agire sull'intonazione effettuando una sorta di accordatura dello strumento.

Ogni volta che viene cambiato un parametro si vedrà comparire un valore in corrispondenza dei due parametri Freq(Hz) e Period(N.Samples); questi sono rispettivamente il valore suggerito per la frequenza e per il periodo espresso in numero di campioni prima del ripetersi della forma d'onda. Nel caso in cui il calcolo fosse inesatto, è possibile indicare il valore corretto agendo sul parametro editabile Freq(Hz), indicandone il vero valore. Questa operazione ha importanza quando si opera nell'ambiente integrato MIDI/DSP dove salvare un Patch comporta anche la memorizzazione del parametro T su cui si baserà il calcolo di trasposizione della frequenza in fase di esecuzione delle note.

 

N.Samples è un parametro editabile intero avente significato solo quando il dialogo è richiamato con abilitata un opzione per la produzione di un SoundDesigner File per esaminare il risultato della sintesi. Il bottone "Env" permette di accedere al dialogo di cambio dell'inviluppo in cui si possono controllare i parametri di volume, velocità di attacco e velocità di rilascio. Il bottone "Canc" permette di uscire dal dialogo di cambio dei parametri senza però attualizzare gli stessi; mentre il bottone "Ok" esegue l'uscita dal dialogo più attualizzando le variazioni apportate.

 

 

5.2 Il modulo WSH del sequencer SQAN

 

Nella nostra implementazione, la sintesi WSH è stata vista come un particolare caso monodimensionale della sintesi TVF, dove x=i permette la scelta del polinimio pi memorizzato nella riga i-esima della tabella dei polinomi mentre

y(t) = I sin(2Àft+p)

 

è l'onda di input che deve essere distorta. E' importante notare che il cambiamento da un polinomio ad un altro può generare discontinuità e così eseguiamo questa operazione solo al verificarsi di un Program Change e dopo aver eseguito i controlli del caso.

 

Il programma in microcodice che realizza la sintesi WSH è una restrizione di quello della sintesi TVF: la differenza risiede nella tabella, la quale è generata con un criterio differente. In particolare la sintesi TVF, usata con una tabella WSH, può generare waveshaping avendo l'attenzione di lasciare inalterati tutti i parametri eccetto i seguenti:

 

fx = i (indice intero del polinomio)

Iy Î [-1,1] invece di Iy Î Â

yy Î Â

 

In conseguenza di ciò, sia la sintesi WSH che la sintesi TVF possono essere classificate come tecniche di Not Linear Distortion (NLD); nel caso della sintesi TVF la previsione dei valori di output risulta sicuramente più complessa poiché sia la funzione di input che la Transfer Function sono entrambe in due variabili e in piu, nel caso TVF, è presente il concetto di "wrap around" che non si presenta nel caso WSH, essendo Iy Î [-1,1]. Riguardo al problema dell'inviluppo, abbiamo usato gli stessi accorgimenti implementati per la sintesi TVF.

 

Il dialogo di controllo della sintesi WSH non viene riportato poiché è molto simile come tipo di interazione e come parametri a quello della sintesi TVF.

 

 

5.3 Il modulo LASy del sequencer SQAN

 

Sono necessari al minimo due moduli software per integrare una nuova tecnica di sintesi nel sequencer SQAN: un microprogramma in assembly 56000 caricato sulla scheda della Digidesign preposto a calcolare i campioni che è necessario fornire al DAC della scheda stessa e un driver che traduce i messagi MIDI passati da SQAN in appropriati comandi da mandare alla Sound Accelerator Card via Nubus. Un terzo modulo, il modulo di interfaccia, diviene necessario quando si volesse avere una comunicazione diretta con l'utilizzatore per consentire editing dei suoni dall'interno dell'applicazione sequencer. Il modulo LASy, come del resto i moduli TVF e WSH, permette questa interazione.

 

Il microprogramma per l'algoritmo LASy consente di disporre di una sintesi sonora polifonica (sono disponibili quattro voci nella attuale implementazione). Siamo stati piacevolmente sorpresi dal fatto che il microprogramma polifonico implementato per LASy Workbench sia stato utilizzato per SQAN senza dovergli apportare alcuna modifica!

 

Ogni oscillatore software è associato a due tabelle collocate nella memoria della scheda che rappresentano i due stati più recenti dell'automa. Il loop principale del microprogramma aggiorna queste due tabelle seguendo la regola di transizione corrente, la quale può essere diversa per ogni oscillatore. Questo loop è interrotto con una frequenza pari a quella di campionamento per fornire il campione al DAC. La routine di interrupt SSI preleva il corretto campione dalle tabelle in funzione della frequenza dell'oscillatore, usando una interpolazione lineare per compensare la lunghezza limitata delle tabelle stesse. I campioni di ogni oscillatore vengono quindi scalati in funzione del volume corrente, sommati ed infine mandati al DAC. Il loop principale controlla inoltre i flag che indicano la richiesta di esecuzione di una nuova nota (per caricare una nuova forma d'onda e settare il volume corrente), di un messaggio di Note Off (passando alla regola di transizione per il rilascio) o la richiesta di fine suono (azzerando il volume degli oscillatori).

 

La parte più complessa del lavoro di integrazione è stata rappresentata dalla gestione delle tabelle (Patch Table) di suoni, poiché ogni operazione richiede numerosi passaggi verso le rountines di controllo di SQAN. Ciò è dovuto in gran parte al fatto che é stato costruito un vero e proprio protocollo di comunicazione tra la sintesi e il sequencer per consentire ad altri sviluppatori di aggiungere altre sintesi. Essendo questo un protocollo standard, si può adattare in modo più o meno naturale alla sintesi che si vuole implementare. Questo è il prezzo da pagare per presentare una interfaccia consistente ad un utente interessato ad usare diverse sintesi per la produzione del suono e nel suo complesso tutto ciò sembra più che adeguato. Trasferimento delle Patch a parte, tutte le altre funzionalità si sono incastonate bene nel telaio predisposto per la loro realizzazione, essendo disponibile anche una buona documentazione a riguardo dell'intero protocollo di comunicazione tra il sequencer e la sintesi.Vediamo ora in Figura 5 i parametri di controllo della sintesi.

 

 

Figura 5

 

Questo dialogo permette di precisare tutti i parametri che determinano un patch e di lanciare le operazioni sui file di dati. In basso a destra troviamo i pulsanti "OK" e "Cancel" usati per chiudere il dialogo:

- il pulsante "Cancel" chiude il dialogo senza modificare il patch corrente. I valori dei parametri modificati nel dialogo vengono ignorati;

- il pulsante "OK" chiude il dialogo e modifica il patch corrente a partire dai valori dei parametri al momento della chiusura. Se il valore dato ad un parametro non è valido, il dialogo viene subito riaperto per permettere di correggere l'errore commesso.

 

Le opzioni "Load Wave", "Load Rule", "Load Ins", "Load All" sono raggruppate alla destra del dialogo principale di LASy, e servono a caricare un diverso tipo di file creato nell'ambiente sperimentale LASy Workbench.

Il campo "Numero della forma d'onda" (a destra dell'icona ) contiene il numero d'ordine (all'interno della tabella presente in memoria) della forma d'onda attiva. Questa forma d'onda viene caricata nella scheda DSP all'inizio di ogni nota per essere in seguito modificata secondo la/le regole di transizione attive.

 

I campi "Numero della regola di transizione" (immediatamente a destra

delle icone

) contengono i numeri d'ordine (all'interno della tabella presente in memoria) delle regole di transizione attive. Un massimo di quattro regole di transizione possono essere attive in contemporanea per modificare la forma d'onda e produrre il timbro desiderato. Il ruolo di ciascuna di queste regole dipende dal modo di funzionamento scelto (campo "Mode") come spiegato più avanti. La modifica di una regola di transizione non pertinente al modo corrente non ha nessun effetto.

 

I campi "Numero dell'algoritmo" usato danno la regola di transizione corrispondente" (a destra dei quattro campi precedenti).

 

Questi quattro campi (che corrispondono alle quattro regole di transizione attive) contengono il numero dell'algoritmo usato per calcolare il valore di un nuovo campione a partire dalla generazione precedente della forma d'onda e dei valori della tabella della regola di transizione. Nella corrente implementazione della sintesi LASy all'interno di SQAN (versione 1.0) l'unico valore pertinente è 1, che corrisponde al calcolo del nuovo campione, basato sulla somma dei valori del vecchio campione e dei suoi due vicini.

 

Al centro del dialogo troviamo i campi dedicati agli altri parametri della sintesi.

 

Il campo "Mode".

 

Il valore del parametro "Mode" determina il modo nel quale le regole di transizione attive contribuiscono all'evoluzione della forma d'onda. Nella versione attuale (1.0) il parametro "Mode" può prendere 4 valori :

- Mode 1: la regola di transizione n.1 entra in funzione all'inizio della nota. Quando il messaggio di fine nota corrispondente viene ricevuto, la regola di transizione n.2 prende il suo posto;

- Mode 2: La regola di transizione n.1 rimane attiva per un numero di generazioni uguale al valore del campo "Attack" (eventualmente modificato secondo il valore di velocity della nota), dopodiche viene sostituita dalla regola di transizione n.2. Quando il messaggio di fine nota corrispondente viene ricevuto, la regola di transizione n.3 prende il suo posto;

- Mode 3: Le regole di transizione n.1 e n.2 entrano in azione con un peso proporzionale ai valori dei campi "Prop 1" e "Prop 2". Quando il messaggio di fine note corrispondente viene ricevuto, la regola di transizione n.3 prende il loro posto;

- Mode 4: La regola di transizione n.1 rimane attiva per un numero di generazioni uguale al valore del campo "Attack" (eventualmente modificato secondo il valore di velocity della nota), dopodiche viene sostituita dalle regole di transizione n.2 e n.3 con un peso proporzionale ai valori dei campi "Prop 1" e "Prop 2". Quando il messaggio di fine note corrispondente viene ricevuto, la regola di transizione n.4 prende il loro posto.

 

Il campo "Attack".

 

Il valore del campo "Attack" ha significato nei modi di sintesi 2 e 4. Il suo ruolo è descritto nella discussione del campo "Mode".

 

I campi "Prop1" e "Prop2".

 

Il valore dei campi "Prop1" e "Prop2" hanno significato nei modi di sintesi 3 e 4. Il loro ruolo è descritto nella discussione del campo "Mode".

 

Il valore dei campi "Random extension" e "Random deepness" determina il modo in cui le note che corrispondono allo stesso patch vengono suonate. Se il valore di questi due parametri è zero, tutte le note eseguite con lo stesso valore di "velocity" seguono esattamente la stessa evoluzione armonica. Impostando valori non nulli, piccole variazioni vengono portate alla forma d'onda di partenza per evitare la ripetizione meccanica del suono generato. Il valore del parametro "Random extension" determina il numero complessivo di queste variazioni, mentre il valore del parametro "Random deepness" regola la loro ampiezza. Bisogna notare che gli stessi valori dei parametri "Random extension" e "Random deepness" hanno effetti diversi quando si cambia la regola di transizione corrente.

 

I campi "Velocity"

 

 

Non si tratta di campi numerici, ma di "check box" che possono essere attivate o meno per indicare in che modo il valore di Velocity del messaggio MIDI ricevuto agisce sulla sintesi del suono:

- check box "Volume": il valore di Velocity modifica il volume del suono emesso;

- check box "Attack": il valore di Velocity modifica il valore effettivo del parametro Attack nei modi di sintesi 2 e 4;

- check box "Prop": il valore di Velocity modifica il valore effettivo dei parametri "Prop1" e "Prop2" nei modo di sintesi 3 e 4;

- check box "Wave": il valore di Velocity modifica i valori della tabella di forma d'onda corrente.

 

 

 

Ringraziamenti

 

Ringraziamo Pier Luigi Bettitoni per lo sviluppo della funzionalità di mixing MIDI e della libreria di funzioni di import/export di Standard MIDI File 1.0. Inoltre, un grazie speciale allo staff del L.I.M. - Laboratorio di Informatica Musicale, per il supporto scientifico e tecnico costantemente fornito durante tutta la nostra ricerca.

 

Macintosh® è un marchio registrato di Apple Computer, Inc.

 

 

 

Riferimenti bibliografici

 

A. Borgonovo, G. Haus: "Sound Synthesis by Means of Two-Variable Functions: Experimental Criteria and Results", Computer Music Journal, Vol.10, N.3, MIT Press, Cambridge, USA, 1986, pp.57-71.

 

A. Camurri, G. Haus, A. Stiglitz, R. Zaccaria, LRC C4 MUSIC: architettura, specifiche funzionali di alto livello e standard di documentazione della STAZIONE DI LAVORO MUSICALE INTELLIGENTE, Tech. Report 7/09, Progetto Finalizzato "SISTEMI INFORMATICI E CALCOLO PARALLELO", Consiglio Nazionale delle Ricerche, novembre 1989.

 

J. Chareyron, "Digital Synthesis of Self-Modifying Waveforms by Means of Linear Automata", Computer Music Journal, Vol.14, N.4, 1990, pp.25-41.

 

R. Kronland-Martinet, "The Wavelet Transform for Analysis, Synthesis and Processing of Speech and Music Sounds", Computer Music Journal, Vol.12, N.4, 1988, pp.11-20.

 

G. Loy, "Musician makes a Standard: the MIDI Phenomenon", Computer Music Journal, Vol.9, N.4, 1985, pp.8-26.

 

Y. Mitsuhashi, "Audio Signal Synthesis by Function of Two Variables", JAES, Vol.30, No.10, 1982, pp.701,706.

 

P. Reinhard, "Distorsione non lineare della somma di cosinusoidi: analisi dello spettro tramite matrici", Atti del IV Colloquio di Informatica Musicale, Pisa, 1981, pp.160-183.

 

AA.VV. (A. Stiglitz editor), Specifiche funzionali di alto livello dei moduli della STAZIONE DI LAVORO MUSICALE INTELLIGENTE - Unità Operativa dell'Università degli Studi di Milano, Tech. Report 7/53, Progetto Finalizzato "SISTEMI INFORMATICI E CALCOLO PARALLELO", Consiglio Nazionale delle Ricerche, marzo 1991.