0:00/0:00
// Don't You Love Me Anymore — Joe Cocker
// 82 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: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 88 bars on a 32-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): guitar program 31.
setcpm(82/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.
// other · vibraphone
const vibraphone = note("<~ A B@4 ~@82>".pickRestart({
A: "eb6@6 ~@10 eb6@6 eb6@5 eb6@5",
B: "[f5@6 ~@10 f5@6 ~@9 c6@6 ~@11 c6@5 ~ c6@5 c6@4 [f5,ab5]@6 ~@7 c6@4 eb6@6 eb6@5 eb6@4 eb6@6 ~@27]/4", // Fm
})).s("gm_vibraphone").gain(0.25).pan(0.3)
// chords · piano
const piano = note(`<
~ A B C D E F G H I J K L M N O P Q N O R S T U V W X Y@8 Z AA@6 AB@6 AC@2 AD@2 AE@2 AF AG AH AI AF AJ AK AL AM AN F
AO AM AN F AP S AQ U V W X AR S AS U V W AT AU@5
>`.pickRestart({
A: "eb4@3 ~@4 [ab3,ab4], [ab1,ab2], [ab3,ab4]@21 [bb3,bb4]@10 ~, c4 [c4,c5], ~@3 [eb3,eb4]@5", // Ab Bb C Eb
B: "f4@12 ~@15 [ab3,ab4]@4 ~, [db2,db3,db4], [ab3,ab4]@11 [bb3,bb4]@5, ~@3 [f3,f4]@5, ~ [c4,c5]", // Ab Db Ab Bb F C
C: "eb4@12 ~@15 [ab3,ab4]@4 ~, [ab1,ab2], [ab3,ab4]@11 [bb3,bb4]@5, c4 [c4,c5], ~@3 [eb3,eb4]@5", // Ab Bb C Eb
D: "f4@6 ~@7 [eb4,eb5]@3, [db2,db3,ab3,db4,ab4], ~@3 [f3,f4]@5, ~ [c4,c5], ~@21 [bb3,bb4]@10 ~", // Eb Db5 F C Bb
E: "[ab3,c4] [eb3,ab3,c4], [ab2,eb4,ab4]", F: "[db3,f3,ab3]!2, db2", G: "eb3@3 eb3 [eb3,ab3,c4]@4, ab2, [ab3,c4] ~",
H: "db3@2 ~ f3, [db2,ab3], f3@3 ~, ~ db3", I: "ab2@3 ~ [eb3,ab3,c4]@4, [eb3,ab3,c4] ~, ~@3 ab2@5",
J: "[db2,db3,f3,ab3,db4] [c2,c3,ab3,c4,eb4]", K: "~@3 db3 f3@2 f3@2, [bb1,bb2,db4], [f3,bb3] [db3,bb3]",
L: "~@2 bb3 [e2,e3,g3,c4], [eb2,eb3,g3,c4]@3 ~", M: "f3@3 f3 [f3,ab3,c4]@4, [f1,f2], [ab3,c4] ~",
N: "eb3@3 ~ [g3,bb3]@4, eb2, [g3,bb3] ~, ~@3 eb3@5", O: "db3@3 ~ [f3,ab3]@4, db2, [f3,ab3] ~, ~@3 db3@5",
P: "eb3@3 ~ [g3,bb3]@2 [e2,e3,g3,c4]@2, eb2@3 ~, [g3,bb3] ~, ~@3 eb3@3 ~@2", // Gm C Gm
Q: "f3@3 ~ [ab3,c4]@4, f2, [ab3,c4] ~, ~@3 f3@5", // Ab
R: "~@6 bb3@9 ~ [g3,bb3,eb4]@6 [g3,bb3,eb4]@6 [g3,bb3,eb4]@4, [eb2,eb3,c4], g3 ~", // Eb Cm
S: "ab2@3 ~ [ab3,c4,eb4,ab4]@4, ab1, [ab3,c4,eb4,ab4] ~, ~@3 ab2@5", // Ab
T: "[db2,db3,ab3,db4,f4,ab4]@16 [db2,db3,db4,f4,ab4,db5]@6 [c2,c3,f4,ab4,db5,f5]@4 [bb1,bb2,f4,bb4,db5,f5]@5 ~", // Db Dbmaj7 Bbm
U: "[ab2,ab4,c5,eb5,ab5]!2, ab1", // Ab
V: "[db2,db3,f4,ab4,db5,f5] [c2,c3,eb4,ab4,c5,eb5] [bb1,bb2,db4,f4,bb4,db5] [eb2,eb3,eb4,g4,bb4,eb5]", // Db Ab Bbm Eb
W: "ab2@3 ~@3 ab2@2, ab1, [eb4,ab4,c5,eb5]!2, ~@3 ab2@3 ~@2", X: "[gb2,gb3,db4,gb4,bb4,db5] [f2,f3,db4,f4,ab4,db5]",
Y: "[[eb2,eb3,bb3,eb4,g4,bb4]@23 ~ eb4@6 ~@7 [ab3,ab4]@3 f4@6 ~@7 [eb4,eb5]@3 [ab3,c4]@8 [eb3,ab3,c4]@8 [db3,f3,ab3]@8 [db3,f3,ab3]@8 eb3@6 eb3@2 [eb3,ab3,c4]@8 db3@8 ~@4 f3@4 ab2@6 ab2@2, ~@3 [ab1,ab2]@2 [db2,db3,ab3,db4,ab4]@2 [ab2,eb4,ab4]@2 db2@2 ab2@2 [db2,ab3]@2 ~, ~@24 [ab3,ab4]@11 [bb3,bb4]@5 ~@11 [bb3,bb4]@5 ~@32 [ab3,c4]@8 ~@16 db3@8 [eb3,ab3,c4]@8, ~@3 c4 [c4,c5] ~ [c4,c5] ~@9, ~@15 [eb3,eb4]@5 ~@3 [f3,f4]@5 ~@24 f3@6 ~@6]/8", // Eb Ab Eb Ab Db Ab Db5 Ab5 …
Z: "[eb3,ab3,c4] [db2,db3,f3,ab3,db4]", // Ab Db
AA: "[[c2,c3,ab3,c4,eb4]@4 ~@3 db3 f3@2 f3@2 ~@4 bb3@2 [e2,e3,g3,c4]@2 f3@3 f3 [f3,ab3,c4]@4 eb3@3 ~ [g3,bb3]@4 db3@3 ~ [f3,ab3]@4 eb3@3 eb3, ~@2 [bb1,bb2,db4]@4 [eb2,eb3,g3,c4]@3 ~ [f1,f2]@4 eb2@4 db2@4 [eb2,g3,bb3]@2, ~ [f3,bb3] [db3,bb3] ~@2 [ab3,c4] ~ [g3,bb3] ~ [f3,ab3] ~@2, ~@31 eb3@5 ~@3 db3@5 ~@4]/6", // Ab C Fm Gm Fm Bbm Cm F …
AB: "[[g3,bb3]@8 [e2,e3,g3,c4]@8 f3@12 ~@4 [ab3,c4]@16 eb3@12 ~@4 [g3,bb3]@16 db3@12 ~@4 [f3,ab3]@16 ~@6 bb3@9 ~ [g3,bb3,eb4]@6 [g3,bb3,eb4]@6 [g3,bb3,eb4]@4 ab2@12 ~@4 [ab3,c4,eb4,ab4]@16 [db2,db3,ab3,db4,f4,ab4]@16, ~ f2@2 eb2@2 db2@2 eb2@2 ab1@2 ~, ~ [ab3,c4] ~ [g3,bb3] ~ [f3,ab3] ~ [eb3,g3,c4] ~ [ab3,c4,eb4,ab4] ~@2, ~@7 f3@5 ~@3 eb3@5 ~@3 db3@5 ~@11 ab2@5 ~@4]/6", // Gm C Ab Gm Fm Eb Ab Db …
AC: "[[db2,db3,db4,f4,ab4,db5]@6 [c2,c3,f4,ab4,db5,f5]@5 [bb1,bb2,f4,bb4,db5,f5]@4 ~ [ab2,ab4,c5,eb5,ab5]@16 [ab2,ab4,c5,eb5,ab5]@16 [db2,db3,f4,ab4,db5,f5]@8 [c2,c3,eb4,ab4,c5,eb5]@8, ~ ab1@2 ~]/2", // Db Dbmaj7 Bbm Ab Db Ab
AD: "[[bb1,bb2,db4,f4,bb4,db5]@2 [eb2,eb3,eb4,g4,bb4,eb5]@2 ab2@3 ~@3 ab2@2 [gb2,gb3,db4,gb4,bb4,db5]@4, ~ ab1@2 ~, ~ [eb4,ab4,c5,eb5] [eb4,ab4,c5,eb5] ~, ~@7 ab2@3 ~@6]/2", // Bbm Eb Gb Ab
AE: "[[f2,f3,db4,f4,ab4,db5]@8 [eb2,eb3,bb3,eb4,g4,bb4]@23 ~]/2", AF: "[ab3,c4,eb4]!2, [ab2,ab4]",
AG: "[ab3,db4,f4]@2 [ab3,db4,f4] [eb3,bb3,eb4,g4], [db3,ab4]@3 ~", AH: "[ab3,c4,eb4] [ab3,c4,eb4,ab4], ab2",
AI: "[ab3,db4,f4]@2 [ab3,db4,f4] [eb3,bb3,eb4,g4], db3@3 ~", AJ: "[db3,ab3,db4,f4] [c3,ab3,c4,eb4]",
AK: "[f3,bb3,db4] [f3,bb3,db4,f4], bb2", AL: "[eb2,eb3,g3,bb3,eb4]@2 [eb2,g3,bb3,eb4] [e2,g3,c4,e4]",
AM: "[f3,ab3,c4]!2, f2", AN: "[eb3,g3,bb3]!2, eb2", AO: "[eb3,g3,bb3]@2 [eb3,g3,bb3] [e2,e3,g3,c4], eb2@3 ~",
AP: "[eb2,eb3,g3,bb3]", // Eb
AQ: "[db2,db3,ab3,db4,f4,ab4]@16 [db2,db3,db4,f4,ab4,db5]@6 [c2,c3,f4,ab4,db5,f5]@5 [bb1,bb2,f4,bb4,db5,f5]@5", // Db Dbmaj7 Bbm
AR: "[eb2,eb3,bb3,eb4,g4,bb4]@29 ~@3", // Eb
AS: "[db2,db3,ab3,db4,f4,ab4]@16 [db2,db3,db4,f4,ab4,db5]@6 [c2,c3,f4,ab4,db5,f5]@5 ~ [bb1,bb2,f5]@4, ~@27 [f4,bb4,db5]@4 ~", // Db Dbmaj7 Bb5 Bbm
AT: "[gb2,gb3,db4,gb4,bb4,db5]@16 ~ [f3,f4,ab4]@15, ~ [f2,db4,db5]", // Gb Fm Db
AU: "[~@2 [eb2,eb3,bb3,eb4,g4,bb4]@38 c4@6 ~@11 ab4@3 ~ ab4@2 ~@6 eb4@6 ~@8 c4@7 bb3@3 ~ c4@56 ~@10, ~@40 [ab1,ab2]@49 ~ [ab1,ab2,eb4,ab4]@60 ~@10, ~@40 ab4@16 ~@7 ab4@27 ~@70, ~@40 eb4@11 ~ eb4@17 ~@7 eb4@14 ~@70, ~@23 c4@18 ~@39]/5", // Eb Ab Ab5
})).s("gm_piano").gain(0.46).pan(0.3)
// other · string ensemble 1
const string_ensemble_1 = note("<~@24 A@6 B@5 C@8 D@4 ~@3 E@7 F@5 ~@7 G@4 H@7 I@3 J@5>".pickRestart({
A: "[~@22 ab4@2 ~@3 eb5@2 ~@2 ab5@31 gb5@17 f5@15 g5@49 c5@31 db5@18, ~@24 bb4@2 db5@2 ~ f5@2 ~@161, ~@25 c5@2 ~@3 g5@2 ~@160]/6",
B: "[~@14 c5@33 db5@32 c5@32 db5@32 c5@17]/5",
C: "[~@15 db5@16 c5@16 bb4@32 eb5@32 ab5@32 bb5@32 ab5@32 bb5@31 c6@18]/8", D: "[~@15 eb6@32 db6@31 eb6@32 ~@18]/4",
E: "[~@9 bb4@2 ~@5 ab5@31 gb5@16 f5@16 [bb4,g5]@43 ~@5 eb5@32 f5@16 ~ ab5@7 bb5@8 eb5@15 ~ ab5@8 g5@8 ~, ~@8 ab4@2 ~ c5@2 eb5@2 g5@2 ~@207, ~@6 db5 f5 ~@104]/7", // Eb
F: "[f5@15 ab5@7 ~ f5@8 eb5@32 f5@16 eb5@16 db5@15 ~ c5@8 ab4@8 bb4@24 c5@7 ~@2]/5",
G: "[~@31 eb6@55 ~@5 eb5@2 ~@2 [ab5,eb6]@32 ~, ~@87 ab4@2 c5@2 ~@3 g5@2 ~@32, ~@88 bb4@2 db5@2 ~ f5@2 ~@33]/4", // Ab5
H: "[db6@8 c6@7 bb5@8 ab5@4 eb5@2 f5@2 [ab5,eb6]@32 [gb5,db6]@16 f5@16 [g5,eb6]@32 eb6@55 ~@5 eb5@2 ~@2 [ab5,eb6]@32 ~, ~@183 ab4@2 c5@2 ~@3 g5@2 ~@32, ~@184 bb4@2 db5@2 ~ f5@2 ~@33]/7", // Ab5 Gb5 Cm Ab5
I: "[db6@8 c6@7 bb5@8 ab5@4 eb5@2 f5@2 [ab5,eb6]@32 [gb5,db6]@16 f5@17]/3", // Ab5 Gb5
J: "[~ g5@39 ab5@94 ~@26, ~ eb6@131 ~@28]/5",
})).s("gm_string_ensemble_1").gain(0.21).pan(0.3)
// other · dulcimer
const dulcimer = note("<~ A B C D ~@23 E F G ~@57>".pickRestart({
A: "~@12 [eb4,eb5]@4 [c5,c6]@6 [bb4,bb5]@5 ~ [ab4,ab5]@4", // Eb C Bb Ab
B: "[f4,f5]@12 [f4,f5]@4 [c5,c6]@6 [bb4,bb5]@5 [ab4,ab5]@4 ~", // F C Bb Ab
C: "[eb4,eb5]@11 ~ [eb4,eb5]@4 [c5,c6]@6 [bb4,bb5]@4 ~ [ab4,ab5]@4 ~", // Eb C Bb Ab
D: "[f4,f5]@11 ~ [f4,f5]@4 [c5,c6]@5 ~ [bb4,bb5]@4 [eb5,eb6]@5 ~", E: "~@7 [eb4,eb5]",
F: "[c5,c6]@6 [bb4,bb5]@4 [ab4,ab5]@5 ~ [f4,f5]@11 ~ [f4,f5]@4", G: "[c5,c6]@5 ~ [bb4,bb5]@4 [eb5,eb6]@5 ~@17",
})).s("gm_dulcimer").gain(0.25).pan(0.6)
// other · pad choir
const pad_choir = note(`<
~@21 A B@2 C D ~@4 E@2 ~@2 F@2 ~@10 G@2 H@2 I@2 ~@18 A B@2 C D ~@2 A B@2 C D ~@6
>`.pickRestart({
A: "eb5@31 ~", B: "[f4@7 ~ g4@8 ab4@7 ~ bb4@7 c5@32 ~]/2", C: "f4@8 g4@8 db4@7 ~ db4@8", D: "c4",
E: "[~@15 [ab4,c5]@32 ~@17]/2", F: "[~@16 ab5@11 eb5@8 ~ c5@23 ~@5]/2", G: "[~@16 eb5@31 ~ f4@7 ~ g4@8]/2",
H: "[ab4@7 ~ bb4@7 c5@32 ~ f4@8 g4@8]/2", I: "[db4@7 ~ db4@8 c4@32 ~@16]/2",
})).s("gm_pad_choir").gain(0.26).pan(0.7)
// other · synth strings 2
const synth_strings_2 = note("<~ A@2 B@2 ~ C@7 D@4 E@7 F@8 G@2 H@3 I J K@8 L@5 ~@8 M@2 N@7 O@6 ~ P@6 ~@6>".pickRestart({
A: "[~@15 ab4@16 f4@31 ~@2]/2", B: "[~@15 ab4@14 ~@2 f4@30 ~@3]/2",
C: "[~@23 g4@8 ab4@32 db4@30 ~@2 eb4@32 db4@16 c4@16 bb3@31 ~ c4@16 ~@8 c4@8 f4]/7",
D: "[~@3 ab4@4 f4@4 c4@4 ab3@4 f3@4 c3@4 ab2@4 bb4@32 ab4@32 bb4@24 bb4@7 ~@2]/4",
E: "[~@15 ab4@5 ~ bb4@5 c5@5 bb4@32 ab4@32 bb4@15 ~ bb4@5 ~ bb4@5 ~ eb5@3 ~ eb5@31 ~ db4@8 eb4@8 f4@7 ~ g4@7 ~ ab4@32 db4]/7",
F: "[~@7 eb4@8 f4@8 g4@7 ~ eb5@32 gb4@16 f4@16 g4@48 c5@22 bb4@6 ab4@4 db4@12 db5@4 c5@6 ab4@6 bb4@4 eb4@32 ~@17]/8",
G: "[~@7 g4@8 ab4@32 ~@17]/2", H: "[~@7 g4@8 ab4@32 f4@15 ~ eb4@16 ~@17]/3", I: "~@7 f4@7 ~ g4@17",
J: "~@7 c5@8 c5@17", K: "[~@15 bb4@31 ~ ab4@31 ~ bb4@32 ab4@32 g4@32 f4@31 ~ g4@32 eb5@17]/8",
L: "[~@15 db4@8 eb4@8 f4@7 ~ g4@7 ~ ab4@32 db4@8 eb4@8 f4@8 g4@7 ~ eb5@32 ~@17]/5", M: "[~@31 eb4@23 ~ e4@7 ~ ab5]/2",
N: "[~@5 c5@5 ab4@5 f4@5 ~ c4@5 ab3@5 eb5@23 ~ bb5@7 ~ ab5@31 ~ bb5@23 ~ bb5@7 ~ ab5@6 c5@4 ab4@4 f4@6 c4@6 ab3@6 g5@22 ~@2 bb5@7 ~ ab5@31 ~ eb6]/7",
O: "[~@5 bb5@6 eb5@4 eb6@6 bb5@6 eb5@4 eb5@31 ~ db4@8 eb4@8 f4@7 ~ g4@7 ~ ab4@32 db4@8 eb4@8 f4@8 g4@7 ~ eb5@32 ~]/6",
P: "[~@31 eb5@31 ~ db4@8 eb4@8 f4@7 ~ g4@7 ~ ab4@32 db4@8 eb4@8 f4@8 g4@7 ~ eb5@32 ~]/6",
})).s("gm_synth_strings_2").gain(0.25).pan(0.4)
// chords · synth strings 1
const synth_strings_1 = note("<A@8 B@2 C@6 D@8 E@8 F@6 G@4 H@8 I@2 J@7 K@7 L@7 M@7 N@3 O@2 ~@3>".pickRestart({
A: "[~@31 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]]/8", // Ab Db Ab Db Ab Db Ab Db
B: "[~@31 [ab3,c4,eb4]@32 [ab3,db4,f4]]/2", // Ab Db
C: "[~@15 [ab3,c4,eb4]@16 [bb3,db4,f4]@32 [g3,bb3,eb4]@24 [g3,c4,e4]@8 [ab3,c4,f4]@32 [g3,bb3,eb4]@32 [f3,ab3,db4]@32 [g3,bb3,eb4]]/6", // Ab Bbm Eb C Fm Eb Db Eb
D: "[~@23 [g3,bb3,e4]@8 [ab3,c4,f4]@32 [g3,bb3,eb4]@32 [f3,ab3,db4]@32 [g3,bb3,eb4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]]/8", // Edim Fm Eb Db Eb Ab Db Ab …
E: "[~@7 [ab3,c4,eb4]@8 [bb3,db4,f4]@8 [g3,bb3,eb4]@8 [ab3,c4,eb4]@32 [bb3,db4,gb4]@16 [ab3,db4,f4]@16 [g3,bb3,eb4]@50 [ab3,c4,eb4]@30 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@17]/8", // Ab Bbm Eb Ab Gb Db Eb Ab …
F: "[~@15 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@16 [ab3,c4,eb4]@16 [bb3,db4,f4]@30 ~@2 [g3,bb3]@17, ~@173 eb4@19]/6", // Ab Db Ab Db Ab Bbm Gm
G: "[~@7 [g3,c4,e4]@6 [ab3,c4,f4]@32 [g3,bb3,eb4]@34 [ab3,db4,f4]@32 [g3,bb3,eb4]@17]/4", // C Fm Eb Db Eb
H: "[~@7 [g3,bb3,e4]@8 [ab3,c4,f4]@32 [g3,bb3,eb4]@32 [f3,ab3,db4]@32 [g3,bb3,eb4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@8 [ab3,c4,eb4]@8 [bb3,db4,f4]]/8", // Edim Fm Eb Db Eb Ab Db Ab …
I: "[~@7 [g3,bb3,eb4]@8 [ab3,c4,eb4]@32 [gb3,bb3,db4]@16 [ab3,db4,f4]]/2", // Eb Ab Gb Db
J: "[~@15 [g3,bb3,eb4]@48 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]]/7", // Eb Ab Db Ab Db Ab Db
K: "[~@15 [ab3,c4,eb4]@16 [bb3,db4,f4]@32 [g3,bb3,eb4]@24 [g3,c4,e4]@8 [ab3,c4,f4]@32 [g3,bb3,eb4]@32 [ab3,db4,f4]@32 [g3,bb3,eb4]@24 [g3,bb3,e4]@8 [ab3,c4,f4]]/7", // Ab Bbm Eb C Fm Eb Db Eb …
L: "[~@15 [g3,bb3]@16 [g3,bb3,eb4]@32 [f3,ab3,db4]@32 [ab3,bb3,eb4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]]/7", // Gm Eb Db Absus2 Ab Db Ab Db
M: "[~@7 [ab3,c4,eb4]@8 [bb3,db4,f4]@8 [g3,bb3,eb4]@8 [ab3,c4,eb4]@32 [gb3,bb3,db4]@16 [f3,ab3,db4]@16 [g3,bb3,eb4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]@32 [ab3,c4,eb4]@32 [ab3,db4,f4]]/7", // Ab Bbm Eb Ab Gb Db Eb Ab …
N: "[~@7 [ab3,c4,eb4]@8 [bb3,db4,f4]@8 [g3,bb3,eb4]@8 [ab3,c4,eb4]@32 [gb3,bb3,db4]@16 ~ [f3,ab3,db4]@16]/3", // Ab Bbm Eb Ab Gb Db
O: "[~ [g3,bb3,eb4]@38 ~@25]/2", // Eb
})).s("gm_synth_strings_1").gain(0.14)
// bass · electric bass finger
const bass = note(`<
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 AA AB AC AD AE AF AG AF AH AI AJ AK AL AM AN AO AP AQ AR AS AT AF
AT AU AV AW AX@2 AY AZ BA BB BC BD BE BF BG BH BI BJ BK S BL BM D BN BO Y BP BQ BR X BN BS BT BU BV BW@2 ~@3
>`.pickRestart({
A: "~@24 ab2@2 g2 [f2,gb2] [eb2,e2] [db2,d2] [b1,c2] [a1,bb1]", B: "ab1@5 ~ ab1 ~ ab1@7 ~",
C: "db2@12 db2@3 ~ db2@16", D: "ab1@11 ~ ab1@2 ~@2 ab1@15 ~", E: "db2@11 ~ db2@3 ~ db2@8 eb2@8",
F: "ab1@12 ab1@3 ~ ab1@15 ~", G: "db2@12 db2@3 ~ db2@8 eb2@8", H: "ab1@11 ~ ab1@3 ~ ab1@16",
I: "db2@11 ~ db2@3 ~ db2@15 ~", J: "ab1@11 ~ ab1@3 ~ ab1@15 ~", K: "db2@11 ~ db2@4 c2@11 ~ c2@4",
L: "bb1@11 ~ bb1@2 ~@2 bb1@16", M: "eb2@11 ~ eb2@2 ~@2 eb2@8 e2@8", N: "f1@11 ~ f1@3 ~ f1@15 ~",
O: "eb2@11 ~ eb2@3 ~ eb2@8 gb2@8", P: "db2@10 ~@2 db2@2 ~@2 db2@15 ~", Q: "eb2@11 ~ eb2@3 ~ eb2@8 c2@8",
R: "f1@5 ~ f1 ~ f1@8", S: "eb2@11 ~ eb2@2 ~@2 eb2@8 gb2@8", T: "db2@11 ~ db2 ~@3 db2@15 ~",
U: "eb2@5 ~ eb2 ~ db2@3 c2@3 bb1@2", V: "ab1@10 ~@2 ab1@3 ~ ab1@14 ~@2", W: "db2@12 db2@2 ~@2 db2@6 c2@6 bb1@3 ~",
X: "ab1@11 ~ ab1@2 ~@2 ab1@14 ~@2", Y: "db2 c2 bb1 eb2", Z: "ab1@11 ~ ab1@2 ~@2 ab1@12 f1@2 f1@2",
AA: "gb1@11 ~ gb1@4 f1@10 ~@2 f1@4", AB: "eb2", AC: "eb3@8 eb3@8 ab1@11 ~ ab1@2 ~@2", AD: "ab1@14 ~@2 db2@12 db2@3 ~",
AE: "db2@8 eb2@7 ~ ab1@11 ~ ab1@2 ~@2", AF: "ab1@15 ~ db2@11 ~ db2@2 ~@2", AG: "db2@4 eb2@4 ab1@5 ~ eb2@2",
AH: "db2@8 eb2@8 ab1@9 ~@3 ab1@2 ~@2", AI: "ab1@16 db2@11 ~ db2 ~@3", AJ: "c2@11 ~ c2@3 ~ bb1@11 ~ bb1@2 ~@2",
AK: "bb1@15 ~ eb2@11 ~ eb2@2 ~@2", AL: "eb2@4 e2@4 f2@5 ~ f2 ~", AM: "f2@16 eb2@11 ~ eb2@3 ~",
AN: "eb2@8 gb2@8 db2@11 ~ db2@2 ~@2", AO: "db2@16 eb2@11 ~ eb2@3 ~", AP: "eb2@8 c2@7 ~ f1@11 ~ f1@3 ~",
AQ: "f1@16 eb2@12 eb2@3 ~", AR: "eb2@8 gb2@8 db2@10 ~@2 db2@3 ~", AS: "db2@16 eb2@11 ~ eb2@4",
AT: "db2@6 c2@6 bb1@4 ab1@10 ~@2 ab1@3 ~", AU: "ab1@15 ~ db2@8 c2@8", AV: "bb1@4 eb2@4 ab1@5 ~ ab1 ~",
AW: "ab1@11 ~ eb1@2 f1@2 gb1@10 ~@2 gb1@4", AX: "[f1@5 ~ f1@2 eb2@12 eb2@4 eb3@8]/2",
AY: "ab1@11 ~ ab1@3 ~ ab1@8 c2@6 ab1@2", AZ: "db2@6 db2@2 ~@2 ab1 ~ db2@11 ~ eb2@8",
BA: "ab1@5 ~ ab1@3 ~ ab1 ~ ab1@12 c2@6 ab1@2", BB: "db2@11 ~ db2@2 ~@2 db2@6 bb1@2 eb2@6 ab1 ~",
BC: "ab1@5 ~ ab1@3 ~ ab1 ~ ab1@15 ~ c2@2 ab1@2", BD: "db2@10 db2 ~ db2@3 ~ c2@10 ~@2 c2@2 ab1@2",
BE: "bb1@10 bb1 ~ bb1@3 ~ bb1@12 c2@2 db2@2", BF: "eb2@9 ~ eb2 ~ eb2@2 ~@2 eb2@8 c2@8",
BG: "f1@10 ~@2 f1@2 ~@2 f1@15 ~", BH: "eb2@10 ~@2 eb2@3 ~ eb2@8 gb2@8", BI: "db2@11 ~ db2@2 ~@2 db2@16",
BJ: "eb2@10 ~@2 eb2 ~@3 eb2@8 c2@7 ~", BK: "f1@9 ~ f1@2 f2@2 g2@2 ab2@4 bb2@3 ~ bb2@8",
BL: "db2@5 ~ db2 ~ db2@6 c2 db2", BM: "eb2@3 eb2@3 eb2 ~ eb2@3 eb2@3 eb2 ~",
BN: "db2@11 ~ db2@2 ~@2 db2@6 c2@6 bb1@4", BO: "ab1@9 ~@3 ab1@2 ~@2 ab1@15 ~",
BP: "ab1@10 ~@2 ab1 ~@3 ab1@11 ~ f1 ~ f1@2", BQ: "gb1@11 ~ gb1@4 f1@11 ~ f1@3 ~",
BR: "eb2@11 ~ eb2@3 ~ eb3@6 c3@6 bb2@4", BS: "ab1@10 ~@2 ab1@2 ~@2 ab1@11 ~ ab1@4", BT: "db2@4 c2@4 bb1@4 eb2 g1@3",
BU: "ab1@10 ~@2 ab1@2 ~@2 ab1@11 ~ f1 ~ f1@2", BV: "gb1@12 eb2@2 gb1@2 ~ f1@13 db2@2", BW: "[f1 eb2@19 ~@12]/2",
})).s("gm_electric_bass_finger").gain(0.51)
// other · guitar harmonics
const guitar_harmonics = note("<~@55 [~ db3@19 ~@12] ~@32>").s("gm_guitar_harmonics").gain(0.23).pan(0.8)
// chords · electric guitar clean
const electric_guitar_clean = note("<~@26 A B@2 ~@22 C D E ~ F G H I J K L M ~@12 A B@2 ~@4 N@3 ~@3>".pickRestart({
A: "~ ab3 bb3 db4 ~ ab3 bb3 db4, gb3 f3", B: "[f4 g4@3 f4@4 ~@4 f4@4 f4 g4@30 ~@17, eb4@8 eb4@8 eb4@31 ~@17]/2",
C: "~@5 ab3 bb3 db4, ~ gb3", D: "~@4 ab3@4 bb3@4 db4@4 f4 g4@3 f4@4 ~@4 f4@4, f3@2 eb4!2", E: "f4 g4@30 ~, eb4@31 ~",
F: "f3@2 ab3 ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~@3 [f3,ab3] ~ [f3,ab3]@2 ~@2 [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3]@2 [f3,ab3] ~, ab3 ~@31", // Fm
G: "[eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3]@2 ab3 ~ [eb3,ab3]@2 [eb3,ab3]@2 ~@2 [eb3,ab3]@2 ab3 ~ [eb3,ab3] ~ [eb3,ab3]@2 ab3 ~ [eb3,ab3] ~@3", // Ab5
H: "[f3,ab3] ~ ab3 ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ ab3 ~ [f3,ab3] ~ [f3,ab3]@2 [f3,ab3] ~ [f3,ab3,db4] ~ ab3 ~ [f3,ab3,db4] ~ [f3,db4]@2 [ab3,db4] ~ [f3,ab3,db4]@2 ~@2, ~@24 ab3 ~@7", // Fm Db Db5 Db
I: "[eb3,ab3,c4]@2 [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4]@2 ~@2 [eb3,ab3,c4]@2 [eb3,ab3,c4]@2 ab3 ~ [eb3,ab3,c4]@2 ~@2 [eb3,ab3,c4] ~ [eb3,ab3,c4]@2 ~@2 [eb3,ab3,c4]@4", // Ab
J: "[f3,ab3,db4] [eb3,ab3,c4]", K: "[db3,ab3,db4]", L: "[g3,bb3,eb4]@3 bb2", M: "[f2,c3]@29 ~@3",
N: "[~@4 ab3@4 bb3@4 db4@4 ~@5 ab3@4 bb3@4 ~ db4@4 f4 g4@3 ~ f4@4 ~@5 f4@4 f4 ~ g4@41 ~, gb3@17 f3@17 eb4@9 eb4@9 eb4@42 ~@2]/3",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.6)
// chords · electric guitar clean · soft notes · Fm Ab5 Ab
const electric_guitar_clean_2 = note(`<
~@55
[~@10 [f3,ab3] ~@5 [f3,ab3] ~@15]
[~@16 [eb3,ab3] ~@3 eb3 ~@5 eb3 ~@3 [eb3,ab3] ~]
[~@2 f3 ~@17 f3 ~@11]
[~@10 ab3 ~@9 [eb3,ab3,c4] ~@11]
~@29
>`).s("gm_electric_guitar_clean").gain(0.16).pan(0.6)
// other · overdriven guitar
const overdriven_guitar = note("<~@54 A B C D@2 E F G H ~@25>".pickRestart({
A: "~@11 eb4 eb5@20, ~@12 ab4 ~@19", B: "~@2 eb5 ~ db5@20 c5@2 db5@2 db5@4", C: "c5 ab4 eb4 ab4@3 eb5@10",
D: "[~@2 eb5 ~ db5@12 ab5@20 ab5@10 ~@2 eb5@4 ab5@2 ab5@2 f5@2 ab5@2 ab5@4, ~@16 eb5 ~@47]/2",
E: "f5@2 ab5@2 c6@8 c6@6 ab5 ~ ab5@10 ~ [ab4,c5]", // Ab
F: "f5@2 eb5@2 c5@2 ab4@2 bb4@2 f4@2 bb4@4 ab4@2 bb4@9 ~ db5@2 bb4@2",
G: "eb5@8 eb5@2 ~ c5 bb4@8 eb5@3 c5 bb4@4 bb4@2 ab4 ~", H: "bb4 f4 ab4 f4@2 ~@11",
})).s("gm_overdriven_guitar").gain(0.33).pan(0.3)
// other · overdriven guitar · soft notes · Dbmaj7
const overdriven_guitar_soft = note("<~@55 [~@3 [c5,db5] ~@28] ~ [~@3 [c5,db5] ~@12 ab4 ~@15] ~ [~@19 f5 ~@12] ~@28>")
.s("gm_overdriven_guitar").gain(0.22).pan(0.3)
// other · overdriven guitar
const overdriven_guitar_2 = note(`<
// … 95 more lines
More by Joe Cocker
With A Little Help From My Friends1968 · E major · 115 bpmUnchain My HeartA minor · 120 bpmYou Can Leave Your Hat OnD♭ major · 109 bpmSummer in the CityD major · 89 bpmCry Me a River (live)E minor · 130 bpmUp Where We BelongF major · 120 bpmDon't You Love Me Any MoreA major · 83 bpmFeelin' AlrightC major · 88 bpm
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.