0:00/0:00
// My Sweet Lord — George Harrison
// 123 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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
const piano = note(`<
~@49 A@2 B@2 C@2 D@2 E@2 F@4 G@4 H@2 I J E@2 F@4 G@4 H@2 I J E@2 K@2 F@4 G@4 H@2 I J E@2 K@2 L@6 K@2 L@6 K@2 M@8 ~
>`.pickRestart({
A: "[e4@3 ~@4 ab3@3 ~@5 ab3, b2@6 b2@5 b2@3 b2@2, ab3@5 ab3@2 ~@3 ab3@2 ab3@3 ~, e2@4 e2@7 e2@5, ~@3 e4@4 e4@6 e4@3]/2",
B: "[b2@2 ~@11 ab3@3, d4@5 d4@5 ab3@2 e2@4, e2@4 e2@7 d4@5, ab3@3 ab3@4 e4@9, ~@2 b2@4 b2 ab3@2 b2@7]/2",
C: "[~@5 ab3!2 ~@3 db4 ~@3 db4@2, f2!2 f2!2, ~ ab3@4 ~@2 ab3@2 ab3@2 ab3@2 ab3@3, ~@2 db4@3 db4@2 db4@3 ~ db4@3 ~@2, ~@3 ab4@4 ab4@4 ab4@5]/2",
D: "[~@4 bb3@2 ~@6 gb2@2 ~@4 bb3@2 bb3@2 ~@4 [bb3,db4,eb4]@5 ~, gb2@8 gb2@4 ~@4 g2@8 g2@7 ~, [db4,gb4]@3 ~@4 [db4,e4]@4 ~@5, bb3@2 ~ [bb3,db4,gb4]@4 bb3@2 ~@2 [bb3,db4,e4]@2 ~@3, ~ gb3@4 gb3@2 ~@9]/2", // Eb7 Gb5 Dbm Gb Bbdim
E: "[gb3!2 [gb3,b3]!2 gb3 ~@4 f3 [f3,ab3] ~@2 gb3!2 [gb3,b3,eb4], ab2@8 b3@6 db4@8 db4@4 [bb3,db4]@5 ~, [b3,eb4]@4 eb4@6 [gb3,bb3,eb4]@4 ab3@6 ~@2 [f3,ab3]@9 ~, ~@2 ab2 ab2@3 ~@2, ~@14 f3@2 db2@8 [db2,ab2]@7 ~]/2", // B5 Fm B Bbm B Ebm Fm Db5
F: "[~ gb3 [gb3,b3]!2 gb3 ~@4 f3 [f3,ab3] ~@2 gb3!3 ~ gb3!2 ~@2 [gb3,bb3,eb4]@2 ~@2 f3 [f3,ab3] ~@2 gb3 ~ eb2, ab2@8 b3@6 db4@8 db4@4 [bb3,db4]@5 ~@5 eb4@4 ab1@6 ~@2 db2@8 db2@8, ~@4 eb4@6 [gb3,bb3,eb4]@4 ab3@6 ~@2 [f3,ab3]@9 ~@7 gb3@4 ~@4 ab3@6 ~@8 [gb3,bb3,db4]@4, ~@4 ab2@2 ab2@6 ~@3 [b3,eb4]@3 b3@5 db4@4 db4@3 ~@2, ~@14 f3@2 db2@8 [db2,ab2]@7 ~ ab2@14 f3@4 ~@4 [f3,ab3]@10]/4", // B5 Fm Ebm Fm Bbm Ebm Fm Gb …
G: "[[gb3,b3,eb4]@2 gb3 ~@3 ab1 ~@2 f3 [f3,ab3] ~@2 f3 ~@3 bb3 [gb3,bb3,db4]!2 ~ gb3!2 ~@2 gb3 [gb3,bb3] ~@2 gb3!3, ab1@8 ab1@4 ~@4 db2@8 db2@6 db2@11 ~@5 bb3@6 ~@2 bb3@10, ~@2 b3@5 db4@4 ~@10 [bb3,db4]@2 eb4@4 eb4@3 ~@2, ~@4 eb4@6 ~@4 f3@4 ~@4 f3@4 ~@2 [f3,ab3,db4]@4 [gb1,ab3]@9 ~@5 gb3@4 ~@4 gb3@4 ~@2 [ab3,eb4]@4, ~@3 gb3@2 [gb3,bb3,eb4]@2 ab3@3 ~ [ab3,db4]@3 ~@2 [gb3,db4]@2 ~@2 gb1@3 ~ eb2@4 eb2@4]/4", // B Fm Gb Bbm Db Gbsus2 Ab5 Ebm …
H: "[~@4 gb3@2 ~@4 gb3@2 [gb3,bb3,db4]@2 db4 ~@5 gb3@2 ~@8 gb3@2, ab3@7 ab3@9, gb1@8 gb1@7 ~ eb2@6 gb3@2 eb2@8, gb3@2 ~ gb3@2 ~@2 gb3@3 ~ bb3@2 gb3 bb3@2, ~ bb3@2 [bb3,db4]@3 ~ eb4@2 [bb3,eb4]@2 eb4@5]/2", // Gb Bbm Eb5
I: "gb3!2 [gb3,bb3] ~@4 gb1, gb1@4 gb1@3 ~, db4@3 db4@5, bb3@2 ~ bb3@3 bb3@2, ~@3 gb3@2 gb3@3", // Gb
J: "bb3 ~@3 bb3@2 ~@6 [bb3,db4]@2 g1 ~, g1@8 g1@5 ~@3, db4@6 [bb3,db4,e4]@7 ~@3, ~ g3@4 g3@2 ~", // Bbm Bbdim
K: "[~ gb3 [gb3,b3]!2 gb3 ~@4 f3 [f3,ab3] ~@2 gb3!2 [gb3,b3,eb4], ab2@8 b3@6 db4@8 db4@4 [bb3,db4]@5 ~, ~@4 eb4@6 [gb3,bb3,eb4]@4 ab3@6 ~@2 [f3,ab3]@9 ~, ~@2 ab2 ab2@3 ~@2, ~@14 f3@2 db2@8 [db2,ab2]@7 ~]/2", // B5 Fm B Bbm Ebm Fm Db5
L: "[~ gb3 [gb3,b3]!2 gb3 ~@4 f3 [f3,ab3] ~@2 gb3!3 ~ gb3!2 ~@2 [gb3,bb3,eb4]@2 ~@2 f3 [f3,ab3] ~@2 gb3 ~@2 gb3!2 [gb3,b3]!2 gb3 ~@4 f3 [f3,ab3] ~@2 gb3!2 [gb3,b3,eb4], ab2@8 b3@6 db4@8 db4@4 [bb3,db4]@5 ~@5 eb4@4 ab1@6 ~@2 db2@8 db2@8 [ab2,b3,eb4]@4 eb4@4 [ab2,b3]@2 [gb3,bb3,eb4]@2 ab2@12 ~@8, ~@4 eb4@6 [gb3,bb3,eb4]@4 ab3@6 ~@2 [f3,ab3]@9 ~@7 gb3@4 ~@4 ab3@6 ~@8 [gb3,bb3]@2 eb2@16 f3@2 db2@8 [db2,ab2]@7 ~, ~@8 ab2@4 ab2@12 ~@6 [b3,eb4]@6 b3@10 db4@8 db4@6 db4@18 db4@8 db4@4 [bb3,db4]@5 ~, ~@14 f3@2 db2@8 [db2,ab2]@7 ~ ab2@14 f3@4 ~@4 [f3,ab3]@24 ab3@6 ~@2 [f3,ab3]@9 ~]/6", // B5 Fm Ebm Fm B5 Fm B Bbm …
M: "[~@2 gb3@2 [gb3,b3]@2 [gb3,b3]@2 gb3@2 ~@8 f3@2 [f3,ab3]@2 ~@4 gb3@2 gb3@2 gb3@2 ~@2 gb3@2 gb3@2 ~@4 [gb3,bb3,eb4]@4 ~@4 f3@2 [f3,ab3]@2 ~@4 gb3@2 ~@4 [ab1,gb3,b3,eb4]@2 ~@2 [ab1,gb3,b3,eb4]@2 ~@2 [ab1,gb3,b3,eb4]@2 [ab1,gb3,bb3,eb4] ~@3 [db2,f3,ab3,db4]@50, ab2@8 b3@6 db4@8 db4@4 [bb3,db4]@5 ~@5 eb4@4 ab1@6 ~@2 db2@8 db2@10 ~@62, ~@4 eb4@6 [gb3,bb3,eb4]@4 ab3@6 ~@2 [f3,ab3]@9 ~@7 gb3@4 ~@4 ab3@6 ~@8 [bb3,db4]@6 ~@62, ~@4 ab2@2 ab2@6 ~@3 [b3,eb4]@3 b3@5 db4@4 db4@3 gb3 eb2@2 ~@31, ~@14 f3@2 db2@8 [db2,ab2]@7 ~ ab2@14 f3@4 ~@4 [f3,ab3]@12 ~@62]/8", // B5 Fm Ebm Fm Abm7 Ebm Db Bbm …
})).s("gm_piano").gain(0.36)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~@9 A@2 B@2 C@2 D@2 ~@18 E@2 F@2 G H I@2 J@2 K@2 L@2 M@2 N@2 O@2 P Q R@2 S@2 T@2 U@2 V@2 W@2 P Q R@2 X@2 T@2 Y@2 V@2
W@2 P Q R@2 X@4 T@2 Y@2 V@2 W@2 P Q R@2 X@2 Z@2 T@2 X@6 T@2 X@6 T@2 AA@4 ~
>`.pickRestart({
A: "[[e3,b3,ab4]@7 [db3,db4]@9]/2", B: "[b3@7 [db3,db4]@9]/2", C: "[b3@7 f3@9]/2",
D: "[[db4,a4]@6 [e4,ab4] ~@4 b3@5, gb3@14 [b2,eb4,gb4]@17 ~]/2", E: "[[e3,b3,ab4]@7 e4@8 gb4, ~@7 [db3,ab3]@9]/2",
F: "[[e3,b3,ab4]@5 [eb3,gb4]@2 [db3,ab3,e4]@9]/2", G: "[e3,b3,ab4]", H: "[f3,d4]",
I: "[[db4,e4,a4]@5 ab4@2 [b3,eb4,gb4]@8 [e4,ab4], db3@7 b2@9]/2", // A B E
J: "[[db4,a4]@5 ab4@2 [b3,eb4,gb4]@8 [e4,ab4], db3@7 b2@9]/2", // Gbm B E
K: "[[db4,a4]@5 ab4@2 b2@5 eb3@2 [e3,e4,ab4]@2, db3@7 [b3,eb4,gb4]@7 ~@2]/2", // Gbm E B
L: "[[gb3,db4,a4]@5 [e3,b3,ab4]@2 [eb3,eb4,gb4]@9]/2", M: "[e2,b2,ab3,e4]/2", N: "d3/2", O: "[db3,f4]/2",
P: "[gb3,db4,bb4]", Q: "[g3,e4]", R: "[[ab3,eb4,gb4,b4]@5 bb4@2 ~@4 gb3@3 [gb4,bb4]@2, ~@7 [db4,f4,ab4]@7 ~@2]/2",
S: "[[eb4,b4]@5 bb4@2 ~@7 [gb4,bb4]@2, ab3@4 ~@3 [db4,f4,ab4]@7 ~@2, ~@22 gb3@9 ~]/2", // Abm Gb Db
T: "[[ab3,eb4,b4]@5 [db4,bb4]@2 ~@2 db3@3 f3@2 [gb3,gb4,bb4]@2, ~@7 [f4,ab4]@7 ~@2]/2", // Abm Gb Fm
U: "[[eb4,b4]@5 [db4,bb4]@2 [db3,f4,ab4]@9, ab3@7 ~@9]/2", V: "[[gb3,bb4]@7 gb4@8 ab4, ~@7 [eb3,bb3]@9]/2",
W: "[[gb3,db4,bb4]@5 [f3,ab4]@2 [eb3,bb3,gb4]@9]/2", // Gb Fm Ebm
X: "[[ab3,eb4,b4]@5 bb4@2 ~@4 gb3@3 [gb4,bb4]@2, ~@7 [db4,f4,ab4]@7 ~@2]/2", // Abm Gb Db
Y: "[[ab3,eb4,b4]@5 [db4,bb4]@2 [db3,f4,ab4]@9]/2", // Abm Gb Db
Z: "[[ab3,eb4,b4]@5 bb4@2 ~@7 [gb4,bb4]@2, ~@7 [db4,f4,ab4]@7 ~@2, ~@22 gb3@9 ~]/2", // Abm Gb Db
AA: "[[ab2,b3]@2 ~@2 [b3,eb4,gb4] ~@3 [eb4,gb4]@2 [bb3,d4,gb4]@2 ~@2 [db3,ab3,db4,f4]@42 ~@8, eb4 ~@3 ab2@2 ~@2 [ab2,b3] ~ ab2 ~@53]/4", // Abm B Ebm Bbaug Db Abm
})).s("gm_string_ensemble_1").gain(0.22)
// other · distortion guitar
const distortion_guitar = note("<~@9 A B C D E@2 F@2 ~@62 G H I J K@2 L@2 ~@14 L@2 ~@6 L@2 ~@6 L@10 ~@3>".pickRestart({
A: "~@2 gb5 ~ gb5@2 ~ gb5", B: "~@2 e5@2 db5 ~@3 db5@6 ~@2", C: "~@2 ab5 ~ gb5@2 ~ e5",
D: "~@2 e5@2 db5@2 ~@2 db5@2 e5 ~ db5@3 ~", E: "[~@4 ab5@2 ~@2 gb5@4 ~@2 ab5@4 f5@3 ~ d5@3 ~ b4@2 d5 ~ f5 ~]/2",
F: "[db5@2 ~@2 db5@2 ~@2 db5@3 ~ ab4@15 ~@5]/2", G: "~@2 ab5 ~ ab5@2 ~ ab5", H: "~@2 gb5@2 eb5 ~@3 eb5@6 ~@2",
I: "~@2 bb5 ~ ab5@2 ~ gb5", J: "~@2 gb5@2 eb5@2 ~@2 eb5@2 gb5 ~ eb5@3 ~",
K: "[~@4 bb5@2 ~@2 ab5@4 ~@2 bb5@4 g5@3 ~ e5@3 ~ db5@2 e5 ~ g5 ~]/2", L: "[eb5@2 ~@2 eb5@2 ~@2 eb5@3 ~ bb4@15 ~@5]/2",
})).s("gm_distortion_guitar").gain(0.3)
// other · orchestral harp
const orchestral_harp = note(`<
~@57 A ~ A ~@11 A ~ A ~@11 A ~ A ~ A ~@11 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@3 B C ~@3
>`.pickRestart({
A: "[eb3,gb3] [b3,db4,eb4] [gb4,b4,db5] [eb5,gb5,b5] [db6,eb6,gb6] ~@11", B: "~@14 [db3,eb3] [f3,ab3,db4]",
C: "[eb4,f4,ab4] [bb4,db5,eb5] [f5,ab5,db6] [eb6,f6,ab6] ~@12", // Fm7 Eb7 Db Fm7
})).s("gm_orchestral_harp").gain(0.14)
// bass · acoustic bass
const bass = note(`<
~@49 A@2 B@2 C D E F G H G H I J I K L@2 M N O P G H G H I J I K L@2 M N O P Q@2 R H R H S T U V W@2 X Y Z AA Q@2 R H
R H S T Q@2 R H R H S T Q@2 R H R H S T AB@4 ~
>`.pickRestart({
A: "[e1@31 ~]/2", B: "e1@7 ~ e1@7 ~", C: "f1@5 ~ f1 ~ f1@5 ~ f1 ~", D: "f1@5 ~ f1 ~ f1@7 ~",
E: "gb1@5 ~ gb1 ~ gb1@7 ~", F: "g1@5 ~ g1 ~ g1@4 eb1@3 ~", G: "ab1@5 ~ ab1 ~ ab1@7 ~",
H: "db2@5 ~ db2 ~ db2@5 ~ eb2 ~", I: "ab1@5 ~ ab1 ~ ab1@6 ~@2", J: "db2@5 ~ db2 ~ db1@3 ~ eb1@3 ~",
K: "db2@5 ~ db2 ~ db2@3 ~ db2@2 eb2 ~", L: "[gb1@5 ~ gb1 ~ gb1@2 bb1@2 db2 ~ eb2@6 ~@2 eb2@4 db2@2 bb1@2 ab1 ~]/2",
M: "gb1@5 ~ gb1@7 ~ db2 ~", N: "eb2@5 ~ eb2 ~ eb2@2 db2@2 bb1@2 ab1 ~", O: "gb1@6 gb2 ~ gb2@6 ~@2",
P: "g2@6 g1 ~ g1@4 eb2@3 ~", Q: "[ab1@3 ~ bb1@2 ~@2 b1@2 ab1 ~ c2@2 db2@7 ~ db2 ~ db2@5 ~ eb2 ~]/2",
R: "ab1@5 ~ ab1 ~ ab1@5 ~ db2 ~", S: "ab1@5 ~ ab1 ~ ab1@5 ~ ab1 ~", T: "db2@5 ~ db2 ~ db2@2 gb1 ~ g1 ~ ab1 ~",
U: "ab1@5 ~ ab1 ~ ab1@5 ~ eb2 ~", V: "db2@5 ~ db2 ~ db2@5 ~ db2 ~",
W: "[gb1@5 ~ gb1 ~ gb1@5 ~ eb2@7 ~ eb2@4 db2 ~ bb1@2 ab1 ~]/2", X: "gb1@5 ~ gb1 ~ gb1@5 ~ eb2 ~",
Y: "eb2@5 ~ eb2@3 ~ db2@2 eb2@2 db2 ~", Z: "gb2@5 ~ gb1 ~ gb1@5 ~ gb1 ~", AA: "g1@5 ~ g2 ~ g2@3 ~ g1@3 ~",
AB: "[ab1@2 ~@2 bb1@2 ~@2 b1@2 ab1 ~@3 db2@50]/4",
})).s("gm_acoustic_bass").gain(0.4)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
~ A@2 B@4 C@2 D@2 E@2 F@2 G@2 B@4 H@2 I@2 E@2 F@2 B@4 H@2 I@2 E@2 F@2 B@6 J@2 K@4 L@2 M@2 N@6 O@2 P@2 Q@2 M@2 N@6 O@2
P@2 Q@2 M@2 N@8 O@2 P@2 Q@2 M@2 N@24 R@4 ~
>`.pickRestart({
A: "[[gb2,db3]@4 ~@4 [e3,a3,db4] ~ [e3,a3,db4]@2 db3 ~ gb3@4 gb3@2 ~@4 [gb3,b3]@2 gb3@2 gb3@2 [gb2,b2] ~, db4@6 gb2@7 ~ [gb2,b2]@8 [gb2,b2]@4 [gb2,b2,b3,eb4]@5 ~, [e3,a3]@3 ~ [e3,a3]@4 ~@6 [b3,eb4]@6 eb4@6 ~@6, ~@6 db3@5 ~@9 [gb3,b3]@4 ~@8]/2", // Gb5 A B5 B A5 B B5
B: "[[gb3,a3,db4]@4 ~@6 [a3,db4]@2 [gb2,db3] ~ gb3@4 gb3@2 ~@10 [gb2,b2]@2, [gb2,db3]@3 [gb2,db3]@3 ~ [gb2,b2]@4 [gb2,b2]@4 ~, ~@2 [a3,db4]@3 ~@2 [b3,eb4]@3 [b3,eb4]@3 [b3,eb4]@3, ~@4 gb3@4 gb3@5 ~@7 gb3@4 gb3@4 gb3@4]/2", // Gbm A Gb5 B5 Gb5 B5 A B
C: "[[gb3,a3,db4]@4 ~@6 [e3,a3,db4]@4 gb3@4 gb3@2 ~@8 gb3@2 [gb2,b2] ~, [gb2,db3]@3 [gb2,db3]@4 [gb2,b2]@4 [gb2,b2]@4 ~, ~@4 [a3,db4]@6 ~@4 [b3,eb4]@6 [b3,eb4]@6 [b3,eb4]@5 ~, ~@2 gb3@2 gb3@3 ~@3 gb3@2 gb3@2 ~@2]/2", // Gbm A B5 Gb5 B5 A B
D: "[~@8 e3@2 e3@2 e3@2 e3@4 ~@10 e3@2 b2 ~, [ab3,b3]@5 [ab3,b3]@2 db4@6 ~@3, e2@3 [e2,b2]@4 ~@2 e3@3 e3@2 ~@2, e3@4 e3@4 ~@6 ab3@6 ab3@6 [ab3,db4]@5 ~, ~@2 b2@4 ~@8 db3@8 [ab2,db3]@9 ~]/2", // Abm E5 Db5
E: "[[e2,b2,e3]@5 ~@7 e3@2 e3@4 ~@12 e3@2, [ab3,b3]@5 [ab3,b3]@2 db4@6 db4@3, ~@5 e3@3 e3@4 ~@2 ab3@6 ab3@8 ab3@4, ~@3 [e2,b2]@4 [ab2,db3]@4 [ab2,db3]@5, ~@9 e3@3 e3@3 ~]/2", // E5 Abm E5 Db5
F: "[[e3,ab3,b3]@4 ~@6 [ab3,b3]@3 ~ f3@4 ~@4 f3@4 f3@2 [f3,ab3,b3]@3 ~, [e2,b2]@6 [e2,b2]@7 ~ f2@12 f2@5 ~, ~@4 [ab3,b3]@6 ~@4 [ab3,b3,d4]@8 d4@9 ~, ~@4 e3@4 e3@5 ~@5 f3@4 [ab3,b3]@6 ~@4, ~@20 d3@11 ~]/2", // E Abm Fdim E5 Abm Abdim Abm
G: "[[gb2,db3]@4 ~@4 [e3,a3,db4] ~ [e3,a3,db4]@2 db3 ~ gb3@4 gb3@2 ~@4 [gb3,b3]@2 gb3@2 ~@2 [gb2,b2]@2, db4@6 gb2@7 ~ [gb2,b2]@8 [gb2,b2]@4 [gb2,b2]@4 ~@2, [e3,a3]@3 ~ [e3,a3]@4 ~@6 [b3,eb4]@6 eb4@6 [b3,eb4]@6, ~@6 db3@5 ~@9 [gb3,b3]@4 ~@4 gb3@4]/2", // Gb5 A B5 A5 B B5
H: "[[gb3,a3,db4]@2 ~@3 [e3,a3,db4]@2 gb3@2 gb3 ~@5 [gb2,b2], [gb2,db3]@3 [gb2,db3]@4 [gb2,b2]@4 [gb2,b2]@4 ~, ~@2 [a3,db4]@3 ~@2 [b3,eb4]@3 [b3,eb4]@3 [b3,eb4]@3, ~@2 gb3@2 gb3@3 ~@3 gb3@2 gb3@2 gb3@2]/2", // Gbm A B5 Gb5 B5 A B
I: "[~@4 e3!3 e3@2 ~@6 b2, [ab3,b3]@5 [ab3,b3]@2 db4@6 ~@3, e2@3 [e2,b2]@4 ~@2 e3@3 e3@2 e3@2, e3@2 e3@2 ~@3 ab3@3 ab3@3 [ab3,db4]@3, ~ b2@2 ~@4 db3@4 [ab2,db3]@5]/2", // Abm E5 Db5
J: "[[gb3,a3,db4]@4 ~@6 [e3,a3,db4]@4 gb3@4 gb3@2 ~@8 gb3@2 [gb2,b2] ~, [gb2,db3]@3 [gb2,db3]@4 [gb2,b2]@4 [gb2,b2]@4 ~, ~@2 [a3,db4]@3 ~@2 [b3,eb4]@3 [b3,eb4]@3 [b3,eb4]@2 ~, ~@2 gb3@2 gb3@3 ~@3 gb3@2 gb3@2 ~@2]/2", // Gbm A B5 Gb5 B5 A B
K: "[ab3 ~@27 b3@2 ~@2 ab3 ~@3 ab3@2 ~@20 ab3@2 [b3,d4,ab4]@2 ab3@2, e3@6 [e4,ab4]@4 ab3@7 ~ ab3@6 e3@5 ~ e3@4 e3@5 ~ e3@7 ~ e3@6 [d4,ab4]@6 ~@4, [b3,e4]@4 b3@7 ~@3 [b3,e4,ab4]@5 ~ b3@6 ab3@5 ~ [b3,d4,ab4]@5 ~ b3@4 ab3@4 [d4,ab4]@5 ~ b3@6 ~@6, ~@2 ab3@6 e3@7 ~ e3@6 [e4,ab4]@5 ~@11 [d4,ab4]@6 b3@6 ab3@5 ~ e3@7 ~]/4", // Abdim E Ddim E5 E Abdim Ddim E …
L: "[f4 ~@9 ab3@2 ~@6 ab3@2 b3 ~ [b3,f4,ab4]@2 ~@2 ab3@2 [b3,f4]@2 ab3 ~, db3@7 ~ db3@7 ~ db3@7 ~ db3@6 ~@2, ~ ab3@2 [f4,ab4]@2 ~@2 [f4,ab4]@2 ~@7, ~@2 b3@3 ~ b3@3 ~@7]/2", // Fdim Bdim Fm
M: "[[gb3,bb3,db4]@4 ~@6 [bb3,db4]@3 ~ g3@4 ~@4 g3@4 g3@2 [g3,bb3,db4]@3 ~, [gb2,db3]@6 [gb2,db3]@7 ~ g2@12 g2@5 ~, ~@4 [bb3,db4]@6 ~@4 [bb3,db4,e4]@8 e4@9 ~, ~@4 gb3@4 gb3@5 ~@5 g3@4 [bb3,db4]@6 ~@4, ~@20 e3@11 ~]/2", // Gb Bbm Gdim Gb5 Bbm Bbdim Bbm
N: "[[ab3,b3,eb4]@4 ~@6 [b3,eb4]@2 [ab2,eb3] ~ ab3@4 ab3@2 ~@10 [ab2,db3]@2, [ab2,eb3]@3 [ab2,eb3]@3 ~ [ab2,db3]@4 [ab2,db3]@4 ~, ~@2 [b3,eb4]@3 ~@2 [db4,f4]@3 [db4,f4]@3 [db4,f4]@3, ~@4 ab3@4 ab3@5 ~@7 ab3@4 ab3@4 ab3@4]/2", // Abm B Ab5 Db5 Ab5 Db5 B Db
O: "[[ab3,b3,eb4]@2 ~@3 [gb3,b3,eb4]@2 ab3@2 ab3 ~@5 [ab2,db3], [ab2,eb3]@3 [ab2,eb3]@4 [ab2,db3]@4 [ab2,db3]@4 ~, ~@2 [b3,eb4]@3 ~@2 [db4,f4]@3 [db4,f4]@3 [db4,f4]@3, ~@2 ab3@2 ab3@3 ~@3 ab3@2 ab3@2 ab3@2]/2", // Abm B Db5 Ab5 Db5 B Db
P: "[~@4 gb3!3 gb3@2 ~@6 db3, [bb3,db4]@5 [bb3,db4]@2 eb4@6 ~@3, gb2@3 [gb2,db3]@4 ~@2 gb3@3 gb3@2 gb3@2, gb3@2 gb3@2 ~@3 bb3@3 bb3@3 [bb3,eb4]@3, ~ db3@2 ~@4 eb3@4 [bb2,eb3]@5]/2", // Bbm Gb5 Eb5
Q: "[[gb2,db3,gb3]@5 ~@7 gb3@2 gb3@4 ~@12 gb3@2, [bb3,db4]@5 [bb3,db4]@2 eb4@6 eb4@3, ~@5 gb3@3 gb3@4 ~@2 bb3@6 bb3@8 bb3@4, ~@3 [gb2,db3]@4 [bb2,eb3]@4 [bb2,eb3]@5, ~@9 gb3@3 gb3@3 ~]/2", // Gb5 Bbm Gb5 Eb5
R: "[~ b3@2 ~@2 b3@2 ~ [eb3,gb3,b3]@2 [eb3,gb3,bb3] ~@4 ab3@49, [eb3,gb3] ~ [eb3,gb3] ~@4 f3@25, ~@7 db3@13 ~@12]/4", // B Ebm
})).s("gm_acoustic_guitar_nylon").gain(0.19).pan(0.8)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
~ A@4 B@2 C@2 D@2 E@4 F@4 B@2 G@4 H@4 I@2 B@2 G@4 H@4 J@2 B@4 K@4 L@2 M@2 N O P@2 Q@2 P@2 R@4 S@4 Q@6 R@4 T@4 Q@8 R@4
T@4 Q@24 U@4 ~
>`.pickRestart({
A: "[[gb2,db3]@4 ~@6 [db4,gb4]@2 db3 ~ [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@4 [b3,eb4]@4 ~@2 gb2@4 ~@6 [db4,e4]@2 [gb2,db3]@2 [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@6 [b2,eb3] ~ gb3 ~, a3@6 gb2@7 ~@11 gb3@6 ~ db4@4 ~ [db4,gb4]@5 ~@11 [b3,eb4]@5 ~ [b3,eb4]@6, [db4,gb4]@3 ~ [db4,gb4]@4 a3@5 ~@7 [b3,eb4]@5 ~@6 a3@8 ~ a3@5 ~@11 gb3@5 ~@3, ~@6 db3@5 ~@3 b2@7 ~ [b2,eb3]@6 ~@2 db3@7 ~ [gb2,db3]@5 ~@3 b2@7 ~ [b2,eb3]@5 ~@5, ~@32 gb4@3 ~@29]/4", // Gb5 B Dbm Gb5 B Gb5 B Gb5 …
B: "[gb2@4 ~@6 [db4,e4]@2 [gb2,db3]@2 [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@6 [b2,eb3] ~ gb3 ~, gb4@3 ~ [db4,gb4]@4 a3@5 ~@7 [b3,eb4]@4 gb3@5 ~@3, ~@6 [gb2,db3]@5 ~@3 b2@7 ~ [b2,eb3]@4 [b3,eb4]@6]/2", // Dbm Gb5 B Gb5 B Gb5 B
C: "[[db4,gb4]@3 ~@7 a3@2 [db4,e4] ~ [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@4 [b3,eb4]@2 eb3 ~@2 [ab3,b3], a3@8 db3@5 ~ b2@7 ~ b2@8 ~@2, [gb2,db3]@6 gb2@6 ~@10 eb3@5 ~@3 e3@2, ~@4 [db4,gb4]@5 ~ gb4 ~@9 [b3,eb4]@4 gb3@5 ~@3]/2", // Gb5 Dbm B Abm Gb5 B
D: "[~@8 e2@2 [e3,e4]@3 ~ [ab3,db4,e4]@4 e3@2 ab3@2 ~@6 ab3@2 e3 ~, e4@8 ~@12 [db4,e4]@5 ~ [db4,e4]@5 ~, ~@4 e3@6 [ab3,b3] ~@13 ab3@4 ~@4, ~@6 b2@5 ~@3 db3@7 ~ [db3,e3]@7 ~@3]/2", // E Dbm Abm Dbm
E: "[~@10 [b3,e4]@2 ~@8 e3 ~@7 e3@3 ~ b2@4 e3 ~@5 [b3,e4]@2 b2@2 ab3@5 ~@9 d4@2 d3 ~, [b3,e4]@8 ab3@4 ab3@5 ~ ab3@4 e3@4 [db4,e4]@5 ~ [b3,e4]@8 ~@6 [b3,d4]@11 ~ b3@4 ~@2, [b2,ab3]@6 b2@8 [db4,e4]@6 [db4,e4]@4 ab3@6 ~ ab3@7 ~@2 ab3@4 ~@10 ab3@8 ~@2, ~@4 e3@11 ~ db3@5 ~ db3@7 ~@9 b2@5 ~@9 d3@8 ~@4]/4", // E5 Dbm E5 Bm E Dbm
F: "[[gb2,db3]@4 ~@6 [db4,gb4]@2 db3 ~ [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@4 [b3,eb4]@4 ~@2 gb2@4 ~@6 [db4,e4]@2 [gb2,db3]@2 [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@6 [b2,eb3] ~ gb3 ~, [db4,gb4]@3 ~ [db4,gb4]@4 a3@5 ~@7 [b3,eb4]@5 ~@6 a3@8 ~ a3@5 ~@7 [b3,eb4]@5 ~ [b3,eb4]@6, a3 ~@5 gb2@7 ~@11 gb3@6 ~ db4@4 ~ [db4,gb4]@5 ~@15 gb3@5 ~@3, ~@6 db3@5 ~@3 b2@7 ~ [b2,eb3]@6 ~@2 db3@7 ~ [gb2,db3]@5 ~@3 b2@7 ~ [b2,eb3]@5 ~@5, ~@32 gb4@3 ~@29]/4", // Gb5 B Dbm Gb5 B Gb5 B Gb5 …
G: "[[db4,gb4]@3 ~@7 a3@2 [db4,e4] ~ [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@4 [b3,eb4]@2 eb3 ~@11 e2@2 [e3,e4]@3 ~ [ab3,db4,e4]@4 e3@2 ab3@2 ~@6 ab3@2 e3 ~, a3@8 db3@5 ~ b2@7 ~ b2@8 ~@2 e4@8 ~@12 [db4,e4]@5 ~ [db4,e4]@5 ~, [gb2,db3]@6 gb2@6 ~@10 eb3@5 ~@3 e3@5 ~ e3@6 ~@22, ~@4 [db4,gb4]@5 ~ gb4 ~@9 [b3,eb4]@4 gb3@5 ~@2 [ab3,b3]@10 ~ [ab3,b3] ~@13 ab3@4 ~@4, ~@38 b2@5 ~@3 db3@7 ~ [db3,e3]@7 ~@3]/4", // Gb5 Dbm B E Dbm Gb5 B Abm …
H: "[~@10 [b3,e4]@2 ~@8 e3 ~@7 e3@3 ~ b2@4 e3 ~@5 [b3,e4]@2 b2@2 ab3@5 ~@9 d4@2 d3@2, [b3,e4]@8 ab3@4 ab3@5 ~ ab3@4 e3@4 [db4,e4]@5 ~ [b3,e4]@8 ~@6 [b3,d4]@11 ~ b3@4 ~@2, [b2,ab3]@6 b2@8 [db4,e4]@6 [db4,e4]@4 ab3@6 ~ ab3@7 ~@2 ab3@4 ~@10 ab3@8 ~@2, ~@4 e3@11 ~ db3@5 ~ db3@7 ~@9 b2@5 ~@9 d3@8 ~@4]/4", // E5 Dbm E5 Bm E Dbm
I: "[[gb2,a3]@4 ~@6 [db4,e4]@2 [gb2,db3]@2 [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@6 [b2,eb3] ~ gb3 ~, gb4@3 ~ [db4,gb4]@4 a3@5 ~@7 [b3,eb4]@4 gb3@5 ~@3, ~@6 [gb2,db3]@5 ~@3 b2@7 ~ [b2,eb3]@4 [b3,eb4]@6]/2", // Gbm Dbm Gb5 B Gb5 B Gb5 B
J: "[gb2@4 ~@6 [db4,e4]@2 [gb2,db3]@2 [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@6 [b2,eb3] ~ gb3 ~, gb4@3 ~@3 [gb2,db3]@5 ~@3 b2@7 ~ [b2,eb3]@4 [b3,eb4]@6, a3 ~@3 [db4,gb4]@4 a3@5 ~@7 [b3,eb4]@4 gb3@5 ~@3]/2", // Dbm Gb5 B Gb5 B Gb5 B
K: "[[db4,gb4]@3 ~@7 a3@2 [db4,e4] ~ [gb3,b3,eb4]@4 eb3@2 gb3@2 ~@4 [b3,eb4]@2 eb3 ~@11 e2@2 [e3,e4]@3 ~ [ab3,b3,e4]@4 e3@2 ab3@2 ~@6 ab3@2 e3@2, a3@8 db3@5 ~ b2@7 ~ b2@8 ~@2 e4@8 ~@24, [gb2,db3]@6 gb2@6 ~@10 eb3@5 ~@3 e3@5 ~ e3@6 ~@14 ab3@4 ~@4, ~@4 [db4,gb4]@5 ~ gb4 ~@9 [b3,eb4]@4 gb3@5 ~@2 [ab3,b3]@10 ~ [ab3,b3] ~@9 [b3,e4]@5 ~ [b3,e4]@5 ~, ~@38 b2@5 ~@3 b2@7 ~ [b2,e3]@7 ~@3]/4", // Gb5 Dbm B E Gb5 B Abm E5
L: "[~@10 [b3,e4]@2 ~@16 e3@3 ~, [b3,e4]@8 ab3@4 ab3@5 ~ ab3@4 e3@4 [d4,e4]@5 ~, [d3,ab3]@6 b2@8 ~@2 d3@5 ~ b2@7 ~@3, ~@4 e3@5 ~@5 [b3,e4]@6 d4@4 ab3@6 ~@2]/2", // E5 Dsus2 Ddim E5
M: "[~ [db4,ab4]@3 ~@12 f3@2 ~@2 f3@2 ~@6 [db4,ab4]@2 f3@2, [db3,f3]@6 [db4,ab4]@6 b3@5 ~ b3@7 ~ b3@4 ~@2, b3@3 ~ b3@4 db3@6 [db4,ab4]@5 ~@3 [db4,ab4]@5 ~@5, ~@10 f3@5 ~ db3@7 ~ [db3,f3]@5 ~@3]/2", // Db5 Db Db5 Db
N: "[db4,gb4] ~@2 gb4 bb3 [db4,gb4] bb3 [db4,e4], ~@2 bb3@5 ~@9, ~ db4 ~@2", // Gb5 Dbm
O: "bb3@2 db4@2 e4 ~ [db4,e4]@2 bb3@2 ~@2 bb3@2 db4@2, ~@5 bb3@2 ~@3 eb4@4 ~@2", // Dbm
P: "[ab2@4 ~@6 [eb4,gb4]@2 [ab2,eb3]@2 [ab3,db4,f4]@4 f3@2 ab3@2 ~@6 [db3,f3] ~ ab3@2, ab4@3 ~ [eb4,ab4]@4 b3@5 ~@7 [db4,f4]@4 ab3@5 ~@3, ~@6 [ab2,eb3]@5 ~@3 db3@7 ~ [db3,f3]@4 [db4,f4]@6]/2", // Ebm Ab5 Db Ab5 Db Ab5 Db
Q: "[ab2@4 ~@6 [eb4,gb4]@2 [ab2,eb3]@2 [ab3,db4,f4]@4 f3@2 ab3@2 ~@6 [db3,f3] ~ ab3 ~, ab4@3 ~ [eb4,ab4]@4 b3@5 ~@7 [db4,f4]@4 ab3@5 ~@3, ~@6 [ab2,eb3]@5 ~@3 db3@7 ~ [db3,f3]@4 [db4,f4]@6]/2", // Ebm Ab5 Db Ab5 Db Ab5 Db
R: "[[eb4,ab4]@3 ~@7 b3@2 [eb4,gb4] ~ [ab3,db4,f4]@4 f3@2 ab3@2 ~@4 [db4,f4]@2 f3 ~@11 gb2@2 [gb3,gb4]@3 ~ [bb3,eb4,gb4]@4 gb3@2 bb3@2 ~@6 bb3@2 gb3 ~, b3@8 eb3@5 ~ db3@7 ~ db3@8 ~@2 gb4@8 ~@12 [eb4,gb4]@5 ~ [eb4,gb4]@5 ~, [ab2,eb3]@6 ab2@6 ~@10 f3@5 ~@3 gb3@5 ~ gb3@6 ~@22, ~@4 [eb4,ab4]@5 ~ ab4 ~@9 [db4,f4]@4 ab3@5 ~@2 [bb3,db4]@10 ~ [bb3,db4] ~@13 bb3@4 ~@4, ~@38 db3@5 ~@3 eb3@7 ~ [eb3,gb3]@7 ~@3]/4", // Ab5 Ebm Db Gb Ebm Ab5 Db Bbm …
S: "[~@10 [db4,gb4]@2 ~@8 gb3 ~@7 gb3@3 ~ db3@4 gb3 ~@5 [db4,gb4]@2 db3@2 bb3@5 ~@11 e3@2, [db4,gb4]@8 bb3@4 bb3@5 ~ bb3@4 gb3@4 [eb4,gb4]@5 ~ [db4,gb4]@8 ~@6 [db4,e4]@11 ~ db4@4 ~@2, [db3,bb3]@6 db3@8 [eb4,gb4]@6 [eb4,gb4]@4 bb3@6 ~ bb3@7 ~@2 bb3@4 ~@10 bb3@8 ~@2, ~@4 gb3@11 ~ eb3@5 ~ eb3@7 ~@9 db3@5 ~@9 e3@8 e4@4]/4", // Gb5 Ebm Gb5 Dbm Gb Ebm
T: "[~@10 [db4,gb4]@2 ~@8 gb3 ~@7 gb3@3 ~ db3@4 gb3 ~@5 [db4,gb4]@2 db3@2 bb3@5 ~@9 e4@2 e3 ~, [db4,gb4]@8 bb3@4 bb3@5 ~ bb3@4 gb3@4 [eb4,gb4]@5 ~ [db4,gb4]@8 ~@6 [db4,e4]@11 ~ db4@4 ~@2, [db3,bb3]@6 db3@8 [eb4,gb4]@6 [eb4,gb4]@4 bb3@6 ~ bb3@7 ~@2 bb3@4 ~@10 bb3@8 ~@2, ~@4 gb3@11 ~ eb3@5 ~ eb3@7 ~@9 db3@5 ~@9 e3@8 ~@4]/4", // Gb5 Ebm Gb5 Dbm Gb Ebm
U: "[[b3,eb4,gb4]@2 ~@2 [b3,eb4,gb4] ~@3 [b3,eb4,gb4]@2 [bb3,eb4,gb4] ~@4 [db4,f4]@49, ~@7 ab3@25]/4", // B Ebm Db
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.2)
// other · distortion guitar
const distortion_guitar_2 = note(`<
~@9 A B C D E@2 F@2 ~@62 G H I J K@2 L@2 ~@14 L@2 ~@6 L@2 ~@6 L@10 ~@3
>`.pickRestart({
A: "~@4 ab5@3 ~ gb5@4 ~@2 e5@2", B: "~@2 e5 ~ db5@2 ~@2 db5@6 ~@2", C: "~@4 ab5@3 ~ gb5@3 ~@3 gb5@2",
D: "~@2 e5 ~ db5@2 ~@2 db5@2 e5 ~ db5@4", E: "[~@4 ab5@3 ~ gb5@4 ~@2 f5@4 d5@3 ~ b4@3 ~ ab4@2 b4@2 d5@2]/2",
F: "[a4@2 ~@2 a4@2 ~@2 a4@4 e4@2 eb4@17 ~]/2", G: "~@4 bb5@3 ~ ab5@4 ~@2 gb5@2", H: "~@2 gb5 ~ eb5@2 ~@2 eb5@6 ~@2",
I: "~@4 bb5@3 ~ ab5@3 ~@3 ab5@2", J: "~@2 gb5 ~ eb5@2 ~@2 eb5@2 gb5 ~ eb5@4",
K: "[~@4 bb5@3 ~ ab5@4 ~@2 g5@4 e5@3 ~ db5@3 ~ bb4@2 db5@2 e5@2]/2", L: "[b4@2 ~@2 b4@2 ~@2 b4@4 gb4@2 f4@17 ~]/2",
})).s("gm_distortion_guitar").gain(0.22)
// drums · kick
const kick = s("bd").struct("<~@53 A@3 B C@12 D B C@12 D B C@14 D B C@24 E ~@4>".pickRestart({
A: "x!2", B: "x ~@3 x ~@2 x", C: "x ~@3 x!2 ~ x", D: "x ~@3 x!2 ~@2", E: "x ~ x ~ x ~@2 x",
})).gain(0.4)
// drums · snare
const snare = s("sd").struct("<~@53 [~ x ~ x]!72 ~@5>").gain(0.5)
// drums · low tom
const low_tom = s("lt").struct("<~@125 [~@3 x] ~@4>").gain(0.35)
// drums · hihat
const hihat = s("hh").struct("<[x!4] ~@8 [~ x ~ x]!43 ~@78>").gain(0.3)
// drums · mid tom
const mid_tom = s("mt").struct("<~@125 [~@5 x ~@2] ~@4>").gain(0.4)
// drums · high tom
const high_tom = s("ht").struct("<~@56 [~@5 x ~@2] ~@73>").gain(0.4)
// drums · crash
const crash = s("cr").struct("<~@57 A ~@13 A ~@13 A ~@15 A ~@7 A ~@7 A ~@7 B ~@4>".pickRestart({
A: "x", B: "x ~ x ~ x ~@2 x",
})).gain(0.4)
// drums · ride
const ride = s("rd").struct(`<
~@52 A B C D@2 B D@8 E D@3 F B D@8 E D@3 F B D@10 E D@3 F B D@7 B D@7 B D@7 ~@5
>`.pickRestart({
A: "~ x ~ x", B: "~ x!3", C: "~@2 x ~ x ~ x!2", D: "x!4", E: "x ~ x!3 ~ x ~", F: "x ~ x ~ x!3 ~",
})).gain(0.45)
// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
~@9 A ~@5 A ~@9 A ~@11 A ~@13 A ~ A B C D ~@5 E F@3 ~ F@3 G ~@5 E F@3 ~ F@3 G ~@7 E F@3 ~ F@3 G ~@7 E ~@7 E ~@7 E ~@5
>`.pickRestart({
A: "x", B: "x!2 ~ x ~ x ~@2", C: "~@3 x ~ x ~ x", D: "~ x ~ x ~@4", E: "~@3 x ~@3 x", F: "~@3 x ~@4", G: "~ x ~@6",
})).gain(0.25)
// drums · tambourine
const tambourine = s("tb").struct("<~@49 [~ x ~ x]!3 [~@2 x ~@2 x!2 ~] [~@2 x ~@3 x!2] [x!8]!72 ~@4>").gain(0.3)
stack(
piano, string_ensemble_1, distortion_guitar, orchestral_harp, bass, acoustic_guitar_nylon, acoustic_guitar_steel,
distortion_guitar_2, kick, snare, low_tom, hihat, mid_tom, high_tom, crash, ride, ride_soft, tambourine
)
More by George Harrison
Got My Mind Set On You1988 · E major · 150 bpmAll Those Years Ago1981 · D major · 126 bpmBlow Away1979 · D major · 120 bpmCrackerbox Palace1977 · B♭ major · 132 bpmThis Song1977 · E major · 132 bpmBangladeshA minor · 92 bpmGat KirwaniD major · 168 bpmGive Me Love (Give Me Peace on Earth)A♭ major · 134 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.