Paul’s Tech Talk – LSDJ 5.1.0, Civil War Part 1: “Linear” Pitch

- Posted September 4th, 2017 by

Hello beautiful people and thank you for reading Paul’s Tech Talk on The ChipWIN Blog!

Today we’re going to tackle one, if not THE most groundbreaking update that happened to LSDJ in the midst of all its crazy transformations. With 5.1.0, Johan Kotlinski decided to rewrite the entire pitch behaviour in LSDJ from scratch. For the sake of this article I’m going to try and keep an unbiased point of view. Even though I am pretty partial to the newer versions, I still use the older ones as well. But it’s safe to say that this update was probably the most controversial of all, and it ruffled a few feathers in the community.

In music in general, but more particularly from a software perspective in LSDJ, Pitch is a solid foundation on which a lot of elements are built. And even though LSDJ is a shining example of software ergonomics and accessible design, its complexity still gives it a bit of a learning curve. The 5.1.0 update shook things up so much that artists would either have to relearn a lot of tried-and-true techniques that would now work just as well but very differently, or refrain from upgrading altogether, deliberately missing out on later updates and bug fixes.

Long story short, for a lot of people, upgrading to 5.1.0 and above would break songs from older versions and render quite a few staple sound design techniques obsolete. Let’s take a quick look at what has changed and get a better grasp of the situation.

In LSDJ, several elements rely heavily on how Pitch behaves. The extremely popular [P]itch Bend and [V]ibrato commands come to mind, but also [L]egato, or even the recently-introduced Pulse [F]inetune.

Prior to 5.1.0, all Pitch-based commands followed a default curve that is determined by audio hardware. Don’t worry, I’m terrible at math mumbo-jumbo so I’ll let illustrations speak for themselves. I just fired up Audacity and recorded a simple triangle wave in the WAV channel, from the highest to the lowest possible note with a slow Pitch Down command (PFF). Here it is shown in a spectrogram.

[EDIT: “The original pitch curve isn’t logarithmic, and neither is it exponential. It’s actually the pitch curve of the audio hardware which is f=131072/(2048-x). So basically the same shape as f=1/x but scaled and offset. You could perhaps call this a reciprocal curve.” Thank you Didrik!]

The lowest, thickest curve represents the fundamental tone, that is to say, what we percieve as the “note”, and all the higher, finer curves are higher harmonics, adding up to give the sound its distinctive texture. (A language nerd such as myself can only quiver in excitement noticing how closely knit the words “note” and “tone” are :3).

WAV Channel Triangle Wave following the default Hardware pitch curve – LSDJ v.5.0.3

This illustration shows what Pitch has roughly sounded like in LSDJ for the past seventeen years, give or take the odd experimental or bugged version like the elusive 3.6.3. To put it simply, this Hardware pitch curve means that the higher the note is, the faster the bend will be, and vice versa.

Prior to 5.1.0, this behaviour had a number of consequences, and implied both advantages and limitations. For example, starting at C3, a P01 command (slowest pitch up value) would take longer to reach C4 than C4 would to reach C5, so Pitch Bends were not consistant throughout octaves and had to be adjusted individually. If you transposed a song by a few semitones, some pitch-based effects could be broken because of this inconsistancy. Similarly, [V]ibrato commands also followed this curve, so even with the same settings, a V command on a higher note would bend further than on lower notes. This was also true for Pulse [F]inetune. On higher notes, the maximum setting could bend upwards of two semitones whereas lower notes would hardly reach a quarter-tone up or down.

But just like any soft- or hardware limitation in Chiptune, people managed to work around them, integrate them in their workflow and utilize them to great effect. A good chunk of the community actually thought that if a lack of consistency such as these described above was well-documented, there was little reason to tinker with it, especially for something as crucial to the workflow as Pitch behaviour. #Ifitaintbroke…

And among other things, that’s exactly what 5.1.0 did. Cue Spectrobro.

WAV Channel Triangle Wave following a “Linear” software pitch curve – LSDJ 5.1.0

After 5.1.0, Pitch has been rewritten from the ground up, and now follows a linear pitch curve, as shown above. The goal of this overhaul was, among other things, to make Pitch-based commands consistant between lower and higher notes. But it also meant the same commands with older version settings were very likely to end up broken, and would need to be rewritten in light of these new changes.

[EDIT: This curve only “looks” linear because the plotting of the graph is actually logarithmic. The nature of sound physics, pitch and our perception of sound makes this curve “feel” linear, as in intervals being equidistant. I will refer to it as “Linear” or “Software” curve for clarity’s sake. Thanks Didrik!]

I really, sincerely understand the frustration that this major change may have caused artists in the community. Having to either completely rewrite songs so that they work with the new version sucks. Not being able to upgrade to keep songs sounding as they have sucks. Having to un-learn and re-learn your entire design approach and techniques for something as crucial as Pitch bending sucks. But you know what? I think it’s really worth it, for one good reason:


I really like to describe my LSDJ experience with *finger quotes* “real instruments” comparisons. In this case, upgrading to 5.1.0 would be sort of comparable to a guitarist switching to a seven-stringer. You can still play 6-string songs but the neck has a different feel, thumb-over techniques can’t work, and you gotta be extra careful to mute, or avoid hitting the extra string. However there are things you can do on the 7 stringer that you can’t on your good ol’ Stratocaster. The comparison could also work for a Bassist trying to play on a fretless. On a fretted bass, you’re always in tune, chords are easier, your finger placement can be off and you can focus on pick hand technique. But on a fretless, strings fizz less often, texture is handled differently, you can play quarter or microtones, you can do seamless glissandos, etc.

It’s a challenge. It’s hard. It’s unfamiliar. It’s a TRADEOFF. But isn’t that also exactly what you were looking for when you started making chiptune in the first place? The good thing is, if you want to just rock out to some Jimi Hendrix, nothing stops you from picking up the fretted bass and the 6-string Strat. But if you want to challenge yourself to some new, unexplored musical options, you have the CHOICE to pick up these shiny new strange instruments, that will take some getting used to, but will yield things you could possibly not have achieved with the other.

In this article’s first part, I mostly wanted to lay down the context and theory of what changed in 5.1.0. Next issue, we’re going to get more hands-on and see examples of new techniques made possible by these huge changes, to give you as much information as possible and help you choose which installment of LSDJ is best suited to your musical style. There is no right or wrong answer, just creative options and different sets of limitations. Even if some of the foundations you’ve learned LSDJ on have been drastically shifted, I cannot urge you enough to at least TRY and keep exploring these new possibilities before dismissing one or the other altogether.

original comic: “Matrix Revisited”

The truth is, eventually you might not even have to choose. First of all, if you’re working with 2xLSDJ, just consider the possibilities offered by the conjunction of BOTH pitch routines, one cart with Hard pitch, one cart with Soft, synced together, all with different options and limitations. Amazing, right?

Secondly, and this one is pretty sweet, Johan Kotlinski did not dismiss the possibility of adding in a SWITCH function, that would allow you to benefit from both pitch behaviours in one instance of LSDJ. According to him, it would be difficult to implement right, and it’s not worth the effort yet. Little ants in the community have been cracking at it and found ways to emulate Hardware pitch instruments through clever usage of tables and other tricks (that’s what we’re gonna see in the next article). But if enough people were to find sounds that are absolutely impossible to come close to in 5.1 and later versions, then he might consider this possibility.

LSDJ has hit a new peak for now but it’s up to you all to break this open again and help it grow even stronger.

Next time, we’ll talk about Kicks, so keep kicking ass!

Dig this article? Then consider supporting us on Patreon!