0:00/0:00
// Will You Be There — Jackson Michael
// 83 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: Full arrangement: all 109 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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(`<
A@2 B@4 C@5 D E F@3 G@6 H@4 I J@3 K L M@4 N@4 O@8 P@4 Q@4 R@3 S T@2 U V W@2 X Y@3 Z@3 AA AB AC AD AE AF AG@4 AH AI AJ
AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ@2 BA@2 BB BC BD@2
>`.pickRestart({
A: "[~@22 d4@18 e4@2 d4 e4@3 gb4@2]/2",
B: "[~@31 e4@4 [d4,gb4]@2 [e4,g4]@5 ~ [gb4,a4]@31 ~@5 [e4,g4,b4]@3 ~@2 [d4,a4]@2 [e4,g4]@5 ~ [d4,gb4]@23 ~ e4@23 ~ d4@36 e4@3 ~ d4@2 e4@6 gb4@4, ~@31 g4@3 ~@49 gb4@2 ~@107]/4", // D Em Gbm Em D5 Em D
C: "[~@33 [e4,g4]@3 [d4,gb4]@2 ~ [e4,g4]@6 [gb4,a4]@30 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@3 e4@24 d4@37 e4@3 ~ d4@2 e4@6 gb4@37 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6]/5", // Em D Em Gbm Em D Em D …
D: "[gb4,a4]@31 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@5", E: "~ [d4,gb4]@11 ~ e4@11",
F: "[~@3 d4@37 e4@3 d4@2 ~ e4@6 gb4@37 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@31 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2]/3", // Em D Em Gbm Em D
G: "[[e4,g4]@6 [d4,gb4]@22 ~@3 e4@24 d4@36 e4@3 ~ d4@2 e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 d4@36 e4@3 ~ d4]/6", // Em D Em D Em Gbm Em D …
H: "[~ e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 d4@37 e4@3 ~]/4", // Em D Em Gbm Em D Em D
I: "d4@2 ~ e4@6 gb4@37 [e4,g4]@2", // Em
J: "[~ [d4,gb4]@2 ~ [e4,g4]@6 [gb4,a4]@31 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@3 e4@24 d4@36]/3", // D Em Gbm Em D Em D
K: "~ e4@3 ~ d4@2 e4@6 gb4@35", L: "~@2 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 ~ [gb4,a4]@31 ~@2",
M: "[~@3 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 ~ [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 ~ d4@36 e4@3 ~ d4@2 e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~]/4", // Em D Em D Em D Em Gbm
N: "[~@5 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 ~@12 a6@4 b5@2 a5@5 ~@13 e4@3 ~ d4@2 e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~, ~@65 d4@36 ~@91]/4", // Em D Em D Em D Em Gbm
O: "[~@5 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 [a3,c4,f4]@10 ~@2 [g3,bb3,eb4]@10 ~@2 [gb3,a3,d4]@18 ~@7 [a3,c4,f4]@10 ~@2 [g3,bb3,eb4]@10 ~@2 [gb3,a3,d4]@20 ~@4 [a3,c4,f4]@8 ~@4 [g3,bb3,eb4]@6 ~@6 [gb3,a3,d4]@20 ~@5 [g3,c4,e4]@22 ~@2 [a3,db4,e4]@24 e4@36 gb4@3 ~ e4@2 gb4@6 ab4@36 [gb4,a4]@3 ~ [e4,ab4]@2 [gb4,a4]@6 [ab4,b4]@29]/8", // Em D Em D F Eb D F …
P: "[~@7 [gb4,a4,db5]@3 ~ [e4,ab4,b4]@2 [gb4,a4]@6 [e4,ab4]@22 ~@2 gb4@24 e4@36 gb4@3 ~ e4@2 gb4@6 ab4@36 [gb4,a4]@3 ~ [e4,ab4]@2 [gb4,a4]@6 [ab4,b4]@29]/4", // Gbm E Gbm E Gbm E Gbm Abm
Q: "[~@7 [gb4,a4,db5]@3 ~ [e4,ab4,b4]@2 [gb4,a4]@6 [e4,ab4]@22 ~@2 gb4@24 gb4@35 ~ ab4@3 ~ gb4@2 ab4@6 bb4@35 [ab4,b4]@3 ~ [gb4,bb4]@2 [ab4,b4]@6 [bb4,db5]@29 ~]/4", // Gbm E Gbm E Abm Gb Abm Bbm
R: "[~@6 [ab4,b4,eb5]@3 [gb4,bb4,db5]@2 ~ [ab4,b4]@6 [gb4,bb4]@22 ~ ab4@24 gb4@35 ~ ab4@3 gb4@2 ~ ab4@5 bb4@32]/3", // Abm Gb Abm Gb
S: "~@4 [ab4,b4]@3 ~ [gb4,bb4]@2 [ab4,b4]@6 [bb4,db5]@29 ~@3", // Abm Gb Abm Bbm
T: "[~@3 [ab4,b4,eb5]@3 ~ [gb4,bb4,db5]@2 [ab4,b4]@6 [gb4,bb4]@22 ~@2 ab4@24 ab4@33]/2", // Abm Gb Abm Gb
U: "~@2 bb4@3 ab4@2 ~ bb4@6 c5@34", V: "~ [bb4,db5]@3 [ab4,c5]@2 ~ [bb4,db5]@5 [c5,eb5]@29 ~@7",
W: "[[bb4,db5,f5]@3 [ab4,c5,eb5]@2 [bb4,db5]@6 [ab4,c5]@21 ~@3 bb4@23 ab4@35 bb4@3]/2", // Bbm Ab Bbm Ab
X: "~ ab4@2 bb4@6 c5@35 [bb4,db5]@3 ~", // Bbm
Y: "[[ab4,c5]@2 [bb4,db5]@6 [c5,eb5]@29 ~@6 [bb4,db5,f5]@3 ~ [ab4,c5,eb5]@2 [bb4,db5]@6 [ab4,c5]@21 ~@2 bb4@23 ~@43]/3", // Ab Bbm Cm Bbm Ab Bbm Ab
Z: "[~@38 [f3,ab3]@3 bb3@3 [f3,ab3,db4]@8 [eb3,ab3,c4]@35 ~ [eb3,g3,bb3]@12 [db3,f3,ab3]@21 [ab3,db4,f4]@3 [g3,bb3,c4,eb4]@11 [eb3,g3,bb3]@9]/3", // Fm Db Ab Eb Db Cm7 Eb
AA: "~@3 [c3,eb3,ab3]@35 ~ [db3,f3,bb3]@9", AB: "~@3 [eb3,c4]@35 [f3,db4]@10, ~ ab3@15",
AC: "~@2 [ab3,c4,eb4]@35 ~ [db3,f3,bb3]@10", AD: "~@2 [eb3,ab3,c4]@23 [eb3,g3,bb3]@23",
AE: "~ [ab3,c4,f4]@22 ~@2 [g3,bb3,eb4]@22 ~", AF: "[f3,ab3,db4]@11 ~ [eb3,ab3,c4]@5 ~ [eb3,g3,bb3]@5 ~",
AG: "[[ab3,c4,eb4]@22 ~@2 [f3,ab3,bb3]@22 ~ [eb3,ab3,db4]@33 ~@3 db4@3 c4@3 bb3@6 [c4,eb4,ab4]@12 eb3@6 [c4,eb4,ab4]@14 ~@4 bb4@3 ~@3 bb4@4 ~@4 c5@45 ~@2, ~@83 [eb3,g3]@12 ~@36 [db4,f4]@12 [ab3,eb4]@47 ~@2, ~@68 ab4 ~@3 ab4@23 ~]/4", // Ab Bb7 Dbsus2 Ab Eb Db Ab5
AH: "[c4,eb4,ab4,c5]@6 c4@3 eb4@3 bb3@9 ab4@2 g4, ~ [eb4,g4,bb4]", // Ab Eb
AI: "[ab3,db4,f4,ab4]@18 db4@3 [db4,eb4]@2 ~ [ab3,c4,eb4]@12 [g3,bb3,eb4]@10 ~@2", AJ: "[db3,f3,ab3,db4]",
AK: "[f3,ab3,db4]@16 ~ [f3,ab3,db4] [bb3,db4,f4,ab4]@6", AL: "[ab3,c4,eb4]@6 c4 eb4",
AM: "[eb3,g3,bb3]@3 [ab3,c4,eb4,ab4]", AN: "[ab3,db4,f4]@6 f4 eb4", AO: "[ab3,db4,f4]@3 [db4,f4,bb4]",
AP: "~@12 bb4@3 bb4@2 c5@2 ~ bb4 ab4@2 ~, [c4,eb4,ab4,c5]@11 ~ eb4@11 ~, ~@3 [eb5,eb6]@4 ~@5, ~@4 ab4@3 ~", // Ab Eb
AQ: "[eb4,g4,bb4]@34 ~@2 db4@3 ~ c4@2 bb3@6, ~@3 [f4,ab4,bb4,db5]", // Eb Bbm7
AR: "~@8 ab5 ab6@2 ab5@2 ~@5 [db4,f4,bb4]@5 ~, [c4,eb4,ab4,c5]@17 ~@7", AS: "[eb4,ab4,c5]@17 ~ [db4,f4,bb4]@6",
AT: "[c4,eb4,ab4]@34 ~@2 [db4,f4,bb4]@11 ~", AU: "[eb4,ab4,c5]@17 ~ [f4,ab4,eb5]@6 [eb4,ab4,c5]@12 [eb4,g4,bb4]@12",
AV: "[c4,f4,ab4]@23 ~ [c4,eb4,g4]@24", AW: "[ab3,db4,f4] [f3,ab3,bb3,db4]", AX: "[eb3,ab3,c4,eb4] [f3,bb3,d4,f4]",
AY: "[db4,f4,ab4]@12 [f3,ab3,db4]@5 [eb3,g3,c4]@4 [db3,f3,bb3]@3", // Db Cm Bbm
AZ: "[~@8 ab6 eb6@2 ab5@25 [c4,eb4]@4 ~ [ab3,bb3,db4]@7, [c3,eb3,ab3]@3 ~]/2", // Cm Bbm7 Ab
BA: "[bb3 ~@14 ab5@2 ~ eb5@3 ab4@50 ~ [c4,eb4]@9 ~ [ab3,bb3,db4]@14, [ab3,eb4]@71 ~@25, ab4@7 ~@25, ~ c4@68 ~@27]/2", // Cm Bbm7 Ab5
BB: "[eb3,ab3,c4]@47 ab3, bb3 ~@23", BC: "[ab3,c4,eb4]@47 ~", BD: "[[ab3,c4,eb4,ab4]@7 ~]/2",
})).s("gm_piano").gain(0.35).pan(0.3)
// bass · synth bass 2
const bass = note("<~@4 A B C D E ~@8 F G@7 H ~@7 I@8 J K L M@2 N@7 O P Q R@5 S T U V W X Y Z AA@5 ~@35>".pickRestart({
A: "~@11 d1", B: "~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4",
C: "~@2 d1@4 ~@12 d1@3 ~@3 d1 ~@2 d1@4 ~@2 d1@3 d1 ~@2 d1@4 ~@2 d1@3",
D: "~@3 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@3",
E: "~@4 d1@4 ~@11 d1@3 ~@3 d1 ~@2 d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@4",
F: "~@7 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1",
G: "~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1", H: "~ d1@4 ~@43",
I: "[~@17 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1]/8",
J: "~@5 d1@3 ~ d1 ~ d1@4 ~@2 f1@12 eb1@12 d1@7", K: "~@3 d1@2 ~@4 d1@2 ~@4 d1@2 ~ f1@12 eb1@12 d1@6",
L: "~@2 d1 ~@2 d1 d1@2 ~ f1@6 eb1@6 d1@3",
M: "[~@4 d1@2 ~@4 d1@2 ~@4 d1@2 ~ c1@8 ~@2 c1@2 ~@4 c1@2 ~@4 c1@2 a1@24 e1@4 ~@2 e1@4 ~@12 e1@3 ~@3 e1]/2",
N: "~ e1@4 ~@2 e1@3 ~ e1 ~ e1@4 ~@2 e1@4 ~@2 e1@4 ~@12 e1@3 ~@3 e1",
O: "~ e1@4 ~@2 b1@3 ~ b1 ~ b1@4 ~@2 gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1",
P: "~ gb1@4 ~@2 gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~",
Q: "gb1@4 ~@2 gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1 ~",
R: "[gb1@4 ~@2 gb1@3 gb1 ~@2 gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~ gb1@4 ~@2 gb1@3 ~ gb1 ~ db2@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~@2 gb1@4 ~@2 gb1@3 gb1 ~@2 gb1@4 ~ gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1 ~ gb1@4 ~@2 gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~@2 gb1@4 ~ gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1 ~ gb1@3]/5",
S: "~@3 gb1@3 ~ gb1 ~ db1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4",
T: "~@2 ab1@3 ab1 ~@2 ab1@4 ~@2 ab1@4 ~ ab1@4 ~@12 ab1@3 ~@3 ab1 ~ ab1@4 ~",
U: "~ ab1@3 ab1 ~@2 ab1@4 ~ ab1@4 ~@2 ab1@4 ~@12 ab1@3 ~@3 ab1 ~ ab1@4 ~@2",
V: "ab1@3 ab1 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@12 ab1@3 ~@2 ab1 ~@2 ab1@4 ~ ab1@2",
W: "~@2 ab1 ~ eb2@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~@2 ab1@4 ~ ab1@3",
X: "~ ab1 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4 ~@2 ab1@3 ~",
Y: "ab1 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4 ~@2 ab1@3 ~ ab1",
Z: "~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4 ~@2 ab1@3 ~ ab1 ~", AA: "[eb1@2 ~ ab1@5 ~ ab1@89 ~@22]/5",
})).s("gm_synth_bass_2").gain(0.4)
// chords · piano
const piano_2 = note(`<
~@4 A@7 B C D E F@8 G@7 H I J@7 K@3 L@2 M N@6 O@8 P Q@2 R S T@6 ~ U V W X Y Z AA AB AC@2 ~@28
>`.pickRestart({
A: "[~@44 [d2,gb3,a3]@36 [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3,d4]@36 [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@24 ~ [g2,d3,g3,b3]@24 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12, ~@44 d3 ~@291]/7", // D G D G D G D G …
B: "[d2,d3,gb3,a3,d4]@36 ~ [g2,d3,g3,b3]@11", C: "~ [d2,d3,gb3,a3]@12 [g2,d3,g3,b3]@11",
D: "~@3 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@8", E: "~@4 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@7",
F: "[~@5 [d2,d3,gb3,a3,d4]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@24 ~ [g2,d3,g3,b3]@24 [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@5]/8", // D G D G D G D G …
G: "[~@7 [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 ~ [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3,d4]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@24 ~ [g2,d3,g3,b3]@24 [d2,d3,gb3,a3]@36]/7", // D G D G D G D G …
H: "~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@35", I: "~@2 [g2,d3,g3,b3]@12 ~ [d2,d3,gb3,a3,d4]@33",
J: "[~@3 [g2,d3,g3,b3]@12 ~ [d2,d3,gb3,a3]@24 [g2,d3,g3,b3]@24 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@31]/7", // G D G D G D G D …
K: "[~@5 [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ f3@12 eb3@12 d3@7]/3", // G D G D G
L: "[~@3 f3@2 eb3@2 d3@4 f3@2 eb3@2 d3]/2", M: "~@19 c3@24 a2@5",
N: "[~@19 [e2,e3,ab3,b3]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3,e4]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@23 ~ [a2,e3,a3,db4]@23 ~ [e2,e3,ab3,b3]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@29]/6", // E A E A E A E A …
O: "[~@7 [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3,e4]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@23 ~ [a2,e3,a3,db4]@23 ~ [gb2,gb3,bb3,db4]@35 ~ [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4]@35 [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4,gb4]@35 ~ [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4]@23 [b2,gb3,b3,eb4]@23 ~ [gb2,gb3,bb3,db4]@35 ~ [b2,gb3,b3,eb4]@11 [gb2,gb3,bb3,db4]@32]/8", // A E A E A Gb B Gb …
P: "~@4 [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4,gb4]@32", // B Gb
Q: "[~@3 [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4]@23 ~ [b2,gb3,b3,eb4]@23 ~ [ab2,ab3,c4,eb4]@33]/2", // B Gb B Ab
R: "~@2 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4]@34", S: "~ [db3,ab3,db4,f4]@11 [ab2,ab3,c4,eb4,ab4]@35 ~",
T: "[[db3,ab3,db4,f4]@11 [ab2,ab3,c4,eb4]@23 ~ [db3,ab3,db4,f4]@23 [ab2,ab3,c4,eb4]@35 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4]@35 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4,ab4]@35 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4]@23 [db3,ab3,db4,f4]@23 ~@43]/6", // Db Ab Db Ab Db Ab Db Ab …
U: "~@5 g3", V: "~@4 f3@23 ~ eb3@11 ~ db3@8", W: "~@3 c3@35 ~ bb2@9", X: "~@3 ab2@35 db3@10",
Y: "~@2 ab2@35 ~ bb2@10", Z: "~@2 c3@11 ~ eb2@11 eb2@11 ~ e2@11", AA: "~ f2@23 ~ eb2@23",
AB: "~ db2@23 ab2@11 ~ eb2@11 ~", AC: "[ab2@47 eb2@47 ~@2]/2",
})).s("gm_piano").gain(0.25).pan(0.7)
// chords · piano · soft notes
const piano_soft = note("<A@5 ~@78 B C D E F@2 G H I@2 J K L M N O P G Q@2 R@2 S@2 T@2>".pickRestart({
A: "[~@44 [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,gb3,a3]@35 [g2,d3,g3,b3]@11 ~@2 [d2,d3,gb3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3]@23 ~ [g2,d3,g3]@23 ~@5, ~@91 d3@35 ~@13 a3@35 ~@13 a3@23 ~ b3@23 ~@6]/5", // D G D G D G D G5
B: "ab2@23 ~ g2@23 ~", C: "f2@23 ~ eb2@11 ~ db2@11 ~", D: "db2@43 ~@3 db2@2", E: "db2 ~@47", F: "[ab2,eb3]@47 ~",
G: "db3@47 ~", H: "db3@35 ~ bb2@11 ~", I: "[eb2@43 ~@4 eb2@35 ~@2 bb2@11 ~]/2", J: "ab2@35 ~ db3@11 ~",
K: "c3@35 ~ db3@11 ~", L: "c3@35 ~ bb2@11 ~", M: "c3@18 db3@6 eb3@11 ~ eb2@11 ~", N: "f2@23 ~ c2@23 ~",
O: "db2@23 ~ bb2@23 ~", P: "eb2@31 ~@5 f3@11 ~", Q: "[ab2@35 c3 eb3@5 db3@7]/2",
R: "[ab2@67 ~@3 c3@2 eb3@10 db3@14]/2", S: "ab2@47 ~", T: "[ab2@83 ~@13]/2",
})).s("gm_piano").gain(0.15).pan(0.7)
// other · string ensemble 1
const string_ensemble_1 = note(`<
~@4 A@5 ~@8 B@7 C@2 ~@3 D@7 E@4 F@8 G@8 H@6 I J K@2 L M@6 ~@3 N O P Q@4 ~@2 R S T@2 U@2 V@8 ~@10
>`.pickRestart({
A: "[~@44 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 ~ g5@3 gb5@2 ~ g5@6 a5@36 b5@3 ~ a5@2 g5@6 gb5@24 ~ e5@24 ~@2]/5",
B: "[~@7 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@36 b5@3 ~ a5@2 g5@6 gb5@24 e5@24 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@36 b5@3 ~ a5]/7",
C: "[~ g5@6 gb5@24 e5@24 ~@41]/2", D: "[~@12 d6@197 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@31]/7",
E: "[~@5 b5@3 ~ a5@2 g5@6 gb5@24 e5@24 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@31]/4",
F: "[~@5 b5@3 ~ a5@2 g5@6 gb5@24 e5@24 f5@12 eb5@12 d5@24 ~ [f5,a5]@12 [eb5,g5]@12 [d5,gb5]@24 [f5,a5,c6]@12 [eb5,g5,bb5]@12 [d5,gb5,a5]@24 ~ [c5,g5]@24 [db5,a5]@24 e5@36 gb5@3 ~ e5@2 gb5@6 ab5@36 a5@3 ~ ab5@2 a5@6 b5@29, ~@211 e5@48 ~@125]/8", // F Eb D F Eb D C5 Gbm
G: "[~@7 db6@3 ~ b5@2 a5@6 ab5@24 gb5@24 e5@36 gb5@3 ~ e5@2 gb5@6 ab5@36 a5@3 ~ ab5@2 a5@6 b5@36 db6@3 ~ b5@2 a5@6 ab5@24 gb5@24 gb5@36 ab5@3 ~ gb5@2 ab5@6 bb5@35 b5@3 ~ bb5@2 b5@6 db6@30]/8",
H: "[~@6 eb6@3 db6@2 ~ b5@6 bb5@23 ab5@24 gb5@36 ab5@3 gb5@2 ~ ab5@5 bb5@36 b5@3 ~ bb5@2 b5@6 db6@35 eb6@3 ~ db6@2 b5@6 bb5@24 ab5@24 ab5@33]/6",
I: "~@2 bb5@3 ab5@2 ~ bb5@6 c6@34", J: "~ db6@3 c6@2 ~ db6@5 eb6@35 ~",
K: "[f6@3 eb6@2 db6@6 c6@23 ~ bb5@23 ab5@35 bb5@3]/2", L: "~ ab5@2 bb5@6 c6@35 db6@3 ~",
M: "[c6@2 db6@6 eb6@35 f6@3 ~ eb6@2 db6@6 c6@23 bb5@23 ~ ab4@166 ~@20]/6", N: "~@14 ab6@11 g6@12 ab6@11",
O: "~ f6@24 eb6@23", P: "~ db6@23 c6@11 ~ bb5@12", Q: "[eb6@65 ab5@29 ~ ab6@97]/4", R: "~ ab6", S: "bb6", T: "c7/2",
U: "db7/2", V: "eb7/8",
})).s("gm_string_ensemble_1").gain(0.25)
// other · string ensemble 2
const string_ensemble_2 = note("<~@72 A@2 B C D E F G@2 ~@10 H I J K L M N O P Q@8 ~>".pickRestart({
A: "[~@4 db4@23 ~ eb4@12 g4@11 ab4@35 ~ bb4@9]/2", B: "~@3 c5@35 db5@10", C: "~@2 eb5@35 ~ db5@10",
D: "~@2 c5@23 bb4@23", E: "~ ab4@23 ~ g4@23", F: "~ f4@23 ab4@12 g4@12", G: "[ab4@23 ~ bb4@23 db5@35 ~ c5@10 ~@3]/2",
H: "~ ab4", I: "bb4", J: "ab4@3 bb4", K: "c5@3 db5", L: "eb5@3 db5", M: "c5@3 db5 c5@2 bb4@2", N: "ab4 g4",
O: "f4 db4", P: "c4 d4", Q: "[~@120 eb4@8 ~ db4@14 ~ c4@72 eb4@10 db4@14 c4@144, ab4]/8",
})).s("gm_string_ensemble_2").gain(0.3)
// other · string ensemble 1
const string_ensemble_1_2 = note("<~@69 A@6 B C D E F@2 ~@15 G H I J K L@8>".pickRestart({
A: "[~@6 ab2@189 ab2@83 bb2@10]/6", B: "~ c3@18 bb2@5", C: "~@2 ab2@23 eb2@12 e2@11", D: "~ f2@24 eb3@23",
E: "~ db3@23 c3@12 db3@12", F: "[eb3@24 bb2@23 db3@47 ~@2]/2", G: "~@3 eb2", H: "f2 c2", I: "db2 bb2", J: "eb2 f2",
K: "ab2", L: "[ab2@31 ~]/8",
})).s("gm_string_ensemble_1").gain(0.3)
// drums · kick
const kick = s("bd").struct(`<
~@5 A B C D E F G H I J K L@9 M N O P Q R S T U@8 V W X Y Z AA@9 AB AC U AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@2
AR AS H AT G AU@2 AV@2 AU@25 ~@2
>`.pickRestart({
A: "~ x ~@2 x ~", B: "~@8 x ~@24 x ~@14", C: "~@3 x ~@7 x ~@4", D: "~@5 x ~@11 x ~@6", E: "~@10 x ~@24 x ~@12",
F: "~@11 x ~@24 x ~@11", G: "~@13 x ~@23 x ~@10", H: "~@7 x ~@11 x ~@4", I: "~@15 x ~@24 x ~@7",
J: "~@16 x ~@24 x ~@6", K: "~@17 x ~@24 x ~@5", L: "~@19 x ~@23 x ~@4", M: "~@5 x ~@5 x", N: "~@21 x ~@24 x ~",
O: "~@22 x ~@24 x", P: "~@23 x ~@24", Q: "x ~@24 x ~@22", R: "~ x ~@24 x ~@21", S: "~@2 x ~@24 x ~@20",
T: "~@3 x ~@24 x ~@19", U: "~@5 x ~@23 x ~@18", V: "~@5 x ~@11 x ~@11 x ~@11 x ~@6", W: "~ x ~ x ~ x!2 ~@3 x ~@3 x ~",
X: "~@2 x ~@2 x!2 ~@2 x ~@5 x ~@5 x ~@2", Y: "~@4 x ~@5 x ~@5 x ~@2 x ~@9 x ~@5 x ~@5 x ~ x ~@4",
Z: "~@5 x ~@5 x ~@5 x ~@13 x ~@16", AA: "~@7 x ~@23 x ~@16", AB: "~ x ~@3 x ~@2", AC: "~@6 x ~@22 x ~@18",
AD: "~@5 x ~@22 x ~@19", AE: "~ x ~@5 x ~@4", AF: "~ x ~@7 x ~@6", AG: "~@3 x ~@22 x ~@21", AH: "~@2 x ~@22 x ~@22",
AI: "~ x ~@22 x ~@23", AJ: "x ~@22 x ~@22 x ~", AK: "~@22 x ~@22 x ~@2", AL: "~@21 x ~@22 x ~@3",
AM: "~@20 x ~@22 x ~@4", AN: "~@19 x ~@22 x ~@5", AO: "~@18 x ~@22 x ~@6", AP: "~@17 x ~@23 x ~@6", AQ: "~@2 x ~@2 x",
AR: "~@5 x ~@7 x ~@2", AS: "~@15 x ~@22 x ~@9", AT: "~@14 x ~@22 x ~@10", AU: "~ x ~ x", AV: "~@11 x ~@23 x ~@12",
})).gain(0.45)
// drums · rim
const rim = s("rim").struct(`<
~@5 A B C D E F G H I J K L M@3 N M@3 N ~@8 O P@3 Q P@3 R S T U V W@3 X W@3 X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA AW@3 BB AW@3 BB AW@3 BB AW@3 BB AW@3 BB AW@3 BB ~@2
>`.pickRestart({
A: "~ x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@7", B: "~@2 x ~@5 x ~@9 x ~@5 x ~@2 x ~@5 x ~@14",
C: "~@3 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@14", D: "~@4 x ~@5 x ~@8 x ~@5 x ~@2 x ~@9 x ~@9", E: "~@10 x ~@24 x ~@12",
F: "~@11 x ~@24 x ~@11", G: "~@13 x ~@23 x ~@10", H: "~@7 x ~@11 x ~@4", I: "~@15 x ~@24 x ~@7",
J: "~@16 x ~@24 x ~@6", K: "~@17 x ~@24 x ~@5", L: "~@19 x ~@23 x ~@4", M: "~@13 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@4",
N: "~@13 x ~@5 x ~@9 x ~@5 x ~ x ~@9 x", O: "~@23 x ~@5 x ~@9 x ~@5 x ~ x", P: "~@5 x ~@17 x ~@5 x ~@9 x ~@5 x ~ x",
Q: "~@5 x ~@3 x ~@13 x ~@5 x ~@9 x ~@5 x ~ x", R: "~@5 x ~@3 x ~@7 x ~@11 x ~@11 x ~@6",
S: "~@3 x ~@11 x ~@2 x ~@11 x ~@9 x ~ x ~@5", T: "x ~@2 x ~ x ~ x", U: "~@4 x ~@11 x ~@2 x ~@9 x ~@13 x ~@4",
V: "~@5 x ~@7 x ~@3 x ~@7 x ~@5 x ~@9 x ~@5 x", W: "~ x ~@5 x ~@17 x ~@5 x ~@9 x ~@5 x",
X: "~ x ~@5 x ~@3 x ~@13 x ~@5 x ~@9 x ~@5 x", Y: "~ x ~@5 x ~@17 x ~@4 x!2 ~@8 x ~@5 x ~",
Z: "x ~@2 x ~@8 x ~@2 x ~@4 x ~@2 x", AA: "x ~@4 x!2 ~@17 x ~@4 x ~@9 x ~@5 x ~ x",
AB: "~@5 x ~@3 x ~@13 x ~@5 x ~@8 x ~@5 x ~@2 x", AC: "~@4 x!2 ~@16 x ~@5 x ~@9 x ~@5 x ~ x ~",
AD: "~@4 x ~@17 x ~@4 x!2 ~@8 x ~@5 x ~@2 x ~", AE: "~@3 x ~@17 x ~@5 x ~@9 x ~@5 x ~ x ~@2",
AF: "~@3 x ~@3 x ~@13 x ~@4 x ~@9 x ~@5 x ~ x ~@3", AG: "~@2 x ~@16 x ~@5 x ~@9 x ~@5 x ~ x ~@4",
AH: "x!2 ~@16 x ~@5 x ~@9 x ~@5 x ~ x ~@4 x", AI: "x ~@16 x ~@5 x ~@9 x ~@4 x ~@2 x ~@4 x ~",
AJ: "~@2 x ~@13 x ~@5 x ~@8 x ~@5 x ~@2 x ~@4 x ~@2", AK: "~@15 x ~@5 x ~@8 x ~@5 x ~ x ~@5 x ~@3",
AL: "~@14 x ~@4 x!2 ~@8 x ~@5 x ~ x ~@5 x ~@4", AM: "~@13 x ~@4 x!2 ~@8 x ~@5 x ~ x ~@5 x ~@3 x ~",
AN: "~@12 x ~@5 x ~@8 x ~@5 x ~ x ~@5 x ~@6", AO: "~@11 x ~@5 x ~@9 x ~@4 x ~@2 x ~@5 x ~@6",
AP: "~@5 x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@3", AQ: "~@10 x ~@5 x ~@8 x ~@5 x ~@2 x ~@8 x ~@4",
AR: "~@9 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@8", AS: "~@9 x ~@5 x ~@8 x ~@5 x ~ x ~@5 x ~@9",
AT: "~@4 x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@4", AU: "~@8 x ~@5 x ~@8 x ~@5 x ~ x ~@9 x ~@6",
AV: "~@7 x ~@5 x ~@9 x ~@4 x ~@2 x ~@5 x ~@10", AW: "~@3 x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@5",
AX: "~@2 x ~ x ~@2 x ~ x!2 ~ x ~@3", AY: "~@5 x ~@5 x ~@9 x ~@5 x ~ x ~@9 x ~@8",
AZ: "~@5 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@12", BA: "~@5 x ~@6 x ~@8 x ~@5 x ~@2 x ~@5 x ~@11",
BB: "~@3 x ~@2 x ~@4 x ~@2 x!2 ~@4 x ~@3",
})).gain(0.3)
// … 160 more lines
More by Michael Jackson
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.