Contents

Preface

Acknowledgments

Chapter 1:    Modular Synthesis: Theory

1.1    Why Modular Synthesis?

1.2    An Historical Perspective

1.2.1    The Early Electronic and Electroacoustic Music Studios

1.2.2    The Birth and Evolution of Modular Synthesizers

1.2.3    The Advent of a Standard

1.2.4    The Software Shift

1.3    Modular Synthesis Basics

1.3.1    Sound Sources

1.3.2    Timbre Modification and Spectral Processing

1.3.3    Envelope, Dynamics, Articulation

1.3.4    “Fire at Will,” or in Short: Sequencers

1.3.5    Utility Modules

Chapter 2:    Elements of Signal Processing for Synthesis

2.1    Continuous-Time Signals

2.2    Discrete-Time Signals

2.3    Discrete-Time Systems

2.4    The Frequency Domain

2.4.1    Discrete Fourier Series

2.4.2    Discrete Fourier Transform

2.4.3    Properties of the Discrete Fourier Transform

2.4.4    Again on LTI Systems: The Frequency Response

2.4.5    Computational Complexity and the Fast Fourier Transform

2.4.6    Short-Time Fourier Transform

2.5    Once Again on LTI Systems: Filters

2.6    Special LTI Systems: Discrete-Time Differentiator and Integrator

2.7    Analog to Digital and Back

2.8    Spectral Content of Typical Oscillator Waveforms

2.9    Understanding Aliasing

2.10  Filters: The Practical Side

2.11  Nonlinear Processing

2.11.1  Waveshaping

2.11.2  Amplitude and Ring Modulation

2.11.3  Frequency Modulation

2.12  Random Signals

2.13  Numerical Issues and Hints on Coding

2.14  Concluding Remarks

Chapter 3:    VCV Rack Basics

3.1    Overview of the System

3.2    Anatomy of a Module

3.3    Context Menus

3.4    Core Modules

3.4.1    AUDIO-8 and AUDIO-16

3.4.2    MIDI-CV

3.4.3    MIDI-CC

3.4.4    MIDI-GATE

3.4.5    MIDI-MAP

3.4.6    CV-MIDI, CV-CC, CV-GATE

3.5    Fundamental Modules

3.6    Quick Patches

3.6.1    Audio and MIDI Routing

3.6.2    East Coast Synthesis in One Minute

3.6.3    Using the SCOPE

3.6.4    Observing Aliasing

3.6.5    Using Polyphonic Cables

Chapter 4:    Developing with VCV Rack

4.1    Comparison with Other Platforms

4.1.1    Audio Processing

4.1.2    Scheduling

4.1.3    Polyphonic Cables

4.1.4    Expander Modules

4.1.5    Simplicity and Object-Oriented Programming

4.2    Plugins: Files and Directories

4.3    Plugins: Software Components

4.4    Setting Up Your System for Coding

4.4.1    Linux

4.4.2    Windows

4.4.3    macOS

4.4.4    Building VCV Rack from Sources

4.5    Building Your First “Hello World” Module

4.5.1    Build and Run

4.5.2    Structure of the Source Files

4.6    Adopting an IDE for Development: Eclipse

4.6.1    Importing a “Makefile Project”

4.6.2    Building the Project Inside Eclipse

Chapter 5:    The Graphical User Interface: A Quick Introduction

5.1    Generating SVG Files with Inkscape

5.1.1    Creating the Panel and the Background

5.1.2    Creating the Panel and the Background

5.2    Base Widget Objects for Knobs, Ports and Switches

5.2.1    Automatically Placing Components

Chapter 6:    Let’s Start Programming: The Easy Ones

6.1    Creating a New Plugin from Scratch, Using the Helper Script

6.2    Comparator Module

6.3    Muxing and Demuxing

6.4    Knobs: Displaying, Mapping, and Computing Their Values

6.5    Clock Generator

6.6    Sequencer Module

