Fai Login o Registrati per scaricare i media e creare liste
Copertina
Suggerisci modifica o segnala un errore

Sviluppo Di Un Plugin Instrument Di Batterie Acustiche In Formato Vst/au/aax

Comune di Tula,

DESCRIZIONE

Negli ultimi anni la tecnologia ha portato grossi cambiamenti nel campo musicale, creando nuovi modi di interegire con la musica e con il suono in generale. Gli strumenti virtuali in particolare, hanno permesso a musicisti e non di poter utilizzare i suoni di praticamente qualsiasi strumento, e perciò si sono diffusi ampiamente a livello commerciale. Con questi presupposti l'elaborato descrive il tirocinio svolto presso Chocholate Audio di Simone Coen, azienda che si occupa della realizzazione di librerie di suoni digitali (sample libraries) e strumenti virtuali in grado di riprodurre questi suoni. Uno strumento virtuale è un sintetizzatore digitale che riproduce dei suoni salvati appunto in una libreria apposita. Queste librerie possono essere molto onerose in termini di spazio se si vogliono cogliere tutti gli aspetti timbrici di uno strumento reale, e questa è la tendenza attuale del mercato. Chocolate Audio sviluppa principalmente strumenti per Kontakt, un campionatore che permette di programmare il proprio strumento virtuale tramite un linguaggio script proprietario, che agisce su un motore interno. Questo motore non può essere modificato per cui bisogna addattarsi ad esso, con gli eventuali limiti del caso. Per questo l'azienda ha espresso l'esigenza di sviluppare uno strumento che emula una batteria acustica con un motore completamente proprietario. Le registrazioni audio della libreria erano già state fatte a monte. Il tirocinio, iniziato a ottobre 2018 e durato circa 4 mesi, ha coinvolto in gran parte la stesura del codice base del motore e in minima parte l'interfaccia grafica del programma, come deciso durante lo studio di fattibilità fatto in partenza; la GUI presenta infatti solo i comandi di base. La scelta del mezzo per lo sviluppo è ricaduta su JUCE, un framework multipiattaforma parzialmente opensource e molto usato nello sviluppo di plugin audio (un plugin è un software che funziona all'interno di un altro programma detto host, espandendone le funzionalità). Il programma in questione è stato pensato proprio come plugin e sono stati scelti 3 formati di esportazione: VST, lo standard per i plugin audio, sviluppato da Steinberg; AU, formato proprietario di Apple; AAX, formato proprietario di Avid. Per esportare i suddetti formati sono necessari i rispettivi SDK, che nel caso di VST2 sono stati recentemente deprecati da Steinberg, lasciando solo quelli relativi a VST3. Fortunatamente per questo progetto gli SDK necessari sono stati scaricati appena in tempo. Le tecnologie coinvolte nel tirocinio sono state principalmente C++ e MIDI. C++ è un potente linguaggio largamente utilizzato in tutti i campi e particolarmente adatto per progetti di grosse dimensioni. Esso lascia un'ampia libertà d'azione al programmatore consentendo molteplici utilizzi. JUCE è scritto con questo linguaggio e mette a disposizione una serie di librerie contenenti classi e metodi per la gestione di tutti gli aspetti di un software audio, in modo da velocizzare il processo di sviluppo. L'host si interfaccia con il plugin raccogliendo i campioni che esso mette su un buffer apposito e mandandoli alla scheda audio per farli riprodurre dagli speaker sotto forma di suono analogico. Altre informazioni di tipo binario sono inviate dall'host al plugin per descrivere le operazioni che quest'ultimo deve effettuare, come suonare una certa nota in un certo istante. Queste informazioni passano tramite un interfaccia detta MIDI, tecnologia sviluppata negli anni ottanta ma ancora performante e con un ruolo di primo piano nel mercato. I dispositivi MIDI utilizzano per la comunicazione dei messaggi molto leggeri grazie ai quali è possibile suonare in real-time, senza che i ritardi di elaborazione vengano percepiti. Nel contesto del plugin oggetto dell'elaborato, gli unici due messaggi MIDI coinvolti sono quello di Note On, mandato quando si vuole suonare una nota, e Note Off, inviato quando la si vuole interrompere. I messaggi contengono il numero della nota e l'intensità con la quale è stata suonata, detta velocity. In JUCE sono presenti tra le altre anche classi per la gestione delle informazioni MIDI. Inoltre esso mette a disposizione utili strumenti come la possibilità di esportare il progetto sull'IDE di riferimento (Visual Studio in questo caso), e AudioPluginHost attraverso il quale si può simulare un host. Il plugin sviluppato prende il nome di Drum Sampler, ed è appunto un campionatore di batteria che utilizza dei synth per riprodurre i suoni della libreria. Un synth ha 10 voci ognuna delle quali può riprodurre un suono, per cui nella classe del suono viene attuato il caricamento dei file in memoria attraverso un thread dedicato, mentre nella classe della voce avviene il rendering dei blocchi di campioni presi dai file. Ogni suono viene assegnato ad un range di velocity, in modo da simulare in maniera più realistica il comportamento dello strumento reale. Invece che associare ad una nota un singolo suono e moltiplicarne il volume per la velocity (come fanno i campionatori più basici), il plugin divide la velocity in 8 range ad ognuno dei quali fa corrispondere un diverso suono. Il volume del suono viene modulato a monte durante l'esecuzione con lo strumento reale. Il processore audio/MIDI all'esecuzione crea due synth rappresentanti i primi due canali del mixer. Ogni synth inizializza le sue voci e i suoi suoni, di conseguenza per quanto detto prima si avranno 16 suoni in tutto, 8 per canale. I messaggi MIDI vengono passati ai synth e solo i Note On vengono intercettati; saranno usati per far partire il corretto suono in base alla nota di riferimento e la velocity ricevute. I Note Off vengono ignorati vista la natura dei suoni, che hanno beve durata e devono essere riprodotti nella loro interezza. Nella stessa chiamata il processore passa anche un riferimento al buffer di uscita da mandare all'host, che viene riempito da ogni synth. Dopodichè gli applica un guadagno in base ai parametri corrispondenti, ad esempio il Master Level. I parametri implementati sono: Level, Pan e Mute per il Master, mentre per i canali oltre a questi vi sono anche i parametri di Solo, Coarse tuning e Fine tuning (per la modifica del pitch dei suoni). Per fornire ai synth la nota di riferimento è stata sviluppata una funzione di MIDI Learn, innescata tramite appositi pulsanti nella GUI. Quando un pulsante relativo ad un canale viene premuto, il plugin si mette in attesa di input: al primo Note On ricevuto, la nota al suo interno viene assegnata al synth corrispondente al pulsante. Così da quel momento il synth suonerà solamente alla ricezione di quella nota, la quale può essere cambiata a piacimento. Inizialmente si manifestavano disturbi impulsivi nella riproduzione poichè vi era una sola voce addetta a riprodurre i suoni, e ciò ha portato ad aggiungerne altre. Attualmente le voci hanno un comportamento anomalo che permette solo alle prime due voci di alternarsi nella riproduzione, a quanto si evince dai test effettuati. Inoltre la gestione dei volumi nei synth è da rivedere, poichè un livello che viene modificato su di un canale del mixer (compreso il muto) viene applicato a tutti i canali precedenti, e ciò a causa di come è impostato il ciclo che applica i rispettivi guadagni ai synth. Una possibile soluzione può essere quella di creare un buffer temporaneo per ognuno di essi e al quale applicare il rispettivo parametro; in seguito il buffer verrebbe aggiunto a quello generale per essere riprodotto. I restanti parametri sono stati testati con successo, compreso il tuning, non ancora inserito nell’interfaccia grafica, il quale è stato testato tramite l’anteprima ed il risultato è stato positivo per entrambi i parametri. Coarse può modificare l’altezza del suono portandolo fino a 3 ottave in alto o altrettante in basso, mentre Fine sposta la nota fissata da Corse di massimo un semitono sopra o sotto. Durante la progettazione iniziale il tempo richiesto per il raggiungimento di un programma completo e aderente alle specifiche è stato stimato ad un anno, infatti ancora sono molti gli aspetti che vanno affrontati. Per il tempo minimo previsto dal tirocinio dunque, si può affermare che i risultati raggiunti siano piuttosto soddisfacenti. Per quanto riguarda l’azienda, che puntava allo sviluppo di un motore proprietario, la direzione intrapresa si è rivelata quella corretta e perciò motivo di crescita. Per il tirocinante invece, il lavoro svolto è stato fortemente formativo e motivante, sia dal punto di vista professionale che umano, per cui il giudizio sull’esperienza è senza dubbio positivo.

DETTAGLI

LINGUA : italiano
LICENZA : CC-BY-NC-ND
TAG : tag: plugin instrument di batterie acustiche in formato vst/au/aax , strumenti virtuali , sintetizzatori digitali , tesi di laurea in informatica musicale
LIVELLO SCOLASTICO: Università