Come iniziare

ZynAddSubFX è un sintetizzatore software piuttosto complesso, con un gran numero di controlli. Perciò l’uso di ZynAddSubFX non è sempre ovvio.

Molte applicazioni sotto Linux trasportano il MIDI con AlSA e trasmettono l’audio con JACK. ZynAddSubFX può essere lanciato con questa configurazione eseguendo:

zynaddsubfx -I alsa -O jack -a

Questo imposta ALSA come driver input e JACK come driver audio, che dovrebbe tentare di connettersi automaticamente alla tua scheda audio, per via del flag -a. Se questa è la prima volta che lanci ZynAddSubFX, vedrai una schermata che ti lascia scegliere tra l’interfaccia per principianti e quella avanzata. Attualmente l’interfaccia beginner è deprecata, quindi è raccomandato usare l’interfaccia advanced.

Ora dovresti essere in grado di vedere la finestra principale di ZynAddSubFX, dalla quale puoi impostare patch, effetti e altre configurazioni generali, ma la cosa più importante è che fornisce i collegamenti tra le patch. ZynAddSubFX è uno strumento potente con una serie di patch di base, ma la vera forza sta dietro all’abilità di creare delle patch personali.

./images/uimain.png
Figure 1. Main Window

Per un utilizzo base, potrai usare il pulsante alla destra dell’etichetta enabled. Questo pulsante consentirà di selezionare lo strumento desiderato dai banchi disponibili in ZynAddSubFX. Per suonare note in ZynAddSubFX puoi usare la tastiera virtuale integrata (accessibile dal pulsante vK) oppure puoi connettere la tua tastiera al sistema e usare aconnect per connetterla in ZynAddSubFX (supponendo che si stia usando ALSA).

Questa finestra principale consente l’accesso a molte features più avanzate. Di cui alcune sono:

  • System Effects

  • Insertion Effects

  • Recording

  • Part Settings (strumento impostazioni del livello)

  • Master Settings

  • Microtonal Settings

Ad esempio, per utilizzare la funzione di registrazione deve essere selezionato un file wave dal menù di registrazione, poi può essere avviata con il pulsante record e stoppata con il pulsante stop. Questo è un modo semplice e veloce di registrare alcuni samples da ZynAddSubFX, anche se ci sono strumenti con caratteristiche più complete disponibili tramite gli strumenti di registrazione di JACK.

Note
Dopo aver premuto record, il file wave non partirà la registrazione fino a quando un nuovo tasto non sarà premuto da una sorgente MIDI esterna o dalla virtual keyboard. Le proprietà dei System Effects e degli Insertion Effects sono accessibili e disponibili così come le proprietà di ogni strumento.

Filters

ZynAddSubFX offre diversi tipi di filtri, che possono essere usati per modellare lo spettro di un segnale. I parametri primari che influenzano le caratteristiche del filtro sono cutoff, resonance, filter stages e il tipo di filtro (filter type).

  • Cutoff (frequenza di taglio): Questo valore determina quale frequenza segna il punto di cambiamento per il filtro. In un filtro low-pass (passa-bassi) questo valore segna il punto da cui le frequenze alte verranno attenuate.

  • Resonance: La Resonance di un filtro determina l’enfatizzazione del filtro sulla frequenza di taglio. In ZynAddSubFX è rappresentata dal fattore Q, che è definito come la frequenza di taglio diviso la larghezza di banda (bandwidth). In altre parole un più alto valore di Q causa un picco molto più stretto e risonante.

  • Stages: Il numero di fasi di filtrazione in un dato filtro descrive quanto bruscamente è in grado di applicare cambiamenti nella risposta in frequenza.

I filtri analogici di base (analog) che ZynAddSubFX offre sono mostrati di seguito, con la frequenza centrale segnata con una linea rossa. I filtri a stato variabile (state variable) dovrebbero essere molto simili.

images/filter0.png

Come detto in precedenza, il valore Q di un filtro influenza quanto concentrata è l’energia del segnale nella frequenza di taglio; il risultato di differenti valori di Q sono mostrati sotto.

Tip
Per molti suoni analogici classici, alti valori di Q sono ussati sugli sweeping filters. Un semplice low-pass filter con Q alto modulato da un forte envelope solitamente è sufficiente per avere un buon suono.

images/filter1.png

Infine, l’effetto dell’ordine del filtro può essere visto sotto. Questo è approssimativamente il numero di fasi del filtro (filter stages). Per patches più complesse è importante capire che la nitidezza in più nel filtro non è gratuita, in quanto richiede molti più calcoli in corso di esecuzione; questo fenomeno è più facilmente visibile nel subsynth, dove è facile avere bisogno di centinaia di filter stages per produrre una certa nota.

