0:00/0:00
// Hoe Down — Emerson, Lake & Palmer
// 168 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 5 Elec Org 2 -> percussive organ; ch 6 Elec Org 2 -> percussive organ; ch 7 Elec Org 2 -> percussive organ
// note: duplicate parts dropped: ch 4 "ƒx[ƒX 2" acoustic bass (copy of ch 3 "ƒx[ƒX 1" electric bass pick); ch 6 percussive organ (copy of ch 5 percussive organ); ch 9 "ƒVƒ“ƒZ" lead 2 sawtooth (copy of ch 8 "ƒVƒ“ƒZ" lead 2 sawtooth)
// note: Full arrangement: all 162 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(168/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order, A@4 for four bars: edit a riff to change every repeat.
// bass · electric bass pick · "ƒx[ƒX 1"
const bass = note(`<
~@6 A B A B C@4 D@4 C@4 E@4 F@3 G C@8 H I J K L M@2 N O P Q P R@3 S T U V@4 W V X Y X Y Z AA AB AC AD@3 AE AD@4 Z Y Z
Y B AF ~ AF ~ AF ~ AG@6 AH@2 AI AH@4 AJ@20 AK AJ AK AJ AK AJ AL AM@4 AN AO@2 AJ@7 V AP@2 C@4 AQ@4 C@3 AR AS AT@2 AU
>`.pickRestart({
A: "d2@4 ~@10 d2 ~", B: "d2 ~@3", C: "d2@4 d3@4 c3!2 b2!2 c3!2 d3@2", D: "d2@2 ~@2 d2 ~ d2@2 ~@2 g2@3 ~ d2 ~",
E: "d3@2 ~@2 d3 ~ d3@2 ~@2 d3@3 ~ d3 ~", F: "g2@2 ~@2 g2 ~ g2@2 ~@2 g2@3 ~ g2 ~", G: "g2@3 ~ g2 ~ g2@3 ~ g2@3 ~ g2@2",
H: "g2!2 ~ c2 d2@2 e2@2", I: "g2!2 ~ b1 c2@2 e2 f#2", J: "g2!2 ~ b1 c2@2 b1 a1",
K: "g1@3 f#1@2 e1@2 ~ f#1@2 ~ a1@3 ~@2, ~@5 g1 ~@2", L: "a2@4 ~@2 e2@3 ~ g2@3 ~ g2 ~",
M: "[a2@2 ~@4 e2@3 ~ e2@2 a2@2 ~ a2@4 ~@3 e2@3 ~ g2@3 ~ g2 ~]/2", N: "a2@3 ~@3 e2@3 ~ e2 ~ a2@2 ~ e2",
O: "~ e2 ~ d2@2 ~@11", P: "e2 e2@2 a2@2 ~@11", Q: "e2!2 ~ d2@2 ~@11", R: "a1 g1 a1 g1", S: "a1@2 g1@2 a1 g1 a1 ~",
T: "a2 a2@2 c#3 a2@2 c#3@2 a2@2 c#3@2 e3@2 c#3 b2", U: "a2@3 c#3@2 a2 b2 c#3 a2@2 a1@6", V: "d2", W: "d2@15 ~",
X: "d2@2 d3@2 c3 d3 c3 a2", Y: "d2@4 d3@5 ~ a1@2 d2@3 ~", Z: "d2 d3 d2 d3", AA: "d2 d3 a1 a2", AB: "a1 a2 a1 a2",
AC: "a1@2 a2@2 a1@2 b1 c#2", AD: "d2@4 d3@4 c3!2 d3@2 c3@2 a2@2", AE: "d2@4 d3@4 c3!2 a2@2 c3@2 d3@2",
AF: "d2@2 d2@2 g2 g2@2 g2 d2@2 d2@2 g2@2 ~@2",
AG: "[d2@2 d2@2 g2 g2@2 g2 d2@2 d2@2 g2@2 d2@4 d2@2 g2 g2@2 g2 d2@2 d2@2 g2@2 d2@4 d2@2 g2 g2@2 g2 d2@2 d2@2 g2@2 d2@4 d2@2 g2 g2@2 g2 d2@2 d2@2 g2@2 d2@4 d2@2 g2 g2@2 g2 d2@2 d2@2 g2@2 d2@6 d3@3 d3 c3@2 d3@2 c3@2 a2@2]/6",
AH: "d2@4 d3@3 d3 c3@2 d3@2 c3@2 a2@2", AI: "d2@4 d3@3 d3 c3@2 f#1@2 g1@2 g#1@2", AJ: "d2 d3 d2 d3 d2 d3 d2 d3",
AK: "d2 d3 d2 d3 c3 a2 g2 f2", AL: "d2 d3 d2 d3 g2 a2 g2 f2", AM: "d2 a2 d2 a2 d2 a2 d2 a2",
AN: "d2 c2 d2 c2 d2 c2 d2 c2", AO: "d2 f#2 g2 c2 d2 f#2 g2 c2", AP: "d2 d3@3", AQ: "g1@3 ~ g1 ~ g1@3 ~ g1@3 ~ g1@2",
AR: "d2@2 d3@2 c3 d3@2 ~", AS: "d2@2 ~ d2@3 ~ d2!2 ~ d2@2 ~@2 d2!2",
AT: "[~ d2 ~ d2 ~ d2@2 ~ d2 ~ d2 ~ d2@2 ~ f#2@3 ~@9 d2@2 ~ d2@2]/2", AU: "~@3 d2@4 ~@9",
})).s("gm_electric_bass_pick").gain(0.4)
// chords · percussive organ
const percussive_organ = note(`<
~@6 A B A B C@3 D E@3 F D@4 ~@4 G H@2 I J@3 D K@2 D L M N O P Q R Q S ~ T U T V@3 W ~@8 D X Y@2 Z AA AB AC D@3 J@3 Y@2
Z AD Z AE AF AG ~ AG ~ AG ~ AG AH@8 ~@48 D@2 AI@2 AJ AK@2 AL D@3 AM AN AO@3
>`.pickRestart({
A: "[d2,d3]@4 ~@10 [d2,d3] ~", B: "[d2,d3]@3 ~@13",
C: "[[a3,d4]@8 [g3,c4]@7 [a3,d4]@8 ~ [g3,c4]@7 [a3,d4]@8 ~ [g3,c4]@8]/3", D: "[a3,d4] [g3,c4]",
E: "[a3,d4]@2 ~@2 [a3,d4] ~ [a3,d4] ~@3 [g3,d4]@3 ~ [a3,d4] ~", // D5 G5 D5
F: "[a3,d4]@2 ~@2 [a3,d4] ~ [a3,d4] ~@3 [g3,d4]@4 ~@2", // D5 G5
G: "[g3,d4]@2 ~@2 [g3,d4] ~ [g3,d4]@2 ~@2 [g3,d4]@3 ~ [g3,d4] ~", // G5
H: "d4@2 ~@2 [g3,d4] ~ [g3,d4]@2 ~@2 [g3,d4]@3 ~ [g3,d4] ~, g3 ~@15", // G5
I: "[g3,d4]@2 ~@2 [g3,d4] ~ [g3,d4]@2 ~@2 [g3,d4]@4 ~@2", // G5
J: "[[a3,d4]@8 [g3,c4]@7 ~ d4@8 [g3,c4]@7 ~ d4@8 [g3,c4]@8, ~@15 a3@8 ~@8 a3@8 ~@9]/3", // D5 C5
K: "[[a3,d4]@8 [g3,c4]@7 [a3,d4]@8 ~ [g3,c4]@8]/2", L: "[a3,d4]@2 [g3,c4] ~", M: "~ g3 ~ c3 d3@2 e3@2, g2 ~@3",
N: "g2@2 g3@3 ~ b2@2 c3@4 e3@2 f#3 ~", O: "g2@3 g3@2 ~ b2@2 c3@3 ~ b2@2 a2@2", P: "g2@4 f#2@2 e2@2 f#2@2 g2@2 a2 ~@3",
Q: "[a3,e4]@2 ~@4 [e3,b3]@2 ~@2 [g3,d4]@2 ~@2 [g3,d4] ~", R: "[a3,e4]@2 ~@4 [e3,b3]@3 ~ [e3,b3] ~ [a3,e4]@2 ~@2",
S: "[a3,e4]@2 ~@4 [e3,b3]@2 ~ e3 b3 ~ [a3,e4]@2 ~@2", T: "[e3,b3]@3 a3@3 ~@10",
U: "[e3,b3]@3 ~ d3@2 ~@10, ~@3 a3@3 ~@10", V: "a2 g2 a2 g2", W: "a2@4 g2@3 ~ a2@4 ~@4", X: "[a3,d4]@5 ~@3",
Y: "[[a3,d4]@8 [g3,c4]@7 ~ d4@12 ~@4, ~@15 a3@12 ~@5]/2", Z: "[a3,d4]@3 ~ [a3,d4]@3 ~", AA: "[a3,d4]@3 ~ [e3,a3]@3 ~",
AB: "[e3,a3]@3 ~ [e3,a3]@3 ~", AC: "~ e3@6 ~@2 [e3,a3]@5 ~@2, a3@3 ~@5", AD: "[a3,d4]@8 ~@3 [a3,d4]@3 ~@2",
AE: "[a3,d4]@6 ~@6 [a3,d4]@3 ~", AF: "[a3,d4] ~@3", AG: "[a3,d4]@3 ~ [g3,d4]@3 ~ [a3,d4]@3 ~ [g3,d4]@3 ~",
AH: "[a3@4 ~ g3@3 a3@4 g3@3 a3@4 ~ g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@3 a3@4 ~ g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@4 a3@4 g3@3 a3@6 ~@3, d4@63 ~]/8",
AI: "[[a3,d4]@8 [g3,c4]@7 ~ d4@8 [g3,c4]@6 ~@2, ~@15 a3@8 ~@9]/2", // D5 C5
AJ: "g3@2 ~@2 [g3,d4] ~ [g3,d4] ~@3 [g3,d4]@2 ~@2 [g3,d4] ~, d4 ~@15", // G5
AK: "[g3,d4] ~@3 [g3,d4] ~ [g3,d4]@2 ~@2 [g3,d4]@2 ~@2 [g3,d4] ~", // G5
AL: "[g3,d4]@2 ~@2 [g3,d4] ~ [g3,d4] ~@3 [g3,d4]@3 ~@3", AM: "[a3,d4]@7 ~ g3@5 ~@3, ~@7 c4@5 ~@4",
AN: "[a3,d4]@2 ~ [a3,d4]@2 ~@2 [a3,d4]!2 ~ [a3,d4]@2 ~ [a3,d4] ~ [a3,d4]", // D5
AO: "[[a3,d4] ~ [a3,d4] ~ [a3,d4] ~@2 a3 d4 [a3,d4] ~ a3@2 ~@2 f#4@3 ~@9 [d3,a3]@2 ~@2 [d3,a3]@2 ~@2 [d3,a3]@4 ~@9, ~@11 d4 ~@36]/3", // D5
})).s("gm_percussive_organ").gain(0.36)
// other · lead 2 sawtooth · "ƒVƒ“ƒZ"
const lead_2_sawtooth = note("<[d4@7 ~]!6 ~@50 [d4@7 ~]!6 ~@78 [d4@7 ~]!6 ~@16>")
.s("gm_lead_2_sawtooth").gain(0.36).pan(0.7)
// drums · kick
const kick = s("bd").struct(`<
~@6 A B A B C D E B F@3 B C E G@2 B ~@2 H F@3 I J G J G J G J G K@3 J L M L M N@4 J@5 O P@3 B P@2 J Q J Q G J G B J@6
G Q G O G O B R ~ R ~ R ~ R J@8 G J G J G@38 J@2 G@8 F@3 B G@4 S T U V
>`.pickRestart({
A: "x ~@6 x", B: "x", C: "x ~@7 x ~@6 x", D: "~@8 x ~ x ~@4 x", E: "~ x", F: "x ~ x!2 ~ x ~ x", G: "x!2", H: "~@7 x",
I: "x!2 ~@2", J: "x ~@3 x!2 ~@2", K: "~ x ~@2 x ~ x ~", L: "x ~@2 x ~ x ~ x", M: "x ~@2 x ~ x!2 ~", N: "x!2 ~ x ~@12",
O: "x ~@2 x", P: "x ~@7 x ~ x!2 ~@4", Q: "x ~@4 x ~@2", R: "x!4", S: "x ~@2 x ~@3 x!2 ~ x ~@3 x!2",
T: "~ x ~ x!2 ~@3 x!2 ~@2 x ~@2 x", U: "~@10 x ~@4 x", V: "~@3 x ~@12",
})).gain(0.71)
// drums · snare
const snare = s("sd").struct(`<
~@9 A B C B D E F@2 G C B C@2 ~@4 F@3 H C B C@3 B C@2 I@3 C J K J K ~@3 L C@4 M N C@3 O C@9 P C@9 Q C Q I R ~ S ~ T ~
U V C@6 W X C X C@4 Y C@12 O C O C O C O C O C@10 Z C@5 O C O C@4 AA@3 O C@4 AB AC AD AE
>`.pickRestart({
A: "~@9 x!4 ~@3", B: "~@4 x ~@7 x ~ x!2", C: "~ x ~ x", D: "~@4 x ~@4 x!3 ~@4", E: "~@2 x!2 ~ x ~ x",
F: "x ~ x!2 ~ x ~ x", G: "~ x ~@2", H: "x ~@6 x!5 ~@4", I: "x", J: "x ~@2 x ~ x ~ x", K: "x ~@2 x ~ x!2 ~",
L: "~@13 x!3", M: "~@4 x ~ x!2 ~@4 x ~ x!2", N: "~@4 x ~@3 x!2 ~@6", O: "~@4 x ~@3 x!4 ~@4", P: "~@4 x ~@3 x!8",
Q: "~@2 x ~ x!2 ~@2", R: "x ~ x ~ x!2 ~ x!2 ~ x ~@5", S: "x ~ x ~ x!2 ~ x ~@8", T: "x ~ x ~ x!2 ~@10",
U: "x ~ x ~ x!2 ~ x!2 ~ x!2 ~ x!3", V: "~@4 x ~@2 x ~@4 x ~@3", W: "~@4 x ~@7 x!3 ~", X: "~@4 x ~@7 x ~@2 x",
Y: "~@4 x ~@3 x!2 ~ x ~@4", Z: "x!2 ~ x", AA: "x ~ x!2 ~@4", AB: "x ~@2 x ~@3 x!2 ~ x ~@3 x!2",
AC: "~ x ~ x!2 ~@3 x ~ x ~ x ~@2 x", AD: "~@10 x ~@4 x", AE: "~@3 x ~@12",
})).gain(0.64)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@9 A ~@3 A ~@3 B C ~ C ~@34 B ~@23 D ~ D ~ E ~ E ~ E ~ F ~@72>".pickRestart({
A: "~ x", B: "~@7 x ~@8", C: "~@15 x", D: "~@9 x ~@6", E: "~ x ~ x ~@2 x ~@9", F: "~ x ~ x ~@2 x ~@5 x ~@3",
})).gain(0.29)
// drums · low tom
const low_tom = s("lt").struct("<~@22 A B ~@2 C@3 ~@13 D E D E ~@104 B@3 ~@9>".pickRestart({
A: "x", B: "~@7 x", C: "~@5 x ~ x", D: "~@3 x ~ x ~ x", E: "~@3 x ~ x ~@2",
})).gain(0.64)
// drums · hihat
const hihat = s("hh").struct(`<
~@5 A@4 ~ B C B D E@3 ~ C B C B E F G F ~@4 C H C H C H C H I ~@2 H ~@8 J@3 K L M N@3 O N@3 K C K C N@2 ~ C P N Q N R
N@2 S D S D ~@8 C N@6 K N@7 O C N@5 K N@5 O N O C O C O C O C N@12 T@2 N O C O C N@3 ~@4 C N@3 ~@4
>`.pickRestart({
A: "~@3 x", B: "~ x!6 ~", C: "~ x!7", D: "~ x!3 ~@4", E: "~@2 x!2 ~ x ~ x", F: "x ~ x!2 ~ x ~@2",
G: "x ~ x!2 ~ x ~ x", H: "x!7 ~", I: "x", J: "x!6 ~ x", K: "x!6 ~@2", L: "x!3 ~ x!3 ~", M: "x!2 ~ x ~@4", N: "x!8",
O: "x!4 ~@4", P: "x!5 ~@2 x", Q: "x!4 ~@3 x", R: "x!2 ~ x ~ x ~@2", S: "~ x!3 ~ x!3", T: "~ x!5 ~@2",
})).gain(0.71)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@9 A ~@3 A ~@3 A ~@11 A ~@12 B C B C ~@13 A ~@42 D E D ~@2 F ~@2 G ~ H ~@11 F ~@10 B ~@14 I@3 ~@5 J K ~@2
>`.pickRestart({
A: "~@12 x!4", B: "x", C: "x ~@2 x", D: "~@4 x ~@4 x ~@6", E: "~@3 x ~@2 x ~", F: "~@3 x", G: "~@8 x ~ x ~@2 x ~@2",
H: "~ x ~@14", I: "~@5 x ~@2", J: "~@14 x!2", K: "~ x ~ x!2 ~@3 x ~ x!2 ~@4",
})).gain(0.64)
// drums · open hat
const open_hat = s("oh").struct(`<
~@21 A ~@11 A ~@3 A ~@2 B ~@9 B@4 ~@15 C ~ D ~ E ~ F ~@36 B ~@27 B@2 ~@11 G ~@8
>`.pickRestart({
A: "~@7 x", B: "~@3 x", C: "x!2 ~@2", D: "~@5 x!2 ~", E: "~@4 x!3 ~", F: "~ x!2 ~", G: "~ x ~@2",
})).gain(0.71)
// drums · high tom
const high_tom = s("ht").struct(`<
~@17 A ~@8 B@3 C ~@55 D ~ E ~@17 F ~@6 G H I ~@2 J K ~ K L K L K L K L M ~@7 J ~@6 K ~ K ~@7 K ~@8
>`.pickRestart({
A: "~@9 x!3 ~@4", B: "~@2 x!2 ~@4", C: "~ x ~@2", D: "~@8 x!3 ~@5", E: "~@7 x!4 ~@5", F: "~@11 x!4 ~",
G: "~@11 x ~@4", H: "~@3 x", I: "~ x ~ x", J: "x", K: "~@12 x!4", L: "x ~@2 x", M: "~@3 x ~@4",
})).gain(0.64)
// drums · high tom · soft notes
const high_tom_soft = s("ht").struct(`<
~@17
[~ x]
~@4
[~@2 x!2 ~ x ~ x]
[x ~ x!2 ~ x ~@2]
[x ~ x!2 ~ x ~ x]
[x ~ x!2 ~ x ~@2]
~@136
>`).gain(0.43)
// drums · crash
const crash = s("cr").struct(`<
~@6 A B A B C D ~ B@5 C ~ B@2 ~@3 E B@5 ~ B ~ B ~ B ~ F@2 G ~@5 H@4 ~@4 B I ~@7 J B J B ~@3 B ~@4 J ~@2 K L K L B J ~
J ~ J ~@2 B ~@11 E ~@2 M B ~@5 N ~@6 B ~ B ~ B ~ B ~ B ~@7 O ~@4 B@2 ~@2 B ~ B ~@3 P@3 B@2 ~@3 Q ~ R S
>`.pickRestart({
A: "x ~@6 x", B: "x", C: "x ~@14 x", D: "~@15 x", E: "~@7 x", F: "~ x ~@2 x ~ x ~", G: "~@3 x ~@4 x ~@7",
H: "x!2 ~ x ~@12", I: "x!2 ~ x", J: "~@3 x", K: "x!2", L: "x ~@2 x", M: "~ x ~@2", N: "~@3 x ~ x ~@10",
O: "~@8 x ~@2 x ~@4", P: "x ~@2 x ~ x ~@2", Q: "x ~@2 x ~@3 x!2 ~ x ~@5", R: "~@10 x ~@4 x", S: "~@3 x ~@12",
})).gain(0.71)
// drums · tambourine
const tambourine = s("tb").struct("<~@112 [~ x] ~@22 [~@13 x ~@2] ~@26>").gain(0.64)
// drums · ride
const ride = s("rd").struct("<~@102 A ~ A B ~@4 C ~@24 B ~@26>".pickRestart({
A: "~@3 x", B: "~@3 x ~@4", C: "~@9 x ~@2 x ~ x ~",
})).gain(0.64)
// drums · bongos
const bongos = s("bongo:4").struct("<~@110 [~@3 x ~@4] [~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~] ~@50>").gain(1.69)
// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@105 [x ~@6 x ~@8] ~@56>").gain(1.69)
// drums · congas
const congas = s("conga:13").struct("<~@102 A B C D ~ E ~@2 F ~ G ~@7 E ~@14 H ~@26>".pickRestart({
A: "~@6 x ~@4 x ~@4", B: "x!3 ~@5", C: "~@6 x ~@4 x ~@2 x ~", D: "~ x", E: "~@15 x", F: "~@5 x ~@10",
G: "~ x ~ x ~@4", H: "~ x ~@2",
})).gain(2.06)
// drums · congas
const congas_2 = s("conga:33").struct("<~@102 A ~ A B ~ C D ~@53>".pickRestart({
A: "~@4 x!2 ~@2", B: "~ x ~@6", C: "~ x", D: "x",
})).gain(2.06)
// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@99 A ~ A ~ B ~@3 B ~ C D E ~@10 F ~@11 F ~@27>".pickRestart({
A: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", B: "~@7 x ~@8", C: "~@15 x", D: "~ x ~@2", E: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2",
F: "~@3 x",
})).gain(4.1)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@98 A B A C D E D ~@2 F ~ G ~@2 H ~@3 I ~@3 J ~ K ~@11 L ~@27>".pickRestart({
A: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", B: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", C: "~ x ~@2 x ~@2 x ~@2 x ~@5",
D: "~ x ~@6", E: "~ x", F: "~@3 x ~@7 x ~@4", G: "~@3 x ~@3 x", H: "x", I: "~ x ~@2", J: "~@3 x", K: "~@7 x",
L: "~@4 x ~@2 x",
})).gain(3.26)
// drums · whistle
const whistle = s("ballwhistle:1").struct("<~@98 A ~ A ~ B ~ B ~@2 C ~@2 D ~@23 C ~@27>".pickRestart({
// … 37 more lines
More by Emerson, Lake & Palmer
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.