By Jamie Beverly
As an extension of the project I completed for Electronic for the Rest of Us Part 1, I will be using an Arduino Uno to build an digital music device/controller which communicates using MIDI messages, for use with the SuperCollider programming language, Serato DJ mixing software, and as a proof of concept for potential future use with Digital Audio Workstations (DAWs).
My final project for ERU1 was a simple breadboard interface composing of push buttons, and various types of potentiometers. Data read from the Arduino’s inputs was packaged as serial messages, which was then converted to MIDI messages by the ‘Hairless MIDI-Serial’ software. Those MIDI messages were then interpreted by a program written using SuperCollider, and worked to control several parameters of a frequency-modulo synthesizer.
The project was successful, but I found that the extra step requiring serial messages to be converted to midi messages to be rather finicky and unreliable. For instance, the communication between the Hairless MIDI-Serial application and SuperCollider was lost just prior to presenting my device, which required me to reboot software on the Arduino, SuperCollider, and the serial-midi conversion software. Additionally, a fundamental limitation to this method of getting MIDI data from an Arduino interface was that the Arduino could not be recognized on my computer as a MIDI device. This eliminates all possibility of using the Arduino as a digital instrument/controller in all mainstream music software.
Fortunately a few weeks after ERU1, I came across a project on Github which transformed the Arduino board into a MIDI- recognized device. I had naively expected this to be fairly simple – I assumed that it would just require importing a new Arduino library, but it has turned out to be more complicated than that. In order for the Arduino to be recognized as a MIDI device, I need to flash new firmware onto it’s atmega16u2 chip. While tutorials which outline how to do this boast it as an easy process, it will require me to become familiar in firmware flashing, navigating github repositories, Mac terminal commands, the MIDI protocol, and further exploration of the Arduino IDE. Due to the unexpected complexities, I have decided to scale down the hardware-portion of the project to a simple breadboard interface, and instead focus on integrating the Arduino as a MIDI device.
For this project, I will be using an Arduino UNO with an atmega16u2 chip, and buttons, resistors, and potentiometers found in the Arduino starter kit available at: https://store.arduino.cc/product/GKX00007
Software used for the project will include :
The HIDuino Github project available at: https://github.com/ddiakopoulos/hiduino
Mac ports (for flashing firmware): https://www.macports.org/
SuperCollider – later used to test the Arduino as a MIDI device: http://supercollider.github.io/
and Serato DJ – used to test the Arduino in commercial music software: https://serato.com/
Having gathered my resources, I’m prepared and excited to start building!