The dat ting Eurorack module is based on a Daisy Seed microcontroller board. The microcontroller firmware is open source and is published under the MIT license. GitHub repository is here.
Building the Firmware
Setup
To set up a development environment for Daisy Seed on Windows, Mac, or Linux, follow these instructions.
Get the Source Code
The source code for this module’s firmware is in this GitHub repository. Clone the repository, including the submodules for the Daisy libraries:
git clone --recurse-submodules https://github.com/Len42/dat-ting.git
Or, if an SSL private key has been configured:
git clone --recurse-submodules git@github.com:Len42/dat-ting.git
In the cloned repository, the firmware code is located in the firmware/src sub-directory.
Compile the Firmware
If you’re using Visual Studio Code for development, follow these instructions to compile the firmware and download it to the Daisy Seed via USB.
To compile and download the firmware from the command line, follow these instructions.
Firmware Overview
The firmware for this module is written in C++ using the Daisy Seed libraries (libDaisy and DaisySP). These libraries implement a host of useful DSP algorithms which do most of the actual audio processing.
dat ting is a multi-function module so the firmware is organized around a set of programs. Each program implements a particular function such as VCO or delay. Audio and CV processing is done by the currently-running program, which implements an audio callback function that is called by libDaisy.
I have implemented several programs so far and I’m adding more as I need them. Some of the implementations are quite simple and don’t have as many adjustable parameters as they could.
The firmware also implements a user interface using the OLED display and the rotary encoder knob. This is used to select which program to run and to set whatever parameters the program requires. If you like menu-diving, you’ll love this module!
When the UI is idle, it displays a fun and useful animation that shows what the currently-running program is doing. Each program has its own particular animation.
A simple task scheduler is used to manage the user interface and animation tasks, as well as some other tasks for testing and debugging.
Tools & Libraries Used
- Daisy libraries (Included as submodules in the git repo)
- GNU Make (Included in the Daisy toolchain installer for Windows)
- dfu-util (Included in the Daisy toolchain installer )
- GCC for Arm 13.3.1 (Note: This is a newer version than the one in the toolchain installer)
- Python 3.12.2
- Dina font 2.92
- Visual Studio Code