Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Layering Bass

A single bass synth rarely provides the full frequency spectrum needed for powerful bass. Layering fills the gaps.

The Two-Layer Foundation

At minimum, every bass in Sonic Byte has two layers:

define :bass do |n, v=1, c=80|
  # Character layer - defines the sound
  use_synth :tb303
  play n, amp: 0.8*v, cutoff: c, res: 0.3
  
  # Sub layer - provides weight
  use_synth :sine
  play n-12, amp: 1.1*v  # One octave below
end

Why This Works

  • TB303 covers ~80-800 Hz (audible bass character)
  • Sine covers ~30-80 Hz (felt sub bass)
  • Together: full 30-800 Hz coverage

The Three-Layer Stack

For maximum power:

define :bass do |n, v=1, c=80|
  # Layer 1: Character (TB303)
  use_synth :tb303
  play n, amp: 0.75*v, attack: 0.01, decay: 0.2,
       sustain: 0.1, release: 0.15, cutoff: c, res: 0.3
  
  # Layer 2: Width/Grit (dsaw)
  use_synth :dsaw
  play n, amp: 0.4*v, attack: 0.01, decay: 0.15,
       release: 0.12, cutoff: c-10, detune: 0.18
  
  # Layer 3: Sub (sine)
  use_synth :sine
  play n-12, amp: 1.15*v, attack: 0.01, sustain: 0.25, release: 0.2
end

Layer Roles

LayerSynthRoleFrequency
Character:tb303Defines sound80-500 Hz
Width:dsawAdds stereo width, grit60-400 Hz
Sub:sinePhysical weight30-80 Hz

Layer Combinations

Aggressive (Tracks 1, 2, 4)

:tb303 + :sine           # Track 1
:tb303 + :sine           # Track 2
:dsaw + :tb303 + :sine   # Track 4 (most aggressive)

Warm (Tracks 3, 5)

:prophet + :sine         # Smoother character

Powerful (Tracks 6, 7)

:prophet + :dsaw + :sine # Warm + wide + sub

Volume Balancing

Each layer needs proper level:

# Character: Primary presence
use_synth :tb303
play n, amp: 0.75*v  # Main volume

# Width: Supporting, not dominant
use_synth :dsaw
play n, amp: 0.4*v   # About half of character

# Sub: Felt, not heard
use_synth :sine
play n-12, amp: 1.1*v  # Can be louder (low frequencies need more energy)

Rule: If you can clearly hear the sub as a separate note, it’s too loud.

Cutoff Relationships

Filter each layer differently:

# Character: Main cutoff
use_synth :tb303
play n, cutoff: c      # e.g., 80

# Width: Slightly darker
use_synth :dsaw
play n, cutoff: c-10   # e.g., 70

# Sub: No cutoff needed (sine has no harmonics)
use_synth :sine
play n-12

The width layer is darker so it doesn’t compete with the character layer.

ADSR Alignment

Layers should have similar envelopes:

define :bass do |n, v=1, c=80|
  use_synth :tb303
  play n, amp: 0.75*v, 
       attack: 0.01, decay: 0.2, sustain: 0.1, release: 0.15,
       cutoff: c
  
  use_synth :dsaw
  play n, amp: 0.4*v,
       attack: 0.01, decay: 0.15, sustain: 0.08, release: 0.12,
       cutoff: c-10
  
  use_synth :sine
  play n-12, amp: 1.1*v,
       attack: 0.01, sustain: 0.25, release: 0.2
end

Note: The sine sub has slightly longer sustain/release — this gives weight without muddying attacks.

When to Use Each Configuration

Two Layers (:character + :sine)

  • Standard bass lines
  • Cleaner mixes
  • Atmospheric tracks

Three Layers (:character + :width + :sine)

  • Maximum aggression
  • Peak sections
  • When you need to fill the stereo field

Quick Reference

# Two-layer bass
define :bass do |n, v=1, c=80|
  use_synth :tb303
  play n, amp: 0.8*v, cutoff: c, res: 0.3
  use_synth :sine
  play n-12, amp: 1.1*v
end

# Three-layer bass
define :bass do |n, v=1, c=80|
  use_synth :tb303
  play n, amp: 0.75*v, cutoff: c, res: 0.3
  use_synth :dsaw
  play n, amp: 0.4*v, cutoff: c-10, detune: 0.18
  use_synth :sine
  play n-12, amp: 1.15*v
end

# Volume guidelines:
# Character: 0.6-0.8
# Width: 0.3-0.5 (about half)
# Sub: 1.0-1.2 (can be loudest)