images/filter2.png

User Interface

images/uifilter.png

  • C.freq: Cutoff frequency

  • Q: Level of resonance for the filter

  • V.SnsA.: Velocity sensing amount for filter cutoff

  • V.Sns.: Velocity sensing function

  • freq.tr: Frequency tracking amount. When this parameter is positive, higher note frequencies shift the filter’s cutoff frequency higher.

  • gain: Additional gain/attenuation for filter

  • St: Filter stages

LFO

Introduzione

"LFO" significa Low Frequency Oscillator. Questi oscillatori non sono usati per fare suoni da soli, ma per cambiare alcuni parametri (come le frequenze, le ampiezze o i filtri).

L’LFO ha alcuni parametri di base:

  • Delay: Questo parametro imposta il tempo tra l’inizio della nota e l’inizio dell’LFO

  • Start Phase: La posizione che avrà l’LFO alla partenza

  • Frequency: La velocità dell’LFO (quanto velocemente il parametro è controllato dai cambiamenti dell’LFO)

  • Depth: L’ampiezza dell’LFO (quanto il parametro è controllato dai cambiamenti dell’LFO)

images/lfo0.png

Un altro importante parametro dell’LFO è la forma (shape). Ci sono molti tipi di LFO in base alla forma. ZynAddSubFX supporta le seguenti forme:

images/lfo1.png

Un altro parametro è LFO Randomness (casualità dell’LFO). Esso modifica casualmente l’ampiezza o la frequenza dell’LFO ed in ZynAddSubFX puoi scegliere quanto, con questo parametro. Nelle seguenti immagini sono mostrati alcuni esempi di casualità e come cambia la forma d’onda triangolare dell’LFO.

images/lfo2.png

Altri parametri sono:

  • Continous mode: Se si utilizza questa modalità, l’LFO non partirà da "zero" ad ogni nuova nota, ma sarà continuo. E' molto utile applicato sui filtri, per fare interessanti sweeps.

  • Stretch: Controlla quanto la frequenza dell’LFO cambia in base alla frequenza della nota. Si può passare da stretch negativo (la frequenza dell’LFO diminuisce sulle note più alte) a zero (rimane la stessa in tutte le note) a stretch positivo (aumenta sulle note più alte).

User Interface

In ZynAddSubFX i parametri dell’LFO sono mostrati così:

images/uilfo.jpg

Questi parametri sono:

  • Freq: LFO Frequency

  • Depth: LFO Depth

  • Start: LFO Start Phase - Se questo knob è al valore più basso, LFO Start Phase sarà random

  • Delay: LFO Delay

  • A.R.: LFO Amplitude Randomnes

  • F.R.: LFO Frequency Randomness

  • C.: LFO Continous Mode

  • Str.: LFO Stretch - Nell’immagine sopra LFO Stretch è impostato a zero

Envelopes

Introduzione

Gli inviluppi controllano come cambiano nel tempo l’ampiezza, la frequenza o il filtro.

Amplitude Envelopes (inviluppi di ampiezza)

Questi inviluppi controllano l’ampiezza del suono. In ZynAddSubFX, gli inviluppi di ampiezza possono essere lineari o logaritmici. Nell’immagine seguente sono mostrate le differenze tra questi inviluppi.

Alt text

L’inviluppo di ampiezza è diviso in: * Attack: Inizia all’attacco della nota (Note On). Il volume inizia da 0 al massimo. In ZynAddSubFX l’attack è sempre lineare * Decay: Il volume scende dal valore massimo ad un livello chiamato "Sustain level" * Sustain: Il volume rimane costante fino a quando il tasto non viene rilasciato (Note Off). Dopo questo, avviene l’ultima fase. * Release: Il volume scende a zero.

Frequency Envelopes

Questi inviluppi controllano la frequenza (o, più esattamente, il pitch) degli oscillatori. La seguente figura disegna le fasi di questi inviluppi.

Alt text

La linea puntinata rappresenta il pitch reale del suono senza inviluppo.

Gli inviluppi di frequenza sono divisi in 3 fasi:

  • Attack: Inizia all’attacco della nota (Note On). La frequenza inizia da un certo valore e "scivola" alla reale frequenza della nota.

  • Sustain: La frequenza è la stessa per tutto il periodo di Sustain

  • Release: Questa fase inizia con il Note Off e scala la frequenza della nota ad un certo valore

