Primi passi con Reaktor – Quinta parte

Written by Enrico Cosimi on . Posted in Software

Continuiamo la scalata verso quota 8000 aggiungendo, progressivamente, i comportamenti che mancano al nostro oscillatore per diventare degno di essere suonato. E’ la volta di implementare i motori di Hard Sync, FM Lin/Exp e un’altra serie di coserelle che vedranno la luce strada facendo.

Di Enrico Cosimi

Schermata 10-2456589 alle 20.13.02

Per generare Hard Sync, è necessario prevedere un collegamento di sincronizzazione che, dal mondo esterno, raggiunga la porta Snc presente in ciascun modulo.

Visto che, precedentemente siamo stati così diligenti da sostituire tutti i moduli di oscillatore con le versioni dotate di sincronizzazione, fase e modulazione di frequenza, partiremo con l’apertura del nuovo fronte Hard Sync.

Schermata 10-2456589 alle 20.19.29

Ci servono: una porta d’ingresso per il segnale di sincronizzazione e un interruttore On/Off con cui interrompere (o abilitare) il trattamento. La porta d’ingresso potrebbe essere aggiunta alla Macro generandola attraverso Built-In/Module/Terminal/Out Port; in maniera più pratica, useremo uno dei due terminali d’ingresso ereditati dalla generazione default di Macro precedentemente attivata con Reaktor. Useremo la porta 2 R, chiamandola snc, per la sincronizzazione; più tardi, useremo la porta 1 L, chiamandola fm, per il meccanismo di modulazione di frequenza.

Il segnale di sincronizzazione (ulteriori particolari in seguito) entra dal terminale 2 R e raggiunge l’interruttore Built-In Module/Panel/Switch che lasceremo monoporta per il transito o meno del segnale sincronizzante ricevuto dall’esterno.

Schermata 10-2456589 alle 20.23.16

Dopo l’interruttore (che nomineremo Sync), il segnale raggiunge le diverse porte di sincronizzazione dei moduli oscillatore; sul pannello comandi, è ora di mettere ordine e spostare – a colpi di chiave inglese – il nuovo interruttore.

 

Chi sincronizza cosa?

Per lavorare proficuamente con la sincronizzazione, sono necessari due oscillatori: un master e uno slave, cioè un padrone che sincronizza e uno schiavo che riceve gli ordini e si adegua. Dopo aver incapsulato il nostro oscillatore in una Macro, duplicarlo (command-D) per avere due oscillatori è un gioco da ragazzi.

Schermata 10-2456589 alle 20.26.38

Per riconoscerli, rinomineremo le due Macro come Oscillator 1 Oscillator 2; come al solito, sul pannello comandi è successo un patatrac che richiede la nostra attenzione; a colpi di chiave inglese, si rimette tutto a posto.

Schermata 10-2456589 alle 20.27.59

Dopo aver fatto ordine, le cose dovrebbero somigliare alla situazione riprodotta qui sotto…

Schermata 10-2456589 alle 20.28.11

Esaurita la parte preliminare, è il momento di collegare il segnale di sincronizzazione, prelevandolo dall’Oscillator 1 e inviandolo alla porta snc della Macro Oscillator 2.

Però, il segnale sincronizzante deve sempre essere dotato di fronti ripidi inequivocabili: non si può sincronizzare usando un segnale sinusoide, e non si può rischiare di cadere in errore se, per caso, si fa la scelta di forma d’onda sbagliata con il selettore Waveform: sarò meglio agire su Oscillator 1 creando un nuovo terminale di uscita dedicato esclusivamente all’onda dente di sega. In questo modo, l’inequivocabile segnale per la sincronizzazione risulterà sempre disponibile quale che sia la forma d’onda “ufficialmente selezionata” con il selettore Waveform.

L’operazione non è difficile: basta entrare nella macro Oscillator 1 e scegliere Built-In Module/Terminal/Out Port  per generare la terza porta d’uscita che nomineremo snc. A questa, collegheremo – senza intermediari di sorta – l’uscita dell’oscillatore Saw Sync.

Schermata 10-2456589 alle 20.33.30

 

Tanto per passare il tempo tra pianto e stridor di denti: invece di creare una terza porta di uscita, vista la natura eminentemente monoaurale dell’oscillatore, sarebbe bastato anche convertire la seconda porta d’uscita R 2 usandola come porta “snc”. L’oscillatore così come è configurato non deve gestire segnali stereofonici e, per il suo ascolto, basterebbe usare la porta L 1 come semplice uscita audio. Pensiamoci…

