Giugno 2020


Sintesi Wavetable e Wave Sequences con Yamaha Montage e MODX

I synth Yamaha Montage e MODX, come noto, dispongono dei motori di sintesi FMX e AWM2 basati rispettivamente sulla modulazione di frequenza e la lettura ed elaborazione di campionamenti. Grazie alla varietà e alla complessità dei parametri di sintesi e di modulazione, è possibile programmare anche sonorità tipiche di altre tecniche di sintesi.

Tanto per citare due semplici esempi, basta pensare alla possibilità di utilizzare una performance con due elementi AWM2 leggermente detunati e con forme d’onda Ramp e SAW (P5 Saw UP e P5 Saw Down, tra le waveform presets) riuscendo così a simulare la PWM di una onda quadra. L’altro esempio “classico” è quello di una Performance con 4 parts FMX tutte con algoritmo 1: ottiene una sintesi additiva a 32 parziali, polifonia 32 voci con 32 inviluppi distinti a 4 stadi ciascuno per ogni parziale.

In questo articolo cercherò di descrivere come avere con il Montage (e MODX) sonorità analoghe a quelle che si ottengono con oscillatori che leggono Wavetable o Wave Sequences, utilizzando una o più parti AWM2.
Descriverò 4 possibili “percorsi” di sintesi che, naturalmente possono essere utilizzati anche in layer o split tra di loro e in parallelo con i classici suoni in sintesi AWM2 e FMX:

- Lettura “One Shot” di waves “Single Cicle” (da 2 a 16) in successione temporale definita dal parametro “Elements - Key on Delay”
- Lettura “One Shot” di waves “Single Cicle” (da 2 a 9) in successione temporale definita dal parametro “Elements - Key on Delay tempo Sync”
- Lettura ciclica di 4 Waves “Single Cicle” mediante l’utilizzo di una modulazione di ampiezza comandata da un LFO con forma d’onda “user”
- Lettura ciclica di 8 Wave “Single Cicle” mediante l’utilizzo di 2 Motion Sequence ciascuna dotata di 4 Lines.

Nei quattro metodi è ovviamente possibile utilizzare, al posto di onde single-cicle, campionamenti presets o user: in tal caso ci si allontana dalla classica sintesi wavetable che al contrario utilizza successioni tabellate di forme d’onda singe-cicle.

Nelle prime due tecniche se si utilizzano oltre che forme d’onda “single cicle” anche campionamenti percussivi, si riescono a creare i classici suoni alla “Korg Wavestation” in cui, per ogni nota vengono innescate sequenze di suoni armonici e inarmonici (Drums, percussions,..), questi ultimi con intonazione fissa.
Da non dimenticare poi che è sempre possibile utilizzare una o più parts che leggono una semplice onda single-cicle: si ottengono così le classiche sonorità che hanno distinto sintetizzatori storici quali l'Ensoniq ESQ-1, SQ-80 o Korg DW-8000. Nella libreria che potete scaricare al termine dell’articolo, trovate a titolo di esempio la performance "Bell Single Cycle" che utilizza delle semplici onde single-cicle in layer.

Prima di procedere alla descrizione delle 4 tecniche, una doverosa e ovvia premessa: molte delle funzionalità degli oscillatori Wavetables che sono fruibili in numerosi virtual (Serum, Tone2 Icarus, Halion, Rapid, Avenger,..) o Synth Hardware (Peak, Argon8, Hydrasynth, Quantum,.. ) non sono emulabili con il Montage. Per farlo occorrerebbe implementare un motore di sintesi nuovo che, solo Yamaha potrebbe realizzare, hardware permettendo. Vale ovviamente anche il contrario in quanto le tecniche descritte, insieme alle innumerevoli potenzialità di sintesi e modulazione del Montage, garantiscono sonorità ibride difficilmente ottenibili altrove.

Insieme alla guida potete scaricare una libreria con User Waveforms e Performance, alcune dotate di “user audition” create ad hoc, che sono un ottimo punto di partenza per sperimentare nuove sonorità e per impadronirsi delle tecniche che andrò a descrivere. Diventerà così relativamente facile realizzare i classici suoni “alla PPG” in cui spettri armonici molto diversi tra di loro evolvono nel tempo, creare delle Wave Sequence oggi ritornate “di moda” grazie al Korg Wavestate, o con un maggior sforzo, divertirsi a far “cantare/parlare” il Montage.

Per comodità di esposizione mi riferirò sempre al Montage: tutto quello che descrivo vale anche per il MODX che per la parte AWM2 ha le medesime caratteristiche di sintesi e stessa polifonia (128 note)

Seque un "video trailer" che contiene un "the best of " delle audition create: le 30 audition le potete ascoltare nel player.

 

 

Tecnica 1 - Lettura “One Shot” di waves “Single Cicle” (da 2 a 16) in successione temporale definita dal parametro “Elements - Key on Delay”

Questa tecnica cerca di emulare la classica lettura, da parte di un oscillatore, di una Wavetable che ricordo essere una successione di N. forme d’onda “Single Cicle” raggruppate all’interno di una tabella. Lo standard “universalmente” utilizzato è quello definito dal software Xfer Serum dove ciascuna onda Single-Cicle ha la dimensione di 2048 campioni e la tabella un numero variabile di onde con un massimo pari a 256.
L’estrazione di una o più onde da una tabella può essere facilmente effettuata all’interno degli editor di tali software, quali ad esempio Serum.
Con un sample rate pari a 44100, una onda single cicle di 2048 campioni ha l’intonazione pari a F0 - 19 cent; ogni trasposizione alla ottava superiore ne dimezza la dimensione. Per compensare l’intonazione in fase di lettura da parte del Montage, occorre settare per ciascuna Wave un Fine Tune pari a +19 Cents, parametro che è disponibile nella sezione "KeyBanks" delle User Waveforms.

