Drops on Demand

12 May 2014

Diving into the sPiDers web

Approach

As I always like to do with big projects, I’ve started by covering a lot of the various elements in a small amount of detail, so as to better understand how the various components will work together, and identifying which will take the most amount of time so I know what to prioritise.

So far, I’ve set-up some basic elements for the following aspects of the Dropship: - generative kick-drum rhythms - generative bass melodies - 4/4 and 12/8 time signatures - random snare and hi-hat loops - high-quality bass sound synthesis - wavetable synthesis and recreating aspects of NI’s Massive plug-in - build-up styles - sample-synths (i.e. synths based on melodic one-shot samples such as a piano) - synthesised effects (so far only sirens and atmospheric effects)

As I’ve said before, a dubstep Drop is only as good as the build-up before it, and, even more specifically, the 4 beats immediately before the drop are of huge importance. @kasima found this great page of Vines of exactly this moment.

These often feature a spoken word or phrase and/or a complete drop-out of all other instruments for maximum dramatic effect. This key element of the structure will help shape everything that comes before and after it so that’s going to be next on my hit-list. Then I’ll return to the melodies that the Drop bass plays, and then the quality and variation of the bass sound, itself.

In the meantime, here’s a little explanation and some Pd extracts for each of the elements that I’ve set-up, already.

Generative kick-drum rhythms

I started off by writing kick-drum patterns into tables, with the x-axis being the beat within the bar i.e. 1-16, and the y-axis being the complexity-threshold that that beat should occur above. The complexity threshold is a number from 1 to 7, with 1 being sparse, and 7 being most complex, and is set at random every time a new track is generated.

So, for example, kick-drums should occur on beat 1 at any complexity, so it has a complexity threshold of 1, whereas kick-drums on beats 4, 5 and 7 should only occur when the complexity threshold is higher, so they have a threshold of 5 or 6, perhaps. The good thing about this technique is that, because I input the patterns in the first place, it offers a lot of flexibility while still guaranteeing that the patterns always sound musical.

Generative bass melodies

In many genres, bass melodies are often repeated over the course of a few bars, so I’ve created a little sub-patch which generates a random string of numbers that can be read through multiple times. Furthermore, in the case of dubstep, many bass lines only feature a few different notes, so I’ve chosen an approach which simply switches between three intervals relative to the root note. The message box just above the outlet on the right increases from 1 to 16 (beats of the bar) and queries the list to output the Nth item of that list, resulting in the string of 0s, 1s and 2s (corresponding to our three note options).

The notes that the note options actually correspond to are also chosen at random from a range of options. Here, the sets of numbers in the message boxes are in semi-tones, so the first note option is the root note, the second note option is two semi-tones higher, and the third option is three semi-tones higher. In the last message box, we have the options of one semi-tone below the root note, then the root note, and then three semi-tones above the root note.

Lastly, to prevent just a constantly changing string of bass notes, the resulting note value of the above two processes is actually only used if there is a kick-drum hit during that beat, which helps keep the bass and kick nicely synchronized.

We also re-use the repeating sequence trick for the rate of the wobble/tremolo for the bass, except with the wobbles we have four potential settings so it generates numbers from 0-3 rather than 0-2.

Here’s the whole chunk dealing with note-choice, tonality and wobble rate for the bass:

Swung-4/4 and 12/8 time signatures

There are some great examples of dubstep in swung-4/4 or 12/8 time-signatures and luckily it wasn’t too tricky to implement. It is, however, a bit of a distraction from the main aim at the moment so I’ve not gone into it further than just making it work for the drums and bass i.e. in order to make it useable in production, I would have to vet and include a bunch of snare/hi-hat loops in 12/8 and make sure we were always getting loops from the right bank - admittedly not a huge amount of work, so hopefully there will be time…

Implementing swung-4/4 was pretty easy - just delay the even-numbered beats by a small amount relative to the bpm of the track and Bob’s your father’s brother.

