Five Taps and a Zip File: Running My Own Code on a Denon DJ Player

A Denon Prime GO is a $1,000 standalone DJ controller. No laptop, no phone; you put music on a USB stick, plug it in, and play. It has a touchscreen, two decks, a battery, and absolutely no reason to let you run your own software on it.

It does anyway. You tap the version number five times, put a zip file on a flash drive, and it runs whatever you gave it.

I’ve been documenting inMusic’s firmware for a couple of years now. Denon DJ, Numark, Akai, HeadRush, Rane all share a codebase, so work on one device tends to apply to a dozen. Everything in this post lives in my documentation site. But the way into the device is my favorite thing I’ve found in it, partly because of how it works and partly because of a bug I found in inMusic’s own version of it.

Let me walk you through it.

Continue reading Five Taps and a Zip File: Running My Own Code on a Denon DJ Player

Undocumented APIs

Because I always love to push the envelope, and love learning how different services work in the background, I find myself running into undocumented APIs fairly regularly. Through writing many random bots, I've come up with a pretty nice workflow for handling, and documenting these APIs.

This article is going to cover how I typically go about the endeavor of documenting unknown APIs.

Read More