Creare un semplice synth con inviluppo ADSR con Pure Data

In questo post impareremo a costruire da zero un sintetizzatore a sintesi sottrattiva elementare. Utilizzeremo un oscillatore sinusoidale, un sistema di controllo ADSR (Attack, Decay, Sustain, Release) e un oscilloscopio per visualizzare l’onda in tempo reale.

AVVERTENZA IMPORTANTISSIMA: con Pure Data (e anche la sue versioni derivate, tra cui la migliore secondo me è Purr Data) dovete sempre abbassare il volume delle casse prima di accendere il DSP per evitare danni all’udito, sempre e comunque anche dopo anni di esperienza, qualcosa può sempre andare storto.

1. L’Oscillatore Sinusoidale

Il primo passo è generare il suono. In Pure Data, l’oggetto principale per una sinusoide è osc~.

1. Crea un nuovo patch (File -> New).

2. Premi Cmd+1 (o Ctrl+1) e digita osc~ 440.

3. Aggiungi un Number Atom (Cmd+3) e collegalo all’ingresso di sinistra di osc~ per cambiare la frequenza in tempo reale.

2. L’Inviluppo ADSR con Slider

Un synth senza inviluppo emette un suono continuo e statico. L’inviluppo ADSR modella il volume nel tempo. Useremo degli slider per controllare i parametri.

Creazione degli Slider

Dallo strumento Put, inserisci 4 Horizontal Sliders (o hslider). Clicca col tasto destro su ognuno, vai in Properties e imposta i range:

• Attack (ms): 0 – 2000

• Decay (ms): 0 – 2000

• Sustain (0-1): 0 – 1 (questo è un livello, non un tempo)

• Release (ms): 0 – 2000

Logica dell’Inviluppo

Per un controllo preciso e senza rumori (click), useremo l’oggetto vline~. vline~ riceve messaggi che descrivono rampe di volume.

Per un’implementazione semplice, puoi usare l’oggetto grafico envgen (disponibile in Purr Data/L2Ork), che permette di disegnare l’inviluppo o controllarlo via messaggi. Se preferisci la via classica, usa pack e vline~ per inviare i valori di Attack e Release.

3. Il Mixer (VCA) e l’Uscita Audio

Dobbiamo moltiplicare il segnale dell’oscillatore per l’inviluppo.

1. Crea un oggetto *~ (moltiplicatore di segnale).

2. Collega l’uscita di osc~ al primo ingresso di *~.

3. Collega l’uscita del tuo ADSR (vline~) al secondo ingresso di *~.

4. Per sicurezza, aggiungi un oggetto clip~ -1 1 prima dell’uscita per evitare distorsioni dannose.

5. Infine, collega tutto a dac~ (Digital to Analog Converter) per inviare il suono alle casse.

Screenshot 2: Catena di sintesi [osc~] -> [*~] -> [clip~ -1 1] -> [dac~]           ^       [vline~ (ADSR)]

4. Visualizzare l’onda: Lo Scope

Per vedere l’onda sinusoidale, useremo un Array come oscilloscopio.

1. Vai su Put -> Array. Chiamalo “scope” e imposta la dimensione a 441 punti.

2. Usa l’oggetto tabwrite~ scope.

3. Crea un metro 30 collegato a un bang per aggiornare la visualizzazione 30 volte al secondo.

4. Collega l’uscita del tuo synth (*~) all’ingresso di tabwrite~ scope.

5. Attivazione

Ricordati che per sentire il suono devi attivare il DSP (Digital Signal Processing) nella console di Pure Data o tramite un messaggio pd dsp 1.

Posted in Tutorials.