little-scale — the Arduino Game Boy sync boxes: syncThing, Sync Tank and the AU$15 build (2008)
Three months in which a breadboard became a documented build anyone could copy for about AU$15. The important content is the pin-level wiring, which differs between lsdj and nanoloop and is stated nowhere else in the wiki.
Key claims#
The wiring — and the one fact that matters#
From the syncThing schematic notes (2008-05-24), the clearest statement of it:
- "For each Nanoloop connection, the sync signal goes to the SERIN pin on the GB. The GND pin on the GB connects to Arduino ground."
- "For each LSDJ connection, the sync signal goes to the CLK pin on the GB. The GND, SERIN and SEROUT pins on the GB all connect to Arduino ground. There is also a pull down resistor from the CLK line to ground. The value of this resistor is 22k up to around 100k or so."
So the two programs listen on different pins of the same connector — Nanoloop on serial-in, LSDj on the serial clock — which is why a device can support one and not the other, and why the chart in s-little-scale-sync-options-for-game-boys has separate LSDJ and Nanoloop columns. Confirmed three years later on different hardware in s-little-scale-teensy-usb-midi-sync.
- Nanoloop's sync rate is 12 ppqn — "I have made something that takes MIDI clock signals and converts them into Nanoloop 12ppqn sync signals" (2008-05-06). MIDI beat clock is 24 ppqn, so a MIDI→Nanoloop box is halving. A commenter on the
$1circuit corroborates it from outside the Game Boy world: his Boss DR-110 "uses essentially the same 12ppq sync signal as nanoloop".
The devices#
- Sync Tank (2008-04-28): "synchronise up to 15 Game Boys running LSDJ in slave mode"; two clock sources — external MIDI clock or an internal generator — and coarse and fine tempo pots. The measured range: "synchronise to an external MIDI clock (from around 35 to over 200 beats per minute when using a DMG)". He lists the competition in the same post: Trash80's Arduinoboy, Gijs' Master Clock Generator, Firestarter's LSDJMC2, Oliver W's Nanoloop MIDI Sync Cable.
- syncThing (2008-05-24): "up to 6 copies of Nanoloop and 6 copies of LSDJ", responding to "CLOCK TIMING, START, STOP and CONTINUE messages". Nanoloop outputs on PORTB, LSDj on PORTC.
- The AU$15 build (2008-07-03): a full step-by-step with a parts list — 3.3k / 110k / 220Ω / 10k resistors, 2 × 20 pF and one 0.1 µF ceramic, 47 µF electrolytic, a 1n4148, a 16.00 MHz crystal, a 4n25 optocoupler and a pre-flashed Freeduino ATMega168, on a Datak 21-113 board, plus a spliced USB A–B cable for 5 V, a spliced Game Boy link cable and a 5-pin DIN socket. "This device cost me around AU$15 in parts to make and it is not very hard at all." Same capability as the syncThing: 6 × LSDj and/or 6 × Nanoloop, START / STOP / CONTINUE.
- The custom box for Dexter (2008-06-24), an 8BC user — a finished product, USB-powered, MIDI in, with a Game Boy link adaptor cable ending in a 3.5 mm red jack.
How you actually drive it, from the LSDj side#
The Dexter post is the only one that writes the operating procedure down:
- Power the box; connect a MIDI source that sends beat clock (in Ableton Live, "set the correct MIDI output to Sync On").
- Start LSDj and load the song. Set LSDj to slave sync mode in the project screen.
- Select the position in the song to start from and press start — "LSDJ will say 'WAIT'".
- Press start on the clock source; LSDj follows, and follows tempo changes live.
- "If you press stop on your MIDI clock-generating device, LSDJ will stop. However, to start again from the same position in the LSDJ song, you will need to manually select it and press start before pressing play on the MIDI clock-generating device."
That last point is the practical trap: MIDI CONTINUE does not put LSDj back where it was.
Practical takeaways#
- Splice the link cable and find GND, SERIN and CLK. Drive CLK for LSDj (with a 22k–100k pull-down to ground), SERIN for Nanoloop, and tie the unused data lines to ground.
- A single Arduino drives many Game Boys — 6 of each program, or 15 in LSDj-only mode — because each machine needs only one output pin and a ground.
- On a DMG, external clock sync is usable "from around 35 to over 200 BPM".
- Rehearse the stop-and-restart: LSDj does not resume where it stopped.
Notable quotes#
"This device cost me around AU$15 in parts to make and it is not very hard at all."
"Select the correct position to in the song that you want to start on and press start. LSDJ will say 'WAIT'."
Relevance to the wiki#
The hardware layer under sync's LSDj sync modes: what the link port carries, on which pin, at what rate.
To verify#
- Whether the 35–200 BPM range is a limit of his firmware, of the DMG, or of LSDj is not stated.
- The Arduino sources at
milkcrate.com.auwere not fetched and the domain may be gone. - Comments report the AU$15 box working with Nanoloop 2.x on a Game Boy Advance only when "powering the circuit from the GBA instead of from USB", pointing at a further post on pin-swapping a GBA cable for VCC (2009-08, not ingested).
Pages touched#
sync · lsdj · nanoloop · game-boy · live-tracking · little-scale · midi-in-trackers