Il nucleo di base delle varie tecniche che mi appresto a descrivere è un element AWM2 che legge una di queste onde “single cicle”: purtroppo Montage nella lettura di un campionamento, se da una parte non ha limiti nel trasporre in basso un campione, per la trasposizione nelle note superiori ha al contrario il limite di 24 note (due ottave).
Per poter utilizzare l’onda di 2048 campioni sulla intera estensione della tastiera, occorre necessariamente procedere al suo ricampionamento così da ottenere nuove onde (.Wav) e costruire una Waveform (multisample) composta da 3 Keybanks (F0-F2-F4) o da 4 Keybanks (F0-F2-F4-F5) di single-cicle wave. Ciascuna onda dovrà ovviamente avere un loop di dimensione pari alla intera lunghezza del campione e Fine Tune pari a +19 cents.

Nel caso di una Waveform composta da 3 keybanks (F0-F2-F4) la nota più acuta utilizzabile è E6 (la F6 è leggermente stonata poiché supera le 2 ottave di traspose); nel caso con 4 keybanks (F0-F2-F4-F5) la nota più acuta utilizzabile è E7.

Esistono numerosi modi per ottenere una Waveform (multisample) utilizzabile dal Montage, partendo da una Single-Cicle wave di 2048 campioni: a riguardo ho dedicato un capitolo a parte che descrive come fare mediante l'utilizzo di alcuni software freeware (Audacity, Endlesswav, Wavosaur e Samplerobot per Montage), opzionalmente con l’aiuto di programmi commerciali (Waveform Editor di John Melas e Awave Studio) che velocizzano le varie operazioni.
Qui trovate la guida. “Yamaha Montage - Creare Waveforms composte da Single-Cicle Waves” (click sulla immagine)

Riguardo la occupazione di spazio della User Flash, una Waveform a 16 bit con 3 KeyBanks occupa circa 5,1 KBytes (2048+512+128 samples)*2(16 bit). Parliamo di quantitativi praticamente nulli che permettono la memorizzazione e l’utilizzo di un gran numero di Waveforms intaccando solo in minima parte la capienza massima della Flash che è pari a 1,75 Gbyte. Ricordo che numero massimo di Waveform (multisample) utilizzabili dal Montage è pari a 2048; i campioni che li compongono possono essere al massimo 8192.

Ipotizziamo di avere creato, come descritto nella guida, una nostra libreria di Waveforms ciascuna composta da una Wave Single-Cicle multicampionata.
Vediamo come simulare la lettura di una Wavetable composta da 8 diverse Single-Cicle Waves, con il passaggio tra una Wave e la successiva tramite un crossfade.
Nel caso in cui si utilizza il software Serum, ciò si ottiene creando una Wavetable con 8 Waves, calcolando le 256 forme d’onda che verranno lette in successione tramite “Morph Crossfade” e modulando l’indice (WaveTable position) tramite un inviluppo a rampa.

Con il Montage si può emulare la cosa creando una Performance con una Part composta da 8 Elements AWM2, ciascuno dei quali legge una Waveform diversa.
Ogni Part deve essere ritardata del tempo necessario per far sì che, due elementi successivi si mixino in maniera graduale; lo si fa utilizzando per ogni element un inviluppo di ampiezza caratterizzato da Attack e Decay tra di loro il più possibile simmetrici.
Il ritardo di ciascun elemento lo si ottiene grazie al parametro: Element Key On Delay Lenght.

Nello schema che segue (caso semplificato con solo 2 elements) se ipotizziamo un inviluppo come quello nella immagine, il crossfade migliore lo si ottiene con Key On Delay Lenght=29.

Se si utilizzano gli 8 Elements di una Part è possibile simulare la lettura di una tabella di 8 Waves Single-Cicle. Segue uno schema di quanto è stato fatto in alcune performance, per far “cantare/recitare” al Montage la parola FMX ( EF_EM_ICS)

Segue uno schema riepilogativo.

Come visto, per ottenere dei buoni risultati, occorre settare, per ciascun Element, il valore corretto del parametro “Element Key On Delay Lenght” che determinerà il “timing” con cui si susseguono le varie single cicle Waves.
E’ inoltre importante sagomare bene gli inviluppi di ogni Element, che andranno modellati con un profilo di tipo “Attack – Hold – Decay”.
Vediamo in dettaglio.
Per quanto riguarda il parametro Element Key On Delay Lenght, il suo range è pari a 0-127 a cui corrispondono dei ritardi che, in corrispondenza di 127, arrivano a circa 8,1 secondi. Segue una tabella che ho ottenuto testando i vari valori

Ipotizziamo il caso in cui vogliamo una disposizione e un crossfade tra le varie Waves costante nel tempo, in analogia alla modulazione della WaveTable position di Serum tramite un inviluppo a rampa.
Nell’implementazione all’interno del Montage, la posizione nel tempo e la durata del suono di ogni singola wave dipende dal valore dell’Element Key On Delay Lenght e dall’inviluppo. Vediamo come settare i valori.

