1st Edition

Learn with Arduino and Juce An Introduction to Audio Synthesis and MIDI Control

By Charlie Cullen Copyright 2027
546 Pages 404 B/W Illustrations
by Focal Press

546 Pages 404 B/W Illustrations
by Focal Press

In this book, learn how the Arduino can be used as a hardware MIDI controller for Juce audio synthesis plugins through a series of practical projects, including a MIDI drum controller and an Arduino MIDI controlled pattern sequencer plugin. The book provides all the theoretical knowledge needed to design, build and test simple audio control systems, with C++ programming being introduced in a... Read more

Acknowledgements

Introduction

                       Software Tools

                       Equipment

                       Tutorial- Working with Components

                       Example Project 1- Getting Started: An Arduino Powered LED Light

                       Conclusions

Chapter 1. Arduino Systems & Control

                       1.1 Electronic Systems

                       1.2 Audio Synthesis Systems

                       1.3 Digital Systems & Arduino Control

                       1.4 Tutorial- Introduction to Tinkercad

                       1.5 Instruction Types- Sequence Instructions

                       1.6 Arduino Code Structure

                       1.7 Introduction to Data Types- Variables

                       1.8 Introduction to Functions- Encapsulating Code

                       1.9 Tutorial- How to Write Code Part 1

                       1.10 Example Project: Arduino Controlled LEDs

                       1.11 Conclusions

Chapter 2. Arduino Programming 1- Basic Sensor Input

                        2.1 Conditional Logic Systems

                        2.2 Digital Input Sensors: Switches

                        2.3 Selection Instructions

                        2.4 Circuit Example 1: Push Button Switch Input

                        2.5 Extending Selection: Else If Statements

                        2.6 Circuit Example 2: Multiple Switch Inputs

                        2.7 Tutorial- How to Write Code Part 2

                        2.8 Analogue Input Sensors: Potentiometers

                        2.9 Circuit Example 3: Analogue Sensor Input

                        2.10 Example Project: Analogue & Digital Sensor Inputs

                        2.11 Conclusions

Chapter 3. Arduino Programming 2: Extending Logic

                        3.1 Data Structures- Arrays

                        3.2 Iteration Instructions

                        3.3 Circuit Example 1- Tone Array Output

                        3.4 State Variables- Modelling a System

                        3.5 Mapping Inputs: Analogue Input to MIDI Note Values

                        3.6 Nested If Statements: Defining MIDI Octave Range

                        3.7 Changing Button State: Timers & Latching Inputs

                        3.8 System Output: Displaying Note Information

                        3.9 Tutorial: Managing Code

                        3.10 Circuit Example 2- MIDI Octave Remapper

                        3.11 I2C OLED Display Output

                        3.12 Circuit Example 3: I2C OLED Display Setup

                        3.13 Final Project: MIDI Note Display

                        3.14 Conclusions

Chapter 4. MIDI Input Systems

                        4.1 Synthesizer Control Systems

                        4.2 The MIDI Protocol

                        4.3 MIDI Hardware

                        4.4 Tutorial- Audio Plugin Setup

                        4.5 Working with External Libraries- SoftwareSerial

                        4.6 Circuit Example 1- MIDI Output

                        4.7 Circuit Example 2: Arduino MIDI Note Generator

                        4.8 Vibration Input- Piezoelectric Sensors

                        4.9 Analogue Input- Percussion Sampling

                        4.10 Chapter Project- MIDI Drum Controller

                        4.11 Conclusions         

Chapter 5. Juce Audio Plugins

                        5.1 Object Oriented Programming (OOP)

                        5.2 Tutorial: Setting up the Juce Development Environment

                        5.3 Introduction to Digital Signal Processing (DSP)

                        5.4 Example 1- Using the Juce Plugin Host

                        5.5 Anatomy of a Juce Plugin

                        5.6 Working With Juce Display Components

                        5.7 Example 2- Building an Interactive GUI

                        5.8 Chapter Project: Sine Wave Synthesiser with GUI Control

                        5.9 Conclusions

Chapter 6. Audio Synthesis

                        6.1 Juce MIDI Connectivity

                        6.2 Example 1: MIDI Controlled Sine Wave Synthesiser

                        6.3 Audio Synthesis Fundamentals

                        6.4 Example 2: Basic FM Synthesiser

                        6.5 Wavetable Synthesis & Sampling

                        6.6 Example 3: Wavetable Synthesis with Juce

                        6.7 Chapter Project- Multiple Wavetable Synthesiser

                        6.8 Conclusions           

Chapter 7. Digital Signal Processing

                        7.1 Audio Perception & Timbre

                        7.2 Example 1- ADSR Envelope Synthesiser

                        7.3 Filtering Waveforms

                        7.4 Example 2: Adding a 3-Band Equaliser

                        7.5 Audio Reverberation

                        7.6 Example 3: Adding Convolution Reverberation

                        7.7 Extending Effects

                        7.8 Chapter Project- ADSR Wavetable Synthesiser with EQ & FX

                        7.9 Conclusions

Chapter 8. MIDI Plugin Control

                        8.1 Retaining Plugin State

                        8.2 Example 1: Storing Plugin Data

                        8.3 MIDI Sequencing

                        8.4 Example 2: Creating a MIDI Message Sequence

                        8.5 Storing and Retrieving Sequence Data using XML

                        8.6 Example 3: MIDI Pattern Sequencer Plugin

                        8.7 Recap: Arduino MIDI Control

                        8.8 Final Project- Arduino Controlled Pattern Synthesiser Plugin

                        8.9 Conclusions

Conclusion

                        Further Work

                        Conclusions

Bibliography

Index

 

Biography

Charlie Cullen is Head of the School of Mechanical Engineering in TU Dublin, Ireland. He has taught audio topics for many years, including the book Learn Audio Electronics with Arduino (Routledge, 2020). He lives in Dublin with his wife, three daughters and a cat.