0:00/0:00
// I'll Play for You — Seals & Crofts
// 90 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 92 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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 · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
A B C D C D E F G H I J K@2 L M N@2 L O P Q@2 R S@2 T U V@2 W@6 X@3 Y Z@3 AA@8 AB@7 AC@2 AD@6 AE AF@2 AG AH AI@3 AJ
AK@2 AL AM@5 AN@8 ~
>`.pickRestart({
A: "g4 f#4 e4 d4 g4 f#4 e4 d4", B: "g4 f#4 e4 d4 g4 f#4 e4 [d4,g4]", C: "[c4,e4,g4]@3 a4", D: "[d4,f#4,g4,b4]@3 g4",
E: "[c4,e4,g4,a4]", F: "g4", G: "b4 d4 f#4 d4 a4 d4 f#4 d4, d5", H: "c5 e4 g4 e4 c5 e4 g4 e4, e5",
I: "~ d4 f#4 d4 b3 d4 f#4 d4, b4", J: "~@2 e4@2 g4@2 e4@2 c4@2 e4@2 g4@2 ~ b3, c5@7 e4",
K: "[d4@2 d4!2 d4@2 d4 d4@3 d4@2 [f#3,b3,d4]@2 d4 e4@3 e4 e4@3 f#4 [c4,e4,g4]@8 d4, [f#3,b3]@12 ~@3 c4@8 ~@9]/2", // Bm C B5
L: "[d4,f#4,b4]@6 g4 ~@3 b3@2 f#4@2 d4@2, ~@7 d4@5 ~@4", M: "[c4,e4,b4]@6 g4 d4 ~@2 c4@2 g4@2 ~ b3, ~@4 d4@2 ~ e4",
N: "[d4 d4@2 d4 d4@2 d4 d4@3 d4@2 [f#3,b3,d4]@2 d4 e4 e4@2 e4@2 e4@2 f#4 g4@5 g4@3 d4, [f#3,b3]@12 ~@3 c4@8 [c4,e4]@8 ~]/2", // Bm B5 C
O: "[c4,e4,b4]@6 g4 ~@3 c4@2 g4 b4 d5@2, ~@7 d4@5 ~@4", P: "~@2 f#4@2 b4@2 f#4@2 ~@2 b4@2 a4 g4@3, d5@5 ~@3, ~ d4",
Q: "[~@2 c4@2 e4@2 c4 d4 [e4,g4,c5]@2 b4 g4@2 g4 ~@4 d4@2 ~ a4 b4 a4 ~@2 b3@2 f#4@2 d4@2, g4@7 ~@4 [c4,e4]@5 ~@4 f#4@4 g4@8, ~@14 b4@7 ~@11]/2", // C
R: "~@2 e4@2 g4@2 e4@2 c4@2 e4@2 g4 b4 d5@2",
S: "[[f#4,b4,d5]@2 e5 [f#4,b4,d5]@2 b4 a4 [c4,e4,g4]@6 b4 c5 [f#4,b4,d5]@2 e5@2 [b4,d5,g5]@3 e5 g4!2 b4 a4 [c4,e4,g4]@4 b4, ~@23 [e4,d5]@2 ~@7]/2", // Bm C Bm G C E7
T: "[b4,d5] g5@2 [d5,f#5,b5]@4 b4 b4@2 [f#4,b4,d5]@5 b4, ~@7 [d5,g5]@3 ~@6", // Bm G5
U: "[e4,g4,c5] b4 [c4,e4,g4]@10 [c4,e4,b4] a4 g4 a4", // C Cmaj7
V: "[[b3,d4]@18 [b3,d4]@6 [b3,d4]@12 b4@6 c5@3 ~@9 [g4,b4]@6 ~@5 [g4,b4]@6 ~@18 [g4,b4]@6 ~, g4@36 ~@9 d5@26 ~@25]/2", // Bm G
W: "[~@4 [f#4,b4]@6 ~@6 [f#4,b4]@6 ~@5 [f#4,b4]@6 ~@6 b4@3 c5@3 d5@6 [f4,b4,d5]@6 d5@5 d5@3 e5@9 [f4,b4,d5]@6 c5@6 b4@2 ~@9 [e4,g4]@6 ~@6 [e4,g4]@6 ~@11 g4@3 a4@6 ~@9 [d4,g4]@6 ~@5 [d4,g4]@6 ~@9 g4@3 a4@5 b4@3 c5@9 [e4,a4]@6 ~@6 [e4,a4]@6 ~@5 [e4,a4]@6 b4@6 c5@3 d5@9 [f#4,b4,d5]@5 d5@6 [f#4,b4,d5]@6 e5@6 [f#4,b4,d5]@6 c5@5 b4@3 a4@9 [c4,e4,a4]@5, ~@39 f#4@6 ~@17 [f4,b4]@6 ~@20 c5@26 ~@21 b4@26 ~@6 d4@6 ~@5 [d4,g4]@6 ~@6 c5@17 ~@18 [e4,a4]@6 ~@40 [d4,f#4]@6 ~@11]/6", // B5 Bdim Em G5 A5 Bm Am Fdim …
X: "[~ a4@6 b4@2 c5@9 [c4,e4,a4]@6 b4@6 c5@3 ~@8 [g4,b4]@6 ~@6 [g4,b4]@6 ~@6 [g4,b4]@6 ~@2 b4@3 c5@3 e5@9 [f#4,b4]@6 ~@5 [f#4,b4,e5]@6 ~@6 [f#4,b4]@6 ~@6 b4@3 c5@3 d5@5 [f4,b4,d5]@6 d5@4, ~@7 [c4,e4]@6 ~@17 [e4,a4]@6 ~@40 g4@6 ~@41 f#4@6 ~@15, ~@33 d5@26 ~@29 d5@11 ~@45]/3", // Am G B5 Esus2 B5 Bdim C A5
Y: "~@2 d5@3 e5@9 [f4,b4,d5]@5 c5@6 b4@3 c5@9 ~@3 a#4@3 a4@5, ~@2 [f4,b4]@6 ~@29 [e4,g4]@6 ~@5", // Bdim Fdim Em
Z: "[[e4,g4]@6 ~@12 g4@6 a4@5 b4@6 [d4,g4]@6 ~@6 [d4,g4]@6 ~@8 g4@3 a4@6 [d4,g4,b4]@6 c5@6 [e4,a4]@6 ~@5 [e4,a4]@6 ~@6 [c4,e4]@6 a4@6 [c4,e4,g4]@5 e5@12 f5@6 [g4,c5,e5]@4, ~@35 b4@17 ~@6 d4@6 ~@18 c5@17 ~@23 [g4,c5]@18 ~@4]/3", // Em G5 G A5 C C5
AA: "[~@2 [f4,a#4,d5]@12 c5@6 [f4,a#4]@6 [d4,g4,b4]@48 b4@6 d4@6 f#4@6 d4@6 a4@6 d4@6 f#4@6 d4@6 c5@6 e4@6 g4@6 e4@6 c5@6 g4@6 f#5@3 d5@3 a4@6 ~@6 d4@6 f#4@6 d4@6 b3@6 d4@6 f#4@6 d4@6 ~@6 e4@6 g4@6 e4@6 c4@6 e4@6 g4@6 ~@3 b3@3 d4@6 d4@3 d4@3 d4@6 d4@3 d4@9 d4@6 [f#3,b3,d4]@6 d4@3 e4@9 e4@3 e4@9 f#4@3 [c4,e4,g4]@24 d4@3 [d4,f#4,b4]@18 g4@3 d4, ~@74 d5@48 e5@36 ~@12 b4@48 c5@42 e4@6 [f#3,b3]@36 ~@9 c4@24 ~@49]/8", // A# A#5 G Bm C Bm B5
AB: "[~@8 b3@6 f#4@6 d4@6 [c4,e4,b4]@18 g4@3 d4@3 ~@6 c4@6 g4@6 ~@3 b3@3 d4@3 d4@6 d4@3 d4@6 d4@3 d4@9 d4@6 [f#3,b3,d4]@6 d4@3 e4@3 e4@6 e4@6 e4@6 f#4@3 g4@15 g4@9 d4@3 [d4,f#4,b4]@18 g4@3 ~@9 b3@6 f#4@6 d4@6 [c4,e4,b4]@18 g4@3 ~@9 c4@6 g4@3 b4@3 d5@6 ~@6 f#4@6 b4@6 f#4@6 ~@6 b4@6 a4@3 g4@9 ~@6 c4@6 e4@6 c4@3 d4, ~@50 d4@12 ~@6 e4@6 [f#3,b3]@36 ~@9 c4@24 [c4,e4]@24 ~@24 d4@15 ~@33 d4@15 ~@12 d5@30 ~@40, ~@290 d4@24 g4@21 ~]/7", // Cmaj7 Bm Cmaj7 B5 C
AC: "[~@2 [e4,g4,c5]@6 b4@3 g4@6 g4@3 ~@12 d4@6 ~@3 a4@3 b4@3 a4@3 ~@6 b3@6 f#4@6 d4@6 ~@6 e4@6 g4@6 e4@4, ~@11 [c4,e4]@15 ~@12 f#4@12 g4@24 ~@22, ~@20 b4@21 ~@55]/2", // C
AD: "[~@2 c4@6 e4@6 g4@3 b4@3 d5@6 [f#4,b4,d5]@6 e5@3 [f#4,b4,d5]@6 b4@3 a4@3 [c4,e4,g4]@18 b4@3 c5@3 [f#4,b4,d5]@6 e5@6 [b4,d5,g5]@9 e5@3 g4@3 g4@3 b4@3 a4@3 [c4,e4,g4]@12 b4@3 [b4,d5]@3 g5@6 [d5,f#5,b5]@12 b4@3 b4@6 [f#4,b4,d5]@15 b4@3 [e4,g4,c5]@3 b4@3 [c4,e4,g4]@30 [c4,e4,b4]@3 a4@3 g4@3 a4@3 [b3,d4]@18 [b3,d4]@6 [b3,d4]@12 b4@6 c5@3 ~@9 [g4,b4]@6 ~@6 [g4,b4]@4, ~@95 [e4,d5]@6 ~@42 [d5,g5]@9 ~@66 g4@36 ~@9 d5@25]/6", // Bm C Bm G C Bm C Cmaj7 …
AE: "~@19 [g4,b4]@6 ~@6 [f#4,b4]@6 ~@5 [f#4,b4]@6", // G B5
AF: "[~@6 [f#4,b4]@6 ~@5 b4@3 c5@3 d5@6 [f4,b4,d5]@6 d5@6 d5@3 e5@8 [f4,b4,d5]@6 c5@6 b4@3 ~@8 [e4,g4]@6 ~@6 [e4,g4]@6 ~@3, ~@17 f#4@6 ~@18 [f4,b4]@6 ~@20 c5@26 ~@3]/2", // B5 Bdim Em Fdim
AG: "~@9 g4@2 a4@6 ~@9 [d4,g4]@6 ~@6 [d4,g4]@6 ~@4, ~@17 b4@26 ~@5", // G5
AH: "~@4 g4@3 a4@6 b4@3 c5@8 [e4,a4]@6 ~@6 [e4,a4]@6 ~@6, ~ d4@6 ~@6 [d4,g4]@6 ~@5 c5@17 ~@7", // A5 G5
AI: "[[e4,a4]@5 b4@6 c5@3 d5@9 [f#4,b4,d5]@6 d5@5 [f#4,b4,d5]@6 e5@6 [f#4,b4,d5]@6 c5@6 b4@3 a4@8 [c4,e4,a4]@6 a4@6 b4@3 c5@9 [c4,e4,a4]@5 b4@6 c5@3 ~@9 [g4,b4]@6 ~@5 [g4,b4]@6 ~@6 [g4,b4]@5, ~@11 [e4,a4]@6 ~@41 [d4,f#4]@6 ~@17 [c4,e4]@6 ~@17 [e4,a4]@6 ~@34, ~@107 d5@26 ~@11]/3", // A5 Bm Am G A5 D C A5
AJ: "~@4 b4@3 c5@2 e5@9 [f#4,b4]@6 ~@6 [f#4,b4,e5]@6 ~@5 [f#4,b4]@6 ~, ~@7 g4@6 ~@5 d5@12 ~@18", // B5 Esus2 B5
AK: "[~@5 b4@3 c5@3 d5@6 [f4,b4,d5]@5 d5@6 d5@3 e5@9 [f4,b4,d5]@6 c5@5 b4@3 c5@9 ~@3 a#4@3 a4@6 [e4,g4]@6 ~@11 g4@4, ~@5 f#4@6 ~@17 [f4,b4]@6 ~@29 [e4,g4]@6 ~@27]/2", // Bdim Em Fdim Em
AL: "~@2 a4@6 b4@6 [d4,g4]@6 ~@5 [d4,g4]@6 ~@9 g4@3 a4@5, ~@14 b4@17 ~@6 d4@6 ~@5", // G5
AM: "[[d4,g4,b4]@6 c5@6 [e4,a4]@6 ~@6 [e4,a4]@6 ~@5 [c4,e4]@6 a4@6 [c4,e4,g4]@6 e5@12 f5@6 [g4,c5,e5]@6 [f4,a#4,d5]@12 c5@6 [f4,a#4]@6 [d4,g4,b4]@48 [f#4,b4,d5]@9 e5@3 d5@6 b4@3 g4@9 d4@6 g4@6 a4@3 [c4,e4,g4]@6 ~@40, ~@12 c5@17 ~@24 [g4,c5]@18 ~@169]/5", // G A5 C A# A#5 G Bm C …
AN: "[~@5 [f#4,b4,d5]@9 e5@3 d5@6 b4@3 g4@9 d4@6 g4@6 a4@3 [c4,e4,g4]@6 ~@40]/2", // Bm C
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.7)
// bass · electric bass finger · "Bass"
const bass = note(`<
~ A B@5 C D E D E D E D E D E D E D E D E F@4 G H@6 I J@6 K L@8 M@8 N@2 O@3 P Q R S@6 T U@3 V@8 W@7
>`.pickRestart({
A: "g3 f#3 e3 d3 g2 a2 b2 c3", B: "d3@3 d3 d3@4", C: "d3@3 d3 d3@2 d3@2", D: "g2", E: "g3", F: "g2 g3",
G: "g2@3 g2 g2@4",
H: "[g2@12 d2@11 g2@12 d2@11 g2@12 d2@12 g2@11 d2@12 g2@12 d2@11 g2@12 a2@6 b2@5 c3@12 g2@12 c3@5 e2@6 f2@6 f#2@6 g2@11 d2@12 g2@12 d2@11 d2@12 a2@11 d2@12 a2@12 d2@9]/6",
I: "~@2 d3@12 d2@12 d3@11 d2@11",
J: "[~ d3@11 d2@12 d3@12 g2@11 d2@12 g2@11 d2@12 g2@12 d2@11 g2@12 d2@12 g2@11 d2@12 g2@11 a2@6 b2@6 c3@12 g2@11 c3@6 e2@6 f2@6 f#2@5 g2@12 d2@12 g2@11 d2@12 d2@11 d3@9]/6",
K: "~@3 d2@12 d3@11 c3@18 c3@4", L: "[~ a#2@6 a#2@6 g2@24 g2@24 g3@24 g2@24 g3@24 g2@24 g3@24 g2@11]/8",
M: "[~@13 g3@24 g2@24 g3@24 g2@24 g3@24 g2@24 g3@24 g2@11]/8", N: "[~@13 g3@24 g2@11]/2", O: "~ g3@12 g2@11",
P: "~ g3@12 g2@9 g2@2", Q: "~ g2@12 g2@6 d2@5", R: "~@2 g2@11 d2@12 g2@11 d2@12",
S: "[g2@12 d2@11 g2@12 d2@11 g2@12 a2@6 b2@6 c3@11 g2@12 c3@6 e2@6 f2@5 f#2@6 g2@12 d2@11 g2@12 d2@12 d2@11 a2@12 d2@11 a2@12 d2@12 d3@11 d2@12 d3@11 d2@12 d3@12 d2@9]/6",
T: "~@2 d3@12 g2@12 d2@11 g2@11",
U: "[~ d2@11 g2@12 d2@12 g2@11 d2@12 g2@11 d2@12 g2@12 a2@5 b2@6 c3@12 g2@12 c3@5 e2@6 f2@4]/3",
V: "[~@2 f#2@6 g2@11 d2@12 g2@12 d2@11 d2@12 d3@11 d2@12 d3@12 c3@18 c3@6 a#2@12 a#2@12 g2@48 g2@48 g3@48 g2@48 g3@43]/8",
W: "[~@5 g2@48 g3@48 g2@48 g3@48 g2@48 g3@48 ~@43]/7",
})).s("gm_electric_bass_finger").gain(0.35)
// chords · banjo
const banjo = note("<A B ~@27 C D@6 E@3 F G@3 H@2 ~@20 I J K@2 L M N@3 O P@2 Q R@4 ~@10>".pickRestart({
A: "g4 f#4 e4 d4 g4 f#4 e4 d4", B: "g4 f#4 e4 d4 g4 f#4 e4 [d4,g4]",
C: "~@6 [g4,b4]@6 ~@5 [g4,b4]@6 ~@6 [g4,b4]@6 ~@6 [g4,b4]@6 ~", // G
D: "[~@4 [f#4,b4]@6 ~@6 [f#4,b4]@6 ~@5 [f#4,b4]@6 ~@6 b4@3 c5@3 d5@6 [f4,b4,d5]@6 d5@5 d5@3 e5@9 [f4,b4,d5]@6 c5@6 b4@2 ~@9 [e4,g4]@6 ~@6 [e4,g4]@6 ~@5 [e4,g4]@6 g4@3 a4@6 ~@9 [d4,g4]@6 ~@5 [d4,g4]@6 ~@9 g4@3 a4@5 b4@3 c5@9 [e4,a4]@6 ~@6 [e4,a4]@6 ~@5 [e4,a4]@6 b4@6 c5@3 d5@9 [f#4,b4,d5]@5 d5@6 [f#4,b4,d5]@6 e5@6 [f#4,b4,d5]@6 c5@5 b4@3 a4@9 [c4,e4,a4]@5, ~@39 f#4@6 ~@17 [f4,b4]@6 ~@20 c5@26 ~@21 b4@26 ~@6 d4@6 ~@5 [d4,g4]@6 ~@6 c5@17 ~@18 [e4,a4]@6 ~@40 [d4,f#4]@6 ~@11]/6", // B5 Bdim Em G5 A5 Bm Am Fdim …
E: "[~ a4@6 b4@2 c5@9 [c4,e4,a4]@6 b4@6 c5@3 ~@8 [g4,b4]@6 ~@6 [g4,b4]@6 ~@6 [g4,b4]@6 ~@2 b4@3 c5@3 e5@9 [f#4,b4]@6 ~@5 [f#4,b4,e5]@6 ~@6 [f#4,b4]@6 ~@6 b4@3 c5@3 d5@5 [f4,b4,d5]@6 d5@4, ~@7 [c4,e4]@6 ~@17 [e4,a4]@6 ~@40 g4@6 ~@41 f#4@6 ~@15, ~@33 d5@26 ~@29 d5@11 ~@45]/3", // Am G B5 Esus2 B5 Bdim C A5
F: "~@2 d5@3 e5@9 [f4,b4,d5]@5 c5@6 b4@3 c5@9 ~@3 a#4@3 a4@5, ~@2 [f4,b4]@6 ~@29 [e4,g4]@6 ~@5", // Bdim Fdim Em
G: "[[e4,g4]@6 ~@6 [e4,g4]@6 g4@6 a4@5 b4@6 [d4,g4]@6 ~@6 [d4,g4]@6 ~@8 g4@3 a4@6 [d4,g4,b4]@6 c5@6 [e4,a4]@6 ~@5 [e4,a4]@6 ~@6 [c4,e4]@6 a4@6 [c4,e4,g4]@5 e5@12 f5@6 [g4,c5,e5]@4, ~@35 b4@17 ~@6 d4@6 ~@18 c5@17 ~@23 [g4,c5]@18 ~@4]/3", // Em G5 G A5 C C5
H: "[~ [f4,a#4,d5]@6 c5@3 [f4,a#4]@3 [d4,g4,b4]@24 ~@11]/2", I: "~@16 [g4,b4]@3 ~@3 [g4,b4]@2",
J: "~@7 [g4,b4]@6 ~@6 [g4,b4]@6 ~@6 [f#4,b4]@6 ~@5 [f#4,b4]@6", // G B5
K: "[~@6 [f#4,b4]@6 ~@5 b4@3 c5@3 d5@6 [f4,b4,d5]@6 d5@6 d5@3 e5@8 [f4,b4,d5]@6 c5@6 b4@3 ~@8 [e4,g4]@6 ~@6 [e4,g4]@6 ~@3, ~@17 f#4@6 ~@18 [f4,b4]@6 ~@20 c5@26 ~@3]/2", // B5 Bdim Em Fdim
L: "~@3 [e4,g4]@6 g4@2 a4@6 ~@9 [d4,g4]@6 ~@6 [d4,g4]@6 ~@4, ~@17 b4@26 ~@5", // Em G5
M: "~@4 g4@3 a4@6 b4@3 c5@8 [e4,a4]@6 ~@6 [e4,a4]@6 ~@6, ~ d4@6 ~@6 [d4,g4]@6 ~@5 c5@17 ~@7", // A5 G5
N: "[[e4,a4]@5 b4@6 c5@3 d5@9 [f#4,b4,d5]@6 d5@5 [f#4,b4,d5]@6 e5@6 [f#4,b4,d5]@6 c5@6 b4@3 a4@8 [c4,e4,a4]@6 a4@6 b4@3 c5@9 [c4,e4,a4]@5 b4@6 c5@3 ~@9 [g4,b4]@6 ~@5 [g4,b4]@6 ~@6 [g4,b4]@5, ~@11 [e4,a4]@6 ~@41 [d4,f#4]@6 ~@17 [c4,e4]@6 ~@17 [e4,a4]@6 ~@34, ~@107 d5@26 ~@11]/3", // A5 Bm Am G A5 D C A5
O: "~@4 b4@3 c5@2 e5@9 [f#4,b4]@6 ~@6 [f#4,b4,e5]@6 ~@5 [f#4,b4]@6 ~, ~@7 g4@6 ~@5 d5@12 ~@18", // B5 Esus2 B5
P: "[~@5 b4@3 c5@3 d5@6 [f4,b4,d5]@5 d5@6 d5@3 e5@9 [f4,b4,d5]@6 c5@5 b4@3 c5@9 ~@3 a#4@3 a4@6 [e4,g4]@6 ~@5 [e4,g4]@6 g4@4, ~@5 f#4@6 ~@17 [f4,b4]@6 ~@29 [e4,g4]@6 ~@27]/2", // Bdim Em Fdim Em
Q: "~@2 a4@6 b4@6 [d4,g4]@6 ~@5 [d4,g4]@6 ~@9 g4@3 a4@5, ~@14 b4@17 ~@6 d4@6 ~@5", // G5
R: "[[d4,g4,b4]@6 c5@6 [e4,a4]@6 ~@6 [e4,a4]@6 ~@5 [c4,e4]@6 a4@6 [c4,e4,g4]@6 e5@12 f5@6 [g4,c5,e5]@6 [f4,a#4,d5]@12 c5@6 [f4,a#4]@6 [d4,g4,b4]@48 ~@43, ~@12 c5@17 ~@24 [g4,c5]@18 ~@121]/4", // G A5 C A# A#5 G C5
})).s("gm_banjo").gain(0.41).pan(0.3)
// chords · piano
const piano = note(`<
~@2 A B A B C D E F G H ~@8 I ~ I J K@2 L M N ~@7 O P@2 Q R@3 S@2 ~@28 T U V@2 W X@4 Y@10
>`.pickRestart({
A: "[c4,e4,g4]@3 a4", B: "[d4,f#4,g4,b4]@3 g4", C: "[c4,e4,g4,a4]", D: "g4", E: "b4 d4 f#4 d4 a4 d4 f#4 d4, d5",
F: "c5 e4 g4 e4 c5 e4 g4 e4, e5", G: "~ d4 f#4 d4 b3 d4 f#4 d4, b4",
H: "~@2 e4@2 g4@2 e4@2 c4@2 e4@2 g4@2 ~ b3, c5@7 e4", I: "~ d6@2 ~@5, g5 ~@3, ~ b5@4 ~@11",
J: "~@12 g4 b4 [d5,g5]@2, ~@6 d5 ~, ~@13 f#5@2 ~", // G5
K: "[[f#4,b4]@2 ~ [f#4,b4]@2 b4 a4 [e4,g4]@6 b4 c5 [b4,d5]@2 e5@2 [d5,g5]@3 e5 g4!2 b4 a4 [c4,e4,g4]@4 b4, ~@23 d5@2 ~@7]/2", // B5 Em Bm G5 C
L: "[b4,d5] g5@2 [d5,f#5,b5]@4 b4 b4@2 [f#4,b4,d5]@5 b4, ~@7 [d5,g5]@3 ~@6", // Bm G5
M: "[e4,g4,c5] b4 [c4,e4,g4]@10 [c4,e4,b4] a4 g4 a4", N: "[b3,d4]@6 [b3,d4]@2 [b3,d4]@4 b4@2 c5 ~, g4@3 ~",
O: "~@41 [g4,b4]@6 ~", // G
P: "[~@5 [g4,b4]@6 ~@6 [g4,b4]@6 ~@2 b4@3 c5@3 e5@9 [f#4,b4]@6 ~@5 [f#4,b4,e5]@6 ~@6 [f#4,b4]@6 ~@6 b4@3 c5@3 d5@5 [f4,b4,d5]@6 d5@4, ~@28 g4@6 ~@6 d5@11 ~@24 f#4@6 ~@15]/2", // G B5 Esus2 B5 Bdim
Q: "~@2 d5@3 e5@9 [f4,b4,d5]@5 c5@6 b4@3 c5@9 ~@3 a#4@3 a4@5, ~@2 [f4,b4]@6 ~@29 [e4,g4]@6 ~@5", // Bdim Fdim Em
R: "[[e4,g4]@6 ~@12 g4@6 a4@5 b4@6 [d4,g4]@6 ~@6 [d4,g4]@6 ~@8 g4@3 a4@6 [d4,g4,b4]@6 c5@6 [e4,a4]@6 ~@5 [e4,a4]@6 ~@6 [c4,e4]@6 a4@6 [c4,e4,g4]@5 e5@12 f5@6 [g4,c5,e5]@4, ~@35 b4@17 ~@6 d4@6 ~@18 c5@17 ~@23 [g4,c5]@18 ~@4]/3", // Em G5 G A5 C C5
S: "[~ [f4,a#4,d5]@6 c5@3 [f4,a#4]@3 [d4,g4,b4]@24 ~@11]/2", // A# A#5 G
T: "~@20 [g4,b4]@6 ~@5 [g4,b4]@6 ~@6 [g4,b4]@5, ~@11 d5@26 ~@11", // G
U: "~@4 b4@3 c5@2 e5@9 [f#4,b4]@6 ~@6 [f#4,b4,e5]@6 ~@5 [f#4,b4]@6 ~, ~@7 g4@6 ~@5 d5@12 ~@18", // B5 Esus2 B5
V: "[~@5 b4@3 c5@3 d5@6 [f4,b4,d5]@5 d5@6 d5@3 e5@9 [f4,b4,d5]@6 c5@5 b4@3 c5@9 ~@3 a#4@3 a4@6 [e4,g4]@6 ~@11 g4@4, ~@5 f#4@6 ~@17 [f4,b4]@6 ~@29 [e4,g4]@6 ~@27]/2", // Bdim Em Fdim Em
W: "~@2 a4@6 b4@6 [d4,g4]@6 ~@5 [d4,g4]@6 ~@9 g4@3 a4@5, ~@14 b4@17 ~@6 d4@6 ~@5", // G5
X: "[[d4,g4,b4]@6 c5@6 [e4,a4]@6 ~@6 [e4,a4]@6 ~@5 [c4,e4]@6 a4@6 [c4,e4,g4]@6 e5@12 f5@6 [g4,c5,e5]@6 [f4,a#4,d5]@12 c5@6 [f4,a#4]@6 [d4,g4,b4]@48 ~@43, ~@12 c5@17 ~@24 [g4,c5]@18 ~@121]/4", // G A5 C A# A#5 G C5
Y: "[~@8 d5@6 a5@3 d5@6 b5@9 c6@3 b5@3 [c5,e5,g5]@15 ~@43]/2", // C
})).s("gm_piano").gain(0.29)
// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~ A B C B C D E F G H I ~@32 J@8 K@8 L@6 ~@15 M@8 ~@3>".pickRestart({
A: "g4 f#4 e4 d4 g4 f#4 e4 [d4,g4]", B: "[c4,e4,g4]@3 a4", C: "[d4,f#4,g4,b4]@3 g4", D: "[c4,e4,g4,a4]", E: "g4",
F: "b4 d4 f#4 d4 a4 d4 f#4 d4, d5", G: "c5 e4 g4 e4 c5 e4 g4 e4, e5", H: "~ d4 f#4 d4 b3 d4 f#4 d4, b4",
I: "~@2 e4@2 g4@2 e4@2 c4@2 e4@2 g4@2 ~ b3, c5@7 e4",
J: "[~@26 b4@6 d4@6 f#4@6 d4@6 a4@6 d4@6 f#4@6 d4@6 c5@6 e4@6 g4@6 e4@6 c5@6 g4@6 f#5@3 d5@3 a4@6 ~@6 d4@6 f#4@6 d4@6 b3@6 d4@6 f#4@6 d4@6 ~@6 e4@6 g4@6 e4@6 c4@6 e4@6 g4@6 ~@3 b3@3 d4@6 d4@3 d4@3 d4@6 d4@3 d4@9 d4@6 [f#3,b3,d4]@6 d4@3 e4@9 e4@3 e4@9 f#4@3 [c4,e4,g4]@24 d4@3 [d4,f#4,b4]@18 g4@3 ~@9 b3@6 f#4@6 d4@6 [c4,e4,b4]@18 g4@3 d4, ~@26 d5@48 e5@36 ~@12 b4@48 c5@42 e4@6 [f#3,b3]@36 ~@9 c4@24 ~@48 d4@15 ~@34]/8", // Bm C Bm Cmaj7 B5
K: "[~@8 c4@6 g4@6 ~@3 b3@3 d4@3 d4@6 d4@3 d4@6 d4@3 d4@9 d4@6 [f#3,b3,d4]@6 d4@3 e4@3 e4@6 e4@6 e4@6 f#4@3 g4@15 g4@9 d4@3 [d4,f#4,b4]@18 g4@3 ~@9 b3@6 f#4@6 d4@6 [c4,e4,b4]@18 g4@3 ~@9 c4@6 g4@3 b4@3 d5@6 ~@6 f#4@6 b4@6 f#4@6 ~@6 b4@6 a4@3 g4@9 ~@6 c4@6 e4@6 c4@3 d4@3 [e4,g4,c5]@6 b4@3 g4@6 g4@3 ~@12 d4@6 ~@3 a4@3 b4@3 a4@3 ~@6 b3@6 f#4@6 d4@6 ~@6 e4@6 g4@6 e4@4, ~@2 d4@12 ~@6 e4@6 [f#3,b3]@36 ~@9 c4@24 [c4,e4]@24 ~@24 d4@15 ~@33 d4@15 ~@12 d5@30 ~@60 b4@21 ~@55, ~@242 d4@24 g4@21 ~@12 [c4,e4]@15 ~@12 f#4@12 g4@24 ~@22]/8", // Bm Cmaj7 C B5 C
L: "[~@2 c4@6 e4@6 g4@3 b4@3 d5@6 [f#4,b4,d5]@6 e5@3 [f#4,b4,d5]@6 b4@3 a4@3 [c4,e4,g4]@18 b4@3 c5@3 [f#4,b4,d5]@6 e5@6 [b4,d5,g5]@9 e5@3 g4@3 g4@3 b4@3 a4@3 [c4,e4,g4]@12 b4@3 [b4,d5]@3 g5@6 [d5,f#5,b5]@12 b4@3 b4@6 [f#4,b4,d5]@15 b4@3 [e4,g4,c5]@3 b4@3 [c4,e4,g4]@30 [c4,e4,b4]@3 a4@3 g4@3 a4@3 [b3,d4]@18 [b3,d4]@6 [b3,d4]@12 ~@34, ~@95 [e4,d5]@6 ~@42 [d5,g5]@9 ~@66 g4@36 ~@34]/6", // Bm C Bm G C Bm C Cmaj7 …
M: "[~ g6@95]/8",
})).s("gm_string_ensemble_1").gain(0.17)
// chords · electric guitar jazz · "Jazz Guitar"
const electric_guitar_jazz = note(`<
~@2 A B A B C D E ~@6 F ~@3 F ~@24 G@7 H@5 I@8 ~@17 J@2 K@2 L@4 K@2 ~
>`.pickRestart({
A: "[c4,e4,g4]@3 a4", B: "[d4,f#4,g4,b4]@3 g4", C: "[c4,e4,g4,a4]", D: "g4", E: "d5, b4 ~@7", F: "b4@6 g4 d4@9",
G: "[~@26 [f#4,b4]@48 [e4,a4]@36 ~@12 [f#4,b4]@48 [e4,a4]@45 ~@4 b4@47 ~ a4@47 [d4,f#4,b4]@18 ~@4, ~@218 f#4@48 e4@47 ~@23]/7", // B5 A5 B5 A5 Bm
H: "[~@26 b4@18 g4@3 d4@27 [f#4,b4]@48 [e4,a4]@36 ~@12 [f#4,b4]@48 b4@18 g4@3 d4, ~@85 d4@9 ~@26]/5", // B5 A5 B5
I: "[~@8 c4@6 ~@12 [f#4,b4]@48 [e4,a4]@36 ~@12 [f#4,b4]@48 [e4,a4]@36 ~@33 [c4,e4,g4]@18 b4@9 ~@33 [c4,e4,g4]@12 ~@33 [f#4,b4,d5]@15 b4@3 ~@22, ~@109 f#4@24 [f#4,b4]@24 [e4,a4]@18 ~@17, ~@218 b4@39 ~@127]/8", // B5 A5 B5 A5 C Bm B5 A5
J: "[~@5 [f#4,b4]@48 [e4,a4]@36 ~@7]/2", K: "[~@5 [f#4,b4]@48 [e4,a4]@43]/2",
L: "[~@5 [f#4,b4]@48 [e4,a4]@47 ~ [f#4,b4]@48 [e4,a4]@36 ~@7]/4", // B5 A5 B5 A5
})).s("gm_electric_guitar_jazz").gain(0.51)
// chords · brass section · "Brass"
const brass_section = note("<~@29 A@7 B@7 C@2 ~@20 D@7 E@7 F@3 ~@10>".pickRestart({
A: "[~@17 b4@3 c5@3 [b4,d5]@17 ~@24 b4@3 c5@3 [a4,d5]@17 ~@6 f3@46 e3@46 ~@12 b4@6 c5@3 b4@4 ~@34 [a4,c5]@6 [b4,d5]@3 [a4,c5]@4 ~@10 [g#4,b4]@4 [a4,c5]@7 ~@7 [b4,d5]@17 [c5,e5]@6 [b4,d5]@4 ~@13 a4@11, g3@23 f#3@23 ~@47 g3@23 a3@23 ~@29]/7", // Bm D5 Am Bm Am G#m Am Bm …
B: "[~@12 c5@23 ~ g3@46 f#3@46 ~ f3@46 e3@46 g3@46 ~ a3@46 c4@22]/7", C: "[~ a#3@12 g3@24 ~@11]/2",
D: "[~@44 b4@3 c5@3 [b4,d5]@17 ~@23 b4@3 c5@3 [a4,d5]@17 ~@6 f3@46 ~ e3@46 ~@12 b4@6 c5@2 b4@4 ~@34 [a4,c5]@6 [b4,d5]@3 [a4,c5]@4 ~@10 [g#4,b4]@4 ~ [a4,c5]@7 ~@6 [b4,d5]@17 [c5,e5]@6 [b4,d5]@2, ~@26 g3@46 ~ f#3@46 ~@93 g3@46 ~ a3@46 ~@31]/7", // Bm D5 Am Bm Am G#m Am Bm …
E: "[~@15 a4@23 ~ c5@23 g3@46 f#3@46 ~ f3@46 e3@46 ~ g3@46 a3@42]/7", F: "[~@5 c4@24 a#3@24 g3@48 ~@43]/3",
})).s("gm_brass_section").gain(0.41).pan(0.3)
// other · clarinet
const clarinet = note("<~@36 A@2 B C D@2 E ~@30 F@3 G H I J ~@12>".pickRestart({
A: "[~@41 g5@6 e5@3 d5@3 b4@3 c5@3 d5@3 g5@3 e5@3 g5@8 a5@3 a#5@3 d6@6 c6@3 b5@3 a5@2]/2",
B: "~ g5@2 e5@3 e5@3 g5@6 e5@6 d5@6 ~@6 d5@5 e5 ~ f5 f#5 ~ f5 e5@4",
C: "~@2 d#5 d5 ~ c#5 b4 ~ d5@6 ~@5 c#6 ~ c6 b5 ~ a5 f#5 ~@2 g5@3 c5@6 e5@6 c#5@2 e5@3",
D: "[g5@3 d5@3 c5@6 ~@29 b4@6 e5@3 g5@6 ~@2 a#5 ~ b5 c6 ~ c#6 d6 ~ c#6 c6 ~ b5 ~@2 a5 g5@3 ~@6 g#5 a5 ~ a#5 b5 c6@6 d6@3]/2",
E: "c6@4 ~@2 b5@3 ~@3 a5@3 ~@4 g5 ~ f#5 f5 e5 ~ d#5 ~@22",
F: "[~@20 g5@6 e5@2 d5@3 b4@3 c5@3 d5@3 g5@3 e5@3 g5@9 a5@2 a#5@3 d6@6 c6@3 b5@3 a5@3 g5@3 e5@3 e5@3 g5@5 e5@6 d5@6 ~@6 d5@6 e5 f5 ~ f#5 f5 e5@6 d#5 ~ d5 c#5 ~ b4 d5@6 ~@6 c#6 c6]/3",
G: "~ b5 a5 f#5 ~@2 g5@3 c5@6 e5@6 c#5@3 e5@3 g5@3 d5@3 c5@6 ~@9",
H: "~@19 b4@6 e5@3 g5@6 ~@3 a#5 b5 ~ c6 c#6 ~ d6 c#6 c6 ~ b5",
I: "~@2 a5 g5@3 ~@6 g#5 a5 ~ a#5 b5 ~ c6@6 d6@3 c6@4 ~ b5@3 ~@3 a5@3 ~@4 g5 ~ f#5", J: "f5 ~ e5 d#5 ~@44",
})).s("gm_clarinet").gain(0.37).pan(0.7)
// drums · kick
const kick = s("bd").struct(`<
~@2 A@6 ~@20 A B C D E F G H I J K L M N O P ~@4 Q R@15 S T U B C D E F V H W J K L M X Y Z@10 ~
>`.pickRestart({
A: "x ~@2 x!2 ~@3", B: "x ~@11 x ~@10 x ~@11 x ~@10 x ~", C: "~@10 x ~@11 x ~@10 x ~@11 x ~@2",
D: "~@9 x ~@10 x ~@11 x ~@10 x ~@4", E: "~@7 x ~@11 x ~@10 x ~@11 x ~@5", F: "~@5 x ~@11 x ~@11 x ~@10 x ~@7",
G: "~@4 x ~@10 x!2 ~@10 x ~@11 x ~@8", H: "~@2 x ~@11 x ~@11 x ~@10 x ~@10", I: "~ x ~@10 x!2 ~@10 x ~@11 x ~@10 x",
J: "~@11 x ~@10 x ~@11 x ~@11 x ~", K: "~@9 x ~@11 x ~@11 x ~@10 x ~@3", L: "~@8 x ~@10 x ~@11 x ~@11 x ~@4",
M: "~@6 x ~@11 x ~@10 x ~@11 x ~@6", N: "~@5 x ~@10 x ~@11 x ~@10 x ~@8", O: "~@3 x ~@11 x ~@10 x ~@17 x ~@3",
P: "~ x ~@5 x ~@5 x ~@10", Q: "~@26 x ~@20 x", R: "~@2 x ~@5 x ~@17 x ~@20 x", S: "~ x ~@2 x ~@8 x ~@8 x ~",
T: "~ x ~@11 x ~@5 x ~@4", U: "~@2 x ~@10 x ~@11 x ~@10 x ~@11", V: "~@4 x ~@10 x ~@11 x ~@11 x ~@8",
W: "~ x ~@10 x ~@11 x ~@11 x ~@10 x", X: "~@5 x ~@17 x ~@5 x ~@11 x ~@6", Y: "~@5 x ~@42",
Z: "~@5 x ~@20 x ~@2 x ~@5 x ~@12",
})).gain(0.25)
// drums · rim
const rim = s("rim").struct("<~@29 A B C D E F G H ~@11 I C@15 J K L A B C D E F M ~@7 A@10 ~>".pickRestart({
A: "~@17 x ~@23 x ~@6", B: "~@16 x ~@22 x ~@8", C: "~@7 x ~@11 x ~@4", D: "~@13 x ~@22 x ~@11",
E: "~@11 x ~@22 x ~@13", F: "~@10 x ~@22 x ~@14", G: "~@8 x ~@22 x ~@16", H: "~@7 x ~@22 x ~@17", I: "~@19 x ~@4",
J: "~@7 x ~@16", K: "~@11 x", L: "~@19 x ~@22 x ~@5", M: "~ x ~@4",
})).gain(0.5)
// drums · snare
const snare = s("sd").struct("<~@28 A ~@7 B ~@5 C ~@21 C ~@7 D ~@6 E ~@12>".pickRestart({
A: "~ x ~@2", B: "~@3 x ~@4", C: "~@19 x ~@4", D: "~@15 x", E: "~@17 x ~@30",
})).gain(0.4)
// drums · clap
const clap = s("cp").struct("<~@29 A B C D E F G H I J K L M N ~@22 O P A B C D E F Q R I J K L ~@13>".pickRestart({
A: "~@6 x ~@22 x ~@18", B: "~@4 x ~@22 x ~@20", C: "~@3 x ~@22 x ~@21", D: "~ x ~@22 x ~@23", E: "x ~@22 x ~@22 x ~",
F: "~@7 x ~@7 x", G: "~@20 x ~@22 x ~@4", H: "~@18 x ~@11 x ~@10 x ~@6", I: "~@5 x ~@11 x ~@10 x ~@11 x ~@7",
J: "~@3 x ~@11 x ~@11 x ~@10 x ~@9", K: "~@2 x ~@11 x ~@10 x ~@11 x ~@10", L: "x ~@11 x ~@11 x ~@10 x ~@11 x",
M: "~@10 x ~@11 x ~@11 x ~@10 x ~@2", N: "~@3 x ~@3 x ~@8", O: "~@2 x", P: "~@7 x ~@23 x ~@16",
Q: "~@8 x ~@11 x ~@10 x ~@11 x ~@4", R: "~@7 x ~@10 x ~@11 x ~@10 x ~@6",
})).gain(0.3)
// drums · hihat
const hihat = s("hh").struct("<~@2 A@17 B C@4 D ~@23 E F@15 G ~@16 H@10 ~>".pickRestart({
A: "~ x ~ x", B: "~ x ~@2", C: "x!4", D: "x!3 ~", E: "~@13 x ~@2 x ~@2 x ~@2 x ~",
F: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", G: "~ x ~@2 x ~@2 x ~@2 x ~@13",
H: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x",
})).gain(0.35)
// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@36 x!2 ~@4 x!2 ~@4] ~ [~@36 x ~ x!2 ~ x ~@6] ~@86>").gain(0.4)
// … 26 more lines
More by Seals & Crofts
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.