Riguardo il parametro Key On Delay Lenght, a causa della risoluzione ridotta (0-127), non è semplicissimo trovare una combinazione di valori tra di loro multipli, che diano una disposizione tra le varie Waves costante nel tempo.
Come vedremo dopo, è possibile compensare le imprecisioni con delle leggere modifiche dei parametri di inviluppo.
Segue una tabella in cui ho inserito la combinazione dei valori da settare per i vari Elements, nel caso di ritardi progressivi di circa 333 ms, 500 ms e 1 sec. Con l’utilizzo di 8 elementi, la durata complessiva della sequenza è rispettivamente di circa 2,5 sec, 4 Sec e 8 Sec.

Passiamo adesso al settaggio degli inviluppi che cerchiamo di sagomare così da creare un crossfade graduale tra le 8 single-cicle Waves.
Le sagomature degli inviluppi per creare dei crossfade corretti, andranno variate in base ai ritardi scelti e quindi a seconda della durata complessiva della successione delle waves.
Se si vuole emulare la lettura uniforme (modulazione della WaveTable position di Serum tramite un inviluppo a rampa), gli inviluppi di ciascun element devono tra di loro uguali, cosa che tra l’altro semplifica notevolmente il lavoro di assemblaggio.
In base ad alcuni test effettuati, il modo più semplice è quello di fissare i livelli come in figura (0-127,115,0) e lavorare su:
Time Attack: tempo di crossfade d’ingresso dell’onda
Time Decay 1: tempo di permeanza dell’onda prima del mix con l’onda successiva
Time Decay 2: tempo di crossfade d’uscita dell’onda
Ho scelto il valore di Level Decay 1 = 115, così da permettere durate anche notevoli di sustain al variare del Time Decay 1. Se Level Decay 1 ha valori maggiori (123, 124..,126) diventa infatti impossibile mantenere il suono per tempi elevati.

La combinazione corretta di ritardi (Key On Delay) e inviluppi tra di loro uguali e sagomanti come in figura, produce il crossfade degli elements con il suono che tende a mantiene il volume costante nel tempo: segue uno schema nel caso di 3 Elements.

Ipotizzando i livelli degli inviluppi con i valori consigliati (0, 127,115 e 0) si ottengono per i tempi di attacco e decay valori come in tabella.
I range di ciascun paramentro (Time Attack, Decay1 e Decay2) è 0-127

Se si osserva l’inviluppo reale del Montage (vedi figura), è evidente come Attack e Decay1 hanno un andamento lineare mentre Decay2 ha un andamento esponenziale (nelle misure in tabella di Decay2 ho ignorato l’ultimissima parte dell’inviluppo che ha volume prossimo allo zero e quindi ininfluente nel crossfade).
Pertanto dovendo effettuare un crossfade tra la sagoma di volume del Decay2, e quella dell’ Attack dell’element successivo, occorre tenerne conto utilizzando tempi di Decay2 più lunghi rispetto all’Attack.

Segue qualche breve osservazione e spunti per la creazione di nuovi suoni e performance.

- Se nella catena degli elements (max 8 in una performance) si desidera un suono con un attacco deciso, lo si fa con valori di Time Attack prossimi a zero nell’AMP ENV del primo element.

- Se dopo la lettura dei vari elementi in successione, si desidera un livello di sustain tale da mantenere il suono senza farlo decadere a zero, occorre settare Level Decay2 dell’ultimo element con un valore diverso da zero (127 per mantenere il volume al massimo)

- Per compensare la scarsa definizione del paramentro Element Key On Delay Lenght e quindi la conseguente difficoltà nel settare intervalli precisi, è possibile intervenire sui valori Attack e Decay1. Se la wave interviene in leggero anticipo, la compensazione la si fa aumentando il tempo di Attack; al contrario se la wave interviene in leggero ritardo è possibile compensare diminuendo il tempo di Attack e/o il tempo del Decay1 così da ridurre la durata della permanenza della wave.

- Un modo comodo per operare sui tempi degli Attack, Decay1 e Decay2 di tutti gli elementi della catena è quello di associarli ai Knobs. Trovate un esempio nelle performance "Wavetable Knob 1 2" , "TempoWave Knob 1 2" e "TempoWave2 Knob 1 2" dove il Knob1 modifica i tempi di Attack di ogni element, e Knob2 modula il tempo di Decay2.

- Volendo superare il limite di 8 Waves Single-Cicle è possibile utilizzare, all’interno di una performance, 2 o più parts, ciascuna composta da una sequenza di max 8 Waves. Con 2 parts si arriva a disporre 16 Waves complessive.

- La possibilità di utilizzare due o più parts, ciascuna con una wavetable diversa, permette di ottenere diverse tipologie di suoni. Un esempio tra tanti lo trovate nella performance "SynthesizerChoir" in cui viene pronunciata la frase “Synthesizer” che è composta da 11 waves in successione: le prime 8 con gli elements nella Part1, e le altre con 3 elements della Part2 che si agganciano al termine della esecuzione della prima (Key On Delay 41,44 e 47). Per ottenere un effetto stereofonico, ad ogni vocale e consonante è stata assegnato un valore diverso e alternato di PAN.

Altro esempio è la performance "1000 & 500 ms" in cui sono state utilizzate 2 catene di waves che si susseguono nella part 1 con ritardi di 500 ms (0, 20, 32, 42, 50, 59, 66,73) e nella part 2 con ritardi di 1 secondo (0, 32, 50, 66, 80, 92, 104, 115).

