0:00/0:00
// Satellite of Love — U2
// 117 bpm, 4/4, key G 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: Full arrangement: all 111 bars on a 32-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(117/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.
// chords · french horn
const french_horn = note("<~@79 A@3 B C D E@2 F@3 G H I@8 J@2 K L@5 ~@3>".pickRestart({
A: "[~@9 [g4,b4]@2 ~@3 [g4,b4]@3 ~@4 [g4,b4]@15 ~@4 [a4,c#5]@2 ~@2 [a4,c#5]@4 ~@3 [a4,c#5]@14 ~@2 g5@3 ~ c5@2 g5@2 c5@4 ~@3 c5@14, ~@21 d5@18 e5@2 ~@3 e5@2 ~@5 e5@16 ~@14 g5@15]/3", // G A
B: "~@2 d5@3 [g4,b4]@2 ~@2 [g4,b4]@4 ~@3 [g4,b4,d5]@16, ~@2 d5 ~@5", // G
C: "~@4 [g4,b4]@2 ~@2 [g4,b4,d5]@4 ~@3 [b4,d5]@17, ~@2 d5@4 ~@9 g4@14 ~@3", // G Bm
D: "~@2 [a4,c#5]@2 ~@2 [a4,c#5,e5]@4 ~@3 [a4,c#5]@10 ~@6 g5@3, ~ e5@2 ~@10 e5@16 ~@3", // A
E: "[[c5,e5]@3 g5@2 [c5,e5]@3 ~@3 [c5,e5,g5]@14 ~@4 d5@2 [g4,b4]@2 ~@2 [g4,b4]@3 ~@4 [g4,b4]@16 ~@3 [g4,b4]@2 ~, ~@34 d5@4 ~@4 d5@13 ~@9]/2", // C G
F: "[~@2 [g4,b4]@3 ~@4 [g4,b4]@15 ~@8 b5@3 ~@7 a5@15 ~ c6@2 ~@3 c6@3 ~@3 c6@18 ~@2 [g4,b4]@2 ~@3 d5@2, ~@9 d6@18 b5@2 ~@67, ~@28 [a4,c#5]@25 ~@5 c5@27 ~@2 d5@4 ~@2 [g4,b4]@3]/3", // G A G
G: "~@4 d5@18 ~ [g4,b4]@2 ~@2 [g4,b4,g5]@3 ~@2, ~@3 [g4,b4]@16 ~@3 g5@2 ~@8", // G
H: "~@3 [g4,b4]@15 ~@3 [a4,c#5,a5]@2 ~@2 [a4,c#5,a5]@3 ~@4, ~ g5@20 ~@11", // G A
I: "[[a4,c#5]@14 ~@4 e5@2 [c5,e5]@2 ~ e5 [c5,e5]@4 ~@2 e5 e5@17 g5@2 [g4,b4]@2 ~@3 [g4,b4]@4 ~@3 [g4,b4]@16 ~@3 b4@2 ~@3 g5@2 ~@4 [g4,b4,g5]@17 ~@2 [a4,c#5,a5]@2 ~@3 a5@2 ~@4 [a4,c#5,a5]@16 ~@2 e5 [c5,e5]@2 ~@3 [c5,e5]@3 ~@3 e5@18 ~@2 [g4,b4]@2 ~@3 b4@3 ~@3 [g4,b4,g5]@17 ~ g5@2 [g4,b4]@2 ~@2 [g4,b4,g5]@3 ~@4 [g4,b4]@16 ~@3 [a4,c#5,a5]@3 ~@2 a5@3 ~@3 [a4,c#5,a5]@12, a5@18 ~@13 c5@13 ~@9 g5@4 ~@4 g5@13 ~@5 g5@4 ~@88 g5@3 ~@40 g5@19 ~@23, ~@80 g4@2 ~@3 [g4,b4]@4 ~@26 [a4,c#5]@4 ~@33 c5@14 ~@10 [g4,g5]@3 ~@58 [a4,c#5]@4 ~@15]/8", // A C G A C G A G …
J: "[~@7 [c5,e5]@2 ~@3 c5@4 ~@3 [c5,e5]@14 ~@3 g5@2 [g4,b4]@2 ~@3 [g4,b4]@3 ~@3 [g4,b4,g5]@15, ~@6 c6@4 ~ e5@4 ~@26 g5@4 ~@19, ~@12 c6@2 ~@4 c6@17 ~@29]/2", // C G
K: "~@4 [b4,g5]@2 ~@3 g5@3 ~@3 [g4,b4,g5]@17, ~@3 g4@2 ~@3 [g4,b4]@3 ~@21", // Em G
L: "[~ a5@2 [a4,c#5]@2 ~@2 [a4,c#5,a5]@3 ~@4 c#5@12 ~@5 e5@2 [c5,e5]@2 ~@2 [c5,e5]@4 ~@2 e5 ~ c5@22 ~@10 [g4,b4]@57 ~@26, ~@13 a5@19 ~@12 e5@29 ~@87, ~@13 a4@12 ~@135]/5", // A C G
})).s("gm_french_horn").gain(0.51)
// chords · epiano1
const epiano1 = note(`<
~ A@3 B@2 C@2 D@2 E@3 F G@4 H@3 I@5 B@2 C@2 D@2 E@3 F G@4 H@3 J@3 ~@7 A@3 B@2 C@2 D@2 E@3 F G@4 H@3 K@8 L@2 M@2 N@2
O@3 P Q R@8 S@2 T@4 U ~@4
>`.pickRestart({
A: "[~@16 [g3,b3,d4,g4]@11 ~ [g3,b3]@3 ~@4 b4@5 g4@4 b4@4 [a3,c#4,e4,a4,c#5,e5]@12 [a3,c#4,e4] ~@3 [a3,c#4,e4]@4 ~@11 [a3,c4,e4]@10 ~@3 [a3,c4,e4] ~@3, ~@16 [b4,d5]@15 d5@4 ~@25 a4@8 c#5@15 ~@13, ~@27 [d4,g4]@5 [g3,b3,d4]@7 ~@25 e5@19 ~@13, ~@72 a4@10 ~@9 a4@4 ~]/3", // G A Am Bm G5 G
B: "[~@4 c5@4 a4@4 c5@3 ~ g4@3 f#4@4 e4@4 ~ f#4@8 d4@4 e4@4 f#4@4 g4@4 d4@4 b3@4 g3@4, [a3,c4,e4,g4,g5]@13 ~@51]/2", // Am7
C: "[b3@4 d4@4 [g3,b3,d4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@12 [a3,e4]@3 ~ [a3,c#4,e4]@4 ~@11 [a3,c4,e4]@10 ~@3 [a3,c4,e4] ~@3, ~@28 a4@8 c#5@15 ~@13, ~@28 c#4 ~@3 e5@19 ~@13, ~@40 a4@10 ~@9 a4@4 ~]/2", // G D A A5 A Am
D: "[~@4 c5@4 a4@4 c5@3 ~ g3@4 f#3@3 e3@5 f#3@7 ~ d3@3 ~ d3@6 ~@2 [g3,b3,e4,g4,b4]@12 ~@4, [a3,c4,e4,g4,g5]@13 ~@2 f#3@2 ~@47]/2", // Em Am7
E: "[[e4,g4,b4]@3 ~@5 [d4,f#4,a4]@4 ~@4 [c3,e3,c4,e4]@14 ~@2 e3@4 ~@4 [b3,d4,f#4]@5 ~@3 [c3,e3,a3,c4,e4]@12 ~ c4@2 e4@5 c4@3 a3@5 c4@4 [c3,c4,g4]@16, ~@8 [f#3,a3]@2 ~@6 g4@11 ~@4 [c4,e4,g4]@4 ~@4 d3@4 ~@17 a3@2 ~@18 e4@13 ~@3]/3", // Em D C Bm Am C5 F#m C
F: "~@4 d4@4 e4@7 [c4,d4]@5 c4@7 [c4,e4] g4 d6@3, [c4,e4,g4]@10 ~@5 [e4,g4]@9 ~@4 e6@2 ~@2", // Csus2 C Em
G: "[c6@3 b5@4 a5@4 g5@4 ~ g4@8 ~@12 a4@4 ~@8 f#4@7 ~@4 g4@4 ~@4 g4@4 ~@4 g4@4 ~@17 a#4@3 ~@4 g4@4 f4@5 ~@4 c5@4 d5@4 e5@3 [c4,e4,g4], [c4,e4,g4]@15 ~ d5@22 ~@9 [f#5,a5]@26 ~@7 f3@31 ~@17, ~@16 [g3,b3,b4]@16 [g3,b3,d4]@16 a4@15 a4@9 ~@7 [a4,c5]@10 a4@2 c5@18 ~@19, ~@24 g4@16 g4@10 ~@5 f#4@16 f#4@8 f4@8 f4@12 a4@9 ~@20, ~@32 b4@10 ~@6 [d4,d5]@26 ~@5 c4@29 ~@4 [c4,e4,g4]@13 ~@3]/4", // C F#m G Am D C
H: "[~@4 c5@4 b4@3 a4@5 ~@16 b4@4 a4@4 ~@8 f#4@7 ~@4 g4@4 ~@4 g4@4 ~@4 g4@4 b4 [b3,e4,g4,b4]@16, d5@5 ~@19 g4@16 g4@8 [d4,d5]@26 ~@22, ~@3 [c4,e4,g4]@13 [g3,b3,d4]@16 [g3,b3,d4]@15 [f#5,a5]@26 ~@23, ~@16 a4@5 a4@3 ~@8, ~@55 f#4@16 f#4@8 ~@17]/3", // Em D C G F#m
I: "[a4 [d4,a4]@15 ~ [c4,e4,g4]@18 [a3,d4,f#4,a4]@42 ~@3 [g3,b3,d4,g4]@11 ~ [g3,b3]@3 ~@4 b4@5 g4@4 b4@4 [a3,c#4,e4,a4,c#5,e5]@12 [a3,c#4,e4] ~@3 [a3,c#4,e4]@4 ~@11 [a3,c4,e4]@10 ~@3 [a3,c4,e4] ~@3, [a3,f#4]@16 g3@17 ~@47 [b4,d5]@15 d5@4 ~@25 a4@8 c#5@15 ~@13, ~@91 [d4,g4]@5 [g3,b3,d4]@7 ~@25 e5@19 ~@13, ~@136 a4@10 ~@9 a4@4 ~]/5", // D5 C D G A Am D Bm …
J: "[a4 [d4,a4]@15 ~ [c4,e4,g4]@18 [a3,d4,f#4,a4]@42 ~@19, [a3,f#4]@16 g3@17 ~@63]/3", // D5 C D
K: "[a4 [d4,a4]@15 ~ [c4,e4,g4]@18 [a3,d4,f#4,a4]@42 ~@3 [g4,b4,d5]@2 ~@2 [g4,b4]@2 ~@17 e4@7 [a4,e5]@2 ~@2 [c#5,e5] ~@3 a4 ~@2 [a4,c#5,e5]@12 e4@8 [e5,g5] ~@2 [e5,g5]@2 ~@2 [e5,g5] ~@3 [c5,e5,g5]@12 e4@8 [g4,b4,d5]@2 ~ [b4,d5] ~@7 [g4,b4,d5]@14 ~@5 [g4,b4,d5]@2 ~@2 [g4,b4]@2 ~@17 e4@7 [a4,e5]@2 ~ c#5 e5 ~@2 a4 ~@3 [a4,c#5,e5]@12 e4, [a3,f#4]@16 g3@17 ~@51 d5 ~@7 [g4,b4,d5]@15 ~@3 c#5 ~@3 a4@2 ~@25 c5@2 ~ c5@4 ~@27 g4@2 ~@29 d5 ~@7 [g4,b4,d5]@15 ~@3 c#5 ~@2 a4@2 ~@19]/8", // D5 C D G A5 C#m A Em …
L: "[~@7 [e5,g5] ~@2 [e5,g5]@2 ~@2 [e5,g5] ~@3 [c5,e5,g5]@12 e4@7 [g4,b4,d5]@2 ~@2 [b4,d5] ~@7 [g4,b4,d5]@14 ~, ~@7 c5@2 ~ c5@4 ~@27 g4@2 ~@21]/2", // Em C G Bm G
M: "[~@4 [g4,b4,d5]@2 ~@2 [g4,b4]@2 ~@17 e4@7 [a4,e5]@2 ~ [c#5,e5] ~@3 a4 ~@3 [a4,c#5,e5]@12 e4@7, ~@8 d5 ~@6 [g4,b4,d5]@15 ~@4 c#5 ~@2 a4@2 ~@25]/2", // G A5 C#m A G
N: "[[e5,g5] ~@3 [e5,g5]@2 ~ g5 e5 ~@3 [c5,e5,g5]@12 e4@7 [g4,b4,d5]@2 ~@2 [b4,d5] ~@7 [b4,d5]@14 ~@5 [g4,b4,d5]@2, c5@2 ~@2 c5@3 ~@28 g4@2 ~@5 g4@13 ~@9]/2", // Em C G Bm G
O: "[~@2 [g4,b4]@2 ~@16 e4@7 [a4,e5]@2 ~@2 [c#5,e5] ~@3 a4 ~@3 [a4,c#5,e5]@12 e4@7 [e5,g5] ~@3 [e5,g5]@2 ~ [e5,g5] ~@3 [c5,e5,g5]@13 e4@7 [g4,b4,d5]@2 ~@2 [b4,d5] ~@2, ~@2 d5 ~@6 [g4,b4,d5]@15 ~@3 c#5 ~@3 a4@2 ~@25 c5@2 ~@2 c5@3 ~@28 g4@2 ~]/3", // G A5 C#m A Em C G Bm …
P: "~@4 [g4,b4,d5]@14 ~@6 [g4,b4,d5]@2 ~@2 d5 ~@3, ~@27 [g4,b4]@2 ~@3", // G
Q: "~@14 e4@7 [a4,e5]@2 ~@2 [c#5,e5] ~@3 a4 ~@2, ~@3 [g4,b4,d5]@15 ~@3 c#5 ~@3 a4@2 ~@5", // A5 C#m G
R: "[~ e5@11 e4@8 [e5,g5] ~@2 [e5,g5]@2 ~@2 [e5,g5] ~@3 [c5,e5,g5]@13 e4@7 [g4,b4,d5]@2 ~ [b4,d5] ~@7 [g4,b4,d5]@14 ~@5 [g4,b4,d5]@2 ~@2 [g4,b4]@2 ~@17 e4@7 [a4,e5]@2 ~ c#5 e5 ~@2 a4 ~@3 [a4,c#5,e5]@12 e4@8 [e5,g5] ~@2 [e5,g5]@2 ~@2 [e5,g5] ~@3 [c5,e5,g5]@12 e4@7 [g4,b4,d5]@2 ~@2 [b4,d5] ~@7 [g4,b4,d5]@14 ~@5 [g4,b4,d5]@2 ~@2 [g4,b4]@2 ~@17 e4@7 [a4,e5]@2 ~ [c#5,e5] ~@3 a4 ~@3 [a4,c#5,e5]@12, [a4,c#5]@12 ~@8 c5@2 ~ c5@4 ~@27 g4@2 ~@29 d5 ~@7 [g4,b4,d5]@15 ~@3 c#5 ~@2 a4@2 ~@26 c5@2 ~ c5@4 ~@27 g4@2 ~@29 d5 ~@6 [g4,b4,d5]@15 ~@4 c#5 ~@2 a4@2 ~@18]/8", // Em C G Bm G A5 A Em …
S: "[e4@7 [e5,g5] ~@3 [e5,g5]@2 ~ g5 e5 ~@3 [c5,e5,g5]@12 e4@7 [g4,b4,d5]@2 ~@2 [b4,d5] ~@7 [b4,d5]@14, ~@7 c5@2 ~@2 c5@3 ~@28 g4@2 ~@5 g4@13 ~@2]/2", // Em C G Bm
T: "[~@5 [g4,b4,d5]@2 ~@2 [g4,b4]@2 ~@16 e4@7 [a4,e5]@2 ~@2 [c#5,e5] ~@3 a4 ~@3 [a4,c#5,e5]@12 e4@7 [e5,g5] ~@3 [e5,g5]@2 ~@2 g5 e5 ~@4 [c5,e5]@19 e4@11 ~ d5@3 ~@3 [g4,b4,d5]@3 ~@9, ~@9 d5 ~@6 [g4,b4,d5]@15 ~@3 c#5 ~@3 a4@2 ~@25 c5@2 ~@2 c5@4 ~@6 g5@17 ~@13 [g4,b4]@3 ~@16]/4", // G A5 C#m A Em C G
U: "~ [g4,b4,d5]@23 ~@8", // G
})).s("gm_epiano1").gain(0.72)
// chords · epiano1
const epiano1_2 = note(`<
~ A@3 B@2 C@2 D@2 E@3 F G@4 H@3 I@5 B@2 C@2 D@2 E@3 F G@4 H@3 J@3 ~@7 A@3 B@2 C@2 D@2 E@3 F G@4 H@3 K@7 L@3 M@2 N@2
O@3 P Q R@8 S@2 T@2 U@2 V ~@4
>`.pickRestart({
A: "[~@16 [g3,b3,d4,g4]@11 ~ [g3,b3]@3 ~@4 b4@5 g4@4 b4@4 [a3,c#4,e4,a4,c#5,e5]@12 [a3,c#4,e4] ~@3 [a3,c#4,e4]@4 ~@11 [a3,c4,e4]@10 ~@3 [a3,c4,e4] ~@3, ~@16 [b4,d5]@15 d5@4 ~@25 a4@8 c#5@15 ~@13, ~@27 [d4,g4]@5 [g3,b3,d4]@7 ~@25 e5@19 ~@13, ~@72 a4@10 ~@9 a4@4 ~]/3", // G A Am Bm G5 G
B: "[~@4 c5@4 a4@4 c5@3 ~ g4@3 f#4@4 e4@4 ~ f#4@8 d4@4 e4@4 f#4@4 g4@4 d4@4 b3@4 g3@4, [a3,c4,e4,g4,g5]@13 ~@51]/2", // Am7
C: "[b3@4 d4@4 [g3,b3,d4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@12 [a3,e4]@3 ~ [a3,c#4,e4]@4 ~@11 [a3,c4,e4]@10 ~@3 [a3,c4,e4] ~@3, ~@28 a4@8 c#5@15 ~@13, ~@28 c#4 ~@3 e5@19 ~@13, ~@40 a4@10 ~@9 a4@4 ~]/2", // G D A A5 A Am
D: "[~@4 c5@4 a4@4 c5@3 ~ g3@4 f#3@3 e3@5 f#3@7 ~ d3@3 ~ d3@6 ~@2 [g3,b3,e4,g4,b4]@12 ~@4, [a3,c4,e4,g4,g5]@13 ~@2 f#3@2 ~@47]/2", // Em Am7
E: "[[e4,g4,b4]@3 ~@5 [d4,f#4,a4]@4 ~@4 [c3,e3,c4,e4]@14 ~@2 e3@4 ~@4 [b3,d4,f#4]@5 ~@3 [c3,e3,a3,c4,e4]@12 ~ c4@2 e4@5 c4@3 a3@5 c4@4 [c3,c4,g4]@16, ~@8 [f#3,a3]@2 ~@6 g4@11 ~@4 [c4,e4,g4]@4 ~@4 d3@4 ~@17 a3@2 ~@18 e4@13 ~@3]/3", // Em D C Bm Am C5 F#m C
F: "~@4 d4@4 e4@7 [c4,d4]@5 c4@7 [c4,e4] g4 d6@3, [c4,e4,g4]@10 ~@5 [e4,g4]@9 ~@4 e6@2 ~@2", // Csus2 C Em
G: "[c6@3 b5@4 a5@4 g5@4 ~ g4@8 ~@12 a4@4 ~@8 f#4@7 ~@4 g4@4 ~@4 g4@4 ~@4 g4@4 ~@17 a#4@3 ~@4 g4@4 f4@5 ~@4 c5@4 d5@4 e5@3 [c4,e4,g4], [c4,e4,g4]@15 ~ d5@22 ~@9 [f#5,a5]@26 ~@7 f3@31 ~@17, ~@16 [g3,b3,b4]@16 [g3,b3,d4]@16 a4@15 a4@9 ~@7 [a4,c5]@10 a4@2 c5@18 ~@19, ~@24 g4@16 g4@10 ~@5 f#4@16 f#4@8 f4@8 f4@12 a4@9 ~@20, ~@32 b4@10 ~@6 [d4,d5]@26 ~@5 c4@29 ~@4 [c4,e4,g4]@13 ~@3]/4", // C F#m G Am D C
H: "[~@4 c5@4 b4@3 a4@5 ~@16 b4@4 a4@4 ~@8 f#4@7 ~@4 g4@4 ~@4 g4@4 ~@4 g4@5 [b3,e4,g4,b4]@16, d5@5 ~@19 g4@16 g4@8 [d4,d5]@26 ~@22, ~@3 [c4,e4,g4]@13 [g3,b3,d4]@16 [g3,b3,d4]@15 [f#5,a5]@26 ~@23, ~@16 a4@5 a4@3 ~@8, ~@55 f#4@16 f#4@8 ~@17]/3", // Em D C G F#m
I: "[~ [d4,a4]@15 ~ [c4,e4,g4]@18 [a3,d4,f#4,a4]@42 ~@3 [g3,b3,d4,g4]@11 ~ [g3,b3]@3 ~@4 b4@5 g4@4 b4@4 [a3,c#4,e4,a4,c#5,e5]@12 [a3,c#4,e4] ~@3 [a3,c#4,e4]@4 ~@11 [a3,c4,e4]@10 ~@3 [a3,c4,e4] ~@3, [a3,f#4]@16 g3@17 ~@47 [b4,d5]@15 d5@4 ~@25 a4@8 c#5@15 ~@13, ~@91 [d4,g4]@5 [g3,b3,d4]@7 ~@25 e5@19 ~@13, ~@136 a4@10 ~@9 a4@4 ~]/5", // D5 C D G A Am D Bm …
J: "[~ [d4,a4]@15 ~ [c4,e4,g4]@18 [a3,d4,f#4,a4]@42 ~@19, [a3,f#4]@16 g3@17 ~@63]/3", // D5 C D
K: "[~ [d4,a4]@15 ~ [c4,e4,g4]@18 [a3,d4,f#4,a4]@42 ~@4 d4@2 ~@2 [g3,b3,d4]@2 ~@5 [g3,b3,d4]@11 e3@7 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@6 [a3,c#4,e4]@11 ~ e3@7 [c4,e4,g4]@2 ~@2 [c4,e4,g4]@4 ~@3 [c4,e4,g4]@12 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@5 [g3,b3,d4]@13 ~@7 [b3,d4]@2 ~@2 g3@2 ~@4 [g3,b3,d4]@11, [a3,f#4]@16 g3@17 ~@47 [g3,b3]@2 ~@120 g3@2 ~@2 [b3,d4]@2 ~@16]/7", // D5 C D G A C G Bm …
L: "[~ e3@6 [a3,c#4,e4]@2 ~@3 [a3,c#4,e4]@2 ~@6 e4@11 e3@7 ~ c4@2 ~@2 [c4,e4,g4]@4 ~@3 [c4,e4,g4]@12 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@5 [g3,b3,d4]@13 ~@2, ~@19 [a3,c#4]@10 ~@9 [e4,g4]@2 ~@56]/3", // A C G A Em
M: "[~@4 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@5 [g3,b3,d4]@12 e3@6 [a3,c#4,e4]@2 ~@3 [a3,c#4,e4]@2 ~@5 [a3,c#4,e4]@11 ~ e3@7]/2", // G A
N: "[[c4,e4,g4]@2 ~@2 [c4,e4,g4]@4 ~@4 [e4,g4]@12 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@5 d4@13 ~@6 [g3,b3,d4]@2, ~@11 c4@13 ~@18 [g3,b3]@13 ~@9]/2", // C Em G
O: "[~@2 [g3,b3,d4]@2 ~@5 [g3,b3,d4]@12 e3@6 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@6 [a3,c#4,e4]@11 ~ e3@7 [c4,e4,g4]@2 ~@2 [c4,e4,g4]@4 ~@3 [c4,e4,g4]@13 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3]/3", // G A C G
P: "~@4 [g3,b3,d4]@13 ~@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@2", // G
Q: "~@3 [g3,b3,d4]@11 e3@7 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@5", // G A
R: "[~ [a3,c#4,e4]@11 ~ e3@7 [c4,e4,g4]@2 ~@2 [c4,e4,g4]@4 ~@3 [c4,e4,g4]@12 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@5 [g3,b3,d4]@13 ~@7 [b3,d4]@2 ~@2 g3@2 ~@4 [g3,b3,d4]@12 e3@6 ~ e4@2 ~@2 [a3,c#4,e4]@2 ~@6 [a3,e4]@11 ~ e3@6 ~ c4@2 ~@2 [c4,e4,g4]@4 ~@3 [c4,e4,g4]@12 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@5 [g3,b3,d4]@13 ~@6 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@5 [g3,b3,d4]@12 e3@6 [a3,c#4,e4]@2 ~@3 [a3,c#4,e4]@2 ~@5 [a3,c#4,e4]@11 ~, ~@81 g3@2 ~@2 [b3,d4]@2 ~@23 [a3,c#4]@2 ~@10 c#4@10 ~@9 [e4,g4]@2 ~@113]/8", // A C G Bm G A A5 C …
S: "[e3@7 [c4,e4,g4]@2 ~@2 [c4,e4,g4]@4 ~@4 [e4,g4]@12 e3@7 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@5 d4@13 ~, ~@18 c4@13 ~@18 [g3,b3]@13 ~@2]/2", // C Em G
T: "[~@5 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@5 [g3,b3,d4]@12 e3@6 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@6 [a3,c#4,e4]@11 ~ e3@6]/2", // G A
U: "[~ [c4,e4,g4]@2 ~@3 [e4,g4]@4 ~@5 [c4,e4,g4]@18 e3@11 ~ [g3,b3,d4]@4 ~@3 [g3,b3,d4]@4 ~@8, ~@5 c4@5 ~@54]/2", // C Em C G
V: "~ [g3,b3,d4]@22 ~@9", // G
})).s("gm_epiano1").gain(0.72)
// other · string ensemble 1
const string_ensemble_1 = note("<~@14 A@8 B@2 ~@12 A@8 B@2 ~@20 A@8 B@2 ~@3 C@4 D E F@6 G@3 ~@11 H@3 ~@3>".pickRestart({
A: "[~@15 g5@33 f#5@31 f5@32 e5@32 g5@32 f#5@32 e5@16 d5@18 c5@15]/8", B: "[~@2 d5@43 ~@19]/2",
C: "[~@9 g5@22 e5@9 g5@41 e5@12 c6@8 b5@24 ~@3]/4", D: "~@4 b5@19 e5@9", E: "~ g5@10 e5@5",
F: "[c6@12 b5@10 c6@8 b5@24 ~@7 b5@30 g6@27 ~@4 g6@13 e6@10 c7@7 ~@23 a6@8 g6@9, ~@38 b6@7 ~@3]/6",
G: "[~@3 e6@9 d6@9 g6@25 ~@6 g6@11 e6@11 ~@22]/3", H: "[~@13 [b5,d6]@39 ~@44, ~@12 g4@19 ~@65, ~@13 g3@68 ~@15]/3",
})).s("gm_string_ensemble_1").gain(0.8)
// bass · fretless bass
const bass = note(`<
~ A B@2 C D E F@2 G H I@2 J K L M N O L P Q@3 R@2 C D E F@2 G H I@2 J K L M N O L P S@3 T U V W X Y Z AA R@2 C D E F@2
G H I@2 J K L M N O L P AB AC@8 AD AE AF AG AH AI AJ@2 AK AL AM@8 AN@2 AO AP AQ@2 AR ~@4
>`.pickRestart({
A: "~@28 g2 ~@3", B: "[g2@10 ~@2 g1@4 a1@15 a1@13 ~@3 b2@9 a2@8, ~@44 a1@7 ~@13]/2",
C: "g2@8 ~@4 b1@4 d2@9 ~@2 d2@4 ~, ~ e2 ~@2", D: "d2@12 d2@4 g2@12 g2@3 ~", E: "g2@12 g1@4 a1@9 ~@2 a1@2 ~@3",
F: "[a1@11 a1@3 ~@2 b2@7 a2@8 g2@8 e2@5 b1@4 d2@12 d2 ~@3]/2", G: "d2@3 d2 e2@3 d2",
H: "e2@4 ~@4 d2@3 ~@5 c2@12 b1@3 ~", I: "[c2@5 ~@3 b1@3 ~@5 a1@12 g1@3 a1@8 ~ b1@3 ~@5 c2@12 c2@3 ~]/2",
J: "c2@11 ~ c2@3 ~ c2@10 ~@2 c2 ~@3", K: "c2@8 d2@8 g2@8 g2@3 ~@5", L: "g2@8 b1@8 d2@10 ~@2 d2 ~@3",
M: "d2@8 e2@8 f2@7 ~ f2@3 ~ f2@3 ~", N: "f2@8 b1@8 c2@11 c2@4 ~", O: "c2@11 ~@5 g2@8 g2@3 ~@5, ~@16 d2 ~@15",
P: "d2!2 e2@2, ~@16 f2 ~@15", Q: "[~ d2@15 ~ c2@19 d2@43 ~ g2@12 g2@4]/3",
R: "[g2@12 g1@4 a1@15 a1@13 ~@3 b2@9 a2@8, ~@44 a1@7 ~@13]/2", S: "[~ d2@15 ~ c2@19 d2@43 ~ g1@10 ~ c2@5]/3",
T: "d2@13 ~@3 c2@11 ~ d2@4", U: "d2@15 ~ c2@4 d2@3 c2@8 ~", V: "d2@11 d2@4 ~ g2@10 ~ d2@4 ~",
W: "g2@3 d2@4 ~ e2@3 f#2@4 ~ g2@11 ~ e2@4", X: "d2@3 e2@4 d2@5 d2@4 c2@12 c2@4", Y: "d2@11 ~ d2@4 c2@10 ~@2 c2@4",
Z: "d2@12 ~ d2@3 g2@9 ~@2 g2@2 ~@3", AA: "g2@13 ~@3 g2@12 g2@4", AB: "~ d2@15 ~ c2@15",
AC: "[~@4 d2@43 ~ g1@3 ~@2 g1@2 ~@4 g1@17 ~@3 a1@2 ~@2 a1@3 ~@4 a1@17 ~@2 c2@2 ~@2 c2@2 ~@5 c2@18 ~@2 g1@3 ~ g1@3 ~@3 g1@15 ~@5 g1@2 ~@2 g1@2 ~@5 g1@16 ~@3 a1@2 ~@2 a1@3 ~@4 a1@18 ~ c2@2 ~@3 c2@2 ~@5 c2@14]/8",
AD: "~@6 g1@2 ~ g1@3 ~@4 g1@14 ~@2", AE: "~@4 g1@3 ~ g1@2 ~@4 g1@17 ~", AF: "~@3 a1@2 ~@2 a1@3 ~@3 a1@17 ~@2",
AG: "c2@2 ~@3 c2@2 ~@4 c2@18 ~@3", AH: "g1@3 ~ g1@3 ~@3 g1@15 ~@5 g1@2", AI: "~ g1 ~@2 g1@8 ~@2 a1 ~",
AJ: "[a1@3 ~@3 a1@18 ~@2 c2@2 ~@3 c2@2 ~@4 c2@17 ~@3 g1@2 ~@2 g1@3]/2", AK: "~@4 g1@14 ~@6 g1@3 ~ g1@2 ~@2",
AL: "~@2 g1@17 ~@3 a1@2 ~@2 a1@3 ~@3",
AM: "[~ a1@17 ~@2 c2@2 ~@2 c2@2 ~@5 c2@18 ~@2 g1@3 ~ g1@3 ~@3 g1@15 ~@5 g1@2 ~@2 g1@2 ~@5 g1@16 ~@3 a1@2 ~@2 a1@3 ~@4 a1@18 ~ c2@2 ~@3 c2@2 ~@5 c2@17 ~@3 g1@2 ~ g1@3 ~@4 g1@14 ~@6 g1@3 ~ g1@2 ~@4 g1@17 ~@4 a1@2 ~@2 a1@3 ~@3 a1@12]/8",
AN: "[~@7 c2@2 ~@3 c2@2 ~@4 c2@18 ~@3 g1@3 ~ g1@3 ~@3 g1@15]/2", AO: "~@5 g1@2 ~@2 g1@2 ~@4 g1@16 ~",
AP: "~@3 a1@2 ~@2 a1@3 ~@3 a1@18 ~", AQ: "[~ c2@2 ~@3 c2@3 ~@6 c2@27 ~@4 g1@3 ~@3 g1@5 ~@7]/2", AR: "g1@3 ~",
})).s("gm_fretless_bass").gain(0.8)
// other · distortion guitar
const distortion_guitar = note("<~@45 A@3 ~ B@3 ~@59>".pickRestart({
A: "[~@16 g3@4 a3@4 b3@3 c4@4 d4@10 ~@6 c4@4 d4@4 e4@4 g4@4 a4@9 ~@24]/3",
B: "[~@16 g3@4 a3@4 b3@3 c4@4 d4@10 ~@6 c4 c4@3 d4@4 e4@4 g4@4 a4@9 ~@24]/3",
})).s("gm_distortion_guitar").gain(0.8).pan(0.7)
// other · distortion guitar
const distortion_guitar_2 = note("<~@47 A B@4 C@3 ~@56>".pickRestart({
A: "~@15 c4@5 d4@4 e4@4 f#4@4",
B: "[d4@4 e4@4 f#4@4 d4@4 g4@31 ~ g3@4 a3@4 b3@3 c4@4 d4@15 ~ c4 c4@3 d4@4 e4@4 g4@4 a4@16 c4 c4@4 d4@4 e4@4 f#4@4]/4",
C: "[d4@4 e4@4 f#4@4 d4@4 [g3,g4]@75 ~@5]/3", // G
})).s("gm_distortion_guitar").gain(0.8).pan(0.3)
// drums · kick
const kick = s("bd").struct(`<
~ A@4 B A@3 ~ A@4 C A@5 D ~@2 B A@3 B A@3 ~ A@4 C A@5 D ~@2 B A@2 D E A@3 E A@3 B A@3 ~ A@4 C A@5 D ~@2 B F G H I J K
L M N O P Q R S T U V W X Y Z H AA AB AC AD AE AF AG AH ~@5
>`.pickRestart({
A: "~@3 x!2 ~@3", B: "~ x", C: "x ~@4 x ~@7 x ~@18", D: "~@3 x ~@4", E: "x ~@4 x ~@7 x ~@2 x ~@15",
F: "~@11 x ~@3 x ~@16", G: "~@9 x ~@3 x ~@18", H: "~@2 x!2 ~@4", I: "~@3 x ~ x ~@10", J: "~@5 x ~@2 x ~@23",
K: "~@3 x ~@3 x ~@24", L: "~ x ~@3 x ~@26", M: "x ~ x ~@12 x", N: "~@2 x ~@26 x ~@2", O: "~ x ~@25 x ~@3 x",
P: "~@5 x!2 ~", Q: "~@5 x ~@18 x ~@3 x ~@3", R: "~@11 x ~ x ~@2", S: "~@21 x ~@3 x ~@6", T: "~@14 x ~@4 x ~@3 x ~@8",
U: "~@9 x ~ x ~@4", V: "~@4 x!2 ~@2", W: "~@15 x ~@3 x ~@12", X: "~@13 x ~@3 x ~@14", Y: "~@12 x ~@2 x ~@16",
Z: "~@5 x ~ x ~@8", AA: "~@7 x ~@3 x ~@20", AB: "~@5 x ~@3 x ~@22", AC: "~ x!2 ~@5", AD: "~ x ~ x ~@12",
AE: "~ x ~@3 x ~@25 x", AF: "~@3 x ~@25 x ~@2", AG: "~ x ~@30", AH: "~@7 x ~@6 x ~@17",
})).gain(0.56)
// drums · rim
const rim = s("rim").struct("<[~@2 x!2] [x!2 ~@2] ~@109>").gain(0.56)
// drums · snare
const snare = s("sd").struct(`<
~@2 A@3 B A@3 C A@3 D E A@6 ~@3 A@3 B A@3 C A@3 D E A@6 ~@3 A@2 D E A@2 D E A@3 F A@3 G A@3 D E A@6 ~@2 H I J K L M N
O P Q R S T U V W X Y Z AA AB AC J AD M AE AF AG AH AF ~@6
>`.pickRestart({
A: "x", B: "x ~ x!2 ~@4", C: "x ~@2 x!2 ~@3", D: "x ~@2 x", E: "x!2 ~@2", F: "x ~ x!3 ~@3", G: "x ~@3 x!3 ~ x ~@7",
H: "~@31 x", I: "~@15 x", J: "~@7 x", K: "~@27 x ~@4", L: "~@25 x ~@6", M: "~@3 x", N: "~@11 x ~@4",
O: "~@21 x ~@4 x ~@5", P: "~@19 x ~@12", Q: "~@17 x ~@14", R: "~ x", S: "~@9 x ~ x ~ x!2 ~", T: "~@13 x ~@18",
U: "~@11 x ~@20", V: "~@5 x ~@10", W: "~@8 x ~@3 x ~@3 x ~@2 x ~@12", X: "~@7 x ~@24", Y: "~@5 x ~@26",
Z: "~@3 x ~@28", AA: "~ x ~@14", AB: "x ~@30 x", AC: "~@29 x ~@2", AD: "~@13 x ~@2", AE: "~@23 x ~@8",
AF: "~@21 x ~@10", AG: "~@5 x ~@2", AH: "~@9 x ~@6",
})).gain(0.72)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@14 A ~@21 A ~@12 A ~@3 A ~@8 B ~@3 A ~@23 C ~@20>".pickRestart({
A: "~@3 x ~@7 x ~@20", B: "~ x ~@2", C: "~@5 x ~@10",
})).gain(0.32)
// drums · clap
const clap = s("cp").struct("<~@75 A B C D E F G H I J K L ~ M N O P Q R S B T U D V F W I X@2 Y ~@5>".pickRestart({
A: "~@3 x", B: "~@23 x ~@8", C: "~@21 x ~@10", D: "~@19 x ~@12", E: "~@9 x ~@6", F: "~ x", G: "~@15 x ~@16",
H: "~@13 x ~@18", I: "~@3 x ~@4", J: "~@5 x ~@10", K: "~@9 x ~@22", L: "~@7 x ~@24", M: "~ x ~@6", N: "~ x ~@14",
O: "~ x ~@29 x", P: "~@15 x", Q: "~@7 x", R: "~@13 x ~@2", S: "~@25 x ~@6", T: "~@11 x ~@4", U: "~@5 x ~@2",
V: "~@17 x ~@14", W: "~@7 x ~@8", X: "~@11 x ~@20", Y: "~@27 x ~@4",
})).gain(0.8)
// drums · low tom
const low_tom = s("lt").struct("<~@75 [~@8 x!2 ~@22] ~@7 x ~@27>").gain(0.8)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C B D E B F C E@3 G H E@5 I ~@2 A B C B D E B F C E@3 G H E@5 I ~@2 J E K L M E K G N B C B D E B F C B E@2 G H
E@5 I ~@2 A O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR ~@5
>`.pickRestart({
A: "~@4 x ~@2 x", B: "~ x ~ x!3 ~ x", C: "x!2 ~ x!2 ~@2 x", D: "x!2 ~ x ~@3 x", E: "~ x ~ x!2 ~@2 x",
F: "x!2 ~ x!3 ~ x", G: "~ x ~ x!2 ~ x ~", H: "~@5 x ~@2 x ~@2 x ~@16 x ~@3", I: "~ x ~ x ~@4", J: "~ x",
K: "~ x ~ x!2 ~@3", L: "~ x ~ x ~@2 x ~", M: "~@5 x ~@2 x ~@2 x ~@4 x ~@15", N: "~@5 x ~@2 x ~@2 x ~@4 x ~@11 x ~@3",
O: "~@11 x ~@3 x ~@10 x ~@5", P: "~@9 x ~@3 x ~@11 x ~@6", Q: "~@8 x ~@3 x ~@10 x ~@8", R: "~@6 x ~@3 x ~@10 x ~@10",
S: "~@5 x ~@2 x ~@11 x ~@11", T: "~@3 x ~@3 x ~@10 x ~@13", U: "~@2 x ~@2 x ~@11 x ~@14", V: "~@4 x ~@10 x ~@14 x ~",
W: "~@2 x ~@11 x ~@14 x ~@2", X: "~ x ~@10 x ~@14 x ~@3 x", Y: "~@11 x ~@20", Z: "~@6 x!2",
AA: "~@7 x ~@15 x ~@2 x ~@5", AB: "~@6 x ~@14 x ~@3 x ~@6", AC: "~@4 x ~@14 x ~@3 x ~@8",
AD: "~@3 x ~@14 x ~@3 x ~@9", AE: "~ x ~@14 x ~@3 x ~@11", AF: "x ~@14 x ~@3 x ~@10 x ~",
AG: "~@13 x ~@3 x ~@10 x ~@3", AH: "~@12 x ~@2 x ~@11 x ~@4", AI: "~@10 x ~@3 x ~@10 x ~@6",
AJ: "~@9 x ~@2 x ~@11 x ~@7", AK: "~@7 x ~@3 x ~@10 x ~@9", AL: "~@5 x ~@3 x ~@11 x ~@10",
AM: "~@4 x ~@3 x ~@10 x ~@12", AN: "~ x ~ x ~@5 x ~@6", AO: "~ x ~@3 x ~@10 x ~@14 x", AP: "~@3 x ~@10 x ~@15 x ~",
AQ: "~ x ~@14 x ~@15", AR: "~@7 x ~@6 x ~@17",
})).gain(0.8)
// drums · mid tom
const mid_tom = s("mt").struct("<~@75 [~@7 x ~@24] ~@6 [~@7 x] ~@28>").gain(0.8)
// … 54 more lines
More by U2
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.