Hello all and thank you for reading Paul’s Tech Talk on The ChipWIN Blog!
This article is the second part of an issue on the spicy topic of PSG Chip Overclocking. In the first part, we tackled the basic theory behind what overclocking could achieve on an NES when ticks sped up enough to reach into the audio range. Today, we’re going to try and be more specific, and try out some practical examples on Gameboy.
While audio range speeds can be achieved at high tempos on stock LSDJ, we’re going to try and venture beyond that, thanks to the very unique test build of LSDJ: 5.3.5_4x, which multiplies tempo by FOUR.
Let’s dive in!
Precautions and ease of use.
As I’ve said at the end of Part 1: 4x is a very temperamental version and hasn’t been thoroughly tested. Here are a few pieces of advice I can give you after testing out the rom for a bit, in order to adapt to this very different workflow.
This version uses software overclocking, which means that LSDJ runs 4x as fast, while the CPU stays the same. Out of precaution, I would then recommend that you use an emulator to try it out. It’s unlikely that your hardware could be damaged but we don’t know, and corrupted saves are never fun. If you do want to try it out on hardware, do not use a DMG. Prefer a Gameboy Color at least.
When trying sounds out, I would also suggest to always start at tempo 80 and work your way up until you feel the GB starts to choke. If you don’t, the rom will either crash, or crawl to a halt and require a reset. Other things you can do to ease up CPU load is to work in single channels, or mute the others with [B+Select] while you’re tweaking.
We’re going to tackle CPU-intensive techniques, on a CPU-intensive rom so do proceed with parcimony. Hi-freq V commands are a very cool way to play with simili-FM and extra osc techniques, but they are very demanding in terms of processing power. I would suggest that you think twice before using them on top of other extra osc techniques. And if you do, try to maintain a low tempo setting.
Finally, here’s a piece of workflow advice that I think applies to LSDJ as a whole, but should prove extra useful in this version: use Grooves to your advantage. What I suggest is that you map each Groove to its corresponding tick count. Groove 01 would then be 1 tick per step, Groove 02 would be 2 ticks per step and so on, up to F. You still have a lot of customizeable grooves after that if you want to play with dyssymmetry or swing.
Using C (12) ticks per step as your main groove instead of 6 should also help you navigate phrases more easily. Finally, you’ll find that at these speeds, ticks can exceed the screen refresh rate, and tables can end up very hard to follow. Using G commands in tables to control their speed will help tremendously.
Extra Oscillator Pulse Bass: The Nitty Gritty
Ok, enough babble. Let’s get funky. Here are some cool techniques you can do with the 4x version. Let’s focus on the Pulse channels first.
Very similarly to what we did in the first part of this article with Famitracker, we can achieve a low rumble in LSDJ by creating an extra oscillator with ticks and clicks. The frequency of ticks in Hertz can be roughly calculated by Multiplying Tempo by 0.4. At tempo 80, LSDJ actually runs at 320 “bpm”. This means ticks will have a base frequency of 128 Hz, just a bit below C3.
Create a basic Pulse instrument with 50% duty cycle, and Put in a C3 note in a blank Phrase. Now assign a table to that instrument.
Here are a few examples of Tables you can use. The basic idea is to create an extra oscillator by making the Pulse Wave click on top of its own note, but fast enough for it to go into audio range. O-command hard pans or W-command duty cycle shifts work well, so try that out and experiment. I’ve found that 25% to 75% is the one with the loudest clicks, because we shift really fast between inverse phases.
You can play with different settings from these examples, but here is what I find to be most interesting. Use the O-command table and let your sound play, at either C2 or C3, then decrease the volume of your instrument gradually. You will hear your C note fade out, but the extra rumble will stay here. This can help you shape both oscillators individually, and mix them together very easily. Adding a slow V01 can also yield interesting (if dirty) phasing results.
Now let’s play with tempo and frequency a bit. Let your sound play out, and crank the tempo up to 160 (640), gradually. You should hear the extra osc rumble increase in pitch, and settle about an octave higher. If your basic note is still a C (play around with octaves as well), you can then increase or decrease the tempo by increments of 1 bpm to adjust the level of detune between your C and your extra oscillator. Playing with the Pulse Finetune instrument setting and the [F] command can also be a good idea.
Everything is fun and all, but you’re gonna start to think this is very limited. Since tempo determines the extra osc pitch, you’re either stuck with a single note, or a single bpm that might not fit your track idea at all! Controlling the percieved BPM is not very hard if you use different Grooves, but altering the pitch of the buzz without changing the Tempo setting does appear to be quite a challenge. Let’s see if we can wriggle out of this.
Controlling extra osc pitch without changing tempo
Crank up the tempo to 255 (1020). Make sure you’re in Song Mode. Use an O-command table, and set your Pulse instrument to a low volume, so as to hear the extra osc buzz more clearly. Then, try shifting the H command to lower rows, and play that out. Magic !!!
With the first table, the extra osc note is as high as can be for the Pulse channel. One tick on, one tick off, we are recreating a pulse wave with one pulse every 2 ticks. In the second example, with one pulse every 3 ticks, the buzz pitch is lowered by about a Perfect Fifth. In the third example, with one pulse every 4 ticks, the note is about an octave lower than the first, since its pulse should be exactly twice as slow. And so on, and so on.
With this table model, at tempo 255 (1020), we can get the following notes out of the buzz, approximately:
- H in row 2: G#4
- H in row 3: C#4
- H in row 4: G#3
- H in row 5: E3
- H in row 6: C#3
- H in row 7: A#2
- H in row 8: G#2
- H in row 9: F#2
- H in row A: E2
- H in row B: D2
- H in row C: C2
- H in row D: B1
- H in row E: A#1
- H in row F: A1
This is far from ideal, and bear in mind that this is with the highest tempo setting, so lower tempos will yield even lower notes, which will offer diminishing returns. But still, it’s handy to know that you can at least get a bit of pitch control out of that untameable buzz, without having to do complex tempo-to-pitch calculations. Granted, the available scale is minimal, but hey, that’s a nice composition challenge to look forward to! And last but not least, we’ve finally found a way to make the Pulse channel drop below its lowest intented note!
Overclocking the WAV Channel: Pandora’s Box
The Pulse channel proof of concept above created an extra oscillator by alternating a loud sound and silence every two ticks. Thanks to the Wav Channel’s natural clickiness when it changes frames, we can use the LOOP or PINGPONG modes to set up the extra oscillator to click every tick, making it twice as fast, and raising it by one whole octave. At tempo 80 (320) the extra osc at tick-1 speed will be just below C3. At tempo 255 (1020), it will skyrocket up to G#4.
The following Wav Instrument settings above should yield a pretty good example of Pulse Width Modulation. Set the tempo to 80 and keep the SPEED setting high for now, to slow the frames down and keep space between the frame clicks.
Now, create a Phrase with the note C3, and gradually lower the SPEED setting up to 1. You should arrive at a pretty buzzy supersaw kind of sound. Now crank up the tempo to 160, gradually. The extra osc will move up an octave. This is a very good basis to start experimenting. Playing with the LENGTH and SPEED settings can add even more layers of raspiness and growliness to your sound, for example. But there is so much more you can still do! Don’t hesitate to change the tempo slightly to play with phasing, change notes to create interesting warped overtones, change the synth instrument completely, make an arp, add vibrato…
Thanks to the natural clickiness of the wav channel, you really don’t need to rely on Volume or Panning to create extra oscillators. Here, the only limits are your imagination, and the CPU. Here’s a pretty gnarly sound that I was able to make by playing with the SPEED and LENGTH, and adding a Pitch command.
On that note, if you can so much as call it that, it seems that the wordcount is already too high for me to go into detail next so i’ll quickly conclude.
This particular version of LSDJ is a cornucopia for sound design experiments. I don’t really know how feasible it would be to make an actual track on it but it exists, and it begs to be cracked open. Its raw potential demands to be harnessed and channelled by you, fearless sound explorers with a thirst for danger! D&D lingo aside, the examples I’ve given on here are all but basic, stepping stones for you to jump from and dive into these uncharted waters. I’ve only mentionned Pulse and Wav, but what if there was a way to, say, make a Bass out of the Noise channel? [hint: there is] What about Kits? What about everything that still hasn’t been tried? What other limitations can be broken?
That’s for you to discover, and I wish you a very pleasant journey. I know i’m still having a ball.
Seems like Johan has been getting busy once again, so in the next issue, i’ll start covering the Second Wave of
black metal feminism post-rock updates!
See you soon.