Code libraries

All Mutable Instruments projects are open-source, you can visit us on github.

This page highlights some of our projects related to embedded development.

AVR development tools

ATMega development library

The Shruthi, Ambika, Anushri and MIDIpal codebases all use a common code framework called avril.

Avril hides all the dirty details of manipulating the AVR peripherals registers (GPIOs, timers, SPI, USART…) behind friendly looking C++ templates. The use of C++ templates allows these abstraction to be “flattened” – evaluated and optimized – at compile time – providing a significant performance and/or code size boost compared to the more common run-time abstractions (functions, for example as used in the Arduino libraries).

You write:


And the compiler inlines and compiles this into:

lds r24, 0x00B1
andi r24, 0xF8
ori r24, 0x01
sts 0x00B1, r24

This library also contains drivers for various kinds of peripherals (LCD modules, shift registers, DACs…) implemented according to a policy-based design. This allows very efficient operation and small code sizes – since any project specific code is inlined and unused features are trimmed at compile-time.

Some simple examples using this library are available here.

XMega development library

An equivalent of avril for the XMega series, called avrilX, has been developed. This library is more mature than avril and is in use in a few upcoming projects.

MIDI bootloader

All Mutable Instruments are MIDI-upgradable. A pure C, no dependencies version of our bootloader is available here.

STM32 development tools

A couple of upcoming Mutable Instruments products are using the STM32F1xx and STM32F4xx series of ARM Cortex MCUs.

You can grab our project template here. This includes a makefile, linker scripts (with and without bootloader segment), and programming utilities for programming the device through an OpenOCD+JTag interface, or using the serial bootloader.

More code will be released once these projects are out.

Olivier Gillet, Mutable instruments SARL 2011-2017. Except where otherwise noted, content on this site is licensed under a cc-by-sa 3.0 license.