Experiments with (Bluetooth) low energy

MIDITrail playing Piano Phase

A few weeks ago I published the source code and the schematics of Synapse, an Arduino shield providing CV/gate I/O, and this is a real-world example of its usage, coupled with Arduino/Genuino 101, one of the most recent boards of the ever-growing Arduino family.


The Arduino/Genuino 101 is a very powerful board featuring an Intel® Curie™ module, which includes a 32 bit SoC (an Intel® Quark™ plus an Argonaut RISC Core EM processor), a 6-axis combo accelerometer/gyroscope and much more flash/ram memory (196kB/24kB) than a regular Arduino Uno while keeping the same form factor and pinout.
What makes it so appealing? The price point (~35 €/$) and the integrated BLE capabilities, which are not using any of the existing "traditional" Arduino pins.
In fact, this is not the first Arduino-compatible board featuring BLE connectivity, but what makes it unique is the fact that you won't have to sacrifice any existing pin/functionality like SPI to use it.

What makes BLE even more interesting for music-related projects is the fact that Apple introduced support for MIDI over BLE since iOS 8 (and OS X 10.10 Yosemite), and the MIDI Manufacturers Association adopted the specification in June 2015.
There's still some limitations (no support for multiple virtual cables or clock synchronization) and not all possible and valid MIDI 1.0 data streams are handled correctly, but the fact that there's plenty of room for improvements doesn't mean that you cannot already make good use of what's available :)

This example demonstrates how easy it is to use MIDI I/O over BLE together with the Synapse shield.
In particular, the video below shows an iPhone running MIDITrail (a free iOS application) which is playing a MIDI file containing a simplified version of "Piano Phase" by Steve Reich. The midi notes are sent via bluetooth over two separate MIDI channels and are translated to pitch CVs and gate pulses. Each one of the two CV/gate pairs controls a separate oscillator in my modular synthesizer.

The full source code is available here as one of the Synapse examples. To try it yourself you'll need:
- An Arduino/Genuino 101 board
- A Synaspe shield (you'll need a small modification, explained in the header comment of this file)
- A device that supports Bluetooth 4.0


comments powered by Disqus