12/8 was slightly trickier, especially as I didn’t want to have to re-write all of the bass-drum rhythms specially for a different time-signature.

In the end, I basically ended up skipping the third semi-quaver in every group of four, and then spacing the remaining 12 beats out equally over the same time-period. Figuring out where to add the extra ticks for the offset took a bit of headscratching, but in the end it meant that all of the original bass-drum-rhythms would work out of the box.

Random snare and hi-hat loops

Dubstep snares are almost always simply on the back-beat i.e. 2 and 4 in the bar. I started out by getting a bunch of one-shot snares and playing them back, and that worked well enough. Hi-hat patterns tend to be a lot more complex, however, and they often interact with the snare rhythms a lot, so I decided to get a bunch of pre-made snare and hi-hat loops involved. This worked really well becuase, even with just 10 or so loops, when combined with the generative kick sound and rhythms you can still get a lot of variation. The effects and processing on the loops are still going to be done in realtime.

High-quality bass sound synthesis

What good is obnoxious dubstep without massive, dirty, filthy, disgusting bass sounds that literally make you screw your face and want to throw up? Exactly. The undisputed king of all things dubstep bass synth, when it comes to the world of synthesis, is Native Instruments’ MASSIVE. I met some people from Native a while back and they boldly claimed that their plug-in effectively shaped the whole sound of modern dubstep, and I think any producer would struggle to disagree.

I looked to MASSIVE for inspiration, and have ended up copying certain chunks of it’s functionality, as best as I can, in Pd. Simply playing around with the plug-in, watching some really great YouTube videos of people designing presets and sounds, and, of course, reading the manual, has really impressed upon me just how sophisticated this piece of software really is.

At its core, MASSIVE is a wavetable synthesiser, meaning that each of its oscillator sections actually generates audio by looping and scrubbing through table representations of single-cycle waveforms. Simple enough, right? Play back a wavetable of a sinewave at 440Hz and you’ll hear a sinewave at 440Hz. That example could be easily enough recreated with realtime synthesis, however with wavetables, you can just as easily be reading through a very complex waveform such as this: or this: , allowing you to get really rich, interesting sounds without having to figure out how to actually generate such waveforms in realtime.

I’m struggling not to go into loads of details about how MASSIVE works, which I may either do in a separate post, or just link you to the MASSIVE manual, which makes for fascinating reading if you’re into this kind of stuff. I also came across this awesome website (where I grabbed the above wavetable images from), which lists all of the wavetables along with their transformations when using the Wavetable-position knob in the oscillator section - the other absolute weapon in MASSIVE’s armoury.

I’m going to leave the deep-dive into recreating some of the MASSIVE sounds for a separate post, as it’s quite extensive and I’d like to improve it a bit more before explaining it. I can already tell that I won’t be able to recreate the sound exactly, but even my imitation of the methods and signal flow have already given me a lot of interesting and high-quality sounds to play with. For now, however, have a look at this little video of some growly sounds produced so far:

Build-up styles

As I keep repeating, a big drop generally needs a big build-up to maximise its impact. I’ve done some analysis of build-ups in dubstep tracks and they often feature common tropes. I aim to have a bank of build-up styles in the patch that can be chosen at random. For the moment, I’ve implemented the sequence of events found in this Bassnectar tune.

Each instrument has a set of instructions to follow for the build-up range of 0-1. The nice things about this system is that you can let it gradually ebb back down to its natural state if the track doesn’t drop, for whatever reason.

Sample-synths

I grabbed some samples of a piano and implemented them as a sample-synth so we can have high-quality 'real' sounds. This will work great for pianos, strings and brass instruments.

Synthesised effects

There's also a bit a of real-time synthesis for the backround atmospheric effects (although I’m not too keen on them at the moment - basically just filtered noise and delay), and turned to Andy Farnell’s bible on procedural audio, Designing Sound, to create the lovely siren sounds you can hear in the video above. Hopefully there will be room for some more synthesised elements in the Dropship.

More as I have it...