9 Eighties Lead & Chiptune

This chapter explores additional sound design problems using the problem solving approach elaborated in Chapter 8. The first problem is to recreate an 80's-style lead from the show Stranger Things. The major strategy used to this problem is working backwards, since the goal is to emulate something that already exists. The second problem is to create a chiptune-style groove reminiscent of arcade games and early computers. For the chiptune problem, the main strategies are decomposition and looking at related problems.

9.1 Eighties Lead

The music of the show Stranger Things uses vintage synthesizers in order to match the 1980's setting of the show. The theme song uses an arpeggio as a lead. An arpeggio is a type of broken chord, or chord that is played one note at a time. Arpeggios are a common element in electronic music likely because many synthesizers (and VCOs) have historically been monophonic and so can only play one note at a time. Recreating the Stranger Things arpeggio in modular is an interesting sound design problem because it requires working backward from the recording and doing a little detective work to infer how the sound was originally created.

9.1.1 Waveshape

The first step is to determine the waveshape used in the arpeggio. Because the theme is composed using vintage synthesizers, we can expect it to use basic waveshapes like sine, triangle, saw, or square rather than a complex wavetable. Listen to the theme in Figure 9.1 to see if you can identify what kind of waveshape is used, paying particular attention to the brightness of the sound, which indicates higher harmonics.

Figure 9.1: YouTube video of the Stranger Things theme song. Image © Netflix.

To me, it starts off a bit dull, like a sine or triangle, then gets brighter around 15 seconds, duller again around 30 seconds, and has a quick run up to brightness around 50 seconds. The brightness suggests that the waveshape is either saw or square. We'll return to the change in brightness in the next section.

Saws and square waves can be distinguished by their frequency spectrum as discussed in Section 3.2. Specifically, saws have both even and odd harmonics, whereas squares have only odd harmonics. Thus a frequency spectrum could help identify which waveshape is being used. Using a frequency spectrum this way allows us to use the working backwards strategy and also use the frequency spectrum as an evaluation criteria.

It is much more convenient to use Audacity than R here because Audacity allows a portion of a track to be auditioned and then frequency spectrum to be computed for that portion. This makes it relatively easy to isolate a portion of the song with just a single note of the arpeggio while it is bright.74 Figure 9.2 shows the frequency spectrum of a single note of the arpeggio around the 50 second mark.

Frequency spectrum of a single note from the Stranger Things theme arpeggio.

Figure 9.2: Frequency spectrum of a single note from the Stranger Things theme arpeggio.

Characteristics of the frequency peaks are shown in Table 9.1, including the harmonic ratio of each peak with the fundamental. Assume for a moment that these are harmonics even though the harmonic ratios are not strictly integers. Since both even and odd harmonics are present, this spectrum is consistent with a saw wave. However, this pattern is also close to that of two square waves, one with a fundamental at 40 Hz and one with a fundamental at 82 Hz.75

The ambiguity between a single saw and two squares can interrogated by examining the amplitudes in Table 9.1. The amplitude peaks at 82 Hz and 164 Hz could be from constructive interference, specifically a saw at 40 Hz and a square at 82 Hz where the square reinforces the existing harmonics of the saw. Alternatively, these amplitude peaks could potentially be created by two square waves where the square wave at 82 Hz is mixed in more strongly.

Table 9.1: Characteristics of the frequency peaks in Figure 9.2.
Frequency Amplitude Harmonic Ratio
40 -39.1 1.00
82 -25.2 2.05
122 -39.6 3.05
164 -27.4 4.10
204 -40.5 5.10
247 -43.7 6.18
285 -43.4 7.13
326 -37.1 8.15
367 -46.9 9.18
410 -40.6 10.25

These possibilities can be examined by modeling each in modular. The problem solving approach then is to create a model of each possibility and then use them to reason about how the true frequency spectrum was created. This is a subtle, yet significant shift in using modular: we are now using it to create alternative models in order to reason about the correct model.

Try patching two square waves at 40 and 82 Hz and a saw and square wave at the same frequencies using the button in Figure 9.3. Because the current spectrum analyzers available in Rack are too noisy to closely compare with the target spectrum, you'll need to record output with Audacity and plot spectrum there.76

Figure 9.3: Virtual modular for assessing whether two square waves or a saw and a square wave are a closer match for the target spectrum.