Quale che sia la strada intrapresa, ora la Macro Oscillator 1 è dotata di uscita dedicata al segnale di sincronizzazione. Non rimane che collegarla alla porta snc precedentemente realizzata nella Macro Oscillator 2. Tra master e slave, si intenderanno subito.

Schermata 10-2456589 alle 20.38.19

Questo è il risultato del collegamento. Non essendoci ancora un mixer audio (a proposito…), si decide di collegare temporaneamente i due oscillatori uno su una porta audio e l’altro sull’altra, in modo da sopravvivere durante le fasi più immediate della programmazione. Più avanti, useremo qualche artificio particolare.

Schermata 10-2456589 alle 21.45.12

 

Una questione d’ordine: differenziare graficamente oscillatore master e oscillatore slave

Anni di frequentazione e uso dei sintetizzatori commerciali ci portano a non accettare una struttura – per quanto virtuale – che abbia identiche prestazioni di pannello nei due oscillatori master e slave. E’ necessario differenziare l’Oscillator 1 togliendo il comando di Sync, che invece rimarrà attivo nell’Oscillator 2.

Schermata 10-2456589 alle 21.49.42

La maniera più furba e indolore consiste nell’aprire la Macro Oscillator 1, identificare lo switch Sync e, nella sua finestra Property/View, decidere di deselezionare la visualizzazione del comando… l’interruttore rimane, lo spazio grafico e l’impaginazione dei comandi nel pannello rimangono, ma la cornice della Macro è contratta…

Schermata 10-2456589 alle 21.50.33

Basterà selezionare le proprietà della Macro, per definire, nella Property/View, un offset di 44 punti sulla posizione del margine Right ed il gioco è fatto.

 

Abilitare le porte di modulazione

Gli oscillatori che abbiamo utilizzati sono predisposti a ricevere, sulla porta F, un segnale modulante; buttandoci avanti con il lavoro, conviene predisporre un collegamento (e un indice di modulazione) per un segnale esterno ricevuto da circuiti che realizzeremo in seguito.

La procedura teorica è sempre quella:

  • si apre la Macro dell’oscillatore e si crea una nuova porta d’ingresso Built-In Modules/Terminal/In Port, denominandola FM In; volendo risparmiare la fatica, si può riciclare una delle porte In rimasta inutilizzata nella Macro…
  • si processa il segnale in ingresso – vedremo poi quale – con un moltiplicatore Built-In Modules/Math/Mult in modo da poterne scalare l’intensità attraverso un controllo di pannello (che chiameremo Amount) recuperato in Built-In Modules/Panel/Knob;
  • sulla fiducia, doteremo questo controllo Amount di un’escursione Min/Max pari a 0/1, con definizione 0.01 pari a un centinaio di possibili incrementi; sicuramente, saremo costretti a modificare più avanti il parametro, per adattarlo al funzionamento.

Il risultato nella struttura dovrebbe somigliare a quello riprodotto qui in basso.

Schermata 10-2456589 alle 22.02.44

Sul pannello comandi, provvederemo a mettere ordine come di consueto.

Ma… un dubbio ci assale. Dal momento che gli oscillatori possono lavorare in modalità FM tanto lineare quanto esponenziale, perchè non prevedere – a fronte di un unico segnale modulante, la possibilità di smistarlo sull’ingresso lineare F degli oscillatori, o sull’ingresso esponenziale P dei medesimi, o… su tutti e due simultaneamente? 

Si tratterebbe solo di modificare il circuito prevedendo, dalla stessa porta d’ingresso, due meccanismi di Amount e moltiplicazione indipendenti, uno marcato Lin FM Amt (verso la porta F) e l’altro marcato Exp FM  Amt (verso la porta P – a questo scopo, sarà necessario aumentare di una porta il numero dei segnali collegati al sommatore che riceve i controlli d’intonazione e li convoglia alle porte degli oscillatori).

Schermata 10-2456589 alle 22.10.55

Ovviamente, la modifica deve essere portata (a colpi di copia e incolla) anche nell’altra Macro Oscillator 2.

Avremo modo più avanti di correggere l’escursione dei due parametri di amount; ricordiamoci, per ora, che li abbiamo solo appoggiati con un margine operativo compreso tra 0 e 1: in Reaktor, i valori numerici sono contestualizzati a destinazione.

Che funzione hanno le due porte FP? Che tipo di valore si aspettano?

Con questi due inquietanti interrogativi, ci salutiamo. La prossima volta, metteremo velocemente in piedi una struttura (almeno) decente di Mixer audio, Filter e Amplifier.

