Hip-Hop
Hip-hop production is built on drums, bass, and samples. From the breakbeat origins of DJ Kool Herc in 1970s Bronx to modern trap and drill, hip-hop has always been about making something fresh from existing sounds. This guide covers the essential techniques for creating hip-hop beats in Strudel.
The Foundation: Drums First
Hip-hop beats center on the relationship between kick, snare, and hi-hat. Unlike EDM’s four-on-the-floor, hip-hop drums are syncopated—kicks land off the grid, snares crack on 2 and 4, and hi-hats weave between them.
The Basic Pattern:
stack(
sound("bd ~ ~ ~ bd ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ ~"),
sound("hh hh hh hh hh hh hh hh")
).cpm(22.5)The Roland TR-808: Hip-Hop’s Heartbeat
The Roland TR-808 drum machine, released in 1980, became the defining sound of hip-hop. Its booming kick, snappy snare, and crisp hi-hats appear on countless classics:
- “Planet Rock” by Afrika Bambaataa (1982) — the 808 enters hip-hop
- “808s & Heartbreak” by Kanye West (2008) — revived the 808 for modern hip-hop
- “Mask Off” by Future (2017) — trap’s signature 808 sound
- “Sicko Mode” by Travis Scott (2018) — 808 bass as the foundation
sound("bd").bank("RolandTR808").cpm(22.5)Building a Hip-Hop Beat
Step 1: The Kick Pattern
Hip-hop kicks are punchy and syncopated. They don’t just land on 1—they bounce:
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808").cpm(22.5)Variation with more bounce:
sound("bd ~ bd ~ ~ bd ~ bd").bank("RolandTR808").cpm(22.5)Step 2: Snare on 2 and 4
The snare is the backbone—always on beats 2 and 4:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808")
).cpm(22.5)With claps layered:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ [sd,cp] ~ ~ ~").bank("RolandTR808")
).cpm(22.5)Step 3: Hi-Hat Patterns
Closed hi-hats drive the groove. Start simple, then add variations:
Basic eighth notes:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh hh hh hh hh hh hh hh").bank("RolandTR808").gain(0.6)
).cpm(22.5)Sixteenth notes for energy:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*16").bank("RolandTR808").gain(0.5)
).cpm(22.5)With open hi-hat accents:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh hh oh hh hh hh oh hh").bank("RolandTR808").gain(0.6)
).cpm(22.5)Step 4: The Complete Kit
Layer everything together:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ [sd,cp] ~ ~ ~").bank("RolandTR808"),
sound("hh hh oh hh hh hh oh hh").bank("RolandTR808").gain(0.6)
).cpm(22.5)808 Bass Design
The 808 bass is hip-hop’s signature sound—a deep, booming sub that you feel in your chest. It’s created with a sine wave and careful envelope shaping.
Basic 808 Bass
note("c1 ~ ~ ~ c1 ~ c1 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.gain(0.8)
.cpm(22.5)Long Sustain 808
For notes that ring out:
note("c1 ~ ~ ~ ~ ~ ~ ~")
.s("sine")
.attack(0.01)
.decay(0.1)
.sustain(0.8)
.release(0.5)
.gain(0.7)
.cpm(22.5)Short Punchy 808
For tight, punchy patterns:
note("c1 ~ c1 ~ c1 ~ c1 c1")
.s("sine")
.decay(0.15)
.sustain(0)
.gain(0.8)
.cpm(22.5)808 with Pitch Slide
The signature “808 glide”—notes sliding into each other:
note("c1 ~ ~ ~ eb1 ~ c1 ~")
.s("sine")
.decay(0.4)
.sustain(0.3)
.slide(0.1)
.gain(0.7)
.cpm(22.5)Distorted 808
Add warmth and presence with distortion:
note("c1 ~ ~ ~ c1 ~ c1 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.distort(1.2)
.lpf(150)
.gain(0.7)
.cpm(22.5)Layering 808 with Kick
For maximum impact, layer the 808 with the kick:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
note("c1 ~ ~ ~ c1 ~ c1 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.gain(0.7),
sound("~ ~ ~ ~ [sd,cp] ~ ~ ~").bank("RolandTR808"),
sound("hh hh oh hh hh hh oh hh").bank("RolandTR808").gain(0.5)
).cpm(22.5)Sampling & Chopping
Sampling is at the heart of hip-hop—taking existing recordings and transforming them into something new. Strudel offers several ways to work with samples.
Loading Sample Libraries
To use breakbeats and other samples, first load a sample library:
samples('github:tidalcycles/dirt-samples')
sound("breaks165").cpm(22.5)Slicing Loops
Use .slice() to chop a sample into pieces and rearrange them:
samples('github:tidalcycles/dirt-samples')
sound("breaks165")
.slice(8, "0 1 2 3 4 5 6 7")
.cpm(22.5)Rearranged chops:
samples('github:tidalcycles/dirt-samples')
sound("breaks165")
.slice(8, "0 0 3 2 4 6 5 7")
.cpm(22.5)With repeats and stutters:
samples('github:tidalcycles/dirt-samples')
sound("breaks165")
.slice(8, "0 0 0 0 4 4 6 7")
.cpm(22.5)Pitch Shifting Samples
Change the pitch to create new textures:
samples('github:tidalcycles/dirt-samples')
sound("breaks165")
.note(-5)
.cpm(22.5)Speed/Time Stretching
Slow down or speed up samples:
samples('github:tidalcycles/dirt-samples')
sound("breaks165")
.speed(0.8)
.cpm(22.5)Lo-fi Vinyl Effect
Add warmth and texture with filtering and effects:
samples('github:tidalcycles/dirt-samples')
sound("breaks165")
.lpf(2000)
.hpf(200)
.room(0.2)
.gain(0.8)
.cpm(22.5)Chops Over a Beat
Layer chopped samples over your drums:
samples('github:tidalcycles/dirt-samples')
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*8").bank("RolandTR808").gain(0.4),
sound("breaks165")
.slice(8, "0 2 4 6")
.lpf(3000)
.gain(0.5)
).cpm(22.5)Genre Deep Dives
Boom Bap (85-95 BPM)
Boom bap is the classic East Coast sound—punchy kicks, cracking snares, and jazzy samples. The name comes from the sound: “boom” (kick) and “bap” (snare). Pioneered by producers like DJ Premier, Pete Rock, and J Dilla.
Classic Tracks:
- “Mass Appeal” by Gang Starr (DJ Premier, 1994)
- “T.R.O.Y.” by Pete Rock & CL Smooth (1992)
- “The Light” by Common (J Dilla, 2000)
- “Shook Ones Pt. II” by Mobb Deep (Havoc, 1995)
Characteristics: 85-95 BPM, sampled drums, jazzy chords, minimal layers
Basic Boom Bap Beat:
stack(
sound("bd ~ ~ ~ bd ~ ~ bd"),
sound("~ ~ ~ ~ sd ~ ~ ~"),
sound("hh hh hh hh hh hh hh hh").gain(0.5)
).cpm(22.5)With 808 Bass:
stack(
sound("bd ~ ~ ~ bd ~ ~ bd").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh hh hh hh hh hh hh hh").bank("RolandTR808").gain(0.5),
note("c2 ~ ~ ~ f2 ~ ~ c2")
.s("sine")
.decay(0.25)
.sustain(0.1)
.gain(0.6)
).cpm(22.5)Boom Bap with Rhodes Chords:
stack(
sound("bd ~ ~ ~ bd ~ ~ bd").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh hh hh hh hh hh hh hh").bank("RolandTR808").gain(0.4),
note("c2 ~ ~ ~ f2 ~ ~ c2")
.s("sine")
.decay(0.25)
.sustain(0.1)
.gain(0.5),
note("<c3,eb3,g3,bb3> ~ <f3,ab3,c4,eb4> ~")
.s("sawtooth")
.lpf(1200)
.attack(0.02)
.decay(0.3)
.sustain(0.2)
.room(0.2)
.gain(0.3)
).cpm(22.5)Trap (140 BPM, Half-Time)
Trap emerged from Atlanta in the early 2000s, characterized by rapid hi-hats, 808 bass, and dark atmospheres. Producers like Lex Luger, Metro Boomin, and Zaytoven defined the sound.
Classic Tracks:
- “Hard in da Paint” by Waka Flocka Flame (Lex Luger, 2010)
- “Mask Off” by Future (Metro Boomin, 2017)
- “Bad and Boujee” by Migos (Metro Boomin, 2016)
- “Black Beatles” by Rae Sremmurd (Mike WiLL Made-It, 2016)
Characteristics: 140 BPM (felt as 70 half-time), rolling hi-hats, 808 slides, snare on beat 3
Basic Trap:
stack(
sound("bd ~ ~ ~ ~ ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*16").bank("RolandTR808").gain(0.5)
).cpm(35)With Hi-Hat Rolls:
The signature trap sound—hi-hats that speed up:
stack(
sound("bd ~ ~ ~ ~ ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh").bank("RolandTR808").fast("<8 8 8 16>").gain(0.5)
).cpm(35)With 808 Bass:
stack(
sound("bd ~ ~ ~ ~ ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh").bank("RolandTR808").fast("<8 8 8 16>").gain(0.4),
note("c1 ~ ~ ~ ~ ~ c1 eb1")
.s("sine")
.decay(0.4)
.sustain(0.3)
.slide(0.08)
.gain(0.7)
).cpm(35)Full Trap Beat:
stack(
sound("bd ~ ~ ~ ~ ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("~ ~ ~ ~ ~ ~ ~ oh").bank("RolandTR808").gain(0.4),
sound("hh").bank("RolandTR808").fast("<8 8 8 16>").gain(0.4),
note("c1 ~ ~ ~ ~ ~ c1 eb1")
.s("sine")
.decay(0.4)
.sustain(0.3)
.slide(0.08)
.distort(1.1)
.gain(0.6)
).cpm(35)Lo-fi Hip-Hop (75-90 BPM)
Lo-fi hip-hop emerged in the 2010s, influenced by J Dilla’s soulful production and the “beats to study to” aesthetic. It features dusty textures, jazz samples, and a relaxed swing.
Key Producers:
- Nujabes — Japanese producer who pioneered the jazzy, melodic style (Feather)
- J Dilla — “Donuts” (2006) influenced the entire genre
- Madlib — intricate sampling on Madvillainy (2004)
Characteristics: 75-90 BPM, swing/shuffle feel, vinyl crackle, jazz samples, mellow
Basic Lo-fi Beat:
stack(
sound("bd ~ ~ bd ~ ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ ~").gain(0.8),
sound("hh ~ hh ~ hh ~ hh ~").gain(0.4)
).cpm(20)With Swing:
stack(
sound("bd ~ ~ bd ~ ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ ~").gain(0.8),
sound("hh ~ hh ~ hh ~ hh ~").gain(0.4)
).cpm(20).swing(0.1)Lo-fi with Rhodes:
stack(
sound("bd ~ ~ bd ~ ~ bd ~").gain(0.9),
sound("~ ~ ~ ~ sd ~ ~ ~").gain(0.7),
sound("hh ~ hh ~ hh ~ hh ~").gain(0.3),
note("<c3,eb3,g3> <bb2,d3,f3> <ab2,c3,eb3> <g2,bb2,d3>")
.s("sawtooth")
.lpf(800)
.attack(0.02)
.decay(0.3)
.sustain(0.2)
.room(0.3)
.gain(0.25)
).cpm(20).swing(0.1)Full Lo-fi Track:
stack(
sound("bd ~ ~ bd ~ ~ bd ~").gain(0.9),
sound("~ ~ ~ ~ sd ~ ~ ~").gain(0.7),
sound("hh ~ hh ~ hh ~ hh ~").gain(0.3),
note("c2 ~ ~ ~ g1 ~ ~ ~")
.s("sine")
.decay(0.3)
.sustain(0.1)
.gain(0.5),
note("<c3,eb3,g3> <bb2,d3,f3> <ab2,c3,eb3> <g2,bb2,d3>")
.s("sawtooth")
.lpf(800)
.attack(0.02)
.decay(0.3)
.sustain(0.2)
.room(0.3)
.gain(0.2)
).cpm(20).swing(0.1)Drill (140-145 BPM)
Drill originated in Chicago around 2010, later spreading to the UK and Brooklyn. It features dark, aggressive 808s, sliding bass, and sparse, menacing arrangements.
Classic Tracks:
- “I Don’t Like” by Chief Keef (Young Chop, 2012)
- “Computers” by Bobby Shmurda (Jahlil Beats, 2014)
- “Big Drip” by Fivio Foreign (Yamaica, 2019) — Brooklyn drill
Characteristics: 140-145 BPM, sliding 808s, minimal melodies, dark atmosphere, sparse hats
Chicago Drill:
stack(
sound("bd ~ ~ ~ ~ ~ ~ bd").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh ~ hh ~ hh ~ hh ~").bank("RolandTR808").gain(0.4)
).cpm(36)With Sliding 808:
stack(
sound("bd ~ ~ ~ ~ ~ ~ bd").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh ~ hh ~ hh ~ hh ~").bank("RolandTR808").gain(0.4),
note("c1 ~ ~ ~ ~ ~ eb1 c1")
.s("sine")
.decay(0.5)
.sustain(0.3)
.slide(0.15)
.distort(1.3)
.gain(0.6)
).cpm(36)UK Drill Style:
UK drill has a bouncier, more rhythmic feel:
stack(
sound("bd ~ ~ bd ~ ~ ~ bd").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh ~ hh hh ~ hh hh ~").bank("RolandTR808").gain(0.4),
note("c1 ~ ~ c1 ~ ~ eb1 c1")
.s("sine")
.decay(0.4)
.sustain(0.2)
.slide(0.12)
.distort(1.2)
.gain(0.6)
).cpm(35.5)Afrobeats / Afro-Swing (95-110 BPM)
Afrobeats blends West African rhythms with hip-hop and R&B production. It features bouncy, polyrhythmic drums and melodic hooks.
Key Artists:
- Burna Boy, Wizkid, Davido — Nigerian afrobeats pioneers
- J Hus, Not3s — UK afro-swing sound
Classic Tracks:
- “Ojuelegba” by Wizkid (2014)
- “Ye” by Burna Boy (2018)
- “Did You See” by J Hus (2017)
Characteristics: 95-110 BPM, polyrhythmic percussion, log drums, bouncy feel
Basic Afrobeats:
stack(
sound("bd ~ bd ~ bd ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ sd").gain(0.8),
sound("hh hh hh hh hh hh hh hh").gain(0.4)
).cpm(26)With Percussion Layers:
stack(
sound("bd ~ bd ~ bd ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ sd").gain(0.8),
sound("hh hh hh hh hh hh hh hh").gain(0.4),
sound("~ rim ~ rim ~ rim rim ~").gain(0.5)
).cpm(26)With Melodic Elements:
stack(
sound("bd ~ bd ~ bd ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ sd").gain(0.8),
sound("hh hh hh hh hh hh hh hh").gain(0.3),
sound("~ rim ~ rim ~ rim rim ~").gain(0.4),
note("c2 ~ g2 ~ c2 ~ g2 ~")
.s("sine")
.decay(0.2)
.sustain(0.1)
.gain(0.5),
note("c4 ~ eb4 ~ g4 ~ eb4 c4")
.s("sawtooth")
.lpf(2000)
.decay(0.1)
.sustain(0)
.gain(0.3)
).cpm(26)Phonk (130-145 BPM)
Phonk is a subgenre blending Memphis rap with modern trap. It features distorted samples, cowbells, and a dark, aggressive aesthetic.
Key Producers:
- DJ Smokey, SpaceGhostPurrp — early pioneers
- Kordhell, DVRST — modern drift phonk
Classic Tracks:
- “Murder Rate” by DJ Smokey (2012)
- “Close Eyes” by DVRST (2020)
- “Murder in My Mind” by Kordhell (2021)
Characteristics: 130-145 BPM, cowbells, distorted 808s, vocal samples, dark atmosphere
Basic Phonk:
stack(
sound("bd ~ ~ ~ bd ~ ~ ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*8").bank("RolandTR808").gain(0.4),
sound("~ cb ~ cb ~ cb cb ~").bank("RolandTR808").gain(0.6)
).cpm(34)With Heavy 808:
stack(
sound("bd ~ ~ ~ bd ~ ~ ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*8").bank("RolandTR808").gain(0.4),
sound("~ cb ~ cb ~ cb cb ~").bank("RolandTR808").gain(0.5),
note("c1 ~ ~ ~ c1 ~ eb1 ~")
.s("sine")
.decay(0.4)
.sustain(0.2)
.distort(2)
.gain(0.6)
).cpm(34)Drift Phonk Style:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808").distort(1.5),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808").distort(1.3),
sound("hh*16").bank("RolandTR808").gain(0.35),
sound("~ cb ~ cb ~ cb cb cb").bank("RolandTR808").gain(0.5),
note("c1 ~ c1 ~ c1 ~ c1 eb1")
.s("sine")
.decay(0.3)
.sustain(0.2)
.distort(2.5)
.lpf(120)
.gain(0.6)
).cpm(35)Effects & Processing
Sidechain Compression
Create the pumping effect where other elements duck when the kick hits:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
note("c2")
.s("sawtooth")
.lpf(400)
.gain(perlin.range(0.2, 0.7).fast(4))
).cpm(22.5)Lo-fi Textures
Add warmth by filtering and adding room:
stack(
sound("bd ~ ~ ~ bd ~ bd ~"),
sound("~ ~ ~ ~ sd ~ ~ ~"),
sound("hh*8").gain(0.4),
note("<c3,eb3,g3>")
.s("sawtooth")
.lpf(1500)
.hpf(200)
.room(0.3)
.gain(0.3)
).cpm(22.5)Reverb for Atmosphere
Add space and depth:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808").room(0.4),
sound("hh hh oh hh hh hh oh hh").bank("RolandTR808").gain(0.4).room(0.2)
).cpm(22.5)Delay Throws
Add rhythmic interest with delay:
note("c4 ~ eb4 ~")
.s("sawtooth")
.lpf(2000)
.decay(0.1)
.sustain(0)
.delay(0.4)
.delaytime(0.25)
.delayfeedback(0.3)
.cpm(22.5)Distortion & Saturation
Add grit and aggression to 808s:
note("c1 ~ ~ ~ c1 ~ c1 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.distort(2)
.lpf(150)
.gain(0.6)
.cpm(22.5)Arrangement & Structure
Hip-hop tracks typically follow this structure:
Intro → Verse → Hook → Verse → Hook → Bridge → Hook → Outro
Building Energy with Filtering
Start filtered and open up:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*8").bank("RolandTR808").gain(0.4),
note("c2 ~ ~ ~ c2 ~ c2 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.lpf(sine.range(100, 400).slow(8))
.gain(0.6)
).cpm(22.5)Drop Techniques
Remove elements and bring them back:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808").gain("<1 1 1 0>"),
sound("hh*8").bank("RolandTR808").gain("<0.4 0.4 0.4 0>"),
note("c1 ~ ~ ~ c1 ~ c1 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.gain("<0 0 0 0.8>")
).cpm(22.5)Layering and Building
Add elements gradually:
stack(
sound("bd ~ ~ ~ bd ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("hh*8").bank("RolandTR808").gain(0.4),
sound("oh").bank("RolandTR808").euclidRot(2, 8, 2).gain("<0 0 0.3 0.3>"),
note("c1 ~ ~ ~ c1 ~ c1 ~")
.s("sine")
.decay(0.3)
.sustain(0.2)
.gain(0.6),
note("<c3,eb3,g3>")
.s("sawtooth")
.lpf(1200)
.attack(0.02)
.decay(0.2)
.sustain(0.2)
.gain("<0 0.2 0.2 0.3>")
).cpm(22.5)Complete Tracks
Boom Bap Track
stack(
// Drums
sound("bd ~ ~ ~ bd ~ ~ bd").bank("RolandTR808"),
sound("~ ~ ~ ~ [sd,cp] ~ ~ ~").bank("RolandTR808"),
sound("hh hh oh hh hh hh oh hh").bank("RolandTR808").gain(0.4),
// Bass
note("c2 ~ ~ ~ f2 ~ ~ c2")
.s("sine")
.decay(0.25)
.sustain(0.1)
.gain(0.55),
// Chords
note("<c3,eb3,g3,bb3> ~ <f3,ab3,c4,eb4> ~")
.s("sawtooth")
.lpf(1000)
.attack(0.02)
.decay(0.25)
.sustain(0.15)
.room(0.25)
.gain(0.25)
).cpm(22.5)Trap Track
stack(
// Drums
sound("bd ~ ~ ~ ~ ~ bd ~").bank("RolandTR808"),
sound("~ ~ ~ ~ sd ~ ~ ~").bank("RolandTR808"),
sound("~ ~ ~ ~ ~ ~ ~ oh").bank("RolandTR808").gain(0.35),
sound("hh").bank("RolandTR808").fast("<8 8 8 16>").gain(0.4),
// 808 Bass
note("c1 ~ ~ ~ ~ ~ c1 eb1")
.s("sine")
.decay(0.45)
.sustain(0.3)
.slide(0.1)
.distort(1.2)
.gain(0.6),
// Melody
note("c4 ~ eb4 ~ g4 ~ eb4 ~")
.s("sawtooth")
.lpf(2500)
.attack(0.01)
.decay(0.15)
.sustain(0)
.room(0.2)
.gain(0.25)
).cpm(35)Lo-fi Track
stack(
// Drums
sound("bd ~ ~ bd ~ ~ bd ~").gain(0.85),
sound("~ ~ ~ ~ sd ~ ~ ~").gain(0.7),
sound("hh ~ hh ~ hh ~ hh ~").gain(0.3),
// Bass
note("c2 ~ ~ ~ g1 ~ ~ ~")
.s("sine")
.decay(0.3)
.sustain(0.1)
.gain(0.45),
// Rhodes Chords
note("<c3,eb3,g3,bb3> <bb2,d3,f3,ab3> <ab2,c3,eb3,g3> <g2,bb2,d3,f3>")
.s("sawtooth")
.lpf(900)
.attack(0.03)
.decay(0.35)
.sustain(0.15)
.room(0.35)
.gain(0.22)
).cpm(20).swing(0.1)Hip-Hop Quick Reference
| Subgenre | BPM | Feel | Key Elements |
|---|---|---|---|
| Boom Bap | 85-95 | Straight | Punchy kicks, snare on 2&4, jazzy samples |
| Trap | 140 | Half-time | Fast hi-hats, 808 slides, sparse |
| Lo-fi | 75-90 | Swung | Dusty, jazzy, mellow |
| Drill | 140-145 | Half-time | Sliding 808s, dark, sparse |
| Afrobeats | 95-110 | Bouncy | Polyrhythmic, log drums |
| Phonk | 130-145 | Half-time | Cowbells, distorted 808s, dark |
Common Drum Patterns
| Style | Kick | Snare | Hi-Hat |
|---|---|---|---|
| Boom Bap | bd ~ ~ ~ bd ~ ~ bd | ~ ~ ~ ~ sd ~ ~ ~ | Eighth notes |
| Trap | bd ~ ~ ~ ~ ~ bd ~ | ~ ~ ~ ~ sd ~ ~ ~ | 16ths + rolls |
| Lo-fi | bd ~ ~ bd ~ ~ bd ~ | ~ ~ ~ ~ sd ~ ~ ~ | Sparse 8ths |
| Drill | bd ~ ~ ~ ~ ~ ~ bd | ~ ~ ~ ~ sd ~ ~ ~ | Sparse 8ths |
Effect Settings
| Effect | Light | Medium | Heavy |
|---|---|---|---|
| Distort | 1.0-1.3 | 1.5-2.0 | 2.5-4.0 |
| Room | 0.1-0.2 | 0.3-0.4 | 0.5+ |
| Decay (808) | 0.15-0.25 | 0.3-0.4 | 0.5+ |
What You Learned
- The TR-808 is hip-hop’s essential drum machine
- Hip-hop kicks are syncopated, not on every beat like EDM
- Snares anchor the groove on beats 2 and 4
- 808 bass uses
s("sine")with.decay()and.sustain() .slide()creates the signature 808 pitch slide.distort()adds warmth and presence to 808s.slice()chops samples into rearrangeable pieces- Boom bap (85-95 BPM) uses punchy drums and jazzy chords
- Trap (140 BPM) uses fast hi-hats with
.fast()for rolls - Lo-fi uses
.swing()for laid-back grooves - Drill features dark, sliding 808s with heavy
.slide() - Afrobeats layers polyrhythmic percussion patterns
- Phonk adds cowbells and heavy distortion
- Filter automation (
.lpf()withsine.range()) builds energy - Each subgenre has distinct BPM ranges and sonic characteristics