Come creare plugin audio: Gain VST

Nel vasto universo della produzione musicale digitale, i plugin audio si affermano come veri e propri eroi silenziosi. Questi strumenti digitali sono il cuore pulsante di ogni produzione, capaci di trasformare una semplice melodia in un capolavoro sonoro. La loro capacità di modellare e manipolare il suono apre le porte a un universo di possibilità creative, rendendo ogni composizione unica e personale.

Tra la vasta gamma di opzioni a disposizione dei creatori di musica, spicca il Blue Cat’s Plug’n Script, un gioiello tecnologico che si pone come un fedele alleato per programmatori e musicisti che aspirano a dare vita ai propri effetti audio personalizzati o a sviluppare strumenti virtuali innovativi. In questo articolo, ci immergeremo nel cuore della creatività musicale digitale per scoprire come sfruttare al meglio questo strumento, guidandovi passo dopo passo nella creazione di un plugin basilare ma estremamente utile: il gain. Preparatevi a esplorare insieme questo affascinante viaggio nel mondo dei plugin audio, dove la tecnologia incontra l’arte per dare vita a sonorità mai udite prima.

Cosa è Blue Cat’s Plug’n Script?

Blue Cat’s Plug’n Script è un plugin e un’applicazione scriptabile, ovvero mette a disposizione degli utenti tutti gli strumenti per sviluppare un plugin tramite l’applicazione stessa. Plug’n Script di Blue Cat, consente la programmazione di effetti audio custom o strumenti virtuali senza la necessità di immergersi in linguaggi di programmazione complessi. Basato su AngelScript, un linguaggio di scripting simile al C++, Plug’n Script rende accessibile a tutti lo sviluppo di plugin, combinando flessibilità e potenza.

Preparazione all’uso di Plug’n Script

Prima di iniziare a creare il tuo plugin, è essenziale familiarizzare con l’ambiente di sviluppo di Plug’n Script e soddisfare alcuni requisiti di base:

interfaccia grafica principale blue cat's plug'n script
Interfaccia grafica utente (GUI) di Plug’n Script

Una volta avviato Plug’n Script, ti troverai davanti un’interfaccia intuitiva che divide lo spazio di lavoro in diverse aree tra cui: l’editor di codice dove potrai scrivere e modificare il tuo script, e il pannello dei preset per trovare subito i tuoi plugin preferiti. È possibile testare gratuitamente tutte le potenzialità di Plug’n Script per la progettazione di plugin, sebbene nella demo il segnale audio in uscita non è continuativo a causa delle limitazioni imposte. Per un uso professionale è consigliato acquistare la licenza a pagamento.

Sviluppare un plugin audio di gain: Passo dopo passo

Quando si tratta di sviluppare un audio plugin utilizzando Blue Cat’s Plug’n Script, la maggior parte del lavoro viene fatta in AngelScript, un linguaggio di scripting flessibile e potente molto simile al C++ in termini di sintassi e funzionalità. Per iniziare, devi prima creare un nuovo script all’interno dell’ambiente Plug’n Script. Cliccando in alto al centro sul bottone “Default”, questo aprirà il pannello dei preset, i modelli di plugin predefiniti. Portiamo dunque il mouse su “Factory Presets” e facciamo click su “Default”.

passaggi per interagire con l'interfaccia grafica di plug'n script e creare un preset di base
Creare un preset di base in Plug’n Script

Fatto ciò ci verrà mostrato il template di base per sviluppare il nostro plugin, premiamo dunque l’icona a forma di matita in alto a sinistra (1) per aprire il menù di editing dello script.

pulsanti per modificare script dei plugin su plug'n script
Modificare lo script base

A questo punto salviamo il nostro script nella cartella che più preferiamo, fate click sul riquadro con su scritto “default.cxx” e selezionate “Save Script As…”.

Scegliete la cartella dove salvare il progetto e rinominate con un’estensione .cxx, in questo esempio chiameremo il nostro script my-gain.cxx

Premiamo adesso la seconda icona a forma di matita sulla destra (2) accanto alla voce “DSP Script”, verrà aperto così con l’editor di testo predefinito di Windows o Mac. Se voleste usare un editor di testo diverso, fate click sull’icona a forma di chiave inglese in alto a destra, accanto al titolo “Edition” e specificate il percorso dove è installato il vostro editor di testo preferito.

Implementazione del gain

Per creare un semplice gain dovremo implementare sul nostro script principale una funzione che modifichi l’ampiezza del segnale audio in entrata. Volendo fare qualche esempio, proviamo a definire uno pseudo-codice di cosa dovrà fare il nostro script.

float gain = 1.0; // Valore di gain iniziale

void ProcessBlock(Sample[] s) {
  for(int channel = 0; channel < inputChannels; channel++) {
     s[channel] *= gain; // Applica il gain al segnale audio
  }
}