Tags: , ,

Trackback from your site.

Comments (2)

  • Leonardo

    |

    complimenti davvero per questi tutorial!
    mi sorge una domanda forse un po’ scontata:
    nella tua esperienza come trovi la programmazione in Reaktor rispetto ad altri software come Max-Msp, PD o i Clavia?
    te lo chiedo perché mi interesserebbe approfondire uno di questi poichè ovviamente è difficile trovare il tempo per studiarseli tutti..
    dall mia breve esperienza mi par di capire che max forse offre una maggior flessibilità ma mi pare un po’ meno user-friendly, no?
    Clavia usa i suoi DSP ma a parte quello ci sono differenze fondamentali per preferirlo rispetto agli altri? in termini di qualità sonora ho letto che in diversi preferiscono Reaktor rispetto a Max e che la sua flessibilità rispetto a Max è abbastanza trascurabile dato che comunque anche col primo puoi scendere molto a fondo

    Reply

    • Enrico Cosimi

      |

      premesso che il miglior sistema è quello con cui ti sei trovato meglio (ovviamente, puoi trarre delle conclusioni solo dopo aver fatto un giro con tutti…), è chiaro che occorre definire degli obiettivi concreti per il proprio sforzo di apprendimento: tanto Max/MSP, quanto PureData o SuperCollider (o CSound) sono programmi che ti permettono di definire ogni più minimo aspetto della generazione timbrica e del trattamento; però, bisogna chiedersi quanto e quando – nella pratica quotidiana – possa risultare necessario, o indispensabile – scendere così in profondità.

      non faccio riferimento a brasa e strings, che hanno ormai applicativi dedicati tanto per la sintesi quanto per la gestione di enormi librerie sonore, ma anche nella semplice pratica di programmazione (prendiamo una dente di sega) quanto tempo hai a disposizione per:

      a) accumulare eventi disegnando una rampa ascendente di frequenza e ampiezza date
      b) simulare il comportamento di un condensatore che carica e scarica a frequenza data
      c) prelevare la rampa da una libreria di funzioni preconfigurate
      d) selezionare l’onda rampa tra le quattro o cinque o sei disponibili come moduli dedicati, all’interno di una factory library
      e) caricare direttamente un modulo multiwave e collegarlo al filtro

      tutte le strade sono lecite, ma ovviamente richiedono tempo e dettaglio differenziato; quindi, occorre chiedersi quanto e per quanto tempo sia possibile stare sulla semplice dente di sega piuttosto che concentrarsi non dico sulla musica, ma sull’intera struttura di sintesi

      scendendo sul pratico:

      – Clavia NMG2 – se paragonato a Reaktor e Max – è molto “di alto livello”, cioè ti offre maggior velocità a fronte di una quantità di scelte già decise in fabbrica; se ci sai fare, puoi lavorare a basso livello sfruttando competenze e moduli più semplificati, ma ad un certo punto ti scontrerai con le “loro” decisioni e dovrai fartene una ragione; del resto, NMG2 è nato come sistema per programmare velocemente una serie di 4 o 8 DSP al fine di fargli riprodurre comportamenti modulari virtual analog (pretendere granulazione, anche se non impossibile, è poco lecito…)

      – reaktor è ormai un prodotto maturo, con le sue diverse generazioni, è sul mercato dal 1993 e, per quanto mi riguarda, rappresenta il miglior bilanciamento tra complessità, basso livello e prestazioni; ha tutti i vantaggi del mondo (librerie enormi, diffusione garantita, estrema configurabilità), ma non è facile da usare spremendolo subito al massimo delle sue potenzialità; del resto, è così per ogni linguaggio complesso

      – Max/MSP è un altro “classico” della programmazione; personalmente, lo trovo scomodo e troppo dettagliato; probabilmente, se arrivi al punto di sentirti “stretto” dentro i limiti imposti da reaktor, è per te il momento di passare a Max. In tutti i casi, l’esperienza fatta con un linguaggio più semplice non va mai buttata e torna utile quando si sale di complessità (cioè, in termini informatici, quando si scende di livello).

      Da questo punto di vista, forse è più saggio partire con una cosa semplice e poi, progressivamente, accedere a maggior dettaglio funzionale; preferisco questo tipo di approccio a quello “talebano” che privilegia da subito il massimo zoom sulle prestazioni… :-)

      Reply

Leave a comment

Inserisci il numero mancante: *

ga('send', 'pageview');