0:00/0:00
// Someone Saved My Life Tonight — John Elton
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 172 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · piano · "A.PIANO 2"
const piano = note(`<
A B C D E F@2 G H I H J@2 K@2 L@2 J@2 M@2 N@2 O P Q@2 R S T@2 U V W X Y@2 Z@2 AA@2 AB@2 AC@2 AD AE AF AG A B C D E F@2
G H I H J@2 K@2 L@2 J@2 M@2 N@2 AH AI Q@2 R S AJ@2 U V W AK Y@2 Z@2 AL@2 AB@2 AC@2 AD AE AF AG AM@2 AN@2 AO@2 AP@2
AQ@2 AR@2 AS@2 AT@2 AU@2 AV@2 AW@2 AX@2 AY@2 O P Q@2 R S AJ@2 U V W X Y@2 Z@2 AL@2 AB@2 AC@2 AD AE AF AG AZ BA BB BC
BD BA BB BC BD BA BE ~@11
>`.pickRestart({
A: "g3@3 ~ b3 ~@2 g2, g2@7 ~, [d4,g4]@5 ~@3, b3@4 ~ [b3,d4,g4]@3, ~@3 g3@3 g3@2", // G5 G
B: "g3@3 ~@4 g2, g2@7 ~, [c4,e4,g4] [b3,d4,g4], ~@3 g3@3 g3@2", // C G
C: "g3@3 ~ c4 ~@2 g2, g2@7 ~, [e4,g4]@5 ~@3, c4@4 ~ [c4,e4,g4]@3, ~@3 g3@3 g3@2", // Em C
D: "b3@3 b3 ~@3 g2, g2@7 ~, [d4,g4] [b3,d4,g4], g3 ~@2 g3", // G5 G
E: "f3@2 ~@2 c4 ~@2 f2, f2@7 ~, f4@5 ~@3, c4@3 a3@2 [a3,c4,f4]@3, a3 f3@2 f3", // F
F: "[[g3,c4,e4]@8 [g3,c4,e4]@8 ~@6 g3@2 ~@2 [d2,d3] ~ [c2,c3,g3,c4,e4]@3 ~, e2@25 ~@7, e3@20 e3@5 ~@7, ~@2 [c4,e4] ~, ~@8 g3@3 ~ [g3,c4,e4]@2 ~@2]/2", // C D C
G: "f3@3 ~@3 f3 f2, f2@7 ~, [a3,c4,f4]!2, ~@3 f3@3 ~@2", // F
H: "g3@2 ~@2 d4 ~@2 g2, g2@7 ~, g4@5 ~@3, d4@3 b3@2 [b3,d4,g4]@3, b3 g3@2 g3", // G
I: "f3@3 ~@4 f2, f2@7 ~, [a3,c4,f4]!2, ~@3 f3@3 f3@2", // F
J: "[c3@3 ~ [g3,c4,e4]@4 ~@4 c4 ~@2 c2, c2@15 ~, [g3,c4,e4]@4 ~@4 e4@5 ~@3, ~@3 c3@5 g3@2 c3@4 c3@2, ~@8 c4@3 g3@2 [g3,c4,e4]@3]/2", // C
K: "[[g3,c4,d#4]@4 [g3,c4,d#4]@4 [g3,c4,d#4]@4 ~@3 c2, c2@15 ~, c3@11 ~ [g3,c4,d#4]@4, ~@7 c3]/2", // Cm
L: "[[a3,c#4,e4]@4 [a3,c#4,e4]@4 a3@3 a3 [a3,c#4,e4]@4, a1@15 ~, a2@5 ~@3, ~@2 [c#4,e4] ~]/2", // A C#m
M: "[[a3,c#4,e4]@4 [a3,c#4,e4]@4 ~@4 c#4 ~@2 c#2, c#2@15 ~, c#3@4 a3 c#3@2 c#3, ~@8 e4@5 ~@3, ~@8 c#4@3 a3@2 [a3,c#4,e4]@3]/2", // A
N: "[[b3,d4,g4]@2 ~@2 [a3,c4,f#4]@2 ~ d3, d2@7 d2@9, d3@3 d3@4 ~, ~@8 [b3,d4,g4]@9 ~@7 [a3,c4,f#4]@8]/2", // G F#dim G F#dim
O: "g3@6 ~@6 c3@2 c2 ~, c2@3 ~, [c4,e4]@8 g3@7 ~, c3@4 ~@2 c3@4 [c4,e4]@5 ~", // C
P: "g3@6 ~@6 b2@2 b1 ~, b1@13 ~@3, [b3,d4]@8 g3@7 ~, b2@2 ~ b2@2 [b3,d4]@2 ~", // Bm
Q: "[[g3,a3,c4,e4]@7 ~ g3@4 ~@10 g3@2 ~@4 a2@2 a1 ~, a1@29 ~@3, a2@4 ~@4 [a3,c4,e4]@6 g3@7 ~@3 [g3,a3,c4,e4]@7 ~, ~@12 a2@7 ~ a2@6 ~@6, ~@8 [a3,c4,e4]@3 ~@5]/2", // Am7 Am Am7 Am
R: "g3@6 ~@2 g3@2 ~@2 c3@2 c2 ~, c2@13 ~@3, [c4,e4]@8 ~@2 [g3,c4,e4]@5 ~, c3@4 ~@2 c3@5 ~@5", // C
S: "[g3,b3,d4]@6 ~@6 b2@2 b1 ~, b1@3 ~, b2@2 ~ b2@2 ~@3, ~@8 [g3,b3,d4]@7 ~", // G
T: "[[g3,a3,c4,e4]@3 ~ [g3,a3,c4,e4]@4 ~@4 g3@2 a2 g3, a1@5 a2@2 ~, a2@4 ~@2 a2@6 ~@4 [g3,a3,c4,e4]@7 ~ [a3,c4,e4]@6 ~@2]/2", // Am7 Am
U: "[g3,c4,e4]@7 ~@5 c3@2 c2 ~, c2@3 ~, c3@5 ~@3, ~@8 [g3,c4,e4]@7 ~", // C
V: "[b2,g3]@6 ~@2 g3@2 ~@2 b2@2 b1 ~, b1@13 ~@3, [b3,d4]@8 ~@2 [b3,d4]@5 ~, ~@6 b2@5 ~@5", // Em Bm
W: "[g3,c4,e4]@6 ~@6 c3@2 c2 ~, c2@3 ~, c3@2 ~ c3@2 ~@3, ~@8 [g3,c4,e4]@7 ~", // C
X: "c#3@5 ~@3 g3 ~@3 c#3@2 c#2 ~, c#2@13 ~@3, [g3,c#4,e4]@4 ~ [g3,c#4]@3, ~@3 c#3@2 e4@2 ~", // C#dim Gdim
Y: "[[g3,b3,d4]@7 ~ [g3,b3,d4]@7 ~ g3@4 ~@2 g3 ~ [g3,b3,d4]@4 d3@2 d2 ~, d2@29 ~@3, d3@13 ~@3 [b3,d4]@6 ~@10, ~@10 d3@3 ~@3]/2", // G Bm
Z: "[[a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~ a3@4 ~@2 a3@2 c#4 ~@3 e3@2 e2 ~, e2@7 ~, e3@18 ~@2 e3@7 ~@5, ~@8 [c#4,e4]@3 ~@2 [a3,c#4,e4]@2 ~]/2", // A C#m A
AA: "[[g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~ g3@4 ~@2 g3 ~@5 c3@2 c2 ~, c2@7 ~, c3@5 ~@11 [c4,e4]@6 ~@2 [g3,c4,e4]@7 ~, ~@20 c3@7 ~@5]/2", // C
AB: "[[g3,c#4,e4]@7 ~ [g3,c#4,e4]@7 ~ g3@4 ~@2 g3@2 c#4 ~@3 c#3@2 c#2 ~, c#2@7 ~, c#3@16 [c#4,e4]@6 ~@4 [g3,c#4,e4]@5 ~, ~@20 c#3@7 ~@5]/2", // C#dim C#m C#dim
AC: "[[g3,b3,d4]@7 ~ [g3,b3,d4]@7 ~ [g3,b3,d4]@7 ~@5 d3@2 d2@2, d2@7 ~, d3@13 ~@3, ~@24 [g3,b3,d4]@7 ~]/2", // G
AD: "[g3,c4,e4]@7 ~@5 c3@2 c2 ~, [c2,c3]@3 ~, ~ [g3,c4,e4]", // C
AE: "[g3,b3,d4]@7 ~@5 b2@2 b1 ~, b1@3 ~, b2@5 ~@3, ~@8 [g3,b3,d4]@7 ~", // G
AF: "[a3,c4,e4]@7 ~@5 [a1,a2] ~ [g1,g2] ~, [a1,a2]@11 ~@5, ~@8 [a3,c4,e4]@7 ~", // Am A G A Am
AG: "[a3,c4,f4]@7 ~@5 f2@4, f1, f2@11 ~@5, ~ [a3,c4,f4]", // F
AH: "[g3,c4,e4]@6 ~@6 c3@2 c2 ~, c2@3 ~, c3@4 ~@2 c3@4 [c4,e4]@5 ~, ~@8 g3@7 ~", // C
AI: "[g3,b3,d4]@6 ~@6 b2@2 b1 ~, b1@13 ~@3, b2@2 ~ b2@2 [b3,d4]@2 ~, ~@8 g3@7 ~", // G Bm
AJ: "[[g3,a3,c4,e4]@6 ~@2 [g3,a3,c4,e4]@7 ~@9 g3@4 a2@2 g3@2, a1@5 a2@2 ~, a2@4 ~@2 a2@6 ~@4 [g3,a3,c4,e4]@7 ~ [a3,c4,e4]@6 ~@2]/2", // Am7 Am
AK: "[c#3,g3]@6 ~@2 g3 ~@3 c#3@2 c#2 ~, c#2@13 ~@3, [c#4,e4]@4 ~ [g3,c#4]@3, ~@3 c#3@2 e4@2 ~", // C#dim C#m Gdim
AL: "[[g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~ g3@4 ~@2 g3 ~@5 c3@2 c2 ~, c2@7 ~, c3@5 ~@11 [c4,e4]@6 ~@2 [g3,c4,e4]@7 ~, ~@10 c3@3 ~@3]/2", // C
AM: "[[g3,c#4,e4]@7 ~ [g3,c#4,e4]@6 ~@2 g3@6 ~@6 a2@2 a1 ~, a1@7 ~, a2@12 ~@2 a2@7 ~ a2@4 [c#4,e4]@5 ~, ~@2 [c#4,e4] g3]/2", // C#dim C#m
AN: "[[g3,b3,d4]@6 ~@2 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@6 ~@6 b2@2 b1 ~, b1@7 ~, b2@4 ~@2 b2@5 ~@3 b2@6 ~@2 b2@4 [b3,d4]@6, ~@3 g3]/2", // G Bm
AO: "[[g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@6 e3@2 e2 ~, e2@7 ~, e3@5 ~ e3@6 ~@2 e3@6 ~@2 e3@4 [b3,e4]@5 ~, d3 ~@23 g3@7 ~]/2", // Em E5
AP: "[[g3,c4,e4]@3 ~ g3@3 ~@8 c2, c2@29 ~@3, c3@5 ~ c3@6 ~@2 c3@6 e4@4 g3@8, ~@8 [c4,e4]@8 g3@6 c3@5 ~ c3@4, ~@18 c4@7 ~ [c4,e4]@6]/2", // C
AQ: "[[g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@6 ~@2 g3 ~@3 a2@2 a1 ~, a1@7 ~, a2@4 ~@2 a2@7 ~ a2@6 ~@2 a2@4 [g3,c#4,e4]@5 ~]/2", // C#dim
AR: "[[g3,b3,d4]@6 ~@2 [g3,b3,d4]@6 ~@2 g3@6 ~@6 b2@2 [b1,b2] ~, b1@29 ~@3, b2@4 ~@2 b2@6 ~@2 b2@6 ~@2 b2@4 [b3,d4]@5 ~, ~@8 [b3,d4]@4 g3@3 ~]/2", // G B Bm
AS: "[[g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@8 g3@2 b3@2 ~@2 e3@2 e2 ~, e2@7 ~, e3@4 ~@2 e3@7 ~ e3@5 ~ e3@7 ~@5, ~@16 [g3,b3,e4]@6 ~@4 [g3,b3,e4]@5 ~]/2", // Em
AT: "[[g3,c4,e4]@6 ~@2 [g3,c4,e4]@6 ~@2 g3@4 ~@2 g3@2 c4 ~@3 c3@2 c2 ~, c2@7 ~, c3@4 ~@2 c3@7 ~ c3@5 ~ c3@7 ~@5, ~@16 [c4,e4]@6 ~@4 [g3,c4,e4]@5 ~]/2", // C
AU: "[[g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 g3@2 ~@2 e3@2 e2 ~, e2@7 ~, e3@5 ~ e3@7 ~ e3@6 ~@2 e3@4 [g3,b3,e4]@5 ~]/2", // Em
AV: "[[g3,c4,e4]@6 ~@2 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@6 ~@2 g3@2 ~@2 c3@2 c2 ~, c2@29 ~@3, c3@4 ~@2 c3@5 ~@3 c3@6 ~@2 c3@4 [g3,c4,e4]@5 ~]/2", // C
AW: "[[g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 g3 ~@3 e3@2 e2 ~, e2@29 ~@3, e3@5 ~ e3@6 ~@2 e3@6 ~@2 e3@4 [g3,b3,e4]@4 ~@2]/2", // Em
AX: "[[g3,c4,e4]@6 ~@2 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@6 ~@2 g3@2 ~@2 c3@2 c2 ~, c2@29 ~@3, c3@3 ~@3 c3@6 ~@2 c3@6 ~@2 c3@4 [g3,c4,e4]@5 ~]/2", // C
AY: "[[g3,c#4,e4]@3 ~ [g3,c#4,e4]@3 ~ g3@3 ~@3 e4@2, c#2, c#3@4 ~@2 c#3@6 ~@2 c#3@5 ~@3 c#3@10, ~@16 [c#4,e4]@8 g3@7 ~, ~@13 c#4@3]/2", // C#dim C#m
AZ: "[g3,b3,d4]@7 ~@5 d3@2 d2 ~, [d2,d3]@3 ~, ~@8 [g3,b3,d4]@7 ~", // G D G
BA: "[d2,d3] ~ [e2,e3] ~ [f#2,f#3] ~ [g2,g3]@3 ~ [f#2,f#3] ~ [e2,e3] ~ [d2,d3] ~, [g3,b3,d4]@5 ~ [b3,d4]@9 ~", // D E F# G F# E D G …
BB: "[g3,c4,e4]@7 ~@5 c3@2 c2 ~, [c2,c3]@3 ~, ~@8 [g3,c4,e4]@7 ~", // C
BC: "[c2,c3] ~ [d2,d3] ~ [e2,e3] ~ [f2,f3]@3 ~ [e2,f2,e3] ~ [d2,d3] ~ [c2,c3]@2, [g3,c4,e4]@5 ~ [g3,c4,e4]@10", // C D E F Fmaj7 D C
BD: "[g3,b3,d4]@7 ~@5 d3@2 d2 ~, d2@3 ~, d3@5 ~@3, ~@8 [g3,b3,d4]@7 ~", // G
BE: "[g3,c4,e4]@7 ~@5 c3@3 ~, [c2,c3]@3 ~, ~@8 [g3,c4,e4]@7 ~", // C
})).s("gm_piano").gain(0.2)
// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note(`<
~@3 A ~@3 B ~@6 C ~ D ~@8 E ~@6 F ~@2 G@2 ~@2 H@2 ~@11 A ~@3 B ~@6 C ~ D ~@8 E ~@6 F ~@2 G@2 ~@2 H@2 ~@11 I ~@24 E ~@6
F ~@2 G@2 ~@2 H@2 ~@18 J K L M N K L M N K ~@2
>`.pickRestart({
A: "~ g3@2 ~", B: "~@7 f3", C: "~@3 c3@3 ~@2", D: "~@2 a2@4 a2 [a1,a2]", E: "~@6 a2@5 ~@5", F: "~@10 g3@5 ~",
G: "[~@14 d3@5 ~@11 e4 ~]/2", H: "[~@6 c3@13 ~@13]/2", I: "~@14 b2 ~", J: "~@14 c2 ~",
K: "[c2,c3] ~ [d2,d3] ~ [e2,e3] ~ [f2,f3]@3 ~ [e2,f2,e3] ~ [d2,d3] ~ [c2,c3]@2, [g3,c4,e4]@5 ~ [g3,c4,e4]@10", // C D E F Fmaj7 D C
L: "[g3,b3,d4]@7 ~@5 d3@2 d2 ~, d2@3 ~, d3@5 ~@3, ~@8 [g3,b3,d4]@7 ~", // G
M: "[d2,d3] ~ [e2,e3] ~ [f#2,f#3] ~ [g2,g3]@3 ~ [f#2,f#3] ~ [e2,e3] ~ [d2,d3] ~, [g3,b3,d4]@5 ~ [b3,d4]@9 ~", // D E F# G F# E D G …
N: "[g3,c4,e4]@7 ~@5 c3@2 c2 ~, [c2,c3]@3 ~, ~@8 [g3,c4,e4]@7 ~", // C
})).s("gm_piano").gain(0.07)
// bass · fretless bass · "FRETLESS"
const bass = note(`<
A@2 B@2 C D@2 E@2 F G H@2 I@2 J K L@2 M@2 N@2 O P J Q R P S@2 O P T U V W X@2 Y@2 Z@2 AA@2 O P AB AC A@2 B@2 C D@2 E@2
F G H@2 I@2 J K L@2 M@2 AD@2 O P J Q R P S@2 O P T U V W X@2 Y@2 Z@2 AA@2 O P AB AC J AE AF@2 AG AH AI AJ J AK AF@2 AG
AH AI AL AG AH AM AN AG AH AO AP AQ AR O P J Q R P S@2 O P T U V W X@2 Y@2 Z@2 AA@2 O P AB AC AS@2 AT@2 AS@2 AT@2 AS@2
AT@2 AS@2 AT@2 AS@2 AU@3 ~
>`.pickRestart({
A: "[g2@31 ~]/2", B: "[g2@7 g2]/2", C: "f2@11 ~ f2@4", D: "[e2@23 ~ e2@2 d2@2 c2@4]/2", E: "[f2@14 g2@13 ~ g2@4]/2",
F: "f2", G: "g2@3 g1", H: "[c2@12 d2@2 c2 g1]/2", I: "[c2@27 ~ c2@2 b1@2]/2", J: "a1@7 e2",
K: "a2@4 a1@7 ~ a1@2 b1@2", L: "[c2@22 d2 ~ d2@4 c2@4]/2", M: "[c#2@19 ~ c#2@2 e2@2 a2@2 c#2@2 e2@2 a2@2]/2",
N: "[d2@19 ~ d2@2 e2@2 e2@4 d2@4]/2", O: "c2@11 ~ c2@4", P: "b1@11 ~ b1@4", Q: "a2 e2 a1@6", R: "c2@3 c2",
S: "[a1@5 e2 a2 a1]/2", T: "c2@4 c3 g2 c2@2", U: "c#2@11 ~ c#2@4", V: "d2@15 ~", W: "d2",
X: "[e2@11 ~ e2@2 a1@2, d2 ~@31]/2", Y: "[c2@23 ~ c2@8]/2", Z: "[c#2@23 ~ c#2@7 ~]/2", AA: "[d2@23 ~ d2@8]/2",
AB: "a1@11 ~ a1@2 g1@2", AC: "f1@2 f2 f1", AD: "[d2@19 ~ d2@2 e2 ~ e2@4 d2@4]/2", AE: "a2@2 ~@2 a1@7 ~ a1@4",
AF: "[b1@23 ~ b1@2 a1@2 g1@4]/2", AG: "e2@7 b1", AH: "e2 ~@3 e2@7 ~ e2@2 d2@2", AI: "c2@7 g1",
AJ: "c2@2 ~@2 c2@7 ~ c2@2 b1@2", AK: "a1 ~ a1@2 a2 e2 a1@2", AL: "c2 ~ g1 ~ c2@7 ~ c2@2 d2@2", AM: "c2@14 g1 ~",
AN: "c2@2 g1 ~ c2@7 ~ c2@2 d2@2", AO: "c2@13 ~ g1@2", AP: "c2@2 ~@2 c2@7 ~ c2@3 ~", AQ: "c#2@7 a1",
AR: "c#2@6 ~@2 c#2 ~ d2@2 e2@4", AS: "[g1@23 ~ g1@8]/2", AT: "[c2@13 ~ c2@2]/2", AU: "[c2@27 ~ c2@17 ~@3]/3",
})).s("gm_fretless_bass").gain(0.35)
// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
A B C D E F@2 G H G H I@2 J@2 K@2 I@2 K@2 L M N O P Q@2 O P R S@2 T@2 U@2 V@2 W@2 X@2 Y@2 Z AA AB AC A B C D E F@2 G H
G H I@2 J@2 K@2 I@2 K@2 L M N O P Q@2 O P R AD@2 T@2 U@2 V@2 W@2 X@2 Y@2 Z AE AB AC AF@2 AG@2 AH@2 AI AJ AK@2 AL@2
AM@2 AN@2 AO@2 AP@2 AQ@2 AR@2 AS@2 N O P Q@2 O P R S@2 T@2 U@2 V@2 W@2 X@2 Y@2 Z AA AB AC AT AU AV AW AT AU AV AW AT
AU AX ~@11
>`.pickRestart({
A: "~@7 d4, g2@7 ~, ~ g3@3 g4@4, ~@2 b3@3 g3@2 ~, ~@3 d4@3 b3@2",
B: "~@2 g3 c4 ~@3 d4, e2@5 ~@3 g2@6 ~@2, ~ e3@2 ~@2 g3@2 ~, ~@3 b3",
C: "~@6 g3 c4, e2@13 ~@3, ~ e3@3 e4@3 ~, ~@2 g3@3 e3@2 ~, ~@3 c4@3 ~@2",
D: "~@6 b3 d4, g2@13 ~@3, ~ g3@3 g4@4, ~@2 b3@3 g3@2 ~, ~@3 d4@3 ~@2",
E: "~@5 f3 a3 c4, f2@3 ~, ~ f3@3 f4@3 ~, ~@2 a3@3 ~@3, ~@3 c4@3 ~@2",
F: "[~@22 c4@2 e4@2 d4@2 c4@3 ~, e2@27 ~@5, ~@2 e3@6 e4@5 ~ c4@6 g3@4 ~@8, ~@2 g3@3 e3@3 e4@2 ~@6, ~@6 c4@6 g3@5 ~ e3@6 ~@8]/2",
G: "a3 c4 f4 c4 a3 c4 f4 c4", H: "b3 d4 g4 d4 b3 d4 g4 d4", I: "[g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~",
J: "[g3,c4,d#4]@7 ~ [g3,c4,d#4]@7 ~", K: "[a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~", L: "[b3,d4,g4]@7 ~ [b3,d4,g4]@7 ~",
M: "[a3,d4,f#4]@7 ~ [a3,d4,f#4]@8", N: "[g3,c4,e4] c3 [g3,c4,e4] c3", O: "[g3,b3,d4] b2 [g3,b3,d4] b2",
P: "[g3,c4,e4] a2 [g3,c4,e4] a2", // C
Q: "[[g3,c4,e4] a2 [g3,c4,e4] ~ [c4,e4] c3 [g3,c4,e4] c3, ~@3 a2 ~@4, ~@14 g3@7 ~@11]/2", // C
R: "[g3,c4,e4]@2 ~@2 [g3,c4,e4]@2 ~ g3, ~@2 a2@3 ~ a2@2", // C
S: "[[g3,c4,e4]@4 c3@4 g3@4 ~@4 [b3,d4]@4 b2@4 g3@4 ~@2 g3 ~, ~@4 [c4,e4]@3 g3@3 ~@2 [b3,d4]@3 ~, ~@3 c3 ~@3 b2]/2", // C Bm C Bm
T: "[[g3,c4,e4]@2 c3@2 g3@2 ~@2 [c#4,e4]@2 c#3@2 [g3,c#4,e4]@2 ~ g3, ~@8 [c4,e4]@6 g3@7 ~@11, ~@3 c3 ~@3 c#3]/2", // C C#m C#dim C
U: "[[g3,b3,d4] d3 [g3,b3,d4] ~ [g3,b3,d4] d3 [g3,b3,d4] d3, ~@6 d3@3 ~@7]/2", // G
V: "[[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 e3@2 [a3,c#4,e4]@2 ~ g3, ~@2 e3@3 ~ e3@3 ~@5 e3@2]/2", // A
W: "[[g3,c4,e4]@4 ~@4 [g3,c4,e4]@4 ~@4 [g3,c4,e4]@4 c3@4 [g3,c4,e4]@4 ~@2 g3 ~, ~@2 c3@3 ~ c3@3 ~@5 c3@2]/2", // C
X: "[[g3,c#4,e4]@4 ~@16 c#3@4 [g3,c#4,e4]@4 ~@2 g3 ~, ~@4 c#3@6 ~@2 c#3@7 ~@9 c#3@4, ~@4 [g3,c#4,e4]@3 ~ [g3,c#4,e4]@3 ~@5]/2", // C#dim
Y: "[[g3,b3,d4]@4 d3@4 [g3,b3,d4]@4 ~@4 [g3,b3,d4]@4 ~@4 [g3,b3]@4 ~@2 g3 ~, ~@6 d3@3 ~ d3@3 ~ d3@2, ~@12 d4@3 ~]/2", // G
Z: "[g3,c4,e4]@2 ~@2 g3@2 ~ g3, c3@3 ~ c3@6 ~@2 c3@4, ~@4 [c4,e4]@3 ~", // C
AA: "[g3,b3,d4]@4 ~@4 [g3,b3]@4 ~@2 g3 ~, b2@3 ~ b2@6 ~@2 b2@4, ~@8 d4@7 ~", // G
AB: "[a3,c4,e4]@4 a2@4 [a3,c4,e4]@4 ~@2 a3 ~, a2@3 ~@9 a2@4", AC: "[a3,c4,f4]@4 ~@3 a3, f2@3 ~, ~@2 a3 f4, ~@5 c4@3",
AD: "[[g3,c4,e4]@4 c3@4 g3@4 ~@4 [b3,d4]@4 ~@4 g3@4 ~@2 g3 ~, ~@4 [c4,e4]@3 g3@3 ~@2 [b3,d4]@3 ~, ~@6 c3@2 ~@2 b2@3 ~ b2@2]/2", // C Bm C Bm
AE: "[g3,b3,d4]@2 ~@2 [g3,b3]@2 ~ g3, b2@3 ~ b2@6 ~@2 b2@4, ~@8 d4@7 ~", // G
AF: "[[g3,c#4,e4]@7 ~@9 [g3,c#4,e4]@7 ~ [g3,c#4,e4]@4 ~@2 g3@2, a2@11 ~ a2@15 ~ a2@4, ~@8 [g3,c#4,e4]@7 ~@17]/2", // C#dim
AG: "[[b3,d4]@7 ~@9 [g3,b3,d4]@7 ~ [g3,b3]@4 ~@2 g3 ~, b2@5 ~ b2@7 ~ b2@2, ~@8 [g3,b3,d4]@7 ~@9 d4@7 ~]/2", // Bm G
AH: "[[g3,b3,e4]@2 ~@6 [g3,b3,e4]@2 ~@2 g3@2 ~ g3, ~@4 e3@7 ~ e3@7 ~ e3@6 ~@2 e3@4, ~@8 [g3,b3,e4]@7 ~@9 [b3,e4]@6 ~@2]/2", // Em E5
AI: "[g3,c4,e4] ~ [g3,c4,e4] c3, ~@2 c3@3 ~@3", AJ: "[g3,c4,e4]@2 c3@2 g3@2 ~ g3, ~@8 [c4,e4]@7 ~, ~@3 c3",
AK: "[[g3,c#4,e4]@7 ~ [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@6 ~@2 g3@4 ~@2 g3 ~, a2@13 ~ a2@7 ~ a2@5 ~ a2@4, ~@12 [c#4,e4]@3 ~]/2", // C#dim C#m
AL: "[[g3,b3,d4]@7 ~ [g3,b3,d4]@6 ~@2 [g3,b3,d4]@6 ~@6 d4@2 b2@2, b2@12 ~@2 b2@6 ~@2 b2@7 ~@3, ~@12 g3@3 ~, ~@26 b3@5 ~]/2", // G
AM: "[[g3,b3,e4]@2 ~@6 [g3,b3,e4]@3 ~ g3@2 ~ g3, ~@4 e3@7 ~ e3@9 ~ e3@5 ~ e3@4, ~@8 [g3,b3,e4]@7 ~@9 [b3,e4]@6 ~@2]/2", // Em E5
AN: "[~@16 [g3,c4,e4]@6 ~@2 [g3,c4,e4] ~@3 c3@4, [g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~@11 [g3,c4,e4]@6, ~@4 c3@7 ~ c3@9 ~ c3@5 ~@5]/2", // C
AO: "[e3@3 ~@13 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~@2 g3@2, [g3,b3,e4]@3 ~ [g3,b3,e4]@3 ~@9, ~@4 e3@7 ~ e3@9 ~ e3@5 ~ e3@4]/2", // Em
AP: "[~@16 [g3,c4,e4]@6 ~@2 [c4,e4] ~@3 c3@4, [g3,c4,e4]@7 ~ [g3,c4,e4]@6 ~@12 [g3,c4,e4]@5 ~, ~@4 c3@7 ~ c3@8 ~@2 c3@4 ~@6]/2", // C
AQ: "[~@16 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 e3@2 g3 ~, [g3,b3,e4]@3 ~ [g3,b3,e4]@3 ~@9, ~@4 e3@7 ~ e3@8 ~@2 e3@5 ~@5]/2", // Em
AR: "[[g3,c4,e4]@6 ~@2 [g3,c4,e4]@7 ~@13 c3@4, c3@5 ~ c3@13 ~ c3@7 ~@5, ~@8 [g3,c4,e4]@3 g3@3 ~@2, ~@24 [c4,e4]@7 ~]/2", // C
AS: "[[g3,c#4,e4]@7 ~ [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@6 ~@8 c#3@2, c#3@13 ~ c#3@6 ~@2 c#3@6 e4@4, ~@3 g3, ~@13 c#4@3]/2", // C#dim
AT: "d3@3 ~@9 d3@3 ~, [g3,b3,d4]@7 ~ [g3,b3,d4]@7 ~, ~@4 d3@7 ~@5", // G
AU: "[d3,g3] e3 f#3 g3@2 f#3 e3 d3, [b3,d4]@5 ~ [b3,d4]@8 ~@2", // G5 Bm
AV: "c3@3 ~@9 c3@3 ~, [g3,c4,e4]@6 ~@2 [g3,c4,e4]@7 ~, ~@2 c3@3 ~@3", // C
AW: "c3 d3 e3 f3@2 e3 d3 c3, [g3,c4,e4]@5 ~ [g3,c4,e4]@8 ~@2", // C
AX: "c3@3 ~@5 [g3,c4,e4]@7 ~, [g3,c4,e4]@3 ~@5, ~@2 c3@3 ~@3", // C
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.3)
// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note("<~@99 A B ~@16 C ~@3 D ~@38 E F G H I F G H I J@3>".pickRestart({
A: "~@7 d#4", B: "g3@7 ~@9", C: "~@8 g3 ~@7", D: "~@14 g3 ~", E: "~@12 c3@3 ~",
F: "c3 d3 e3 f3@2 e3 d3 c3, [g3,c4,e4]@5 ~ [g3,c4,e4]@8 ~@2", // C
G: "d3@3 ~@9 d3@3 ~, [g3,b3,d4]@7 ~ [g3,b3,d4]@7 ~, ~@4 d3@7 ~@5", // G
H: "[d3,g3] e3 f#3 g3@2 f#3 e3 d3, [b3,d4]@5 ~ [b3,d4]@8 ~@2", // G5 Bm
I: "c3@3 ~@9 c3@3 ~, [g3,c4,e4]@6 ~@2 [g3,c4,e4]@7 ~, ~@2 c3@3 ~@3", // C
J: "[c3@2 d3@2 e3@2 f3@4 e3@2 d3@2 c3@19 ~@15, [g3,c4,e4]@5 ~ [g3,c4,e4]@8 ~@34]/3", // C
})).s("gm_acoustic_guitar_steel").gain(0.06).pan(0.3)
// drums · kick
const kick = s("bd").struct(`<
~@56 A B A B@2 C A B A D A C A C B C A B A B@3 A B A B A C B@2 A B A C A C A B A B A B@2 C B E B C A C A C A D A C A B
A C A B A D A C A C A C A C A C A B@2 C A B@2 C A B A C A C A B A C B@2 A C A B A C A B A B ~@12
>`.pickRestart({
A: "x ~@6 x", B: "x", C: "x!2 ~@2", D: "x ~@2 x ~@4", E: "x ~ x ~@4 x",
})).gain(0.45)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@76 A ~@7 A ~@13 A ~@33 A ~@2 B ~@17 C ~@6 D E D F D E D E D G ~@2>".pickRestart({
A: "~@7 x", B: "~ x ~@2", C: "~ x ~@6", D: "x ~@6 x", E: "x", F: "x ~@2 x ~@4", G: "x!2 ~@2",
})).gain(0.2)
// drums · rim
const rim = s("rim").struct("<~@98 [~ x]!11 ~@63>").gain(0.45)
// drums · snare
const snare = s("sd").struct(`<
~@56 A@19 B A@3 C A@7 D A@5 E A@3 D ~@11 A@4 D A@3 F A@13 D A@7 D A@5 D A@7 G A@3 B A@2 ~@12
>`.pickRestart({
A: "~ x", B: "~ x!2 ~ x ~@3", C: "~ x ~@2", D: "~ x!2 ~", E: "~@3 x", F: "~ x!2 ~ x!4", G: "~@2 x ~@2 x!2 ~",
})).gain(0.45)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@87 A ~@43 B ~@7 A ~@20 C D C@3 D C@4 ~@2>".pickRestart({
A: "~ x ~@6", B: "~ x ~ x ~@4", C: "~ x", D: "~ x!2 ~ x ~@3",
})).gain(0.2)
// drums · low tom
// … 53 more lines
More by Elton John
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.