- Avendo a disposizione un certo numero di Wave Single-Cicle (nel file di esempio ce ne sono 75), creata la "catena" di delay e inviluppi, diventa facile costruire nuove Wavetables, semplicemente andando a scegliere una combinazione di tali wave e variando ad esempio i valori di pan, volume e detune di ciascun element.

- E’ sempre possibile avere dei tempi di Attack e Decay diversi per ogni element: ad esempio nella simulazione del “parlato”, si possono applicare settaggi di Attack e Decay1, 2 molto piccoli nel modellare le consonanti che diventano così più impulsive e realistiche. Nella performance SynthesizerChoir ho ad esempio usato nella consonante “t” dei tempi di Attack e Decay1 molto brevi.

- Ciascun element ha ovviamente tutta la catena di sintesi disponibile: Filtro, Pitch Env, Modulazioni,.. etc, etc.
Se da una parte non è possibile applicare un unico filtro all’intera Wavetable simulata (cosa ovviamente fattibile in tutti i synth con oscillatori Wavetables), al contrario il disporre di un filtro diverso utilizzabile per ogni Single-Cicle Wave, garantisce numerosissime altre possibilità.

- Gran parte dei virtual con oscillatori wavetable dispongono del paramentro “detune” con il quale vengono sommate due o più copie delle Waves con intonazione leggermente diversa ed eventualmente in stereofonia. Grazie al detune si ottengono molte delle tipiche sonorità dei virtual con tali oscillatori.
Il modo per simulare la cosa con il Montage, evitando di raddoppiare e “detunare” inutilmente più parti, è quella di utilizzare l’effetto insert “Pitch Change” che aggiunge due copie “detunate” del suono alla parte a cui viene applicato: per ciascuna è possibile indicare la quantità di detune in cents, eventuale ritardo, il volume e il PAN. Grazie alla presenza di 2 effetti insert per parte, è possibile duplicare l’effetto, disponendo così di 4 copie detunate e in sterefonia.

- Anche se la cosa è ovvia, non ci si deve dimenticare del fatto che è possibile utilizzare all’interno dei vari elements che emulano la wavetable, una qualunque Waveform del Montage, così da ottenere sonorità ibride.

- Nulla vieta di utilizzare uno o più inviluppi con sustain diverso da zero (Decay2 level): in tal caso è possibile ad esempio mantenere attive, con volume diverso da zero e per l’intero suono, una o più Wave. Un esempio lo trovate nella performance "Synthesizer Detune" dove le ultime vocali, avendo anche un fine tune diverso da zero, si sommano e tra di loro creano un sustain con dei battimenti.

- Riguardo la polifonia, ciascun element utilizza una delle 128 note di polifonia della sintesi AWM2: con una part composta da 8 elements, si ha una polifonia minima di 16 note. In realtà grazie alla allocazione dinamica delle voci e al fatto che gli inviluppi, per quanto visto, tendono ad avere un decay2 level pari a zero, la polifonia reale risulta essere maggiore. Naturalmente le 128 voci della FMX non sono intaccate.

- Per velocizzare la programmazione delle voci è molto cmodo l'utilizzo  del software Montage Performance di John Melas www.jmelas.gr/montage che tra le varie cose, rende possibile il copia e incolla degli inviluppi, operazione molto comoda per la programmazione dei vari elements.

Come detto nella introduzione, ci sono dei limiti nell’utilizzo delle tecniche viste; vediamo quali sono i principali e quali Yamaha potrebbe eventualmente limitare o eliminare in una prossima una revisione del firmware.

A riguardo voglio ricordare la maniera con cui Yamaha ha affrontato l’inserimento di nuovi parametri di sintesi nello sviluppo del firmware. Un esempio lo si ha nel firmware 3.0 in cui è stato inserito il parametro “extended” LFO: per mantenere la compatibilità con le performance dei firmware precedenti è stata aggiunta l’opzione “Enable extended LFO On/OFF”: in questa maniera è possibile utilizzare il “vecchio” range 0-63 per garantire la retrocompatibilità o il nuovo range che è di 0-415. Ciò dimostra come è sempre possibile conciliare la possibilità di inserire nuovi parametri di sintesi e nello stesso tempo di mantenere la compatibilità con i suoni creati prima di allora.

Con le tecniche viste gli elements vengono mixati con un crossfade sagomato tramite il Decay2 e l’Attack dell’element successivo: il primo problema, come visto, nasce dal fatto che la parte Attack dell’inviluppo ha un profilo lineare nel tempo, mentre il Decay2 esponenziale. Tale differenza rende impossibile ottenere crossfade precisi. La soluzione in questo caso sarebbe semplice: l’inserimento da parte di Yamaha dell’opzione “Linear Decay”

La seconda modifica, per rendere più semplice e preciso il settaggio dei ritardi di ogni Wave, potrebbe essere l’ampliamento del range del paramentro Key On Delay Lenght: Yamaha potrebbe procedere, come si è fatto con l’Extended LFO, abilitando opzionalmente un range più esteso, pari ad esempio a 0-511 rispetto al range attuale (0-127)
C’è invece un problema che non credo possa essere facilmente risolvibile, a meno di modifiche importanti da parte di Yamaha nella struttura di sintesi del Montage stesso (opzione che, fino a prova contraria, non possiamo escludere a priori).

