ARP ODYSSEY – Lavoriamo con Reaktor – Prima parte
In questa nuova miniserie di articoli riprenderemo in mano il tema “reverse engineering” e proveremo ad effettuare un porting della struttura modulare programmata da Enrico Cosimi in ambiente Clavia a modellare lo storico Arp Odyssey, in un altro linguaggio di programmazione visuale, il celeberrimo Reaktor di Native Instruments.
di Antonio Antetomaso
Per chi non lo conoscesse, trattasi di un virtual instrument che costituisce più che altro un framework di programmazione con cui realizzare strumenti elettronici virtuali o processori multi effetto: al “programmatore” viene offerto un insieme di moduli più o meno complessi da assemblare mediante patch cord virtuali a realizzare, appunto, uno strumento elettronico od un processore o quanto solo la nostra fantasia può suggerirci.
Chiamarlo linguaggio di programmazione può risultare fuorviante, non ci sono righe di codice da battere, solo moduli da assemblare e non c’è nessuna fase di compilazione: il risultato del nostro lavoro o, nel gergo, il nostro ensemble è immediatamente fruibile.
A chi non avesse letto la serie CASE STUDY: Arp Odyssey divisa in tre articoli, suggerirei di partire da quella prima di affrontare questo nuovo viaggio insieme, in modo da avere una panoramica completa della questione: molti concetti rimandano appunto agli articoli dedicati alla programmazione in ambiente Clavia curati da Enrico.1
Tornando a noi, per esigenze di tempo non posso dilungarmi ulteriormente su Reaktor; se volete documentarvi esistono diverse guide in rete e c’è l’ottima comunity di Native Instruments su cui trovare tutto (articoli, tips’n tricks, ensemble belle e pronte e chi più ne ha più ne metta). Per chi volesse essere subito operativo, segnalo il corso su Reaktor 5 di Mac Pro Video a cura di Brian Cass (product specialist di Reaktor) che trovate qui.
Protagonista della nostra serie, sempre lui, il famoso/famigerato ARP Odyssey che, per i nostri scopi, scegliamo….”colorato di bianco” (capirete il perchè alla fine). Eccolo qui:
La versione di Reaktor utilizzata è la 5.8.0. Orsù dunque, partiamo in tromba ricalcando l’impostazione degli articoli di Enrico per comodità di lettura, con una differenza: l’ensemble completa la potremo scaricare solo alla fine dell’ultima puntata, meglio concentrarsi prima sulla programmazione “a tempo pieno”.
Senza null’altro aggiungere, apriamo Reaktor, creiamo una bella ensemble vuota e iniziamo a modellare le sorgenti sonore, notando la prima differenza rispetto all’ambiente Clavia: ad ogni modulo aggiunto corrisponde un’interfaccia grafica che si va a piazzare sul pannello vuoto della nostra ensemble appena creata. Tale interfaccia offre controlli regolabili in aspetto grafico, valori e funzioni. Questo aspetto è una prima complicazione in più rispetto all’ambiente Clavia, ma tutto sommato gioca a nostro vantaggio…lo useremo per divertirci provando ad impostare una interfaccia a sliders del tutto simile alla plancia di comandi originale dello strumento. A tale proposito facciamoci aiutare da uno schema un po’ più diretto:
Tenendo ben presente lo schema di sopra iniziamo senza indugio la nostra modellazione partendo dal cuore, naturalmente.
Le sorgenti sonore
Due gli oscillatori e una sorgente di rumore: ricordiamo brevemente i requisiti di dettaglio del VCO1:
1) generazione simultanea di onda dente di sega e impulsiva a simmetria variabile;
2) possibilità di lavorare come LFO supplementare;
3) due bus di modulazione sulla frequenza (in regime esponenziale), con quattro sorgenti selezionabili a due a due: LFO sine/LFO Square e Sample&Hold/ADSR;
4) un bus di modulazione sulla simmetria dell’onda impulsiva, con regolazione manuale di partenza e doppia sorgente di modulazione selezionabile: LFO sine/ADSR;
5) predisposizione per il comportamento bifonico in sensibilizzazione low note priority attraverso il blocco di Portamento e l’azione del Pitch Bend (della bifonia parleremo nell’ultima puntata).
Per pulizia di programmazione organizzeremo la nostra ensemble a “macro” funzionali ed in particolare per il blocco delle sorgenti sonore adotteremo una macro che chiamereno con molta fantasia “VCO”.
All’interno di essa, altre due macro una per il VCO-1 e l’altra per il VCO-2. Così facendo possiamo sfruttare le caratteristiche grafiche di questo componente per ricalcare proprio l’aspetto di ogni sezione dello strumento originale, come vedremo maggiormente nel dettaglio in seguito. Lente d’ingrandimento alla mano e procedendo “bottom-up” analizziamo cosa c’è all’interno della macro VCO-1, cominciando proprio dagli oggettini che emettono le due forme d’onda di cui abbiamo bisogno. Eccoli qui:
Abbastanza semplice, due oscillatori modulabili in frequenza sia esponenzialmente che linearmente (ingressi P e F rispettivamente), il primo dedicato alla produzione dell’onda rampa, il secondo dell’onda impulsiva, per la quale, ricordiamo, deve essere prevista anche la PWM.
Dato che nell’ARP Odyssey originale è prevista solo la modulazione di frequenza in regime esponenziale utilizzeremo solo l’ingresso P (Pitch) per entrambi gli oscillatori.
Tralasciamo per ora il controllo mediante tastiera esterna e preoccupiamoci dell’intonazione dei due oscillatori. Abbiamo bisogno di due sliders con cui regolare l’intonazione, in modalità “coarse” e “fine”. Creiamo due controlli, il primo con valori che vanno da 0 a + 24 (2 ottave in su) il secondo da -1 a +1 con 0 come valore di default e un passo di 0.001. Per rendere il tutto più credibile ed evitare i fastidiosi scalini del regime digitale adotteremo due sapienti moduli “smoother” che addolciscono l’escursione di intonazione. Il tutto inviato ad un sommatore che, noterete, contiene più di due ingressi: un po’ di pazienza, come potete immaginare questi due controlli non sono gli unici ad intervenire sulla modulazione di frequenza:
Andiamo avanti, dobbiamo innescare la modalità LFO del primo oscillatore. Se ricordate la tecnica adottata per la modellazione in ambiente Clavia, essa consisteva nel sottrarre un multiplo di -12 (abbassamento di un’ottava del pitch, in regime esponenziale) abbastanza elevato al segnale di intonazione, in modo da portare la frequenza dell’oscillatore in regime sub-audio e, quindi farlo lavorare come LFO. Direi che il numero -64 è sufficiente. Basta sottrarlo al pitch in ingresso allo strumento e il gioco è fatto. Un bel modulo “costante” settato a -64 fa al caso nostro. Già che ci siamo, creiamo anche un ingresso alla nostra macro che chiamiamo “Pitch”; come potete immaginare esso servirà per convogliare il segnale di pitch derivato dalla pressione dei tasti sul nostro controller MIDI ai nostri fedeli e devoti oscillatori.
Il pitch della tastiera oppure -64 si vanno a sommare ai valori degli slider “coarse” e “fine” creati poc’anzi. La parola “oppure” dovrebbe far sentire puzza di “switch” e difatti così è. Il risultato è raffigurato di sotto:
Per ora tralasciamo l’impostazione che viene fuori sul pannello della nostra ensemble, ce ne occuperemo alla fine, anche perchè potete (anzi dovete) sentirvi liberi di organizzare la vostra interfaccia come meglio credete.
Andiamo avanti, dobbiamo modellare i bus di modulazione della frequenza ad opera di:
1) LFO Sine
2) LFO Square
3) S&H
4) ADSR
Avendo una macro dedicata solo all’oscillatore 1, viene da organizzare le sorgenti di sopra come ingressi ad essa. Creiamo quindi 4 moduli “IN” e ricordiamoci che dobbiamo organizzarle a coppie in or esclusivo su due bus di modulazione differenti. Uhm…or esclusivo mi sa di switch mentre “due bus di modulazione differenti” mi fa pensare al sommatore di prima. Non basta, se daremo un’occhiata allo schema dello strumento noteremo che c’è anche uno slider che dosa la modulazione, quindi abbiamo bisogno di un altro controllo. Un click di qua, due di là, una regolata, una stretta di bulloni e questo è quello che viene fuori, senza troppi complimenti:
La figura mostra il blocco di modulazione della frequenza al completo. Non resta che inviarlo ai due ingressi P dei due oscillatori ed il gioco è fatto. Cosa manca? Ah si, la Pulse Width Modulation dell’oscillatore che produce l’onda impulsiva. Essa è ad opera delle stesse coppie che modulano la frequenza, per cui non resta che riutilizzare i due bus di modulazione ad opera della coppia LFO Sin/LFO Sqr e della coppia ADSR/S&H, “miscelati” ad un componente “control” opportunamente regolato. Insomma così:
Bene, la struttura VCO-1 è praticamente pronta, riepiloghiamola velocemente nello schema di seguito:
Passiamo alla modellazione del secondo oscillatore; un bel “duplica” di Reaktor consente di riutilizzare pesantemente la macro progettata per il VCO-1, ma ovviamente non basta perchè i requisiti del VCO-2 sono i seguenti:
1) possibilità di lavorare come slave in regime di Hard Sync;
2) una dotazione di sorgenti di controllo FM lievemente diversa da quella precedente.
Per implementare l’hard sync basta cambiare le sorgenti sonore adottando due oscillatori con ingresso sync e stesse forme d’onda di quelli adottati per il VCO-1. I moduli “Saw Sync” e “Pulse Sync” di Reaktor fanno al caso nostro. All’ingresso sync manderemo o 0 oppure il segnale SAW del VCO-1, più facile di così…
In merito alle sorgenti di modulazione, cambia il primo bus di modulazione, stavolta formato dalla coppia LFO Sin e S&H Mix, poco male. Apportati questi piccoli cambiamenti la struttura completa viene più o meno così:
Passiamo all’ultima sorgente sonora, il Noise. Lo modelleremo come una ulteriore macro, posta al livello della macro VCO che “avvolge” VCO-1 e VCO-2. Nella stessa macro, inseriremo, per comodità di organizzazione dell’interfaccia e dei moduli all’interno dell’ensemble, anche il Ring modulator del quale parleremo tra pochissimo.
In merito al Noise, dobbiamo generare rumore bianco e rosa e guarda caso Reaktor ci mette a disposizione un modulo bello e pronto, di nome “Noise Generator”. Inseriamolo, colleghiamolo ad un modulo “out” di uscita della macro e ad un modulo “in” a cui invieremo, in un secondo momento e quando sarà pronto” un bell’inviluppo (una cosa alla volta).
Passiamo al modulatore ad anello: esso si ottiene come semplice moltiplicazione del segnale delle due onde quadre, rispettivamente in uscita da VCO-1 e VCO-2. Basta aggiungere un modulo “multiply” alla nostra macro, inviargli due ingressi a cui collegheremo i due segnali da moltiplicare e collegare il risultato ad altro modulo “out”. Voilà, la nostra macro “NOISE/RM” è pronta!!
Prima di passare alla sezione di filtraggio, diamo uno sguardo a come viene tutta la macro “VCO”, avendo collegato tutti gli ingressi, avendo inserito uno “switch” per i due VCO e per il noise generator con cui selezionare la forma d’onda desiderata e avendo inserito tre amplificatori con altrettanti controlli con cui dosare VCO-1, VCO-2 e rumore nel mixaggio finale da inviare al flitro.
Ho volutamente omesso la sezione ingressi perchè ne parleremo più avanti quando discuteremo di bifonia, portamento, pitch bending e compagnia cantante. Andiamo avanti con…
La sezione di filtro e amplificazione
Due i filtri da inserire, un classico low pass risonante con controllo di frequenza di taglio e risonanza e possibilità di modulazione e un high pass filter con controllo della frequenza di taglio e nessuna modulazione. I due filtri sono in cascata. Le sorgenti di modulazione del filtro low pass prevedono tre bus di modulazione con una coppia di sorgenti per ciascun bus. Ciascuna coppia prevede la selezione esclusiva di uno dei due membri che la compongono, ormai abbiamo capito. Le coppie sono:
1) Keyboard Control Voltage / Sample & Hold Mixer (tralasciamo per ora la modulazione ad opera di un pedale esterno)
2) Sample & Hold / LFO Sine
3) ADSR / AR
Creiamo una nuova macro che chiameremo “VCF” ed iniziamo ad “infilarci roba” dentro. Per l’ensemble in oggetto abbiamo utilizzato i seguenti moduli:
1) 4-pole filter;
2) 1-pole static HP (non c’è modulazione della frequenza, quindi meglio risparmiare CPU);
3) Switch, moltiplicatori e sommatori per realizzare le modulazioni ad opera dei tre bus descritti di sopra, ovviamente senza dimenticare gli ingressi necessari. Il principio è lo stesso utilizzato per gli oscillatori.
L’amplificatore è abbastanza semplice da modellare, se tralasciamo al momento la sezione inviluppi (di cui parleremo abbondantemente nella prossima puntata). Infatti non dobbiamo fare altro che inserire un controllo, chiamato VCA Gain, con cui dosare l’ampiezza delle forme d’onda degli oscilatori e del rumore e mediante il quale realizzare ottimi droni. Per esigenze di organizzazione dell’interfaccia grafica inseriremo nella macro relativa al filtro questo controllo, anche se per correttezza avremmo dovuto installarlo nella macro VCO.
Il risultato finale, facilmente comprensibile (almeno spero), è visionabile nella figura di seguito:
Nella prossima puntata parleremo delle sorgenti di modulazione e degli inviluppi, rimanete sintonizzati.
Tags: ARP, Odyssey, Reaktor, tutorial
Trackback from your site.
Comments (3)
Crazepan
| #
Che piacere leggere articoli così trasparenti su reaktor!Sono anni che lo uso e da qualche tempo ho iniziato a costruirmi Synth ,generatori percussivi e grain samples e altri oggettini,ma ho ancora delle serie difficoltà con i sequencer.Fin che si tratta di collegarne uno gia fatto ,ed articolare le note, nessun problema ,ma quando provo ad usare la sequenza per controllare l’ apertura del filtro inizio a non riuscirci per non parlare poi di realizzarlo da zero..Per farla breve : Sarebbe veramento stupendo se scriveste un articolo sulla progettazione di un classico sequencer a tre linee di 16 step…
Reply
Antonio Antetomaso
| #
Come idea non è niente male.
Grazie degli apprezzamenti.
Reply
Crazepan
| #
Reply