Vediamo adesso di dare un’occhiata più da vicino al codice:

  • float gain = 1.0; In questa linea dichiariamo una variabile di gain iniziale. Modificandola potremo aumentare o diminuire l’effetto di gain.
  • ProcessBlock(Sample[] s): Questa è la funzione principale che elabora i campioni audio. Il parametro s rappresenta il campione audio che il plugin analizzerà durante l’utilizzo. Esso è un array la cui dimensione dipenderà dai canali in uso, quindi utilizzando su una mono avremo un vettore composto da un unico elemento s[0], mentre una traccia stereo avrà due canali, destro s[0] e sinistro s[1]
  • Il loop for itera attraverso ogni canale del campione che stiamo elaborando, applicando il valore di gain al segnale audio.

Similitudini con la programmazione in C

Il linguaggio AngelScript presenta molte similitudini con C, soprattutto nella sintassi. Le dichiarazioni di variabili, i controlli di flusso come cicli for e if, e la gestione delle funzioni sono molto simili. Questo rende il passaggio da C ad AngelScript relativamente semplice per i programmatori che hanno una base in linguaggi di programmazione tradizionali.

Utilizzando questo framework base, puoi iniziare a sperimentare con i tuo plugin, aggiungendo funzionalità come controlli dell’interfaccia utente per regolare il gain in tempo reale, o implementare algoritmi più complessi per la manipolazione del suono.

Integrare un’interfaccia grafica

Integrare un’interfaccia grafica con Plug’n Script può sembrare un compito arduo, ma, grazie alle librerie di base fornite diventa un processo sorprendentemente semplice e intuitivo. Queste librerie consentono di aggiungere e personalizzare elementi dell’UI, come knobs o sliders, con poche righe di codice, migliorando significativamente l’interazione dell’utente finale con il plugin.

Per dimostrare la facilità di aggiungere elementi UI in Plug’n Script, vediamo come creare un semplice knob per controllare il gain del nostro plugin di esempio.

Definizione del knob

Tutti gli elementi UI vengono gestiti da una speciale variabile globale denominata inputParameters che possiamo definire all’inizio del nostro script. Ci basterà definire il nome dell’elemento e l’unità di misura utilizzata, quindi nel nostro caso possiamo definire:

array<string> inputParametersNames={"Gain"};
array<string> inputParametersUnits={"dB"};

Se volessimo avere più di un elemento, ad esempio un knob per tagliare le frequenze basse (cutoff) ci basterà aggiungere una virgola dopo il primo elemento e continuare a scrivere:

array<string> inputParametersNames={"Gain", "Cutoff"};
array<string> inputParametersUnits={"dB", "Hz"};

Creazione dell’interfaccia grafica

Successivamente, passiamo a inserire il knob all’interno dell’interfaccia del plugin e a personalizzare il suo comportamento. Blue Cat’s Plug’n Script offre funzionalità che consentono di specificare queste proprietà direttamente nel codice, infatti per inserire il nostro knob ci basterà scrivere:

array<double> inputParameters(inputParametersNames.length)

Infine personalizziamo valori predefiniti come il limite massimo e minimo del rotore, o il valore di default:

array<double> inputParametersMin={-20};
array<double> inputParametersMax={20};
array<double> inputParametersDefault={0};

anche qui come nel caso di inputParametersNames o inputParametersUnits basterà aggiungere una virgola dopo il primo elemento e continuare a scrivere le informazioni di eventuali elementi grafici UI. In linea generale gli indici delle stringhe di testo tra apici corrispondono agli elementi grafici definiti in inputParametersNames.

Convertire un segnale da lineare in decibel

Nel capitolo “Implementazione del gain” abbiamo spiegato che ad ogni campione del segnale audio elaborato verrà applicato un valore di gain che dobbiamo calcolare. Non andremo nel dettaglio della teoria, dobbiamo comunque sapere che la loudness di un segnale può essere calcolate utilizzando la seguente formula:

loudness formula 1

Dove loudness è l’ampiezza del segnale espressa in decibel (dB), I corrisponde all’intensità in ingresso e Io all’intensità di riferimento del nostro sistema.

Il nostro obbiettivo è quello di calcolare l’intensità I gestendo quindi l’ampiezza del segnale dal knob che abbiamo creato. Per fare questo dobbiamo fare un pò di operazioni matematiche per semplificare la nostra funzione, trovando così la formula finale:

intensity by loudness formula

Dove loudness è il valore che imposteremo ruotando il knob, e Io è il nostro valore massimo di riferimento che abbiamo impostato nella variabile inputParametersMax ovvero 20.

intensity 20 by loudness formula

Andiamo dunque a scrivere la nostra funziona che ad ogni campione ricevuto ricalcola la variabile gain con un nuovo valore.

void updateInputParameters() {
     gain = pow(10,inputParameters[0]/20);
}

All’interno di Plug’n Script abbiamo una libreria di funzioni predefinite che ci vengono in soccorso per utilizzare rapidamente funzioni come la potenza. La funzione pow infatti è la funzione di potenza che ha come primo parametro la base (nel nostro caso 10), mentre il secondo è l’esponente della potenza (nel nostro caso inputParameters[0]/20).

