DIY Synth / ARM baremetal workshop (London, 5-6 December 2015)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.settings add build config descriptions Dec 10, 2015
Components initial import Nov 20, 2015
ldscripts initial import Nov 20, 2015
lib initial import Nov 20, 2015
libsrc add ex08 (midi), not receiving properly(?) Nov 27, 2015
system add TIM5 example, update project structure (build configs, folder exc… Nov 20, 2015
tools/wavetable-gen update clj wavetable-gen, add new fns Dec 6, 2015
.cproject add build config descriptions Dec 10, 2015
.gitignore add ex07b (kick/percussion) demo & build config Dec 10, 2015
.project rename project Dec 5, 2015
nanokontrol2.nktrl2_data update nanokontrol2 LED state behavior Dec 8, 2015



DIY Synth workshop with STM32F401-DISCO (ARM Cortex-M4)





Examples / exercises

ex01 - Hello Blinky

Simple LED blink example and GPIO (push button) handling, polling vs. EXTI interrupt

ex02 - Timers & interrupts

Introduction to timers, configuration and custom interrupt handlers. Useful for basic multi-tasking.

ex03 - Accelerometer & Gyroscope

ex04 - Audio playback & record

ex05 - USB audio playback & record

ex06 - Synth & sequencer basics

ex07 - Synth example #2

ex08 - MIDI synth

This example uses a 2-track sequencer, which can be controlled via a connected MIDI controller. In the workshop we used the Korg Nanokey2 for this purpose and a configuration file for this device is included. If you use a different controller, make sure you edit the controller assignments in /include/ex08/main.h.

Building the exercises

This repo contains a complete Eclipse CDT project and can be built with GNU ARM Eclipse plugin. Furthermore, the ARM GCC toolchain is required outside Eclipse.

Within the project, you can find several build configurations, one per example/exercise. Build profiles can be switched by clicking on the little triangle next to the hammer (build) icon in the main toolbar. Once a profile has been built, you’ll find the resulting .bin file in the profile’s subfolder of this project. E.g. ex08’s binary will be located in {$PROJECT_DIR}/ex08/diy_synth_ldn_2015.bin.

Important: The build profile called “base” is only a template and is NOT buildable. However it is the default profile after importing the project into Eclipse. So if it starts building the project automatically and you get lots of errors, let it finish and then select one of the example profiles (“ex01”…) as described above.

For programming/flashing the STM32F401-DISCO board, we used the st-flash tool and invoke it like this:

cd ws-ldn-3
st-flash --reset write ex08/diy_synth_ldn_2015.bin 0x8000000


This project is open source and licensed under the Apache Software License 2.0.