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

Dynamics and Energy

Dynamics are the volume relationships in your music. Good dynamics create excitement; poor dynamics create fatigue.

The Dynamic Range

Dynamic range is the difference between quietest and loudest moments:

Track TypeQuietestLoudestRange
Pop (compressed)0.71.0Small
Sonic Byte0.31.2Medium-Large
Classical0.11.0Very Large

More range = more emotional impact.

Section Dynamics

Each section has a baseline energy level:

SectionDrum LevelBass LevelOverall
Intro0.6-0.70.5Low
Build0.7→0.950.6→0.9Rising
Main1.01.0Full
Break0.3-0.50Very Low
Peak1.1-1.21.1Maximum
Outro1.0→0.30.8→0Falling

Building Energy

Progressive Volume

8.times do |i|
  drums (0.6 + i*0.05), (0.5 + i*0.05), (0.4 + i*0.04)
end
# Volume: 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95

Adding Elements

# Bar 1-2: Kicks only
in_thread do
  8.times { kick 0.7; sleep 1 }
end

# Bar 3-4: Add hats
in_thread do
  sleep 8
  8.times { hat 0.5; sleep 0.5 }
end

# Bar 5-6: Add snares
in_thread do
  sleep 16
  sleep 1; snare 0.6; sleep 1; snare 0.6; sleep 2
  sleep 1; snare 0.7; sleep 1; snare 0.7; sleep 2
end

# Bar 7-8: Add bass
in_thread do
  sleep 24
  2.times { bassline 0.8 }
end

sleep 32

Filter Opening (Perceived Loudness)

with_fx :lpf, cutoff: 50, cutoff_slide: 32 do |fx|
  control fx, cutoff: 110
  # Sound gets brighter = perceived louder
  8.times { bassline 0.8 }
end

Releasing Energy

Progressive Fade

6.times do |i|
  drums (1-i*0.12), (0.9-i*0.1), (0.7-i*0.08)
end
# Volume: 1.0, 0.88, 0.76, 0.64, 0.52, 0.4

Removing Elements

# Bar 1-2: Full mix
in_thread do
  2.times { drums 1, 0.9, 0.7; bassline 1; melody 0.8 }
end

# Bar 3-4: Remove melody
in_thread do
  sleep 8
  2.times { drums 0.9, 0.8, 0.65; bassline 0.9 }
end

# Bar 5-6: Remove bass
in_thread do
  sleep 16
  2.times { drums 0.75, 0.6, 0.5 }
end

# Bar 7-8: Drums fading
in_thread do
  sleep 24
  drums 0.5, 0.4, 0.35
  drums 0.3, 0, 0.2
end

Filter Closing

with_fx :lpf, cutoff: 85, cutoff_slide: 24 do |fx|
  control fx, cutoff: 50
  # Sound gets darker = perceived quieter
  6.times { bassline 0.8 }
end

The Loudest Moment

Every track should have a clear peak — the loudest moment:

# PEAK section
in_thread do
  drums 1.15, 1.05, 0.85  # 15% louder than Main
end
in_thread do
  bassline 1.1, 90        # Brighter cutoff
end
in_thread do
  melody 0.95             # Strong melody
end

Peak Timing

The peak usually happens:

  • Around 2/3 through the track
  • After a tension/break section
  • Before the outro begins

Contrast Creates Impact

The peak feels loudest because of contrast with quiet moments:

# BREAK: Very quiet (16 beats)
in_thread do
  16.times { hat 0.35; sleep 0.5 }
end
sleep 16

# PEAK: Full volume
hit 1.5
in_thread do
  drums 1.2, 1.1, 0.85  # Feels MASSIVE after quiet break
end

Without the quiet break, the peak would feel ordinary.

Dynamic Curve Visualization

Energy
  │
  │           ┌─────┐
  │      ┌────┘     └──┐
  │   ┌──┘             └───┐
  │ ┌─┘                    └──┐
  │─┘                          └──
  └─────────────────────────────────►
   INTRO BUILD MAIN BREAK PEAK OUTRO

Quick Reference

# Building energy
8.times { |i| drums (0.6+i*0.05), (0.5+i*0.05), (0.4+i*0.04) }

# Releasing energy
6.times { |i| drums (1-i*0.12), (0.9-i*0.1), (0.7-i*0.08) }

# Section levels
# Intro:  drums 0.7, 0, 0.4
# Build:  drums 0.85, 0.7, 0.55
# Main:   drums 1, 0.9, 0.7
# Break:  drums 0, 0, 0.35 (or just hats)
# Peak:   drums 1.15, 1.05, 0.85
# Outro:  drums fade from 1 to 0.3