- Book author
- Leonardo Gabrielli
Developing Virtual Synthesizers with VCV Rack
Developing Virtual Synthesizers with VCV Rack takes the reader step by step through the process of developing synthesizer modules, beginning with the elementary and leading up to more engaging examples. Using the intuitive VCV Rack and its open-source C++ API, this book will guide even the most inexperienced reader to master efficient DSP coding to create oscillators, filters, and complex modules.
Examining practical topics related to releasing plugins and managing complex graphical user interaction, with an intuitive study of signal processing theory specifically tailored for sound synthesis and virtual analog, this book covers everything from theory to practice. With exercises and example patches in each chapter, the reader will build a library of synthesizer modules that they can modify and expand.
Supplemented by a companion website, this book is recommended reading for undergraduate and postgraduate students of audio engineering, music technology, computer science, electronics, and related courses; audio coding and do-it-yourself enthusiasts; and professionals looking for a quick guide to VCV Rack. VCV Rack is a free and open-source software available online.
Leonardo Gabrielli, PhD, is a research fellow at the Department of Information Engineering, Università Politecnica delle Marche, Italy, where he lectures on music production and conducts research on physical modeling and deep neural audio processing. He collaborates with the music industry as a DSP developer and he is scientific director of Acusmatiq MATME.
Developing Virtual Synthesizers with VCV Rack is a great read; an informative read; an inspiring read; an empowering read; an essential read! This fantastic textbook and comprehensive set of applied audio coding tutorials by Gabrielli will become the basis of many college courses and foun- dational courses of study for every electronic musician interested in knowing how things work under the hood. With that knowledge and understanding, they can code their own software synthesizers and DSP modules in VCV Virtual Eurorack format.
Dr. Richard Boulanger, Professor of Electronic Production and Design, Berklee College of Music If, like me, you enjoy creating your own music tools, this book will help you bring your ideas to life inside the wonderful world of VCV Rack.
Whether you are a beginner or an expert in DSP, you will learn something interesting or new.
Dr. Leonardo Laguna Ruiz, Vult DSP
In September 2017, a new open-source software project was released in the wild of the Internet, starting from a few hundred lines of source code written by a talented developer. A couple of months later, thousands of passionate musicians and developers were eagerly following its quick growth. With a user base of tens of thousands, VCV Rack is now one of the trendiest platforms for modular software synthesis, and it is particularly appealing for its open-source codebase and ease of use.
In October 2017, I was more than happily having fun out in the sun during the weekends, trying to soak up the last sun of the trailing summer. My teaching and R&D activities were already quite engaging and kept me more than busy. However, after a glimpse at its source code, I was instantly aware of the potential of this platform: VCV Rack was the first platform ever that would really allow coders, even self-taught ones, to build sounding objects at ease. The modern and swift way of programming a plugin allows almost anyone with some coding background to create their own modules. The sample-wise processing architecture allows students to focus on signal processing experiments rather than spending time debugging cumbersome buffering mechanisms or learning complex application programming interfaces (APIs). As a teaching tool, it allows students to learn real-world coding instead of plugging graphical blocks or writing scripts in scientific computing platforms. As a prototyping tool, it also allows developers to test DSP code quickly before adapting it to their own framework and delivering it.
I was really tempted to help spread the use of this platform and write a teaching resource for students and enthusiasts. Encouraged by good friends and synthesizer experts, I got into this adventure that eventually demanded quite a lot of my time. I hope this resource will prove useful for beginners and students, allowing them a quick bootstrap into the world of virtual synthesizers, sound synthesis, and digital signal processing (DSP), and I really believe that Rack has the potential to serve as a great didactical tool in sound and music engineering teaching programmes.
Finally, I humbly apologize for mistakes or shortcomings that may still be present in the book. The preparation of this manuscript required a lot of effort to track the swift software changes occurring in the beta versions, before Rack v1 would freeze, and to release a timely resource in this liquid world required me to go straight to the point and prepare a compact book that could serve as a primer, an appetizer, or a quick guide, depending on the reader’s needs. Arranging the contents was not an easy task either. Writing the theoretical section required a lot of trade-offs to adapt to heterogeneous readers. I hope that my take on DSP and the selection of modules will make most of the readers happy.
This book is meant as a guide to get people with some object-oriented programming basics into the development of synthesizers. Some DSP theory is covered, specifically tailored for sound synthesis and virtual analog, sufficiently intuitive and suitable for readers not coming from a technical background (some high school math is required, though). There are many books covering sound synthesis and DSP for audio, with examples using scientific programming languages, quick to use, but far from a real-world implementation. Two books published by Focal Press provide a thorough guide for the development of audio effects and synthesizer plugins in C++. I regard my book as the perfect starting point. It covers the foundations of digital musical instruments development and prototyping, gets the reader involved with sound synthesis, and provides some theory in an intuitive way. It is also an important resource to quickly learn how to build plugins with VCV Rack and get into its specificities. After this, one could move to more complex platforms such as the VST/AU software development kits (SDKs) or get involved with more theoretical studies. The book is also an important resource to quickly learn how to build plugins with VCV Rack and get into its specificities.
The VCV Rack API is very simple, and it only takes a few minutes to create a module from scratch. Unlike other commercial SDKs, you will not lose your focus from what’s important: learn the DSP foundations, improve the sound quality of your algorithms, and make the user experience immediate. You will get experienced with algorithms and be able to prototype novel modules very easily. The API is general enough to allow you get your code to other platforms if you wish. But if you want to get some revenue from your coding, there is no need to shift to other commercial SDKs, as the VCV Rack plugin store has numerous options for selling your products. Experienced developers will thus find sections related to the release of commercial plugins.
Reading the book
The guide will provide some basic math and will stimulate intuition to help the reader develop an understanding of the DSP theory that is the common ground to all digital audio algorithms. Most of the theory will be covered in Chapter 2, after a first introduction to modular synthesizers, covered in Chapter 1.
A step-by-step guide to compiling the software and building very simple plugins is provided in the following chapters. We raise the bar, progressively, by introducing selected foundational concepts of synthesizers, virtual analog, and DSP. These will not be presented in an orthodox, academic way, but in a more intuitive way, to facilitate comprehension to any reader, especially the novice ones.
A prerequisite for following the book is that the reader knows a bit about object-oriented programming (OOP) in C++ or similar languages. For readers coming from coding experiences with Arduino and such, the mind framework must be adjusted from sequential coding to OOP. Readers with a background in C and experience with platforms such as Csound and Pure Data will find this platform easier to work with. I suggest to all readers wishing to improve their coding skills to avoid copy-pasting snippets of code, but rather get a good C++ text to refine one’s skills with OOP and C++. The learning curve is steeper, but in the long run you will be rewarded. The best professionals are those who seriously spent time on studying, and the world is full of copy-pasters anyway.
Chapters 3 and 4 discuss the platform and how to start building Rack and its plugins. Chapter 5 provides a first introduction to the design of the graphical user interface for Rack modules, while later in Chapter 9 more advanced concepts are provided. Chapters 6, 7, and 8 introduce readers to the development of plugins by proposing several examples of increasing mathematical complexity. Finally, Chapter 10 deals with a few extra topics of general interest regarding the development process, how to get into the third-party plugin list, and how to make some money out of your modules. A final chapter will suggest some ideas for further reading and new projects.
This book details the development of several synthesizer modules. These are collected in a Rack plugin called ABC, available online at www.leonardo-gabrielli.info/vcv-book. Each module is meant to teach something new about Rack and its API; look out for the tips, indicated by a light bulb icon. The theoretical section has been enriched with boxes where some intuitive hints are given and mappings between theory and practice are drawn to improve readability and stimulate the reader. As an engineering student, I always made myself mappings between theoretical concepts and audio systems; this helped me a lot to remember, understand and have fun. Exercises are also available, proposing little challenges to start working autonomously. Some of the online modules include solutions for the exercises, highlighted using C preprocessor macros.
The ABC modules are designed to be simple to avoid confusing the reader with extra functionalities. They are not fitted with lots of bells and whistles, and they are not meant to be the best in their category; they are just meant to get you straight to the point and gain an extra piece of information each time. The plugin store is full of great plugins, and it is up to you to challenge other developers and come up with even better ones. For this reason, all ABC plugins humbly start with an “A.” I describe a sequencer “ASequencer,” a clock “AClock,” and so forth. Maybe you will be the one to develop “the” sequencer and “the” clock that anybody will use in the Rack community! Have fun!
<noindex><nofollow><iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=US&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=soundmain-20&language=en_US&marketplace=amazon®ion=US&placement=0367077736&asins=0367077736&linkId=8e0e9e7d385f2adfaa9f1ad71a1a0d40&show_border=true&link_opens_in_new_window=true"></iframe><iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=US&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=soundmain-20&language=en_US&marketplace=amazon®ion=US&placement=0367077744&asins=0367077744&linkId=ec49238667d5673891d79984a2f84876&show_border=true&link_opens_in_new_window=true"></iframe></nofollow></noindex>