Composition Journal — Feb. 27, 2024

I'm currently working on a piece for (tentatively) B-flat clarinet; MIDI keyboard/Max; and a percussionist playing a mix of standard instruments, "junk," and feedback setups.

One of the sound design techniques I've been enjoying lately is making a "spectral composite" of two sounds using Eric Lyon's "FFTease" Max/MSP package. I'm using the fftz.ether~ object, which:

  • Takes the FFT of two sounds
  • Compares the corresponding bin between the two FFTs
  • Takes either the louder or quieter of the two, depending on the settings
  • The choice can also be "weighted" toward one source or the other

I particularly like the effect of taking the quieter of the two. It's great for combining a more sustained sound and one with a percussive envelope. As the percussive sound decays, more and more of its bins "win out," imparting a percussive envelope on the output.

Sound 1: tonal/sustained

For today's sound, my sustained, tonal source was made with the open-source Surge XT synthesizer. Surge XT contains an oscillator titled "Twist" that appears to be an implementation of Mutable Instruments' "Plaits" Eurorack module. I'm using one of the organ-like wavetables to create a sound that rapidly morphs between low and high harmonics. Additionally, Surge XT supports microtuning, and I'm using the 131313... mode of 20-edo.

I then used a trick I've discovered to make samples sound like they're played through an untuned FM radio. I have a collection of samples of just raw radio static. If I use those samples to modulate a delay on my source, the static convincingly changes in amplitude along with the sample.

In addition to sounding cool, the static gives the next stage something to "chew on." I used the phase vocoder from Cycling '74's tutorial to time stretch my staticky chords, and the static causes all kinds of nice artifacts in the phase vocoder. After this, I added a little bit of saturation because having fftz.ether~ pick the quieter bin can sometimes sound a bit dull.

Sound 2: noisy/rhythmic

On the other side, I started with a sine wave oscillator in gen~ frequency-modulating itself at a single-sample delay (it was this short delay that made me need to use gen~). I used the rand~ object to modulate a number of parameters, including the starting frequency and modulation depth. This produces some nice staticky, rhythmic noises that sound like a very light synthetic snare.

I then used Logic Pro's "flex time" feature to quantize the result to a 16th note grid (which also adds some nice time stretching artifacts!)

I play two copies (one for left and one for right) of the sample with random modulation of the speed and direction.

Sound 1 & 2 combined

Finally, when I put both the sustained and percussive sources into fftz.ether~ the end result sounds like this:

I was going for something to fill out and add activity to the upper register, and I'm very happy with how it turned out.


Conclusion

I want to give a shout out to Nathan Ho. I appreciate his blogging about making sounds in SuperCollider, and it's inspired me to do write-ups of my own sound design.

Today's sounds will be combined with the chord synthesizer I mentioned on Mastodon last month. All of this is played by the keyboardist, with today's sound (and variants of it using different chords) each being assigned to a single MIDI note. Ideally I would like to be composing more quickly, but I'm teaching a class I've never taught before (Intro to Music Business), in addition to other teaching, so that's been taking up a lot of my time.

If you'd like to try this for yourself, here's a link to the patches and other materials. You'll need the FFTease package and Max 8.

Post Reactions:

User Comments