Thursday, January 12, 2012

Synth Pads: the hardest sounds to do right

Today, I decided to try to design a synth "pad" sound. The thought of designing a pad really frightens me. You are essentially designing a patch where notes are meant to be held indefinitely. In a pad patch, a minute-long note should keep the audience interested right up to the last millisecond. This is a scary concept for me. How does one make an instrument where a single long note can be the opposite of boring?

So, I woke up this morning, fired up my laptop, took a deep breath, and came up with this humble example in Csound:
FM Pad by The Zebra Project

Here are some general concepts I thought about while making this sound:

1. Swell and Articulation:

When I designed pad sounds in the past, this one always got me. Every patch I made was just not articulate enough. I could only play really long notes, and this was a huge limiting factor for what the instrument could play. When designing this patch, I realized that pad swells are about growth in timbre, not volume. Articulation is extremely important for a versatile pad synth. Without it, your pad will always sound behind the beat. My patch has a volume envelope with an attack of 10ms and a separate "filter"(it's not really a filter, but we will call it that for now) envelope with an attack of 5 seconds.

2. Timbre and Change

A pad sound can't just be sawtooth wave. Listeners would be bored of it after the first few seconds. How the sound timbre changes over time determines the quality of Pad. Usually, I would have gone with a low-pass filter, but today I chose to use FM synthesis because you can do drastic changes to the waveform with minimal effort (it was also more interesting than a low-pass filter.) I was able to get a really interesting sound by slowly change the modulator number in the C:M ratio with a gentle LFO. I also put in a random number generator which adds very subtle deviation to pitch.

3.Wideness and Size

Creating width and size is the trick to giving your sound that overwhelming feeling. "Width" refers to the difference in sound between the left and right speakers. Slight modifications to each side gives the sound variety and realism. In my patch, I slightly detuned the left and right signals. "Size" refers to how large a sound is. The patch I have has 3 slightly detuned oscillators to give the sound of a large ensemble. To have made this a bigger sound, I could have added a large digital reverb. I didn't because it would have made the patch more complicated than I wanted it to be. Plus, I like to be careful with my reverb. It makes things messy very quickly and I almost consider it a cop-out when making good pad sounds. Reverb is like salt. It's good with the meal, but it isn't the meal.




Alrighty. That's all I have to say about that for now. Here is the Csound Code. Enjoy!


<CsoundSynthesizer>
<CsOptions>
-W
-o fmpad.wav
</CsOptions>
<CsInstruments>
sr = 96000
ksmps = 10
nchnls = 2
0dbfs = 1
instr 1
ipch = cpspch(p4)
iamp = p5*.15

;amplitude envelope with a fast attack
aenv linsegr 0, .0001, 1, 8, .9, 1, 0
;timbre modulation envelope with a slow attack
;this one changes the modulation index of the FM synth
kenv2 linseg 0, 5, 2
klfo lfo .01, .5

;random number generator. adds variety to the pitch.
krand randi .0005, 3

;3 detuned FM oscillators, sent to the right speaker
a1 foscil iamp*aenv, ipch*(1+krand)*.999, 1, 3+klfo, kenv2, 1
a2 foscil iamp*aenv, ipch*(1+krand)*1.002, 1, 3+klfo, kenv2, 1
a3 foscil iamp*aenv, ipch*(1+krand)*.996, 1, 3+klfo, kenv2, 1

;3 detuned FM oscillators, sent to the left speaker
a4 foscil iamp*aenv, ipch*(1+krand)*1.001, 1, 3+klfo, kenv2, 1
a5 foscil iamp*aenv, ipch*(1+krand)*1.004, 1, 3+klfo, kenv2, 1
a6 foscil iamp*aenv, ipch*(1+krand)*.998, 1, 3+klfo, kenv2, 1

aout = (a1+a2+a3)/3 ;combine the oscillators
aout2 = (a4+a5+a6)/3

outs aout2, aout
endin
</CsInstruments>
<CsScore>
f1 0 4096 10 1
t 0 70
;Score Generated using python and Milkytracker
i 1 0 2.0 9.02 1
i 1 2.0 2.0 9.01 1
i 1 0 4.0 7.02 1
i 1 0 4.0 6.02 1
i 1 0 8.0 8.02 1
i 1 0 8.0 8.05 1
i 1 0 8.0 8.09 1
i 1 4.0 4.0 9.0 1
i 1 4.0 4.0 6.1 1
i 1 4.0 4.0 5.1 1
i 1 8.0 2.0 9.02 1
i 1 8.0 4.0 8.04 1
i 1 8.0 4.0 8.07 1
i 1 8.0 4.0 8.09 1
i 1 10.0 2.0 9.01 1
i 1 8.0 4.0 6.09 1
i 1 8.0 4.0 5.09 1
i 1 12.0 2.0 8.07 1
i 1 14.0 2.0 8.04 1
i 1 12.0 7.0 8.02 1
i 1 16.0 3.0 8.06 1
i 1 12.0 7.0 8.09 1
i 1 12.0 7.0 9.02 1
i 1 12.0 7.0 6.02 1
i 1 12.0 7.0 5.02 1

</CsScore>
</CsoundSynthesizer>

No comments:

Post a Comment