Filter Envelopes

Questi inviluppi controllano la frequenza di cutoff dei filtri e sono divisi in:

Alt Text

  • Attack: Inizia all’inizio della nota (Note On). La frequenza di cutoff inizia ad un certo valore e scala ad un altro

  • Decay: La frequenza di cutoff continua a scivolare verso il valore reale della frequenza di cutoff del filtro (linea puntinata)

  • Sustain: La frequenza di cutoff è la stessa per tutto il periodo di Sustain (linea puntinata)

  • Release: Questa fase inizia con il Note Off e scala la frequenza di cutoff della nota ad un certo valore

Freemode Envelopes

Per tutti gli inviluppi c'è una modalità che consente all’utente di impostare un numero arbitrario di fasi e punti di controllo. Questa modalità è chiamata Freemode.

Alt Text

L’unica fase che rimane sempre definita è il Sustain, dove gli inviluppi si bloccano fino ad un evento Note Off.

User Interface

Tutti i tipi di inviluppi hanno alcuni controlli comuni:

  • E: Mostra una finestra che può far vedere la vera forma dell’inviluppo o convertirlo in Freemode per editarlo

  • Stretch: Come l’inviluppo è allungato in base alla nota. Sulle note più alte gli inviluppi sono più corti delle note più basse. Nel valore più a sinistra lo stretch è zero. Il valore più a destra indica un allungamento del 200%; ciò significa che l’inviluppo è allungato circa 4 volte/ottava.

  • frcR: Release forzato. Se questa opzione è settata su On, il rilascio andrà al valore finale anche se la fase di Sustain non è stata completata. Di solito questo parametro è settato.

I parametri degli Amplitude Evelopes in ZynAddSubFX sono:

Alt Text

  • A.dt: Durata Attack

  • D.dt: Durata Decay

  • S.Val: Valore di Sustain

  • R.dt: Release time

  • L: Se questa opzione è settata l’inviluppo è lineare, altrimenti sarà logaritmico.

Per i Frequency Envelopes l’interfaccia ha i seguenti parametri:

Alt Text

  • A.val: Valore di Attack

  • A.dt: Durata Attack

  • R.dt: Release time

  • R.val: Valore di Release

I Filter Evelopes hanno i parametri:

Alt Text

  • A.val: Valore di Attack

  • A.dt: Durata di Attack

  • D.val: Valore di Decay

  • D.dt: Decay time

  • R.dt: Release time

  • R.val: Valore di Release

I Freemode Envelopes hanno una finestra separata per impostare parametri e controlli:

images/uienvelope0.jpg

  • Control points (punti di controllo): Puoi muovere i punti usando il mouse. In basso a destra nella finestra viene mostrata la durata totale dell’inviluppo. Se si clicka su un control point verrà visualizzata la durata della fase in cui è quel punto.

  • Freemode: Questo pulsante attiva o disattiva la modalità Freemode

  • Add Point: Aggiunge un punto dopo il punto correntemente selezionato. Puoi selezionare un punto clickandoci su.

  • Delete point: Rimuove il punto dall’inviluppo.

  • Sust.: Imposta il punto di Sustain. E' mostrato usando la linea gialla.

  • Str.: Envelope stretch

AdSynth

AdSynth, principalmente un motore di sintesi additiva, è uno dei tre principali motori di sintesi disponibili in ZynAddSubFX. Il concetto base di questo motore è la somma di un insieme di voci, ciascuno dei quali consiste in oscillatori.

High Level (Global)

Il livello globale di AdSynth consiste negli elementi mostrati nella figura sotto:

gen/ad-note.png
Figure 2. AdSynth Global Elements

Il livello globale di AdSynth è quasi interamente composto dagli elementi precedentemente discussi. Comunque appaiono qui alcune nuove features, come: il rilevamento di velocità (velocity sensing), punch, opzioni di detune e relativa bandwidth, resonance.

images/ad-global.png
Figure 3. AdSynth Global Window

Il rilevamento di velocità è semplicemente una trasformazione esponenziale dalla velocità della nota ad alcuni cambiamenti di parametro (!?). Il diagramma sotto mostra come il velocity sensing controlla questa traslazione in tutto il range di velocity delle note possibili.

gen/velf.png
Figure 4. Velocity Sensing Chart

Il punch di una nota in AdSynth è un’amplificazione costante dell’output alla partenza della nota, con una lunghezza determinata dal punch time e stretch e l’ampiezza determinata da punch strength e velocity sensing. Il controllo relBw nel riquadro di frequenza è di fatto un moltiplicatore per "scordare" (detuning) tutte le voci di una nota.

