0:00/0:00
// Anyone Who Had a Heart — Cilla Black
// 54 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 4, 4/4 at bar 6, 5/4 at bar 7, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 38 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(54/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 · acoustic bass · "ACOU BASS"
const bass = note("<A B C D@3 E F G H I J K@4 L M N O P Q R S@2 T@2 U V W X Y Z AA AB AC AD@2>".pickRestart({
A: "a1@21 ~@8 e1@3", B: "a1@24 ~@5 e1@3", C: "a1",
D: "[~@5 e1@3 a1@11 ~@2 a1@3 bb1@13 e1@3 a1@33 ~@4 e1@3 a1@10 ~@3 a1@3]/3",
E: "bb1@10 ~@3 f1@3 bb1@7 ~ bb1@3 c2@2 d2@2 ~", F: "eb2@8 eb1@3 f1@2 g1@3 ab1@8 ab2 ~@2 ab1@2 bb1@3",
G: "c2@9 ~@2 c2 ~ c2@3 db2@4 ~ db2@4 ~@2 db2@2 ab1@3", H: "db1@8 eb1@4 ~ eb1@3 ab1@8 ab2 ~@2 ab1@2 bb1@3",
I: "c2@9 ~@4 c2@3 db2@4 ~ db2@4 ~@2 db2@2 ab1@3", J: "db1@7 ~ eb1@5 eb1@3 ab1@9 ~@2 ab1@2 bb1@3",
K: "[c2@12 ~ e1@3 a1@33 ~@4 e1@3 a1@12 ~ a1@3 bb1@13 e1@3 a1@33 ~@4 e1@3]/4", L: "a1@10 ~@3 a1@3 bb1@9 ~@4 f1@3",
M: "bb1@11 ~@2 bb1@3 eb2@7 ~ eb2@3 bb1@2 eb1@3", N: "ab1@10 ~@3 bb1@3 c2@9 ~@2 c2@5",
O: "db2@2 ~ db2 ~ db2@5 ~ db3@2 ab2@3 db2@3 c2@2 bb1@3 eb2@3 bb1@2 eb1@3",
P: "ab1@8 ab2 ~@2 ab1@2 bb1@2 ~ c2@12 ~ c2@3", Q: "db2@5 db2@4 ~@2 ab1@5 db1@5 db2@5 ~ eb2@2 eb1@3",
R: "ab1@8 ~@3 ab1@2 bb1@3 c2@16", S: "[a1@10 ~@3 a1@2 ~ a1@19 ~@2 e1@3 a1@11 e2@2 a1@3 bb1@8]/2",
T: "[c3@2 ~ f2@2 bb1@3 a1@11 ~@2 a1@3 a1@17 ~@4 e1@3 a1@8 ~@5 a1@3]/2", U: "bb1@11 ~@2 f1@3 bb1@10 ~ f2@2 bb1@3",
V: "eb2@6 ~@2 eb2@3 bb1@2 f1 ~@2 ab1@8 ab2 ~@2 ab1@2 bb1@3", W: "c2@9 ~@2 bb1@2 c2@3 db2@3 ~@2 db1@5 ~ db2@3 ~@2",
X: "f2@4 ~ eb2@5 ~ eb1@2 bb1@3 ab1@8 ab2 ~@2 ab1@2 bb1@3", Y: "c2@8 ~@3 c2@5 db2@5 db2@5 ~ ab1@5",
Z: "db1@3 db2@2 db1 ~@2 eb1@3 eb2@2 eb1@3 ab1@8 ab2 ~@2 ab1@2 bb1@3", AA: "f1@9 ~@2 f1@4 ~ ab1@9 ~@2 ab1@2 bb1@3",
AB: "f1@9 ~@2 f1@5 db2@4 ~ db2@5 ~ db1@5", AC: "db2@4 ~ db2@5 ~ db1@5 db2@7 ~ c2@8",
AD: "[bb1@8 eb1@4 ab1@29 ~@23]/2",
})).s("gm_acoustic_bass").gain(0.36)
// chords · piano · "A.PIANO 1"
const piano = note("<A B C D@2 E F G H I J K L M N@2 O@2 P Q R S T U V@2 W X Y Z AA AB AC AD AE AF AG@2>".pickRestart({
A: "~@3 [b3,c4] ~ [b3,c4]@2 ~ [b3,c4] ~@2 c4 ~ c4@2 ~ [a3,c4] ~@7 [a3,c4] ~@4 [e2,a3,c4]@3, a2 ~", // Cmaj7 Am
B: "~@3 [b3,c4] ~ [b3,c4] ~@2 [b3,c4] ~@2 [b3,c4] ~@4 a3 ~@2 [a3,c4] ~@4 [a3,c4] ~@4 [a3,c4]@3, a2 ~", // Cmaj7 Am
C: "~@5 [b3,c4] ~@2 [b3,c4] ~@2 [b3,c4] ~ [b3,c4]@2 ~ [a3,c4] ~@2 [a3,c4] ~ [a3,c4] ~@2 [a3,c4] ~@4 [a3,c4] ~@2, a2@3 ~", // Cmaj7 Am
D: "[[a3,c4] ~@4 [e2,a3]@2 ~ [f3,a3,c4] ~@2 [f3,a3,c4] ~ [f3,a3,c4] ~@2 [f3,a3,c4] ~@2 [f3,a3,c4]@2 [a2,f3,a3,c4]@2 ~ [g3,c4,e4]@8 [f3,bb3,d4]@7 ~@4 [b3,c4] ~ [b3,c4] ~@2 [b3,c4] ~@4 [b3,c4] ~@2 [a3,c4] ~@2 a3 ~@4, ~@8 a2@13 ~@3 bb2@15 ~ a2@16 ~@8]/2", // Am A5 F C Bb Cmaj7 Am
E: "[a3,c4] ~@2 [a3,c4] ~ [a3,c4] ~@2 a3 ~@2 a3 ~ [e2,c4]@2 ~ [f3,a3] ~@2 [f3,a3,c4] ~ [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@2 [f3,a3,c4]@2 ~, ~@13 a3 ~@2 a2@16", // Am C F
F: "g3@2 ~@3 c4@2 ~ f3 ~@4 bb3@3 ~@13 bb2@3, bb2@16 bb2@13 ~@3, e4 d4 [d4,f4] [d4,f4,a4], c4@5 ~@3 bb3@5 ~@3 bb3@5 bb3@11, ~@3 g3@5 ~@3 f3@5 ~@3 f3@8 f3@5", // Dm
G: "[f3,c4,f4,a4]@8 g3 ~@4 eb3@3 ~@8 [c4,ab4]@8, ~ [bb3,eb4,g4] [c4,eb4] ~, ~@11 g3@5 ab3@5 ab3@10 ~, ~@19 eb3@5 ~@8", // F Fm Eb Cm
H: "~@13 eb4@3 [db4,f4]@5 [bb3,eb4,g4]@6 ~@2 [bb3,eb4,g4]@3, [bb3,eb4]@15 ~@12 [ab3,db4,f4]@5, ~@5 c4@10 ~@17, ~@8 bb4@7 ~@17, ~@11 g4@5 ~@16", // Db Eb Eb5 Db
I: "~@5 [eb4,g4,bb4]@6 ~@2 [eb4,g4,bb4]@3 ~@13 ab4@3, [db4,f4,ab4]@11 [db4,f4,ab4]@5 [ab3,c5]@16, ~@16 [eb4,ab4]@11 eb4@5, ~@3 c4", // Eb Db Ab Ab5
J: "~@13 g4@3 ~@5 [bb3,eb4,g4]@6 ~@2 [bb3,eb4,g4]@2 ~, eb4 ~, [bb3,g4]@11 bb3@5 ~@16, ~@8 g3@8 [ab3,db4,f4]@11 [ab3,db4,f4]@5", // Eb Db
K: "[f4,ab4]@5 [f4,ab4,bb4]@5 ~@3 [eb4,g4,bb4]@3 ~@13 eb5@3, db4@9 ~@2 [db4,f4,ab4]@5 [eb4,ab4,c5]@16, ~@21 ab3@10 ~, ~@3 c6, ~@27 ab5@5", // Fm Bb7 Eb Db Ab
L: "c4@8 [g3,c4]@8 ~@3 c4@2 [b3,c4]@3 [b3,c4] ~@2 b3 ~ [b3,c4]@3, c5 a2", // C5 Cmaj7
M: "[a3,c4] ~@2 [a3,c4]@2 [a3,c4]@3 [a3,c4] ~@2 [a3,c4]@2 [a3,c4]@3 [a3,c4] ~@2 [a3,c4]@2 [a3,c4]@2 ~ [f3,a3,c4] ~@2 [a3,c4]@2 [f3,a3,c4]@3", // Am F Am F
N: "[[f3,a3,c4,e4]@3 [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@3 g3@2 ~ g3@2 [g3,c4,e4]@3 bb3@5 bb3@3 ~@3 [b3,c4]@2 [b3,c4] ~@2 [e3,b3,c4] ~@4 [b3,c4]@3 [e3,a3,c4] ~@2 [e3,a3] ~ [a3,c4]@3 [e3,a3,c4]@3 [e3,a3,c4]@2 [e3,a3,c4]@3 [a3,c4]@3 ~@2 [e2,e3,a3,c4]@3, ~@8 [c4,e4]@5 ~@3 d4@8 ~@40, ~@16 f3@3 ~@5 a2@16 ~@16 e3@5 ~@3]/2", // Fmaj7 C Cmaj7 Am A5 Am C
O: "[[f3,a3,c4] ~@2 [f3,a3]@2 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@2 [f3,a3,c4]@3 g3 ~@2 g3@2 [g3,c4,e4]@2 ~ [bb3,d4]@8 ~@13 d4@3 ~@8 [bb3,eb4,g4]@8, a2@16 bb2@32 eb3@5 eb3@11, ~@16 [c4,e4]@5 ~@3 f3@2 ~@6 bb3@16 ~@3 bb2@5 ~@8, ~@4 [d4,f4] [f4,a4] ~@2, ~@37 f3@3 d4@3 c4@5 [c4,f4,a4]@8 ~@8]/2", // F C Bb Eb C Dm F
P: "ab3@8 ab3@8 ~@13 ab3@3, [eb3,c4,eb4] ab4, ~@19 eb4@8 eb4@5, ~@21 ab3@8 ~@3, ~@3 eb5", // Cm
Q: "~@13 [eb4,g4]@3 ab3 ~@4 [g4,bb4]@5 ~@3 [g4,bb4]@2 ~, [db4,f4]@11 [db4,f4]@5 [db4,f4,ab4]@9 ~@7, ~@3 ab3@5 ab3@8 ~@3 ab3@6 ~@7, ~@5 [eb4,g4]@8 ~@14 [f4,ab4]@5", // Eb Gm Db Eb Fm
R: "~@13 eb4@2 ~ [eb4,g4]@11 ~@2 g4@3, [ab3,c5] ~, ab4@11 ab4@5 ~@11 eb4@5, ~ eb5 ~@2", // Eb Ab
S: "~@5 [bb3,eb4,g4]@6 ~@2 [bb3,eb4,g4]@2 ~ [db4,f4,ab4]@8 eb4@2 ~@3 [eb4,g4,bb4]@2 ~, [ab3,db4,f4]@11 [ab3,db4,f4]@5 ~@8 [g4,bb4]@5 ~@3, ~@27 [db4,f4,ab4]@5", // Eb Db Eb Db Gm Db
T: "~@13 ab4@3 ~@3 e3@13, c5 ~, [eb4,ab4]@8 c4@8 c4@11 ~@5, ~@3 eb3@13 ~@16, ~@5 ab3@6 eb4@5 [e4,g4,c5]@16", // Ab5 C
U: "~@3 [e3,b3,c4] ~ [b3,c4] ~@2 [e3,b3,c4] ~@2 b3 ~ [b3,c4]@2 ~ [e3,a3,c4] ~@2 a3 ~ [a3,c4] ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@2, a2 ~", // Cmaj7 Am
V: "[[e3,a3,c4] ~@2 [e3,a3,c4] ~ [e2,c4]@2 ~ c4@2 ~ [f3,a3]@2 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@2 [f3,a3,c4]@2 ~ [g3,c4,e4]@8 [bb3,d4]@8 ~@5 [b3,c4] ~@2 [e3,b3,c4] ~@2 [b3,c4] ~ [b3,c4] ~@2 [e3,a3,c4] ~@2 a3 ~ [a3,c4] ~@2, ~@5 [e3,a3] ~@2 a2@15 ~ bb2@16 a2@16 ~@8, ~@8 a3 ~@55]/2", // Am C F C Bb Cmaj7 Am A5
W: "[e3,a3,c4] ~@2 [a3,c4] ~ [e3,a3,c4] ~@2 [e3,a3,c4] ~@2 [a3,c4] ~ [e2,e3,a3,c4]@3 [f3,a3,c4] ~@2 [f3,a3,c4]@2 [f3,a3,c4]@3 [f3,a3,c4,e4]@3 [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 ~, ~ a2", // Am F Fmaj7
X: "[g3,c4,e4]@8 bb3@11 ~@10 bb4@3, bb2@27 f4@5, ~ d4@2 d4, ~@19 f3@13, ~@21 bb3@11", // C
Y: "~@8 [g4,bb4]@8 c4@11 ~@2 db4@3, [f4,a4,c5] ~, ~@3 bb3@14 ~@10 c4@5, ~@5 eb4@11 [ab3,eb4,ab4,c5]@16", // Gm F Ab
Z: "~@13 [bb3,eb4]@3 [f3,ab3,db4]@5 ~@6 ab3@2 [ab3,bb3,eb4]@2 ~, eb4@13 ~@19, bb3@5 bb3@8 ~@19, ~@3 ab3@13 ~@11 [f3,db4]@5, ~@8 g3@8 ~@5 [g3,bb3,eb4]@10 ~", // Eb5 Db Absus2 Db Eb
AA: "[f3,ab3,db4]@5 ~@8 [g4,bb4]@2 ~@14 ab4@3, ab4@3 ~@2 [eb3,bb3,eb4,bb4]@10 ~@4 eb3@13, ~@11 [f4,ab4]@5 [ab4,c5]@11 eb4@5, ~@21 ab3@10 ~, ~@24 c4@7 ~", // Db Gm Eb5 Fm Ab
AB: "[ab3,bb3,eb4,g4]@9 ~@4 [ab3,bb3,eb4]@3 [ab3,db4]@4 ~ [ab3,db4]@5 ~@3 eb4@3, ~@21 eb4@6 [ab3,db4]@5", // Eb Absus2 Db5
AC: "[f3,ab3,db4,f4]@5 [f3,ab3,db4,f4]@3 ~@5 [eb3,bb3,eb4,g4]@2 ~@14 bb4@2 ~, ~@8 eb3@5 ~@6 eb3@12 ~, ~@11 f4@5 [c4,eb4,ab4]@11 [c4,eb4,ab4]@4 ~, ~@24 ab3@7 ~", // Db Eb Ab
AD: "[f3,c4,f4,a4,c5]@16 [c4,eb4,ab4]@11 ~@2 bb4@2 ~, ~@8 c5@7 ~, ~@27 [c4,eb4,ab4]@4 ~", // F Ab
AE: "[c4,f4,a4,c5]@16 [c4,f4,ab4,c5]@5 g4@5 ~ eb5@2 db5@2 ~, ~@21 [c4,eb4,bb4]@9 ~@2", // F Fm Cm7
AF: "[c4,eb4,f4,ab4,c5]@5 [g4,bb4]@6 eb5@2 db5 ~@2 [c4,f4,ab4,c5]@5 ~@3 [bb3,g4,bb4]@5 ~@3, ~@5 [bb3,eb4]@9 ~@18", // Fm7 Gm Fm Eb Eb5
AG: "[[ab3,f4,ab4]@2 ~@2 [bb3,g4,bb4] ~ [c4,eb4,ab4,c5]@13 ~@13]/2", // Db Eb Ab
})).s("gm_piano").gain(0.3).pan(0.2)
// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<A B C D E F ~@6 G H I J K ~@3 L ~ M N O P Q R ~@4 S ~@5>".pickRestart({
A: "~@11 b3 ~ b3@2 ~@4 a3 ~ [a3,c4] ~@10", B: "~@13 [b3,c4]@2 ~ c4 ~@4 [a3,c4] ~@5 [a3,c4] ~ e2@3",
C: "~@3 [b3,c4] ~@23 [a3,c4] ~@4", D: "~@3 [a3,c4] ~ c4@2 ~@25", E: "~@19 b3 ~@7 c4 ~ a3 ~@2",
F: "~@8 c4 ~@2 c4 ~@4 c4 ~@15", G: "~@8 bb3@8 ~@3 b3@2 ~@6 c4@2 ~@3, e3 ~", H: "~@27 f3@2 ~@3", I: "~@19 f3@5 ~@8",
J: "~@5 e3@3 ~@3 c4 ~@15 [a3,c4]@2 ~@3", K: "~@3 c4@2 ~@27", L: "~ bb3", M: "~@27 c4@5, ~@21 bb3@10 ~",
N: "~@11 [e3,c4] ~ e3 ~@5 [e3,c4] ~ e3 ~@10", O: "~@8 f3 ~@2 c4@2 ~@19",
P: "f3@8 ~@3 [e3,b3,c4]@2 e3 ~@5 e3 ~ e3 ~@5 e3 ~ e3 ~@2", Q: "~@3 e3 ~@7 e3 ~@20", R: "~@8 f3@11 ~@13",
S: "~@21 ab3@3 ~@8",
})).s("gm_piano").gain(0.18).pan(0.2)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
A B C D E F G@5 H I J K L M@2 N@2 O P Q R S T U V@2 W X Y Z AA AB@2 AC@2
>`.pickRestart({
A: "~@2 [b3,c4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~ [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2", // Cmaj7 Am
B: "~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~ [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,e4] ~@2 [a3,c4,e4] ~@2", // Cmaj7 Am A5 Am
C: "~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~ [b3,e4] ~@2 [b3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2", // Cmaj7 E5 Cmaj7 Am
D: "[a3,c4,e4] ~ [a3,e4] ~@2 [a3,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [bb2,g3,c4,e4]@8", // Am A5 Fmaj7 C7
E: "[f3,d4,f4]@8 [e3,c4,e4] ~ [c4,e4] ~@2 [c4,e4] ~@2 [b3,c4,e4] ~ [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,e4] ~@2 [a3,c4,e4] ~@2", // Dm C Cmaj7 Am A5 Am
F: "[a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2", // Am A5 Am Fmaj7
G: "[[g3,c4,e4]@8 [bb3,d4]@14 ~@2 [a3,d4]@8 [c4,c5]@8 [bb3,g4,bb4]@8 ab4@16 bb4@16 [f4,ab4]@5 [eb4,g4,bb4]@5 ab4@3 [eb4,bb4]@3 [f4,ab4,db5]@5 [eb4,g4,bb4]@5 [f4,ab4]@3 bb4@3 [ab4,c5]@8 ~@2 bb4@3 ab4@3 [c4,g4,bb4]@13 ~@3 [db4,f4,ab4]@5 [eb4,g4,bb4]@5 [db4,f4]@3 [eb4,g4,bb4]@3, f3@21 ~@3 [f4,a4]@16 ~@8 [c4,eb5]@32 db4@10 db4@12 ~@7 eb4@19 ~@26 ab4 ~@5, ~@64 g4@12 ~@14 f4@5 ~@6 eb5@11 ab3@16 ~@32, ~@120 eb5@21 ~@19]/5", // C Bb D5 C Eb Fm Eb Eb5 …
H: "[f4,ab4]@2 g4@3 f4@3 [g4,bb4]@2 [f4,ab4]@3 [g4,bb4]@3 [ab3,ab4,c5]@16, db4@3 ~ eb4@4 ~@8", // Fm Gm Fm Gm Ab
I: "[g3,c4,e4]@16 ~@2 [b3,c4,e4] ~@2 [b3,c4] ~@2 [b3,c4,e4] ~ [b3,c4] ~@2 [b3,c4,e4] ~@2", // C Cmaj7
J: "[a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [g3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2", // Am C Fmaj7
K: "[f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [g3,c4,e4] ~ [g3,c4,e4] ~@2 [g3,c4,e4]@3 f3@2 c4@3 f4@3 [c4,e4] ~ [c4,e4] ~@2 [c4,e4] ~@2", // Fmaj7 C
L: "[b3,c4,e4] ~ [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [g3,c4,e4] ~@2", // Cmaj7 Am C
M: "[[f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [g3,c4,e4]@8 [bb3,d4]@16 ~@5 a4@2 ~ [c4,f4,a4]@8 [bb3,g4,bb4]@8, ~@40 f3@15 ~@9, ~@40 d4@5 ~@19, ~@42 [c4,f4]@5 ~@17]/2", // Fmaj7 C Bb F Eb F5
N: "[[c4,c5]@13 [db4,db5]@3 ~@8 [c4,bb4]@8 [f4,ab4]@5 [eb4,bb4]@5 [f4,ab4]@3 [eb4,bb4]@3 [db4,f4,ab4,c5]@5 [eb4,g4,bb4]@5 [db4,f4,ab4]@3 [eb4,g4,bb4]@3, ~@16 eb5@31 ~@17, ~ eb4 ~@2]/2", // C Db C7 Fm Eb5 Fm Eb5 Dbmaj7 …
O: "[ab4,c5]@8 ~@2 bb4@3 ab4@3 ~@8 c4@7 ~, eb4, ~ [ab3,eb5] [g4,bb4]@2", // Ab Ab5 Gm
P: "[db4,f4,ab4]@5 [eb4,g4,bb4]@5 [db4,f4,ab4]@3 [eb4,g4,bb4]@3 [db4,f4,ab4,c5]@2 [eb4,g4,bb4]@3 [db4,f4,ab4]@3 [eb4,g4,bb4]@2 [db4,f4,ab4]@3 [eb4,g4,bb4]@3", // Db Eb Db Eb Dbmaj7 Eb Db Eb …
Q: "[ab3,ab4,c5]@8 [c4,c5]@2 [ab3,ab4]@3 [eb3,eb4]@3 [c4,e4]@15 ~, ~@16 g3 ~@15", // Ab C Ab Eb C
R: "e3 ~ [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~ [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,e4] ~@2 [a3,c4,e4] ~@2", // Cmaj7 Am A5 Am
S: "[a3,c4,e4] ~ [a3,c4,e4] ~@2 [g3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2 [g3,c4,e4] ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~@2", // Am C Fmaj7 C
T: "[f3,bb3,d4] ~ [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2 [e3,b3,c4] ~ [e3,b3,c4] ~@2 [e3,b3,c4] ~@2 [e3,b3,c4] ~ [e3,b3,c4] ~@2 [e3,b3,c4] ~@2 [e3,a3,c4] ~ [e3,a3] ~@2 [e3,a3,c4] ~@2", // Bb Cmaj7 Am A5 Am
U: "[e3,a3,c4] ~ [e3,a3,c4] ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@2 [e3,g3,c4] ~@2 [f3,a3,c4] ~ [f3,a3,c4] ~@2 [f3,a3,c4] ~@2 [f3,c4,e4] ~ [f3,c4,e4] ~@2 [f3,c4,e4] ~@2", // Am C F Fmaj7
V: "[[f3,c4,e4]@2 f3@3 c4@3 bb3@5 [c4,e4]@3 d4@7 ~ d4@7 ~ [c4,c5]@8 [eb4,g4,bb4]@8 ~@8 c6@8, ~@8 [f3,d4]@8 f4@23 ~@9 [eb4,eb5]@16, ~@3 a4@2 ~@3]/2", // Fmaj7 C Eb Dm Eb
W: "bb5@8 g4@8 [ab4,db5,f5]@5 [g4,c5,eb5]@5 [f4,ab4,db5]@3 [g4,eb5]@3, [c5,g5] ~", // Db Cm Db Cm C5
X: "[ab4,db5,f5]@5 [bb4,eb5,g5]@5 [ab4,db5,f5]@3 [bb4,g5]@3 [c5,ab5]@8 [c5,eb5]@8, ~@13 eb5@10 ~@9", // Db Eb Db Eb Fm Cm
Y: "~@8 eb4@8 [f4,ab4]@5 [eb4,g4,bb4]@4 ~ [db4,f4,ab4]@3 [eb4,g4,bb4]@3, [c4,bb4]@16 db4@9 ~@7, ~@2 g4@13 ~@17", // Fm Eb Db Eb C7
Z: "[db4,f4,ab4]@8 [eb4,g4,bb4]@8 [ab3,ab4,c5]@13 [ab3,ab4]@3, ~@29 [c4,bb4] ~@2", // Db Eb Ab C7
AA: "~@8 [f4,f5]@8 [ab4,c5,eb5]@8 [c5,eb5,c6]@5 [bb4,bb5] ~@2, c5@15 ~@17, [c4,a4]@3 ~@5", // F Ab Cm Bb F
AB: "[a5@8 f4@7 ~ [f4,ab4,c5]@5 [eb4,g4,bb4]@3 ~@2 [eb4,eb5]@3 db5@3 [f4,ab4,c5]@5 [c4,eb4,g4,bb4]@4 ~ eb5@3 db5@2 ~ [db4,f4,ab4,c5]@8 [c4,eb4,g4,bb4]@8, [a4,c5,f5]@15 ~@14 db4@7 ~@28]/2", // Fm Eb Fm Cm7 Dbmaj7 Cm7 F
AC: "[[db4,f4,ab4]@6 ~@2 [eb4,g4,bb4]@3 ~ [ab2,ab3,eb4,ab4,c5]@30 ~@22]/2", // Db Eb Ab
})).s("gm_string_ensemble_2").gain(0.25).pan(0.1)
// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
~@2 A B C D E F G H I J K L M N O@2 P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@2
>`.pickRestart({
A: "~@5 a3@3 c4@3 ~@8 a3@2 e3@3 c4@3 ~@2 b3@3",
B: "e3@3 a3@2 e3@3 ~@3 f3@2 b3@3 f3@3 a3@2 f3@3 ~@3 g3@2 c4@3, ~@8 c4@5 ~@11 e4@5 ~@3",
C: "d4@3 ~@2 bb3@3 ~@3 a3@2 e3@3 c4@3 e3@2 b3@3 ~@3 a3@2 e3@3",
D: "c4@3 e3@2 b3@3 a3@3 ~@2 c4@2 ~ e3@3 a3@2 e3@3 c4@3 ~@2 b3@3, ~@27 f3@4 ~",
E: "e4@3 ~@2 c4@3 d4@3 ~@2 bb3@5 ~@3 bb3@3 d4@3 bb3@2 f3@3, ~@3 g3@5 ~@11 f3@4 ~@9",
F: "~@5 a3@3 bb3@3 g3@3 ~@5 eb3@2 ab3@3 c4@3 ab3@2 eb3@2 ~, c4@5 ~@27, ~@3 f3@4 ~@25",
G: "~@3 g3@2 bb3@3 eb4@3 bb3@2 g3@3 ~@5 ab3@3 db4@3 ab3@2 f3@3, ~@19 f3@6 ~@7",
H: "~@3 db3@2 ab3@3 eb3@3 eb4@2 bb3@3 ab3@3 eb3@2 ab3@3 c4@3 ab3@2 eb3@3",
I: "g3@3 eb3@2 g3@3 c4@2 ~ g3@2 eb3@2 ~ f3@2 ~ ab3@2 g3@3 bb3@3 ab3@2 c4@3",
J: "bb3@3 eb4@2 db4@3 f4@3 ~@2 bb3@3 ab3@3 bb3@3 ~@2 eb4@2 ~ c4@2 ab3@3, ~@11 eb4@5 ~@16",
K: "c4@8 bb3@6 ~@5 a3@3 ~@2 c4@4 ~ b3@3", L: "a3@3 ~@2 a3@3 c4@3 ~@2 b3@3 a3@3 ~@2 b3@3 a3@3 ~@2 a3@3",
M: "c4@3 f3@2 a3@3 c4@3 f3@2 c4@3 bb3@2 ~@3 bb3@3 a3@3 ~@2 a3@3, ~@27 e3@4 ~",
N: "c4@2 ~ e3@2 b3@3 a3@3 ~@2 a3@3 c4@2 ~@3 b3@3 a3@3 ~@2 b3@3",
O: "[a3@2 ~ e3@2 a3@3 c4@2 ~ f3@2 c4@3 e4@8 d4@27 f3@2 c4@3 bb3@8]/2",
P: "~@3 eb3@2 ab3@3 c4@3 ab3@2 ~@6 eb3@2 bb3@3 eb4@3 bb3@2 eb3@3",
Q: "ab3@2 ~ f3@2 bb3@3 g3@3 c4@2 ab3@3 eb4@3 bb3@2 f4@3 db4@3 eb4@2 bb3@3",
R: "c4@3 eb3@2 ab3@3 eb4@3 ab3@2 ~@3 g3@3 eb3@2 ab3@3 eb3@3 eb4@2 eb3@2 ~",
S: "ab3@3 f3@2 bb3@3 g3@3 ab3@2 f3@3 db4@3 f3@2 ~@3 g3@3 ~@2 f3@3, ~@21 eb4@5 ~ db4@5",
T: "~@5 ab3@3 c4@3 ab3@2 eb3@3 c4@13 ~@3, c4@3 ~@13, ~@3 eb3@6 ~@23",
U: "~@5 a3@3 c4@3 a3@3 ~@7 b3@3 a3@3 ~@2 a3@3, ~@3 e3@4 ~@25",
V: "b3@2 ~ a3@2 e3@3 a3@3 f3@2 a3@3 c4@3 a3@2 f3@3 e4@3 g3@2 c4@3",
W: "d4@3 f3@2 bb3@3 c4@3 ~@2 a3@3 c4@3 a3@2 e3@3 b3@3 e3@2 b3@3, ~@11 e3@4 ~@17",
X: "a3@3 e3@2 a3@2 ~ c4@3 a3@2 e3@4 ~@2 e3@2 a3@3 c4@3 a3@2 f3@3",
Y: "e4@3 g3@2 c4@3 d4@3 f3@2 bb3@3 f4@3 d4@2 bb3@3 d4@3 bb3@2 f3@3",
Z: "bb3@3 f3@2 bb3@3 c4@5 bb3@3 c4@2 ~ eb3@2 ab3@3 eb4@3 eb3@2 ab3@2 ~",
AA: "bb3@3 ~@2 ab3@3 eb4@2 ~ eb3@2 ab3@2 ~ ab3@3 f3@2 bb3@3 g3@3 ab3@2 f3@3",
AB: "db4@3 f3@2 eb4@3 g3@3 db4@2 eb4@3 c4@2 ~ eb3@2 ab3@3 c4@3 ab3@2 eb3@3",
AC: "bb3@3 eb3@2 bb3@2 ~ eb4@3 eb3@2 bb3@3 ab3@3 f3@2 bb3@3 g3@3 ab3@2 f3@3",
AD: "db4@3 f3@2 eb4@3 g3@3 db4@2 f3@3 c4@3 eb3@2 ab3@2 ~ c4@3 ab3@2 eb3@3",
AE: "a3@3 f3@2 c4@3 f4@3 c4@2 a3@3 c4@3 eb3@2 ab3@2 ~ c4@3 ab3@2 eb3@3",
AF: "c4@3 f3@2 a3@3 f4@3 c4@2 a3@3 c4@3 ab3@2 bb3@3 g3@3 eb4@2 db4@3",
AG: "c4@3 ab3@2 bb3@3 g3@3 eb4@2 db4@3 c4@8 bb3@8", AH: "[ab3@5 ~@3 bb3@2 ~@2 c4@27 ~@25]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.27).pan(0.8)
// other · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note("<~@2 A ~ B C D E ~@3 F G H I J ~@2 E ~ E ~@2 K ~@5 L ~@8>".pickRestart({
A: "~@3 e3@4 ~@4 e3@2 b3@3 e3@3 ~@8 e3@3 ~@2", B: "~@3 e3@3 ~@2 e3@2 ~@14 e3@3 ~@5", C: "~@11 e3@3 ~@18",
D: "~@11 f3@3 ~@18", E: "~@13 eb3@3 ~@16", F: "~@21 c4@2 ~@9", G: "~@21 e3@3 ~@3 e3@4 ~",
H: "~@3 e3@3 ~@5 e3@3 ~@5 e3@3 ~@10", I: "~@19 f3@3 ~@10", J: "~@11 e3@3 ~@5 e3@3 ~@5 e3@3 ~@2",
K: "~@13 e3@3 b3@3 e3@3 ~@5 e3@4 ~", L: "~@3 eb3@3 ~@26",
})).s("gm_acoustic_guitar_nylon").gain(0.16).pan(0.8)
// drums · kick
const kick = s("bd").struct("<~@7 A B@2 C@2 ~@5 D C E@2 C F ~@5 A B@2 C B G H I J ~>".pickRestart({
A: "~@13 x ~@2 x ~@15", B: "x ~@15 x ~@12 x ~@2", C: "x!2", D: "~@29 x ~@2", E: "x ~@12 x ~@2 x ~@15", F: "x",
G: "x ~@15 x ~@4 x ~@10", H: "x ~@12 x ~@2 x ~@4 x ~@10", I: "x ~@4 x ~@7 x ~@2 x ~@7 x ~@7", J: "x ~@2 x ~@4",
})).gain(0.3)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@7 A ~ B C D ~@6 E F A G ~@6 A ~ B C D C H I ~@2>".pickRestart({
A: "~@29 x ~@2", B: "~@5 x ~@7 x ~@18", C: "~@13 x ~@15 x ~@2", D: "~@3 x ~@9 x ~@18", E: "~@13 x ~@18",
F: "~@21 x ~@7 x ~@2", G: "~@13 x ~@5 x ~@9 x ~@2", H: "~@5 x ~@23 x ~@2", I: "~@11 x ~@20",
})).gain(0.15)
// drums · rim
const rim = s("rim").struct("<~@7 A B A B@2 ~@6 B C B@2 C ~@5 A B A B C ~@5>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.3)
// drums · snare
const snare = s("sd").struct("<~@7 A ~ A ~@7 B ~ B ~@8 A ~ A ~ B C@2 D E ~>".pickRestart({
A: "~ x ~@2", B: "~@3 x", C: "~ x ~ x", D: "~ x!3", E: "x!2 ~@2",
})).gain(0.3)
// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~ B ~@2 A ~@4 C ~ D ~@2 C ~@5 A ~ B ~@2 E@2 F ~@2>".pickRestart({
A: "~@13 x ~@18", B: "~@11 x ~@20", C: "~@29 x ~@2", D: "~@27 x ~@4", E: "~@11 x ~ x ~@18", F: "~@7 x",
})).gain(0.3)
// drums · hihat
const hihat = s("hh").struct("<A@2 B C@4 D E F G H I C@4 J B K L M N B C@4 D E F G O ~@5>".pickRestart({
A: "~ x ~ x", B: "~ x!3", C: "x!4", D: "x ~@2 x", E: "x ~@7 x ~@7 x ~@7 x ~@4 x ~@2", F: "x ~@15 x ~@4 x ~@2 x ~@7",
G: "x ~@7 x ~@7 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", H: "x ~@2 x ~ x ~@2 x ~@2 x ~@7 x ~@4 x ~@7", I: "x!2 ~ x",
J: "x!3 ~", K: "x ~@7 x ~@4 x ~@2 x ~@15", L: "x ~@4 x ~@2 x ~@7 x ~@7 x ~@7",
M: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@4", N: "~@3 x ~@4 x ~@7 x ~@7 x ~@7",
O: "x ~@2 x ~ x ~@2 x ~@2 x ~@20",
})).gain(0.3)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@7 A B C D ~@7 E D F ~@7 A B C D ~@6>".pickRestart({
A: "~@19 x ~ x ~@5 x ~ x ~@2", B: "~@3 x ~ x ~@5 x ~@7 x ~ x ~@5 x ~@4", C: "~@19 x ~@7 x ~ x ~@2",
D: "~@3 x ~ x ~@5 x ~@20", E: "~@3 x ~ x ~@5 x ~ x ~@5 x ~ x ~@5 x ~@4", F: "~@3 x ~@7 x ~ x ~@5 x ~ x ~@5 x ~@4",
// … 37 more lines
More by
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.