Paul’s Tech Talk – LSDJ 5.0.0, New Commands Ft[W]! Part 2

- Posted July 19th, 2017 by

Hello people and thank you for once again reading Paul’s Tech Talk on the ChipWIN Blog!

Today we’re going to finish the two-part article about LSDJ version 5.0.0 and the wonderful new Commands it came with. Last time, we delved into the new possibilities offered by the Pulse [F]inetune Command, so don’t hesistate to read that one first if you haven’t already!

Today, we will focus on the upgraded W command, which can now control WAV channel instruments. Buckle up!

Just like the pre-5.0.0 F command, W already existed in LSDJ before. It was a very handy command that used to work only in the Pulse channel and controlled Pulse [W]idth Modulation (or PWM for uppity initiates, pronounce “Pwuhmmm”). Even though the Pulse channel Width parameter was only limited to 4 values, (12.5%, 25%, and 50%, with 75% being the inverse phase twin of 25%), being able to control it thanks to the W command opened up a lot of bleepy sound design possibilities. Using and abusing this command has always been, as far as I can remember, a staple of the LSDJ workflow.

Cycling through the 4 Pulse Width settings

But we’re not here today to talk about Pulse channels. These have been thoroughly accounted for last time already. Time for the Wave channel to shine! As true as it may be for the distinctive squarewave sound of the Game Boy Pulse channels, LSDJ probably wouldn’t have been nearly as popular if it didn’t allow us to tap into the nigh-infinite power of the Wave channel.

I will try not to blab at length about how the Wav channel works in its finest intricacies. I’ve already tried, and the result was a FRIGGIN ONE-HOUR LONG VIDEO. However, a basic understanding of how the WAV channel instrument parameters work is necessary to fully grasp how useful the upgraded W command of 5.0.0 is.


Most basically in LSDJ, the Wave channel acts a 4-bit waveform generator. In each WAV instrument, you can select a SYNTH slot, out of F(16), which will assign a sequence of 16 waveforms out of 256, interpolated from START and END parameters. But let’s not go over the SYNTH part right now, what we’re really interested in today are the INSTRUMENT parameters. And what these do, is decide how the sequence of 16 waveforms will be played back.

Let’s take a look at the WAV INSTRUMENT screen.

Parameters exclusive to the wave channel.

As we’ve said, SYNTH selects a sequence of 16 waveforms.

  • PLAY determines how the sequence will be played back:
    • ONCE plays forward once through the frame sequence.
    • LOOP plays forward through the frame sequence then loops.
    • PINGPONG plays through the frame sequence forward then backwards.
    • MANUAL plays frame 0 by default and does not cycle through the sequence.
  • LENGTH determines how many frames out of 16 will be played. Zero counts as one.
    • length 0, only frame 0 plays.
    • length 1, frame 0, then F
    • length 2: 0, 7, F
    • length 3: 0, 5, A, F
    • length 4: 0, 3, 7, B, F
    • length 5: 0, 3, 6, 9, C, F
    • length 6: 0, 2, 5, 7, A, D, F
    • length 7: 0, 2, 4, 6, 9, B, D, F
    • length 8: 0, 1, 3, 5, 7, 9, B, D, F
    • length 9: 0, 1, 3, 5, 7, 8, 9, C, E, F
    • length A: 0, 1, 3, 4, 6, 7, 9, B, C, E, F
    • length B: 0, 1, 2, 4, 5, 7, 8, A, B, D, E, F
    • length C: 0, 1, 2, 3, 5, 6, 7, 9, A, B, D, E, F
    • length D: 0, 1, 2, 3, 4, 6, 7, 8, 9, B, C, D, E, F
    • length E: 0, 1, 2, 3, 4, 5, 6, 7, 9, A, B, C, D, E, F  (all but frame 8)
    • length F: ALL FRAMES
  • REPEAT determines how many frames will be played (in a loop) after the first PLAY sequence ends.
    • In LOOP Mode: Repeat 0 holds your last frame
    • 1 plays through frames and loops your last 2 frames,
    • 2 plays through frames and loops your last 3 frames.
      and so on.
    • In PINGPONG Mode: Repeat 0 hold your last frame
    • repeat 1: plays through frames and alternates between final two frames
    • repeat 2: plays through frames and then ping pongs between last 3 frames
  • SPEED determines how long each frame will be played, in ticks.

