hits counter

Brian Whitman @ variogr.am Brian Whitman @ variogr.am

Scroll to Info & Navigation

Pushpin is Real [archive]


Seven years ago Noah Vawter and I finished up “Pushpin,” a Gameboy Color MIDI adapter. Pushpin allowed you to compose music on a computer or sequencer and use the GBC as an instrument. You didn’t touch the GBC while it was playing other than to admire the fancy boot screen. It turned your $80 toy into a pretty good 4-bit waveform synth. Unfortunately, you probably don’t have one, let alone believe that it ever existed. I am finally releasing Pushpin to the wild. You can read on for the story of Pushpin or more directly touch the Pushpin ‘product’ page for a download link and schematic.

Here’s the story…

During the summer of 2000 I went through a sort of decompensation that resulted in my sitting on one of those Amtrak NYC->Boston trains that somehow go through Springfield MA and take roughly $34 in box Amtrak dining car wine to get there. On the tray table was my trusty Palm VII, the same one that supported earlier developments as Egg Timer, Hedgehog (and baby Hedgehog), Tractor Pull and the nascent Capers API (more on these later) — head to head, kissing IR sensors with my prized clear purple Gameboy Color (aka “Tetris DX Machine.”)

For some reason I got it in my head that I was put on this earth to make a MIDI to IR translator using the Palm and Geoff Smith’s Palm MIDI adaptor, and then a IR to sound cartridge (like you point a Palm at the GBC and play Hedgehog or something at it for the GBC’s sound chip.) I curiously found this reasonable, that IrDA was a perfectly good signaling protocol for 31,250bps 7-bit serial data (it’s not, trust me) and that my audience had an RBR of at least 0.95.

[Ridiculous aside time: - did you ever think the reason indie music hardware makers design their stuff to be so convoluted is a subconscious worry that someone will actually successfully use it? Like someone they didn’t plan for — I’m thinking Coldplay with a hardSID, or Amy Winehouse rocking pspseq. I am picturing Ethan’s face when he first reads about Amy using his software. He’s looking down at the ground a little bit…]

I actually did mock up the IR->MIDI translator on both ends but gave up quick when I realized the packet overhead of IRDA is just ridiculous. I don’t give up easy, and one curious thing I found in my crawls was a discovery that the GBC had a vestigal digital input pin on the link cable. I reached Noah Vawter and got him to stop looking at micromusic long enough to help out. Within days Noah did up the hardware and we had it — bits signalling from a serial port showing on the GBC’s screen. It was amazing. Ken Kaarvik’s source code got us to 9600, and the bulk of the remaining development was timing — overclocking the GBC to “fast” mode and then squeezing every little cycle we could to stably read bits at the MIDI baud rate.

The timing parts were painful yet satisfying. We were always so close: close enough to handle note ons first, then close enough to do real time controllers, then close enough for pitch bend, etc. The source you see on the svn site I believe is maximally optimized even with the overclocked GBC. I don’t think many other features could get added. We had meant to include patches and program changes but never got around to it. The sound parts — figuring out what notes to play when the right MIDI code came in and figuring out which registers to twiddle when the right MIDI CC’s were tweaked — seemed like a walk in the park compared to the manual cycle counting I found myself doing on my living room floor for most of August 2000.

To this day, Pushpin was the most exciting hack-project I’ve ever done. From conception to actual working device took roughly two weeks. I think I had a job at the time but I doubt I actually went into the office.

Aftermath

We released Pushpin in the style of the times — with a flashy website, lots of documentation and screenshots, some sound samples, and no download link or information on purchase. Noah and I had about four Pushpins between us. We were of course crushed with emails. For the first and probably last time I had successfully predicted the product for the audience.

The main block with Pushpin was that it was a Game Boy cartridge. Nintendo doesn’t let just anyone mail them a romdump for them to sell in stores, and you can’t just let people download your thing. The point of existing-hardware hacks (like pspSeq / kick or iPhone things or Palm apps) is that you have a built in user base who doesn’t have to buy new hardware. But a Game Boy Cartridge bridges the gap between software and hardware. We had flash cart programmers, of course, but few others did. We simply never got it together other than buying 20 4Mb blanks from Bung in Hong Kong (!!) — somewhere in Noah’s apartment is a box full of these things. The required hardware (MIDI to serial board) was another issue — although Noah had made twenty laser-etched boards what would we do then? Nowadays pick and place and send-away-for-etching is a bit more common. Maybe the make-your-own-stuff-by-reading-O’Reilly-funded-websites movement is getting people more familiar with breadboards, they won’t need a kit.

This was seven years ago and in that time a lot has happened — but no one outside Noah and myself and I believe Keith has ever used a Pushpin. I played a few shows with it in NY in 2001, and it also was the topic of the first slot of the first ever Dorkbot meeting (I’m very proud of this.) When Noah started at the lab in 2004 we promised we were going to put it out for real, maybe actually sell the 20 copies we had parts for. It’s very hard to get this sort of thing together, but I got as far as hooking it up again to the Media Lab music studio’s workstation and programming some patterns in Logic 6 for it. (To see how far we’ve come, the first testing environment for Pushpin was KeyKit.) I made some sample loops and they sounded great.

I never responded to those thousands of emails. People (slightly correctly) assumed it was vaporware. But it wasn’t, I promise, and today I’m releasing Pushpin to the world, for free — along with its GPL source. I am making a public promise to Noah to take him out to Emma’s for a potato/cranberry/bacon pizza if the commit count on the Google code project ever goes over 2. But here’s your slice of history.