Il problema deriva dal fatto che, quando mixiamo due onde single-cicle in maniera graduale tramite un crossfade, se non riusciamo a forzare il sincronismo di fase, otteniamo nel range del mix un inviluppo di volume che ad ogni mix (quindi per ogni nota suonata) ha un andamento diverso a seconda della differenza di fase che casualmente si ha in quel momento. Dal punto di vista sonoro questo comporta la percezione di una transizione poco graduale tra le due Waves che in certi casi può apparire parecchio evidente.
Segue uno schema che riassume il fenomeno tutt’altro che raro nell’ambito della sintesi del suono: considero i due casi estremi, ovvero la somma di due onde uguali, nel caso in cui siano in fase o controfase. Gli inviluppi sono simili a quelli visti.  

Segue il grafico ottenuto in un caso reale prodotto dal Montage (si riconoscono i profili di attacco e decay rispettivamente lineare ed esponenziale) da cui è evidente l’effetto della casualità delle fasi.

L’ultimo problema che penso sia irrisolvibile, nasce dal fatto che il Montage nella generazione dei suoni ha uno jitter interno dovuto alla architettura hardware che come tutti i synth digitali, nella gestione delle vari parti, elements, effetti,… ha un sincronismo gestito con l’ausilio di uno o più Buffer di memoria RAM.
Dando una occhiata all’hardware, il Montage distribuisce la generazione di suoni AWM2 e FMX ai due chip proprietari SWP70, il primo dei quali viene utilizzato esclusivamente per la sintesi AWM2 avendo l’accesso alla Flash che contiene i campioni presets e user: un terzo chip proprietario (il DSP SSP2) gestisce I/O dell’audio digitale USB.
QUI un interessante approfondimento.

La complessità dell’architettura hardware che comprende varie Flash, RAM, Chip, e Bus e la modularità della sintesi (un massimo di 16 parti, 8x16 elementi, 34 effetti, 2 tecniche di sintesi,…) ha, come dicevo, una conseguenza sul timing delle varie operazioni, che si effettuano con delle fluttuazioni casuali. A prova di ciò, se misuriamo ad esempio la latenza intesa come tempo intercorso tra l’arrivo del messaggio MIDI NOTE ON e la produzione del suono, in base ad alcuni miei test, troviamo valori che variano tra 3 e 9,5 ms con una media attorno ai 6ms e un jitter attorno ai 4 ms.

Nei timing di ogni operazione che abbiamo analizzato (delay, lunghezza dei vari segmenti degli inviluppi,…) Montage si comporta con delle approssimazioni che causano in maniera casuale delle fluttuazioni temporali.
Il classico esempio è la durata di un inviluppo che, per i valori che ho tabellato, ha delle fluttuazioni in certi casi parecchio significative: ad esempio in presenza di inviluppi con tempi lunghi si arrivano a variazioni casuali anche nell’ordine di 100-200 ms. Tali fluttuazioni, pur esistenti, non inficiano nell’uso quotidiano perché sapientemente tarate, ma per suoni in cui occorre il sincronismo tra le parti, possono diventare fastidiose.

Per quanto di nostro interesse, la fluttuazione più evidente la si ritrova nella durata del ritardo imposto dal Key On Delay Lenght per il quale si osservano valori percentualmente non elevati, mediamente attorno ai 20-30 ms. Per successioni di onde lette con maggiore velocità, sono variazioni di timing in tutti i casi evidenti, anche se non particolarmente fastidiose: per dei lenti crossfade tali approssimazioni, al contrario, sono del tutto trascurabili.
 

Tecnica 2 - Lettura “One Shot” di waves “Single Cicle” (da 2 a 9) in successione temporale definita dal parametro “Elements - Key on Delay tempo Sync”

La tecnica utilizzata è analoga a quella vista prima: la differenza deriva dal fatto che il ritardo con cui ogni element emette la sua Single-Cicle Wave non è affidato al parametro Element Key On Delay Lenght ma al parametro Element Key On Delay Tempo Sync Lenght: quest’ultimo ha un set di 17 valori che fanno riferimento al parametro Tempo.

Per il nostro scopo si utilizza una particolare combinazione di valori che definiscono dei ritardi multipli (1X, 2X, 3X,…8X, fino a 9X) rispetto ad un valore fisso che è determinato dal parametro Tempo; quest’ultimo può essere settato e memorizzato in ciascuna performance e ha un range variabile tra 5 e 300.
Rispetto alla prima tecnica vista si ha il vantaggio di poter cambiare la velocità di lettura, semplicemente variando la velocità del Tempo.

L' "effetto collaterale" è che il suono cambia se il sincronismo del Montage non è più settato su "internal" ma sincronizzato con l'esterno (Midi o USB)

Il risultato di questa seconda tecnica è analogo alla lettura di una Wavetable di massimo 9 Single-Cicle Waves, con velocità costante di lettura della tabella.

Ovviamente se si desiderano dei crossfade corretti, occorre adattare i tempi dei vari inviluppi alla velocità di lettura scelta che, una volta definita, rimane fissa.

Un grosso vantaggio nasce dal fatto che qui non esiste il limite dell’altra tecnica in cui diventava complicato definire liberamente le velocità di lettura della successione di Waves: come visto occorreva cercare i valori tra 1 e 127, che meglio potessero approssimare ritardi costanti tra waveforms.
Lo svantaggio di questa seconda tecnica deriva dal fatto che non è possibile variare arbitrariamente i ritardi di ciascun element, ma si è costretti ad utilizzare uno dei 17 valori preimpostati.
Segue uno schema con i valori da inserire per simulare una velocità di lettura costante delle waves.

