Makin’ MIDI: mistralXG
A USB connected, PIC-based
BY STEVE RUSSELL
mistralXG is a MIDI synthesizer based on a MIDI daughter card such as the Yamaha
DB50XG. It could also be used as a USB MIDI switching and monitoring device without the
daughter card. In this first of two articles, I’ll explain how mistralXG operates and discuss
the main technologies it uses. The second article will look at the hardware and software in
more detail. Parts cost for the project is $20 to $30, excluding the daughter card, power
supply, and enclosure.
Choosing a Project
A couple of my earlier projects were based on the
PIC12C508A — one of the least powerful Microchip PIC
microcontrollers (MCUs). Developing with them was great
fun and provided my first experience with these fantastic
little devices. But for my next project, I wanted to use a
Figure 1. mistralXG block diagram.
more powerful MCU and utilize some of the wide range
of on-chip peripherals.
I’ve dabbled in MIDI for many years and, as my current PC’s sound card doesn’t have the necessary
WaveBlaster-compatible connector, had an unused
Yamaha DB50XG synthesizer daughter card. The Internet
revealed some designs that use the DB50XG as a stand-alone synthesizer, but that just fed MIDI data to the card. I
wanted something a little more capable to allow me to
play my MIDI wind controller away from my computer.
This was an ideal goal for my project.
In August 2005, Nuts & Volts had published Robert
Lang’s MIDI-nator design, which showed that a hobbyist
could create a USB-based MIDI device. But, rather than
use MIDI-nator as a starting point, I wanted to create a
completely new MIDI implementation so that I knew
exactly what the device was and was not capable of.
Start at the Beginning
Late in 2007, I began thinking about the design. I
burned the MIDI-nator project code into a PIC18F2550
to see it in action and, while it worked well, it was evident that there was a steep learning curve to designing
with USB. Thankfully, there is plenty of information avail-