Codice completo per un gain audio plugin

Il codice finale per creare un plugin VST di gain audio con Blue Cat’s Plug’n Script utilizza AngelScript, un linguaggio di scripting simile a C, offrendo una base solida per lo sviluppo di plugin personalizzati. Qui di seguito è presentato il codice completo seguito da una spiegazione dettagliata:

/*
 * Applica il guadagno selezionato (decibel) all'input audio.
*/
string name="Gain";
string description="gain (dB)";

/*
 * Definizione elementi e parametri UI
*/
array<string> inputParametersNames={"Gain"};
array<string> inputParametersUnits={"dB"};
array<double> inputParameters(inputParametersNames.length);
array<double> inputParametersMin={-20};
array<double> inputParametersMax={20};
array<double> inputParametersDefault={0};

/*
 * Definizione variabili interne
*/
double gain=0;

/*
 * funzione di elaborazione per campione
 * chiamata per ogni campione con valori dei parametri aggiornati.
*/
void processSample(array<double>& ioSample)
{
    for(uint channel=0;channel<audioInputsCount;channel++)
    {
        ioSample[channel]*=gain;
    }
}

/*
 * funzione che aggiorna i parametri interni dall'array inputParameters.
 * chiamata ad ogni campione prima del metodo processSample
*/
void updateInputParameters()
{
    gain=pow(10,inputParameters[0]/20);
}

Spiegazione del Codice

  1. Elementi e parametri UI: subito definiamo il nostro knob e lo implementiamo nell’array inputParameters. Questo vettore ci permetterà di accedere a tutti i valori impostati dall’utente.
  2. Variabili interne: il parametro gain è definito, permettendo agli utenti di manipolare il livello di gain direttamente dall’interfaccia utente. Questo parametro è descritto e configurato per utilizzare l’unità dB e la funzione di conversione da lineare a decibel.
  3. Processamento campioni audio: La funzione processSample è il cuore del plugin, dove il guadagno viene applicato ai campioni audio. Il fattore di guadagno è calcolato dalla conversione del valore in dB a un fattore lineare attraverso la funzione updateInputParameters.

Test e debug del tuo plugin audio

Plug’n Script può essere integrato direttamente sulla traccia della tua DAW, consentendo così di ascoltare in tempo reale gli effetti dei plugin creati, passaggio fondamentale per assicurarci che tutto funzioni come previsto. Infatti quando andremo a installare Plug’n Script potremo scegliere tra diversi formati: AAX, VST, VST3, AU o installare unicamente la versione standalone.

Una volta che il tuo plugin funzionerà correttamente senza presentare errori, è il momento di ottimizzarlo per raggiungere miglior performance. Questo potrebbe includere l’affinamento degli algoritmi utilizzati, la riduzione del consumo di CPU, o la pulizia del codice eliminando parti non necessarie. L’obiettivo è produrre un plugin che sia non solo funzionale ma anche efficiente e user-friendly.

Ricorda, il processo di test e debugging è iterativo. Potresti dover passare attraverso diversi cicli di perfezionamento per raggiungere il livello desiderato di qualità e funzionalità. Tuttavia, con pazienza e attenzione ai dettagli, puoi creare un plugin audio che soddisfi sia i tuoi standard che quelli del tuo pubblico.

Partecipa al corso online e impara a sviluppare plugin

Se sei interessato a questi ed altri argomenti non perdere l’occasione di partecipare al corso base di “Sviluppo di Plugin Audio”. L’obbiettivo del corso è fornire ai partecipanti le competenze necessarie per creare software audio innovativi, aprendo nuove strade nel loro percorso professionale e creativo. In quanto corso base, al suo completamento gli allievi sono in grado di sviluppare solamente alcune tipologie di plugin audio come gain, delay ed equalizzatori.

Il corso prevede un approccio pratico e teorico finalizzato a  sviluppare una solida comprensione dei principi fondamentali dell’audio digitale, incoraggiando al contempo l’innovazione e la creatività nella creazione di nuovi strumenti e applicazioni audio.

Attraverso una piattaforma interattiva offerta da Absonant, gli studenti potranno non solo acquisire competenze tecniche in programmazione di plugin audio, ma anche interagire in tempo reale e partecipare a sessioni di laboratorio virtuali.

Corso online

Corso offerto da

logo absonant roma black

centro di formazione audiovisiva e multimediale di Roma

Chi è Nils Lewin

Mi chiamo Nicola Bombaci alias Nils Lewin, sono un ingegnere informatico con la passione per la musica e l’audio. Durante la mia crescita professionale ho deciso di fondere questi due mondi apparentemente diversi tra loro.

Articoli simili

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Prendi il controllo della tua musica

Inserisci la tua e-mail per ricevere la lista con risorse/strumenti per controllare i tuoi ascolti online.

HIMUSICIAN

Prendi il controllo
della tua musica

Una community di talenti emergenti, alla ricerca di risposte e nuovi collaboratori. Connettiti per migliorare e far crescere la tua musica.

Iscriviti alla newsletter e riceverai: