0:00/0:00
// Fantasy — Earth, Wind & Fire
// 92 bpm, 4/4, key B minor. 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · "Ac Piano"
const piano = note(`<
A B C D E F G ~@6 H I H J H K L M N O P Q R S T@2 F G U V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL AM AN AO AP
AQ AR AS F AT AU@2 AV AW AX AY AZ BA BB BC BD@2 BE BF BG BH BI BJ BK BL BM BN@2 BO BP BQ@2 BR BS BT BU@3 BV BW BX BY@3
BZ CA@4 CB CC CD@2 ~@2
>`.pickRestart({
A: "[e5,g5,e6,g6]@2 [b4,b5] [e5,g5,e6,g6] [d5,f#5,d6,f#6]@2 [c#5,e5,c#6,e6] [b4,d5,b5,d6]", // Em B Em D C#m Bm
B: "[c5,e5,c6,e6]@2 [g4,g5] [c5,e5,c6,e6] [b4,d5,b5,d6]@2 [a4,c5,a5,c6] [g4,b4,g5,b5]", // C G C Bm Am G
C: "[e4,c#5,e5,c#6]@2 [b4,b5]@2 [f#4,d#5,f#5,d#6]@2 [c#5,c#6] [b4,b5]", D: "[a4,a5]@2 [g#4,g#5] [f#4,f#5], [e5,e6]",
E: "[g#4,e5,g#5,e6]@11 ~@5", // C#m
F: "~@5 [a4,b4,d5,e5] [g5,a5,b5,d6] [e6,g6,a6,b6] [d7,e7,g7,a7] [e7,g7,a7,b7] [d7,e7,g7,a7] [b6,d7,e7,g7] [a6,b6,d7,e7] [g6,a6,b6,d7]!2 [e6,g6,a6,b6]", // Asus4 G Em Dsus4 Em Dsus4 Em7 Asus4 …
G: "[d6,e6,g6,a6] [b5,d6,e6,g6] [a5,b5,d6,e6]!2 [g5,a5,b5,d6] g5 ~@10", H: "[a2,g3,c4,e4] [b2,a3,d4,f#4]",
I: "[c3,b3,d4,g4] [b2,a3,d4,f#4]", J: "e2 ~@2 f#3@3 d4@2 b3@7 ~, [a3,d4,e4]@5 ~ e4@9 ~, ~@6 a3 ~ g#3@5 ~@3",
K: "[c3,b3,e4,g4] [b2,a3,d4,f#4]", L: "[c3,b3,e4,g4] [d3,a3,d4,f#4,a4]",
M: "[e4,a4]@2 ~ [e4,a4]@2 ~ a4@2 ~ d#4@2 b3@2 d#4 b2@2, b2@8 b2@5 ~@3, b3 ~ b3@2 ~ b3@3 ~@8, ~@6 e4 ~@9", // A5
N: "~@5 [b3,e4,g4] ~ [b3,g4] ~ [c#4,f#4,a4] ~ [c#4,f#4,a4]@3 c#4 f#3, e3@7 ~ f#3@6 ~@2", // Em F#m
O: "b4@2 a4 b4@6 ~ g2 g3 g2 [f#2,f#3,a3]@2 f#3, [d4,g4]@10 ~@3 c#4 ~@2, g3@3 ~@5", // F#m G5
P: "~@5 [e3,g3,b3] ~ [e3,g3,b3] ~@3 [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 f#2, e2@7 ~ f#2@6 ~@2", // Em F#m
Q: "[g3,b3,d4]@7 a3 b3 ~ g3@2 [b3,d4] f#2@2 [a3,c#4], g2@3 ~, ~@9 d4@2 ~@2 a3 ~@2", // G Bm A
R: "~@3 b3 ~ [g3,b3,d4] ~@2 f#2@6 a3 f#2, e2@7 a3@6 ~@3, ~@2 g3@2 ~@3 [c#4,e4]@8 ~", // G C#m
S: "~@3 g3@5 g2@2 g3@2 g2 a2 ~@2, [b3,d4]@3 ~", // Bm
T: "[[b2,f#3]@3 ~ b2@2 [f#3,e4,b4]@2 ~ [f#3,e4,b4]@2 b2 f#3 b2 f#3 ~ f#3@2 b2 f#3 b2 f#3 ~ [f#3,b4]!4 ~ [f#3,b4]!2 ~@2, e4@5 ~@7 [e4,b4]@3 ~ [d#4,b4]@6 ~@10, ~@3 f#3@2 ~@3 b2@2 ~@5 b2@2 ~@5 b2@5 b2@2 ~@3]/2", // B5 Esus2 B5 E5 G#m
U: "~@15 e3",
V: "[~ d3 b2 a2 b2 ~ b2 a2 b2 ~ b2 a2 b2 d3 e3 ~ g3@3 ~@2 a2 g3 ~ [d4,f#4]@2 a3 [d4,f#4]@3 a3 b2, ~@15 a2@5 ~@3 b2@7 ~@2, ~@16 [c4,e4]@7 ~ a3 ~@2 a3@2 ~@3]/2", // D C
W: "~@2 c3 ~ c3 [b3,e4,g4]@2 c3 [a3,d4,f#4]@2 b2 a3@2 b2 a3@2, [b3,e4,g4]@4 ~@7 [d4,f#4]@4 ~", // Em D Em D
X: "~@2 a2 ~ a2 [g3,c4,e4]@2 b2 ~ b2 ~ b2 ~ b2 ~ b2, [g3,c4,e4]@5 ~@3 [a3,d4,f#4]@7 ~", // C D
Y: "~@3 f#3@3 a3@2 g#3@8, [a3,b3,d4,e4]@5 ~ [b3,d4,e4]@9 ~", // Asus4 E7
Z: "g3@2 a2 g3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,d4,f#4] ~@2 [a3,d4,f#4]@2 b2@2, [c4,e4]@4 a2@3 ~ b2@6 ~@2", // C D C
AA: "[c3,e4]@3 ~ c3 b3 c3 g4@2 [a3,d4,f#4]@2 [a3,d4,f#4]@3 a3 ~, [b3,g4]@2 ~ [e4,g4]@4 ~@9, ~@3 b3@2 ~@11", // C D Em
AB: "[g3,c4]@5 ~ g3 ~ a3@2 ~@2 d3 a3 b2 ~, e4@7 ~ [d4,f#4]@6 ~@2, ~@5 c4@2 ~@4 a3@2 ~@3", // C5 D
AC: "[b3,e4]@2 b2 [b3,e4,a4]@2 ~ [b3,e4,a4] ~ [d#4,a4]@2 ~ [d#4,a4]@4 ~, ~@8 b3 ~ b3@5 ~", // E5 Esus4 D#dim
AD: "[e3,b3,d4,g4]@5 [b3,d4,g4]@3 [c#4,e4,a4]@2 ~ c#4@2 f#3 c#4@2, ~@5 f#3 ~@2, ~@11 [e4,a4]@5", // Em7 G A A5
AE: "~@2 [d4,f#4,b4]@2 ~ [d4,f#4,b4]@2 ~ [d4,f#4,b4]!2 g3 [d4,f#4,b4] g3 [c#4,e4,a4]@2 c#4, g3@5 ~@2 g3@2 ~@7", // Bm A
AF: "e3@2 [b3,d4,g4]@2 e3 [b3,d4,g4] e3 f#3 c#4 ~@4 f#3 c#4 f#3, ~@8 [e4,a4]@2 c#4@3 ~@3, ~@9 f#3@2 [e4,a4]@4 ~", // G A5
AG: "[d4,f#4,b4]@2 g3 d4@2 g3 d4@2 g3 ~ g3@3 [c#4,e4,a4]@3, ~@3 [f#4,b4]@8 ~@5, ~@9 d4@2 ~@5", // Bm A B5
AH: "e3@2 [b3,d4,g4]@2 e3 [b3,d4] e3 f#3@2 f#3 [c#4,e4,a4]@2 f#3 ~ f#3@2, ~@5 g4@2 ~@6 [c#4,e4,a4]@3", // G Bm A
AI: "g3@2 [d4,f#4,b4]@2 g3 [d4,f#4,b4]@2 g3 d4 g3 ~ [f#4,b4] g3 [c#4,e4,a4]@3, ~@4 [f#4,b4] d4 ~@2", // Bm B5 A B5
AJ: "[[e4,a4]@2 b3@2 [e4,a4]@2 b3@2 [b3,e4,a4]@4 [e4,a4]@2 b3 ~ [b3,e4] ~ [b3,d#4,a4]@2 b2 b3 b2 b3 ~ [b3,b4]@2 b2 b3 b2 b3!2, b3 ~@3 b3 ~@7 b3 ~@2 b2@4 ~@2 [d#4,a4]@3 b2@2 ~@2 b4@2 ~@2]/2", // A5 Esus4 A5 E5 B7 B D#dim
AK: "[b3,d4,e4]@2 ~@5 [b3,d4,e4] [a2,g3]@2 g3 a2 g3 a2 ~ a2, [e3,g3] ~@5 g3@2 [c4,e4]@5 ~@3", // E7 A7 Em C
AL: "[d3,b3,c4,e4,g4]@3 d3@4 ~ g2@2 ~ g2 ~@2 a3 ~, ~@7 [d4,f#4]@8 ~, ~@7 a3@6 g2@2 ~", // Cmaj7 D
AM: "b2@3 b2 ~ b2@2 ~ c3@2 ~ c3 ~ c3 ~ c3, [a3,d4,f#4]@6 ~ [b3,e4,g4]@7 ~@2", // D Em
AN: "[a2,g3,c4,e4]@7 ~ [g3,c#4,e4]@6 ~ e4", AO: "~ [f#3,b3,d#4]@6 ~, b2@7 ~",
AP: "[b5,d6]@2 f#5 [b5,d6] [a5,c#6]@2 [g#5,b5] [f#5,a5]", AQ: "[g5,b5]@2 d5 [g5,b5] [f#5,a5]@2 [e5,g5] [d5,f#5]",
AR: "[b4,g#5]@2 f#5@2 [c#5,a#5]@2 g#5 f#5", AS: "e5@8 d#5@4 c#5@3 ~, b5@15 ~",
AT: "[d6,e6,g6,a6] [b5,d6,e6,g6] [a5,b5,d6,e6]!2 [g5,a5,b5,d6] g5 ~@7 [a2,a3,d4,e4]@3", // Dsus4 Em7 Asus4 G Asus4
AU: "[[b2,b3,e4,a4]@6 [b3,e4,a4]@2 ~ [b3,e4,a4]@2 b2 ~ b2 b3 ~ b3@2 b2 b3 ~ [b3,b4]!9 [b3,b4]@2, ~@8 b2@2 ~@2 [b3,e4,a4]@3 b2@3 ~@2 b2@11 ~, ~@4 [d#4,a4] ~@3]/2", // Esus4 B Esus4 D#dim
AV: "[e3,b3]@3 b3 e3 ~ e3 ~ [a2,g3]@2 ~ a2@2 g3@2 a2, [d4,g4]@5 ~@3 [c4,e4]@7 ~, ~@11 g3 ~ a2 ~@2", // E5 A7 G5 C
AW: "d3@2 ~@2 [b3,e4,g4]@2 ~@2 g2@2 ~ g2 ~ g2 a3 ~, ~@3 d3@4 [d4,f#4]@8 ~, ~@7 a3@6 ~@3", // Em D
AX: "b2@3 b2 ~ b2 ~@2 c3@2 ~ c3@2 ~ b2 ~, [a3,d4,f#4]@6 ~ [g3,b3,e4]@8 ~", // D Em
AY: "a2@2 ~ a2 ~ a2@2 ~@3 a#2@2 a#2 ~ g3 e4, [g3,c4,e4]@7 ~ [g3,c#4,e4]@6 ~@2", // C C#dim
AZ: "~@2 [f#3,b3,d#4]@4 b2@2 [g3,e4]@2 b2@2 [a3,f#4]@2 b2 ~, b2@5 ~@11", // B C D
BA: "~@2 e3@4 ~ e3 ~@2 a2 ~ a2 ~ a2 ~, [d4,g4]@7 ~@9, b3@5 ~@3 [g3,c4,e4]@7 ~", // G5 C
BB: "[g3,c4,e4]@3 ~ [b3,c4,e4,g4]@2 ~@2 g2@5 ~ g2 ~, d3@7 [a3,d4,f#4]@8 ~", // C Cmaj7 D
BC: "[a3,d4]@3 ~ [a3,d4,f#4]@2 ~@2 c3@5 ~ b2 ~, b2@7 [g3,b3,e4]@7 ~@2", // D5 D Em
BD: "[[a2,g3,c4,e4]@7 ~ [a#2,g3,c#4,e4]@7 ~ b2@4 b2@3 ~ [f#3,b3,d#4]@6 a2 ~, ~@15 [f#3,b3,d#4]@8 ~ a2 ~@7]/2", // Am7 A#dim B
BE: "[g2,g3,b3,e4]@7 ~ [f#2,a3,e4]@4 [b2,a3,f#4]@4", BF: "[b3,e4,g4]@6 e3 ~@3 a2@3 ~ a2 ~, ~@8 [c4,e4,g4]@7 ~",
BG: "[d3,c4,e4,g4]@7 ~ g2@7 ~, ~@7 [b3,d4,f#4]@8 ~", BH: "[b2,a3,d4]@7 ~ c3@6 ~@2, ~@7 [g3,b3,e4]@7 ~@2",
BI: "[a2,g3,c4,e4]@7 ~ [a#2,g3,c#4,e4]@6 ~ e4", BJ: "~ [f#3,b3,d#4]@2 ~ [g3,e4]@2 [a3,f#4]@2, b2@3 ~",
BK: "~@4 e3 ~ e3 ~@3 a2@3 ~ a2 ~, [b3,d4,g4]@7 ~ [g3,c4,e4]@7 ~", // G C
BL: "[g3,c4,e4]@3 ~ [b3,e4,g4]@2 ~@2 g2@7 ~, d3@7 [a3,d4,f#4]@8 ~", // C Em D
BM: "[a3,d4]@3 ~ [a3,d4,f#4]@2 ~@2 c3@8, b2@7 [g3,b3,e4]@8 ~", // D5 D Em
BN: "[[a2,g3,c4,e4]@8 [a#2,g3,c#4,e4]@7 ~@5 d#4@4 f#2@8, ~@15 b3@9 ~@8, ~@15 e4@5 ~@12, ~@2 [b2,f#3] ~]/2", // Am7 A#dim B5
BO: "[e2,g3]@7 ~ [d2,a3]@7 ~", BP: "[d2,a#3]@3 ~ [d2,c4]@3 ~ [f3,a#3,d4]@2 ~ [f3,a#3,d4]@2 ~@2 g2, ~@4 g2@3 ~",
BQ: "[[c2,g3]@3 ~ c2@2 c2 ~ [g3,a#3,d#4]@3 ~ [a#3,d#4,g4]@2 ~@2 a#2@2 ~ a#2@3 a3@2 [d4,f4]@3 ~ [c4,f4,a4]@3 ~, [a#3,d#4]@7 ~@8 [a3,d4,f4]@8 ~ d3@7 ~, ~@3 g3@4 ~ f2@6 ~@10 a3@4 ~@4]/2", // C5 D# Dm F D#5 Dm
BR: "~ [a#3,d4,g4] ~ a#3 ~@2 d3 ~ [c3,a#3,d#4,g4]@7 ~, d#3@5 a#3@2 ~@9, ~@3 [d4,g4]@4 ~@9", // Gm Cm7 G5
BS: "[c#3,a#3,e4,g4]@7 ~ [d3,a3,d4,f#4]@6 d3 ~", // C#dim D
BT: "[a#3,g4]@2 d3@2 [c4,a4]@2 d3 ~ g3@3 ~ g3@2 ~@2, ~@4 [d4,f4,a#4]@3 ~", // D# F A#
BU: "[[g3,a#3,d#4]@6 ~@2 [f2,a#3,d#4,g4]@3 f2 ~ f2@2 ~ a#2@2 ~ a#2@2 ~ c3 ~ [d3,a3,d4,f4]@4 [a3,c4,f4]@2 d3 ~ d#3@2 ~ d#3@2 ~ d3 ~ [c3,a#3,d#4,g4]@5 a#3 c3 ~, c3@4 ~@8 [a#3,d#4,g4]@2 ~ [d4,f4]@8 ~@8 [d4,g4]@8 ~@9, ~@15 a3@5 ~ a3@2 ~@8 a#3@5 ~ a#3@2 ~@9]/3", // D# Dm F Cm7 D# Dm G5
BV: "c#3@3 ~ c#3@3 ~ d3@2 ~ d3 ~ d3@2 ~, [a#3,e4,g4]@7 [d4,f#4]@8 ~, ~@7 a3@2 ~ a3@5 ~", // Edim D
BW: "[a3,d4,f#4]@2 ~ d4 ~ [d4,d5] ~ d4 ~ d4 ~ [d4,g4,a#4,d5]!3 ~ a#2, c3@3 ~ c3@3 d5@3 ~@6, ~@8 a#2@5 ~@3", // D Gm
BX: "[a2,g3,c4,d#4]@4 [d3,f#3,c4,d4]@3 ~ [g2,f3]@3 f3 g2 ~ g2 c3, ~@8 [a#3,d4]@7 ~, ~@13 f3@2 ~", // Am7b5 D7 G7 A#
BY: "[~ c3 ~ c3 ~ c3 [g3,a#3] c3 f2@2 [a#3,d#4,g4]@2 ~ [a#3,d#4,g4] ~@2 a#2@2 ~@2 a3@2 c3 a3 [f4,a4]@4 c4 d3@2 ~ d#3@2 ~ d#3@2 ~ d3 ~ [c3,d#4,g4]@6 a#3 c3, d#4@7 ~@8 [d4,f4]@8 ~@8 [d4,g4]@8 ~@9, [g3,a#3]@5 ~@7 f2@3 a3@2 ~ a3@2 ~@11 a#3@2 ~ a#3@2 ~ a#3@2 ~ a#3@5 ~@3, ~@19 a#2@2 ~@3 [d3,c4]@3 ~@21]/3", // Gm D# F Cm Dm G5 Gm D7
BZ: "[a#3,d#4,g4] ~ [a#3,e4,g4]@2 ~ [a#3,e4,g4]@2 c#3 d3@4 ~ d3 ~@2, c#3@5 ~@3 [a3,d4,f#4]@7 ~", // D# Edim D
CA: "[[a#3,g4]@2 d3@2 [c4,a4]@2 d3 ~ [g3,d4,f4,a#4]@3 g3 ~ [g2,a2] ~@2 c3@2 ~ c3 ~ c3 g3 c3 [g3,a#3,d#4]@2 f2@2 [a#3,d#4,g4]@2 f2 ~ a#2@2 ~ a#2@2 ~ c3 ~ [a3,d4,f4]@2 d3@2 [c4,f4,a4]@2 d3 ~ d#3@2 ~ d#3@2 ~ d3 ~ a#3@4 c3@2 a#3 ~, ~@12 [f3,a#3,d4]@2 ~ [a#3,d#4]@8 ~@8 [d4,f4]@8 ~@8 [d4,g4]@8 ~ [d#4,g4]@7 ~, ~@15 g3@2 ~ g3@3 ~@3 f2 ~@6 a3@5 ~ a3@2 ~ d3 ~@6 a#3@3 a#3@2 ~ a#3@2 ~ c3@3 ~@5]/4", // D# F Gm7 Gsus2 D# Dm F A# …
CB: "c#3@3 ~ c#3@3 [a3,d4,g4] d3@2 ~@2 d3 ~ d3 ~, [a#3,e4,g4]@3 ~@2 [a3,d4,f#4]@3", // Dsus4 Edim D
CC: "c3@2 [a3,d4,f#4]@2 c3 ~ c3 ~ a#2@2 [a#3,d4,g4]@2 a#2 d4 a#2 ~, ~@5 [a3,d4,f#4]@4 ~@4 [a#3,g4]@2 ~", // D Gm D D#
CD: "[[a2,g3,c4,d#4]@7 ~ [d2,f#3,c4,d4]@10 ~ [g2,g4,a#4,d5,g5]@3 ~@10]/2", // Am7b5 D7 Gm
})).s("gm_piano").gain(0.31)
// bass · electric bass finger · "El Bass"
const bass = note(`<
A B C D E F G F G H I H I J K L M N O P Q R S T U V W X Y F G F I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF
AG AH F AI X Y Z AA AB AC AJ Z AA AB AC AK AL Z AA AB AC AJ Z AA AB AC AM AN AO AP AQ AR AS AT AP AQ AR AU AV AW AP AQ
AR AS AT AP AQ AR AU AV AX@3 ~
>`.pickRestart({
A: "e2 b1", B: "c2 g1", C: "a1 b1", D: "e1", E: "g3 g#3@3 e1@11 e2", F: "~ d2 b1 a1 b1 ~ b1 a1 b1 d2 ~ a1 b1 d2 ~ e2",
G: "~ d2 b1 a1 b1 ~ b1 a1 b1 d2 ~ a1 b1 d2 b1 e2", H: "~ d2 b1 a1 b1 ~@2 a1 b1 d2 ~ a1 b1 d2 b1 e2",
I: "~ d2 b1 a1 b1 ~@2 a1 b1 d2 ~ a1 b1 d2 ~ e2", J: "a1@2 ~ e1 e1@2 ~ b1!2 b2 ~ b1 b1@3 c2",
K: "c2 c3 ~ c2 c2@3 b1!2 b2 ~ b1 b1@3 g2", L: "a1 a2 ~ a1 a1@3 b1!2 b2 ~ b1 b1@3 b2",
M: "e2@2 ~ e3 e2@2 ~ e3 e2@2 ~ e3 e2@3 a2", N: "a1@2 ~ e1 e1@2 ~ b1!2 b2 ~ b2 b1@2 ~ b1",
O: "c2@2 ~ c3 c2@2 ~ c2 b1 b2 ~ b2 b1@2 ~ b1", P: "c2@2 ~ c3 c2@2 ~ c2 d2 d3 ~ d3 d2@3 c2",
Q: "b1@2 ~ b2 b1@3 b2 b1@3 b2 b1@2 ~ b2", R: "e2@2 ~ b2 b2@2 ~ f#2 f#2@2 ~ c#3 c#3@2 ~ g2",
S: "g2@2 ~ d3 d3@2 ~ g2 g2@2 ~ d3!2 f#2@2 ~", T: "e2@3 b2 b2@2 ~ f#2 f#2@2 ~ c#3 c#3@2 ~ g2",
U: "g2@2 ~ d3 d3@2 ~ a2 b2 g2 ~ a2 b2 f#2@2 ~", V: "e2@3 b2 b2@3 f#2 f#2@2 ~ c#3 c#3@2 ~ g2",
W: "g2@2 ~ d3 d3@2 ~ g2 g2@3 d2 g2 a2@2 ~", X: "b1@3 b2 b2@2 ~ b1 b1@3 b2 b2@2 ~ b1",
Y: "b1@3 b2 b2@2 ~ b1 b1@2 ~ b2 b2@2 ~ e2", Z: "e2@2 ~ e2 e2@3 ~ a1@2 ~@2 a1@3 ~",
AA: "d2@2 ~ d2 d2@3 ~ g1@2 ~ g1 g1@3 ~", AB: "b1@2 ~ b1 b1@3 ~ c2@2 ~ c2 c2@3 b1",
AC: "a1@2 ~ a1 a1@3 ~ a#1@2 ~ a#1 a#1@2 ~ b1", AD: "~ b1 b1@6 b0@7 ~", AE: "~ f#1", AF: "g1 d1", AG: "e1 f#1",
AH: "b0@15 e2", AI: "~ d2 b1 a1 b1 ~ b1 a1 b1 d2 ~ a1 b1 a1@2 ~", AJ: "b1@2 ~ b1 b1@2 ~ b1 b1@2 ~ b1 b1@3 ~",
AK: "b1@2 ~ b1 b1@3 ~ a1@2 ~ a1 a1@3 ~", AL: "g1@2 ~ g1 g1@3 ~ f#1@4 b1@4", AM: "b1@2 ~ b1 b1@4 f#2@2 ~ f#2 f#2@4",
AN: "e2@2 ~ e2 e2@3 ~ d2@3 ~ d2@3 ~", AO: "d2@3 ~ d2@3 ~ g2@2 ~ g2 g2@3 ~", AP: "c2@2 ~@2 c2@3 ~ f2@2 ~ f2 f2@3 ~",
AQ: "a#1@2 ~ a#1 a#1@3 ~ d2@2 ~ d2 d2@3 ~", AR: "d#2@2 ~ d#2 d#2@3 d2 c2@2 ~ c2 c2@3 ~",
AS: "c#2@2 ~ c#2 c#2@2 ~ d2 d2@2 ~ d2 d2@2 ~ d2", AT: "d2@2 ~ d2 d2@3 ~ g2@2 ~ g2 g2@3 ~",
AU: "c#2@2 ~ c#2 c#2@2 ~ d2 d2@2 ~ d2 d2@3 ~", AV: "c2@2 ~ c2 c2@3 ~ a#1@2 ~ a#1 a#1@3 ~",
AW: "a1@4 d2@4 g2@2 ~ g2 g2@3 ~", AX: "[a1@8 d2@11 d#2@22 ~@7]/3",
})).s("gm_electric_bass_finger").gain(0.45)
// chords · epiano2 · "Rhodes"
const epiano2 = note(`<
A B C D@2 ~@8 E F G H I J K L M N M N M O P Q ~@4 E R S T I J U V M W X W X Y P Q Z AA AB AC AD ~@6 P Q AE AA AF AC AG
AH AA AF AC AI AJ AE AA AF AC AG Z AA AF AC AK AL AM AN@3 AO AM AN@3 AP AQ AR AN@3 AP AS AN@3 AP AT AU@3 ~
>`.pickRestart({
A: "[e2,g3,b3,e4] [b2,f#3,a3,d4]", B: "[c3,g3,e4] [g2,a3,b3,d4]", C: "[a2,e3,c#4] [b2,f#3,d#4]",
D: "[a3@2 g#3 f#3 ~ e2@2 ~, e2@5 ~@3, e4@4 [g#3,b3,e4]@3 ~]/2", // E
E: "a2 e4 ~ [c4,e4,g4]@5 b2 [a3,d4,f#4] ~ [a3,d4,f#4]@5", // C D
F: "c3 [b3,d4,e4,g4] ~ [b3,e4,g4]@5 ~ [a3,c#4,d4,f#4] ~ [c#4,d4,f#4]@5", // Em7 Em Dmaj7
G: "a2 [g3,c4,e4] ~ [c4,e4,g4]@5 b2 [d4,f#4] ~ [a3,d4,f#4]@5, ~@3 g3@3 ~@10", // C D
H: "e3 [b3,d4,e4] ~ [a3,b3,d4,e4]@6 ~@2 [b3,d4,e4]@4 ~, ~@11 g#3@2 ~@3", // E7 Asus4 E7
I: "a2 [c4,e4,g4] ~ [c4,e4]@5 b2 [d4,f#4] ~ [a3,d4,f#4]@3 e4 ~", // C D
J: "c3 [b3,e4,g4] ~ [b3,e4,g4]@5 b2 [a3,d4,f#4] ~ [d4,f#4]@2 ~ e4 ~", // Em D
K: "~ [g3,c4,e4] ~ g3@3 g3 ~@2 [a3,d4,f#4] ~ [a3,d4,f#4]@4 ~, ~@3 [c4,e4]@5 ~@8", // C D C
L: "[e4,f#4,b4]@7 ~ [b3,d#4,f#4,b4]@7 ~, b3@5 ~@11", M: "[b3,d4,g4] [c#4,e4,a4]", N: "[d4,g4,b4]@13 [c#4,e4,a4]@3",
O: "[d4,g4,b4]@13 [d4,e4,a4]@3", P: "[e4,f#4,b4]", Q: "[d#4,f#4,b4]@15 ~",
R: "c3 [b3,d4,e4,g4] ~ [b3,e4,g4]@5 ~ [a3,d4,f#4] ~ [d4,f#4]@5", // Em7 Em D
S: "a2 [g3,c4,d4,e4] ~ [c4,e4,g4]@5 b2 [d4,f#4] ~ [a3,d4,f#4]@5, ~@3 g3@3 ~@10", // C D
T: "e3 [b3,e4] ~ [a3,b3,e4]@6 ~@2 [b3,e4]@4 ~, ~@11 g#3@2 ~@3", // E5 Asus2 E5
U: "~ [g3,c4,e4] ~ g3@3 g3 ~@2 [a3,d4,f#4,a4] ~ [a3,d4,f#4,a4]@4 ~, ~@3 [c4,e4,g4]@5 ~@8", // C D C
V: "[e4,b4]@7 ~ [b3,d#4,b4]@7 ~, b3@5 ~@11", W: "[d4,g4,b4]@13 [c#4,f#4,a4]@3", X: "[b3,d4,g4] [c#4,f#4,a4]",
Y: "[d4,g4,b4]@13 [e4,f#4,a4]@3", Z: "[g3,b3,d4,e4] [g3,c4,e4]", AA: "[g3,c4,e4]@7 [f#3,b3,d4]@9",
AB: "[a3,d4,f#4]@7 [b3,d4,e4,g4]@9", AC: "[g3,c4,e4]@8 [g3,c#4,e4]@7 [f#3,c#4,e4]", AD: "~@2 [f#3,b3,d#4]@13 ~",
AE: "[g3,b3,e4] [g3,c4,e4]", AF: "[a3,d4,f#4]@7 [b3,e4,g4]@9", AG: "~ [f#3,d#4]@3 [g3,e4]@2 [a3,f#4]@2, ~@2 b3@13 ~",
AH: "[b3,d4,g4] [g3,c4,e4]", AI: "~ [f#3,b3,d#4]@3 [a3,b3,d#4,f#4]@4", AJ: "[g3,b3,e4]@2 [a3,e4] [f#3,c4,d#4]",
AK: "[f#3,b3,d#4] [a3,b3,d#4,f#4]", AL: "[a#3,c#4,e4,f#4] [a3,c4,d4,f#4]", AM: "[a#3,g4] [c4,a4] [a#3,d4,g4]@2",
AN: "[[a#3,d#4,g4]@8 [a#3,d#4,g4]@7 [a3,d4,f4]@9 [c4,f4,a4]@7 [d4,g4,a#4]@9 [a#3,d#4,g4]@8]/3", // D# Dm F Gm D#
AO: "[a#3,e4,g4]@7 [a3,e4,g4] ~@2 [a3,d4,f#4]@6", AP: "[a#3,e4,g4]@7 [a3,e4,g4] [a3,d4,f#4]@8",
AQ: "[c4,d4,f#4,a4] [a#3,d4,g4]", AR: "[c4,g4] [a3,d#4,f#4] [a#3,d4,g4]@2", AS: "[a#3,g4] [c4,a4] [a#3,d4,f4,g4]@2",
AT: "[c4,d4,a4] [a#3,d4,g4]", AU: "[[g3,a3,c4,d#4]@8 [f#3,a3,c4,d4]@11 [f3,g3,a#3]@28 ~]/3",
})).s("gm_epiano2").gain(0.29)
// chords · epiano2 · "Rhodes" · soft notes
const epiano2_soft = note("<~@13 A B C D E F ~ G ~@12 A B C H E F I G ~@31 J ~@22 K ~@14>".pickRestart({
A: "~ [c4,g4] ~@14", B: "~@8 b2 ~@2 a3@5", C: "~@6 g3@2 ~ a3 ~@6", D: "~ a3 ~@4 e3 ~ e3 [a3,b3,d4,e4] ~@3 e3 g#3 ~",
E: "~@3 g4@5 ~ a3 ~@3 b2 ~@2", F: "~@11 a3@2 b2 d4 ~", G: "~@6 b3 ~@9", H: "~ a3 ~@4 e3 ~ e3 [a3,b3,e4] ~@3 e3 g#3 ~",
I: "~ g4 ~@14", J: "~@2 c4 ~", K: "d#4 ~@3",
})).s("gm_epiano2").gain(0.16)
// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
A B C D@2 ~@4 E F@2 G ~@4 H I J K L M N M L O P@2 ~@3 Q R S R T U V W X L M L M L O Y@2 Z AA AB AC AD AE AF AG AH AI
AJ P@2 AK AL AM AN AO AK AL AM AN AP@2 AK AL AM AN AO AK AL AM AN AQ AR AS AT AU AV AW AS AT AU AV AW AX AY AT AU AV
AW AS AT AU AV AW AX AZ BA@2 ~
>`.pickRestart({
A: "[e2,b2,g3,e4] [b2,a3,d4]", B: "[c3,g3,e4]@2 a3 g3, b3, ~ [g2,d4]",
C: "~ a3 ~ b3, b3@3 ~, [a2,c#4,e4] [b2,f#3,c#4,f#4]", // A Bsus2
D: "[[b2,a3]@8 g#3@4 f#3@4 g#3@12 [e5,f#5] [g5,a5] [b5,c#6] [d6,e6], e2@31 ~, e4@7 ~]/2", // B7 Esus2 Gsus2 Bsus2 Dsus2
E: "~@6 [g4,g5] [a4,a5] [f#4,f#5] ~ [g4,g5] [a4,a5] [f#4,f#5] [g4,g5] [a4,a5] ~", // G A F# G A F# G A
F: "[b4,b5] [g4,g5] [a4,a5] ~ [f#4,f#5] ~ [g4,g5] [a4,a5] [f#4,f#5] ~ [g4,g5] [a4,a5] [f#4,f#5] [g4,g5] [a4,a5] ~", // B G A F# G A F# G …
G: "[b4,b5] [g4,g5] [a4,a5] ~ [f#4,f#5] ~ [g4,g5] [a4,a5] [f#4,f#5] ~ [g4,g5] [a4,a5] f#5 f#4 [e4,e5] ~", // B G A F# G A F# G …
H: "[e3,e5] [f#3,f#5]", I: "[g3,g5] [f#3,f#5]", J: "[g3,g5] [a3,a5]", K: "[b3,b5]",
L: "[e2,b2,b4,d6] [f#2,c#3,a4,c#6]", M: "[g2,d3,g4,b5]@13 [f#2,e3,a4,c#6]@3",
N: "[e2,b2,b4,d6]@7 d3 [f#2,c#3,a4,c#6]@8", O: "[g2,d3,g4,b5]@13 [a2,e3,a4,a5]@3",
P: "[~@8 f#6@8 b6@15 ~, [b2,f#3,b4,b5]@31 ~]/2", // B5
Q: "~@4 [f#4,f#5] ~ [g4,g5] [a4,a5] [f#4,f#5] ~ [g4,g5] [a4,a5] f#5 f#4 [e4,e5] [d4,d5]", // F# G A F# G A E D
R: "[a2,g3,c4,e4] [b2,a3,d4,f#4]", S: "[c3,b3,e4,g4] [b2,a3,d4,f#4]", T: "[a3,d4] g#3, [e2,b3,e4]",
U: "[e3,g3,c4,e5] [f#3,a3,d4,f#5]", V: "[g3,b3,e4,g5] [f#3,a3,d4,f#5]",
W: "[g3,g5]@3 [e3,e5]@3 [c3,c5]@2 a5@3 [f#3,f#5]@3 [d3,d5]@2, [b3,e4] [a3,d4]", // G E C F# D E5 D5
X: "~ [b3,d#4,b5], [b3,e4,b5] ~, ~@4 a3@11 ~", Y: "[~@8 f#6@8 b6@14 e3 f#3, [b4,b5]@31 ~, [b2,f#3]@7 ~]/2",
Z: "g3 ~@5 e3 f#3 g3@2 ~@4 e3 f#3", AA: "g3@3 ~ g3@3 g3 ~ a3 f#3@2 ~@2 d3 e3",
AB: "f#3@2 ~@2 f#3@3 f#3 ~ g3 e3 ~@3 c3 d3", AC: "e3@2 ~@4 c3 d3 e3@4 e3@2 ~ e3", AD: "~ f#3 d#3@6 ~@8",
AE: "[b1,f#2,d3,b3] [f#2,e3,a3]", AF: "[g2,d3,b3]@2 e3 d3, f#3, ~ [d2,a3]",
AG: "~ e3 ~ f#3, f#3@3 ~, [e2,g#3,b3] [f#2,c#3,g#3,c#4]", AH: "[f#2,e3]@8 d#3@4 c#3@3 [d6,e6], [b1,b3]",
AI: "~ d3 b2 a2 b2 ~ b2 a2 b2 d3 ~ a2 b2 d3 ~ e3", AJ: "~ d3 b2 a2 b2 ~ b2 a2 b2 d3 ~ a2 [a2,d4,g4,a4]@3 ~",
AK: "g3@4 ~@2 e3 f#3 g3@4 ~@2 e3 f#3", AL: "g3@3 ~ g3@3 g3 ~ a3 f#3@4 d3 e3",
AM: "f#3@3 ~ f#3@3 f#3 ~ g3 e3 ~@3 c3 d3", AN: "e3@5 ~ c3 d3 e3@4 e3@2 ~ e3", AO: "~ f#3 d#3@6 e3@4 f#3@4",
AP: "[~ f#3 d#3@6 b2@4 ~@4 [e3,g3]@8 [a3,c4]@4 [d#3,a3,b3]@4, ~@3 b3@3 e3@2]/2", AQ: "~ f#3 d#3@6 f#2@8",
AR: "e3 f#3", AS: "g3@4 a3@4 a#3@4 ~@2 g3 a3", AT: "a#3@4 ~@2 g3 a3 a#3@3 ~ a#3@3 a#3",
AU: "~ c4 a3@4 f3 g3 a3@3 ~ a3@3 a3", AV: "~ a#3 g3 ~@3 d#3 f3 g3@5 ~ d#3 f3", AW: "g3@4 g3@2 ~ g3 ~ a3 f#3@6",
AX: "d3 ~ [g3,a#3]@2, ~ d4@3", AY: "[c4,d#4]@4 [f#3,c4,d4]@4 a#3@4 ~@2 g3 a3, g3 ~",
AZ: "d#6 d6 c6 a#5 a5 g5 f5 d#5 d5 c5 ~@2 a4 ~ g4 f#4, ~@11 a#4@2 ~@3",
BA: "[d5@2 ~ [d#2,a#2,g3,d4,g4]@24 ~@5, ~ f#4 ~@14]/2", // D#maj7
})).s("gm_string_ensemble_1").gain(0.28)
// chords · brass section · "Brass"
const brass_section = note(`<
~@4 A B@3 C B@3 D ~@7 E F@2 G@4 H I B@3 D ~@7 E F@2 G@2 J@2 H K L M N O@2 ~@3 A B P Q R S T N U@2 V T W X@3 Y T N Z@2
AA AB N AC AD AE AF AG AH@3 AI AJ AK@3 AL AM AN AO@3 AP AJ AK@3 AQ AR@3 ~
>`.pickRestart({
A: "~@15 [a3,b3,d4,e4]", B: "~@15 [e3,g3,b3,f#4]", C: "~@9 e3!4 ~@2 [e3,g3,b3,f#4]", D: "~@9 e3!4 ~@3",
// … 167 more lines
More by Earth, Wind & Fire
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.