Build your own Synthesizer – Getting started with bare metal ARM programming / Karsten Schmidt


Embedded devices, due to their specifications, form factor and low costs, provide great potential for artistic exploration and enable new modes of interaction. This workshop will introduce you to the exciting world of programming such devices outside the world of Arduino, working “bare-metal” with the powerful ARM Cortex processor family, which too is used in many smart phones. We will use the low-cost (€12) STM32F4 discovery board featuring an 84MHz 32bit CPU w/ FPU, 256KB ROM, 64KB RAM, 2x USB, 3-axis accelerometer & gyroscope, 44.1kHz audio codec & microphone, and learn how to implement our own polyphonic MIDI synthesizer and sequencer, which you can take home later.

We will start with setting up an open source development environment & toolchain, get to know the ARM CPU features, use the hardware abstraction layer to build simple examples, learn the basics of USB device communication, and of course all important aspects related to audio synthesis, sampling, DSP and music theory in order to implement them in the C language. Source code scaffolding will be provided for all parts to ensure we’ll use our time wisely and have space for creative experimentation. At the end of the 3-day workshop you’ll not only have created your own fully featured credit-card sized, polyphonic synthesizer / sequencer with both MIDI and gestural controls, but also should have the knowledge and confidence to start your own embedded projects.

This workshop is going to be fast paced, but intended for beginners to embedded development. Previous programming experience in Processing/Java/Python or Arduino/C is desired.

A STM32F401C discovery board & USB OTG cable will be supplied for each participant.

Work-in-progress sound samples:


– Day 1
10.00-10.30 – General introduction & background
10.30-11.00 – Introduction to ARM CPU family and the STM32 development board
11.00-12.00 – Toolchain setup
12.00-14.00 – Basic examples & experimentation
14.00-15.30 – Lunch
15.30-17.00 – Digital audio introduction & experimentation

– Day 2
10.00-11.30 – Intro to working with USB file systems (play/record WAV files)
11.30-14.00 – Synthesizer framework overview, audio/music theory, experimentation
14.00-15.30 – Lunch
15.30-17.00 – Introduction to MIDI & integrating with synthesizer

– Day 3
10.00-11.00 – Generative music composition techniques
11.00-14.00 – Project development / making music
14.00-15.30 – Lunch
15.30-17.00 – Final presentations and performances


– OSX / Linux / Windows7+ laptop
– Headphones
– USB Memory stick (MS-DOS formatted)
– USB MIDI controller if you have one (e.g. Korg NanoKontrol2)


200,000KRW (≈ 150 EUR) / festival ticket included in price

Duration: 3-Days