0:00/0:00
// Breakout — Foo Fighters
// 156 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(156/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.
// bass · electric bass finger
const bass = note(`<
~@17 A B A C D E D F A B A C D E D F G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 I J H K L M N O P Q N R G S T U G S T V A B A C D
E D F A B A C D E D F D E ~ W@2 X@2 W@2 X@2 W@2 X@2 W@2 X@2 A B Y Z D AA AB F A B A AC D E D F D E D E W@2 X@2 W@2 AD
AE AF
>`.pickRestart({
A: "b1 ~ b1 ~ b1 ~ b1 ~ b1@8", B: "g1 ~ g1 ~ g1 ~ g1 ~ g1@7 ~", C: "e1 ~ e1 ~ e1 ~ e1 ~ e1@4 f#1@3 ~",
D: "g1 ~ g1 ~ g1 ~ g1 ~ g1@4 a1@4", E: "e1 ~ e1 ~ e1 ~ e1 ~ e1@4 a1@4", F: "e1 ~ e1 ~ e1 ~ e1 ~ e1@4 a1@3 ~",
G: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", H: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
I: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", J: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
K: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2", L: "b1", M: "e2@15 ~", N: "c#2", O: "c2", P: "b1@3 d#2", Q: "e2",
R: "c2@15 ~", S: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", T: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~",
U: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", V: "c2 ~@7", W: "[b1@5 ~ a1@5 ~ c#2@6 e1@5 ~ e1@3 ~ e1@4]/2",
X: "[b1@3 a1@3 c#2@3 g#2@3 a2@2 a#2 b2]/2", Y: "b1 ~ b1 ~ b1 ~ b1 ~@5 b2@4, ~ b1",
Z: "e1 ~ [e1,e3] ~ e3@2 [e1,d3] ~ d3@2 c#3 ~ [f#1,c#3]@2 b2 ~, ~@4 e1 ~@3 e1@4 ~@4", // E E7 F#5
AA: "e1 ~ e1 ~ e1 ~ e1 ~ [e1,e3]@4 [a1,d3]@4", AB: "g1 ~ g1 ~ e3@2 g1 ~@3 a2@2 a1@4, ~@4 g1 ~@3 [g1,b2]@4 ~@4",
AC: "e1 ~ [e1,e3] ~ e3@2 [e1,d3] ~ d3@2 c#3 ~ [f#1,c#3]@2 b2@2, ~@4 e1 ~@3 e1@4 ~@4", // E E7 F#5
AD: "b1 ~ b1@2 ~@2 a1 ~ a1@2 ~@2 c#2 ~ c#2@2", AE: "~@2 e1 ~ e1@12", AF: "~ e1@2 ~@13",
})).s("gm_electric_bass_finger").gain(0.45)
// chords · overdriven guitar
const overdriven_guitar = note(`<
~@2 A@3 B C ~@4 D ~@2 E@3 F G F H I J K L F G F H I J K L M@8 ~@12 N@8 ~@8 F G F H I O K L F G F H I O K L K L ~ P Q R
Q P Q R Q P Q R Q P Q R Q F G F H I O K L F G F H I O K L K L K L P Q R Q P Q S T U
>`.pickRestart({
A: "[g#4@2 c4]/3", B: "b2", C: "e4@15 ~", D: "[c#3,c#4,f4]", E: "[g#4@16 g4 ~@7]/3", F: "[b2,f#3,b3]", G: "[g2,g3]",
H: "[b2,e3]@11 ~ [f#2,c#3,f#3]@3 ~, e2", I: "[d3,g3]@5 ~ [d3,g3]@2 [d3,g3]@3 ~ [a2,e3,a3]@3 ~, g2@3 ~",
J: "[b2,e3]@4 ~ [b2,e3] ~@6 e2@4, e2@11 ~@5, ~@8 [b2,e3]@7 ~", // E5
K: "[d3,g3]@5 ~ [d3,g3] ~ [d3,g3]@4 [a2,e3,a3]@3 ~, g2@3 ~", // G5 A5
L: "[b2,e3]@5 ~ [b2,e3] ~@5 e2@3 ~, e2@11 ~@5, ~@8 [b2,e3]@7 ~", // E5
M: "[f#3@26 ~@3 f#3@2 ~@9 f#3@8 e3@16, [b2,b3]@32 e2@31 ~, ~@28 e3@2 ~ g3@31 ~@2, ~@17 d4@14 ~]/4", // B
N: "[[b2,f#4] [e3,e4] [c#3,c#4,f4] [c3,c4,e4,g4], b3@15 ~@17, d#4@15 ~ g#4@33 ~@15]/4", // B5 E C# C
O: "[b2,e3]@4 ~ [b2,e3] ~@6 e2@4, e2@11 ~@5, ~@7 e3@7 ~@2, ~@8 b2@7 ~", // E5
P: "[f#3,b3] ~ [f#3,b3]@3 ~ [a2,e3,a3] ~ [a2,e3,a3]@4 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2, b2@3 ~@5", // B5 A5 C#5
Q: "~@2 [e3,b3] ~ [e3,b3]@11 ~", // E5
R: "[b2,f#3,b3] ~ [b2,f#3,b3]@3 ~ [a2,e3,a3] ~ [e3,a3]@4 [c#3,g#3,c#4] ~ [c#3,g#3,c#4]@2, ~@4 a2 ~@3", // B5 A5 C#5
S: "[b2,f#3,b3] ~ [b2,b3]@2 ~@2 [a2,a3] ~ [a2,a3]@2 ~@2 [c#3,c#4] ~ [c#3,c#4]@2", T: "~@2 [e2,e3] ~ e2@12",
U: "e3 ~@7",
})).s("gm_overdriven_guitar").gain(0.22).pan(0.7)
// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~ A@2 B C D@4 E@4 A@2 B F ~@116>".pickRestart({
A: "[[b2,f#4] [e3,e4], b3@15 ~, d#4@15 ~@17]/2", B: "[c#3,c#4,f4]", C: "[c3,e4,g4]",
D: "[f#4 e3 [c#3,c#4,f4] [c3,c4,e4,g4], b3@15 ~@17, d#4@15 ~ g#4@33 ~@15]/4", // C# C
E: "[[b2,f#4] [e3,e4] ~ [c3,c4,e4,g4], b3@15 ~@17, d#4@15 ~ g#4@32 ~@16]/4", F: "[c3,c4,e4] ~@7",
})).s("gm_overdriven_guitar").gain(0.12).pan(0.7)
// chords · pad sweep
const pad_sweep = note("<~ A@2 B C D E B C A@2 B C D E B ~@37 A@2 B F D E B F A@2 B F D E B G ~@64>".pickRestart({
A: "[[d#4,f#4,d#5,f#5] [e4,g#4,e5,g#5], [b3,b4]@31 ~]/2", B: "[c#4,f4,g#4,f5]", C: "[c4,e4,g4,e5]",
D: "[b3,d#4,f#4,b4,d#5,f#5]", E: "[e4,g#4,e5,g#5]", F: "[c4,e4,g4,e5,g5]", G: "c4@15 ~",
})).s("gm_pad_sweep").gain(0.2).pan(0.7)
// chords · pad sweep · soft notes
const pad_sweep_soft = note("<~@3 A B ~@2 A B ~@2 A B ~@2 A ~@39 A C ~@2 A C ~@2 A C ~@2 A C ~@64>".pickRestart({
A: "[c#5,g#5]", B: "[c5,g5]", C: "c5@15 ~",
})).s("gm_pad_sweep").gain(0.1).pan(0.7)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~ A@7 B A@7 C ~@36 A@7 B ~@72>".pickRestart({
A: "[~@28 e3@4 ~@12 c#4@4 ~@12 c3@4 ~@28 e3@3 ~@7 b4@10, b2@14 ~@2 e3@11 ~@5 c#3@16 c3@11 ~@5 b2@16 e3@11 ~@5 c#3@14 ~@2, ~@4 b3@13 ~@3 b3@11 ~@5 c#4@6 ~@10 c4@13 ~@3 b3@8 ~ b3@6 ~ b3@11 ~@5 c#4@4 ~@8, ~@6 b4@14 ~@2 b4@14 ~@2 b4@14 ~@2 b4@14 ~@2 b4@14 ~@2 b4@13 ~@13, ~@10 f#4@10 ~@6 f#4@7 ~@9 f#4@11 ~@5 f#4@10 ~@6 f#4@8 ~@8 e4@7 ~@15]/7",
B: "~@10 c4@5 ~, c3@15 ~, ~@4 c4@5 ~@7, ~@3 b4@5", C: "c3@15 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.35).pan(0.7)
// chords · distortion guitar
const distortion_guitar = note(`<
A@8 B C@8 D E F G H I J K D E F G H I J L@6 M@5 N O@2 P@7 Q@8 R S T U R S T V D E F G H I J K D E F G H I J K W K X@17
D E F G H I J K D E F G H I J K W K J K X@6 Y Z@2
>`.pickRestart({
A: "[~@15 b2 f#4@4 ~@2 [b3,d#4,f#4] ~@5 b2@2 ~ d#4 g#4@4 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 e3@2 ~ c#3 g#4@4 ~@2 [c#4,f4,g#4]@2 ~@4 c#3@2 ~@2 g4@4 ~@2 [c4,e4,g4]@2 ~@4 c3@2 ~ b2 f#4@4 ~@2 [b3,d#4,f#4] ~@5 b2@2 ~ d#4 g#4@4 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 e3@2 ~ c#3 g#4@4 ~@2 [c#4,f4,g#4]@2 ~@2 f4@2 c#3@2 ~ e4, ~@15 [b3,d#4]@5 b2@6 [b3,d#4,f#4]@4 b3@6 e3@6 ~@5 f4@5 ~@6 [c#4,f4,g#4]@4 c4@6 ~@6 [c4,e4,g4]@6 ~@15 e4@5 ~@11 f4@5 ~@10 c4@2, ~@31 e4@5 ~@10 c#4@6 c#3@6 ~@5 e4@5 ~@11 [b3,d#4]@6 ~@5 [b3,d#4,f#4]@4 b3@6 ~@10 c#4@6 ~@6 [c#4,g#4]@5 ~, ~@32 c3 ~ c3@3 ~@5 b2@3 ~@5 e3@3 ~@5 c#3@3 ~@3]/8", // B E C# C B E C# B …
B: "g4@2 ~ [c4,e4,g4] ~@2 c3 ~, c3 ~ c3@3 [c4,e4,g4]@3", // C
C: "[~@6 [b3,d#4,f#4] ~@5 b2@2 ~ d#4 g#4@4 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 e3@2 ~ c#3 g#4@4 ~@2 [c#4,f4,g#4]@2 ~@4 c#3@2 ~@2 g4@4 ~@2 [c4,e4,g4]@2 ~@4 c3@2 ~ b2 f#4@4 ~@2 [b3,d#4,f#4] ~@5 b2@2 ~ d#4 g#4@4 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 e3@2 ~ c#3 g#4@4 ~@2 [c#4,f4,g#4]@2 ~@2 f4@2 c#3@2 ~@2 [c3,g4]@2 ~@14, ~@4 b2@6 [b3,d#4,f#4]@4 b3@6 e3@6 ~@5 f4@5 ~@6 [c#4,f4,g#4]@4 c4@6 ~@6 [c4,e4,g4]@6 ~@15 e4@5 ~@11 f4@5 ~@10 c4@2 ~@16, ~@15 e4@5 ~@10 c#4@6 c#3@6 ~@5 e4@5 ~@11 [b3,d#4]@6 ~@5 [b3,d#4,f#4]@4 b3@6 ~@10 c#4@6 ~@6 [c#4,g#4]@5 e4@2 ~@15, ~@24 c3 ~ c3@3 ~@5 b2@3 ~@5 e3@3 ~@5 c#3@3 ~@11]/8", // B E C# C B E C# C5 …
D: "[f#3,b3]@5 ~ [b2,f#3]@2 [b2,f#3,b3]@7 ~", E: "[d3,g3]@5 ~ [d3,g3] ~@5 g2@4, g2@3 ~, ~@8 [d3,g3]@7 ~",
F: "[b2,f#3,b3]@5 ~ [b2,f#3,b3]@2 [b2,f#3,b3]@7 ~, a3 ~@15", // B5
G: "[b2,e3]@5 ~ b2 ~ [b2,e3]@4 [f#2,c#3,f#3]@3 ~, e2@3 ~", H: "[g2,d3,g3]@11 ~ [a2,e3,a3]@3 ~", I: "[e2,e3], b2@7 ~",
J: "[g2,d3,g3]@11 ~ [a2,e3,a3]@4, ~@12 b3 ~@3", K: "[b2,e3]@11 ~ [b2,e3]@3 ~, e2@15 ~",
L: "[[b2,e3]@11 ~ [b2,e3]@2 ~@3 b3@29 ~@2 b3@30 ~@3 b3@15, e2@14 b2@31 ~ b2@32 b2@18, ~@15 f#3@31 e2@2 ~@48, ~@47 e3@32 f#3@17]/6", // E5
M: "[~@16 b3@30 ~@2 b3@31 b2, ~@14 b2@32 b2@31 ~@3, ~@7 e2 ~@32, ~@15 e3@32 f#3@32 ~]/5", N: "~ b3@4 ~@11, [e2,e3]",
O: "[~ b3, ~@7 b2@9, ~@15 f#3@17]/2",
P: "[~@16 b3@30 ~@2 d4@29 ~@3 e4@31 ~, ~@14 b2@32 d3@30 ~@2 e3@33 ~, ~@15 [e2,e3]@32 g2@32 [e2,b3]@33, ~@47 g3@30 ~@35]/7", // E E5
Q: "[b2@4 ~@2 [d#4,f#4] ~@8 d#4 [e3,g#4]@4 ~@2 [e4,g#4]@2 ~@2 [e4,g#4]@2 e3@2 ~ c#3 [c#3,g#4]@4 ~@2 [c#4,f4,g#4]@2 ~@4 c#3@2 ~@2 [c3,g4]@4 ~@2 [c4,e4,g4]@2 ~@4 c3@3 [b2,b3] b2@4 ~@2 [d#4,f#4] ~@5 b2@2 ~ d#4 [e3,g#4]@4 ~@2 [e4,g#4]@2 ~@2 [e4,g#4]@2 e3@2 ~ c#3 [c#3,g#4]@4 ~@2 [c#4,f4,g#4]@2 ~@2 f4@2 c#3@2 ~@2 [c3,g4]@4 ~@2 [c4,e4,g4]@2 ~@4 c3@3 ~, f#3@15 e4@5 e3@8 ~@2 c#4@6 c#3@8 ~@3 e4@5 ~@11 d#4@5 ~@11 e4@5 ~@10 c#4@6 ~@6 [c#4,g#4]@5 e4@5 ~@12, b3@6 b3@4 [b3,d#4,f#4]@4 b3@8 b3@4 b3@6 [c#2,g#3]@16 [c2,g3]@17 ~@3 b2@8 ~@4 e2@16 [c#2,g#3]@16 [c2,g3]@16, ~@4 b2@8 b2@4 e2@15 f4@5 ~@6 [c#4,f4,g#4]@4 c4@6 ~@6 [c4,e4,g4]@6 f#3@15 ~@5 e3@8 ~@3 f4@5 ~@10 c4@6 ~@6 [c4,e4,g4]@6, ~@48 f#3 ~@3 c3@8 ~@4 [b3,f#4]@6 b3@4 [b3,d#4,f#4]@4 b3@2 b3@6 b3@4 b3@6 ~@4 c#3@8 ~@8 c3@8 ~@4]/8", // D#m E C#5 C# C5 C B D#m …
R: "b2 ~ b2 ~ [b2,f#3,b3]@2 b2 ~ b2 ~ [b2,f#3,b3]@3 ~ b2 ~", S: "e3 ~ e3 ~ [b2,e3,b3]@2 b2 ~ b2 ~ [e3,b3]@4 ~@2",
T: "c#3 ~ c#3 ~ [c#3,g#3] ~ c#3 ~ c#3 ~ c#3@4 ~@2, ~@5 g#3 ~@2", // C#5
U: "c3 ~ c3 ~ [c3,g3,c4] ~ c3 ~ c3 ~ [c3,g3,c4]@2 ~@2 c3 ~", V: "[c2,g2,c3] ~@7",
W: "[g2,g3]@3 [a2,e3,a3], [d3,d4]@11 ~ b3 ~@3", // G A5 D
X: "[b3,f#4,b4] ~ [b3,f#4,b4]@2 [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~", // B5
Y: "[b2,f#3,b3] ~ [b2,f#3,b3]@2 ~@2 [a2,e3,a3] ~ [a2,e3,a3]@2 ~@2 [c#3,g#3] ~ [c#3,g#3] ~", // B5 A5 C#5
Z: "[~@2 [b2,e3,a3,b3] ~ e3@13 b2 ~@14, ~ b2@3 ~@4, ~@4 b3@5 ~@23]/2", // Esus4
})).s("gm_distortion_guitar").gain(0.4).pan(0.2)
// chords · distortion guitar
const distortion_guitar_2 = note(`<
~@16 A@5 B C@2 D E F G H@2 I J K L@2 M N@3 M O@3 P@8 Q@4 R S T@2 U V W@2 X Y Z@2 AA AB@4 AC AD AE AF AG E F AH AI AD
AE AF AJ J K AK AL@2 AM@2 AL@2 AM@2 AL@2 AM@2 AL@2 AN@2 AO AP AQ AR@2 I AS AT E AU AV AC AD I J AJ AS AW AX@8 AY@3
>`.pickRestart({
A: "[~@15 f#4 [b3,f#4,b4]@15 [g3,d4] [g3,d4,g4]@14 ~ f#4 b3@15 [b3,e4] e3@11 ~@2 e3@2 [g3,d4], ~@14 b3@2 ~@15 g2@16 b2@14 ~@2 e2@16 ~, ~@15 b2@17 ~@14 b3@2 [f#4,b4]@16 [b3,e4]@14 ~@2, ~@76 [f#3,c#4,f#4]@3 ~]/5", // B5 G5 E5 G5 B5 E5 F#5
B: "f#4 ~@11 [a3,e4,a4]@3 [e3,b3], [g3,d4,g4]@7 ~", // A5 E5 G5
C: "[~@15 d4 ~@12 [a3,b3,e4,a4]@3 [e3,b3], b3@7 ~, [e3,e4] ~, ~@7 g3 [g3,d4,g4]@7 ~]/2", // Asus2 E5 E G5
D: "e3@12 e3@3 [b2,b3,f#4], [b3,e4]@15 ~", E: "[b3,f#4,b4]@15 [g3,d4]", F: "[g3,d4,g4]@15 [b3,f#4]",
G: "[b3,f#4,b4]@15 b3", // B5
H: "[~@12 [f#3,c#4,f#4]@3 g3 [f#4,g4] ~@11 [a3,e4,a4]@3 [e3,b3], e4@7 ~, e3 g2, b3@7 ~ [g3,d4]@7 ~, ~@17 g4@14 ~]/2", // F#5 Gmaj7 A5 E5 G5
I: "[e3,b3,e4]@15 [g3,d4]", J: "~@12 [a3,e4,a4]@3 b3, [g3,d4,g4]@15 ~, ~@12 b3 ~@3", K: "e3@3 e3, [b3,e4]@15 ~",
L: "[b2@7 f#3, [b3,f#4]]/2", M: "g3 f#3, e3, a3 ~@15", N: "[~@4 b2@7 f#3, e3@5 f#4@11, ~@7 b3@17, ~ b4@2]/3",
O: "[~@16 [b3,b4]@31 [e3,b3], e3@15 [b1,b2,f#3,f#4]@32 ~, ~@7 b3 ~@16]/3", // B E5 B5
P: "[~@2 f#3@2 g3@2 ~@8 f#3@8 e3@8 ~@2 b4@30 ~@4 f#3@2 g3@2 ~@8 f#3@8 ~@9 b3 [g2,d3,g3,d4]@32, e4@29 ~@2 f#4@31 ~ e4@32 ~@33, e3@11 ~@20 e3 e3@11 e3@21, ~@6 d4@17 ~@7 b3@31 ~ b3@32 ~@34, ~@70 d4@17 ~@41]/8", // G5
Q: "[~ e4@30 ~@2 b4@15 e4@16, [e2,e3,b3]@31 b3@32 ~, ~@2 f#4 ~]/4", R: "c#4", S: "c4",
T: "[~@10 f#4@5 ~ e4@6 ~@4 e4@5 ~, b3@29 ~@3, ~@3 b4@5 ~@3 b4@5]/2", U: "~@3 b4@5, c#4@15 ~", V: "~@3 b4@5, c4@15 ~",
W: "[b1 ~ b1 ~ [b2,f#3]@2 b1 ~ b1 ~ [b2,f#3]@6 e2 ~ e2 ~ [b2,e3]@2 e2 ~ e2 ~ [b2,e3,b3]@6, ~ b3@3 b3@6 b3@10 b3@6 ~@6, ~@3 b4@5 e4@8, ~@11 b4@5]/2", // B5 E5
X: "c#2 ~ c#2 ~ [c#3,g#3]@2 c#2 ~ c#2 ~ [c#3,g#3]@6, c#4, ~@3 b4@5", // C#5
Y: "c2 ~ c2 ~ c3@2 c2 ~ c2 ~ [c3,c4]@6, c4@2 c4@3 ~@3, ~@3 b4@5", // C
Z: "[b1 ~ b1 ~ [b2,f#3]@2 b1 ~ b1 ~ [b2,f#3,f#4]@6 e2 ~ e2 ~ [b2,e3,b3]@2 e2 ~ e2 ~ [b2,e3,b3]@6, b3@2 b3@3 b3@5 ~ b4@5, ~@3 b4@5 e4@8]/2", // B5 E5
AA: "c#2 ~ c#2 ~ [c#3,g#3]@2 c#2 ~ c#2 ~ [c#3,g#3]@6, c#4@15 ~, ~@6 b4@9 ~", // C#5
AB: "[[c3,g3,c4]@2 ~@13 b3 [b3,f#4,b4]@15 [g2,g3,d4] [g3,d4,g4]@15 [b3,f#4] b3@14 ~ [e3,e4], ~@15 b2@32 b2@15 b3@2, ~@3 [f#4,b4]]/4", // C5 B5 G5 B5 E B5
AC: "~@12 [f#3,c#4,f#4]@3 g3, [e3,e4], b3@7 ~", AD: "[f#4,g4] ~@11 [a3,e4,a4]@3 [e3,b3], [g3,d4]@15 ~, ~ g4@14 ~",
AE: "[e3,b3,e4]@14 ~ d4, ~@7 g3", AF: "~@12 [a3,e4,a4]@3 [e3,b3], [g3,d4,g4]@15 ~, ~@12 b3 ~@3",
AG: "e3@12 e3@2 ~ f#4, [b3,e4]@7 b3", AH: "[b3,f#4,b4]@15 e3", AI: "~@12 [f#3,c#4,f#4]@3 g3, [e3,b3,e4]@15 ~",
AJ: "e3@12 e3@3 [g3,d4], [b3,e4]@15 ~", // G5 E5
AK: "[b2,f#3,b3,f#4,b4] ~ [b2,f#3,b3,f#4,b4] ~ [b2,f#3,b3,b4] ~ [b2,f#3,b3,f#4,b4] ~ [b2,f#3,b3,f#4,b4] ~ [b2,f#3,b3,f#4,b4] ~ [b2,f#3,b3,f#4,b4] ~ [b2,f#3,b3,f#4,b4] ~", // B5
AL: "[[b2,f#3,b3]@6 [a2,e3,a3]@6 [c#3,g#3,c#4]@6 [e3,b3]@13 ~, ~@6 [a#3,b3] ~@5 a#3 ~@19]/2", // B5 A5 C#5 E5 Bmaj7
AM: "[[b2,f#3,b3]@6 [a2,e3,a3]@5 ~ [c#3,g#3,c#4]@6 [e3,b3]@13 ~, ~@18 f3 ~@13]/2", // B5 A5 C#5 E5
AN: "[[b2,f#3,b3]@6 [a2,e3,a3]@5 ~ [c#3,g#3,c#4]@6 [e3,b3]@13 [b2,b3,f#4], ~@18 f3 ~@13]/2", // B5 A5 C#5 E5 B5
AO: "b4 b4@14 [g3,d4], [b3,f#4]", AP: "[g3,d4,g4]@15 [b2,b3,c4]", AQ: "b4 b4@14 b3, [b3,f#4]",
AR: "[~@12 [f#3,c#4,f#4]@3 g3 g3@12 [a3,e4,a4]@3 b3, b3@15 ~, [e3,e4]@15 ~ [d4,g4]@15 ~, ~@16 f#4 ~@15]/2", // F#5 A5 E G5
AS: "~@3 [a3,e4,a4], [g3,d4,g4]@15 ~, ~@12 b3 ~@3", AT: "e4 ~@11 e3@2 ~ f#4, b3@7 b3, e3@3 ~, ~ e4@14 ~",
AU: "[g3,d4,g4]@15 b3", AV: "[b3,f#4,b4]@15 [e3,b3]", AW: "e3@12 e3@3 g3, [b3,e4]@15 ~",
AX: "[g4 ~@11 [a3,e4,a4]@3 b3 e3@12 e3@4 [b2,f#3,b3]@6 [a2,e3,a3]@6 [c#3,g#3,c#4]@6 [e3,b3]@13 ~ [b2,f#3,b3]@6 [a2,e3,a3]@5 ~ [c#3,g#3,c#4]@6 [e3,b3]@13 ~ [b2,f#3,b3]@6 [a2,e3,a3]@6 [c#3,g#3,c#4]@6 [e3,b3]@13 ~, [g3,d4]@15 ~@67 f3 ~@45, ~ g4@127, ~@12 b3 ~@3 [b3,e4]@15 ~@7 [a#3,b3] ~@5 a#3 ~@57 [a#3,b3] ~@5 a#3 ~@19]/8", // A5 B5 A5 C#5 E5 B5 A5 C#5 …
AY: "[[b2,f#3,b3,f#4,b4]@2 [b3,b4] b3@3 [a2,e3,a3,e4,a4] ~ [a2,e3,a3,e4,a4]@2 ~@2 [c#3,g#3,c#4,g#4] ~@2 [c#3,g#3,c#4,g#4]@2 ~@2 [b3,e4] ~ [b2,b3,e4]@12 [e2,e3]@4 ~@11, ~@2 [b2,f#3,f#4]@3 ~@15 e3@13 ~@15]/3", // B5 B A5 C#5 E5 E B5
})).s("gm_distortion_guitar").gain(0.35).pan(0.2)
// chords · overdriven guitar
const overdriven_guitar_2 = note(`<
~ A@2 B C D@2 E F A@2 B G H@2 E I ~@36 J K@2 L M N O P ~@36 Q@2 R ~ S ~ T ~@21 Q@2 R ~ S ~@3
>`.pickRestart({
A: "[b3@4 ~@6 f#4@6 ~@11 e3@4 [c#4,f4], b2@16 e3@11 ~@5, f#4@10 ~@6 g#4@9 g#4@7, ~@4 b3@16 b3@11 ~, ~@6 d#4@10 e4@6 e4@9 ~]/2", // C#
B: "~@3 c#3, c#3@3 ~, g#4@5 g#4@3, f4@3 f4@5, ~ c#4@3", C: "c4@2 ~@5 c4, c3@3 c3, g4@5 g4@3, e4@3 e4@5, ~@2 c4@5 ~",
D: "[~@12 b2@4 f#4 ~@11 e3@4, b2@3 ~ e3@3 ~, f#4@5 f#4@3 g#4@5 g#4@3, d#4@6 d#4@9 ~ e4@6 e4@8 ~@2, ~ b3@4 b3@3]/2",
E: "c#4 ~@2 c#3, c#3@3 ~, g#4@5 g#4@3, ~ c#4@3, ~@6 f4@9 ~", F: "c4@2 ~@3 g4@3, c3@15 ~, g4@5 ~@3, ~ c4@3, ~@3 e4@5",
G: "c4@2 ~@5 c4, c3@3 c3, g4@5 g4@3, ~@2 c4@5 ~, ~@3 e4@5",
H: "[b3@4 ~@8 b2@4 f#4 ~@11 e3@4, b2@3 ~ e3@3 ~, f#4@5 f#4@3 g#4@5 g#4@3, ~ b3@4 b3@3, ~@6 d#4@9 ~ e4@6 e4@8 ~@2]/2",
I: "[c3,c4,e4,g4] ~@7", J: "~@5 f#4@2 ~, b2, ~ b3@3, ~@3 d#4@5",
K: "[g#4@4 ~@7 e3@4 ~ g#4@4 ~@8 c#3@4, e3@9 g#4@5 ~@8 f4@10, ~@4 b3@9 ~@2 [c#4,f4]@3 ~@2 c#4@12, ~@6 e4@7 ~@3 c#3@10 g#4@5 ~]/2", // C#
L: "g4@2 ~@5 c4, c3@10 g4@5 ~, ~ c4@2 c3, ~@6 e4@9 ~", M: "f#4 ~@2 b2, b2@10 f#4@5 ~, ~ b3@3, ~@6 d#4@9 ~",
N: "g#4 ~@2 e3, e3@10 g#4@5 ~, f#4 ~@3 b3@12, ~@6 e4@7 ~@3", O: "g#4 ~@2 c#3, c#3@10 g#4@5 ~, ~ c#4@3, ~@6 f4@9 ~",
P: "~@10 g4@5 ~, c3@7 ~, ~@4 c4@11 ~, ~@6 e4@9 ~", Q: "[~@7 f#3 ~@24, ~@6 e3@13 ~@13]/2", R: "~@6 e3 e3@9",
S: "~@3 e3@5", T: "~@3 e3@4 ~",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.2)
// chords · overdriven guitar · soft notes
const overdriven_guitar_soft_2 = note("<~ A ~ B ~ C ~ D E A ~ B E A ~ D ~@117>".pickRestart({
A: "d#4@3 ~@5", B: "c#4 ~@3", C: "b3 ~@3", D: "f4@3 ~@5", E: "e4@3 ~@5",
})).s("gm_overdriven_guitar").gain(0.15).pan(0.2)
// chords · electric guitar clean
const electric_guitar_clean = note("<~ A@12 B@4 ~@17 C@3 ~ C@3 ~@46 D ~@45>".pickRestart({
A: "[[b2,f#4] [e3,e4] [c#3,c#4,f4] [c3,c4,e4,g4], b3@15 ~@17, d#4@15 ~ g#4@33 ~@15]/4", // B5 E C# C
B: "[[b2,f#4]@8 [e3,e4]@8 [c#3,c#4,f4]@8 [c3,c4,e4,g4] ~@7, b3@15 ~@17, d#4@15 ~ g#4@33 ~@15]/4", // B5 E C# C
C: "[~@9 d4@14 ~, ~@6 e3@17 ~, ~@7 f#3@16 ~, ~@8 g3@15 ~]/3",
D: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~", // B5
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.8)
// chords · distortion guitar
const distortion_guitar_3 = note("<~@103 A@8 B@4 C@5 D@4 E F G H I H J K@2>".pickRestart({
A: "[~@16 d#4@15 ~ d4@14 ~@2 d#4@15 ~@2 e4@13 ~@2 d4@14 ~@2 e4@14 ~@2 d4@15 e3, ~@14 f#3@16 ~ [g3,b3]@15 ~ f#3@16 e3@14 ~ g3@15 ~@2 [e3,b3]@14 ~ g3@15 ~@3, ~@15 b3@15 ~@17 b3@31 ~ b3@15 ~@2 f4 ~@14 b3@15 ~@2]/8", // G E5
B: "[~ e4@12 ~@2 d#4@15 ~ [g3,b3]@15 ~@2 d#4@14 ~ [g3,b3], b3@13 ~ [f#3,b3]@17 ~@16 [f#3,b3]@15 ~@2]/4", // G B5
C: "[d4@14 ~@2 d4@14 ~@2 e4@14 ~@2 d4@14 ~@2 e4@15 g3, ~@14 g3@14 ~@2 e3@15 ~ g3@14 ~@2 e3@15 ~@3, ~@15 b3@14 ~@2 b3@15 ~ b3@14 ~@2 b3@15 ~@2]/5",
D: "[[b3,d4]@14 ~@2 e4@14 ~@2 d4@15 ~ e4@15 ~, ~@15 [e3,b3]@15 ~ [g3,b3]@15 ~ [e3,b3]@17]/4", // Bm E5 G E5
E: "[b2,b3]@2 [b2,b3]@2 ~@2 [a2,a3] ~ [a2,a3]@2 ~@2 [c#3,c#4]@2 [c#3,c#4]@2", // B A C#
F: "~@2 [e2,e3,d4,e4] ~ [e2,e4]@12, ~ e3 ~@2", // E7 E
G: "[b2,b3] ~ [b2,b3]@2 ~@2 [a2,a3] ~ [a2,a3]@2 ~@2 [c#3,c#4] ~ [c#3,c#4] ~", H: "~@2 [e2,e3] ~ [e2,e3]@12",
I: "[b2,b3] ~ [b2,b3] ~@3 [a2,a3] ~ [a2,a3]@2 ~@2 [c#3,c#4] ~ [c#3,c#4] ~", // B A C#
J: "[b2,b3] ~ [b2,b3]@2 ~@2 [a2,a3] ~ [a2,a3]@2 ~@2 [c#3,c#4] ~ [c#3,c#4]@2", K: "[~@2 [e2,e3] ~ e2@14 ~@14]/2",
})).s("gm_distortion_guitar").gain(0.3).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
~@9 A@7 ~ B@32 C@3 D E@8 F@7 G B@18 ~ H I H I H I H I H I H I H I H I B@20 H I H I H I J K L
>`.pickRestart({
A: "~@2 x ~@2 x!2 ~", B: "x!2 ~ x!2 ~@3", C: "~@5 x ~ x", D: "~@5 x ~@2", E: "x!4", F: "x!2 ~ x!2 ~@2 x",
G: "x ~@4 x ~ x", H: "x ~@2 x!3 ~@2", I: "x ~@6 x!2 ~ x ~@3 x ~", J: "x!2 ~ x!2 ~ x!2", K: "~ x!2 ~@5", L: "x",
})).gain(0.5)
// drums · snare
const snare = s("sd").struct(`<
~@16 A B@3 C B@3 C B@3 C B@3 D B@7 C B@7 D E@3 F ~@8 G@7 H B@3 C B@3 C B@3 C B@3 D B@2 I B@7 J B@7 K B@3 C B@3 C B@3 C
B@3 D B@3 L B@6 M N ~
>`.pickRestart({
A: "x", B: "~ x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~@4 x ~@5 x!6", E: "x!4", F: "x ~@3 x ~@3 x ~ x!6",
G: "~@2 x ~@2 x ~@2", H: "x ~ x!2", I: "~@3 x", J: "~@3 x!2 ~@11", K: "~@4 x ~@2 x!9", L: "~ x!2 ~@3 x ~",
M: "x!2 ~ x!2 ~ x!2", N: "~ x!2 ~@5",
// … 61 more lines
More by Foo Fighters
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.