LSDJ is pretty cool

Little Sound DJ (LSDJ) is a music tracker for the original gameboy / gameboy color. It makes pretty bleep bloops, I think it’s neat.

The core is pretty simple. The gameboy’s sound hardware has 4 channels: 2 pulse waves, a 4-bit 16-sample wavetable, and a noise channel. You’ve got hard-panning, left, right, or center. But you can do so so much with this. I feel like I really underestimated it for a long time before I finally tried it out.

The pulse waves are pulse waves. You’ve got a few pulse widths to pick from, a volume envelope. But you can also do very smooth pitch bends and vibratos, and the first pulse channel lets you do really fast frequency sweeps that turn it properly percussive (people love to use this for kick-drum purposes). In the latest LSDJ you’ve even got a little visual representation of the volume envelopes which is really really nice because the numbers are kind of slow to process.

Something that really stands out to me is how fast arps sound. Thinking about other synths, super-fast arps are usually really hard to do when controlling a synth over MIDI. MIDI is good, but for timing that tight, it’s got limits. So usually you’re stuck with using an arp feature built into whatever synth you’re using, and usually that arp feature also is only as simple as playing a set of notes in one of a few pre-defined orders. With LSDJ you get incredibly high-speed high-resolution arp control, either with a simple 3-note arp using the arp command, or a custom 16-step arp sequence using “tables” (I think you can even chain tables for longer arps?) where you can decide the exact transposition of each note. You can do really high-precision tremolos this way too. It’s like an LFO you can program.

The sound channel is pretty nice. You’ve got noise and a bit of control over the timbre of it, and a volume envelope, that makes it work really well for hats or noise-snares. But you can also tune it to a few notes (C, D, F, G#). It’s not a precise tuning, its slightly detuned a bit, because this is actually a consequence of the undertone series. The undertone series is all the integer-divisions of a frequency, in contrast with the usual overtone series that are integer multiples of a frequency. Anyway, the sound channel can be nearly-tuned to some notes this way, and LSDJ lets you do it, giving a really pleasing sizzly synth sound with just enough detune to add some musical spice. Arpeggiating this sounds super cool too.

The wave channel is truly a star. Nominally, it’s intended to be loaded up with a predefined wave that you can then play at different speeds, and LSDJ does let you do this. You can hand-draw your own waves and switch between them as you like. But there’s more.

For one, LSDJ can automatically compute wavetables for you. You’ve got a wavetable synthesizer built in that lets you specify a start and end state, and will build a wavetable by sliding the parameters inbetween them. This wavetable synth has

And then you also have a few distortion modes (clip, foldback, modulo wrap) to spice it all up with. It’s seriously cool, I wish I had a program like this on my computer to generate wavetables to use in my more hi-fi wavetable synths

LSDJ can then automatically transition between waves to provide smooth or not-so-smooth modulation of these parameters during song playback.

But LSDJ can also hack the wave channel into being a PCM output by sequentially loading a series of waves from an internal wavebank with precise timing. It uses this to give you real drumkit samples, if you want to use them (with up to two drums playing back simultaneously!). There’s a ton of classic drum machine samples included to play back in gritty 4-bit quality.

And that’s pretty cool as it is, but it also has a speech synthesizer built in. Which I found on accident! Set your wave channel to instrument 40 and you have it.

Rather than writing out words to get auto-synthesized, this speech synth lets you write a sequence of individual sounds (allophones), and you can precisely time exactly how long you want each one to last in song-ticks. This makes is really easy to make it say exactly what I want with the exact cadence I want, which makes it much easier to use musically than most lofi speech synthesizers that sound like this. Usually speech synthesizers that sound as oldschool as this were never really intended for song use, and so you’ve got to sample them and chop them up to get something musical. LSDJ’s speech synth is no vocaloid, but it’s really pleasant to use. You can even get a super distorted variation by putting on a max-speed low-depth vibrato on it.

little groove with a speech synth saying "maybe"

As far as I can tell it’s fixed to synthesizing speech with an A-note carrier frequency, which, fair enough. I imagine rom banks for other notes might be a bit much for the cartridge size. If you’re willing to do a bit of post-processing magic, its nothing a little autotune wouldn’t fix for you.

Anyways, on top of all of this, there’s a ton of commands you can use to tweak all your sounds and it really makes me want to just tweak everything and make variations and make my bleep bloops do all sorts of fun things. And there’s also command-tables that you can use to get two whole commands and a transpose per song tick (or synth invocation, depending on how you tell it to work). Great for doing all sorts of advanced trickery, or getting really picky with your arpeggios.

And then you’ve even got a “live mode” that gives you a pattern-launching style performance mode which is super fun.

Somehow this software just keeps getting better over time, and that’s like one of my favorite things is when that happens. It’s such a joy to play with and I highly recommend giving it a shot.

Speaking of which, here’s some ways I’ve found are a good way to run and some ways that aren’t:

You can of course use a GB/GBC. I know there’s a hardware mod some folks do ( to get a better line-out on the GBC. I don’t have one myself. You can also use it with a GBA. I just don’t really like the way the buttons on the old hardware make my hands feel so I’ve never been compelled to do it this way.

Generally speaking, don’t bother trying to use it on Nintendo DS/DSi. There’s a gameboy emulator called GameYob, but the audio emulation on this emulator is pretty inaccurate and so volume envelopes wont work right, vibratos and pitch bends get super quantized, wave samples get garbled, sound channel acts funky. Although- if you want to explore this land of not-quite-right audio emulation, it does sound kinda glitchy cool, and could be worth composing for in its own right. Just expect anything you write on it to sound different everywhere else.

On the 3DS and New3DS, install retroarch and then use Gambatte. The sound emulation is great! I recommend remapping start/select to the bumper buttons. On the old 3DS you might experience some brief audio glitches while pattern editing. Maybe disabling wireless would help with that? I don’t know a whole lot about it since I have a New3DS which doesn’t ever have audio glitches. I was just briefly playing with my friend’s old 3DS getting it installed for them. But I’m sure you can do some tweaks to minimize it, maybe play with the emulator settings. The headphone out can be a bit noisey if you’re recording from it, so if you want a cleaner recording for a song, send your save file over to a computer emulator to get a digital recording out of that.

On the computer, you’re really living in luxury. The LSDJ site recommends BGB and Sameboy. I’ve run BGB in wine and it worked well for me. Definitely consider using a real controller with these! You can do keyboard too, but making music with controller is kinda nice.

Alright that’s all! I really like this and wanted to talk about how cool it is.