1st Edition
Learn with Arduino and Juce An Introduction to Audio Synthesis and MIDI Control
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.






