dat ting Firmware

Firmware for the dat ting module

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