Massive Shoutout to Danimal Cannon for providing a reference for most of this invaluable information. You can find the original thread on

Breathe in, breathe out, read again, and test it. Best way to grasp how it all works together.

Long story short, if your START point sounds like “OOH” and your END point sounds like “AAH”, your sequence will go like this : “WWWOOOAAAHHH”, but you can also make it go ” WAWAWAWA” or “WAWWWW” or even “WAWAWAAAAA”.

*whispers in the assistance*

“I thought this was about a new command?

Where is he going with this?

Why is he making those fart noises with his mouth”


I’m getting there, I promise.

So. The famous W command. Here we are, finally.

Just as Pulse Finetune parameters were tied to Instrument values prior to 5.0.0, so were the Wave parameters we just reviewed. And just as the upgraded F command gives us control over Pulse Finetune independently from Instruments, the upgraded W command allows us to control some of the Wave instrument parameters in Phrases and Tables. Bear with me, this is pretty amazing.

Given how many options there are in the Wave Instrument screen, cramming all of them inside a two-digit letter command would be pretty impossible, and I’d wager that’s why it was never attempted before. However, thanks to the big community effort that gave way to all these updates, this particular request was very vocally backed, just enough to get under the spotlight and pique Johan Kotlinski’s interest. After a lot of discussion and surveying, a compromise was reached, and 5.0.0 saw the light of day.

Here’s what the 5.0.0 W command can do:

  • The first digit controls SPEED: how long each frame of the sequence lasts, in ticks
  • The second digit controls LENGTH: how many frames out of 16 are played back (zero is one)

PLAYback type and REPEAT are still tied exclusively to the Instrument value, but you can now adjust Playback speed and Sequence Length independently. In layman’s terms, you now only need one instrument to go from “WWWOOOAAAHHH” to “WAWAWA”.

W command also changes color palettes (not).

Here’s a pretty shameful display of my sick MSPaint Skills for the sake of illustrating my inane written onomatopoeia. C6 I00 Notes are Kicks, I01 notes are a Bass. Each area of a different color highlights the effect of the W command, which changes the cycle speed mid-phrase. What could have taken up to 6 slightly different instrument slots only takes one.

  • Dark Blue cycles through 16 frames at 6 ticks per frame (16th notes)
  • Purple cycles through 5 frames at 3 ticks per frame (32nd notes)
  • Red goes back to the slowest cycle possible
  • Orange repeats what Purple did
  • Yellow does quick 32nd note triplets with 3 different frames

Let’s also point out that inputting W commands inbetween Instrument values allows to control the cycle speed without resetting it to frame 1. Prior to 5.0.0 this would have taken several instrument slots and a great deal of tinkering with F commands.

Why is this a big deal? Well you’ll find that I tend to repeat myself a lot lately, but I rest my case: OPTIMIZATION. Less memory, less instrument slots used up for a slightly faster version of the same wubbly bass or wibbly lead, more freedom for something else! But also CONTROL. In a lot of cases, as illustrated above, melodic Wave instruments are tucked one step behind Wave channel Kick Drums and thus, often off-beat. The W command allows you to control how waveframe cycles behave in relation to the rhythm while keeping it contained inside fewer Instrument slots.

Once again, time to get cracking. As if LSDJ wasn’t wubwub-friendly enough already, 5.0.0 has unleashed it’s potential even more, and I can’t wait to see how artists will appropriate these new features!

Next issue we’re going to tackle the hugely controversial topic of the Linear Pitch update. See you then!

Note: traducción al Español por Pixel_Guy encontrado aquí

Dig this article? Then consider supporting us on Patreon!