0:00/0:00
// Interlude: Close to Home — Earth, Wind & Fire
// 129 bpm, 4/4, key G 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: duplicate parts dropped: ch 12 "fl solo" whistle (copy of ch 11 "fl solo" whistle)
// note: Full arrangement: all 177 bars on a 24-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): solo guit.
setcpm(129/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 · "acou piano"
const piano = note(`<
A B C D E F G H I J K L M N O L M P Q R S T U V W P Q R S T U X@2 Y@4 Z@2 AA AB AC@3 ~ AD AE AF AG AH AI AJ AK AL AI
AM AK P Q R S T U V W P Q R S T U AN@2 AO@4 Z@2 AA AB AC@3 ~ AP AQ@2 AR@2 AI AJ AK AL AI AM AK AS@4 AT@4 J AU AV AW J
AU AV AW P Q R S T U AX AY P Q R S T U AZ@2 AO@4 Z@2 AA AB AC@3 ~ AP AQ@2 BA@2 AI AJ AK AL AI AJ AK AL AI AM AK AL AI
AJ AK AL AI AM AK AL AI AJ AK AL AI AJ AK AL AI AM ~
>`.pickRestart({
A: "~@13 d2 ~ g1@5 ~@4", B: "~@4 a4@3 [a4,d5] f4 ~@4 [f4,a4,bb4,d5] ~@10, ~@3 [f4,bb4,d5]@3 ~ bb4@2 ~@15",
C: "~@2 d2 ~ [f4,a4,bb4,d5]@3 ~ g2 ~@2 [e4,g4,a4,c5]@3 c5 [e4,g4,a4] ~ g1@3 ~@4, ~@15 d2@2 ~@7", // Bbmaj7 Am7 A7
D: "~@4 d2 ~ [f4,a4,bb4,d5]@3 ~ [f4,bb4] ~@4 [bb4,d5] [f4,a4] ~@7, ~@9 [a4,d5]@2 ~@13", // Bbmaj7 Bb5 Bb F D5
E: "~@4 g2 ~@2 [a2,g4,c5,e5]@5 ~ [bb2,a4,d5,f5]@6 g1@5", // Am7 Bbmaj7
F: "~@8 [f4,a4,bb4,d5]@3 ~ [f4,a4,d5] ~@5 [f4,a4,bb4,d5] ~@5, ~@6 bb4 ~@5", // Bbmaj7 Dm Bbmaj7
G: "~@7 d2 ~ [f4,a4,bb4,d5]@3 ~ g2 ~ [e4,g4,a4,c5]@3 ~ [e4,g4,a4,c5] ~ g1@3, ~@10 d2 ~", // Bbmaj7 Am7
H: "~@8 d2 ~ [f4,a4,bb4,d5]@3 ~ [a4,d5]@2 ~@4 [f4,a4,bb4,d5] ~@3, ~@14 [f4,bb4] ~@9", // Bbmaj7 D5 Bbmaj7 Bb5
I: "~@9 g2 ~ [a2,g4,c5,e5]@5 ~@2 [bb2,a4,d5,f5]@6", J: "~@12 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4,d5] ~@5 [f4,a4,bb4,d5] ~",
K: "~@12 [f4,a4,bb4] ~@5 [e4,g4,a4,c5]@3 ~ [d2,e4,g4,a4]@2, ~@12 d5@2 ~@7 c5@3", // Bbmaj7 Am7 Dsus4
L: "g1@3 ~@9 [f4,a4,bb4,d5]@3 ~ [f4,bb4] ~@4 [f4,bb4,d5] a4 ~, ~@15 a4@2 ~@7, ~@8 d5 ~@3", // Bbmaj7 Bb5 Bb
M: "~@12 [a2,g4,c5,e5]@5 ~ [bb2,a4,d5,f5]@5 ~", N: "g1@2 ~@10 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4,d5] ~@5 [f4,a4,bb4,d5] ~",
O: "~@10 d2 ~ [f4,a4,bb4] ~@5 [e4,g4,a4,c5]@3 ~ [d2,e4,g4,a4]@2, ~@12 d5@2 ~@7 c5@3", P: "[eb2,g3,bb3,d4,f4]@7 ~",
Q: "[bb2,a3,bb3,d4,f4]@19 ~@5", R: "~ g3@21 ~@2, [eb2,bb3,d4,f4]@11 ~", S: "[bb2,a3,bb3,d4,f4]@5 ~",
T: "[eb2,g3,bb3,d4,f4]@8 ~@4 [d2,gb3,c4,f4]@9 ~@3, ~@12 a3@7 ~@5", // Ebmaj7 D7
U: "[g3,bb3,d4,f4]@9 ~@3 [ab2,gb3,c4,d4,f4]@10 ~@2, g2@7 ~@17", // Gm7 Dm7b5
V: "g2@3 ~@9 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4,d5] ~@5 [f4,a4,bb4,d5] ~", // Bbmaj7
W: "~@12 [g3,c4,e4]@6 [bb2,a3,d4,f4]@5 ~, ~@3 a2 ~@2", // C Bbmaj7
X: "[g2@3 ~@3 [f4,bb4]@3 ~@3 [d4,g4]@4 ~@2 [c4,f4]@3 ~ [d4,g4]@10 ~@4 [g2,d3,bb3,d4]@4 ~@2 [bb2,f3,bb3,d4]@5 ~]/2", // Bb5 G5 F5 G5 Gm Bb
Y: "[~@42 [bb4,d5]@6 [g2,d3,bb4,d5,f5]@17 ~ [a4,bb4,d5,f5]@3 ~@2 d5@2 ~@3 d2 ~@5 bb3@2 [g2,d3]@4 ~@2 [bb2,f3]@4 ~@2, [c2,c3]@30 d5@6 [g4,c5,eb5]@29 ~@6 bb4 ~@24, ~@22 g5@43 ~@31, ~@22 bb4@8 f5@12 f4@23 ~@16 a3@2 ~ a3@6 ~@6, ~@22 eb5@8 a4@35 ~@5 [a4,f5]@2 ~@24]/4", // Bb Gm7 Bbmaj7 G5 Bb5 C Cm Dm
Z: "[~@22 [eb4,g4,bb4]@5 ~@3 [d4,f4,a4]@5 ~ [c4,g4]@3 ~@3 [bb3,d4,f4]@3 ~@3, [c2,c3]@15 ~, ~@36 eb4@5 ~@7]/2", // Eb Dm C5 Bb C
AA: "[c4,d4,f4,a4]@13 ~@5 [g4,a4,c5,f5]@4 [g4,a4,c5] ~, [d2,d3]@8 ~@3 f5", // Dm7 F Am7 D
AB: "~@12 [a3,c4,f4]@4 ~@2 [c4,f4,a4]@5 ~, ~@12 [d2,d3]@11 ~", // F D
AC: "[~@22 [bb3,eb4,g4]@5 ~@3 [a3,d4,f4]@4 ~@2 [g3,c4,eb4]@3 ~@3 [f3,bb3,d4]@3 ~ [bb2,d4,f4]@13 ~@7 [a4,bb4,d5,f5]@3 ~ [a4,bb4,d5,f5]@2, [c2,c3]@43 ~@3 [a3,bb3]@11 ~@15]/3", // Eb Dm Cm Bb Bbmaj7 C Bbmaj7
AD: "~@3 f4@4 ~ eb4@3 ~", AE: "d4@7 ~@3 c4@2 ~@4 bb3@2 a3@5 ~", AF: "~@3 [bb3,g4]@3 ~@2 [c4,a4]@3 ~",
AG: "[d4,bb4]@6 ~@4 [c4,a4] ~@5 [a3,f4] ~ [bb3,g4]@6", // Gm F Dm Eb
AH: "~@12 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4] ~@5 [f4,a4,bb4,d5] ~, [f3,g3,c4]@3 ~, ~@8 d5 ~@3", // Bbmaj7 Fsus2
AI: "~@12 [f4,a4,bb4,d5]@3 ~@3 [e4,g4,a4,c5]@3 ~ [e4,g4,a4] ~, ~@11 c5", // Bbmaj7 Am7 A7
AJ: "g2@2 ~@10 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4,d5] ~@4 [f4,a4,bb4,d5] ~@2", // Bbmaj7
AK: "~@12 [a2,a3,g4,c5,e5]@5 ~ [bb2,bb3,a4,d5,f5]@6", // Am7 Bbmaj7
AL: "~@12 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4] ~@5 [f4,a4,bb4,d5] ~, ~@8 d5 ~@3", // Bbmaj7
AM: "g2@3 ~@9 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4,d5] ~@4 [f4,a4,bb4,d5] ~@2", // Bbmaj7
AN: "[g2@3 ~@3 [f4,bb4]@3 ~@3 [d4,g4]@4 ~@2 [c4,f4]@3 ~ [d4,g4]@10 ~@4 [g2,f3,bb3,d4]@5 ~ [bb2,f3,bb3,d4]@5 ~]/2", // Bb5 G5 F5 G5 Gm7 Bb
AO: "[~@42 [bb4,d5]@6 [g2,d3,bb4,d5,f5]@17 ~ [a4,bb4,d5,f5]@3 ~@2 d5@2 ~@11 [g2,f3,bb3]@5 ~ [bb2,bb3,d4,f4]@5 ~, [c2,c3]@30 d5@6 [g4,c5,eb5]@29 ~@6 bb4 ~@24, ~@22 g5@43 ~@31, ~@22 bb4@8 f5@12 f4@23 ~@19 d4@3 ~@9, ~@22 eb5@8 a4@35 ~@5 [a4,f5]@2 ~@24]/4", // Bb Gm7 Bbmaj7 Gm7 Bb C Cm Dm
AP: "~@6 [f4,d5]@9 ~ [eb4,c5]@7 ~", // Dm Cm
AQ: "[bb4@9 ~ [c4,a4]@2 ~@4 [bb3,g4]@2 f4@10 ~@2 [bb3,g4]@6 ~@4 [c4,a4]@6 ~@2, d4@7 ~@11 a3@5 ~@25]/2", // F Eb F
AR: "[[d4,bb4]@6 ~@4 [c4,a4] ~@5 [a3,f4] ~ [f3,g3,c4]@18 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4] ~@5 [f4,a4,bb4,d5] ~, ~@9 [bb3,g4]@3 ~@8 d5 ~@3]/2", // Gm F Dm Fsus2 Bbmaj7 Eb
AS: "[[f2,a3,d4,eb4,g4,a4]@18 ~@4 [c4,d4,f4,g4,a4]@21 ~@3 [f2,g3,d4,eb4,g4,a4]@20 ~@4 [a3,c4,d4,f4]@23 ~@3, ~@11 [f2,f3]@9 ~@15 [f2,d3]@9 ~@4, ~@70 db4 ~@25]/4", // Dm Dm7 Dm Dm7 F Dm
AT: "[~@18 a1@3 ~ [d2,a2]@12 [ab2,gb3,c4,f4]@10 ~@2 [db2,ab2,f3,ab3,c4,eb4]@24 [gb3,c4,d4]@22 ~@4, ~@3 e3@11 ~@3 eb3@6 ~@12 [d2,a2]@12 ~, ~@6 [a2,db4,f4,g4]@16 [b3,c4]@7 ~@41 f4 ~@25, ~@6 [c4,c5]@14 ~@2 [f3,e4]@9 ~@65, ~@11 a3@2 ~@35]/4", // D5 Fm Dbmaj7 D7 D5 Aaug Cmaj7 C …
AU: "~@12 [f4,a4,bb4,d5]@3 ~@3 [e4,g4,a4,c5]@3 ~ [e4,g4,a4,c5] ~", // Bbmaj7 Am7
AV: "~@12 [f4,a4,bb4,d5]@3 ~ [a4,d5]@2 ~@3 bb4 [f4,a4,d5] ~, ~@16 [f4,bb4] ~@7", // Bbmaj7 D5 Dm Bb5
AW: "~@10 g2 ~ [a2,g4,c5,e5]@5 ~ [bb2,a4,d5,f5]@5 ~", AX: "g2@5 ~@7 [f4,a4,bb4,d5]@9 ~ [bb4,d5]@2, ~@22 [f4,a4] ~",
AY: "~@12 [a2,a3,g4,c5,e5]@5 ~ [bb2,bb3,f4,bb4,d5]@5 ~", // Am7 Bb
AZ: "[g2@3 ~@3 [f4,bb4]@3 ~@3 [d4,g4]@4 ~@2 [c4,f4]@3 ~ [d4,g4]@10 ~@4 [g2,f3,bb3,d4]@5 ~ [bb2,f3,bb3,d4]@4 ~@2]/2", // Bb5 G5 F5 G5 Gm7 Bb
BA: "[[d4,bb4]@6 ~@4 c4@2 ~@4 [a3,f4] ~ [f3,g3,c4]@18 [f4,a4,bb4,d5]@3 ~ [f4,a4,bb4] ~@5 [f4,a4,bb4,d5] ~, ~@10 a4 ~@7 [bb3,g4]@6 ~@16 d5@2 ~@6]/2", // Gm Dm Fsus2 Bbmaj7 Eb
})).s("gm_piano").gain(0.28)
// bass · electric bass finger · "bass"
const bass = note(`<
~@4 A ~@3 B C D E F G H I J K L M N O P Q R K L M N O S T@2 U V W X Y Z AA AB U AC AD AE@3 AF@2 AG AH AI AJ AK AH AI
AJ K L M N O P Q R K L M N O S T@2 U V W X Y Z AA AB U AC AD AE@3 AF@2 AG AH AI AJ AK AH AI AJ AL@4 AM@4 AN AH AI AJ
AK AH AI AJ K L M N O S AO AP K AQ M N O S T@2 U V W X Y Z AA AB U AC AD AE@3 AF@2 AR AH AI AJ AG AH AI AJ AG AH AI AJ
AR AH AI AJ AG AH AI AJ AR AH AI AJ AG AH AI AJ AG AH AI ~
>`.pickRestart({
A: "~@7 a1@4 ~@2 bb1@4 ~@2 g1@4 ~", B: "~@11 a1@5 ~@2 bb1@4 ~@2", C: "g1@4 ~@6 g1 ~ bb1@3 ~ bb1 ~ d2@3 ~ d2 ~",
D: "~@10 d2 ~@2 a2@4 ~ g2@3 ~ d2 ~, ~@6 g2 ~@5", E: "g1@4 ~@6 g1 ~ d2@3 ~ d2 ~ g2@3 ~ g2 ~",
F: "~@8 d2 ~ g1 ~ a1@4 ~@2 bb1@4 ~@2", G: "g1@3 ~@7 g1 ~ bb1@3 ~ bb1 ~ d2@3 ~ d2 ~",
H: "~@10 d2 ~@2 a2@3 ~@2 g2@3 ~ d2 ~, ~@6 g2 ~@5", I: "g1@4 ~@6 g1 ~ d2@3 ~ d2@2 g2@3 ~ g2@2",
J: "~@8 d2 ~ g1 ~ a1@5 ~ bb1@5 ~", K: "eb2@4 ~@6 eb2 ~ eb3@9 ~@3", L: "bb1@4 ~@5 bb1@2 ~ bb2@11 ~",
M: "eb2@4 ~@5 eb2@2 ~ eb3@9 ~@3", N: "bb1@2 ~@3 bb1 bb2@5 ~", O: "eb2@8 ~@4 d2@9 ~@3",
P: "g2@6 ~@6 ab2@2 eb2 ~ c2@2 ab1@5 ~", Q: "g1@3 ~@7 g1 ~ d2@3 ~ d2@2 g2@3 ~ g2 ~", R: "~@8 d2@2 g1 ~ a1@5 ~ bb1@5 ~",
S: "g2@6 ~@6 ab2@2 eb2@2 c2@2 ab1@5 ~", T: "[g1@3 ~@3 bb1@3 ~@3 g1@6 f1@3 ~ g1@9 ~@5 g1@4 ~@2 bb1@4 ~@2]/2",
U: "c2@6 ~@4 c2 ~ g1@3 ~ g1 ~@3 g1 ~ bb1 ~", V: "c2@5 ~@5 c2 ~ eb2@3 ~ c2 ~ f2@3 ~ c2 ~",
W: "g2@6 ~@4 g2 ~ bb1@3 ~ bb1 ~@3 bb1 ~ c2 ~", X: "d2@3 ~@5 d2 ~ bb1 ~ g1@3 ~@3 bb1@5 ~",
Y: "c2@6 ~@4 c2 ~ g1@3 ~ g1@2 ~@4 bb1 ~", Z: "c2@3 ~ c2 ~@5 c2 ~ eb2@5 ~ c2@3 ~@3",
AA: "d2@5 ~@5 d2 ~ a2@3 ~ a2@2 ~@3 a2 d2 ~", AB: "d3@3 ~ d3@2 ~@4 d3 ~ a2@5 ~ d2@4 ~@2",
AC: "c2@6 ~@4 c2 ~ g1@5 ~ c2@4 ~@2", AD: "bb1@6 ~@2 bb1 ~ c2 ~ d2@5 ~@3 g2 ~ f2 ~",
AE: "[bb2@3 ~ bb2 ~@5 f2 ~ bb2@5 ~ bb1@2 ~@2 eb2@49 ~]/3", AF: "[eb2@7 ~]/2",
AG: "g1@6 ~@4 g1 ~ bb1@2 ~@2 bb1 ~ d2@3 ~ d2 ~", AH: "~@10 a1 ~ g2@10 d2 ~",
AI: "g1@3 ~@7 g1 ~ d2@3 ~ d2 ~ g2@2 ~@2 g2 ~", AJ: "~@8 d2 ~ g1 ~ a1@3 ~@3 bb1@4 ~@2",
AK: "g1@3 ~@7 g1 ~ bb1@2 ~@2 bb1 ~ d2@3 ~ d2 ~",
AL: "[f2@3 ~ f2@2 ~@4 f2@9 ~@3 f2@9 ~@3 c3@2 f2@6 ~@4 f2@9 ~@3 c3@2 f2@7 ~@3 f2@9 ~@2 f3@2 ~ f2@9 ~@3, ~@33 f3@2 ~@22 f3@2 ~@24 c3@2 ~@11]/4",
AM: "[~@6 a1@9 ~@3 a1@3 ~ d2@10 ~@2 ab2@10 ~@2 db2@21 ~@3 d2@23 ~ g1@2]/4", AN: "~@10 g1 ~ bb1@3 ~ bb1 ~ d2@3 ~ d2 ~",
AO: "g1@4 ~@6 g1 ~ d2@3 ~ d2@2 g2@3 ~ g2 ~", AP: "~@8 d2 ~ g1 ~ a1@4 ~@2 bb1@5 ~", AQ: "bb1@4 ~@5 bb1 ~@2 bb2@11 ~",
AR: "g1@6 ~@4 g1 ~ bb1@3 ~ bb1 ~ d2@3 ~ d2 ~",
})).s("gm_electric_bass_finger").gain(0.31)
// other · tenor sax · "sax"
const tenor_sax = note(`<
~@9 A@2 B@2 C@2 D@2 ~@8 E F E G H I J@2 ~@4 K@2 ~@2 L@3 ~ M@2 N@2 ~@4 O@2 D@2 ~@4 P Q R ~@5 P Q S@2 ~@2 T U ~@2 V@2
W@6 X@2 ~@4 Y@2 D@2 Z@2 AA AB ~@24 P AC AD@2 AE@2 ~@2 AF@2 ~@2 AG@6 X@2 ~@8 AH@2 B@2 AI@4 AH@2 B@2 AJ@4 AH@2 B@2 AI@4
>`.pickRestart({
A: "[d4@3 ~ f4@34 ~@4 c4@3 ~ g3@2, db4 ~@47]/2", B: "[bb3@3 ~ bb3@2 g3@21 ~@15 g3@3 ~ g3@2]/2",
C: "[d4@4 f4@33 ~@3 [d4,a4]@2 [c4,g4]@3 [g3,d4]@2 ~]/2", D: "[[bb3,f4]@3 ~ [bb3,f4]@2 g3@22 ~@20, ~ d4@3 ~@4]/2",
E: "g3", F: "f3", G: "f3@19 ~@5", H: "g3@11 ~ gb3@11 ~", I: "f3@6 ab3@5 ~",
J: "[~@6 f4@3 ~@3 d4@5 ~ c4@3 ~ d4@11 ~@15]/2", K: "[~@6 g3@2 ~@2 g3@2 g3 ~@9 g3@23 ~@3]/2",
L: "[~@22 g4@8 f4@6 eb4@6 d4@3 ~ bb3@18 ~@8]/3", M: "[~ bb2@7]/2", N: "[bb2@11 ~]/2",
O: "[d4@4 f4@32 ~@4 [d4,a4]@2 [c4,g4]@3 [g3,d4]@2 ~]/2", P: "g3 a3", Q: "bb3@4 f4@3 ~", R: "bb3@2 ~@2 a3@2 g3@17 ~",
S: "[~@6 f4@3 ~@3 d4@5 ~ c4@4 d4@14 ~@12]/2", T: "~@10 g3@2 d3@3 ~ eb3@2 ~@4 f3@2", U: "~@4 a3@2 g3@15 ~@3",
V: "[~@6 d4@2 ~@2 d4 ~ f4@3 ~ g4@2 ~@4 g4@5 ~ a4 ~ f4@4 d4@2 f4@3 ~@9]/2",
W: "[~@22 eb4@7 ~ d4@6 c4@5 ~@2 bb3@3 a3@20 ~@5 g4@4 ~ d4@2 f4@11 ~@5 bb2@45 ~@5]/6", X: "[bb2@7 ~]/2",
Y: "[d4@4 ~ f4@32 ~@3 [d4,a4]@2 [c4,g4]@3 [g3,d4]@2 ~]/2", // D5 C5 G5
Z: "[~@5 c4 ~ d4 ~@2 eb4 ~ f4@3 ~ f4@3 ~@2 f4@9 ~@2 eb4 ~ d4 ~ c4@3 ~ bb3 ~@7]/2", AA: "~@5 d4@9 bb3@6 ~@2 c4@2",
AB: "~@3 f4@2 ~ d4@6 ~@3 g3@2 ~ f3@6", AC: "bb3@6 f4@5 ~", AD: "[~@6 f4@3 ~@3 d4@5 ~ c4@4 d4@20 ~@6]/2",
AE: "[~@11 g3@13]/2", AF: "[~@11 g3@11 ~@2]/2",
AG: "[~@22 eb4@8 d4@6 c4@5 ~ bb3@4 a3@18 ~@6 g4@6 d4@2 c4@7 ~@9 bb2@45 ~@5]/6",
AH: "[d4@3 ~ f4@34 ~@4 c4@3 ~ g3@2]/2",
AI: "[d4@4 f4@32 ~@6 g4@3 [g3,d4]@2 [bb3,f4]@3 ~@4 d4@18 ~@24, ~@39 d4@2 c4@3 ~@7 bb3@2 g3@22 ~@21, ~@20 a4 ~@5 f4 ~@21]/4", // G5 Bb5
AJ: "[d4@4 f4@32 ~@6 g4@3 [g3,d4]@2 [bb3,f4]@3 ~ bb3 ~@2 d4@18 ~@24, ~@39 d4@2 c4@3 ~@9 g3@22 ~@21, ~@20 a4 ~@5 f4 ~@21]/4", // G5 Bb5
})).s("gm_tenor_sax").gain(0.29).pan(0.3)
// chords · brass section · "brass"
const brass_section = note(`<
~@9 A@2 B@2 C@2 D ~@9 E@2 F@2 G H I@2 ~@4 J@2 ~@2 K@3 ~@9 C@2 D ~@15 L@2 M@2 N O P@2 Q@2 R@4 ~@8 S@2 D ~ T@2 U V W@4
~@22 X@2 ~@8 Y@4 ~@12 A@2 B@2 C@2 D ~ A@2 B@2 C@2 D ~ A@2 B@2 C@2 D ~
>`.pickRestart({
A: "[d4@4 f4@32 ~@6 c4@3 g3 ~@2, db4 ~@47]/2", B: "[bb3@3 ~ bb3@2 g3@25 ~@11 g3 g3@2 ~ g3 ~]/2",
C: "[[c4,g4,d5]@4 [d4,a4,bb4,c5,f5]@34 ~@2 d4@2 c4@3 ~ g3@2]/2", D: "bb3@3 ~ bb3@2 g3@18", E: "[~ d4@44 ~@3]/2",
F: "[d4@43 ~@5]/2", G: "d4@6 c4@5 ~", H: "bb3@11 ~ c4@11 ~", I: "[~@6 bb4@3 ~@3 g4@5 ~ f4@3 ~ g4@12 ~@14]/2",
J: "[~@12 bb3 ~@9 d4@24 ~@2]/2", K: "[~@22 bb4@9 a4@5 g4@6 ~ f4@3 d4@19 ~@7]/3",
L: "[~@6 bb4@4 ~@2 g4@5 ~ f4@4 g4@13 ~@13]/2", M: "[~@7 [eb4,g4,bb4]@8 ~]/2", N: "~@10 g4@2 d4@3 ~ eb4@2 ~@4 f4@2",
O: "~@4 a4 ~ g4@16 ~@2", P: "[~@22 g3@25 ~, ~@21 [d4,eb4,bb4]@26 ~]/2",
Q: "[~@6 d4@2 ~@2 d4 ~ f4@3 ~ g4@2 ~@4 g4@5 ~ a4 ~ f4@4 d4@2 f4@3 ~@9]/2",
R: "[~@22 bb4@7 ~ a4@6 g4@6 ~ f4@3 f4@21 ~@4 g4@4 ~ d4@2 f4@12 ~@6]/4",
S: "[[c4,g4,d5]@4 ~ [d4,a4]@33 ~@2 d4@2 c4@3 ~ g3@2, ~@2 [bb4,c5]@17 ~@5, ~@4 f5@29 ~@15]/2", // Csus2 D5 Bbsus2
T: "[~@5 [c4,g4] ~ d4 a4 bb4 eb4 ~ [f4,c5]@3 ~ [f4,c5]@4 ~ [f4,a4,c5]@9 ~@2 [eb4,bb4] ~ [d4,a4] ~ [c4,g4]@3 ~ f4@2 ~@6, ~@40 bb3 ~@7]/2", // C5 F5 F Eb5 D5 C5
U: "~@6 a4@8 ~ f4@5 ~@2 [c4,g4]@2, ~@5 d4@9 bb3@6 ~@4", V: "~@3 [f4,c5]@2 ~ [d4,a4]@6 ~@3 [g3,d4]@2 ~ [f3,c4]@6",
W: "[~@6 [db4,f4,g4]@16 [f3,e4]@9 ~@3 [gb3,c4,f4]@10 ~@2 [f3,ab3,c4,eb4]@24 [gb3,c4,d4]@22 ~@4, ~@6 [c4,c5]@14 ~@2 [b3,c4]@7 ~@41 f4 ~@25, ~@11 a3@2 ~@4 eb3@6 ~@25]/4", // Gm7b5 Fmaj7 F Fm7 D7 C Cmaj7
X: "[~@6 [f4,bb4]@3 ~@3 [d4,g4]@5 ~ [c4,f4]@3 ~ [d4,g4]@20 ~@6]/2", // Bb5 G5 F5 G5
Y: "[~@22 g4@8 f4@6 eb4@6 eb4@3 d4@20 ~@5 g4@6 d4@2 c4@8 ~@10]/4",
})).s("gm_brass_section").gain(0.25)
// chords · brass section · "brass" · soft notes
const brass_section_soft = note(`<
~@37 A ~@19 B@2 C@2 D E ~@2 B@2 C@2 D E ~@50 F@4 G H ~@2 I@2 ~@2 J@2 ~@42
>`.pickRestart({
A: "~@6 bb3@3 ~ bb3@2 ~@12", B: "[g3@8 f3@7 ~, d4@43 ~@5]/2", C: "[g3@8 f3@7 ~, d4@41 ~@7]/2",
D: "[g3,d4]@11 ~ [f3,c4]@11 ~", E: "[d3,bb3]@11 ~ [f3,c4]@11 ~",
F: "[bb3@24 a3@24 [g3,bb3]@24 [f3,a3]@23 ~, d4@47 ~, g3@22 ~@2 f3@23 ~@49]/4", // Gm F
G: "[g3,bb3,d4]@9 ~@3 [gb3,c4,f4]@8 ~@4", H: "[bb3,d4,g4]@4 ~@2 [d4,gb4,bb4]@5 ~", I: "[~@11 [bb3,eb4]@13]/2",
J: "[~@22 [eb4,g4]@23 ~@3]/2", // Eb
})).s("gm_brass_section").gain(0.15)
// chords · electric guitar muted · "guitar"
const electric_guitar_muted = note(`<
~@9 A B C D C E F G H I J K ~@2 L M H N O P@2 ~ Q@2 R ~ S ~ T ~ U V T ~ W X@2 ~@3 Y Z AA AB Y Z AA AB AC AD AC ~@3 AA
AB AC AE AC AF ~@4 AG ~@3 AH ~ AI AJ AK ~ AL@3 ~ AM@2 Y Z AA AB Y Z AA AB ~@8 Y Z AA AB Y Z AA AB AC AN AC ~@3 L AO AC
AP AQ AR ~@4 AS ~ AT AU AV@2 AW ~ AX ~@7 Y Z AA AB Y Z AA AB Y Z AA AB Y Z AA AB Y Z AA AB Y Z AA AB Y Z AA AB Y Z AA
~
>`.pickRestart({
A: "~@3 [f4,bb4] ~@2 [d4,g4]@3 ~@2 [d4,g4]", B: "[c4,f4]@3 ~ d4 ~@5 [d4,g4] ~@5 [d4,g4]@2 ~@3 g4 d4 ~, ~@3 g4@2 ~@19",
C: "~@6 [f4,bb4]@2 ~@4 [d4,g4]@7 ~@3 [d4,g4]@2", D: "[c4,f4]@4 [d4,g4]@2 ~@6 [e4,g4,c5]@7 ~@5",
E: "[c4,f4]@3 ~ [d4,g4]@2 ~@4 [d4,g4]@2 ~@4 [d4,g4] ~@5 [d4,g4] ~", // F5 G5
F: "~@6 [f4,bb4]@2 ~@4 [d4,g4]@7 ~@3 d4 ~, ~@21 g4@2 ~", G: "[c4,f4]@4 [d4,g4]@2 ~@6 [e4,g4,c5]@5 ~@7",
H: "~@3 [d4,g4,bb4] ~@8", I: "~@6 [f4,g4]@2 ~ g4@2 ~ f4@2 ~@2 f4@2 d4@2 ~@2 d4@2",
J: "~@6 [g4,bb4,d5] ~@17, g3@11 ~@13", K: "~@8 bb3@2 c4@2 d4@11 ~", L: "~@3 [f4,bb4] ~@2 [d4,g4]@4 ~ [d4,g4]",
M: "[c4,f4]@3 ~ [d4,g4]@2 ~@18", N: "~@4 a4@2 ~@4 d4 ~ [c4,f4]@5 ~ [a3,d4]@6", O: "[g3,c4]@3 ~@3 [d4,g4,bb4] ~@17",
P: "[~@9 d3 ~@2 g3@5 ~ f3@9 ~@21, ~@11 f3@2 ~@35]/2",
Q: "[~@6 [f4,bb4]@2 ~@4 [d4,g4]@5 ~ [c4,f4]@2 ~@2 [d4,g4]@13 ~@13]/2", R: "~@10 [eb4,g4,c5] ~@13",
S: "~@5 [c4,f4,a4] ~@6", T: "~@5 [eb4,g4,bb4] ~@6", U: "~@5 [a4,d5] ~@6",
V: "~@6 d4 eb4 d4 ~ d4@5 ~@9, ~@9 eb4@2 ~@13", W: "~@5 [d4,f4,a4] ~@6", X: "[~@10 f4@2 ~ c4@5 d4@3 ~ bb3@11 ~@15]/2",
Y: "~@6 [f4,bb4]@2 ~@4 [d4,g4]@6 ~@4 [d4,g4] ~", Z: "[c4,f4]@3 ~ [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~",
AA: "~@6 [f4,bb4] ~@5 [d4,g4]@7 ~@3 [d4,g4] ~", // Bb5 G5
AB: "[c4,f4]@4 [d4,g4] ~@8 g4@4 ~@2 [a4,d5]@4 ~, ~@12 [e4,c5]@5 ~ f4@4 ~@2", AC: "~@6 [g4,bb4,d5] ~@17",
AD: "~@6 [c5,f5]@3 ~@3 [a4,d5]@4 ~@2 [g4,c5]@3 ~ [g4,c5] ~", AE: "~@2 [d4,g4] ~@2 [d4,g4] [c4,f4]@3 [d4,g4] ~@2",
AF: "~@4 [g3,c4]@3 ~@3 f3 ~ [g3,c4]@6 [f3,bb3]@4 [g3,c4] ~", AG: "~@5 [eb4,g4,c5] ~@6",
AH: "~@6 [eb4,g4,bb4]@2 ~@2 [eb4,g4,bb4] ~@13", AI: "~@10 [d4,e4,f4,a4] ~@13",
AJ: "~@6 c4@2 ~@2 d4@2 ~ d4@2 ~@2 c4@2 ~ c4 d4 ~ c4, ~@8 d4@2 ~@6 d4@2 ~ d4@2 ~@3, ~@9 c4@2 ~ c4@2 ~ c4@2 ~@7",
AK: "~@3 [eb4,g4,bb4] ~ [eb4,g4,bb4] ~@6", // Eb
AL: "[~@10 [d4,f4,a4]@2 ~@10 a4@5 ~ d4@2 [c4,f4]@3 ~ f4@2 [d4,f4]@4 ~@2 c4@3 ~ bb3@14 ~@12]/3", // Dm F5 Dm
AM: "[[g3,bb3,d4]@13 ~@11]/2", AN: "~@6 [c4,f4]@3 ~ [c4,f4]@2 [a3,d4]@6 c4 ~ bb3 ~ g3@2",
AO: "[c4,f4]@4 [d4,g4] ~@19", AP: "~@3 g4 bb4 g5 [c5,f5]@3 [d5,g5]@3", AQ: "~@3 [g4,bb4,d5] ~@8",
AR: "~@10 c4@2 bb3@6 g3@5 ~, ~@9 bb3@2 ~@13", AS: "~@6 [eb4,g4,c5] ~@3 [eb4,g4,c5] ~@13", AT: "~@10 [g4,bb4,d5] ~@13",
AU: "~@12 [g4,bb4]@5 ~ [f4,bb4]@6, ~@12 f4 ~@11", // Gm Bb5
AV: "[~@6 [eb4,g4,c5] ~@3 [eb4,g4,c5]@2 ~@10 [bb4,eb5]@7 ~ [a4,d5]@5 ~ [g4,c5]@5 ~ [f4,bb4]@4 ~@2]/2", // Cm Eb5 D5 C5 Bb5
AW: "~@3 [f4,a4,c5] ~ [f4,a4,c5] ~@6", AX: "~@6 [eb4,g4,c5]@2 ~@2 [eb4,g4,c5] ~@13",
})).s("gm_electric_guitar_muted").gain(0.44).pan(0.3)
// chords · vibraphone · "vibes"
const vibraphone = note(`<
~@17 A ~ B ~ C D ~@2 A ~ B ~ C D E@2 F@2 ~@2 G@2 ~@18 A ~ B ~ C D ~@2 A ~ B ~ C D E@2 F@2 ~@2 G@2 ~@2 H@4 I J@2 K@2
~@39 F@2 ~@2 G@2 ~@2 H@4 I J@2 K@2 ~@31
>`.pickRestart({
A: "[g4,bb4,d5,f5]@11 ~", B: "[g4,bb4,d5,f5]@5 ~", C: "[g4,bb4,d5,f5]@8 ~@4 [gb4,f5]@9 ~@3, ~@12 [a4,c5]@7 ~@5",
D: "[g4,bb4,d5]@7 ~@5 [bb4,c5,f5]@11 ~", E: "[~@6 bb4@3 ~@3 g4@4 ~@2 f4@3 ~ g4@9 ~@17]/2",
F: "[~@22 [g4,bb4,eb5]@17 ~@9]/2", G: "[~@9 eb4@2 [g4,bb4,d5]@11 ~@2]/2",
H: "[~@22 [g4,bb4,eb5]@6 ~@2 [f4,a4,d5]@3 ~@3 [eb4,g4,c5]@4 ~@2 [eb4,g4,bb4]@3 ~ [d4,f4,a4]@29 ~@21]/4", // Eb Dm Cm Eb Dm
I: "~@3 d5@4 ~ c5@4", J: "[bb4@8 ~@2 a4@3 ~@3 g4@2 f4@8 ~@4 g4@7 ~@3 a4@7 ~]/2",
K: "[bb4@6 ~@4 a4@2 ~@4 f4@2 [c4,d4,f4,g4]@29 ~]/2", // Csus4
})).s("gm_vibraphone").gain(0.14).pan(0.6)
// … 140 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.