This thesis will present the design and implementation of a virtual synthesizer called leoSynth, implemented with JUCE, a framework based on the C++ language which provides methods and libraries for processing digital audio signals and the implementation of the relative user interface (GUI - Graphic User Interface). Chapter 1 will explain the fundamental concepts underlying a digital audio plugin, general information on classical synthesis architectures and synthesis techniques. Particular attention will be devoted to subtractive synthesis, with the list of its main components and the illustration of notable historical examples. In particular, analog and digital oscillators will be explored, analyzing the aliasing problem and its solutions, as well as analog and digital filters, with a brief description of the fundamental architectures. Chapter 2 will illustrate the technologies used to carry out the project, as well as the reasons behind the architectural choices and programming languages adopted. The desired design of the leoSynth synthesizer will then be presented, comparing it with some examples of analog and digital synthesizers. In Chapter 3 the finished product will be presented, showing the interface, and explaining the implementation of the components used within the framework. The project structure will also be presented, the development workflow explained, and code examples provided. The concluding chapter will include links to audio tests and examples, references for finding the source code, and a working release of the leoSynth synthesizer. The performance will be analyzed, and possible future directions of the project will be explored, taking into account both the needs of the users and any performance limitations.

In questa tesi verrà presentata la progettazione e la realizzazione di un sintetizzatore virtuale leoSynth, realizzato con JUCE, un framework basato sul linguaggio C++ che fornisce metodi e librerie per l'elaborazione dei segnali audio digitali e la realizzazione della relativa interfaccia utente (GUI - Graphic User Interface). Nel Capitolo 1 saranno spiegati i concetti fondamentali alla base di un plugin audio digitale, le generalità sulle architetture classiche di sintesi e le tecniche di sintesi. Particolare attenzione sarà dedicata alla sintesi sottrattiva, con l'elenco delle sue componenti principali e l'illustrazione di esempi storici notevoli. In particolare, saranno approfonditi gli oscillatori analogici e digitali, analizzando il problema dell'aliasing e le relative soluzioni, nonché i filtri analogici e digitali, con una breve descrizione delle architetture fondamentali. Nel Capitolo 2 saranno illustrate le tecnologie utilizzate per realizzare il progetto, nonché le motivazioni alla base delle scelte architetturali e dei linguaggi di programmazione adottati. Sarà quindi presentato il design desiderato del sintetizzatore leoSynth, confrontandolo con alcuni esempi di sintetizzatori analogici e digitali. Nel Capitolo 3 sarà presentato il prodotto finito, mostrando l'interfaccia e spiegando l'implementazione dei componenti utilizzati all'interno del framework. Sarà inoltre presentata la struttura del progetto, spiegato il workflow di sviluppo e forniti esempi di codice. Nel Capitolo conclusivo saranno inclusi collegamenti a test ed esempi audio, riferimenti per reperire il codice sorgente e una release funzionante del sintetizzatore leoSynth. Saranno analizzate le prestazioni e saranno esplorate le possibili direzioni future del progetto, tenendo conto sia delle necessità degli utenti, sia delle eventuali limitazioni prestazionali.

Progetto di un sintetizzatore virtuale in C++ su piattaforma JUCE

MANNINI, LEONARDO
2022/2023

Abstract

This thesis will present the design and implementation of a virtual synthesizer called leoSynth, implemented with JUCE, a framework based on the C++ language which provides methods and libraries for processing digital audio signals and the implementation of the relative user interface (GUI - Graphic User Interface). Chapter 1 will explain the fundamental concepts underlying a digital audio plugin, general information on classical synthesis architectures and synthesis techniques. Particular attention will be devoted to subtractive synthesis, with the list of its main components and the illustration of notable historical examples. In particular, analog and digital oscillators will be explored, analyzing the aliasing problem and its solutions, as well as analog and digital filters, with a brief description of the fundamental architectures. Chapter 2 will illustrate the technologies used to carry out the project, as well as the reasons behind the architectural choices and programming languages adopted. The desired design of the leoSynth synthesizer will then be presented, comparing it with some examples of analog and digital synthesizers. In Chapter 3 the finished product will be presented, showing the interface, and explaining the implementation of the components used within the framework. The project structure will also be presented, the development workflow explained, and code examples provided. The concluding chapter will include links to audio tests and examples, references for finding the source code, and a working release of the leoSynth synthesizer. The performance will be analyzed, and possible future directions of the project will be explored, taking into account both the needs of the users and any performance limitations.
2022
2023-07-20
Development of a virtual synthesizer in C++ on the JUCE framework
In questa tesi verrà presentata la progettazione e la realizzazione di un sintetizzatore virtuale leoSynth, realizzato con JUCE, un framework basato sul linguaggio C++ che fornisce metodi e librerie per l'elaborazione dei segnali audio digitali e la realizzazione della relativa interfaccia utente (GUI - Graphic User Interface). Nel Capitolo 1 saranno spiegati i concetti fondamentali alla base di un plugin audio digitale, le generalità sulle architetture classiche di sintesi e le tecniche di sintesi. Particolare attenzione sarà dedicata alla sintesi sottrattiva, con l'elenco delle sue componenti principali e l'illustrazione di esempi storici notevoli. In particolare, saranno approfonditi gli oscillatori analogici e digitali, analizzando il problema dell'aliasing e le relative soluzioni, nonché i filtri analogici e digitali, con una breve descrizione delle architetture fondamentali. Nel Capitolo 2 saranno illustrate le tecnologie utilizzate per realizzare il progetto, nonché le motivazioni alla base delle scelte architetturali e dei linguaggi di programmazione adottati. Sarà quindi presentato il design desiderato del sintetizzatore leoSynth, confrontandolo con alcuni esempi di sintetizzatori analogici e digitali. Nel Capitolo 3 sarà presentato il prodotto finito, mostrando l'interfaccia e spiegando l'implementazione dei componenti utilizzati all'interno del framework. Sarà inoltre presentata la struttura del progetto, spiegato il workflow di sviluppo e forniti esempi di codice. Nel Capitolo conclusivo saranno inclusi collegamenti a test ed esempi audio, riferimenti per reperire il codice sorgente e una release funzionante del sintetizzatore leoSynth. Saranno analizzate le prestazioni e saranno esplorate le possibili direzioni future del progetto, tenendo conto sia delle necessità degli utenti, sia delle eventuali limitazioni prestazionali.
File in questo prodotto:
File Dimensione Formato  
tesi.pdf

accesso aperto

Dimensione 6.66 MB
Formato Adobe PDF
6.66 MB Adobe PDF Visualizza/Apri

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.12075/14053