0:00/0:00
// Lean On Me — Bill Withers
// 76 bpm, 4/4, key C major. 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: Full arrangement: all 81 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/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 · fretless bass
const bass = note(`<
~@9 A B@4 C@2 D@2 E F G H@4 I@4 J@5 K@6 L@2 M@4 N@4 K@6 O@2 P@4 Q@4 R S T U V W X Y Z AA AB AC AD AE@2
>`.pickRestart({
A: "~@11 c2@23 ~@2 c2@6 ~ d2@5",
B: "[~ e2@6 f2@27 ~@4 f2@6 ~ e2@6 d2@6 c2@26 ~@2 c2@2 ~ e1@6 ~ f1@6 g1@6 e2@23 ~@2 d2@17 ~@2 g1@12 c2@22 ~@3 c2@4]/4",
C: "[~@3 d2@6 e2@6 f2@29 ~@2 f2@6 ~ e2@6 d2@6 c2@26 ~@2 c2@2 ~]/2",
D: "[e1@6 ~ f1@6 g1@4 ~@2 g1@23 ~@2 c2@21 ~@4 g1@3 a1@3 c2@21]/2", E: "~@2 c2@3 d2@3 e2@3 f2@13",
F: "~@5 f2@6 e2@6 ~ d2@6 c2@24", G: "~@3 c2@2 ~ e1@6 ~ f1@6 g1@6 e2@23",
H: "[~@2 d2@17 ~ g1@12 c2@21 ~@4 c2@6 d2@6 e2@6 ~ f2@29 ~ f2@6 ~ e2@6 d2@6 c2@25 ~@3 c2@2 ~ e1@6 f1@6 g1@4 ~@2 g1@18]/4",
I: "[~@7 c2@21 ~@3 g1@3 ~ a1@3 c2@22 ~@2 c2@6 d2@6 ~ e2@6 f2@26 ~@5 f2@6 e2@6 d2@6 c2@25 ~@3 c2@2 ~ e1@6 f1@6 g1@6 e2@13]/4",
J: "[~@12 d2@17 ~ g1@12 ~ c2@21 ~@3 c2@6 ~ d2@6 e2@6 f2@29 ~@2 f2@6 e2@6 d2@6 c2@25 ~@3 c2@2 ~ e1@6 f1@6 g1@4 ~@3 g1@23 ~ c2@21 ~@4 g1@3 a1@3]/5",
K: "c2@7 ~@17 c4@11 ~@7 g1@3 a1@3",
L: "[c2@7 ~@17 e1@6 f1@6 f#1@2 ~@4 g1@17 ~@7 c2@10 ~@2 a2@2 ~ g2@2 ~ e2@3 d2@2 ~ c2@2 ~ a1@2 ~]/2",
M: "[c2@18 ~@6 c2@6 d2@6 e2@6 f2@19 ~@11 f2@6 e2@6 d2@6 c2@18 ~@9 c2@2 ~ e1@5 ~ f1@6 g1@5 ~ e2@20 ~@4 d2@17 ~ g1@12]/4",
N: "[c2@13 ~@8 g1@2 ~ c2@6 d2@5 ~ e2@6 f2@19 ~@11 f2@6 e2@6 d2@6 c2@19 ~@8 c2@2 ~ e1@5 ~ f1@6 g1@3 ~@3 g1@23 ~ c2@19 ~@5 g1@3 a1@3]/4",
O: "[c2@7 ~@17 e1@6 f1@6 f#1@4 ~@2 g1@17 ~@7 c2@10 ~@2 a2@2 ~ g2@2 ~ e2@3 d2@2 ~ c2@2 ~ a1@2 ~]/2",
P: "[c2@17 ~@7 c2@6 d2@6 e2@6 f2@23 ~@7 f2@6 e2@6 d2@6 c2@19 ~@8 c2@2 ~ e1@5 ~ f1@6 g1@6 e2@22 ~@2 d2@17 ~ g1@12]/4",
Q: "[c2@17 ~@7 c2@6 d2@6 e2@5 ~ f2@18 ~@12 f2@6 e2@6 d2@5 ~ c2@19 ~@8 c2@2 ~ e1@5 ~ f1@6 g1@2 ~@4 g1@20 ~@4 c2@18 ~@3 e1@2 ~ g1@3 a1@3]/4",
R: "c2@5 ~@13 c2@18 ~@6 g1@3 a1@2 ~", S: "c2@15 ~@3 c2@10 ~@2 c2@2 ~@4 g1@3 a1@3 c2@2 ~@4",
T: "c2@13 ~@5 c2@18 ~@6 g1@3 a1@3", U: "c2@13 ~@5 c2@11 ~ c2@2 ~@4 c2@5 ~ g1@3 a1@3",
V: "c2@14 ~@4 c2@10 ~@2 c2 ~@5 c2@6 g1@5 ~", W: "c2@7 ~@2 c2 ~@2 c2@2 ~@4 c2@8 ~ c2@2 ~ c2@2 ~@4 g1@3 a1@3 c2@2 ~@4",
X: "c2@7 ~@2 c2 ~@2 c2@2 ~@4 c2@10 ~@2 c2@11 ~ g1@5 ~", Y: "c2@7 ~@2 c2 ~@2 c2@2 ~@4 c2@10 ~@2 c2@11 ~ g1@3 a1@3",
Z: "c2@17 ~ c2@10 ~@2 c2 ~@5 c2@6 g1@3 a1@3", AA: "c2@8 ~ c2 ~@2 c2@2 ~@4 c2@9 ~@3 c2@2 ~ c2@2 ~ c2@6 g1@6",
AB: "c2@8 ~ c2 ~@2 c2@2 ~@4 c2@10 ~@2 c2@9 ~@3 c2@2 ~@4",
AC: "c2@4 ~@2 c2@2 ~ c2@2 ~ c2@2 ~@4 c2@10 ~@2 c2@12 g1@3 a1@3",
AD: "c2@8 ~ c2 ~@2 c2@2 ~@4 c2@9 c2 ~@2 c2@3 ~@3 c2@2 ~ c2 ~@2 c2@2 ~@4", AE: "[c2@14 ~@4 c2@77 ~]/2",
})).s("gm_fretless_bass").gain(0.45)
// chords · piano
const piano = note(`<
A@5 B@2 C D@2 E F@3 G@2 H@2 I@3 J@4 K@4 L@5 ~@6 M@2 N@4 O@4 ~@6 M@2 N@4 O@4 P Q P@3 R P@7 S@2
>`.pickRestart({
A: "[~@44 [e3,g3,c4]@24 ~ [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [a3,c4,f4]@31 ~ [a3,c4,f4]@5 ~ [g3,b3,e4]@3 ~@3 [f3,a3,d4]@3 ~@3 [e3,g3,c4]@30 ~@2 [e3,g3,c4]@4 ~@2 [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [g3,b3,e4]@25 [f3,a3,d4]@28]/5", // C Dm Em F Em Dm C Dm …
B: "[~@4 [e3,g3,c4]@24 ~ [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@3 [g3,a#3,e4]@3 ~@3 [a3,c4,f4]@31 ~ [a3,c4,f4]@5 ~ [g3,b3,e4]@3 ~@3 [f3,a3,d4]@2 ~@3]/2", // C Dm Edim F Em Dm
C: "~ [e3,g3,c4]@28 ~@4 [e3,g3,c4]@5 ~ [f3,a3,d4]@2 ~@4 [e3,g3,c4]@2 ~", // C Dm C
D: "[~@3 [d3,f3,b3]@25 [e3,g3,c4]@30 ~ [e3,g3,c4]@24 ~ [e3,g3,c4]@5 ~@2 [f3,a3,d4]@3 ~@2]/2", // Bdim C Dm
E: "~ [g3,a#3,e4]@2 ~@4 [a3,c4,f4]@31 [a3,c4,f4]@5 ~@2 [g3,b3,e4]@3", // Edim F Em
F: "[~@3 [f3,a3,d4]@3 ~@3 [e3,g3,c4]@30 ~ [e3,g3,c4]@4 ~@3 [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [g3,b3,e4]@25 [f3,a3,d4]@30 ~ [e3,g3,c4]@24 ~ [e3,g3,c4]@4]/3", // Dm C Dm Em Dm C
G: "[~@3 [f3,a3,d4]@3 ~@3 [g3,a#3,e4]@3 ~@3 [a3,c4,f4]@31 [a3,c4,f4]@5 ~@2 [g3,b3,e4]@3 ~@3 [f3,a3,d4]@2 ~@4 [e3,g3,c4]@28 ~@3]/2", // Dm Edim F Em Dm C
H: "[[e3,g3,c4]@5 ~@2 [f3,a3,d4]@2 ~@4 [e3,g3,c4]@2 ~@4 [d3,f3,b3]@25 [e3,g3,c4]@30 ~ [e3,g3,c4]@21]/2", // C Dm C Bdim C
I: "[~@4 [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [a3,c4,f4]@30 ~ [a3,c4,f4]@5 ~ [g3,b3,e4]@3 ~@4 [f3,a3,d4]@3 ~@3 [e3,g3,c4]@29 ~ [e3,g3,c4]@4 ~@3 [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [g3,b3,e4]@23]/3", // C Dm Em F Em Dm C Dm …
J: "[~@2 [f3,a3,d4]@30 [e3,g3,c4]@24 ~ [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@3 [g3,a#3,e4]@3 ~@4 [a3,c4,f4]@30 [a3,c4,f4]@5 ~@2 [g3,b3,e4]@3 ~@3 [f3,a3,d4]@2 ~@4 [e3,g3,c4]@28 ~@3 [e3,g3,c4]@5 ~ [f3,a3,d4]@2 ~@4 [e3,g3,c4]@2 ~@4 [d3,f3,b3]@18]/4", // Dm C Dm Edim F Em Dm C …
K: "[~@7 [e3,g3,c4]@30 ~ [e3,g3,c4]@24 [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@4 [g3,a#3,e4]@2 ~@4 [a3,c4,f4]@30 ~ [a3,c4,f4]@5 ~ [g3,b3,e4]@3 ~@3 [f3,a3,d4]@3 ~@3 [e3,g3,c4]@29 ~@2 [e3,g3,c4]@4 ~@2 [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [g3,b3,e4]@13]/4", // C Dm Edim F Em Dm C Dm …
L: "[~@12 [f3,a3,d4]@30 ~ [e3,g3,c4]@24 [e3,g3,c4]@5 ~@2 [f3,a3,d4]@3 ~@3 [g3,a#3,e4]@3 ~@3 [a3,c4,f4]@30 ~ [a3,c4,f4]@5 ~ [g3,b3,e4]@3 ~@3 [f3,a3,d4]@2 ~@4 [e3,g3,c4]@28 ~@3 [e3,g3,c4]@5 ~ [f3,a3,d4]@2 ~@4 [e3,g3,c4]@2 ~@5 [d3,f3,b3]@24 [e3,g3,c4]@30 ~]/5", // Dm C Dm Edim F Em Dm C …
M: "[~@42 [d3,f3,b3]@24 [e3,g3,c4]@29 ~]/2", // Bdim C
N: "[[e3,g3,c4]@23 ~ [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@3 [g3,a#3,e4]@2 ~@4 [a3,c4,f4]@29 ~ [a3,c4,f4]@4 ~@2 [g3,b3,e4]@3 ~@3 [f3,a3,d4]@3 ~@3 [e3,g3,c4]@28 ~@2 [e3,g3,c4]@4 ~@2 [f3,a3,d4]@3 ~@3 [g3,b3,e4]@2 ~@4 [g3,b3,e4]@24 [f3,a3,d4]@29 ~]/4", // C Dm Edim F Em Dm C Dm …
O: "[[e3,g3,c4]@23 ~ [e3,g3,c4]@4 ~@2 [f3,a3,d4]@3 ~@3 [g3,a#3,e4]@3 ~@3 [a3,c4,f4]@30 [a3,c4,f4]@5 ~ [g3,b3,e4]@3 ~@3 [f3,a3,d4]@2 ~@4 [e3,g3,c4]@27 ~@3 [e3,g3,c4]@5 ~ [f3,a3,d4]@2 ~@4 [e3,g3,c4]@2 ~@4 [d3,f3,b3]@24 [e3,g3,c4]@29 ~]/4", // C Dm Edim F Em Dm C Dm …
P: "[f3,a3,d4]@17 ~ [e3,g3,c4]@29 ~", Q: "[f3,a3,d4]@17 ~@19 g2@3 a2@2 ~ c3@2 ~@4, ~@18 [e3,g3,c4]@29 ~",
R: "[f3,a3,d4]@17 ~@19 g2@2 ~ a2@2 ~ c3@2 ~@4, ~@18 [e3,g3,c4]@29 ~", S: "[[f3,a3,d4]@17 ~ [e3,g3,c4]@77 ~]/2",
})).s("gm_piano").gain(0.45).pan(0.8)
// chords · epiano2
const epiano2 = note(`<
~ A@4 B@2 C D@2 E@4 F@2 G@2 H I@2 J@6 K@7 L@6 M@2 N@4 O@4 L@6 P@2 Q@4 R@4 S@13 T@2
>`.pickRestart({
A: "[~@52 [f4,a4,d5] ~@5 [f4,a4,c5]@18 ~@26 [c4,f4] ~@5 [c4,e4,g4]@18 ~@13 [g2,g3,b3,e4]@24 ~ [g2,f3,a3,d4]@18 ~ g2@3 a2@3 c3@3, ~@39 f2@43 ~@7 c2@43 ~@60, ~@102 a4@2 ~@79 [f3,a3,c4]@9]/4", // Dm F F5 C Em Dm F
B: "[~@4 [e3,g3,c4]@24 ~ [e3,g3,c4]@5 ~ [f3,a3,d4]@3 ~@3 [a#3,e4] ~@5 [a3,c4,f4]@31 ~ [a3,c4,f4]@4 ~@2 [g3,b3,e4]@3 ~@3 [f3,a3,d4]@2 ~@3, ~@4 c2@37 g3@2 ~@53]/2", // C Dm A#dim F Em Dm
C: "~@33 [e3,g3,c4]@4 ~@2 [f3,a3,d4]@3 ~@3 [g3,c4,e4]@2 ~, ~ [e3,g3,c4]@30 ~@17, ~@10 c2@9 ~@5", // C Dm C
D: "[~@3 g2@11 ~@2 g2@5 ~ a2@6 c3@19 g2@3 a2@3 c3@6 [c3,g3,c4,e4]@24 ~ [g3,c4,e4]@6 ~ [a3,d4,f4]@5, ~@3 [d3,f3,b3]@24 ~ [e3,g3,c4]@30 ~@38]/2", // C Dm Bdim C
E: "[~ [a#3,e4,g4]@2 ~@4 [c4,f4,a4]@29 ~@2 [c4,f4,a4]@6 ~ [b3,e4,g4]@6 [a3,d4,f4]@2 ~@4 [g3,c4,e4]@30 ~ [g3,c4,e4]@6 ~ [a3,d4,f4]@6 [b3,e4,g4]@2 ~@4 [b3,e4,g4]@24 ~ [a3,d4,f4]@18 ~ g2@3 a2@3 c3@4 ~@2 [c2,g3,c4,e4]@24 ~ [g3,c4,e4]@4, ~@151 [f3,a3,d4]@11 ~@30]/4", // Edim F Em Dm C Dm Em Dm …
F: "[~@3 [a3,d4,f4]@6 [a#3,e4,g4]@3 ~@3 [c4,f4,a4]@11 ~@2 [f4,d5]@2 ~@4 [f4,a4,c5]@11 ~ [c4,f4,a4]@6 ~ [b3,e4,g4]@6 [a3,d4,f4]@3 ~@3 [g3,c4,e4]@29 ~@2, ~@28 a4 ~@67]/2", // Dm Edim F Dm F Em Dm C
G: "[[g3,c4,e4]@6 ~ [a3,d4,f4]@6 [g3,c4,e4]@3 ~@16 g2@6 a2@3 ~@3 c3@24 ~ g2@3 a2@2 ~ [c3,g3,c4,e4]@21, ~@19 [f3,b3,d4]@25 [g3,c4,e4]@30 ~@22]/2", // C Dm C Bdim C
H: "~@2 [g3,c4,e4]@3 [a3,d4,f4]@3 [a#3,e4,g4] ~@2 [c4,f4,a4]@13", // C Dm Edim F
I: "[~@5 [c4,f4,a4]@6 [b3,e4,g4]@6 ~ [a3,d4,f4]@3 ~@3 [g3,c4,e4]@29 ~ [g3,c4,e4]@6 ~ [a3,d4,f4]@6 [b3,e4,g4]@2 ~@4 [b3,e4,g4]@23]/2", // F Em Dm C Dm Em
J: "[~@2 [a3,d4,f4]@18 g2@3 a2@3 c3@2 ~@4 [c2,g3,c4,e4]@24 ~ [g3,c4,e4]@6 [a3,d4,f4]@6 [a#3,e4,g4]@3 ~@4 [c4,f4,a4]@29 ~ [c4,f4,a4]@6 ~ [b3,e4,g4]@6 [a3,d4,f4]@3 ~@3 [g3,c4,e4]@29 ~@2 [g3,c4,e4]@6 [a3,d4,f4]@6 [b3,e4,g4]@2 ~@16 g2@6 ~ a2@3 ~@3 c3@24 g2@3 ~ a2@3 [c2,g3,c4,e4]@24 [g3,c4,e4]@6 [a3,d4,f4]@6 ~ [a#3,e4,g4]@2 ~@4 [c4,f4,a4]@10 ~@2 [f4,a4] ~@2, ~@20 [f3,a3,d4]@11 ~@143 [f3,b3,d4]@23 ~@2 [g3,c4,e4]@29 ~@57 d5@2 ~]/6", // Dm C Dm Edim F Em Dm C …
K: "[~@3 [f4,a4,c5]@10 ~@3 [c4,f4,a4]@6 [b3,e4,g4]@6 [a3,d4,f4]@3 ~@3 [g3,c4,e4]@28 ~@3 [g3,c4,e4]@6 [a3,d4,f4]@6 [b3,e4,g4]@2 ~@4 [b3,e4,g4]@24 ~@13 g2@3 ~@3 g2@3 ~ a2@3 c3@3 ~@3 [c2,g3,c4,e4]@24 [g3,c4,e4]@6 ~ [a3,d4,f4]@6 [a#3,e4,g4]@2 ~@4 [c4,f4,a4]@30 ~ [c4,f4,a4]@6 [b3,e4,g4]@6 [a3,d4,f4]@3 ~@3 [g3,c4,e4]@30 ~ [g3,c4,e4]@6 [a3,d4,f4]@6 [b3,e4,g4]@2 ~@17 g2@6 a2@3 ~@3 c3@25 g2@3 a2@3, ~@108 [a3,d4,f4]@17 ~ [f3,a3,d4]@12 ~@143 [f3,b3,d4]@24 [g3,c4,e4]@30 ~]/7", // F Em Dm C Dm Em C Dm …
L: "c3 ~@13 g2 a2", M: "[c3@3 ~@39 [g2,f3,b3,d4]@24 [c2,g3,c4,e4]@29 ~]/2",
N: "[[c3,g3,c4,e4]@23 ~ [g3,c4,e4]@6 [a3,d4,f4]@6 [a#3,e4,g4]@2 ~@4 [c4,f4,a4]@29 ~ [c4,f4,a4]@6 [b3,e4,g4]@5 ~ [a3,d4,f4]@2 ~@4 [g3,c4,e4]@28 ~@2 [g3,c4,e4]@6 [a3,d4,f4]@6 [b3,e4,g4]@2 ~@4 [b3,e4,g4]@23 ~ [a3,d4,f4]@17 ~ g2@3 a2@3 c3@3 ~@3, ~@180 [f3,a3,d4]@11 ~]/4", // C Dm Edim F Em Dm C Dm …
O: "[[c2,g3,c4,e4]@23 ~ [c2,g3,c4,e4]@6 [d2,a3,d4,f4]@6 [e2,a#3,e4,g4]@2 ~@4 f2@11 ~ a2@3 ~@15 [c4,f4,a4]@6 [b3,e4,g4]@5 ~ [a3,d4,f4]@3 ~@3 [g3,c4,e4]@29 ~ [g3,c4,e4]@6 [a3,d4,f4]@6 [b3,e4,g4]@2 ~@16 g2@6 a2@3 ~@3 c3@23 ~ g2@3 a2@3, ~@42 [c4,f4,a4]@29 ~@121, ~@53 g#2@2 ~@5 c3@29 ~@49 [f3,b3,d4]@24 [g3,c4,e4]@29 ~]/4", // C Dm Edim F Em Dm C Dm …
P: "[c3@3 ~@21 e2@5 ~ f2@5 ~ f#2@4 ~@2 [g2,f3,b3,d4]@23 ~ [c3,g3,c4,e4]@29 ~]/2", // G7 C
Q: "[[g3,c4,e4]@23 ~ [g3,c4,e4]@5 ~ [a3,d4,f4]@5 ~ [a#3,e4,g4]@2 ~@4 [c4,f4,a4]@29 ~ [c4,f4,a4]@5 ~ [b3,e4,g4]@5 ~ [a3,d4,f4]@2 ~@16 g2@2 ~@16 [g3,c4,e4]@6 [a3,d4,f4]@6 [b3,e4,g4]@2 ~@4 [b3,e4,g4]@23 ~@13 g2@2 ~@4 g2@3 a2@2 ~ c3@3 ~@3, ~@90 [g3,c4,e4]@28 ~@44 [a3,d4,f4]@17 ~ [f3,a3,d4]@11 ~, ~@108 c2@23 ~@61]/4", // C Dm Edim F Em Dm C Dm …
R: "[[c2,g3,c4,e4]@23 ~ [g3,c4,e4]@5 ~ [a3,d4,f4]@6 [a#3,e4,g4]@2 ~@4 [c4,f4,a4]@11 ~ [f4,d5]@2 ~@4 [f4,a4,c5]@11 ~ [c4,f4,a4]@6 [b3,e4,g4]@6 [a3,d4,f4]@2 ~@4 [g3,c4,e4]@11 ~ [a3,c4,e4]@2 ~@4 [g3,c4,e4]@11 ~ [g3,c4,e4]@5 ~ [a3,d4,f4]@5 ~ [b3,e4,g4]@2 ~@4 g2@10 ~@2 g2@3 ~@3 g2@3 a2@2 ~ [c3,g3,c4,e4]@29 ~, ~@54 a4 ~@83 [f3,b3,d4]@23 ~@31]/4", // C Dm Edim F Dm F Em Dm …
S: "[a3,c4,f4]@16 ~@2 [g3,c4,e4]@29 ~", T: "[[a3,c4,f4]@16 ~@2 [g3,c4,e4]@77 ~]/2",
})).s("gm_epiano2").gain(0.35).pan(0.2)
// chords · string ensemble 1
const string_ensemble_1 = note("<~@21 A B@3 C@4 D@5 ~@6 E@2 F@3 G H@3 ~@7 I@2 J@3 ~ K@4 L M@12 N@2>".pickRestart({
A: "~@2 [g4,e5]", // C
B: "[~@9 [g4,e5]@6 [a4,f5]@6 [a#4,g5]@4 ~@2 [c5,a5]@30 ~ [c5,a5]@5 ~ [b4,g5]@6 [a4,f5]@3 ~@4 [g4,e5]@29 ~ [g4,e5]@6 ~ [a4,f5]@6 [g4,e5]@3 ~@3 [f4,d5]@18]/3", // C Dm D# F Em Dm C Dm …
C: "[~@6 [e4,c5]@30 ~ [e4,c5]@23 ~@2 [e4,c5]@6 [f4,d5]@6 [g4,e5]@3 ~@3 [a4,f5]@30 ~ [a4,f5]@6 [g4,e5]@6 ~ f4@4 ~@2 [e4,c5]@28 ~@3 [e4,c5]@6 [f4,d5]@6 [g4,e5]@3 ~@3 [g4,e5]@13, ~@62 d5 ~@33]/4", // C Dm C Dm C Dm C
D: "[~@12 [f4,d5]@18 [c5,c6]@12 [g4,e5]@23 ~@2 [g4,e5]@6 [a4,f5]@6 [a#4,g5]@4 ~@3 [c5,a5]@30 [c5,a5]@5 ~@2 [b4,g5]@6 [a4,f5]@3 ~@3 [g4,e5]@29 ~@2 [g4,e5]@6 [a4,f5]@6 [g4,e5]@3 ~@3 [f4,d5]@25 [e4,c5]@30 ~]/5", // Dm C Dm D# F Em Dm C …
E: "[~@42 [d5,b5]@23 ~ [e5,c6]@29 ~]/2", // G C
F: "[[e5,g5]@39 ~@3 [f5,a5]@24 ~@6 [f5,a5]@6 [e5,g5]@6 [d5,f5]@3 ~@3 [c5,e5]@47 ~@7]/3", G: "[e5,g5]@3 [d5,f5]@5",
H: "[[g4,c5]@22 ~@2 [g4,c5]@6 [a4,d5]@6 [a#4,e5]@3 ~@3 [c5,f5]@11 ~ [c5,f5]@2 ~@4 [c5,f5]@11 ~ [c5,f5]@6 [b4,e5]@6 [a4,d5]@4 ~@2 [g4,c5]@42 ~@12]/3", // C5 D5 A#dim F5 E5 D5 C5
I: "[~@42 [d4,b4]@23 ~ [e4,c5]@29 ~]/2", // G C
J: "[[e5,g5]@23 ~ [e5,g5]@6 [f5,a5]@6 g5@4 ~@2 [a4,c5]@29 ~ [a4,c5]@6 [g4,b4]@6 [f4,a4]@3 ~@3 [e4,g4]@48 ~@6, ~@18 e5 ~@53]/3", // Em F Am G F Em
K: "[[g4,e5]@23 ~ [g4,e5]@6 [a4,f5]@6 g5@4 ~@2 [c5,a5]@12 [f5,c6]@33 ~@3 g5@46 ~@2 [f5,b5]@24 [g5,c6]@29 ~, ~@18 a#4 ~@26 c6@21 ~@30]/4", // C Dm F F5 Fdim C5
L: "~@36 g4@3 a4@3 c5@2 ~@4", M: "c5@35 ~ g4@3 a4@2 ~ c5@2 ~@4", N: "[c5@17 ~ c5@77 ~]/2",
})).s("gm_string_ensemble_1").gain(0.2).pan(0.3)
// chords · string ensemble 1
const string_ensemble_1_2 = note("<~@17 A B@3 C@4 D@8 E ~@6 F G@8 ~@7 H@5 I@8 J@8 K@4>".pickRestart({
A: "~@9 [c3,e4]@7", // C
B: "[~@3 [c3,e4]@6 [d3,f4]@6 ~ [e3,g4]@3 ~@3 [f3,a4]@30 ~ [f3,a4]@6 [e3,g4]@6 [d3,f4]@2 ~@4 [c3,e4]@29 ~@2 [c3,e4]@6 [d3,f4]@6 [e3,g4]@2 ~@4 [e3,g4]@24]/3", // C Dm Em F Em Dm C Dm …
C: "[~ [d3,f4]@29 ~@2 [g3,c4]@22 ~@2 [g3,c4]@6 ~ [a3,d4]@6 [a#3,e4]@3 ~@3 [c4,f4]@29 ~@2 [c4,f4]@6 [b3,e4]@6 [a3,d4]@3 ~@3 [g3,c4]@29 ~@2 [e3,c4]@6 [f3,d4]@6 [e3,c4]@3 ~@4 d3@12 g2@6, ~@29 b3@3]/4", // Dm C5 D5 A#dim F5 E5 D5 C5 …
D: "[a2@6 [c3,g3]@29 ~@2 [c3,g3]@23 ~@2 [c3,g3]@6 [d3,a3]@6 [e3,a#3]@2 ~@4 [f3,c4]@29 ~@2 [f3,c4]@5 ~ [e3,b3]@6 [d3,a3]@3 ~@3 [c3,g3]@27 ~@4 [c3,g3]@6 [d3,a3]@6 ~ [e3,b3]@2 ~@4 [e3,b3]@24 [d3,a3]@31 [g3,c4]@22 ~@3 [g3,c4]@6 [a3,d4]@6 [a#3,e4]@3 ~@3 [c4,f4]@29 ~@2 [c4,f4]@6 [b3,e4]@6 [a3,d4]@3 ~@4 [g3,c4]@29 ~ [e3,c4]@6 ~ [f3,d4]@6 [e3,c4]@3 ~@3 [d3,b3]@8]/8", // C5 D5 Edim F5 E5 D5 C5 D5 …
E: "~@4 g2@6 a2@6 ~ [c3,g3]@29 ~@2", F: "~@41 [g3,f4]@7",
G: "[~@17 [c4,g4]@29 ~ [g3,c4]@41 ~ [c4,f4]@28 ~@2 [c4,f4]@6 [b3,e4]@6 [a3,d4]@3 ~@3 [g3,c4]@49 ~@5 [g3,b3]@18 [f3,a3]@29 ~ [e3,c4]@22 ~@2 [e3,c4]@6 [f3,d4]@6 [g3,e4]@3 ~@3 [a3,f4]@28 ~@2 [a3,f4]@6 [g3,e4]@6 [f3,d4]@3 ~@3 [e3,c4]@42 ~@13]/8", // C5 F5 E5 D5 C5 G F C …
H: "[~@41 [g2,f3]@23 ~ [c3,g3]@29 ~ [c3,g3]@23 ~ [c3,g3]@5 ~ [d3,a3]@6 [e3,a#3]@3 ~@3 [f3,c4]@29 ~ [f3,c4]@6 [e3,b3]@6 [d3,a3]@2 ~@4 [c3,c4]@49 ~@6]/5", // G7 C5 D5 Edim F5 E5 D5 C
I: "[~@29 [g2,g3]@3 ~@3 [g2,g3]@3 [a2,a3]@3 [c3,c4]@3 [d3,d4]@3 [c3,c4]@22 ~@2 [c3,c4]@6 [d3,d4]@6 [e3,e4]@4 ~@2 [f3,f4]@44 ~@4 [c3,e4]@43 ~@5 [g3,d4]@24 [c3,e4]@29 ~ [c3,c4]@17 ~ [c3,c4]@28 ~@2 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]]/8", // G A C D C D E F …
J: "[~@17 [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]]/8", // C
K: "[~@17 [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@17 ~@13 [c3,c4]@17 ~ [c3,c4]@77 ~@2]/4", // C
})).s("gm_string_ensemble_1").gain(0.3).pan(0.7)
// drums · kick
const kick = s("bd").struct(`<
~@9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z@6 AA AB AC AD AE AF AG AF@2 AH Z@6 AA AI AC AD AE AF AG AF@2
AH AJ@13 AK ~
>`.pickRestart({
A: "~@11 x ~@21 x ~@2 x ~@11", B: "~@7 x ~@27 x ~@2 x ~@9", C: "~@9 x ~@27 x ~@2 x ~@7", D: "~@17 x ~@24 x ~@5",
E: "~@19 x ~@21 x ~@2 x ~@3", F: "~@21 x ~@24 x ~", G: "~@23 x ~@24", H: "x ~@24 x ~@22",
I: "~@2 x ~@21 x ~@2 x ~@20", J: "~ x ~@2 x ~@17 x ~@25", K: "~@2 x ~@2 x ~@18 x ~@23", L: "~@3 x ~@2 x ~@24 x ~@16",
M: "~ x ~@2 x ~", N: "~@6 x ~@2 x ~@24 x ~@13", O: "~@10 x ~@24 x ~@12", P: "~ x ~ x", Q: "~@13 x ~@21 x ~@2 x ~@9",
R: "~@11 x ~@2 x ~@18 x ~@14", S: "~@6 x ~ x ~@8 x ~@6", T: "~@14 x ~@2 x ~@24 x ~@5", U: "~@18 x ~@24 x ~@4",
V: "~@16 x ~@2 x ~@24 x ~@3", W: "~@7 x ~@7 x", X: "~@22 x ~@24 x", Y: "~@23 x ~@21 x ~@2",
Z: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3", AA: "x ~@2 x!2 ~@2 x!2 ~ x ~ x ~ x ~", AB: "~@6 x ~@8 x", AC: "x ~@6 x!2 ~@5 x ~",
AD: "~@7 x!2 ~@5 x ~", AE: "~@7 x!2 ~@7", AF: "x!2", AG: "x ~@6 x!2 ~@7", AH: "x ~@7 x ~@6 x", AI: "~@3 x ~@4",
AJ: "x ~@2 x ~@3 x!2 ~@2 x ~@2 x ~", AK: "x ~@2 x ~@2 x ~@9",
})).gain(0.4)
// drums · rim
const rim = s("rim").struct("<~@66 [~ x ~ x]!13 [~ x ~@2] ~>").gain(0.45)
// drums · clap
const clap = s("cp").struct("<~@34 [~ x ~@3 x ~@2]!6 [~ x ~@6] ~@9 [~ x ~@3 x ~@2]!6 [~ x ~@6] ~@24>").gain(0.45)
// drums · snare
const snare = s("sd").struct(`<
~@9 A B C D E F G H I J K L M N O A P Q C R S E T U G ~@7 V W@8 ~@7 X W@8 ~@15
>`.pickRestart({
A: "~ x", B: "~ x ~@24 x ~@21", C: "~@3 x ~@24 x ~@19", D: "~@5 x ~@24 x ~@17", E: "~@7 x ~@24 x ~@15",
F: "~@9 x ~@24 x ~@13", G: "~@11 x ~@24 x ~@11", H: "~@13 x ~@24 x ~@9", I: "~@15 x ~@24 x ~@7",
J: "~@16 x ~@24 x ~@6", K: "~@3 x ~@3 x", L: "~@19 x ~@23 x ~@4", M: "~@20 x ~@24 x ~@2", N: "~@21 x ~@24 x ~",
O: "~@23 x ~@23 x", P: "~ x ~@23 x ~@22", Q: "~@2 x ~@24 x ~@20", R: "~@5 x ~@23 x ~@18", S: "~ x ~@3 x ~@2",
T: "~@8 x ~@24 x ~@14", U: "~@5 x ~@11 x ~@6", V: "~@12 x ~@22 x!2 ~@5 x ~@5", W: "~ x ~ x",
X: "~@12 x ~@22 x!2 ~@8 x ~@2",
})).gain(0.3)
// drums · hihat
const hihat = s("hh").struct("<~@34 A B@5 C D ~@8 B@6 C E ~@23>".pickRestart({
A: "x ~ x!4 ~ x", B: "x!2 ~ x!3 ~ x", C: "x!2 ~ x!5", D: "x!3 ~ x!2 ~@2", E: "x!3 ~ x!2 ~ x",
})).gain(0.35)
// drums · low tom
const low_tom = s("lt").struct(`<
~@9 A B C D E F G H I J K L M F N O P Q R S T E U V G ~@8 W@2 X@6 ~@8 W@2 X@6 ~@15
>`.pickRestart({
A: "~@11 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~",
B: "~ x ~@11 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2",
C: "x ~@2 x ~@11 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x",
D: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5",
E: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@3",
F: "~@3 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~",
G: "~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2",
H: "x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x",
I: "~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@3 x ~@5 x ~",
J: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@12 x ~@5 x ~@2 x ~@2 x ~@5 x",
K: "~@2 x ~@2 x ~@5 x ~@2 x ~@3 x ~@11 x ~@5 x ~@2 x ~@2 x ~@5",
L: "x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4",
M: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@2",
N: "~@4 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x",
O: "~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@3 x ~",
P: "~ x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@3 x ~@2 x ~@5 x ~@2 x",
Q: "~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@3 x ~@2 x ~@11 x ~@5 x ~@2",
R: "x ~@2 x ~@5 x ~@2 x ~@3 x ~@5 x ~@2 x ~@2 x ~@11 x ~@5 x ~",
S: "~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@3 x ~@5",
T: "x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@4",
U: "~@2 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2",
V: "~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x", W: "x ~ x!3 ~ x!3 ~ x!3 ~@3",
X: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(0.2)
// drums · open hat
const open_hat = s("oh").struct("<~@34 [~ x ~@4 x ~] [~ x ~ x]!5 [~ x ~@2] ~@9 [~ x ~ x]!6 [~ x ~@2] ~@24>").gain(0.35)
// drums · crash
const crash = s("cr").struct("<~@79 [~@3 x ~@4] ~>").gain(0.4)
// drums · ride
const ride = s("rd").struct("<~@10 A B ~@6 C D ~@6 E F ~@13 G H@2 ~@13 G H@2 ~@21>".pickRestart({
A: "~@7 x ~@40", B: "~@3 x ~@12", C: "~@11 x ~@12", D: "~ x", E: "~@11 x ~@4", F: "~@17 x ~@6", G: "~@3 x ~@4",
H: "~@7 x",
})).gain(0.35)
stack(
bass, piano, epiano2, string_ensemble_1, string_ensemble_1_2, kick, rim, clap, snare, hihat, low_tom, open_hat, crash,
ride
)
More by Bill Withers
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.