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

Drum Programming

Drums are the backbone of dark electronic music. They provide the driving force that moves bodies and creates hypnotic grooves.

The Core Elements

Kick Drum

The kick is the heartbeat. In dark electronic, it needs to hit hard.

define :kick do |v=1|
  sample :bd_tek, amp: 2*v, rate: 0.9
  sample :bd_boom, amp: 0.5*v, rate: 1.2, cutoff: 70
end

Why two layers?

  • bd_tek — Provides the punchy attack
  • bd_boom — Adds low-end weight

Key parameters:

  • rate: 0.9 — Slightly lowers pitch for more weight
  • cutoff: 70 — Removes high frequencies from the boom layer

Snare

The snare provides accent and groove:

define :snare do |v=1|
  sample :sn_dub, amp: v, rate: 0.85
end

For more aggressive tracks:

define :snare do |v=1|
  sample :sn_dub, amp: v, rate: 0.8
  sample :drum_snare_hard, amp: 0.5*v, rate: 0.88
end

Hi-Hats

Hi-hats provide rhythmic texture:

define :hat do |v=1|
  sample :drum_cymbal_closed, amp: 0.25*v, rate: 2.2, release: 0.05
end

Key parameters:

  • rate: 2.2 — Higher pitch, more metallic
  • release: 0.05 — Short, tight decay

Basic Patterns

Four-on-the-Floor

The classic electronic drum pattern:

define :drums do |k=1, s=1, h=1|
  in_thread do
    4.times { kick k; sleep 1 }
  end
  in_thread do
    sleep 1; snare s; sleep 1; snare s; sleep 2
  end
  in_thread do
    8.times { hat h; sleep 0.5 }
  end
  sleep 4
end

Pattern visualization:

Beat:   1       2       3       4
Kick:   X       X       X       X
Snare:          X               X
Hat:    x   x   x   x   x   x   x   x

Syncopated Kicks

More interesting than straight four-on-the-floor:

define :drums_synco do |k=1, s=1, h=1|
  in_thread do
    kick k; sleep 0.75
    kick k*0.6; sleep 0.25
    kick k*0.85; sleep 1
    kick k; sleep 0.75
    kick k*0.55; sleep 0.25
    kick k*0.9; sleep 1
  end
  in_thread do
    sleep 1; snare s; sleep 1; snare s; sleep 2
  end
  in_thread do
    8.times { hat h; sleep 0.5 }
  end
  sleep 4
end

Pattern:

Beat:   1   .   2       3   .   4
Kick:   X x     X       X x     X
        1 .75           1 .75

The ghost kicks at 0.75 create groove.

Double-Time Kicks

For maximum aggression (used in Nerve Damage):

define :drums_x do |k=1, s=1, h=1|
  in_thread do
    8.times do
      kick k * (0.7 + rand(0.3))  # Slight velocity variation
      sleep 0.5
    end
  end
  in_thread do
    sleep 1; snare s; sleep 1; snare s; sleep 2
  end
  in_thread do
    16.times { hat h * 0.8; sleep 0.25 }
  end
  sleep 4
end

8 kicks per bar = relentless energy.

Half-Time Feel

Slower, heavier (used in Void Walker):

define :drums_half do |k=1, s=1, h=1|
  in_thread do
    kick k; sleep 2
    kick k*0.7; sleep 0.5
    kick k*0.8; sleep 1.5
  end
  in_thread do
    sleep 2; snare s; sleep 2
  end
  in_thread do
    8.times { hat h; sleep 0.5 }
  end
  sleep 4
end

Velocity Variation

Static velocity = robotic and boring. Add variation:

define :drums do |k=1, s=1, h=1|
  in_thread do
    kick k        # Beat 1: Full
    sleep 1
    kick k*0.8    # Beat 2: Slightly softer
    sleep 1
    kick k*0.9    # Beat 3: Almost full
    sleep 1
    kick k*0.85   # Beat 4: Medium
    sleep 1
  end
  # ...
end

This creates groove even with straight timing.

Building Energy

Progressive Intensity

Drums should build through a track:

# Intro: Reduced elements
8.times { drums 0.7, 0, 0.4 }      # Kicks + hats only

# Build: Add snares
8.times { drums 0.85, 0.6, 0.55 }  # All elements, building

# Main: Full power
12.times { drums 1, 0.9, 0.7 }     # Strong

# Peak: Maximum
12.times { drums 1.15, 1, 0.8 }    # Pushed

Fading Out

For outros:

6.times do |i|
  drums (1-i*0.12), (0.85-i*0.1), (0.7-i*0.08)
end

Each iteration gets quieter.

Pattern Variations

Keep things interesting with multiple patterns:

define :drums_a do |k=1, s=1, h=1|
  # Standard pattern
end

define :drums_b do |k=1, s=1, h=1|
  # Fill/variation pattern
end

# Usage
3.times { drums_a 1, 0.9, 0.7 }  # 3 bars normal
drums_b 1, 0.9, 0.7              # 1 bar fill

The Hit Function

Impact moments need special treatment:

define :hit do |v=1|
  sample :bd_boom, amp: 2*v, rate: 0.4
  sample :drum_splash_hard, amp: 0.7*v, rate: 0.6
end

Used at section transitions:

8.times { drums 0.9, 0.7, 0.6 }
hit 1.2  # Impact before new section
8.times { drums 1, 0.9, 0.8 }

Quick Reference

# Basic kick
define :kick do |v=1|
  sample :bd_tek, amp: 2*v, rate: 0.9
  sample :bd_boom, amp: 0.5*v, rate: 1.2
end

# Basic snare
define :snare do |v=1|
  sample :sn_dub, amp: v, rate: 0.85
end

# Basic hat
define :hat do |v=1|
  sample :drum_cymbal_closed, amp: 0.25*v, rate: 2.2
end

# Standard pattern
define :drums do |k=1, s=1, h=1|
  in_thread do
    4.times { kick k; sleep 1 }
  end
  in_thread do
    sleep 1; snare s; sleep 1; snare s; sleep 2
  end
  in_thread do
    8.times { hat h; sleep 0.5 }
  end
  sleep 4
end

Next chapters cover the individual drum elements in more detail: kick drums, snares, hi-hats, and pattern construction.