0:00/0:00
// Devil's Haircut — Beck
// 60 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 53 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/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: edit a riff to change every repeat.
// other · distortion guitar
const distortion_guitar = note("<~ A@2 B ~@3 C D E ~@8 F@2 G ~@23 H I J@3 K@3 ~>".pickRestart({
A: "[~ d2@5 ~@2 d2@2 g2@4 c3@4 d2@6 d2@2 g2@5 c3@4 d2@5 ~ d2@2 g2@4 c3@4 d2@6 ~ d2@2 g2@4]/2", B: "c3 ~@7",
C: "~@10 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~", D: "d2@3 g2@4 c3@4 d2@6 d2@2 g2@4 c3@4 ~ d2@4", E: "~ d2 g2@2 c3@2 ~@10",
F: "[~@25 a5@6 g5@6 f5@8 ~ d5@4 f5@2 g5@4 f5@2 a5@6]/2", G: "g5@6 f5@9 d5@4 f5@2 g5@4 f5@2 a5@5", H: "~@13 a4@3",
I: "~ g4@6 f4@6 d4@6 f4@3 g4@3 f4@2 ~ a4@4, ~@27 g4@2 ~@3",
J: "[~ g4@6 ~ f4@6 d4@6 f4@3 g4@3 f4@2 ~ d2@5 ~@2 d2@2 g2@4 [c3,f4]@4 ~@6 d2@2 ~ f4@2 ~@3 f4@2 ~ d2@5 ~ d2@2 g2@4 ~@7 d4@4 ~@2 g2@3 ~@2 f4@3, ~@29 a4@3 ~@4 g4@6 ~@4 d2@5 ~@3 g2@4 c3@4 ~@13 [c3,f4]@7 ~@5 f4@3 ~ g4@3 ~@2, ~@48 d4@7 ~@2 g4@3 ~@2 a4@7 g4@6 ~@4 d2@5 ~@2 d2@2 ~@4 c3@4]/3", // F5
K: "[a4 a4@5 ~@2 g2@4 f4 [c3,f4]@4 ~@2 d4@4 d2@2 [g2,f4]@3 ~@3 [f4,a4]@2 [d2,a4]@6 ~ d2@2 g2@4 [c3,f4]@4 ~@2 d4@4 d2@2 [g2,f4]@3 g4@2 ~ f4@2 ~ [d2,a4]@5 ~ d2@2 g2@4 [c3,f4]@6 ~@11, d2@5 ~ [d2,g4]@2 ~@9 d2@5 ~@7 c3@4 ~@17 d2@5 ~@8 c3@4 ~@29, ~@7 g4@6 ~@15 g4@3 ~@9 g4@6 ~@20 f4@3 ~@4 g4@6 ~@17]/3", // F5 G7 F D5 F5 G7 D5 F5 …
})).s("gm_distortion_guitar").gain(0.57)
// bass · acoustic bass
const bass = note(`<
~ A@2 B C@2 D@2 E F@3 G@3 H I@2 J ~ K L@4 M@3 N@3 ~@3 O@3 P Q@2 R S@2 T@2 ~ U@3 V@3 W
>`.pickRestart({
A: "[~ d2@5 ~@2 d2@2 g2@4 c3@4 d2@6 d2@2 g2@5 c3@4 d2@5 ~ d2@2 g2@4 c3@4 d2@6 ~ d2@2 g2@4]/2",
B: "c3@4 d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@3",
C: "[~ c3@4 d2@6 ~ d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@4 c3@4 ~ d2@6 d2@2, ~@22 e2 ~@41]/2",
D: "[g2@4 c3@4 d2@6 d2@3 g2@4 c3@4 d2@6 d2@2 g2@4 c3@4 ~ d2@5 ~ d2 ~ g2@4 c3@4 d2@5 ~]/2",
E: "d2@2 ~ g2@4 c3@4 d2@6 d2@2 g2@4 c3@4 ~ d2@4",
F: "[~@2 d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 c3@5 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@5 c3@4]/3",
G: "[d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@4 c3@4 d2@6 ~ d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~]/3",
H: "c3@4 d2@6 d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@3",
I: "[~ c3@4 d2@6 d2@2 g2@5 c3@4 d2@6 d2@2 g2@4 c3@4 d2@6 ~ d2 ~ g2@4 c3@4 d2@6 d2@2 ~]/2",
J: "g2@4 c3@4 d2@5 ~ d2@2 g2@4 c3@4 ~@8", K: "~@27 d2@5",
L: "[~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 c3@5 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@3 ~ d2@5 ~ d2@2 g2@4 c3@4 ~ d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~ c3@3]/4",
M: "[~ d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@4 c3@3 ~ d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4]/3",
N: "[~ c3@4 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2 ~ g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@4 c3@4 ~@25]/3",
O: "[~@13 d2@5 ~ d2@2 g2@4 c3@4 ~ d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@3 ~ c3@4 d2@5 ~ d2@2 g2@3 ~@2 c3@4 d2@5 ~ d2@2 g2@4 c3@4]/3",
P: "d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 g2@4 ~ c3@2",
Q: "[~@2 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@3 ~ d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@4]/2",
R: "c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@6 d2@2 g2@3",
S: "[~@2 c3@4 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@3 g2@4 c3@4 d2@5 ~ d2@2]/2",
T: "[g2@4 c3@5 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~ d2@2 ~ g2@4 c3@4 d2@5 ~ d2@2 g2@4 c3@3 ~@7]/2",
U: "[~@29 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 ~ g2@4 c3@4 d2@5 ~ d2@2 g2@4 c3@4 ~ d2@5 ~ d2@2 g2@4 c3@4]/3",
V: "[d2@5 ~ d2@2 g2@4 ~ c3@4 d2@5 ~ d2@2 g2@4 c3@4 d2@5 ~@2 d2@2 g2@4 c3@4 d2@5 ~ d2@2 ~ g2@4 c3@3 ~ d2@5 ~ d2@2 g2@4 c3@4 ~ d2@5 ~ d2@2 g2@4]/3",
W: "c3 ~@7",
})).s("gm_acoustic_bass").gain(0.41)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
~ A@2 B C D E F G H I J K L M N O P Q@2 R S T U V ~ W S T U X ~@9 Y Z AA AB AC AD AE AF AA AB AG ~@2
>`.pickRestart({
A: "[~@6 [d5,f#5] ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@3 ~@6 [d5,f#5]@2 ~@6 [d5,f#5] ~@7 [d5,f#5]@2 ~@15]/2", // D
B: "~@8 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@5", C: "~ [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5] ~@7 [d5,f#5] ~@5",
D: "~@3 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5]@2 ~@2", // D
E: "~@4 [d5,f#5] ~@7 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~", // D
F: "~@5 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@6 [d5,f#5]@2", G: "~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@6 [d5,f#5] ~@8",
H: "[d5,f#5]@2 ~@14 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@5", // D
I: "~ [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@4", // D
J: "~@2 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@2", // D
K: "~@4 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@6 [d5,f#5]@2 ~", L: "~@5 [d5,f#5]@2 ~@7 [d5,f#5]@2 ~@16",
M: "~@23 [d5,f#5]@2 ~@7", N: "[d5,f#5]@2 ~@6 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@6",
O: "~ [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@5", // D
P: "~@2 [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@4", // D
Q: "[~@4 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@4 d4@5 ~ d4@5 ~ c4@7 a3@3 d4@3 c4@3 a3@3 d3@2 g3@5 ~]/2", // D
R: "g3@5 ~ g3@8 ~ a3@2 d3@2 f3@9 ~@3 [d5,f#5]", S: "~@8 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@7",
T: "~ [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@5", // D
U: "~@2 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@4", // D
V: "~@4 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@2", // D
W: "~@6 [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5]", X: "~@3 [d5,f#5] ~@28", Y: "~@25 [d5,f#5] ~@6",
Z: "~@2 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@4", // D
AA: "~@3 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@3", // D
AB: "~@4 [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@2", AC: "~@6 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@4 d4@5",
AD: "~ d4@5 ~ d4@5 ~ c4@3 ~@2 e4@2 d4@3 ~ c4@2 d3@2 g3@4", AE: "~@2 g3@5 ~ g3@8 ~ a3@2 [d3,e3] ~ f3@9 ~@2",
AF: "~ [d5,f#5] ~@8 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@5", // D
AG: "~@6 [d5,f#5] ~@7 [d5,f#5] ~@7 [d5,f#5] ~@8 [d5,f#5]", // D
})).s("gm_acoustic_guitar_steel").gain(0.41)
// other · lead 5 charang
const lead_5_charang = note("<~@14 A B@2 C D ~@15 E F@2 G H ~@10 I J K L>".pickRestart({
A: "~@15 d4 ~ d4 ~ e4@2 f#4@3 ~ e4@4 ~ d4@2",
B: "[~@4 c4@2 d4@4 b3@3 ~@3 d4 ~ d4 ~ e4 ~@2 f#4@4 e4@4 d4@4 ~@2 c4@2 d4@4 b3@4 ~@3 d4 ~ d4 ~ e4@2 f#4@4 e4@4]/2",
C: "d4@4 ~@2 c4@2 ~ d4@4 b3@4 ~@2 d4@2 d4@2 e4@2 f#4@3 ~ e4@3, ~@29 f4 ~@2", D: "~@2 d4@4 ~@2 c4@2 d4@4 b3@5 ~@13",
E: "~@13 f#3 ~ f#3@4 e3@5 ~ e3@5 d3@2, ~@19 b3 ~@12",
F: "[~@2 d3 ~ d3@4 c3@3 ~@3 f#3 ~ f#3@3 ~@2 e3@4 e3@3 ~ e3@2 d3@3 ~ d3 ~ d3@4 c3@4 ~@3 f#3 ~ f#3@4 e3@8 ~@2]/2",
G: "d3 ~ d3 ~@2 d3 ~ d3@4 c3@4 c3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ e3@3 ~@2 e3 ~", H: "e3 ~ d3@3 ~ d3 ~ d3@4 c3@4 ~@16",
I: "a4@2 a4@3 ~@2 a4@5 ~@4 a4@2 ~ a4@4 a4@5 ~@4", J: "~@2 a4 ~ a4 ~ a4 ~ a4@4 ~@6 a4 ~ a4@3 ~ a4@5 ~@3",
K: "~@3 a4@2 a4@4 a4@4 a4@5 ~ a4 ~@2 a4@3 ~ a4@6",
L: "[e4,f4,g4] [e3,f3,g3,a3,b3,c4,d4] [g2,a2,b2,c3,d3] [c2,d2,e2,f2] ~@28", // Em Em7 G Dm7
})).s("gm_lead_5_charang").gain(0.41)
// other · tremolo strings
const tremolo_strings = note("<~@25 [~@7 d5@14 ~@11, d3@29 ~@3, ~@4 d4@21 ~@7] ~@27>")
.s("gm_tremolo_strings").gain(0.41)
// chords · marimba
const marimba = note("<~@11 A ~ B ~@16 C D E F G ~@18>".pickRestart({
A: "~@6 d3 e3 [f3,g3,a3] [b3,c4,d4,e4,f4] [g4,a4,b4,c5] d5@9 ~@12", B: "~@9 d2 e2 [f2,g2,a2] [b2,c3] d3@11 ~@8",
C: "~@7 a3@2 [b3,c4] d4 [e4,f4] ~ a4@8 ~@3 [b2,e4,f4,g4] ~ [b2,e4,f4,g4]@2 ~@2 [c3,b3,c4,d4,e4] ~, ~@7 f2@15 ~@10, ~@6 g4 ~@9", // Cmaj7 Fmaj7 Em Cmaj7
D: "~ c3@7 ~@5 b3 [c4,d4,e4] [f4,g4] a4@7 ~@2 [b2,e4,f4,g4,a4] ~ [b2,e4,f4,g4,a4]@3 ~ [c4,d4,e4], [c4,d4,e4]@5 ~@3 a3@5 ~@19, ~@9 f2@16 ~@7", // C Fsus2 Em C
E: "c3 ~ c3@7 ~@6 [b3,c4] [d4,e4,f4] a4@7 ~@2 [d4,e4,f4,g4,a4] b2 ~ b2@3, ~ [c4,d4,e4]@5 ~@3 a3@6 ~@2 g4 ~@10 [e4,f4,g4,a4]@3 ~, ~@5 f2@8 ~@3", // Cmaj7 Dm C Fmaj7
F: "[c4,d4,e4,f4] c3@2 [c4,d4,e4,f4]@5 ~@9 b3 [c4,d4,e4] [f4,g4] ~@8 [b2,e4,f4,g4,a4] ~ [b2,e4,f4,g4,a4]@2, ~@3 c3@8 a3@7 ~ a4@5 ~@8, ~@3 f2@4 ~", // Dm7 C Fsus2 Em
G: "~@2 [c4,d4,e4,f4] ~@6 [a3,c4,d4,e4] ~@3 f2 ~@18, ~@3 c3@2 c3@8 ~@19, ~@4 [c4,d4,e4,f4]@5 b3@2 ~ a3@7 ~@13", // Dm7 Am Dm7
})).s("gm_marimba").gain(0.41)
// chords · epiano1 · D
const epiano1 = note(`<
~@34
[~@13 d5!3 d5@2 ~ d5 ~@3 d5 ~@2 d5 ~@2 d5 ~ d5]
[d5!3 ~ d5 ~@2 d5!2 ~ d5 ~@3 d5 ~ d5!4 ~ d5 ~@2 d5!2 ~ d5 ~@3 d5]
[d5!4 ~ d5 ~@3 d5!2 ~ d5 ~@2 [d5,f#5] ~ [d5,f#5]!4 ~ [d5,f#5] ~@2 [d5,f#5]!2 ~ [d5,f#5]@2 ~@2]
[[d5,f#5]!2 ~ [d5,f#5]!3 ~ d5@2 ~@4 [d5,f#5]@2 ~@2 [d5,f#5]!4 ~ [d5,f#5] d5@2 ~@2 f#5!2 ~ [d5,f#5]@2, ~@7 f#5 ~@15 f#5 ~@3 d5@2 ~@3]
[~@2 [d5,f#5]!3 f#5!2 ~ d5@2 ~@22, ~@5 d5@2 ~ f#5 ~@23]
~@14
>`).s("gm_epiano1").gain(0.41)
// other · agogo
const agogo = note("<~@34 A B@2 C D ~@14>".pickRestart({
A: "~@13 d5@2 ~ d5 g5@2 c6@3 d5 g5@2 c6@2 ~@3 d5@2",
B: "[~@2 c6@2 d5@3 g5 c6@2 d5@3 ~ d5@2 ~ d5 g5@2 ~ c6@3 d5 g5@2 c6@2 ~@2 d5@2 ~ g5 c6@2 d5@2 ~ g5 c6@2 ~ d5@2 ~@2 d5@2 ~ d5 g5@2 c6@2 ~@2 g5@2 c6@2 ~@2, ~ g5@2 ~@54 d5@2 ~@5]/2",
C: "d5 ~@2 g5 ~ c6@2 d5@3 g5 c6@2 d5@2 ~@2 d5@3 d5 g5@2 c6@2 ~ d5 g5@2 ~ c6@2", D: "~@2 d5@2 ~ g5 c6@2 d5@2 ~@22",
})).s("gm_agogo").gain(0.41)
// drums · kick
const kick = s("bd").struct("<~@14 A B C D E F G ~@5 H I J K L M N O ~@4 P Q R S T U V W X Y Z AA AB ~@2>".pickRestart({
A: "~@19 x ~ x ~@8 x ~", B: "~@4 x ~ x ~@7 x ~@5 x ~@2 x ~@7 x", C: "~@5 x ~ x ~@8 x ~@5 x ~ x ~@7",
D: "x ~@5 x ~@2 x ~@7 x ~@5 x ~ x ~@6", E: "~@2 x ~@5 x ~ x ~@7 x ~@6 x ~ x ~@4",
F: "~@3 x ~@5 x ~ x ~@8 x ~@5 x ~ x ~@3", G: "~@4 x ~@6 x ~ x ~@7 x ~@10", H: "~@2 x ~ x ~@7 x ~@6 x ~ x ~@7 x ~@2",
I: "~@3 x ~@10 x ~@5 x ~@10 x", J: "~@5 x ~@9 x ~@5 x ~@2 x ~@7", K: "x ~@5 x ~ x ~@8 x ~@5 x ~ x ~@6",
L: "~ x ~@6 x ~ x ~@13 x ~ x ~@5", M: "~@9 x ~ x ~@14 x ~ x ~@3", N: "~@10 x ~ x ~@14 x ~ x ~@2",
O: "~@6 x!2 ~@6 x!2", P: "~@9 x!2 ~@5", Q: "~@3 x ~ x ~@14 x ~ x ~@9", R: "~@4 x ~@2 x ~@13 x ~ x ~@8",
S: "x ~@5 x ~ x ~@7 x ~@5 x ~@2 x ~@6", T: "~ x ~@5 x ~ x ~@8 x ~@5 x ~ x ~@5",
U: "~@2 x ~@6 x ~ x ~@7 x ~@5 x ~ x ~@4", V: "~@4 x ~@5 x ~ x ~@7 x ~@6 x ~ x ~@2",
W: "~@5 x ~@5 x ~ x ~@8 x ~@5 x ~ x ~", X: "~@6 x ~@6 x ~ x ~@7 x ~@5 x ~ x", Y: "~@8 x ~@5 x ~ x ~@7 x ~@6 x",
Z: "~ x ~@6 x ~@6 x ~ x ~@8 x ~@5", AA: "x ~ x ~@7 x ~@6 x ~ x ~@7 x ~@4", AB: "~ x ~ x ~@8 x ~@5 x ~ x ~@7 x ~@3",
})).gain(0.41)
// drums · rim
const rim = s("rim").struct("<[x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2] ~@52>").gain(0.41)
// drums · snare
const snare = s("sd").struct(`<
~@3 A ~@3 B ~@4 C ~ D E F G H I J ~@3 K ~ L M N O P Q R S T ~@3 U V W X Y Z AA AB AC AD AE AF AG ~@2
>`.pickRestart({
A: "x!2 ~@30", B: "~@5 x ~@26", C: "~@12 x!2 ~@18", D: "~@23 x ~@2 x ~ x ~@3",
E: "x ~@7 x ~@2 x ~ x ~@2 x ~@8 x ~@2 x ~ x ~", F: "~ x ~@7 x ~@2 x ~@2 x ~@2 x ~@7 x ~@2 x ~ x",
G: "~@2 x ~@8 x ~@2 x ~ x ~@2 x ~@7 x ~@2 x ~", H: "~ x ~@2 x ~@7 x ~@2 x ~ x ~@2 x ~@8 x ~@2",
I: "x ~ x ~@2 x ~@7 x ~@3 x ~ x ~@2 x ~@7 x ~", J: "~ x ~ x ~@2 x ~@8 x ~@2 x ~ x ~@2 x ~@8", K: "~@29 x!2 ~",
L: "~@6 x ~@2 x ~ x ~@3 x ~@7 x ~@2 x ~ x ~@2 x", M: "~@8 x ~@2 x ~ x ~@2 x ~@7 x ~@2 x ~ x ~@2",
N: "~ x ~@7 x ~@2 x ~ x ~@2 x ~@8 x ~@2 x ~ x", O: "~@2 x ~@7 x ~@2 x ~@2 x ~@2 x ~@7 x ~@2 x ~",
P: "x ~@2 x ~@8 x ~@4 x ~@2 x ~@7 x ~@3", Q: "~@2 x ~@2 x ~@7 x ~@4 x ~@2 x ~@8 x ~",
R: "~@3 x ~@2 x ~@7 x ~@5 x ~@2 x ~@7 x", S: "~@4 x ~@2 x ~@8 x ~@4 x ~@2 x ~@7", T: "x ~@5 x ~@2 x ~@22",
U: "~@13 x!3 ~@7 x ~@4 x ~@2 x", V: "~@7 x ~@4 x ~@3 x ~@7 x ~@4 x ~@2", W: "x ~@8 x ~@4 x ~@2 x ~@7 x ~@2 x ~@2 x",
X: "~@2 x ~@7 x ~@2 x ~ x ~@2 x ~@8 x ~@2 x ~", Y: "x ~@2 x ~@7 x ~@2 x ~@2 x ~@2 x ~@7 x ~@2 x",
Z: "~ x ~@2 x ~@8 x ~@2 x ~ x ~@2 x ~@7 x ~@2", AA: "~ x ~ x ~@2 x ~@7 x ~@2 x ~ x ~@2 x ~@8 x",
AB: "~@2 x ~ x ~@2 x ~@7 x ~@3 x ~ x ~@2 x ~@7", AC: "x ~@2 x ~ x ~@2 x ~@8 x ~@2 x ~ x ~@2 x ~@6",
AD: "~ x ~@3 x ~ x ~@2 x ~@7 x ~@2 x ~ x ~@2 x ~@5", AE: "~@3 x ~@2 x ~ x ~@2 x ~@8 x ~@2 x ~ x ~@2 x ~@3",
AF: "~@4 x ~@2 x ~@5 x ~@7 x ~@2 x ~ x ~@2 x ~@2", AG: "~@6 x ~@2 x ~ x ~@2 x ~@7 x ~@2 x ~ x ~@3 x",
})).gain(0.41)
// drums · open hat
const open_hat = s("oh").struct(`<
~ A B C D E F G H I J K L M N O P Q R ~ S T U V W X Y A E F Z ~@9 AA AB P AC AD AE AF AG AH AI A B ~
>`.pickRestart({
A: "~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@14",
C: "~@4 x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
D: "~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~",
F: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
G: "~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
H: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~",
I: "x ~ x ~@9 x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x",
J: "~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
K: "x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~",
L: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x", M: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~@15",
N: "~@19 x ~ x ~ x ~ x ~ x ~@2 x ~", O: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x",
P: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
Q: "x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", R: "x!12 ~@4", S: "~@27 x ~ x ~@2",
T: "~@2 x ~ x ~ x ~@3 x ~ x ~ x ~@3 x ~ x ~ x ~@4 x ~ x ~ x",
U: "~@3 x ~ x ~ x ~@3 x ~ x ~ x ~@4 x ~ x ~ x ~@3 x ~ x ~",
V: "x ~@3 x ~ x ~ x ~@4 x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x",
W: "~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@4 x", X: "~ x ~@30",
Y: "~@2 x ~ x ~@3 x ~ x ~ x ~@4 x ~ x ~ x ~@3 x ~ x ~ x ~ x", Z: "~ x ~ x ~ x ~@26", AA: "~@21 x ~ x ~ x ~ x ~ x ~@2",
AB: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x",
AC: "x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
AD: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x",
AE: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~",
AF: "x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
AG: "~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x",
AH: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~",
AI: "x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.41)
// drums · mid tom
const mid_tom = s("mt").struct("<~@39 [~ x!2 ~@14 x!2 ~@13] [~@2 x!2 ~@15 x!2 ~@11] ~@12>").gain(0.41)
// drums · high tom
const high_tom = s("ht").struct(`<
~@30
[~@22 x!2 ~@8]
[~@7 x!2 ~@14 x ~ x ~@6]
// … 35 more lines
More by Beck
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.