Skip to content

Synthesis for coders

  • Published: 2024-10-16 13:01
  • Updated: 2024-10-17 13:39

This exists to inspire size-coders—who also write the music for their intros, and are not comfy with it—to try different approaches or perspectives.

I’m writing this ‘from the top of my head’. And’d like it to be taken as conversation-starter. Because it’s probably scratching the “How-to-draw-an-owl”-meme too much. If you’ve got any questions, ping me via fediverse, the Pouet thread or Discord (you’ll find me via the demoscene one).

If you’re working on a Sointu track, and could need production- or sound-design perspective, don’t hesitate to contact me. No matter who you are, which group you’re in, how much experience you have (or how bad you deem your music to be).

General considerations for a “natural” sound

As a starting point for my first Sointu project, these are the most common patch-design pitfalls I avoided to get a more organic sound instantaneously:

  • Presets
    • Especially static sounds—more about that below
  • The default reverb
  • Compression and limiting
    • There’s no compressor in the fr-minus-210 track
      • Just conscious attack to sustain management
      • Srsly: We’ve got nKW PA’s and capable operators
      • -9db RMS are enough for everyone (imho)
  • Envelopes attacking in the nanoseconds range
    • Don’t “POCK” unless you really mean to!
  • Unmanaged low-end/sub information, see Bassdrum tips
    • As a rule of 👍: A 12db high-pass with freq between 8-11 doesn’t hurt
      • Especially before potential compression
        • And I’d unlikely use more than a ratio of 1:0.125 on the global

Raymarching as a metaphor for interesting music

Looking at the way you live-code shaders, you know what I’m talking about: Without further ado, a cube is a boring, static object. That becomes interesting by changing its properties over time. There’s always the point at which you introduce some kind of emerging quality. Often leveraging raymarching to introduce complexity. Using randomness to infuse emerging properties. To add visual interest.

Sound follows the same underlying principles. So does visual design. Vertical rhythm anyone? How many times can you see or listen to exactly the same iteration of the same thing before it becomes boring? Especially with 4/4 tracks? A lot of musicians struggle with this, too. Get stuck in the loop. Deem a project to be 💩, and throw it away.

Math and logic make sound compelling

As a minimalist, I only get away with the things I do, because I consciously add as much value to every element as possible. In this case: value also includes movement. Whilst trying to break the grid of repetition as effectively as necessary. To subtract my need for adding more.

In my book, the most effective math strategies to add movement to a track, or break the grid are:

  • Alternating, overlapping sequence-, and modulation lengths
    • Using a combination of synced and unsynced LFOs
  • Randomness as modulation source
    • Eg subtle sample & hold on a frequency modulation
  • Offsetting delay times from the grid by a small value

Even if they don’t know feel like much at first: Small things accumulate. And who am I even telling this? You know that way better than I do. All I’m trying to do here, is to appeal to what you already understand. And want to encourage you to apply that to your compositions more consciously.

For your inspiration

Maybe, it helps to look at these artists through more specific lenses:

United by anally retentive attention to detail in their fields. Or how about checking out generative sequence generators? Like stochastic and euclidian ones? Or look into the modular synth scene to learn more about how they use logic and math to create generative music?

Bassdrum synthesis strategies

Sick of potentially fishing in the Cpt. Hollywood/Eurodance kick department? Try a different approach, based on the topographic commonalities of the Roland TR-808/909:

  • Body” osc: Clip the attack of the pitch envelope to restrict the range
    • To get a flat attack/decay transition
    • In the 2ms range
  • Generate the midrange/high-end harmonics (500hz-20khz) from a click
    • Using a bandpassed square osc, and a fast envelope
      • The attack rate/curve of its amp env impacts the character in the ns range
    • Adjust bandpass frequency to taste
      • Too low settings may result in phase cancellation with the body
      • Resulting in a hollow character
    • Square polarity also impacts the attacks’ punch

808 approach

  • The 808 derives its body from a damped network of filters (not really size-coding compatible), however—avoiding a ‘pure’ sine already helps:
    • Try subtly waveshaping a sine with a distortion (atan clipping ftw)
    • Or derive the body from a resonant, subtly frequency modulated filter (in the audio range), then filter the result

909 strategy

  • The 909 uses an envelope-lowpassed triangle for the body
    • Re-use the clipped pitch envelope for the lowpass filter
      • Use the fundamental of the body (the sustained stage) as filter cutoff frequency reference for a start
      • Adjust modulation amount of env>lowpass according to how many harmonics you’d like to persevere
        • This spares you further distortion/waveshaping operation

Manage the dc offset range

Think about reds and jpeg compression—it hopefully serves as metaphor: Signal information between 0-5hz biases the sum signal, and acts like a dc offset in complex signals. It doesn’t compress well. Whilst carrying a lot of RMS power potential. That compromises the entire signal chain.

  • High-passing your kick around frequency setting 8-11 (Sointu) w/o resonance manages that range
    • It opens the sum, adds clarity to the result (image compression metaphor applies)
    • TokyoDawnLabs Prism provides you with insights
      • It’s free—and made by cool folks with scene-related roots
      • The dc offset is indicated by a subtle grey line on the left hand
      • Rule of 👍: Values below -64db are favorable
  • If the size limitation requires restrictive use of operators
    • I’d keep at least the 12db/oct highpass filter before the global output
    • In case of compression, place it before that

Snare drums

Imho, a snare gotta have that initial, woody transient. That can be synthesized right from the bat. Three factors contribute to this:

  • The attack of the first, ‘body’ oscillators’ amp envelope

… to be continued