Muutke küpsiste eelistusi

Developing Virtual Synthesizers with VCV Rack [Pehme köide]

  • Formaat: Paperback / softback, 286 pages, kõrgus x laius: 235x191 mm, kaal: 494 g, 10 Tables, black and white; 72 Line drawings, black and white; 101 Halftones, black and white; 173 Illustrations, black and white
  • Ilmumisaeg: 06-Feb-2020
  • Kirjastus: CRC Press
  • ISBN-10: 0367077736
  • ISBN-13: 9780367077730
Teised raamatud teemal:
  • Formaat: Paperback / softback, 286 pages, kõrgus x laius: 235x191 mm, kaal: 494 g, 10 Tables, black and white; 72 Line drawings, black and white; 101 Halftones, black and white; 173 Illustrations, black and white
  • Ilmumisaeg: 06-Feb-2020
  • Kirjastus: CRC Press
  • ISBN-10: 0367077736
  • ISBN-13: 9780367077730
Teised raamatud teemal:

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.

Arvustused

"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 foundational 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

Preface x
Acknowledgments xiii
Chapter 1 Modular Synthesis: Theory
1(15)
1.1 Why Modular Synthesis?
1(1)
1.2 An Historical Perspective
2(6)
1.2.1 The Early Electronic and Electroacoustic Music Studios
2(2)
1.2.2 The Birth and Evolution of Modular Synthesizers
4(2)
1.2.3 The Advent of a Standard
6(1)
1.2.4 The Software Shift
7(1)
1.3 Modular Synthesis Basics
8(8)
1.3.1 Sound Sources
8(2)
1.3.2 Timbre Modification and Spectral Processing
10(2)
1.3.3 Envelope, Dynamics, Articulation
12(1)
1.3.4 "Fire at Will," or in Short: Sequencers
13(2)
1.3.5 Utility Modules
15(1)
Chapter 2 Elements of Signal Processing for Synthesis
16(58)
2.1 Continuous-Time Signals
16(2)
2.2 Discrete-Time Signals
18(4)
2.3 Discrete-Time Systems
22(5)
2.4 The Frequency Domain
27(11)
2.4.1 Discrete Fourier Series
29(3)
2.4.2 Discrete Fourier Transform
32(3)
2.4.3 Properties of the Discrete Fourier Transform
35(1)
2.4.4 Again on LTI Systems: The Frequency Response
36(1)
2.4.5 Computational Complexity and the Fast Fourier Transform
36(1)
2.4.6 Short-Time Fourier Transform
37(1)
2.5 Once Again on LTI Systems: Filters
38(2)
2.6 Special LTI Systems: Discrete-Time Differentiator and Integrator
40(2)
2.7 Analog to Digital and Back
42(4)
2.8 Spectral Content of Typical Oscillator Waveforms
46(3)
2.9 Understanding Aliasing
49(3)
2.10 Filters: The Practical Side
52(2)
2.11 Nonlinear Processing
54(9)
2.11.1 Waveshaping
54(4)
2.11.2 Amplitude and Ring Modulation
58(2)
2.11.3 Frequency Modulation
60(3)
2.12 Random Signals
63(6)
2.13 Numerical Issues and Hints on Coding
69(2)
2.14 Concluding Remarks
71(3)
Chapter 3 VCV Rack Basics
74(17)
3.1 Overview of the System
75(1)
3.2 Anatomy of a Module
76(1)
3.3 Context Menus
77(1)
3.4 Core Modules
78(2)
3.4.1 AUDIO-8 and AUDIO-16
78(1)
3.4.2 MIDI-CV
78(1)
3.4.3 MIDI-CC
79(1)
3.4.4 MIDI-GATE
80(1)
3.4.5 MIDI-MAP
80(1)
3.4.6 CV-MIDI, CV-CC, CV-GATE
80(1)
3.5 Fundamental Modules
80(3)
3.6 Quick Patches
83(8)
3.6.1 Audio and MIDI Routing
83(1)
3.6.2 East Coast Synthesis in One Minute
84(1)
3.6.3 Using the SCOPE
85(3)
3.6.4 Observing Aliasing
88(1)
3.6.5 Using Polyphonic Cables
88(3)
Chapter 4 Developing with VCV Rack
91(19)
4.1 Comparison with Other Platforms
92(4)
4.1.1 Audio Processing
92(2)
4.1.2 Scheduling
94(1)
4.1.3 Polyphonic Cables
95(1)
4.1.4 Expander Modules
95(1)
4.1.5 Simplicity and Object-Oriented Programming
95(1)
4.2 Plugins: Files and Directories
96(1)
4.3 Plugins: Software Components
97(2)
4.4 Setting Up Your System for Coding
99(3)
4.4.1 Linux
99(1)
4.4.2 Windows
100(1)
4.4.3 macOS
100(1)
4.4.4 Building VCV Rack from Sources
100(2)
4.5 Building Your First "Hello World" Module
102(4)
4.5.1 Build and Run
102(1)
4.5.2 Structure of the Source Files
102(4)
4.6 Adopting an IDE for Development: Eclipse
106(4)
4.6.1 Importing a "Makefile Project"
107(1)
4.6.2 Building the Project Inside Eclipse
108(2)
Chapter 5 The Graphical User Interface: A Quick Introduction
110(9)
5.1 Generating SVG Files with Inkscape
110(3)
5.1.1 Creating the Panel and the Background
111(1)
5.1.2 Creating the Panel and the Background
112(1)
5.2 Base Widget Objects for Knobs, Ports and Switches
113(6)
5.2.1 Automatically Placing Components
115(4)
Chapter 6 Let's Start Programming: The Easy Ones
119(29)
6.1 Creating a New Plugin from Scratch, Using the Helper Script
119(1)
6.2 Comparator Module
120(5)
6.3 Muxing and Demuxing
125(4)
6.4 Knobs: Displaying, Mapping, and Computing Their Values
129(2)
6.5 Clock Generator
131(6)
6.6 Sequencer Module
137(3)
6.7 Binary Frequency Divider
140(3)
6.8 Random Module
143(4)
6.9 To Recap: Exercise Patches
147(1)
6.9.1 Creating a Bernoulli Distribution and Bernoulli Gate
147(1)
6.9.2 Polyrhythms
147(1)
Chapter 7 Getting Serious: DSP "Classroom" Modules
148(27)
7.1 Handling Polyphony Properly
148(2)
7.2 Linear Envelope Generator
150(3)
7.3 Exponential Envelope Generator
153(5)
7.3.1 A Virtual Analog RC Filter
154(1)
7.3.2 Implementation of the Exponential Envelope Generator
155(3)
7.4 Envelope Follower
158(7)
7.4.1 Modelling a Diode Envelope Follower
159(4)
7.4.2 Implementation of the Envelope Follower
163(2)
7.5 Multimode State-Variable Filter
165(6)
7.5.1 A Discrete-Time Model of the Multimode State-Variable Filter
165(3)
7.5.2 Implementation of the State-Variable Filter
168(3)
7.6 Polyphonic Filter
171(4)
7.6.1 To Recap: Exercise with Patches
173(1)
7.6.1.1 Simple Snare Sound Generation
174(1)
7.6.1.2 Auto-Wah Effect
174(1)
7.6.1.3 Creating a Step Filter
174(1)
7.6.1.4 The Chemist's Lab, Aka Polyphonic Noise Filters
174(1)
Chapter 8 Crunching Numbers: Advanced DSP Modules
175(42)
8.1 Modal Synthesis
175(9)
8.1.1 Modal Synthesis Principles
176(1)
8.1.2 A State-Variable Filter Bank
177(1)
8.1.3 The "Modal" Module
177(3)
8.1.4 Adding Context Menu Options
180(3)
8.1.5 Computational Cost
183(1)
8.2 Virtual Analog Oscillator with Limited Aliasing
184(22)
8.2.1 Trivial Oscillators
184(2)
8.2.2 Oversampling: The Easy Solution
186(2)
8.2.3 Implementing a Trivial Oscillator with Oversampling
188(4)
8.2.4 Differentiated Parabolic Waveform and Its Extensions
192(4)
8.2.5 Differentiated Parabolic Waveform Implementation
196(7)
8.2.6 Computational Cost and Aliasing
203(1)
8.2.7 Polyphonic Oscillator Module
204(2)
8.3 Wavefolding
206(8)
8.3.1 Trivial Foldback Algorithm
208(1)
8.3.2 Antiderivative Anti-Aliasing Method
208(2)
8.3.3 Wavefolder Module Implementation
210(4)
8.4 To Recap: Exercise with Patches
214(3)
8.4.1 A Modal Synthesis Patch
214(1)
8.4.2 East Coast Classic
214(1)
8.4.3 West Coast Mono Voice
215(1)
8.4.4 Juntti Waveshaper
215(2)
Chapter 9 The Graphical User Interface: Creating Custom Widgets
217(16)
9.1 The Rendering Library: NanoVG
217(1)
9.2 Custom Widgets Creation
218(7)
9.2.1 Custom Knobs and Buttons
219(3)
9.2.2 Drawing Text
222(3)
9.3 An Interactive Widget
225(8)
Chapter 10 Additional Topics
233(28)
10.1 Debugging the Code
233(8)
10.1.1 Running a Debug Session
234(2)
10.1.2 Debugging a Segmentation Fault
236(1)
10.1.3 Development Mode
237(1)
10.1.4 Debugging with the Eclipse IDE
237(2)
10.1.5 Other Debugging Methods
239(2)
10.2 Optimization
241(6)
10.2.1 Table Lookup for Transcendental Functions
242(3)
10.2.2 Sine Approximation by Table Lookup
245(1)
10.2.3 Quadratic Approximation of Sine
245(1)
10.2.4 The Chamberlin Resonator as a Sine Oscillator
246(1)
10.2.5 Reducing the GUI Processing Burden
247(1)
10.3 Developing Expander Modules
247(3)
10.4 Adding Factory Presets
250(1)
10.5 Storing and Recalling Module Information through JSON
251(5)
10.5.1 Storing and Recalling JSON Data for AModalGUI
253(3)
10.6 Versioning the Code and Managing a Git Repository
256(2)
10.7 Getting into the Third-Party Plugin List
258(1)
10.8 Making a Revenue out of Coding
259(2)
10.8.1 The VCV Store
259(1)
10.8.2 Donations
259(1)
10.8.3 Blank Panels
260(1)
Chapter 11 After Reading This Book
261(5)
11.1 Forking the ABC Collection
261(1)
11.2 Learn More about Virtual Analog Algorithms
262(1)
11.3 Experiment with Novel Digital Algorithms
262(1)
11.4 Build a Hybrid Hardware/Software Modular Rack
263(3)
Bibliography 266(4)
Index 270
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.