0:00/0:00
// Sweet Love — RICHIE LIONEL
// 101 bpm, 4/4, key Db 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: duplicate parts dropped: ch 15 acoustic bass (copy of ch 2 slap bass 1)
// 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.
setcpm(101/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 · clavinet
const clavinet = note(`<
A@8 B C@2 D@2 E@2 F G H@4 I@4 J@5 K@8 L@3 M@5 N@6 O@3 P@2 Q@3 R@6 S@4 T@4 U@4 V W@8 ~
>`.pickRestart({
A: "[~@27 [gb2,f3,gb3,bb3,db4]@18 ~@3 [db2,gb3,bb3]@4 gb2@4 [f3,ab3,c4,eb4]@26 ~@2 [f3,ab3,c4,eb4]@4 db3@4 ~ [gb2,f3,gb3,bb3,db4]@19 ~ [db2,f3,gb3,bb3,db4]@4 gb2@4 [f3,ab3,c4,eb4]@26 ~@2 [f3,ab3,c4,eb4]@4 db3@5 [gb2,f3,gb3,bb3,db4]@18 ~@2 [db2,f3,gb3,bb3,db4]@4 gb2@4 [db3,ab3,eb4]@29 [f3,ab3]@4 db3@4 [f3,gb3,bb3,db4]@8 ~@4 [ab3,c4,eb4]@7 ~@5 [eb2,eb3,gb3,bb3,db4]@9, ~@48 [f3,db4]@3 ~@5 db3@28 ~@37 db3@28 ~@37 [f3,c4]@26 ~@3 [c4,eb4]@3 ~@5 gb2@11 ~ [f2,f3]@10 ~@11]/8", // Gbmaj7 Gb Fm7 Gbmaj7 Fm7 Gbmaj7 Dbsus2 Fm …
B: "~@4 [bb3,db4,eb4,gb4] ~@3 [ab2,bb3,db4,eb4,gb4]@17 ~@7, ~@2 ab2 ~@13", // Ebm7
C: "[[gb2,f3,gb3,bb3,db4]@20 [db2,f3,gb3,bb3,db4]@4 gb2@4 [f3,ab3,c4,eb4]@25 ~@3 [f3,ab3,c4,eb4]@4 db3@4, ~@7 db3@7 ~@2]/2", // Gbmaj7 Fm7
D: "[[gb2,f3,gb3,bb3,db4]@19 ~ [db2,f3,gb3,bb3,db4]@4 gb2@4 [db3,f3,eb4]@28 [f3,ab3,c4,eb4]@4 db3@4, ~@28 [ab3,c4]@25 ~@11]/2", // Gbmaj7 Db Fm7 Ab
E: "[[gb2,f3,gb3,bb3,db4]@20 [db2,f3,gb3,bb3,db4]@4 gb2@3 ~ [f3,ab3,c4]@26 ~@2 [f3,ab3,c4,eb4]@4 db3@4, ~@7 [db3,eb4]@7 ~@2]/2", // Gbmaj7 Fm Fm7 Dbsus2
F: "[gb2,f3,gb3,bb3,db4]@11 ~ [f2,f3,ab3,eb4]@10 ~@2 [eb2,eb3,gb3,bb3,db4]@7 ~, ~@12 c4@7 ~@13", // Gbmaj7 Fm7 Ebm7
G: "~@4 [ab2,eb3,gb3,bb3] ~@3 [eb3,gb3,bb3]@6 ~@2 ab3@4 bb3@4 gb4@4 ab3@3 ~, ~@8 ab2@23 ~", // Ebm
H: "[ab4@8 f4@4 ab4@4 f4@4 eb4@4 ~@4 [c4,eb4]@18 ~@6 [c4,eb4,ab4]@5 ~@3 [bb3,db4,gb4]@20 ~@4 gb3@3 ~ [f3,ab3]@4 [gb3,bb3]@19 ~@5 gb3@4 [bb3,db4]@4 gb3 ~@3, ~@24 ab4@23 ~@81]/4", // Cm Ab Gb Fm Gb Bbm
I: "[[db4,f4,ab4]@19 ~ [db4,f4,ab4]@2 ~@6 [c4,eb4,ab4]@22 ~@2 [c4,eb4,ab4]@4 ~@4 [bb3,db4,gb4]@19 ~@5 gb3@4 ab3@3 ~ [gb3,bb3,db4]@29 ~@7]/4", // Db Ab Gb
J: "[[f4,ab4]@8 f4@2 ab4@4 f4@2 ~@4 f4@6 ~@2 [c4,eb4,ab4]@22 ~@2 [c4,eb4,ab4]@4 ~@4 [b3,eb4,gb4]@29 ~@3 [gb3,bb3,db4,f4]@61 ~@7, db4@13 ~@67, ~@16 ab4@9 ~@135]/5", // Fm Ab B Gbmaj7
K: "[~@15 bb4@4 bb3@4 ~@5 [ab3,c4,eb4]@24 ~@3 ab4@4 db3@4 [f3,gb3,bb3,db4]@25 ~@3 [f3,ab3,c4,eb4]@31 db3@4 ~@4 bb3@4 bb4@4 ~@8 bb4@5 ~@3 [ab3,c4,eb4,ab4]@25 ~@3 [ab3,c4,eb4,ab4]@4 db3@4 ~@3 bb3@4 bb4@5 ~@7 bb4@5 ~@4 [c4,f4]@25 ~@2 [ab3,c4,eb4,f4]@4 db3@3 ~ gb2@3, ~@27 f3@25 ~@74 gb2@25 ~@3 db3@28 ~@8 gb2@25 ~@2 [db3,ab3]@28 ~@11, ~@138 bb3@13 ~@51 bb3@13 ~@41, ~@142 db4@8 ~@56 db4@8 ~@3 eb4@25 ~@14]/8", // Ab Gbmaj7 Fm7 Ab F5 Fm7 Db5
L: "[~ bb3@4 bb4@4 ~@8 bb4@5 ~@3 [db3,f3,ab3,c4,eb4]@29 ~@6 [gb2,f3,gb3,bb3,db4]@10 ~@2 [f2,f3,ab3,c4]@9 ~@3 [eb2,eb3,gb3,bb3,db4]@9 ~@3, ~@3 bb3@4 ~@25, ~@13 db4@8 ~@51 eb4@5 ~@19]/3", // Dbmaj7 Gbmaj7 Fm Ebm7
M: "[[ab2,eb3,gb3,bb3,db4] ~@3 [ab2,eb3,gb3,bb3,db4]@8 ab3@4 bb3@4 db4@6 ~@2 f4@18 ~ [ab3,db4,f4]@5 ~@4 [ab3,c4,eb4]@21 ~@2 [ab3,c4,eb4]@5 ~@3 [gb3,b3,eb4]@21 ~@3 [gb3,b3,eb4]@5 ~@3 [gb3,bb3,db4]@41, ~@27 [ab3,db4]@18 ~@115]/5", // Ebm7 Db Ab B Gb Db5
N: "[~@26 [bb3,eb4,g4]@19 ~ [bb3,eb4,g4]@5 ~@3 [bb3,d4,f4]@22 ~@2 [bb3,d4,f4]@4 ~@4 [ab3,c4,eb4]@26 ~ [ab3,c4] eb4 ~@2 [ab3,c4,eb4]@28 ~@8 [bb3,eb4,g4]@19 ~ [bb3,eb4,g4]@4 ~@4 [bb3,d4,f4]@11]/6", // Eb Bb Ab Eb Bb
O: "[~@12 [bb3,d4,f4]@4 ~@4 [ab3,c4,eb4]@26 ~@2 eb4 ~@3 [ab3,c4,eb4]@32 ~@8 eb4@4]/3", // Bb Ab
P: "[bb4@4 eb4@14 ~ bb4@26 ~@6 eb4@8 ab3@5]/2",
Q: "[~@3 eb4@8 ab3@4 eb4@4 ab3@4 c4@18 ~@2 c4@4 ab3@8 eb4@19 bb4@5 eb4@3 d4@14]/3",
R: "[~@10 bb4@4 d3@4 [eb3,ab3,c4,eb4]@24 ~@3 bb3 g3 ~@3 [eb3,ab3,c4]@19 eb4@4 c4@4 ab3@4 c4@4 ~ g3@23 ~@4 [bb3,d4,f4]@28 ~@4 [ab3,c4,eb4]@47, ~@85 [bb3,eb4]@23 ~@84]/6", // Ab Bb Ab Eb5
S: "[~@8 ab3@4 c4@4 eb4@3 ~ [g3,bb3,eb4]@23 ~@5 [bb3,d4,f4]@28 ~@4 [c4,eb4]@42 ~ eb4@4 ab3, ~@4 eb4@7 ~@68 ab3@42 ~@7]/4", // Eb Bb Cm
T: "[~@3 c4@4 ~@4 c4@4 ab3@4 eb4@31 ~@8 bb4@4 ~@4 f4@4 bb4@4 d3@4 ab2@27 ~ [eb3,eb4]@4 [ab3,c4,eb4,ab4]@18, ~@7 eb4@7 ~@48 d4@8 ~@58]/4", // Eb Ab
U: "[~@2 c4@4 eb4 ~@2 eb4@4 c4 ~@3 g4@16 bb4@4 g4@4 bb4@2 ~@2 [d4,f4,bb4]@28 ~@4 [c4,eb4,ab4]@51, ~@17 eb4@25 ~@86, ~@17 bb4@14 ~@97]/4", // Bb Ab
V: "~ [eb4,g4], ~@16 bb4@13 ~@3", // Eb
W: "[bb4@4 g4@4 bb4@2 ~@2 [d4,f4,bb4]@29 ~@2 [c4,eb4,ab4]@60 ~@8 g4@16 bb4@4 g4@4 bb4@2 ~@2 [d4,f4,bb4]@29 ~@2 [c4,eb4,ab4]@61 ~@25, ~@111 eb4@24 ~@121, ~@111 bb4@13 ~@132]/8", // Bb Ab Bb Ab
})).s("gm_clavinet").gain(0.15).pan(0.9)
// bass · slap bass 1
const bass = note(`<
A B C D E@2 F@2 G H ~ I J I ~ K L M N@3 O@4 P@5 Q R@2 S@2 T D U D V@2 W@4 X@2 Y@2 Z AA AB AC AD AE@7 AF@8 AG@6 AH AI
AJ AK AL AM AN AO@3 AP AQ ~
>`.pickRestart({
A: "~@27 gb2@3 ~@2", B: "~@15 db2@3 ~@6 db3@3 ~@5", C: "~@28 gb2@3 ~", D: "~@17 db2@3 ~@5 db3@3 ~@4",
E: "[~@30 gb2@4 ~@16 db2@3 ~@5 db3@3 ~@3]/2", F: "[~@31 gb2@10 ~@2 f2@9 ~@3 eb2@9]/2", G: "~@4 ab2 ~@3 ab2@17 ~@7",
H: "gb2@3 ~@17 db2@4 ~@4 db3@3 ~", I: "gb2@3 ~@17 db2@3 ~@5 db3@3 ~",
J: "~@16 db3 eb3 db3 eb3 [db3,eb3] db3 eb3 db3 eb3 db3 [db3,eb3] eb3 db3 ~@3", K: "gb2@11 ~ f2@10 ~@2 eb2@8",
L: "~@4 ab2 ~@3 ab2@21 ~@3", M: "db2@8 db3@4 db2 ~@3 db2 ~@3 db2@4 ~@4 c2@4",
N: "[~@4 c2@4 c2@8 ~@4 c2@4 ~@4 gb1@12 gb2 ~ gb2 ~@3 gb1 ~ gb1 ~@3 gb1@4 db2 ~@3 gb1@7 ~ gb1@4 gb2@5 ~ gb1 ~ gb1@4 gb2@2 ~@2 ab1 ~ ab1@2 ab2@3 ~]/3",
O: "[db2@10 ~@4 db2 ~ db2 ~@3 db2@4 ~@4 c2@12 c3@3 ~@3 c2 ~ c2 ~@3 c2@5 ~@3 gb1@12 gb2 ~ gb2 ~@3 gb1 ~ gb1 ~@3 gb1@4 db2@4 gb1@8 gb1@4 gb2@5 ~ db2 ~ gb1 ~@3 gb2@4 ab1 ~ ab1 ~ ab2@4]/4",
P: "[db2@12 ~@2 db2 ~ db2 ~@3 db2@4 ~@4 c2@11 ~ c3@5 ~ c2 ~ c2 ~@3 c2@4 ~@4 b1@12 b2@5 ~ b1 ~ b1@2 ~@2 b1@4 ~@4 gb1@66 ~@2]/5",
Q: "gb2@3 ~@16 db2@3 ~@5 db3@2 ~@3",
R: "[~@7 eb3@2 f3@2 ~@4 eb3@8 ~@4 db3 ~@3 gb2@3 ~@17 db2@3 ~@5 db3@3 ~@2, ~@15 db3 ~@48]/2",
S: "[~@16 eb3@2 ~@4 db3@4 ~@4 gb2@4 ~@16 db2@3 ~@5 db3@3 ~@3, ~@15 db3@2 ~@47]/2",
T: "~@6 eb3@2 f3@2 ~@4 eb3@11 ~ db3 ~@3 gb2@2", U: "~@5 db3@2 eb3@2 ~@4 db3@11 ~ db3 ~@3 gb2@3",
V: "[~@5 eb3@2 f3@2 ~@4 eb3@11 ~@4 gb2@9 ~@3 f2@9 ~@3 eb2@9 ~@3]/2",
W: "[ab2 ~@3 ab2@21 ~@3 db2@8 db3@6 db2 ~ db2 ~@3 db2@5 ~@3 c2@11 c3@6 ~ c2!2 ~@3 c2@4 ~@4 b1@12 b2@4 b1@4 b2@4 b1@3 ~@5 gb1@9]/4",
X: "[~@3 gb1@4 gb1@4 gb1@4 gb1@4 gb1@4 gb1@4 gb1@3 gb1@4 ~ gb1@3 gb1@4 g1@4 g1@4 ab1@4 ab1@4 bb1@6]/2",
Y: "[~@2 bb2@6 bb1 ~ bb1@3 ~ bb1@8 bb1@8 bb1@4 bb1@7 ~ bb1@8 bb1@4 ab1@10]/2",
Z: "~@2 ab2@6 ab1!2 ~@3 ab1@4 eb2@2 ~@2 ab1@8 ab1@3", AA: "~ ab2@5 ~ ab1 ~ ab1@2 ~@2 ab1@4 c2@4 d2@4 eb2@7",
AB: "~ eb3@6 eb2 ~ eb2@4 eb2@5 ~@3 d2@11", AC: "~ d3@5 ~ d2 ~ d2@4 d2@7 ab1@12",
AD: "ab2@6 ab1 ~ ab1@4 ab1@4 eb2@2 ~@2 ab1@8 ab1@4",
AE: "[ab2@8 ~@4 ab1@3 ~ bb1@2 c2@2 d2@4 eb2@27 bb1@32 ab1@28 eb2@4 ab1@35 ~ eb2@27 bb1@31 ~ ab1@14]/7",
AF: "[~@14 eb2@4 ab1@35 eb2@28 bb1@32 ab1@27 eb2@4 ab1@35 ~ eb2@28 bb1@31 ab1@17]/8",
AG: "[~@11 eb2@4 ab1@35 ~ eb2@27 bb1@32 ab1@28 eb2@4 ab1@8 ab1@4 ab1@4 ab1@4 ab1@4 ab1@4 ab1@3 ab1@4 ~ eb2@14]/6",
AH: "~ eb2@4 eb2@4 eb2@4 d2@4 ~@4 d2@4 d2@5 ~@2", AI: "~ d2@2 ~@2 d2@4 ~@4 ab1@5 ~@3 ab1@4 ab1@4 ab1@3",
AJ: "~ ab1 ~@3 ab1@4 eb2@4 ab1@5 ~@3 ab1@4 ab1@7", AK: "ab1 ~@4 ab1@3 bb1@4 c2@4 eb2@15 ~",
AL: "eb2@4 eb2@4 eb2@4 d2@3 ~@5 d2@4 d2@4 ~@4", AM: "d2@2 ~@2 d2@4 ~@4 ab1@5 ~@3 ab1@3 ab1@9",
AN: "~@3 ab1@4 eb2@4 ab1@7 ~ ab1@3 ~ ab1@8 ~",
AO: "[~@3 ab1@4 bb1@3 ~ bb1@4 ~@4 eb3 ~@3 eb3@7 ~ eb2@3 ~ eb2@4 eb2@4 d2@5 ~@3 d2@3 ~ d2@6 ~@2 d2@2 ~@2 d2@5 ~@3 ab1@9 ~@2 ab1@9 ~, ~@5 eb2@5 ~@22]/3",
AP: "~@2 ab1@4 eb2@4 ab1@7 ~ ab1@3 ~ ab1@8 ~@2", AQ: "~@2 ab1@4 bb1@3 ~ bb1@5 ~@17",
})).s("gm_slap_bass_1").gain(0.38)
// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
A@2 B@2 C@2 D@2 E F G H I J K L M N@4 O@4 P@5 Q R@2 S@2 T@2 U@2 V@2 W@5 X@5 Y@4 Z@2 ~ AA AB@3 AC AD AE AF AG AH AI@2
AJ AK AL AM AN@7 AO@6 ~
>`.pickRestart({
A: "[~@27 [bb3,db4,f4]@8 [f4,bb4]@3 ~@26]/2", // Bbm Bb5
B: "[~@8 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@4 [c4,f4] ~@3 db4@8 ~ [db4,f4]@2 ~@25, ~@16 ab3@9 ~@3 bb3@11 ~@25, ~@16 ab4 ~@19 bb4@3 ~@25]/2", // Fm F5 Fm F5 Db
C: "[~@9 [c4,f4,ab4]@2 ~@2 [f4,ab4]@2 [f4,ab4]@2 [c4,f4,ab4]@2 ~ c4 [ab3,c4,f4,ab4]@5 ~@4 f4@8 [f4,bb4]@2 ~@24, ~@13 c4@4 ~@2 [f4,ab4]@2 ~@9 [bb3,db4]@11 ~@23]/2", // Fm Bb5 Fm Bbm
D: "[~@10 ab4 f4 ~@3 [c4,f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [ab3,c4,f4,ab4]@4 [c4,f4] ~@4 bb4@8 ~@4 ab4@9 ~@3 [bb3,db4,gb4]@8, ~@19 c4@4 ~@8 [bb3,db4,f4]@9 ~@3 [c4,eb4]@9 ~@12]/2", // Fm F5 Gb Bbm Cm
E: "~@4 [bb3,db4,gb4] ~@3 [bb3,db4,gb4]@14 ~@6 [bb3,db4,gb4,bb4] ~@3", F: "f4@4 [f4,bb4] ~@11, [bb3,db4]@11 ~@21",
G: "~@12 [f4,ab4] ~@3 [c4,f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [ab3,c4,f4,ab4]@4 [c4,f4] ~@3, ~@5 c4 ~@2", // Fm F5
H: "f4@7 ~ [f4,bb4]@2 ~@22, [bb3,db4]@11 ~@21", // Bb5 Bbm
I: "~@12 [c4,f4,ab4] ~@3 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4]@4 ~@4, ~@8 ab3@3 [c4,f4,ab4] ~@4, ~@23 ab3@5 ~@4", // Fm
J: "[bb3,db4,f4]@7 ~ [db4,f4,bb4]@2 ~@22", // Bbm
K: "~@6 [c4,f4,ab4] ~ [f4,ab4]!2 [c4,f4,ab4]!2 [c4,f4,ab4]@2 ~@2, ~@4 ab3@3 ~, ~@4 c4 ~@3", // Fm
L: "[bb3,db4,f4,bb4]@2 ~ [ab3,c4,eb4,ab4]@2 ~ [gb3,bb3,db4,gb4]@2", M: "~@2 [bb3,db4,gb4] ~ [gb3,bb3,db4,gb4]@11 ~",
N: "[[db4,f4,ab4,db5]@24 [f4,ab4] ~@3 [c4,eb4,c5]@28 ~@4 [bb3,db4,gb4,bb4]@24 ~@4 [ab3,db4,f4]@4 [bb3,db4,gb4]@28 ~@8, ~@28 ab4@23 ~@77]/4", // Db Fm Cm Gb Db Gb
O: "[[db4,ab4,db5]@24 [f4,ab4] ~@3 [c4,eb4,c5]@28 eb4 ~@3 [bb3,db4,gb4,bb4]@24 ~@4 [ab3,db4]@4 [bb3,db4,gb4]@29 ~@7, f4@5 ~@2 ab4@6 ~@19]/4", // Db5 Fm Cm Gb Db5 Gb
P: "[[f4,ab4,db5]@24 [f4,ab4] ~@3 [c4,eb4,ab4,c5]@28 ~@4 [b3,eb4,gb4,b4]@28 [eb4,gb4] ~@3 [bb3,db4,gb4,bb4]@65 ~@3, db4 ~@7]/5", // Db Fm Ab B Ebm Gb
Q: "f4@7 ~ bb4@3 ~@21, [bb3,db4]@11 ~@21, ~@7 f4@3 ~@22", // Bbm
R: "[~@11 [c4,f4,ab4] ~@3 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@4 [c4,f4] ~@3 db4@8 [db4,f4,bb4]@2 ~@23, ~@19 ab3@9 ~@3 bb3@11 ~@22, ~@19 ab4 ~@44]/2", // Fm F5 Fm F5 Bbm
S: "[~@10 [c4,f4,ab4] ~@4 [f4,ab4] [f4,ab4]@2 ~ ab4 ~ c4 [ab3,c4,f4,ab4]@5 ~@4 f4@7 [f4,bb4]@2 ~@24, ~@14 c4@4 [c4,f4]@2 [f4,ab4]@2 ~@8 [bb3,db4]@11 ~@23]/2", // Fm Bb5 F5 Fm Bbm
T: "[~@10 [f4,ab4] ~@3 [c4,f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [ab3,c4,f4,ab4]@4 [c4,f4] ~@3 f4@7 [f4,bb4]@2 ~@25, ~@18 c4@4 ~@8 [bb3,db4]@11 ~@23]/2", // Fm F5 Bb5 Bbm
U: "[~@9 [c4,f4,ab4] ~@3 [c4,f4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [ab3,c4,f4,ab4]@4 ~@4 [bb3,db4,f4]@7 ~ [db4,f4,bb4]@2 ~@25, ~@13 ab3@8 ~@43, ~@13 ab4 ~@50]/2", // Fm F5 Fm Bbm
V: "[~@9 [c4,f4] ~@3 ab4 ~ f4@2 ~@2 [c4,f4] ~ ab4@3 ~@5 [f4,bb4]@8 ~@4 ab4@8 ~@4 [bb3,db4,gb4]@9 ~@2, ~@8 ab4@2 ~@2 ab3@12 ~@4 [bb3,db4]@8 ~@4 [ab3,c4,eb4]@8 ~@4 gb3@9 ~@3, ~@13 c4@4 [c4,f4,ab4]@2 ~ [c4,f4]@4 ~@40, ~@13 f4@2 ~@49, ~@7 ab4 ~ ab4 ~@22]/2", // F5 Bb5 Gb Bbm Ab Fm F5
W: "[[bb3,db4,gb4] ~@3 [bb3,db4,gb4]@22 ~@2 [f4,ab4,db5]@24 [f4,ab4,db5] ~@3 [ab4,c5]@27 [eb4,ab4,c5] ~@3 [eb4,gb4,b4]@28 [eb4,gb4,b4] ~@3 [bb3,db4,gb4,bb4]@41, ~@27 db4@26 ~@2 [c4,eb4]@29 ~@76]/5", // Gb Db Ab B Gb Cm
X: "[~@26 [bb3,eb4]@24 [eb4,g4] ~@3 [bb3,d4,f4]@28 [d4,f4] ~@3 [ab3,c4,eb4]@24 ~@4 eb4 ~@3 eb4@29 ~@6 [bb3,eb4,g4]@7, ~@26 g4@20 ~@67 [g3,bb3]@2 ~@2 [ab3,c4]@29 ~@14]/5", // Eb5 Eb Bb Dm Ab Eb Gm Ab
Y: "[~@17 [bb3,eb4] ~@3 [bb3,d4,f4]@27 [bb3,d4,f4] ~@4 eb4@24 ~@3 [g3,bb3,eb4] ~@4 ab3@33 ~@10, ~@52 [ab3,c4]@24 ~@8 [c4,eb4]@33 ~@11]/4", // Eb5 Bb Eb Ab Cm
Z: "[~@19 bb3 ~ c4 bb3@16 ~ c4 ~@11 bb3@2 c4 bb3@8 ~@2]/2", AA: "~@22 eb4@8 bb3 ~",
AB: "[~@10 c4@2 ~@6 bb3@22 ~@10 eb3@20 g3@4 c3 ~@7 eb3@7 f3@4 ~@3]/3",
AC: "~ c3 ~@3 f3 ~ g3@6 eb3@3 ~ c3 ~@7 g3 ~@3 bb3@2 ~", AD: "~@5 c4@3 ~@21 c4@2 bb3",
AE: "~@5 bb3@3 ~@18 c3@2 ~ eb3@3, ~@25 bb2@2 ~@5", AF: "c3@2 ~@15 eb3@11 ~@4",
AG: "bb3 ~@3 c4@2 bb3@2 ~@4 c4@4 c4@4 bb3@4 ~@8", AH: "~@8 c4 ~ c4 ~ c4 ~@3 c4@2 bb3@10 ~@4",
AI: "[~@23 bb2@2 ~@2 eb3@3 ~ eb3@14 ~@10 bb2 b2 c3@2 eb3 ~@4, ~@13 c3 ~@18]/2",
AJ: "~@3 f3@2 eb3@2 c3 ~@3 c4@2 bb3 ~@5 bb3 ~@7 bb3 ~@4", AK: "~@13 c4 bb3 ~",
AL: "~@2 bb3 ~@7 bb3 ~@3 g3 ~@7 bb2@2 c3@2 eb3 ~@3 c3 ~", AM: "~@2 eb3@2 ~@18 bb2@2 c3@2 eb3 ~@3 c3 ~",
AN: "[~@2 eb3@2 ~@14 g4@23 [eb4,g4] ~@3 [bb3,d4,f4]@28 [bb3,d4,f4] ~@3 [ab3,c4,eb4]@23 ~@5 [bb3,eb4] ~@3 [c4,eb4]@30 ~@5 [bb3,eb4,g4]@24 [eb4,g4] ~@3 [bb3,d4,f4]@27 ~ [bb3,d4,f4] ~@3 c4@20, ~@17 [bb3,eb4]@25 ~@66 ab3@30 ~@65 ab3@21]/7", // Eb Bb Ab Eb5 Cm Eb Bb Eb5
AO: "[~@7 [g3,bb3] eb4 ~@2 [ab3,c4,eb4]@30 ~@6 [bb3,eb4,g4]@24 [eb4,g4] ~@3 [bb3,d4,f4]@27 [bb3,d4] f4 ~@3 [c4,eb4]@24 ~@3 [g3,bb3,eb4] ~@3 [ab3,c4,eb4]@28 ~@26, ~@53 ab3@12 ~@31]/6", // Gm Ab Eb Bb Cm Eb Ab
})).s("gm_electric_guitar_jazz").gain(0.12).pan(0.1)
// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
~@2 A@2 B@2 C D E F G ~@2 H ~@2 I ~@8 J K L ~@3 M@2 N@2 O ~@2 P ~@2 Q ~@14 R@2 ~@2 S T ~ U V W X ~@2 Y Z@2 AA ~@4 AB
~@2 AC ~@7
>`.pickRestart({
A: "[~@7 ab3 ~@6 f4@4 ~@14]/2", B: "[~@13 ab3@8 ~@9 bb4@7 ~@27]/2", C: "~@11 c4 ~@2 ab3@8 ~@10",
D: "~@11 ab3@9 ~@3 gb3@9", E: "~@4 gb3 ~@3 gb3@14 ~@10", F: "bb4@7 ~@25", G: "~@12 c4 ~@3 ab3@8 ~@8",
H: "~@4 bb3 ~@11", I: "~@2 gb3 ~@13", J: "~@24 [db4,db5] ~@7", K: "~@24 ab4 ~@7", L: "~@24 b4 ~@7",
M: "[~@17 ab3@2 ~@12 f4@8 ~@25]/2", N: "[~@14 ab3@8 ~@9 bb4@7 ~@26]/2", O: "~@10 c4 ~@3 ab3@8 ~@10",
P: "~@5 bb3@2 ~@25", Q: "gb3 ~@31", R: "[~@11 g3@2 ~@18 g3@2 ~@31]/2", S: "~@10 g3@4 f3@3 ~@15",
T: "~@14 eb3 ~@14 g3@3", U: "~ g3@2 ~@29", V: "~ g3@2 ~@6 g3 ~@3 g3 ~@18", W: "~@2 eb3 ~@13",
X: "~@8 g3@2 ~@14 g3@3 ~@5", Y: "~@31 c3", Z: "[~@15 g3 ~@7 g3@2 ~@6 g3@2 ~@2 c4@4 ~@23 g3 ~]/2", AA: "~@3 g3 ~@12",
AB: "~@8 g3 ~@23", AC: "~@11 eb4@21",
})).s("gm_electric_guitar_jazz").gain(0.06).pan(0.1)
// chords · ocarina
const ocarina = note(`<
A@3 B@2 C@4 ~@7 D E@3 D F@2 G D H@5 ~@4 I@2 J@2 K@2 L M@5 N@4 O@4 ~@20 P@4 Q@2 R@4 S@2 ~@2
>`.pickRestart({
A: "[~@31 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 ~ [f3,ab3,c4]@4 [eb3,gb3,bb3]@4 [f3,ab3,db4]@16 [db3,f3,ab3]@12 ~@12]/3", // Gb Fm Ebm Db
B: "[~ [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [f3,ab3,c4]@4 [eb3,gb3,bb3]@4 [bb3,db4]@4 [f3,ab3,db4]@24 ~@11]/2", // Gb Fm Ebm Bbm Db
C: "[~@2 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [f3,ab3,c4]@4 [eb3,gb3,bb3]@4 [f3,ab3,db4]@12 ~ [ab3,db4,f4]@4 [f3,ab3,db4]@4 [db3,f3,ab3]@12 [db3,f3,ab3]@4 [f3,ab3,db4]@4 [gb3,bb3,db4]@8 [f3,bb3,db4]@4 [bb3,db4]@4 [gb3,eb4]@20 ~@25]/4", // Gb Fm Ebm Db Gb Bbm Ebm
D: "~@4 ab3 bb3 db4@2", E: "[[db4,f4,ab4]@7 [c4,eb4,ab4]@7 [c4,eb4,ab4] [bb3,db4,gb4]@7 ~@2]/3",
F: "[[db4,f4,ab4]@7 [c4,eb4,ab4]@7 [c4,eb4,ab4]!2]/2", G: "[bb3,db4,gb4]@3 ~",
H: "[[db4,f4,ab4]@28 [c4,eb4,ab4]@32 [b3,eb4,gb4]@32 [bb3,db4,gb4]@59 ~@9]/5", // Db Ab B Gb
I: "[~ [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [f3,ab3,c4]@2 [eb3,gb3,bb3]@2 [f3,ab3,db4]@8 [db3,f3,ab3]@7 ~@4]/2", // Gb Fm Ebm Db
J: "[~@2 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@8 [gb3,bb3,db4]@3 [f3,ab3,db4]@32 ~@3]/2", // Gb Db
K: "[~@5 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [f3,ab3,db4]@4 [db3,gb3,bb3]@4 [f3,ab3,db4]@16 [eb3,ab3,c4]@8 [ab3,bb3,db4]@8 [f3,bb3,db4]@4 [gb3,bb3,db4]@3]/2", // Gb Db Gb Db Ab Bbm7 Bbm Gb
L: "~ [gb3,bb3,db4]@3 [f3,ab3,db4]@4 [f3,ab3,db4]@4 [f3,ab3,db4]@4 [c4,eb4]@8 [db4,eb4,gb4]@4 [db4,eb4,gb4]@4", // Gb Db Cm Ebm7
M: "[~@12 ab3@4 bb3@4 db4@8 [db4,f4,ab4]@28 [c4,eb4,ab4]@31 [b3,eb4,gb4]@28 ~@4 [gb3,db4,gb4]@41]/5", // Db Ab B Gb5
N: "[~@13 [eb4,g4,bb4]@14 [d4,f4,bb4]@11 ~@3 [d4,f4,bb4]@2 [d4,f4,bb4]@2 [c4,eb4,ab4]@13 ~@6]/4", // Eb Bb Ab
O: "[~@9 bb3@4 c4@4 eb4@6 ~@2 [eb4,g4,bb4]@28 [d4,f4,bb4]@22 ~@6 [d4,f4,bb4]@4 [d4,f4,bb4]@3 [c4,eb4,ab4]@26 ~@14]/4", // Eb Bb Ab
P: "[~@18 [eb4,g4,bb4]@27 [d4,f4,bb4]@22 ~@6 [d4,f4,bb4]@4 [d4,f4,bb4]@4 [c4,eb4,ab4]@26 ~@21]/4", // Eb Bb Ab
Q: "[bb3@2 c4@2 eb4@3 ~ [eb4,g4,bb4]@14 [d4,f4,bb4]@10]/2", // Eb Bb
R: "[~@8 [d4,f4,bb4]@4 [d4,f4,bb4]@4 [c4,eb4,ab4]@26 ~@21 bb3@4 c4@4 eb4@6 ~@2 [eb4,g4,bb4]@28 [d4,f4,bb4]@21]/4", // Bb Ab Eb Bb
S: "[~@7 [d4,f4,bb4]@3 [d4,f4,bb4]@4 [c4,eb4,ab4]@26 ~@24]/2", // Bb Ab
})).s("gm_ocarina").gain(0.07).pan(0.3)
// other · string ensemble 1
const string_ensemble_1 = note("<~@28 A B C ~@8 D E F@4 G H@4 I@5 ~@19 J@4 K@2 L M@3 N O@2 ~>".pickRestart({
A: "~@12 [db5,db6] ~@11 [db5,db6] ~@7", B: "~@4 [db5,db6] ~@15 [db5,db6] ~@3 [db5,db6] ~ [db5,db6] ~ [db5,db6] ~@3",
C: "[db5,db6] ~@31", D: "~@28 bb4 ~ c5 ~", E: "db5 ~@7 db5 ~ eb5 ~ f5 ~@7 eb5 ~ f5 ~ gb5@4 ~@4",
F: "[~@4 [gb4,bb4]@21 ~@2 db6@28 eb6@24 f6@4 eb6@3 ~ eb6@29 ~@2 db6@10]/4", // Gb
G: "~@3 [gb3,gb4] ~@3 db4@2 ~ gb5 gb4 ~@3 gb3 ~@2 db5 db4 ~@2 [gb4,gb5] ~@3 [gb3,gb4]@2 ~@2 [db4,db5] ~, ~@7 db5 ~@6 gb4@2 ~@16", // Gb Db
H: "[~@2 gb3@2 ~@2 [gb3,gb4]@2 ~@2 [g3,g4]@2 ~@2 [g3,g4]@2 ~@2 ab3@2 ~@2 [ab3,ab4] ~@3 bb3@20 g5 ~ ab5 ~ bb5@4 bb5@23 c6@4 d6@3 ~ eb6@24 d6@4 eb6@2 f6@2 eb6@11, ~@2 gb4 ~@15 ab4 ~@109]/4", // Gb G Ab
I: "[~@5 c6 ~ d6 ~ eb6@2 d6@2 c6 ~ bb5@2 c6@2 bb5@2 ab5@2 g5 ~ g5@19 f5@4 eb5@4 ~@24 eb6@3 ~ d6@3 ~ eb5@27 ~ f5@4 eb5@35 ~@9, ~@13 f5@8 ~@19]/5",
J: "[~@18 g5@19 g5@2 ab5@2 bb5@3 ~ f5@24 c6@4 d6@4 eb6@23 ~ d6@2 ~@2 eb6@2 ~ eb6@15 ~ c6@2 d6@2, ~@107 f6@2 ~@19]/4",
K: "[eb6@2 d6@2 c6@2 bb5@2 c6@2 bb5@2 ab5@2 g5@2 g5@19 ~ c6@2 ~@2 eb6@2 ~@2 d6@20]/2",
L: "~@3 c6@3 ~ bb5@3 ~@2 c6@20",
M: "[~@3 d6@2 ~@2 eb6@2 f6@2 c6@17 ~ bb5@2 c6@2 bb5@2 ab5@2 g5@2 ab5@2 g5@2 f5@2 eb5@2 g5@20 ~@3 eb6@2 ~@2 d6@22, ~@67 c6@5 ~@24]/3",
N: "~ c6@2 bb5 ~ c6@11", O: "[~@2 d6@2 ~@2 eb6@2 f6@2 eb6@35 ~@19]/2",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.4)
// chords · brass section
const brass_section = note(`<
A ~@8 B ~ C ~ D ~@2 E ~@2 F@2 ~@2 F@2 ~@2 G@3 H ~@2 I J I K L K ~@2 M ~@2 N@2 O@7 P@2 ~@18 Q@7 R@7 ~
>`.pickRestart({
A: "~@27 [bb4,bb5]@3 ~@2", B: "[db5,f5] ~@19 [db5,f5] ~@7 [c5,eb5] ~@3",
C: "[db5,f5] ~@19 [db5,f5] ~@7 c5@2 ~@2, ~@28 eb5 ~@3", D: "f5@2 ~@18 [db5,f5] ~@7 c5@2 ~@2, db5 ~@27 eb5 ~@3",
E: "~@3 gb4 [bb4,db5] ~@3 [bb4,db5]@24, ~@7 gb4@25", F: "[~@7 [gb4,bb4,db5]@9]/2", G: "[~@14 [db5,f5]@33 ~]/3",
H: "[db5,f5]!2 ~@30", I: "~@30 [db5,f5] ~", J: "~@18 [db5,f5] ~@7 [c5,eb5] ~@5", K: "~@17 [db5,f5] ~@7 [c5,eb5] ~@6",
L: "~@29 [db5,f5] ~@2", M: "[gb4,bb4,db5] ~@3 [gb4,bb4,db5]@24 ~@4", N: "[~@23 [bb4,db5,gb5]@37 ~@4]/2",
O: "[~@26 [eb5,g5]@27 ~ [d5,f5]@28 ~@4 [c5,eb5]@28 ~@3 [c5,eb5]@28 ~@8 [eb5,g5]@26 ~@2 [d5,f5]@29 ~@2 [c5,eb5]@12]/7", // Eb Dm Cm Eb Dm Cm
P: "[~@20 [c5,eb5]@33 ~@11]/2", // Cm
Q: "[~@14 [ab4,c5,eb5]@35 [eb5,g5]@25 ~@3 [d5,f5]@26 ~@2 [d5,f5] ~@3 [c5,eb5]@27 ~ [d5,f5] ~@3 [c5,eb5]@33 ~@2 [eb5,g5]@26 ~@2 [d5,f5]@20]/7", // Ab Eb Dm Cm Dm Cm Eb Dm
R: "[~@8 [d5,f5] ~@3 [c5,eb5]@27 [d5,f5] ~@3 [c5,eb5]@33 ~@3 [eb5,g5]@25 ~@3 [d5,f5]@26 ~ [d5,f5] ~@3 [c5,eb5]@25 ~@3 [d5,f5] ~@3 [c5,eb5]@31 ~@23]/7", // Dm Cm Dm Cm Eb Dm Cm Dm …
})).s("gm_brass_section").gain(0.38).pan(0.6)
// other · french horn
const french_horn = note("<~@15 A B ~@4 C@4 D@5 ~@4 E ~ F ~ G H@2 I@5 ~ J@3 K L@4 ~@19 M N@4 O@8 ~>".pickRestart({
A: "db4@3 c4@3 bb3@2", B: "~@3 bb3 ~@4 bb3@22 ~@2",
C: "[~@4 f4 ~@2 f4@2 ~@2 ab4@8 gb4@3 ~@2 f4@2 ~ eb4@22 ~@7 c4@2 ~@2 db4@28 ~@4 db4@33 ~@3, ~@5 gb4 ~@58]/4",
D: "[ab4@60 gb4@31 ~ gb4@63 ~@5]/5", E: "~@2 [db4,f4] ~@29", F: "~@2 [db4,f4] ~@2 [db4,f4] ~@26",
G: "~ [db4,f4] ~@3 bb3 ~@3 bb3 ~@22", H: "[~@22 db4@2 ab3@4 bb3@12 ab3@12 gb3@11 ~, ~@21 c4@2 ~@41]/2",
I: "[gb3@2 ~@2 gb3@21 ~@3 db4@27 c4@32 b3@32 bb3@36 ~@5]/5",
J: "[~@6 g4@2 ab4@2 bb4@8 bb4@3 ~ bb4@16 c5@3 ~ bb4@7 ~ bb4@4 ab4@27 ~@8 ab3@7]/3", K: "~ eb4@16 ~@15",
L: "[~@5 g4@2 ab4@2 bb4@43 ab4@25 ~@7 ab4@34 ~@10]/4", M: "~@17 g4@12 g4@3",
N: "[~ bb4@4 ab4@4 g4@4 bb4@32 ab4@27 bb4@4 ab4@36 g4@12 g4@4]/4",
O: "[bb4@4 ab4@4 g4@4 bb4@31 ab4@28 bb4@4 ab4@36 g4@15 bb4@4 ab4@4 g4@4 bb4@32 ab4@27 bb4@4 ~ ab4@33 ~@21]/8",
})).s("gm_french_horn").gain(0.22).pan(0.7)
// other · synth brass 2
const synth_brass_2 = note("<~@33 A ~@28 B@2 ~@24>".pickRestart({
A: "~@23 f4@5 ~ c4 bb3@2, ~@14 [db4,eb4] ~", B: "[~@29 c6@2 bb5@2 g5@2 ~@2 bb5@14 ~@13]/2",
// … 173 more lines
More by Lionel Richie
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.