Tuesday, August 30, 2011

USB MIDI Game Boy Sync for $16

Overview
Here is a Game Boy LSDJ / Nanoloop 1.x sync device that shows up natively as a USB MIDI device, thereby requiring no drivers and no power beyond the standard USB connection.

In terms of soldering, it is very easy as well, as it only requires two connections for each Game Boy sync cable, and that's it.

This is a very cheap and easy project to make: the Teensy board costs $16. You will most likely already have a USB A to mini B cable and a Game Boy link cable.



Things You Need
Game Boy
Computer
Music or audio software that can output MIDI Beat Clock
Teensy 2.0 board
Game Boy link cable that you can splice


Software
Upload the Teensy_GB_Sync.hex file to the Teensy via the Teensy loader software.

If you would like to edit the source code, you need to update the Teensyduino core to include MIDI Beat Clock messages. See here for more information.



Hardware
Here is the pinout of the Game Boy link cable:
To synchronise your Game Boy, you will need to splice the Game Boy link cable and find GND (ground), SI (serial in) and SC (serial clock).

To sync to LSDJ, connect ground on the Teensy board to ground on the Game Boy link cable. Also, connect digital Pin 0 on the Teensy board to SC on the Game Boy link cable.




To sync to Nanoloop 1.x, connect ground on the Teensy board to ground on the Game Boy link cable. Also, connect digital Pin 1 on the Teensy board to SI on the Game Boy link cable. Note that you will need to add a resistor to the connection going to SI in order to sync with Nanoloop 2.x.



Demo Video - LSDJ Synchronised to Ableton Live

18 comments:

Transformer said...

Amazing

marcelo said...

HI,

if one ady you sell one please tell me, I would like one.

Email me to marnuc (((((AT))))) rocketmail

Fredrik said...

Super nice!

burnkit2600 said...

Very cool, Seb! How hard would it be to adapt this to also work as a midi->DIN sync? It would need to output 24ppqn and respond to start/stop/continue.

Sebastian Tomczak said...

@ burnkit2600: Absolutely! Is it a positive or negative pulse? How long is the duty cycle in terms of time?

burnkit2600 said...

Not sure how long the duty cycle is, I'd GUESS that 50% would work. I think DIN gear just senses the rising slope of the pulse. They are positive pulses. Roland uses +2.51 V, but +5V will probably work for most things. START/STOP is on another line- START trigger is +5V, STOP is 0V.

I don't really have any MIDI-DIN projects in mind at the moment, but it's something i've been meaning to build because a lot of old drum machines use it. Actually- i want to sync my TR-77 which uses a non-standard 8ppqn. So- ideally i want to build a general purpose MIDI-sync device that can output multiple different sync pulses for different devices.

Another project i'm working on now is a 16-step sequencer. The "Baby10, but with 2 cascaded 4017s. So something like this is perfect for midi-syncing it.

How hard is it to change the pulse rate? Is the code commented well enough for a n00b coder like myself to understand? I'd love to be able to change the rate on the fly- so the sequencer can generate whole, 1/2, 1/4, 1/8, 1/16th notes, etc. Would it make more sense to do that in software, or with hardware- using flip-flops or other logic gates to divide the pulses? Actually another 4017 could probably be used for that....

Sebastian Tomczak said...

@ burnkit2600, I've started adding DIN 24 support. Not as complex as you want to have it, but it is a start: http://little-scale.blogspot.com/2011/09/teensyduino-midi-clock-sync-updated.html

burnkit2600 said...

thanks, man! that gives me a great place to start, i'll let you know how it goes.

Ogrim said...

It seems to be working for me, somewhat. If LSDJ is playing before putting the sync to midi, it will follow the tempo from my computer. However, I cannot get it to start playing like you did in the video. If I attempt to push play after it is set to midi, it will just wait on sync forever. Hmm, suggestions? I have tried both the software revisions you posted, two different DMGs using LSDJ 4.5.5. There are no shorts and the lead is fine.

Anonymous said...

Hey, I'm quite new to the hardware side of MIDI, so excuse me if I make any stupid mistakes.
I'm guessing this only sends tempo and play/stop sync messages to the GB?
I want something that I can use to compose in a DAW, then play via MIDI to the Gameboy - if that's possible.
I'm guessing this Teensy kit can't do this?

ultrastatic said...

Hey, I built this device and have it synced up and working, but for some reason when I start a loop in ableton it is synced fine, but after the loop has played several times it starts to fall out of sync. Like the tempos are just barely off. The longer it plays the worse it gets. Any suggestions?

Sebastian Tomczak said...

Hey guys, are you still having these issues? Cheers, - Seb

Anonymous said...

Hey,
I've got everything hooked up properly and LSDJs sync set to MIDI but when I try to get it to start playing from ableton LSDJ just says 'wait' and doesn't make any sounds. Do you know what might be the problem?

Tyla said...

heyyy, could anyone build me one of these?? i really cant do things like this )= im sure we can work out a price....


my email is tyla-joe@hotmail.com

Tyla said...

could anyone make me this??? ill pay well?? my email is tyla-joe@hotmail.com

Anonymous said...

Hi Sebastian, I got my teensy and it works great with my DMG and FL Studio! Thank you! Now I am trying to install my teensy inside my DMG, is there a way so I can get a Led extension so I can Install an External Led in the DMG Case so I can see the BPM sync?
By the way sorry about my bad English

Anonymous said...

does this work with nl2.x?

Ryan Soper said...

Still having drift problems. Starts perfectly sync'ed. by the 9th or 10th loop its already drifted behind.