Paul’s Tech Talk – LSDJ 4.9.5, Transposition and Optimization

- Posted June 12th, 2017 by

Hello everyone and welcome to the 1st article in the all-new ChipWIN Blog column: Paul’s Tech Talk! I’m Paul from the French Gameboy duo Pain Perdu. This column aims to follow-up and complement our Youtube tutorial video series on LSDJ. With LDSJ ver 4.9.5, Superhero Dev Johan K kickstarted a wave of very significant updates, which would later constitute a pretty comprehensive overhaul of the program.

Mimicking a feature that was present in other trackers such as Famitracker; 4.9.5 introduced a new instrument setting: TRANSP ON/OFF. Why is this important, you might ask? The answer to this question can be summarized into one word that in my opinion is a staple of Demoscene, Chiptune, and Tracker culture: “OPTIMIZATION”, or as Max and I like to call it, “cramming as much stuff into as little space as possible”.

Let us contextualize a bit:
A regular LSDJ savefile is 128 kb, separated into individual song clusters of 32 kb.

LSDJ software limitations include:

  • 3F(64) instruments, not including the speech synth
  • 1F(32) tables
  • F(16) synths, each storing a sequence of 16 4bit waveforms
  • FF(256) phrases
  • 7F(128) chains

Each song weighs a certain number of blocks out of the maximum storage space of BF(191) blocks, according to the number of the above being used, and the overall complexity of the song.

Having lighter song files has a number of advantages such as loading faster or leaving space for other tracks, which in a Live context is always a plus, unless you like juggling carts.

But the true fear of LSDJ musicians is not the corrupt savefile, which can be backed up and reloaded in a jiffy, nor the dead batteries or gameboy which can be replaced (come on, everyone at chip shows can find at least a few spare working gameboys if they ask the audience, let’s get real here. Thanks to everyone who has already saved our asses live, btw).

It’s the haunting, inevitable Damocles sword of RUNNING OUT OF SPACE when you’re writing a song.



As central and crucial to the workflow as it is, the CLONE feature in LSDJ is a double edged sword. If you’re not careful when cloning your chains, phrases, instruments and especially Tables (remember, there are only 32 of these, and they go FAST), it’s painfully easy to use them all up and be left with ideas that cannot be written down.

TRANSP ON/OFF offers a panacea to this problem by allowing to use significantly less Phrases.

Even if your music is not 4 to the floor house, there is bound to be an element of repetition within composition. It’s inherent to writing and structure, unless you choose to go full Free Jazz, which also needs to happen at some point.

Let’s take an example: while writing a simple bassline in the wav channel, chances are you’ll do something like:

Phrase 01: Kick C6, Bass C3

And then you can fill your Chain with 4x Phrase 01 and transpose the others to create a basic progression. The advantage of this method, is that you’ll only use up one Phrase to lay out a bass over four different chords. There is a drawback however. Every note in Phrase 01 will be transposed, including the Kick.

Depending on how consistent you want your Kick to sound, you might not care, or you might actually want it to sound different. But i’ve found that many artists, myself included, actually went through the trouble of Cloning every Phrase with kick and bassline so that they could manually transpose the bass notes, but leave the kick untouched, nice and deeply rooted in the same spot, with a constant pitch ; at the somewhat heavy cost of One phrase per chord base.

Consider this for an entire song, with potential key changes, choruses, verses, bridges… and you’ll come to find that even 256 phrases is not that big of a number. Additionally, if you want to run your songs at Groove 3/3 for double speed and resolution, Phrases run out even faster (although there is a tradeoff here, since repetition and thus, transposability also increase).

What TRANSP. ON/OFF does is simple. It toggles whether a certain instrument (let’s say a kick drum) can be affected by transpose values. When applied to your kick, your same Phrase 01 can now safely be copied and transposed, with every note in it being affected but the kick, saving as many Phrases as you have chords in the process.

Now, the Kick example is probably the most obvious one, but there are so many other cases where TRANSP. ON/OFF can come in handy. Consider this example valid for any fixed-pitch sound present in a melodic phrase. Basically for any sound that you want to keep consistent for longer than a Phrase, TRANSP. ON/OFF is your friend. Use those empty Pulse lead slots to add in percussive sounds, like a snare tone, chimes, a cowbell, a kick transient, the mario coin sound, a cricket chirping… keeping this mindset can in turn lead to freeing up more space elsewhere!

We’ve only talked about Transpose Columns in Phrases so far, but you might like to know that TRANSP ON/OFF also affects the Master Transpose setting. Located in the Project screen, this setting lets you transpose the entire song file. I find this feature very handy in a number of ways, and even moreso now that TRANSP ON/OFF exists. For example, you can easily play with Octave ups and downs live, without worrying about your percussion going too high or low (pew pew kicks are not cool). You can also try out a few Key changes to avoid too much repetition in a song, or have a fresh listen to your track in an entirely different key (which is a good way to shake off creative blocks), while keeping a consistent percussion sound design.

Transposition in LSDJ is a very powerful feature in and of itself. Chances are i’ll talk about the topic again in a future blog post, because it opens up a LOT of creative possibilities. The TRANSP. ON/OFF addition introduced in LSDJ 4.9.5 just managed to make it even more useful!

Stay tuned for more articles, hopefully i’ll catch up faster than updates come out. Next up, we’ll be talking about some long-awaited new sets of commands that appeared in LSDJ 5.0.0. In the meantime, get cracking! People keep discovering new possibilities even in legacy software every day. Channel your inner tinkerer, think outside the box and go crazy!

See you soon.

Dig this article? Then consider supporting us on Patreon!