Con questa tecnica, si può arrivare ad utilizzare 9 Waves distanziate di un tempo costante e quindi lette in successione a velocità costante: per farlo, occorre affiancare allo schema di sopra, una ulteriore part (es. part2), con un solo element avente Key On Delay Tempo Sync Lenght = ¼ x 8 che partirà dopo l’element 8 della part1, con lo stesso intervallo di tempo che intercorre tra i precedenti.
Può anche essere comodo inserire in una part gli 8 elements con ritardo, e nell’altra quello con ritardo zero.

Ovviamente nulla vieta di mischiare elementi con ritardi definiti dal parametro Key On Delay Tempo Sync Lenght e altri tramite Key On Delay Lenght: l’unico limite sta nel fatto che una eventuale modifica del tempo farebbe perdere il sincronismo tra le Waves.

Tra le performance di esempio voglio segnalare quelle denominate “TempoWave Knob 1 2” e “TempoWave2 Knob 1 2” in cui sono in sequenza 9 Waves single cicle ed è possibile variare in tempo reale i tempi di Attacco e Decay2 di tutte le waves tramite Knob1 e Knob2. Il tempo memorizzato è il massimo possibile (300): diminuendolo si rallenta la scansione di lettura.

Altra performance da analizzare è EFF_EM_ICS_2 Mode in cui la frase FMX è eseguita contemporaneamente con le due tecniche Key On Delay Tempo Sync Lenght (Tempo = 219) e Key On Delay Lenght: le due tecniche sono implementate in due parti ciascuna di 8 elementi con Pan rispettivamente a sinistra e a destra. Le parti, a meno di piccole differenze di timing, suonano uguali: i leggeri asincronismi creano un piacevole senso di spazialità

Avendo a disposizione un tempo di clock e delle waves che vengono “innescate” in sequenza da tale clock, è possibile emulare le classiche WaveSequences del Korg WaveStation e del recente Korg Wavestate, con il limite dei 9 step.

Rispetto a quanto visto non c’è nulla da aggiungere: occorre semplicemente pensare che ciascun element, oltre a contenere le waves single-cicle che si mischiano tramite crossfade simulato con il profilo degli inviluppi, può contenere un suono percussivo inarmonico (drums, percussions,..) o armonico (archi pizzicati, marimbe, vibrafoni,..)
L’unica attenzione da fare nel caso di suono percussivo, è settare un inviluppo senza attacco e con decay lungo tanto da eseguire per intero il suono; in caso di percussione inarmonica, se si desidera una intonazione costante su tutta la tastiera, occorrerà settare per il pitch il parametro Pitch Key Follow Sensitivity=0.

Le possibilità offerte da tale tecnica sono multiple ed è possibile disporre fino a massimo 8 “simil” WaveSequences di 8 step, ciascuna su di una parte: tramite le scene è possibile attivare in parallelo una o più sequenze.
Ovviamente nulla vieta di inserire anche più note nello stesso slot temporale, utilizzando 2 o più element con lo stesso valore di Key On Delay Tempo Sync Lenght.

L’evidente limite di tale tecnica è l’impossibilità di mettere in loop la sequenza che dovrà essere reinnescata all’occorrenza.
A riguardo è possibile ovviare al limite creando delle sequenze ad 8 step e attivando un arpeggio composto da una sola nota con durata pari a 2 battute: la sequenza viene innescata ogni volta che termina, creando un loop che può durare fino a quanto si desidera.

Lo svantaggio dell’utilizzo dell’arpeggio per mantenere la sequenza in loop, sta nel fatto che quando e se si articola la nota, spesso non si riesce ad innescare correttamente la sequenza che ricorda per un ulteriore ciclo la vecchia nota suonata. Per questo motivo a meno di note fisse e quindi loop statici, non conviene utilizzare l’arpeggio, ma ricorrere al reinnesto della sequenza semplicemente risuonando la nota.

Trovate a titolo di esempio le performance "Wavestation PizzChoir","WavestE Trumpet" e "WavestatE Horr" che utilizzano più wavesequence in parallelo attivabili tramite le scene 1,2 e 3: volendo è possibile anche attivare l’arpeggio per il loop….con il limite visto.

Riguardo i possibili sviluppi del firmware da parte di Yamaha, sarebbe auspicabile la possibilità di poter attivare il loop nell’inviluppo quando è attivo il parametro Key On Delay Tempo Sync: in questa maniera diventa possibile avere delle WaveSequences che ciclano in loop. Ovviamente sarebbe utile poter settare anche ulteriori ritardi (¼ x 9, ¼ x 10, …, ¼ x 15) così da poter creare sequenze fino a 16 step.

Ultima osservazione: per quanto visto poiché la velocità di lettura è strettamente legata al tempo, è importante far sì che il Montage utilizzi il valore di tempo memorizzato nella performance e non si sincronizzi al clock esterno. Per farlo occorre verificare il settaggio: Utility - MIDI I/O – MIDI Sync=Internal


Tecnica 3 - Lettura ciclica di 4 Waves “Single Cicle” mediante l’utilizzo di una modulazione di ampiezza comandata da un LFO con forma d’onda “user”

Diversamente dalle prime due tecniche, l’idea è di simulare quello che con gli oscillatori wavetables si ottiene modulando la “wavetable position” con un LFO.