Figure 9.4 shows the frequency spectrum of the two square waves and the saw plus square wave model. In both cases, the first three harmonics approximately match the target spectrum in Figure 9.2, but they diverge on the 4th harmonic. Our inability to get the 4th harmonic with either of these models suggests another element is needed. One possibility is a third wave, but we may also be able to further adjust the spectrum in our existing models by applying PWM to the square waves. Try adding PWM to the 82 Hz square wave in both models to match the target spectrum using the button in Figure 9.5.

Frequency spectrum of two square waves (upper) and a saw and square wave (lower) at 40 and 82 Hz, respectively.

Figure 9.4: Frequency spectrum of two square waves (upper) and a saw and square wave (lower) at 40 and 82 Hz, respectively.

Figure 9.5: Virtual modular for assessing whether two square waves or a saw and a square wave are a closer match for the target spectrum, when PWM is applied to the higher frequency square wave.

Figure 9.6 shows the effect of PWM on the 82 Hz square wave. In both cases, the 4th harmonic got boosted but not enough to match the target spectrum in Figure 9.2. However there is a nice flattening of harmonics 5-7 that matches the target spectrum, which suggests PWM should be kept. Thus it seems necessary to add another wave at the 4th harmonic (164 Hz). A square wave is appropriate because it would more precisely target the 4th harmonic, whereas a saw would affect the 4th harmonic relatively less and increase successive harmonics more evenly. Try adding an additional square VCO at 164 Hz square wave in both models to match the target spectrum using the button in Figure 9.7.

Frequency spectrum of two square waves (upper) and a saw and square wave (lower) at 40 and 82 Hz, respectively, when the 82 Hz wave is pulse width modulated with a 36% duty cycle.

Figure 9.6: Frequency spectrum of two square waves (upper) and a saw and square wave (lower) at 40 and 82 Hz, respectively, when the 82 Hz wave is pulse width modulated with a 36% duty cycle.

Figure 9.7: Virtual modular for assessing whether two square waves or a saw and a square wave, both with PWM applied to the higher frequency square wave, are a closer match for the target spectrum when an additional square wave is added at the 4th harmonic.

Figure 9.8 shows the effect of the new 164 Hz square wave. In both cases, the 4th harmonic looks good and the spectrum is a good match to the target spectrum for the first 8 harmonics. Choosing between them is therefore somewhat subjective, but the all square wave spectrum seems to match the target spectrum a bit more closely to me in the higher harmonics, so let's use that as we move to the next step.

Frequency spectrum of three square waves (upper) and a saw with two square waves (lower) at 40, 82, and 164 Hz, respectively, when the 82 Hz wave is pulse width modulated with a 36% duty cycle.

Figure 9.8: Frequency spectrum of three square waves (upper) and a saw with two square waves (lower) at 40, 82, and 164 Hz, respectively, when the 82 Hz wave is pulse width modulated with a 36% duty cycle.

9.1.2 Dynamics

It was previously noted that the arpeggio changes in brightness over time. We know that filter sweeps are a common effect that would change brightness. Since the brightness comes and goes every 15 seconds (1/15 = .07 Hz), we could set up an LFO to change the cutoff on an LPF that would, presumably, create the change in brightness we're looking for. However, there seems to be another more subtle change to the brightness, which is the shape of the envelope. Take another listen to the target recording and see if you hear more pronounced notes when the arpeggio is bright and more slurred notes when the the arpeggio is dull. We can try to use the same LFO to affect the ASDR envelope to create this effect as well.

Before moving on with dynamics, it makes sense to update the patch with sequenced notes rather than a constant pitch. This will facilitate going back and forth between the patch and the target recording when making small parameter changes. Try setting up the arpeggio using the button in Figure 9.9. This will require adding a clock and sequencer, tuning the sequencer steps, and running the VCOs through an envelope. The arpeggio plays up and down over a broken C major 7th chord: low C, E, G, B, C, B, G, and E.

Figure 9.9: Virtual modular for setting up an arpeggio using the final patch from Section 9.1.1.

Now we can add dynamics to the patch as previously discussed. Try adding a VCF and an LFO to control both the VCF and the ADSR using the button in Figure 9.10. Deciding the VCF and ADSR's setpoints and just how much the LFO will affect them can require a lot of back and forth as the changes are fairly subtle.

