Portfolio Noah Vawter. Pushpin - Gameboy Synthesizer with MIDI

Gameboy Synthesizer with MIDI

I admit it- from the start, when Brian dreamed it up, even *I* thought this was weird. I thought it could never work. Though I'm a positive and daring person, this project actually seemed too over the top! Well, Brian wanted to try it anyway ("I need these sounds!" he emailed me) and offered me dinner at the Elephant Walk if we got it working, so how could I refuse a "Will Hack For Food" offer?

Where Did You Get This Idea?

Basically, he started with the idea that if people could use a Game Boy from Nintendo to read serial data at 9600 bps (which they were doing), then perhaps we could expand that idea to make the Game Boy listen to data at 31250 bps (the MIDI serial rate). The main caveat was that there is no UART on the Game Boy. Even more challenging is that there is no interrupt service on the link port. That is why I didn't think this idea could work.

UART Ex Machina

So, the only way left was to write carefully-timed microprocessor code. It polled the serial data bit for a start bit, waited, recorded a bit, shifted, repeat, etc. I worked with Brian to get this timing reliable. That required lots of patience and cycle counting! Next, we interpreted the MIDI messages, translated them, and wrote them to the sound chip registers. At first, we simply turned the controller messages into register values, then Brian took it a step further, and converted MIDI Note and Velocity values into the proper register writes!

Remember, we had to handle the controller data very quickly! This is because new messages could arrive over MIDI within a single bit time! We really only had the time during the STOP BIT of each transmitted byte to do lookup on note values and write them to Game Boy sound chip registers! We were a picture of furious activity when we were getting MIDI pitch change messages to work - up all night with pizza and coke, then sleeping on the couch in a one-room Manhattan apartment.

Hardware Development

Eventually, we could reliably transmit data from a Palm Pilot to the Game Boy reliably at MIDI rate and turn it into sound! However, the hardware interface was still working at RS-232 electrical levels. So we needed some hardware to translate MIDI physical layer signals into something the Game Boy could receive. Not a problem, you might think... Just look up the spec for the Game Boy and make a level shifter. Well, we couldn't GET the spec! So, I took one half of the PAIA MIDI interface (thank you for publishing the schematic!) and one half of the Game Boy ASCII interface and connected them back to back. I also added a Thru for the MIDI port, because I never design MIDI interfaces without Thru.

World Impact

When we put this project up on the world wide web on our website DSPerado, we got an overwhelming response. People e-mailed us often dozens of times per day trying to buy one from us. Inspired, we built a small number of them to sell, but then got scared by legal issues, and have been only making them available on the underground.

Sound

This song was written using the Web Arpeggiator, then played from a MIDI sequencer into Pushpin. There is also a drum sequence.
  • "The Matrix"

    Links

    Back to Portfolio Noah Vawter
    Next Project