In questo caso si utilizza l’LFO presente in una part per modulare l’ampiezza di 4 elements mediante una “user LFO wave” modellata in maniera tale da ottenere un crossfade il più possibile “morbido”.

Per far sì che le 4 forme d’onda siano mixate tramite crossfade e siano in loop con la successione del tipo Wave1->Wave2->Wave3->Wave4->Wave1->…etc, etc si utilizza il parametro “Element Phase Offset” settato a 0-270-180 e 90 gradi.

Segue uno schema  

Riguardo la “User LFO wave” da utilizzare per la modulazione di ampiezza, occorre sagomare una forma d’onda divisa in 16 parti (Cycle=16 Steps) e Slope=Up&Down con i valori indicati nelle 2 figure che seguono. Scegliendo la prima, si ottiene un profilo di transizione tra le onde più deciso: con la seconda un mix più morbido.

Segue uno schema da cui si visualizza come la combinazione “User LFO wave” e “Element Phase Offset” riesce a creare il crossfade progressivo delle Single-Cicle Waves dei 4 elements.

Per il controllo in tempo reale dei parametri di modulazione, è possibile modificare la velocità dell’LFO (LFO speed) e l’ampiezza complessiva della modulazione di ampiezza. Con ampiezza a zero i suoni dei 4 elements suoneranno tutti e 4 contemporaneamente, sovrapposti.

Se si vuole simulare la classica catena di sintesi
OSC_Wavetable (con index modulato da LFO)->filtro->Amplificatore
per come è strutturata la parte (4 elements mixati tramite LFO), occorre far sì che i parametri relativi al filtro (tipologia, Cutoff, Resonance, Env.) e gli inviluppi dell’amplificatore, siano identici per ogni element.
 

Una performance che utilizza la tecnica vista è "WaveTable LFO LP". Essa è composta da 3 parti di 4 elements mixati dall’LFO; a ciascuno dei 12 elements è applicato un filtro risonante ad attacco crescente. Il SuperKnob comanda la velocità dell’LFO, mentre il Knob8 la ampiezza della modulazione e quindi del mix degli elements: con Knob8=0 si ha un semplice layer a 4 voci, mentre con Knob8=max si ottiene il crossfade che emula la lettura della wavetable.
Nella Performance esiste un quarto layer che è un pad il cui volume è comandato dal Knob7.

Tecnica 4 - Lettura ciclica di 8 Wave “Single Cicle” mediante l’utilizzo di 2 Motion Sequence ciascuna dotata di 4 Lines.

La tecnica è analoga a quella appena vista, ovvero quella di simulare ciò che con un vero oscillatore wavetables si ottiene modulando la “wavetable position” con un LFO: con questa nuova tecnica si supera il precedente limite delle 4 Wave “Single Cicle”, arrivando a mixarne 8 in successione temporale.

Per far ciò il mix delle Waves non è più affidato all'LFO, come nella tecnica precedente, ma ad un motion sequence che modula in ampiezza delle parts.

In dettaglio si utilizzano 2 parts: la part1 è composta dalle prime 4 Waves da mixare (1,2,3 e 4); la part2 dalle successive Waves (5,6,7,8). Il mix in successione temporale viene fatto da 2 motion sequences (una per parte), ciascuna composta da 4 lines che modulano l’ampiezza degli elements.
Tutte le lines delle motion sequences sono composte da 8 steps, con un profilo costruito ad hoc (vedi schema) e sono in loop.

Nella part 1 si ha una motion sequence composta da:

- Line 1 che modula il Level (volume) dell’element 1 che suona la Waveform Wave1
- Line 2 che modula il Level (volume) dell’element 2 che suona la Waveform Wave2
- Line 3 che modula il Level (volume) dell’element 3 che suona la Waveform Wave3
- Line 4 che modula il Level (volume) dell’element 4 che suona la Waveform Wave4

Nella part 2 si ha una motion sequence composta da:

- Line 1 che modula il Level (volume) dell’element 1 che suona la Waveform Wave5
- Line 2 che modula il Level (volume) dell’element 2 che suona la Waveform Wave6
- Line 3 che modula il Level (volume) dell’element 3 che suona la Waveform Wave7
- Line 4 che modula il Level (volume) dell’element 4 che suona la Waveform Wave8

Riguardo il profilo nelle 8 lines che modulano l’ampiezza, è stata utilizzata la curva “Threshold” in versione Forward/Reverse così da simulare il crossfade tra waves in successione.

Il crossfade che si ottiene è, con tutte le differenze già descritte, l’analogo di quanto Korg realizza con le WaveSequences quando c’è un loop nella lettura della sequenza e si utilizzano forme d’onda dotate di sustain. Con la tecnica utilizzata dal Montage rimane il limite massimo delle 8 waves.

Riguardo il sincronismo (parametro Sync del Motion Seq) è possibile scegliere se agganciare la velocità al tempo o se procedere con una velocità fissa. La sequenza, e quindi il mix tra le waves, può essere innescato ad ogni nota eseguita (Key On Reset= Each-On) o solo per la prima volta (Key On Reset= 1st-On).

Tra le performance di esempio il suono MotionSeq 8 Waves utilizza 8 waves in sequenza con in layer un pad il cui volume è comandato dal Super Knob. La performance MotionSeq 4 Waves è composta invece da 2 sequenze di lunghezza pari a 4 Waves ma con onde diverse: si ottiene un effetto stereofonico grazie al Pan delle due Parts (L63- R63) e ad un leggero detune di +- 2 Hz
 