Figure 9.10: Virtual modular for adjusting dynamics using the arpeggio patch from Figure 9.9.

Altogether the solution seems fairly reasonable, though since the waveshapes were based on a sample of the the spectrum in a particular part of the overall cycle, it could be that the lowest square wave should be a saw in order to sound correct as the filter cutoff cycles up and down. Other possibilities in our current design space include a slight detuning between square waves that changes over time or PWM that changes over time.

9.2 Chiptune

Chiptune is a genre of music so-called because it originated in sound chips used to synthesize music in early electronics like arcade games and computers. These early sound chips had low-fidelity digital implementations of various functions we've encountered in modular, like basic waveshapes, noise generators, and envelopes. Because the sound chips were relatively limited in capability, designers developed various techniques to create bigger and more interesting sounds. One of these tricks, the arpeggio, allowed chips with limited polyphony to emulate it, and thus arpeggio, particularly fast arpeggio, is common in chiptune. If you are not familiar with chiptune, check out the video in Figure 9.11.

Figure 9.11: YouTube video of a chiptune groove. Image © Noise Engineering.

Our design problem is to create a rapid arpeggio reminiscent of chiptune that transposes over time, like Figure 9.11, along with simple percussion in the form of hats and kick drum. Let's use a decomposition strategy and look at related problems along the way, using the following sequence:

  • Triad arpeggio
  • LFO-controlled PWM
  • Secondary sequencer for transposition
  • Hats and kick

Building this out incrementally nicely illustrates the power of decomposition into related problems we already know how to solve.

9.2.1 Triad arpeggio

We made an arpeggio in the previous patch, so this that is a related solution we can adapt. A few changes are necessary for chiptune however. First, arpeggios in chiptune are very fast. Second, we need a new chord to work from. Let's go with A minor, so A, B, E. Try patching up this arpeggio from scratch using the button in Figure 9.12.

Figure 9.12: Virtual modular for setting up a chiptune arpeggio.

9.2.2 LFO PWM

We previously controlled PWM using an LFO in Section 6.3.1, so it is easy to adapt that solution to control the square wave chiptune VCO. Additionally, let's add an ADSR to control the VCA to get more note-like dynamics. Try patching up the LFO into a PWM and ADSR using the button in Figure 9.13.

Figure 9.13: Virtual modular for setting up an enveloped chiptune arpeggio with pulse width modulated by an LFO.

9.2.3 Secondary sequencer for transposition

The transposition element is the most novel technique in this patch, relative to what's been covered so far. Recall that the V/Oct standard means that doubling any voltage will transpose a note up one octave. Therefore, adding any voltage to an existing V/Oct signal will raise the pitch, and subtracting any voltage from an existing V/Oct signal will lower the pitch. We can accomplish adding and subtracting from a signal by using a mixer, since a mixer simply adds two signals together and voltage signals can be negative.

A very simple idea is to use a longer sequence on the transposing sequencer where each voltage either does nothing (0 V) or is the negative of one of the voltages in the arpeggio sequence. Negating the voltage means that the resulting note will be C77 To keep things interesting, it's nice to have one or two notes that don't follow this pattern. In the patch below, I used G#, D#, C#, C, G#, D#, E, and C as the transposing sequence, changing the step at each bar. A slowed down video of the two sequencer outputs and their mixed output is shown in Figure 9.14. Try patching up the transposing sequencer and mixer using the button in Figure 9.15.

Figure 9.14: YouTube video of a slow-motion arpeggio (left) voltage mixed with the output of another sequencer (middle) to produce a transposed arpeggio that changes with each bar (right).

Figure 9.15: Virtual modular for setting up an enveloped chiptune arpeggio with pulse width modulated by an LFO, transposed by a second sequencer every bar.

9.2.4 Hats and kick

We made hats in Section 6.5 and simple kicks in Section 5.2.1, so these are both problems we know how to solve. A simple hat is just high frequency noise through an envelope/VCA, and a simple kick is just a sine through an envelope/VCA. Both voices are ideally controlled with trigger sequencers, and by using two different sequencers we can use different patterns for each. Try patching up hats and kick with their own sequencers using the button in Figure 9.16.

Figure 9.16: Virtual modular for setting up an enveloped chiptune arpeggio with pulse width modulated by an LFO, transposed by a second sequencer every bar, with hats and kick as additional voices.