6.7    Binary Frequency Divider

6.8    Random Module

6.9    To Recap: Exercise Patches

6.9.1    Creating a Bernoulli Distribution and Bernoulli Gate

6.9.2    Polyrhythms

Chapter 7:    Getting Serious: DSP “Classroom” Modules

7.1    Handling Polyphony Properly

7.2    Linear Envelope Generator

7.3    Exponential Envelope Generator

7.3.1    A Virtual Analog RC Filter

7.3.2    Implementation of the Exponential Envelope Generator

7.4    Envelope Follower

7.4.1    Modelling a Diode Envelope Follower

7.4.2    Implementation of the Envelope Follower

7.5    Multimode State-Variable Filter

7.5.1    A Discrete-Time Model of the Multimode State-Variable Filter

7.5.2    Implementation of the State-Variable Filter

7.6    Polyphonic Filter

7.6.1    To Recap: Exercise with Patches

7.6.1.1    Simple Snare Sound Generation

7.6.1.2    Auto-Wah Effect

7.6.1.3    Creating a Step Filter

7.6.1.4    The Chemist’s Lab, Aka Polyphonic Noise Filters

Chapter 8:    Crunching Numbers: Advanced DSP Modules

8.1    Modal Synthesis

8.1.1    Modal Synthesis Principles

8.1.2    A State-Variable Filter Bank

8.1.3    The “Modal” Module

8.1.4    Adding Context Menu Options

8.1.5    Computational Cost

8.2    Virtual Analog Oscillator with Limited Aliasing

8.2.1    Trivial Oscillators

8.2.2    Oversampling: The Easy Solution

8.2.3    Implementing a Trivial Oscillator with Oversampling

8.2.4    Differentiated Parabolic Waveform and Its Extensions

8.2.5    Differentiated Parabolic Waveform Implementation

8.2.6    Computational Cost and Aliasing

8.2.7    Polyphonic Oscillator Module

8.3    Wavefolding

8.3.1    Trivial Foldback Algorithm

8.3.2    Antiderivative Anti-Aliasing Method

8.3.3    Wavefolder Module Implementation

8.4    To Recap: Exercise with Patches

8.4.1    A Modal Synthesis Patch

8.4.2    East Coast Classic

8.4.3    West Coast Mono Voice

8.4.4    Juntti Waveshaper

Chapter 9:    The Graphical User Interface: Creating Custom Widgets

9.1    The Rendering Library: NanoVG

9.2    Custom Widgets Creation

9.2.1    Custom Knobs and Buttons

9.2.2    Drawing Text

9.3    An Interactive Widget

Chapter 10:    Additional Topics

10.1  Debugging the Code

10.1.1  Running a Debug Session

10.1.2  Debugging a Segmentation Fault

10.1.3  Development Mode

10.1.4  Debugging with the Eclipse IDE

10.1.5  Other Debugging Methods

10.2  Optimization

10.2.1  Table Lookup for Transcendental Functions

10.2.2  Sine Approximation by Table Lookup

10.2.3  Quadratic Approximation of Sine

10.2.4  The Chamberlin Resonator as a Sine Oscillator

10.2.5  Reducing the GUI Processing Burden

10.3  Developing Expander Modules

10.4  Adding Factory Presets

10.5  Storing and Recalling Module Information through JSON

10.5.1  Storing and Recalling JSON Data for AModalGUI

10.6  Versioning the Code and Managing a Git Repository

10.7  Getting into the Third-Party Plugin List

10.8  Making a Revenue out of Coding

10.8.1  The VCV Store

10.8.2  Donations

10.8.3  Blank Panels

Chapter 11:    After Reading This Book

11.1  Forking the ABC Collection

11.2  Learn More about Virtual Analog Algorithms

11.3  Experiment with Novel Digital Algorithms

11.4  Build a Hybrid Hardware/Software Modular Rack

Bibliography

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.35.148