L’analogia con l’implementazione Korg, vale anche nella tecnica 3 dove il “mix” ciclico viene effettuato dall’LFO.

Seguono due gli schemi che descrivono la tecnica utilizzata.
 

Per concludere, è bene ricordare che le quattro tecniche viste si adattano senza problemi all’utilizzo di waveforms che non siano semplici forme d’onda a ciclo singolo: usando multicampioni più complessi, ci si può allontanare dalle sonorità tipiche delle wavetables e spingersi su mix sonori ancora più ricchi e originali, tutti da esplorare.

Ci sarebbe da scrivere un capitolo a parte su analoghi utilizzi che sfruttano la FMX al posto della sintesi AWM2. A riguardo voglio solo ricordare come nella FMX non è possibile ritardare l’emissione dei suoni con i paramentri “Key on Delay” o “Key on Delay tempo Sync”; è invece possibile farlo sfruttando il primo dei quattro segmenti dell’inviluppo associato a ciascun operatore.
Nel caso in cui Hold_Level=Release_Level= 0, il parametro Hold Time (range 0-99) diventa a tutti gli effetti il tempo di ritardo con cui viene emesso il suono dell’operatore.
 

Trovate un esempio nella performance"Wavetable&Additive" che è un suono PAD strutturato in 6 parts: nelle prime 3, in AWM2, sono utilizzate delle “wavetables” a 8 waves con delle lente evoluzioni timbriche; nelle altre 3, tutte in FMX e con algoritmo= 0 (sintesi additiva), il suono si evolve nel tempo e nello spazio stereo grazie ai 28 operatori che suonano con delay progressivo (parametro Hold Time degli inviluppi).

Prima di concludere una breve analisi delle tecniche utilizzate per ottenere le Waveforms che compongono le due parole “FMX e Synthesizer”.
Nella libreria di esempio ci sono numerose performance che le utilizzano: FMX Synthetiser (entrambe in split), SynthetiserChoir (in layer con un coro), EFF_EM_ICS e Synthetiser Detune in cui i vari fonemi sono leggermente scordati per creare dei battimenti.

Per la parola FMX ho campionato la mia voce che recitava la parola “EFF EM ICS” e utilizzato il software Tone2 Icarus per creare la Wavetable da cui estrapolare 8 Single-Cicle Waves.

Riguardo la parola "Synthesizer" sono partito dalla Wavetable presente nel software freeware Audioterm e ho estrapolato 11 Single-Cicle Waves tramite Xfer Serum; nel Montage ho suddiviso le prime 8 Waveforms in una parte e le successive 3 in una altra.

Synthesizer e Xfer Serum.

Il file SYNTHESI.WAV è uno dei file di esempio che viene distribuito insieme ad AudioTerm: la wavetable è compatibile con Serum ed è composta da 20 onde Single-Cicle.

Dopo averla caricata all’interno di Serum, ho eliminato le tabelle di Morph così da avere accesso alle 20 onde Single Cicle.

Per la selezione delle 11 onde più significative è bastato eliminare quelle tra di loro più simili cercando di isolare le vocali e le consonanti della parola. Tramite normalizzazione ho amplificato le onde al massimo livello così da potere gestire i relativi volumi nel Montage.

Per l’utilizzo all’interno del Montage conviene utilizzare il metodo N.1, quello in cui la successione temporale è definita dal parametro “Elements - Key on Delay”. In questa maniera partendo da una successione dei fonemi equidistante nel tempo, è possibile effettuare dei piccoli ritocchi per anticipare o posticipare l’inserimento di ciascun suono. Per le consonanti in certi casi sono stati utilizzati tempi di attacco e decay più brevi per dare maggiore incisività.
Le 11 Waveforms ottenute sono poi state distribuite in una parte composta da 8 elements (S-I-N-T-TE-S-A-I) e una ulteriore parte da 3 (S-E-R).

FMX e Tone2 Icarus

In questo caso la procedura è stata diversa in quanto per “omaggiare” il Montage ho voluto sintetizzare la parola FMX: per farlo ho campionato la mia voce recitando la parola “EFF EM ICS” (durata di 1.4 secondi circa).

Per la conversione in una wavetables ho utilizzato l’ottimo virtual Tone2 Icarus che ha numerose tecniche di analisi e creazione di Wavetables, ciascuna ottimizzata per tipologie di input diversi. Tra queste ho scelto quella più adatta alla conversione parola -> wavetable che si è mostrata essere “Resynthesis additive with static pitch”. Il software nella conversione ha creato una Wavetable di 129 onde Single-Cycle
 

Anche in questo caso, dalla wavetable ottenuta, ho estrapolato e normalizzato le onde più significative, in tutto 8.

Per l’import all’interno del Montage ho sempre utilizzato il metodo N.1 (parametro “Elements - Key on Delay”): riguardo la successione temporale gli ultimi tre fonemi sono letti più velocemente rispetto ai primi cercando una “pronuncia” più simile alla parola. Le Wave 6 e 7 sono tra di loro quasi sovrapposte.

Potete scaricare il file libreria per Montage che comprende alcune Waveforms (73 in totale) e più di 30 Performance con "audition" di esempio cliccando qui.


Se vuoi supportare il mio sito puoi effettuare una donazione Paypal al link