0:00/0:00
// Sunday Morning — Earth, Wind & Fire
// 80 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 55, 4/4 at bar 55, 2/4 at bar 70, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 11 "#WARM BELL" Warm Bell -> pad bowed
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 B C B C B C B C B C B C B D E F G@2 B C B C B C B H I C I C J C B D E K L@2 B C B C B C B H M@2 N@2 ~@3 O@8 P
Q R S@8 T@8 ~
>`.pickRestart({
A: "~@10 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3", // Db Ebm Db
B: "[gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4", // Gbsus2 Absus2
C: "[gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3", // Gbsus2 Db Ebm Db
D: "[gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@2 [f3,ab3,db4] [gb3,bb3,eb4] [ab3,f4] ~ [ab3,db4]@2 ~@2, ~@3 gb3", // Gbsus2 Db Ebm Db Db5
E: "[gb3,ab3,db4]@3 gb3@2 bb3 gb3 [gb3,ab3,db4] [ab3,bb3,eb4]@4 ab3 bb3 [ab3,db4] [ab3,bb3,eb4]", // Gbsus2 Absus2 Db5 Absus2
F: "[f3,bb3,db4]@2 ab3 [f3,db4]@2 bb3 ab3 bb3 [gb3,bb3,db4,f4]@4 ab3 db4 eb4 db4, ab3 ~@2 bb3 ~ [f3,db4]@3 ~@8", // Bbm Db Gbmaj7 Db
G: "[[gb3,bb3,db4,eb4]@2 ~ [gb3,bb3,db4]@2 bb3 [f3,ab3,bb3,db4]@6 [gb3,bb3,db4,eb4]@3 [gb3,db4]@2 bb3 [gb3,ab3,db4]@6 ~@2 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3, ~@15 bb3 ~@16]/2", // Ebm7 Gb Bbm7 Ebm7 Gb5 Gbsus2 Db Ebm …
H: "[gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 db4 ~ bb3 db4 eb4@2", // Gbsus2
I: "[gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 bb3 ab3 [ab3,bb3,eb4]@4", // Gbsus2 Absus2
J: "[gb3,ab3,db4]!3 [gb3,ab3]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4, ~@3 db4 ~@12", // Gbsus2 Absus2
K: "[f3,bb3,db4]@2 ab3 [f3,db4]@2 bb3 ab3 bb3 [f3,ab3,bb3,db4]@4 ab3 db4 eb4 db4, ab3 ~@2 bb3 ~ [f3,db4]@3 ~@8", // Bbm Db Bbm7 Db
L: "[[gb3,bb3,db4,eb4]@2 ~ [gb3,bb3,db4]@2 bb3 ~@5 db4 [gb3,bb3,db4,eb4]@3 [gb3,db4]@2 bb3 [gb3,ab3,db4]@6 ~@2 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3, ~@6 [f3,ab3,bb3,db4]@4 ab3@2 ~@3 bb3 ~@16, ~@9 f4@3 ~@20]/2", // Ebm7 Gb Ebm7 Gb5 Gbsus2 Db Ebm Db …
M: "[[gb3,ab3,bb3,db4]@3 bb3@2 db4 [ab3,bb3,db4,eb4]@3 db4@2 eb4 [ab3,db4,f4]@2 ~ eb4@2 db4 [g3,bb3,eb4]@4 [g3,bb3,eb4] ~ [ab3,bb3,c4,eb4]@3 c4@2 eb4 [bb3,c4,d4,f4]@2]/2", // Gb Absus4 Db Eb Ab Bb
N: "[~ eb4@2 f4 [ab3,bb3,db4,gb4]@3 eb4@2 gb4 [c4,eb4,f4,ab4]@11 ~ [c4,eb4,f4,ab4] ~@9]/2", // Gb Fm7
O: "[~@8 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@2]/8", // Gbsus2 Absus2 Gbsus2 Db Ebm Db Gbsus2 Absus2 …
P: "~@2 db4 ~ bb3 db4 eb4@2 [ab3,bb3,eb4]@2 [bb3,eb4] [ab3,db4] [gb3,bb3] ~ [ab3,bb3,db4,eb4]@2, ~@8 [db4,f4] ~@5 f4 ~", // Absus2 Eb5 Db5 Gb Absus4 Db
Q: "eb4 db4 [ab3,bb3,db4,gb4] ~@5 db3@2 eb3@2 e3 gb3 ab3 a3", // Gb
R: "[a3,b3,e4]!3 [a3,b3,e4]@2 db4 [a3,b3,e4]@4 b3 db4 [b3,db4,gb4]@4", // Asus2 Bsus2
S: "[~@2 [ab3,b3,e4] [a3,db4,gb4] ~ [b3,e4,ab4]@3 [a3,b3,e4]!3 [a3,b3,e4]@2 db4 [a3,b3,e4]@4 b3 db4 [b3,db4,gb4]@4 [a3,b3,e4]!3 [a3,b3,e4]@2 db4 [a3,b3,e4]@4 [ab3,b3,e4] [a3,db4,gb4] ~ [b3,e4,ab4]@3 [a3,b3,e4]!3 [a3,b3,e4]@2 db4 [a3,b3,e4]@4 b3 db4 [b3,db4,gb4]@4 [a3,b3,e4]!3 [a3,b3,e4]@2 db4 [a3,b3,e4]@4 [ab3,b3,e4] [a3,db4,e4,gb4] ~ [a3,b3,d4,gb4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@2]/8", // E Gbm E Asus2 Bsus2 Asus2 E Gbm …
T: "[~@2 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 [f3,ab3,db4] [gb3,bb3,eb4] ~ [ab3,db4,f4]@3 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@4 ab3 bb3 [ab3,bb3,eb4]@4 [gb3,ab3,db4]!3 [gb3,ab3,db4]@2 bb3 [gb3,ab3,db4]@2]/8", // Db Ebm Db Gbsus2 Absus2 Gbsus2 Db Ebm …
})).s("gm_piano").gain(0.3)
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@4 A@2 B C D E F G H I J G K L M N O P Q R S T U V W X F G H Y J G Z L AA N O P Q R S T U V W X AB AC AD AE ~@3 AF AG
AH AI AJ AK AL AM AN AO AP AQ AR AS AR AT AG AH AU AH AK AL AM AV AW AX AY AZ
>`.pickRestart({
A: "[eb1@26 f2 gb2 ~ bb2@3]/2", B: "eb1 ~@4 eb2 eb1!2 ~@3 ab1 bb1@3 ~", C: "eb1 ~@4 eb2 eb1 ~@3 ab1 bb1@2 eb1@2 ~",
D: "eb1 ~@4 eb2 eb1!2 ~@3 bb1 eb1@2 f1 db1", E: "eb1 ~@4 eb2 eb1 ~@3 f1 gb1 ~ bb1@3",
F: "eb1 ~@4 eb2 eb1!2 ~@3 ab1 bb1@2 ab1 db2", G: "eb1 ~@4 eb2 eb1 ~@3 f1 gb1@2 bb1@3",
H: "eb1 ~@3 eb2 eb1!2 ~@4 ab1 bb1@2 db1@2", I: "eb1 ~@4 eb2 eb1 ~@3 f1 gb1@2 bb1 ab1 gb1",
J: "eb1 ~@3 eb2 eb1!2 ~@4 eb2 db2@2 bb1 ab1", K: "eb1 ~@3 eb2 db1 eb1 ~@4 db2 eb2@2 bb1 ab1",
L: "eb1 ~@4 eb2 eb1 ~ f1 gb1 ab1@2 bb1@3 ~", M: "gb1@2 ~ gb1 ~@2 gb1@2 ab1@3 ~ bb1 [g1,ab1,a1] ab1 eb1",
N: "bb1@5 ab1@2 bb1 gb1@6 eb1 gb1", O: "eb1 eb1@4 ~ bb1@5 ~ b1@4", P: "~ bb1 gb1@7 ~ f1 gb1 bb1 eb1@3",
Q: "eb1 ~@3 eb2 eb1!2 ~@4 ab1 bb1@2 ab1 bb1", R: "eb1 ~@3 eb2 eb1!2 ~@3 f1 gb1 ~ bb1@3",
S: "eb1 ~@3 eb2 eb1!2 ~@4 bb1 ab1@2 gb1 f1", T: "eb1 ~@3 eb2 eb1!2 ~@3 f1 gb1 ~ bb1 eb1@2",
U: "eb1 ~@3 eb2 eb1!2 ~@4 db2 bb1@2 gb1 f1", V: "eb1 ~@3 eb2 eb1!2 ~@2 eb2 db2 bb1 gb1 eb1@3",
W: "eb1 ~@3 eb2 db2 eb2 ~@3 db2!2 ~ eb2 db2@2", X: "eb1 ~@3 eb2 eb1!2 ~ eb1 ~@7",
Y: "eb1 ~@4 eb2 eb1 ~@3 f1 gb1 ~ bb1 ab1 gb1", Z: "eb1 ~@3 eb2 db2 eb2 ~@4 db2 eb2@2 bb1 ab1",
AA: "gb1@2 ~ gb1 ~@2 gb1@2 ab1@2 ~ ab1 eb1@2 ab1 eb1", AB: "bb1@3 gb1@3 b1@2",
AC: "~@2 c1@3 ~ c2 ~ c2!3 c2@2 c2 d2!2", AD: "d2 d2@2 d2 eb2 ab1@2 ab1@2 bb1@7", AE: "bb1 f1 bb1 f1 bb1!2 ~@10",
AF: "~@8 eb1 ~@3 eb2 eb1!2 ~", AG: "~@3 ab1 bb1@2 ab1 bb1 eb1 ~@3 eb2 eb1!2 ~",
AH: "~@2 f1 gb1 ~ bb1@3 eb1 ~@3 eb2 eb1!2 ~", AI: "~@3 bb1 ab1@2 gb1 f1 eb1 ~@3 eb2 eb1!2 ~",
AJ: "~@2 f1 gb1 ~ bb1 eb1@2 eb1 ~@3 eb2 eb1!2 ~", AK: "~@3 db2 bb1@2 gb1 f1 eb1 ~@3 eb2 eb1!2 ~",
AL: "~ eb2 db2 bb1 gb1 eb1@3 eb1 ~@3 eb2 db2 eb2 ~", AM: "~@2 db2!2 ~ eb2 db2@2 eb1 ~@3 eb2 eb1!2 ~",
AN: "eb1 ~@7 eb2@2 bb1 db2 eb1 ~ eb2@2", AO: "bb1 db2 eb1 ~@5 db2 ~ eb2@2 e2 gb2 ab2 a2",
AP: "gb1 db1 e1 gb1 ~ gb1!2 ~@4 b1 db2@2 b1 db2", AQ: "~@2 ab1 a1!2 db2@3 gb1 e1 gb1 ~@2 db2 gb1@2",
AR: "~@3 db2 b1@2 a1 ab1 gb1 ~@3 gb2 gb1!2 ~", AS: "~@2 ab1 a1 b1 db2 gb1 e1 gb2 ~@3 gb2 gb1!2 ~",
AT: "~@2 ab1 a1 ~ b1 e1 d1 eb1 ~@3 eb2 eb1!2 ~", AU: "~@3 bb1 ab1@2 gb1 f1 eb1 ~ eb1 bb1 ab1 db2 eb1 ~",
AV: "~@2 f1 gb1 ~ bb1@2 ~ eb1 ~@4 eb2 eb1!2", AW: "~@3 ab1 bb1@2 ab1 db2 eb1 ~@4 eb2 eb1 ~",
AX: "~@2 f1 gb1@2 bb1@3 eb1 ~@3 eb2 eb1!2 ~", AY: "~@3 ab1 bb1@2 db1@2 eb1 ~@4 eb2 eb1 ~",
AZ: "~@2 f1 gb1@2 bb1 ab1 ~@9",
})).s("gm_electric_bass_finger").gain(0.4)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
~@6 A B A B C D E F C D E G ~@4 A B A B A B A H C D E F C D E G ~@4 A B A B A B A I ~@7 J K J K J K J K L ~@6 J K J K
J K J K J K J K ~
>`.pickRestart({
A: "~@2 [db4,f4] [bb3,db4] ~@2 [gb3,db4]@2 [db4,f4] ~ [db4,f4] ~ [ab3,bb3,eb4]@4", // Db Bbm Gb5 Db Absus2
B: "~@2 [bb3,eb4] [ab3,db4]@2 ~ [ab3,db4]@3 ~@7", C: "~@2 [db4,f4]!2 bb3@2 ~@2 [bb3,db4,f4] ~@3 [ab3,bb3,eb4]@4",
D: "~@2 [db4,f4]!2 bb3@2 [ab3,db4]@3 eb4 [ab3,db4] [bb3,eb4] ~ [db4,f4]@2 ~", // Db Db5 Eb5 Db
E: "~@2 [db4,f4] [ab3,db4]@3 ~@2 [bb3,db4,f4] ~@3 [ab3,bb3,eb4]@4", // Db Db5 Bbm Absus2
F: "~@2 [bb3,eb4] [ab3,db4]@2 ~ [ab3,db4]@3 eb4 [ab3,db4] [bb3,eb4] ~ [db4,f4]@2 ~", // Eb5 Db5 Eb5 Db
G: "~@2 [bb3,eb4] [ab3,db4]@2 ~ [ab3,db4]@2 [ab3,db4] [bb3,eb4] [db4,f4] ~ [ab3,db4]@2 ~@2", // Eb5 Db5 Eb5 Db Db5
H: "~@2 [bb3,eb4] [ab3,db4]@2 ~ [ab3,db4]@3 ~ [ab3,db4,f4] [bb3,eb4] ~ [ab3,bb3,eb4] ~@2", // Eb5 Db5 Db Eb5 Absus2
I: "~@2 [bb3,eb4] [ab3,db4]@2 ~ [ab3,db4]@3 ~@3 bb3 db4 eb4@2", J: "~@10 [db4,f4] [bb3,db4] ~@2 [gb3,db4]@2",
K: "[db4,f4] ~ [db4,f4] ~ [ab3,bb3,eb4]@4 ~@2 [bb3,eb4] [ab3,db4]@2 ~ [ab3,db4]@2", // Db Absus2 Eb5 Db5
L: "~@2 [ab3,db4,f4] [bb3,eb4] ~ db4 eb4@2 ~@8", // Db Eb5
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.3)
// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
~@6 A@2 B@2 C D E@2 F G H@2 I J K@2 L@2 B@2 L@2 M@2 N D E@2 F G H@2 I J K@2 L@2 B@2 L@2 B@2 ~@3 O P Q R S T U V W T U
V X ~@6 Y T U V W T U V W T U V X
>`.pickRestart({
A: "[~@12 [db4,f4,ab4] ~ [eb4,gb4,bb4] [db4,f4,ab4]@2 [bb3,db4,f4] db4 bb3 db4@2 ~ bb3 db4 bb3 db4@3 ~@3]/2", // Db Ebm Db Bbm
B: "[~ db4!2 eb4 f4 ~ f4 ~ eb4@3 ~ [db4,f4,ab4]@2 [eb4,gb4,bb4] [db4,f4,ab4]@2 [bb3,db4,f4] db4 eb4 f4 ~ f4 ~ eb4@3 ~@5, ~@8 e4 ~@15 e4 ~@7]/2", // Db Ebm Db Bbm
C: "eb4@8 ~@6 bb3 db4, f4 ~@15", D: "~ eb4@3 ~@12",
E: "[~@2 db4 eb4 f4 ~ f4 ~ eb4@3 ~ db4@2 bb3 eb4@2 bb3@5 ~@8 f4@2, ~@8 e4 ~@23]/2", F: "eb4@4 ~@8 db4@2 bb3 db4",
G: "~ eb4@5 ~@10", H: "[~@2 db4 eb4 f4@2 f4 ~ eb4@3 ~ db4@2 bb3 eb4@2 bb3@5 ~@8 db4 eb4, ~@8 e4 ~@23]/2",
I: "f4@3 eb4@2 db4 db4@7 ~ db4 eb4", J: "f4@2 ~ eb4@2 db4 gb4@2 f4@6 ~ db4",
K: "[[eb4,gb4,bb4]@3 [db4,f4,ab4]@2 [bb3,db4,f4] [db4,f4,ab4]@6 [bb3,eb4,bb4]@3 [ab3,db4,ab4]@2 [f3,bb3,f4] [db3,db4,ab4]@5 ~@9]/2", // Ebm Db Bbm Db Eb5 Db5 Bb5 Db5
L: "[~@2 db4 bb3 db4@3 bb3 db4 bb3 db4@2 [db4,f4,ab4] ~ [eb4,gb4,bb4] [db4,f4,ab4]@2 [bb3,db4,f4] db4 bb3 db4@2 ~ bb3 db4 bb3 db4@3 ~@3]/2", // Db Ebm Db Bbm
M: "[~ db4!2 eb4 f4 ~ f4 ~ eb4@3 ~ [db4,f4,ab4]@2 [eb4,gb4,bb4] [db4,f4,ab4]@2 [bb3,db4,f4] db4 eb4 f4 ~ f4 ~ [eb4,e4]@2 ~@2 f4@4, ~@8 e4 ~@23]/2", // Db Ebm Db Bbm Emaj7
N: "eb4@8 ~@6 bb3 db4", O: "~@14 db4 b3", P: "~@6 e4 ~ e4!2 ~ e4 ~ db4 b3 db4", Q: "~ db4 ~@2 b3 db4 b3 db4@2 ~@7",
R: "~@10 gb4!2 e4 db4 ~@2", S: "b3 db4!2 ab3 b3 db4 ~@4 db4 bb3 db4@3 bb3",
T: "db4 bb3 db4@2 [db4,f4,ab4] ~ [eb4,gb4,bb4] [db4,f4,ab4]@2 [bb3,db4,f4] db4 bb3 db4@2 ~ bb3", // Db Ebm Db Bbm
U: "db4 bb3 db4@3 ~@4 db4!2 eb4 f4 ~ f4 ~",
V: "eb4@3 ~ [db4,f4,ab4]@2 [eb4,gb4,bb4] [db4,f4,ab4]@2 [bb3,db4,f4] db4 eb4 f4 ~ f4 ~, e4 ~@15", // Db Ebm Db Bbm
W: "eb4@3 ~@7 db4 bb3 db4@3 bb3, e4 ~@15", X: "eb4@3 ~@13, e4 ~@15", Y: "~@10 db4 bb3 db4@3 bb3",
})).s("gm_electric_guitar_jazz").gain(0.48)
// chords · brass section · "BRASS 1"
const brass_section = note(`<
~ A B ~@2 A B A B C B ~@10 A D A B A D A B E ~@11 A D A B A D A B E F@2 G@2 ~ H I J ~ K ~ L ~ K M@2 N O P ~ P ~ Q ~ K
~ K ~@3 K ~@4
>`.pickRestart({
A: "~@10 [f4,ab4,db5,f5,ab5] [gb4,bb4,eb5,gb5,bb5] ~ [ab4,db5,ab5,db6] [ab4,bb4,db5,eb5,ab5,bb5,db6,eb6] [ab4,bb4,eb5,ab5,bb5,db6,eb6], ~@13 f5@3", // Db Ebm Db5 Absus4
B: "[ab5,db6] ~@15", // Db5
C: "db5 ~ [ab4,db5] [ab4,db5]@2 [bb4,eb5] [ab4,db5]@4 [f4,ab4,db5,f5,ab5] [gb4,bb4,eb5,gb5,bb5] ~ [ab4,db5,ab5,db6] [ab4,bb4,db5,eb5,ab5,bb5,db6,eb6] [ab4,bb4,eb5,ab5,bb5,db6,eb6], ~@13 f5@3", // Db5 Eb5 Db5 Db Ebm Db5 Absus4
D: "[ab5,db6] ~@3 [db4,db6]!2 [bb3,bb5] ~@9", E: "db5 ~ [ab4,db5] [ab4,db5]@2 [bb4,eb5] [ab4,db5]@4 ~@6",
F: "[[db4,db5]@3 [bb3,bb4]@2 [db4,db5] [eb4,eb5]@3 [db4,db5]@2 [eb4,eb5] [f4,f5]@3 [eb4,eb5]@2 [db4,db5] [eb4,eb5]@4 [c4,eb4,g4,bb4,eb5,g5] ~ [eb4,eb5]@3 [c4,c5]@2 [eb4,eb5] [f4,f5]@2]/2", // Db Bb Db Eb Db Eb F Eb …
G: "[~ [eb4,eb5]@2 [f4,f5] [gb4,gb5]@3 [eb4,eb5]@2 [gb4,gb5] [ab4,ab5]@12 [f4,ab4,c5,eb5,f5,ab5] ~@9]/2", // Eb F Gb Eb Gb Ab Fm7
H: "~@9 [db4,db5,db6] ~@6", I: "~@3 [db4,db5,db6] ~ [db4,db5,db6] ~@10", J: "~@12 [db4,db6]!2 [bb3,bb5] ~",
K: "~@2 [f4,ab4,db5,f5,ab5] [gb4,bb4,eb5,gb5,bb5] ~ [ab4,db5,ab5,db6] [ab4,bb4,db5,eb5,ab5,bb5,db6,eb6] [ab4,bb4,eb5,ab5,bb5,db6,eb6] [ab5,db6] ~@7, ~@5 f5@3 ~@8", // Db Ebm Db5 Absus4 Db5
L: "~@2 [f4,ab4,db5,f5,ab5] [gb4,bb4,eb5,gb5,bb5] ~ [ab4,db5,ab5,db6] [ab4,bb4,db5,eb5,ab5,bb5,db6,eb6] [ab4,bb4,eb5,ab5,bb5,db6,eb6] [ab5,db6] ~@3 [db4,db6]!2 [bb3,bb5] ~, ~@5 f5@3 ~@8", // Db Ebm Db5 Absus4 Db5 Db Bb
M: "[~@8 db5 ~ [ab4,db5] [ab4,db5]@2 [bb4,eb5] [ab4,db5]@4 ~@6 [ab3,ab4,bb4,db5,eb5,f5]@2 eb5 db5 bb4 ~ [ab3,ab4,bb4,db5,eb5,f5]@2]/2", // Db5 Eb5 Db5 Bbm7
N: "eb5 db5 [ab3,ab4,bb4,db5,eb5,gb5] ~@5 [db4,db5]@2 [eb4,eb5] ~ [e4,e5] [gb4,gb5] [ab4,ab5] [a4,a5]", // Ebm7 Db Eb E Gb Ab A
O: "~ [f4,gb4,g4,e5,f5] [e4,a4,b4,c5,d5] ~@13, [ab4,ab5] ~@7", // Am Ab
P: "~@2 [b3,ab4,b4,e5,ab5] [db4,a4,db5,gb5,a5] ~ [e4,b4,e5,b5] [gb4,b4,db5,e5,gb5,b5,db6] [e4,gb4,b4,db5,gb5,b5,db6] [e4,b5] ~@7, ~@5 ab5@3 ~@8", // E Gbm E5 Gbsus4 Esus2 E5
Q: "~@2 [ab4,b4,e5,ab5,b5] [a4,db5,gb5,a5,db6] ~ [a4,a5,d6] [a4,b4,a5,b5,e6] [b4,a5,b5,d6,e6] [a5,d6] ~@7, ~@5 [d5,gb5]@3 ~@8", // E Gbm D5 Asus2 Bm7 D5 D
})).s("gm_brass_section").gain(0.48)
// chords · brass section · "BRASS 1" · soft notes
const brass_section_soft = note(`<
~ A B ~@2 A B A B C B ~@10 A B A B A B A B D ~@11 A B A B A B A B D ~@9 E ~ E ~ E F ~@3 G ~ G ~ H ~ E ~ E ~@3 E ~@4
>`.pickRestart({
A: "~@15 db5", B: "[ab4,db5] ~@15", C: "ab4 [ab4,db5] ~@13 db5", D: "ab4 [ab4,db5] ~@14", E: "~@7 db5 [ab4,db5] ~@7",
F: "~@8 ab4 [ab4,db5] ~@6", G: "~@7 e5 [b4,e5] ~@7", H: "~@7 a4!2 ~@7",
})).s("gm_brass_section").gain(0.32)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
~@2 A@2 ~@10 B ~ C D ~@9 E ~ F G ~@2 H ~ I@2 J ~@7 K ~ L ~ M ~@10 N@2 O@2 ~@2 P Q R S T@2 U ~@4 V W ~ N@2 O@2 ~
>`.pickRestart({
A: "[~@14 eb5@5 ~@13]/2", B: "[ab3,db4,f4,ab4]@7 [f3,gb3,g3,a3,bb3,b3,c4,db4,d4,eb4,e4] c4 ~@7", C: "~@14 eb4 bb3",
D: "db4@2 eb4 ~@9 [ab3,a3,bb3] [e3,f3,gb3,g3,e4,f4] [db3,d3,eb3,c4,db4,d4,eb4] [a3,bb3,b3]",
E: "~@5 bb3 db4@3 eb3 bb3 [db4,db6]@3 ~@2", F: "~@12 bb3 db4 [bb3,eb4] [bb3,b3,c4,db4,d4]", G: "[gb3,g3,ab3,a3] ~@15",
H: "~@5 bb3 ~@2 bb3!2 ~@6", I: "[~@14 bb3 [ab3,db6]@5 ~@12]/2",
J: "[db5,ab6]@12 [ab3,a3,bb3] [e3,f3,gb3,g3,e4,f4] [db3,d3,eb3,c4,db4,d4,eb4] [a3,bb3,b3]", // Db5
K: "~@6 eb5@4 eb5@3 db5@3", L: "~@2 ab5@8 f5!2 ab5!2 f5 [eb5,e5]",
M: "~@10 [ab4,c5,db5] [e4,f4,gb4,g4,ab4,a4,bb4,b4] [b3,c4,db4,d4,eb4,e4,f4,gb4,g4] [f3,gb3,g3,ab3,a3,bb3,b3,c4,db4,d4] [eb3,e3,ab3] ~", // Dbmaj7 Emaj7
N: "[~@14 eb5@4 eb5@3 db5@3 ~@8]/2", O: "[~@10 ab5@8 f5!2 ab5!2 f5 [eb5,e5] ~@8]/2", P: "~@14 db4 [d4,eb4,e4,f4,gb4]",
Q: "[g4,ab4] gb4@3 a4@3 ~@3 b4@3 b4@3", R: "~@2 b4 ~ gb4@3 ~ e4 db4 gb4 b3 a3 b3@3",
S: "~@2 gb4 [db4,e4] c4 [b3,db4] ~ [gb3,a3] db4 a3@3 [e3,gb3] db3 [e3,gb3]!2", // Dbm Bsus2 Gbm Esus2
T: "[[e3,gb3] gb3@4 ~ gb4 db4 a4@2 ~ bb4@3 b4@4 gb4 a4 gb4@3 db5 gb5 db5 e5 gb5 gb5@2 e5 db5, ~ e3 ~@30]/2", // Esus2
U: "b4 [a4,b4,db5] b4!2 a4@2 [eb4,e4,f4,gb4,g4,ab4] [ab3,a3,bb3,b3,c4,db4,d4] ~@8", // A
V: "~@9 f4 ab4 f4 ab4@2 [eb4,e4] [db4,eb4]", W: "bb3 db4!2 eb4 ~ eb4@3 ~@8",
})).s("gm_overdriven_guitar").gain(0.4)
// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@14 A ~@2 B ~@9 C ~@5 D ~@3 B ~@9 E F G ~@13 H ~@19 H ~>".pickRestart({
A: "~@7 [e3,f4,gb4,g4] [eb3,ab3,eb4] ~@7", B: "~@15 c3", C: "~@4 eb3 ~@11", D: "~@5 eb4 ~@2 eb4!2 ~@6", E: "~@15 d5",
F: "[c5,db5] ~@15", G: "~@14 [c3,db3,d3,f3,gb3,g3] [bb2,b2,eb3]", H: "~@7 d5 [c5,db5] ~@7",
})).s("gm_overdriven_guitar").gain(0.24)
// chords · harpsichord · "HARPSICHRD" · Bbm Bb7 Ebm7 Bbm7 Gb5 Gb Eb7 Gb …
const harpsichord = note(`<
~@50
[[bb4,db5] [f5,ab5,bb5] [db6,eb6,gb6] [ab5,bb5,db6] [db5,gb5] [gb5,ab5,bb5] [bb4,db5,eb5] [gb5,bb5] [bb4,db5,eb5] [db5,eb5,gb5] [bb5,db6] [bb4,eb5,gb5] [db5,f5,ab5] [b5,db6,f6] [ab5,b5,db6] [b4,db5,f5]]
[[db5,f5,ab5] [f5,ab5,b5] [c5,db5,eb5] [g5,bb5,c6] [g5,bb5] [c6,e6] [g5,bb5,c6] [eb5,g5,bb5] [c5,bb5,c6] [c5,eb5,ab5] [eb5,ab5,bb5] [c6,eb6,ab6] [bb5,c6,eb6] [c5,eb5,ab5] [eb5,f5,ab5] [bb5,d6,f6]]
[[bb5,c6,d6] [c5,d5,f5] [d5,f5,ab5] [bb5,d6,f6] [bb5,db6,d6] [db5,eb5,ab5] [eb5,ab5,bb5] [bb5,db6,eb6] [db5,eb5,ab5] [eb5,ab5,bb5] [bb4,c5,eb6] [eb5,f5,ab5] [bb5,c6,eb6] [f6,ab6] [bb5,c6,eb6] [ab5,eb6,f6]]
[[ab5,bb5,c6] [f5,c6,eb6] [f5,ab5,bb5] [eb5,bb5,c6] [eb5,f5,ab5] [c5,eb5,f5] [bb4,c5] ~@9]
~@31
>`).s("gm_harpsichord").gain(0.22)
// chords · pad bowed · "#WARM BELL"
const pad_bowed = note("<~@20 A@2 ~@18 A@2 ~@43>".pickRestart({
A: "[[db5,gb5]@2 ~ [db5,f5]@2 [bb4,db5] [db5,f5]@5 ~ [bb4,eb5]@3 [ab4,db5]@2 [gb4,bb4] [ab4,db5]@5 ~@9]/2", // Gb5 Db Bbm Db Eb5 Db5 Gb Db5
})).s("gm_pad_bowed").gain(0.2)
// chords · pad poly · "POLYSYNTH"
const pad_poly = note("<~@2 A@4 ~@12 B C ~@18 B C ~@45>".pickRestart({
A: "[[gb3,ab3,db4,db5]@57 ~@7]/4", // Gbsus2
B: "[gb4,ab4,db5]@3 gb4@2 bb4 gb4 [gb4,ab4,db5] [ab4,bb4,eb5]@5 ~ [ab4,db5] [bb4,eb5]", // Gbsus2 Absus2 Db5 Eb5
C: "[f4,ab4,db5,f5]@3 [bb4,eb5]@2 [f4,ab4,db5]@3 [f4,ab4,db5]@8, ~@3 f4 ~@12", // Db Eb5 Db
})).s("gm_pad_poly").gain(0.15).pan(0.6)
// chords · lead 5 charang · "CHARANG" · Dbm
const lead_5_charang = note(`<
~@53
[~@8 [db5,e5,ab5,db6] [db5,e5,ab5,db6]@2 ~@5]
[[db5,e5,ab5,db6] ~ [db5,e5,ab5,db6]!2 ~ [db5,e5,ab5,db6]!2 ~@9]
[~@6 [db5,e5,ab5,db6] ~]
~@29
>`).s("gm_lead_5_charang").gain(0.39)
// chords · lead 5 charang · "CHARANG" · soft notes
const lead_5_charang_soft = note("<~@53 [~@8 bb4 bb4@2 ~@5] [bb4 ~ bb4!2 ~ bb4!2 ~@9] [~@6 bb4 ~] ~@29>")
.s("gm_lead_5_charang").gain(0.2)
// other · woodblock
// … 122 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.