Note
TODO Talk about resonance

La somma delle voci passa attraverso filtri e amplificazione per produrre il suono finale. Questro potrebbe far pensare che ad-note è solo un mucchio di post-elaborazione minore e che a questo livello molto della generazione del suono è nascosta.

Voices

La voce da accesso ad un configurazione simile dei parametri globali più altre cose come il modulatore, l’oscillatore e features di unison.

images/ad-voice.png
Figure 5. AdSynth Voice Window

Modulation

Tra le opzioni di modulazione si può selezionare:

  • Morph

  • Ring Modulation

  • Phase Modulation

  • Frequency Modulation

  • Disabled

Unison

Unison è utile nel creare il suono tipo chorus di più oscillatori simultanei.

Oscillator

Note
TODO show waveforms, talk about distortions somewhere, etc
images/uioscil.png
Figure 6. Oscillator Window

Controller

./images/uicontroller.png

General

  • ModWh: Modulation Wheel depth (profondità della Modulation Wheel)

  • Exp MWh: Exponential Modulation Wheel (cambia la scala di mudulazione in esponenziale)

  • BwDpth: Bandwidth Depth (profondità della Bandwidth)

  • Exp BW: Exponential Bandwidth (cambia la scala di Bandwidth in esponenziale)

  • PanDpth: Panning Depth (profondità del pan)

  • FltQ: Filter Q (resonance) depth

  • FltCut Filter Cutoff frequency depth (profondità della frequenza di taglio)

  • Expr: Attiva/disattiva Expression

  • Vol: Attiva/disattiva la ricezione di Volume controller

  • FMamp: Attiva/disattiva la ricezione di Modulation Amplitude controller (76)

  • Sustain: Attiva/disattiva sustain pedal

  • PWheelB.Rng (cents): Pitch Wheel Bend Range (cents; 100 cents = 1 semitono)

Portamento

  • Rcv.: Controlla se la parte riceve il Portamento - On/Off (65)

  • time: La durata del Portamento

  • thresh: La soglia (Threshold) del Portamento. Rappresenta il minimo o il massimo numero di semitoni (o centesimi di semitono) richiesti per lo start del Portamento. La differenza è calcolata tra l’ultima nota e la corrente.

  • th.type: Il tipo di Threshold Se selezionato significa che il Portamento si attiva quando la differenza delle frequenze è al di sopra della soglia ("thresh"); non selezionato si attiva quando è al di sotto della soglia.

Note
La Threshold si riferisce alle frequenze e non alle note MIDI (si potrebbe tenere in considerazione se si usano scale microtonali).

Proportional Portamento

  • Propt.: Se il Portamento è proporzionale al rapporto (Ratio) delle frequenze

  • Prp. Rate: Ratio necessaria per raddoppiare il tempo del Portamento

  • Prp. Dpth

Resonance

  • CFdpth: Controlla la profondità del centro della Resonance

  • BWdpth: Controlla la profondità della larghezza di banda (Bandwidth) della Resonance

Persistence

Come la gran parte delle applicazioni ZynAddSubFX consente di salvare il tuo lavoro e ricaricarlo.

Salvare tutto

Uno dei modi più semplici di salvare il tuo lavoro è quello di salvare l’intera sessione. Questo può essere fatto dal menu File e il risultato sarà la creazione di un .xmz file. Una volta creato, questo file conterrà le tutte le impostazioni della sessione, come le accordature microtonali, tutte le patch, tutti i tipi di effetti, ecc…

Salvare delle parti

In alcuni casi salvare tutto non è quello che si desidera. Di seguito c'è un esempio di salvataggio di una patch.

Patches

Per salvare una patch, si può salvare dal menu strumenti o dalla bank window.

Con il menu strumenti si può solo salvare il file in una dato percorso con l’estensione .xiz.

Con il menu dei banchi si può assegnare una patch ad un certo slot con un banco. Questo strumento rimarrà qui per un futuro uso fin quando non viene cancellato. Per vedere la posizione fisica del file .xiz si può controllare la finestra in File→Settings→Bank_Root_Dirs, per vedere i percorsi dei banchi.

Note
Devi avere i permessi di scrittura per aggiungere uno strumento al banco.

Presets

Avete un’impostazione favorita per un inviluppo o un oscillatore difficile da rifare? Allora i preset fanno al caso vostro. I preset consentono di salvare le impostazioni per ogni componente che supporta operazioni di copia/incolla. Questo viene fatto con i prest file (.xpz), che sono memorizzati nelle cartelle indicate da File→Settings→Preset_Root_Dirs.

