0:00/0:00
// You Gotta Love Someone — John Elton
// 106 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106/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 · "FINGERDBAS"
const bass = note(`<
~@28 A B C D E F G H I J K L M@2 N O P Q R S T U V W X Y Z O T AA Z AB AC AD AE AF AG AH E AI G H I J K L M@2 R AJ AK
AL R O AM U A F T AN AO F R AP AQ AR AS D AT AU P AV AW AI AX AY AZ BA BB BC AT AR AM BD BE AR P AV BF BG R BH
>`.pickRestart({
A: "b1@5 ~ b1@9 ~", B: "b1@5 ~ b1@7 ~ b1@2", C: "a1@5 ~ a1@8 b1@2", D: "e2@3 e2@3 g#1 a1",
E: "b1@5 ~ b1@5 ~ b1@2 f#2@2", F: "b1@5 ~ b1@5 ~ f#2@2 b1@2", G: "e2@5 ~ e2@8 b1@2", H: "e2@5 ~ e2@6 e2@2 d#2@2",
I: "c#2@6 c#2@7 ~ g#1 ~", J: "c#2@5 ~ c#2@7 ~ g#1 ~", K: "f#1@5 ~ f#1@7 ~ f#1@2", L: "b1@3 ~ a1@3 ~ g#1@3 ~ f#1@3 ~",
M: "[e1@3 b1@13]/2", N: "e2@5 ~ e2@7 ~ e2 ~", O: "a1@6 a1@7 ~ b1@2", P: "e2@5 ~ e2@6 b1@2 c#2@2", Q: "e2@3 e2@4 b1",
R: "e2@5 ~ e2@7 ~ b1 ~", S: "a1@5 ~ a1@7 ~ b1 ~", T: "e2@6 e2@7 ~ b1 ~", U: "e2@5 ~ e2@5 ~ g#1@2 a1@2",
V: "b1@5 ~ b1@7 ~ f#1 ~", W: "b1@5 ~ b1@6 f#1@2 b1@2", X: "e2@6 e2@8 b1 ~", Y: "e2@5 ~ e2@4 b1@2 c#2@2 b1@2",
Z: "e2@3 e2@5", AA: "e2@5 ~ e2@2 f#2 g#2 b2 c#3 c#3@2 b2@2", AB: "a1@3 a1@5", AC: "e2@3 e2@3 c#3 b2",
AD: "e2@4 b2@2 e2@5 ~ g#2@2 b2@2", AE: "b1@5 ~ b1@7 ~ b1 ~", AF: "b1@6 b1@9 ~", AG: "a1@6 a1@6 a1 ~ a1 ~",
AH: "e2@5 ~ e2@4 b1@2 g#1@2 a1@2", AI: "b1@5 ~ b1@3 ~ b1@2 f#2@2 b1@2", AJ: "a1@5 ~ a1@8 b1 ~",
AK: "e2@5 ~ e2@6 c#2@2 b1@2", AL: "e2@3 e2@3 b1 c#2", AM: "e2@5 ~ e2@8 b1 ~", AN: "e2@6 e2 ~ e2@2 f#2@2 g#1@2 a1@2",
AO: "b1@5 ~ b1@8 f#1@2", AP: "e2@5 ~ e2@6 g#1@2 a1@2", AQ: "b1@5 ~ b1@8 f#2@2", AR: "b2@5 ~ b2@6 f#2@2 b1@2",
AS: "e2@5 ~ e2@7 ~ b1@2", AT: "b1@3 b1@4 f#2", AU: "b2@3 b2@3 f#2 b1", AV: "e2@5 ~ e2@5 ~ e2@2 f#2@2",
AW: "b1@5 ~ b1@8 b1 ~", AX: "e2@6 e2@5 ~ b1@2 c#2@2", AY: "e2@5 ~ c#3@2 b2@2 c#3@2 b2@2 g#2@2",
AZ: "b1@5 ~ b1@7 ~ g#1 ~", BA: "b1@5 ~ b1@5 ~ c#2@2 b1@2", BB: "e2@5 ~ e2@5 ~ b1@2 c#2@2", BC: "e2@3 e2!2 f#2 e2 f#2",
BD: "e2@5 ~ e2@4 g#1@2 a1@2 a#1@2", BE: "b1@5 ~ b1@7 ~ f#2@2", BF: "b1@5 ~ b1@8 g#2@2", BG: "b2 c#3 b2 b2@3 b1 c#2",
BH: "e2@6 e2@5 ~ g#1@2 a1@2",
})).s("gm_electric_bass_finger").gain(0.56)
// chords · piano · "A.PIANO"
const piano = note(`<
A B C D E F G H I J@2 K L@2 M N O P Q R S J@2 K L@2 M N O P T U V W X Y Z AA AB AC AD@2 I J@2 K L@2 M N O P Q R S J@2
K L@2 M N AE AF T U V W X Y Z AA AB AC AD@2 I AG@2 AH AI@2 M N AJ P Q R AJ P Q R AJ P Q R AK AL AM@2 AN AO AP@2 AN AO
AP@2 AN AO AP@2 AN AO AP@2 AN AO AP@2
>`.pickRestart({
A: "[b3,e4,g#4]@2 ~ b3@2 e3 b3 e4, e2@7 ~, ~@4 e3@5 ~@7, ~@6 g#4@9 ~, ~@3 e4@3 ~@2", // E
B: "[b3,d#4,g#4]@2 ~ [b3,d#4]@2 ~ b3 d#4, b1@13 ~@3, ~@4 b2@5 ~ b2@4 ~@2, ~@3 f#4@4 ~", // G#m B
C: "[a3,c#4,e4]@2 ~ [a3,c#4]@2 f#2 a3 f#2, f#1@7 ~, d#4 ~@3 f#2@5 ~@7, ~@6 e4@8 c#4 ~", // A
D: "a4@2 g#4@2 [a2,f#4]@2 g#4@4 ~@2 b2 ~ b2@2, [a1,c#4,e4]@5 ~ [b1,d#4]@10, d#4 ~@5 [b3,b4,d#5,f#5]@8 ~@2, ~@10 f#4@5 ~", // D A B
E: "[e4,g#4]@4 e3@2 g#4 ~@3 e4@2 [b3,b4,e5,g#5]@4, e2@15 ~, [b4,e5]@11 ~@5, b3@4 e3@3 ~, e3@3 ~@5 g#4@8", // E E5
F: "~@3 b3@2 b2 b3 d#4, [b4,d#5], b1@3 d#4@3 ~@2, [b3,d#4,f#4,g#5]@3 f#5@5, ~@2 b2 f#4@4 ~", // B G#m7
G: "~@6 [a3,c#4]@4 ~@2 a3@2 c#4 ~, [a4,c#5,e5], f#1@7 ~, [a3,c#4,e4]@6 e4@7 ~@3, ~@4 f#2@5 ~ f#2@6", // A
H: "a4@2 g#4@2 [a2,f#4]@2 g#4@4 ~@2 b2 ~ b2 ~, [a1,c#4,e4]@5 ~ [b1,b3,d#4]@10, ~@10 f#4@5 ~", // D A B
I: "[b3,e4,g#4]@2 ~ [b3,e4]@2 ~ e3 g#4, [e2,b4,e5]@15 ~, ~@4 e3@6 b3@5 ~, ~@3 g#4@3 e4@2", // E E5
J: "[[c#4,e4,a4]@2 ~ e4@2 ~ a2 ~@4 [b3,e4,g#4]@2 ~@2 b2, a1@7 ~@3 e3@2 ~ e3@2 ~, ~@4 a2@6 ~@6 e2@15 ~, ~@3 a4@5 [b3,g#4]@3 ~@3 [c#4,e4,a4,c#5,e5,a5]@2, ~@6 c#4@3 ~ c#4@4 e4@8 ~@10]/2", // A E A
K: "~@2 e3 ~@4 f#4, [e2,b4,e5,g#5]@13 ~@3, [b3,e4,g#4]@3 g#4@3 ~@2, ~@3 [b3,e4]@2 b3@3, ~@2 e3 [b2,e4]", // E E5
L: "[[b3,e4,g#4]@4 ~@2 [b3,e4]@4 ~@2 e3@2 g#4@2 [c#4,a4]@4 ~@2 [c#4,e4]@3 ~ a3@2 [a2,c#4]@2 e4@2, e2@15 ~ a1@13 ~@3, [b4,e5]@12 e4@9 ~@11, ~@4 e3@5 ~ b3@5 ~@5 a2@7 ~@5, ~@6 g#4@7 ~@9 a4@8 ~@2]/2", // E E5 F#m C#m A E5
M: "~@3 [b3,e4,g#4]@2 e3 ~ e3, e2@15 ~, [b3,e4,g#4]@3 ~@3 [c#4,e4,a4,c#5,e5,a5]@2, ~ e3 ~@2", // E A
N: "[b3,e4,g#4]@4 e3@2 b3@2 ~@4 [e4,g#4,b4,e5]@3 ~, [e2,b4,e5,g#5]@13 ~@3, ~@3 g#4@3 ~@2, ~@6 e4@4 b3@5 ~, ~@8 e3@7 ~", // E
O: "~@3 [f#3,b3,d#4]@2 b2 ~ b2, b1@15 ~, [f#4,b4,d#5]@11 ~@5, [f#3,b3,d#4]@3 ~@3 [g#3,b3,e4,g#4,b4,e5]@2, ~@4 b2@5 ~@7", // B E
P: "~@6 [f#3,b3,d#4]@4 b2@2 [f#3,b3,d#4]@2 b2 ~, [b1,f#4,a4,d#5]@15 ~, [f#3,b3,d#4]@3 ~@5, ~@4 b2@5 ~@7", // B B7 B
Q: "~@3 e4@2 e3 ~ e3, e2@15 ~, [c#4,e4,a4,c#5,e5,a5]@3 [b3,g#4,b4,e5,g#5]@3 [a3,c#4,f#4,a4,c#5,f#5]@2, ~@4 e3@5 ~@7", // A E F#m
R: "~@3 [g#3,b3,e4]@2 e3 ~ e3, e2, [g#4,b4,e5]@7 ~, [g#3,b3,e4]@3 ~@3 [c#4,e4,a4]@2, ~ e3 ~@2", // E A
S: "[b3,e4,g#4]@2 ~ [b3,e4]@2 ~ e3 g#4, [b4,e5]@15 ~, ~@4 e3@6 b3@5 ~, ~@3 g#4@3 e4@2", // E E5
T: "~@3 e4@2 e3 ~ e3, e2@15 ~, [a4,c#5]@11 ~@5, [c#4,e4,e5,a5]@3 [c#4,e5,a5]@3 [c#4,e4,a4,c#5,e5,a5]@2, ~@4 e3@5 ~@7", // A
U: "~@3 [g#3,b3,e4]@2 e3 ~ e3, e2, [g#4,b4,e5]@7 ~, [g#3,b3,e4]@3 ~@3 [b3,e4]@2, ~ e3 ~@2", // E E5
V: "[b3,d#4,f#4]@2 ~ [b3,d#4,f#4]@2 b2 [b3,d#4,f#4] b2, b1@15 ~, ~ b2 ~@2", // B
W: "[b3,d#4,f#4]@2 ~ [b3,d#4,f#4]@2 b2 ~ b2, b1@7 ~, ~@4 b2@5 ~@3 [b3,d#4,f#4]@4", // B
X: "[b3,e4,g#4]@2 ~ b3@2 e3 [c#4,e4,a4] e3, e2@15 ~, ~@4 e3@5 ~@7, ~@3 [e4,g#4]@3 ~@2", // E A E
Y: "[b3,e4,g#4]@2 ~ [b3,e4,g#4]@2 e3 [b3,e4,g#4] d#3, e2@13 ~@3, ~@4 e3@5 ~@7", // E
Z: "c#4@2 ~ [c#4,e4,g#4]@2 c#3 [c#4,e4,g#4] c#3, [c#3,e4,g#4]@3 ~@5, ~@4 c#2@11 ~", // C#m
AA: "[c#4,e4,g#4]@4 ~@2 [c#4,e4,g#4]@4 c#3@2 [c#4,e4,g#4]@2 c#3 ~, c#2@7 ~, ~ c#3 ~@2", // C#m
AB: "[c#4,f#4,a#4]@4 ~@2 [c#4,f#4,a#4]@4 f#3@2 [c#4,f#4,a#4]@2 f#3 ~, f#2@15 ~, ~@4 f#3@5 ~@7", // F#
AC: "[b3,b4] [a3,c#4,e4,a4] [g#3,b3,d#4,g#4] [f#3,f#4], [d#4,f#4] ~@5 [a3,c#4] ~", // B A G#m F# D#m A
AD: "[[e3,g#3,b3,e4]@6 [b2,f#3,b3,d#4]@25 ~]/2", // E B
AE: "~@3 [f#3,b3,d#4]@2 b2 ~ b2, b1@15 ~, [f#4,b4,d#5]@11 ~@5, [f#3,b3,d#4]@3 ~@3 [f#3,b3,d#4,f#4,b4,d#5]@2, ~@4 b2@5 ~@7", // B
AF: "~@6 [f#3,b3,d#4]@4 b2@2 [f#3,b3,d#4]@2 b2 ~, [b1,f#4,a4,d#5]@15 ~, [f#3,b3]@3 ~@5, ~@4 b2@5 ~@7", // B B7 B5
AG: "[[c#4,e4,a4]@2 ~ e4@2 ~ a2 ~@4 [b3,e4,g#4]@2 ~@2 b2, a1@7 ~@3 e3@2 ~ e3@2 ~, ~@4 a2@6 ~@6 e2@15 ~, ~@3 a4@5 [b3,g#4]@3 ~@3 [c#4,e4,a4,c#5,e5,a5]@2, ~@6 c#4@3 ~ c#4@4 e4@7 ~@11]/2", // A E A
AH: "~@2 e3 ~@4 f#4, [e2,b4,e5,g#5]@13 ~@3, [b3,e4,g#4]@3 g#4@3 ~@2, ~@6 [b3,e4]@4 b3@5 ~, ~@2 e3 [b2,e4]", // E E5
AI: "[[b3,e4,g#4]@4 ~@2 [b3,e4]@4 ~@2 e3@2 g#4@2 [c#4,a4]@4 ~@2 [c#4,e4]@3 ~ a3@2 [a2,c#4]@2 e4 ~, e2@15 ~ a1@13 ~@3, [b4,e5]@12 e4@9 ~@11, ~@4 e3@5 ~ b3@5 ~@5 a2@7 ~@5, ~@6 g#4@7 ~@9 a4@8 ~@2]/2", // E E5 F#m C#m A E5
AJ: "[f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@2 b2 ~ b2, b1@15 ~, [f#4,b4,d#5]@11 ~@5, ~@4 b2@5 ~@3 [g#3,b3,e4,g#4,b4,e5]@4", // B E
AK: "b3@2 ~ [b3,d#4,f#4]@2 b2 [b3,d#4,f#4] b2, b1@15 ~, [b4,d#5,f#5]@13 ~@3, [d#4,f#4]@3 ~@5, ~ b2 ~@2", // B D#m
AL: "[b3,e4,g#4,b4,e5,g#5]@4 [b3,d#4,f#4,b4,d#5,f#5] ~ [b2,d#4]@4 b2@2 [b3,f#4]@2 b2 ~, b1@7 ~, ~@6 [b3,f#4,b4,d#5,f#5]@6 d#4 ~@3", // E B B5 B
AM: "[[c#4,e4,a4,c#5,e5,a5]@4 ~@2 [b3,e4,g#4]@4 e3@2 [b3,e4,g#4]@2 ~@2 [c#4,f#4,a4,c#5,f#5,a5]@4 [e3,b3,e4,g#4,b4,e5,g#5] ~ [b3,e4,g#4]@4 e3@2 [b3,e4,g#4]@2 e3 ~, e2@15 ~ e2@14 ~@2, ~@4 e3@5 ~@5 e3@5 ~@3 e3@2 ~@8, ~@6 [b4,e5,g#5]@7 ~@9 [b4,e5,g#5]@7 ~@3]/2", // A E F#m E
AN: "[b3,d#4,f#4]@2 ~ [b3,d#4,f#4]@2 b2 [b3,d#4,f#4] b2, b1@15 ~, [b4,d#5,f#5]@13 ~@3, ~ b2 ~@2", // B
AO: "[b3,e4,g#4,b4,e5,g#5]@4 [b2,b3,d#4,f#4,b4,d#5,f#5] ~ [b3,d#4,f#4]@4 b2@2 [b3,d#4,f#4]@2 b2@2, b1@7 ~, ~@3 [b4,d#5,f#5]@3 ~@2, ~@3 b2 ~@4", // E B
AP: "[[c#4,e4,a4,c#5,e5,a5]@4 ~@2 [b3,e4,g#4]@4 e3@2 [b3,e4,g#4]@2 ~@2 [c#4,e4,a4,c#5,f#5,a5]@4 [e3,b3,e4,g#4,b4,e5,g#5] ~ [b3,e4,g#4]@4 e3@2 [b3,e4,g#4]@2 e3@2, e2@15 ~ e2@15 ~, ~@4 e3@5 ~@5 e3@5 ~@3 e3@3 ~@7, ~@6 [b4,e5,g#5]@9 ~@7 [b4,e5,g#5]@8 ~@2]/2", // A E F#m7 E
})).s("gm_piano").gain(0.54).pan(0.7)
// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@54 A@2 ~@2 B C D@2 E F G@2 ~@54>".pickRestart({
A: "[~@6 [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4]@2 [e4,a4]@14 ~@4]/2", B: "~@3 c#5@5",
C: "~ b4 ~@2 b4 g#4 ~ f#4 e4 c#4 ~ e4 ~ g4@2 f#4, ~@3 g#4@2 ~@7 b4@2 ~@2",
D: "[e4 f#4 ~ e4@9 ~@2 [c#5,f#5]@4 [b4,e5]@2 g#4@2 f#4 g#4 f#4@2 e4@2 b3@2 c#4 e4]/2", // F#5 E5
E: "f#4@4 e4 f#4 g#4@4 f#4 g#4 b4@4", F: "~ c#5 e5@4 f#5 e5 g#5@4 g#5@2 a5@2",
G: "[g#5@2 g#5@7 ~ b4 c#5 e5@8 c#5@2 e5@10]/2",
})).s("gm_electric_guitar_muted").gain(0.54).pan(0.3)
// other · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
~@20 A@8 B@2 C@2 B@2 D@2 E@2 F G H@2 I@8 B@2 D@2 ~@8 B@2 J@2 B@2 D@2 E@2 F G H@2 K@8 B@2 D@2 B@2 L@2 B@2 D@2 M@2 D@2
N@2 D@2 N@2 D@2 O@2 L@2 N@2 D@2 O@2 L@2
>`.pickRestart({
A: "[~@2 [e4,e5]@61 ~]/8", B: "[f#4,f#5]/2", C: "[[e4,e5]@29 ~@3]/2", D: "[[e4,e5]@31 ~]/2", E: "[g#4,g#5]/2",
F: "[a#4,a#5]", G: "[b4,b5] [a4,a5] [g#4,g#5] [f#4,f#5]", H: "[[e4,e5]@6 [d#4,d#5]@23 ~@3]/2", I: "[e4,e5]/8",
J: "[[e4,e5]@15 ~]/2", K: "[[e4,e5]@127 ~]/8", L: "[e4,e5]/2", M: "[[f#4,f#5]@31 ~]/2", N: "[b4,b5]/2",
O: "[[b4,b5]@31 ~]/2", // B
})).s("gm_synth_strings_1").gain(0.56)
// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
A B C D E B C D F G H F I J K L M N O P F G H F I J K L M N Q P R S T U V W X ~@3 F G H F I J K L M N O P F G H F I J
K L M N Q P R S T U V W X ~@3 U Y Z AA AB AC AD AE AF AG AH AI AF AG AJ L AF AG AK L S AL AM AN AG AO AP AQ AR AO AP
AQ AR AO AP AQ AR AO AP AQ AR AO AP AQ
>`.pickRestart({
A: "[b3,e4,g#4]@4 [b3,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,g#4] ~", // E
B: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B
C: "[a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4] ~", // A
D: "[a3,c#4,e4]@4 [a3,c#4,e4]@2 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // A B
E: "[b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,g#4] ~", // E
F: "[b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~", // E
G: "[c#4,e4,a4]@4 [c#4,e4,a4]@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [c#4,e4,a4]@2 [c#4,e4,a4]@2", // A
H: "[b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [c#4,e4,a4]@2 [c#4,e4,a4]@2", // E A
I: "[b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
J: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [c#4,e4,a4]@2 [c#4,e4,a4] ~", // A
K: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4] ~ [c#4,e4,a4] ~ [c#4,e4,a4]@2", // E A
L: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~", // E
M: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [b3,d#4,f#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~", // B E
N: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // B
O: "[c#4,e4,a4]@4 [c#4,e4,a4] ~ [b3,e4,g#4]@4 [b3,e4,g#4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2", // A E A
P: "[b3,e4,g#4]@2 [b3,e4,g#4] [b3,e4,g#4]@2 [b3,e4,g#4]!3", // E
Q: "[c#4,e4,a4]@4 [c#4,e4,a4] ~ [c#4,e4,a4]@4 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2", // A
R: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B
S: "[b3,d#4,f#4]@4 [b3,d#4,f#4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // B
T: "[b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@4 [b3,e4,g#4] ~ [c#4,e4,a4]@2 [c#4,e4,a4] ~", // E A
U: "[b3,e4,g#4]@4 [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~", // E
V: "[c#4,e4,g#4]@3 ~ [c#4,e4,g#4] ~ [c#4,e4,g#4]@4 [c#4,e4,g#4] ~ [c#4,e4,g#4]@2 [c#4,e4,g#4] ~", // C#m
W: "[c#4,e4,g#4]@3 ~ [c#4,e4,g#4] ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~", // C#m
X: "[a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@2 [a#3,c#4,f#4] ~", // F#
Y: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 [c#4,e4,a4]@4 [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4]@2", // A
Z: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [c#4,e4,a4]@2 [c#4,e4,a4] ~", // E A
AA: "[b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@4 [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~", // E
AB: "[b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
AC: "[c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [c#4,e4,a4]@2 [c#4,e4,a4] ~", // A
AD: "[b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // E A
AE: "[b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~", // E
AF: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~", // B E
AG: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // B
AH: "[c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [c#4,e4,a4]@2 [c#4,e4,a4] ~", // A E A
AI: "[b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~", // E
AJ: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [c#4,e4,a4]@2 [c#4,e4,a4]@2", // A E A
AK: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [c#4,e4,a4]@2 [c#4,e4,a4] ~", // A E A
AL: "[b3,e4,g#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // E B
AM: "[c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,g#4] ~", // A E
AN: "[c#4,e4,a4]@4 [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~", // A E
AO: "[b3,e4,g#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // E B
AP: "[c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~", // A E
AQ: "[c#4,e4,a4]@2 ~@2 [b3,e4,g#4]@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~ [b3,e4,g#4] ~", // A E
AR: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // B
})).s("gm_acoustic_guitar_nylon").gain(0.36).pan(0.3)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
~@37 A B C D@2 ~@3 E F G H@2 I J K L M N O@2 P Q R ~ S@2 T U V@2 W X Y Z AA AB AC@2 AD AE AF AG AH AI AJ AK AL AM AN
AO AP@2 AQ@2 AR@2 AS AT ~@2 AU AV ~ AW ~ AX AR@2 AS AT ~@2 AU AV ~ AW ~ AX ~@4
>`.pickRestart({
A: "~@10 b4@2 d5@2 a4 ~", B: "b4@11 ~@5", C: "[d#5,f#5,b5] ~ [c#5,e5,a5] ~ [b4,d#5,g#5] ~ [a4,c#5,f#5] ~",
D: "[[g#4,b4,e5]@5 ~ [f#4,b4,d#5]@23 ~@3]/2", E: "~@3 a5@2 a5@2 ~ a5@2 ~@4 g#5@2",
F: "~@2 e4 ~ g#4@2 b4@2 c#5 ~ f#5@6, ~@3 f#4@2 ~@11", G: "c#5 ~", H: "[~@3 [b5,e6]@4 ~]/2",
I: "~@10 [b4,e5] ~@3 d#5 e5", J: "d#5@7 ~", K: "[e5,a5]@6 [e5,g#5]@6 e5 ~ e5 f#5",
L: "e5@4 ~@2 e4 ~ g#4@2 b4@2 c#5@2 b4@2, ~@7 f#4@2 ~@7", M: "g#4@11 ~@5",
N: "b3@2 c#4@2 e4@2 f#4 e4 g#4@2 f#4 e4 f#4 e4 c#4 ~", O: "[~@4 b3 c#4 e4@5 ~ g#4@2 f#4@5 c#4 e4@2 e4@8 ~@2]/2",
P: "[e4,g#4]@11 ~ [g#4,b4]@3 ~", Q: "~@3 a5@4 ~, c#5@7 ~, ~@2 e5@5 ~", R: "~@4 f#5@2 e5 ~ b4 c#5 e5 ~ f#5@2 e5@2",
S: "~@4 [d#5,f#5,b5] ~@5 [d#5,f#5,b5]@5 ~", T: "~@4 [c#5,e5,a5]@7 ~ [c#5,e5,a5]@3 ~",
U: "[b4,e5,g#5]@5 ~ [c#5,f#5]@2", V: "~@10 [f#4,b4] ~ [f#4,b4] ~ [f#4,b4] ~", W: "~@10 [e4,b4] ~ [e4,b4] ~ [e4,b4] ~",
X: "~@2 b4 ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4]@2 ~@2", Y: "[b3,f#4] ~@3", Z: "~ g#4 b4 c#5@4 ~",
AA: "e5@3 e5@3 ~@2", AB: "[d#5,f#5,b5]@2 ~@2 [c#5,e5,a5]@3 ~ [b4,d#5,g#5]@3 ~ [a4,c#5,f#5]@2 ~@2",
AC: "[[g#4,b4,e5]@4 ~@2 [f#4,b4,d#5]@23 ~@3]/2", // E B
AD: "[b3,e4,g#4]@5 ~ g#4@4 ~@2 g#4@3 ~, ~@3 b3@4 ~, ~@6 e4@2 ~@2 e4@5 ~", AE: "[c#4,e4,a4]@13 ~@3",
AF: "[b3,e4,g#4]@5 ~ [e4,g#4]@6 e4@3 ~, ~@6 b3@9 ~", AG: "[g#5,b5]@2 ~ [g#5,b5] ~@2 [g#5,b5]@8 ~@2",
AH: "~@10 f#5 g#5 f#5@2 c#5 ~", AI: "c#5@2 e5 a5@4 ~", AJ: "~@6 f#4 g#4 b4@2 c#5 ~@3 e5 f#5", AK: "e5@7 ~@9",
AL: "~@12 d#5 e5@3", AM: "d#5@8 f#4 g#4 b4@2 c#5@2 g#5@2", AN: "f#5@4 e5@2 e5@5 ~ g#4@2 b4 ~", AO: "e5@3 ~",
AP: "[~@4 [b4,d#5]@2 [b4,e5] [b4,d#5]@6 ~@3]/2", AQ: "[~@4 g#4@2 b4 g#4@6 ~@3]/2",
AR: "[~@8 [b4,d#5]@4 e5@2 d#5@13 ~@5, ~@12 b4@15 ~@5]/2", AS: "~@10 f#4 g#4 b4@2 c#5@2", AT: "e5@5 ~@3",
AU: "b4 c#5 e5@9 ~@5", AV: "g#5@15 ~", AW: "~@5 [b4,e5]@3", AX: "~@10 e4@2 f#4 g#4 b4 ~",
})).s("gm_electric_guitar_clean").gain(0.54).pan(0.3)
// drums · kick
const kick = s("bd").struct("<~@32 A@7 B A C A@31 B A C A@44>".pickRestart({
A: "x ~@2 x ~@4", B: "x!4", C: "~@3 x",
})).gain(0.6)
// drums · rim
const rim = s("rim").struct("<~@42 [~ x ~ x]!24 ~@10 [~ x ~ x]!15 [~ x ~@2] ~@28>").gain(0.6)
// drums · snare
const snare = s("sd").struct("<~@31 A@8 ~@26 B A@7 ~@19 C@7 D C@3 E C@3 F C@12>".pickRestart({
A: "~@3 x", B: "~@5 x ~@2", C: "~ x ~ x", D: "~@4 x!2 ~@2 x ~@7", E: "~@4 x ~@7 x ~ x!2", F: "~ x ~@2",
})).gain(0.6)
// drums · clap
const clap = s("cp").struct("<~@100 [~ x ~ x]!20>").gain(0.6)
// drums · hihat
const hihat = s("hh").struct(`<
~@11 A ~@20 B C D C B C D ~@3 D@8 B D@3 B D@7 B D@3 B C D C B C D ~@3 D@8 B D@3 B D@3 B D@3 B D@3 B D@3 B D@3 B D@3 B
// … 75 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.