Riepilogo delle estensioni
xmz Everything
xiz Instrument
xsz Scale Settings
xpz Presets

Appendice A: Default MIDI

Connessioni MIDI di Default
001 - Modulation Wheel
007 - Volume
010 - Pan
011 - Expression
064 - Sustain
065 - Portamento Enable
071 - Filter Q
074 - Filter Cutoff
075 - Bandwidth(*)
076 - Modulation Amplitude(*)
077 - Resonance Center Frequency(*)
078 - Resonance Bandwidth(*)
120 - All Sounds Off
121 - Reset All Controllers
123 - All Notes Off

Le voci con (*) non rientrano nelle specifiche General Midi.

Appendice B: Compilare ZynAddSubFX

Introduzione a CMake

Note: Questa sezione è in gran parte copiata dal wiki di OpenSceneGraph: http://www.openscenegraph.org/projects/osg/wiki/Build/CMake

ZynAddSubFX usa CMake come suo sistema di compilazione unificato. CMake è capace di leggere semplici build script dall’albero dei sorgenti e creare da questo un sistema di compilazione specifico per la piattaforma. Questo sistema di compilazione può avere la forma di VisualStudio project files, Unix Makefiles o XCode project files. CMake è capace di individuare automaticamente le dipendeze esterne e consente di attivare/disattivare la compilazione del modulo e di configurare varie opzioni di compilazione.

L’uso di un sistema di compilazione unificato consente di evitare rotture di compilazione che erano presenti nel precedente metodo di compilazione, ovvero quello di mantenere tre obiettivi di compilazione separati per VisualStudio, Unix "make" and XCode. Si riduce anche l’onere della manutenzione per gli sviluppatori base e collaboratori. Nell’insieme, l’uso di CMake dovrebbe portare come risultato una migliore coerenza e build più stabili su ogni piattaforma per gli utenti finali e una maggiore produttività nello sviluppo di nuove versioni. Speriamo che con una maggior coerenza di builds tra piattaforme renderà più facile per gli sviluppatori utilizzare la development version di ZynAddSubFX e aiutare a contribuire ai testing e alle migliorie, portando ad un codice di più alta qualità.

Quick start guide

Per i più impazienti, qui c'è una guida veloce su come compilare immediatamente ZynAddSubFX da sorgenti.

Note: Ciò presuppone che tu abbia già una copia dei sorgenti.

#enter the source directory
cd zynaddsubfx

#make a directory for an out-of-source build
mkdir build
cd build

#generate a cmake build project here from the cmake root, which is
#found in the directory below the current one
cmake ..

#OPTIONAL: Adjust compile variables in the Cache file:
ccmake .

#And finally, build as usual using make
make

Appendix C: Ottenere ZynAddSubFX

Normalmente ci sono diversi modi per ottenere una copia di ZynAddSubFX.

SourceForge

http://sourceforge.net/projects/zynaddsubfx/files/

Distribuition

apt/yum/others

Git

git clone git://git.code.sf.net/p/zynaddsubfx/code zynaddsubfx

Introduzione a Git

Per coloro che vogliono vivere "on the bleeding edge" o chi vuole essere certo che la prossima release abbia meno bug, si può avere il codice con git. Git è usato per gestire il codice sorgente di questo progetto ed è utile per ottenere velocemente e facilmente una copia "up-to-date" del codice sorgente.

Ottenere il codice sorgente

Per avere una copia dei sorgenti di ZynAddSubFX tutto il necessario da fare è:

git clone git://git.code.sf.net/p/zynaddsubfx/code zynaddsubfx

cd zynaddsubfx

#Download additional resources
git submodule init
git submodule update

Ora dovresti essere nella directory del codice sorgente.

Per compilare facilmente si guardi l’Appendice B del manuale.

Dare un’occhiata ai branch

Diciamo che lo sviluppo si è esteso ad una creazione di una feature che si vuole vedere in anteprima. Per il bene di questa guida, supponiamo che il nome del branch della feature che verrà è foo.

#checkout the foo branch from sourceforge
git checkout --track -b foo origin/foo

#lets checkout the primary branch again
git checkout master

#hop back to the other branch
git checkout foo

Ora si dovrebbe essere in grado di cambiare branches e andare nella build-directory (come descritto in Appendice B) e ricompilare ZynAddSubFX.

Note
Quando si usano i branches può venir meno un po' di stabilità.