0:00/0:00
// Gotham City — Kelly R
// 156 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 199 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(156/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 · electric bass finger · "FINGERBASS"
const bass = note(`<
~@37 A B@3 A C@3 A D@3 E F@3 A B@3 A C@3 A D@3 E F@3 A B@3 A C@3 A D@3 E F@3 G H@3 I J@2 K I L@3 M N@2 O P Q R@2 S T U
V W X Y Z AA AB AC@2 AD AE AF@2 AG AE AF@2 AH AI AJ@2 AK AL AM@2 AN AB AO@2 AP AQ AR@2 AS AI AT@2 AU AL AM@2 AN AB
AO@2 AP AQ AR@2 AS AI AT@2 AU AV AW@2 AX AY AZ@2 BA AV BB@2 BC BD BE@2 BF AV AW@2 AX AY AZ@2 BA AV BB@2 BC BD BE@2 BF
BG@5
>`.pickRestart({
A: "f#1", B: "[c#2@12 b1@31 ~ g#1@3 ~]/3", C: "[c#2@12 b1@31 ~ g#1@4]/3", D: "[c#2@11 ~ b1@32 c#2@4]/3",
E: "d#2@3 d#1", F: "[f1@11 ~ f#1@23 ~ f#2@6 d#2@2 c#2@2 ~@2]/3", G: "f#1@12 a#1@2 b1 ~",
H: "[c#2@12 b1@23 ~ c#2@4 f2@2 f#2@5 ~]/3", I: "f#1@12 a#1 ~ b1@2", J: "[c#2@11 ~ b1@15 ~ b1@3 ~]/2",
K: "b1@2 c#2@2 f2 f#2@3", L: "[c#2@11 ~ b1@24 c#2@4 f2@2 f#2@5 ~]/3", M: "d#2@11 ~ d#2@4",
N: "[f1@11 ~ f#1@16 a#1@2 c#2@2]/2", O: "f#2@12 a#1@3 ~", P: "b1@5 d#2 f#2 b1", Q: "a#1@4 f#2 c#2 a#1@2",
R: "[g#1@6 b1@2 d#2@2 g#1 ~ f#1@10 f#2@4 c#2@2 f#1@3 ~]/2", S: "f1 b1", T: "a#1 d2", U: "d#2 c#2", V: "c2@6 f#1 g#1",
W: "c2@15 ~", X: "g#1@11 ~ g#1@2 a#1@2", Y: "b1@2 d#2 b1", Z: "c#2@8 g#1@2 b1@2 c#2@3 ~",
AA: "d2@6 a1@2 d2@2 c2@2 a1@3 ~", AB: "g1@12 b1@2 c2 ~", AC: "[d2@11 ~ c2@16 g1@2 a1@2]/2", AD: "c2@8 e1@4 a1@3 ~",
AE: "g1@6 b1 c2", AF: "[d2@8 a1@3 ~ c2@16 g1@2 a1@2]/2", AG: "c2@12 a1@3 ~", AH: "c2@3 d2", AI: "e2@11 ~ b1@2 e1@2",
AJ: "[f#1@7 ~ f#1@3 ~ g1@12 g2@4 e2@2 d2@2]/2", AK: "~@2 g2@2 e2@2 d2 ~ b1@2 c2@2 d2@2 ~@2", AL: "g1@12 b1 ~ c2 ~",
AM: "[d2@8 b1@3 ~ c2@16 g1@2 a1 ~]/2", AN: "c2@3 ~ d2@3 ~ f#2@2 g2@5 ~", AO: "[d2@8 b1@3 ~ c2@15 ~ c2@3 ~]/2",
AP: "c2@4 d2@3 ~ f#2@2 g2@6", AQ: "g1@11 ~ b1@2 c2@2", AR: "[d2@8 b1@3 ~ c2@16 g1@2 a1@2]/2",
AS: "c2@7 ~ c2@4 d2@3 ~", AT: "[f#1@8 f#1@3 ~ g1@15 ~ d2@2 e2 ~]/2", AU: "g2@11 ~ e2 ~ d2@2", AV: "f1@6 g1 f1",
AW: "[e1@11 ~ g1@16 a1@4]/2", AX: "b1@4 d2@4 d1@3 ~ e1@3 ~", AY: "f1@11 ~ g1@2 f1@2", AZ: "[e1@11 ~ g1@16 g2@3 ~]/2",
BA: "d2@2 e2@2 g2@3 ~ e2@4 d2@2 g1 ~", BB: "[e1@11 ~ g1@15 ~ d1@2 e1@2]/2",
BC: "g1@3 ~ a1@2 ~@2 a#1@2 a1@2 g1@2 e1@2", BD: "f1@15 ~", BE: "[e1@7 ~ e1@3 ~ g1@12 g2@4 e2@2 d2@2]/2",
BF: "~@2 d2@3 ~ b1@3 ~ c2@2 d2@2 ~@2", BG: "[g1@33 ~@7]/5",
})).s("gm_electric_bass_finger").gain(0.64)
// chords · piano · "PIANO1"
const piano = note(`<
~@100 A B C D@2 E F G H@2 I@2 J K L M@3 N O@2 P Q R@2 S T U@3 V W X Y Z AA@2 AB AC AD AE@2 AF AG@3 V W X Y AH AI@2 AB
AC AD AE@2 AF AG@3 AJ AK@2 AL AM AN@2 AO AP AQ@2 AR AS AT AU AV AJ AK@2 AL AM AN@2 AO AP AQ@2 AR AS AT AU AV AW@4 ~
>`.pickRestart({
A: "~@12 [d#4,b4,d#5]@2 [f4,c#5,f5] ~", B: "[f#3,b3,f#4,d#5,f#5]@5 ~ b4 d#5, ~@5 f#4@2 ~",
C: "[g#4,c#5,f#5]@7 ~ [a#4,c#5,f#5]@7 ~, [a#3,c#4]@13 ~@3", // C#sus4 F# A#m
D: "[[g#3,b3,g#4,b4,d#5]@5 ~ [g#4,b4,d#5]@5 ~ [a#3,c#4,a#4,c#5,f#5]@6 [f#4,a#4,c#5]@4 ~@2 [c#4,f#4,a#4]@5 ~@3]/2", // G#m F#
E: "[b3,g#4,d#5]@8 ~@2 g#4@2 b4@3 ~, d#4@6 ~@2 d#4@7 ~", F: "[f4,g#4,d5]@7 ~@5 d5@2 f5 ~, a#3@5 g#4@2 ~, ~@4 f4@3 ~",
G: "[d#4,f#4,a#4,f#5]@4 f#4@2 a#4@2 [f#4,a#4,f#5]@4 f#4@2 a#4 ~, ~@4 c#4@3 ~", // D#m F#
H: "[[f#4,a#4,f#5]@5 ~@7 d#5@2 ~@2 [d#5,a#5]@7 ~ [a#4,d#5,f#5]@7 ~, c4@15 ~ c4@12 ~@4, ~@6 a#4@6 ~@2 a#4@9 ~@9, ~@4 a#5@3 ~@9, ~@5 f#5@2 ~@9]/2", // F# D#5 D#m
I: "[[b4,d#5,b5]@10 ~@2 d#5@2 g#5@2 [b4,d#5,b5]@7 ~ [b4,d#5,a#5]@3 ~ [b4,d#5,g#5]@2 ~@2, g#3@7 ~, f#4@7 ~ f#4@6 ~@2, ~@10 b4@5 ~@17]/2", // B Bmaj7 G#m
J: "[c#3,c#4] [d#3,d#4] ~ [f3,f4] [f#3,f#4] [g#3,g#4] ~ [a#3,a#4] [b3,b4] [c#4,c#5] ~ [d#4,d#5] [f4,f5] [f#4,f#5] ~ [g#4,g#5]", // C# D# F F# G# A# B C# …
K: "[d4,d5] [e4,e5] ~ [f#4,f#5] [g4,g5] [a4,a5] ~ [b4,b5] [c5,c6] [d5,d6] ~ [e5,e6] [f#5,f#6] [a5,a6] ~ [f#5,f#6]", // D E F# G A B C D …
L: "[g5,b5,g6]@13 ~@3", M: "[[d5,f#5,a5,d6]@5 ~ [d5,f#5,a5,d6]@2 ~@4 [e5,g5,c6]@26 ~@2 [c5,e5,g5]@7 ~]/3",
N: "[d5,g5,b5]@15 ~", O: "[[d5,f#5,a5]@5 ~ [a4,d5,f#5]@5 ~ [c5,e5,g5]@20]/2", P: "~@4 [e5,g5,c6]@3 ~",
Q: "[d5,g5,b5]@7 ~ g5@2 [c5,a5] ~ [d5,b5]@3 ~, ~@8 b4 ~@7", // G F G
R: "[[d5,a5]@7 ~ [a4,f#5]@3 ~ [c5,e5,g5]@10 ~@2 [g4,c5,e5]@6 ~@2]/2", S: "[e4,g4,c5]@11 ~@5",
T: "[g4,b4,e5,g5]@3 ~ [g4,b4,e5]@3 ~", // Em
U: "[[a4,d5,a5]@3 ~ [a4,d5,f#5] ~ [b4,d5,g5]@7 ~ a5 b5 a5 g5@2 ~ d5 e5 d5 ~, ~@14 d6@5 ~@5, ~@28 c6 ~@11 g5@6 ~@2]/3", // D5 D G
V: "[g3,b3,d4,g5,b5,g6]@8 ~@4 b4 ~ [d5,g5,b5] ~", W: "[a3,d4,d5,a5]@3 ~",
X: "[g4,c5,g5]@6 ~@2 e5@2 g5@2 c6 ~ [e4,g4,g5,d6]@2, [c4,e4] ~", Y: "~ [e4,g4,g5,e6]@5 ~@2",
Z: "[d5,g5,d6]@8 ~@2 b4@2 d5@2 [g5,b5] ~, [d4,b4]@3 ~ [d4,g4]@2 ~@2", // G5 G G5
AA: "[[d4,f#4,d5,a5]@10 ~@2 [e4,g4]@11 ~@9, g5 ~@11 [d5,g5]@9 ~@11]/2", // D Em G5
AB: "[d6,g6]@2 [e6,g6]@2 ~@4 [d5,g5]@2 [e5,g5]@5 ~, g5@4 ~@2 [e4,g4]@5 ~@5", // G5 Em G5 Em
AC: "~@4 d5@3 ~ [d5,g5,d6]@7 ~, [d4,g4]@7 ~@9", AD: "[f#4,a4]@2 [e5,a5,d6] [f#5,a5,d6]@4 ~",
AE: "[~@6 [d5,g5] ~ [e5,g5]@6 ~@4 [d5,g5] ~ [e5,g5]@7 ~@5, ~@2 e4@11 ~ e4@12 ~@6, ~@4 g4@10 ~@2 g4@11 ~@5]/2", // G5 Em G5 Em
AF: "[b3,e4,b4,e5,a5] ~ [b3,b4,e5,g5]@10 ~@4, ~ e4@4 ~@3", // Esus4 Em
AG: "[[f#2,a4,d5,a5]@10 ~@2 [b4,d5,g5]@10 ~@2 [a4,d5]@2 b4 ~ [a4,d5] ~ [g4,d5]@5 ~ [d4,g4] ~ [e4,g4]@6 ~@4, ~@3 g2@8 ~]/3", // D G D5 G5 Em
AH: "[d5,g5,d6]@8 g4@2 b4@2 d5@2 [g5,b5] ~, [d4,b4]@3 ~@5", // G5 G
AI: "[[d4,f#4,d5,a5]@10 ~@2 [e4,g4]@11 ~@9, ~@12 [d5,g5]@9 ~@11]/2", AJ: "[f4,a4,c5]@10 ~@2 f4@2 a4 ~, ~@10 c4@5 ~",
AK: "[[c4,e4,g4]@10 ~@2 [d4,g4,b4]@9 ~@3 a4@2 b4@2 a4@2 g4 ~, ~@12 d5@3 ~]/2", // C G
AL: "~@2 d4@2 e4@2 d4 ~ a3@2 b3@2 a3 ~ g3 ~, ~@2 g4@4 ~@2 d4@7 ~", AM: "[a3,c4,f4]@10 f3@2 a3@2 [c4,f4] ~",
AN: "[[c4,e4,g4]@7 ~ [c4,e4]@2 ~@2 [g3,b3,d4,g4]@9 ~@9 d5@2, g3 ~@7 g3 ~@19 [b4,g5]@4]/2", // C G Em
AO: "~@2 [e5,g5]@3 ~ [d5,g5]@2 ~@2 a4@2 b4@2 a4 ~, ~@10 d5@5 ~", AP: "[f4,a4,c5]@12 f4@2 a4 ~",
AQ: "[[e4,g4,c5]@7 ~ [g4,c5,e5] ~@3 [g4,b4,d5]@7 ~ a4@2 a#4@2 b4 ~ [d5,g5]@3 ~ [e5,g5]@2, ~@20 g5@5 ~@7]/2", // C G G5 Em
AR: "~@2 [d5,g5]@2 ~@2 a#4@2 a4@2 g4 ~ [e4,g4]@2 d4 ~, ~@3 d5@2 ~@3", AS: "[f4,a4,c5]@10 c4@2 f4@2 a4 ~",
AT: "[e4,g4,c5]@3 ~ [c4,e4,g4] ~ [d4,g4,b4]@2", AU: "~@4 a4@2 a#4@2 b4 ~ [d5,g5]@2 ~@2 [e5,g5]@2, ~@4 g5@5 ~@7",
AV: "~@2 [d5,g5]@2 ~@2 a4@2 b4@2 a4@2 g4 ~ e4@2, ~@6 d5@7 ~@3", AW: "[[g4,a4,d5,a5] ~ [g4,d5,b5]@47 ~@15]/4",
})).s("gm_piano").gain(0.56)
// chords · epiano2
const epiano2 = note(`<
~ A@4 B@4 C@3 ~@73 D E@3 F G@3 F H@3 F I@2 J K L M@2 N O P Q R S T U V W X@3 Y Z@3 Y AA@3 Y AB@2 AC W X@3 Y Z@3 Y AA@3
Y AB@2 AC W X@3 Y Z@3 Y AA@3 Y AB@2 AC AD AE@3 AD AF@2 AG AH AI@3 AJ AK@3 AD AE@3 AD AF@2 AG AH AI@3 AJ AK@3 AL@5
>`.pickRestart({
A: "[[a#1,g#3,f4]@11 ~ [b1,f#3,a#3,c#4]@46 ~@6]/4", B: "[[a#1,g#3,c#4,f4]@5 ~ [b1,f#3,a#3,d#4]@24 ~@2]/4",
C: "[[g#1,f#3,b3,d#4]@10 ~@2 [c#2,f3,g#3,c#4]@35 ~]/3", D: "[a#3,c#4,f#4]@13 ~@3",
E: "[[g#3,c#4,f4]@11 ~ [f#3,b3,d#4]@31 ~@5]/3", F: "[a#3,c#4,f#4]@7 ~",
G: "[[g#3,c#4,f4]@11 ~ [f#3,b3,d#4]@26 ~@2 [f#3,b3,d#4]@6 ~@2]/3", // C# B
H: "[[g#3,c#4,f4]@11 ~ [f#3,b3,d#4]@15 ~@5 b3@4 c#4@3 ~ [f#3,d#4,f#4]@6 ~@2, ~@28 f#3@11 ~@9, ~@32 f#4@7 ~@9]/3", // C# B D#m
I: "[[g#3,c#4,g#4]@5 ~ a#3@8 f#3 g#3, ~@6 [c#4,f#4]@9 ~]/2", J: "~ [c#4,f#4]@4 ~@3, a#3@5 ~@3",
K: "[b3,c#4,f#4]@7 ~ [b3,d#4,f#4]@7 ~", L: "[g#3,c#4,f#4]@11 ~ [a#3,c#4,f#4]@3 ~",
M: "[[b3,d#4,f#4]@11 ~ [a#3,c#4,f#4]@14 ~@2 a#3@2 c#4@2, ~@13 f#3@2 ~]/2", N: "[g#3,b3,d#4]@7 ~",
O: "[g#3,d4,f4]@13 ~@3", P: "[a#3,f#4]@6 d#4 g#3, ~@12 f#3 ~ f4 ~", Q: "[a#3,f#4]@12 d#4@2 [g#3,f4] ~, ~@12 f#3 ~@3",
R: "[a#3,f#4]@5 ~@3 [d#4,f#4,a#4]@7 ~", S: "[d#4,f#4,b4]@15 ~", T: "[b3,g#4]@7 ~ [d#4,f#4]@7 ~",
U: "[c#4,f4,g#4]@7 ~", V: "[c4,e4,a4]@7 ~ [c4,d4,a4]@5 ~@3", W: "[b3,d4,g4]@13 ~@3",
X: "[[a3,d4,f#4]@11 ~ [g3,c4,e4]@31 ~@5]/3", Y: "[b3,d4,g4]@7 ~",
Z: "[[a3,d4,f#4]@11 ~ [g3,c4,e4]@26 ~@2 [g3,c4,e4]@6 ~@2]/3", // D C
AA: "[[a3,d4,f#4]@11 ~ [g3,c4,e4]@15 ~@5 c4@4 d4@3 ~ [g3,e4,g4]@6 ~@2, ~@28 g3@11 ~@9, ~@32 g4@7 ~@9]/3", // D C
AB: "[[a3,d4,a4]@5 ~ b3@8 g3 a3, ~@6 [d4,g4]@9 ~]/2", AC: "~ [d4,g4]@4 ~@3, b3@5 ~@3", AD: "[f3,a3,c4]@15 ~",
AE: "[[e3,g3,c4]@10 ~@2 [g3,b3,d4]@23 ~ [g3,d4]@2 ~@4 [g3,b3,d4]@5 ~, ~@36 a3 ~@11]/3", // C G G5 G
AF: "[[e3,g3,c4]@5 ~ [g3,b3,d4]@10]/2", AG: "~@4 [g3,a3,d4] ~@3 [g3,a3,d4] ~ [g3,b3,d4]@5 ~", AH: "[a3,c4,f4]@7 ~",
AI: "[[c4,e4,g4]@10 ~@2 [b3,d4,g4]@23 ~ [a3,d4,g4] ~@3 [a3,d4,g4]@2 [b3,d4,g4]@4 ~@2]/3", AJ: "[c4,f4,a4]@7 ~",
AK: "[[c4,e4,g4]@5 ~ [b3,d4,g4]@17 ~]/3", AL: "[[c4,e4,g4] ~ [b3,d4,g4]@63 ~@15]/5",
})).s("gm_epiano2").gain(0.55).pan(0.6)
// chords · acoustic guitar nylon · "VELOHARMON"
const acoustic_guitar_nylon = note(`<
A B@4 C@4 D@4 E F G@2 E F G@2 E F G@2 H I J@2 K I L@2 M N@3 E F G@2 H I J@2 K I L@2 M N@3 E F G@2 H I J@2 K I L@2 M
N@3 E F G@2 H I J@2 K I L@2 M N@3 E F G@2 H I J@2 K I L@2 M N@3 O P Q R S T U V W X@2 Y Z AA AB AC@2 AD AE AF@2 AG AE
AH@2 AI AJ@3 AA AB AC@2 AD AE AF@2 AG AE AH@2 AI AJ@3 AA AB AC@2 AD AE AF@2 AG AE AH@2 AI AJ@3 AK AL@3 AK AL@3 AK AL@3
AK AL@3 AK AL@3 AK AL@3 AK AL@3 AK AL@3 AM@3 ~@2
>`.pickRestart({
A: "~@10 c#4 ~ d#4 ~ f4 ~", B: "[f#4@3 ~ f4 ~@3 d#4 ~@3 c#4@42 ~@4 c#4@2 d#4@2 f4 ~]/4",
C: "[f#4@4 f4 ~@3 d#4 ~@3 c#4@44 ~@2 c#4@2 b3@2 a#3@2]/4", D: "[b3@3 a#3@2 ~@3 f#3 ~@3 g#3@48 ~@4]/4",
E: "c#4@5 ~ c#4@5 ~ a#3@2 b3@2", F: "c#4@5 ~ c#4@6 f4@2 f#4@2", G: "[c#4@19 ~ c#3@2 ~@2 f3 ~ f#3@4 ~@2]/2",
H: "c#4@3 c#4@3 a#3 b3", I: "c#4@5 ~ c#4@5 ~ f4@2 f#4@2", J: "[c#4@19 ~ c#3@3 ~ f3 ~ f#3@4 ~@2]/2",
K: "c#4@5 ~ c#4@6 a#3@2 b3@2", L: "[c#4@18 ~@2 c#3@2 ~@2 f3 ~ f#3@5 ~]/2",
M: "~@8 d#4@7 ~, d#3@15 ~, ~@4 f#3@11 ~, ~@6 a#3@9 ~",
N: "[~@6 c#4@5 ~ [f#3,a#3,c#4]@34 ~@2, c#3 ~@7, ~@2 f3@9 ~@37, ~@4 g#3@7 ~@37]/3", // F#
O: "~@6 f#3@7 ~ g#3@2, f#4@13 ~@3, ~ c#4@6 ~, ~@2 b3@5 ~", P: "~@2 f#4@5 ~, a#3@7 ~, ~@2 c#4@13 ~",
Q: "~@4 f#4@2 ~ g#3, ~ g#3@5 ~@2, ~ b3@2 ~, ~@3 d#4@3 ~@2", R: "~@2 f#4@5 ~, a#3@7 ~, ~ c#4@6 ~",
S: "~@4 b3@2 ~@2 b3@7 ~, g#4@15 ~, ~ d#4@7, ~@3 a#3@3 ~@2",
T: "~@6 g#4@7 ~@3, a#3@13 ~@3, ~@2 d4@11 ~@3, ~@4 f4@9 ~@3",
U: "[a#3,f#4]@2 [f#3,d#4] ~@3 [f#3,d#4]@2 [a#3,f#4]@2 [f#3,d#4] ~@3 [f#3,d#4] ~", // D#m
V: "[a#3,f#4]@2 [f#3,d#4] ~@3 [a#3,f#4]@2 [d#4,a#4]@2 [a#3,f#4] ~@3 [d#4,a#4]@2", W: "[f#4,d#5]@8 [d#4,a#4]@7 ~",
X: "[[d#4,b4]@8 ~@8 [d#4,f#4]@13 ~@3, ~@3 g#3 ~@4, ~@7 b3@7 ~@2]/2", // G#m D#m
Y: "[g#3,c#4,f4]@3 ~ [g#3,c#4,f4]@3 ~ [g#3,c#4,f4]@3 ~ [g#3,c#4,f4]@3 ~", // C#
Z: "[a3,c4,g4]@3 ~ [a3,c4,g4]@3 ~ [c4,f#4,a4]@3 ~ [c4,f#4,a4]@3 ~", AA: "d4@5 ~ d4@5 ~ b3@2 c4@2",
AB: "d4@5 ~ d4@6 f#4@2 g4@2", AC: "[d4@19 ~ d3@2 ~@2 f#3 ~ g3@4 ~@2]/2", AD: "d4@3 d4@3 b3 c4",
AE: "d4@5 ~ d4@5 ~ f#4@2 g4@2", AF: "[d4@19 ~ d3@3 ~ f#3 ~ g3@4 ~@2]/2", AG: "d4@5 ~ d4@6 b3@2 c4@2",
AH: "[d4@18 ~@2 d3@2 ~@2 f#3 ~ g3@5 ~]/2", AI: "~@8 e4@7 ~, e3@15 ~, ~@4 g3@11 ~, ~@6 b3@9 ~",
AJ: "[~@6 d4@5 ~ [g3,b3,d4]@34 ~@2, d3 ~@7, ~@2 f#3@9 ~@37, ~@4 a3@7 ~@37]/3", AK: "~ [a3,f4], [c3,f3]@7 ~",
AL: "[[c3,e3]@2 [c4,g4] ~ [c3,e3]@4 [c4,g4]@4 ~@8 [b3,d4,g4] ~@3 [b3,d4,g4]@5 ~@3 [d3,g3]@3 ~@5 [b3,d4,g4]@4 [d3,g3]@3 ~, ~@12 [d3,g3]@18 [b3,d4,g4]@6 [d3,g3]@7 ~@5]/3", // C C5 C C5 G G5 G G5 …
AM: "[[c4,e4]@2 [b3,d4]@35 ~@11]/3", // C Bm
})).s("gm_acoustic_guitar_nylon").gain(0.64).pan(0.4)
// chords · epiano1 · "CHO.EPIANO"
const epiano1 = note(`<
~ A@4 B@4 C@4 D E@3 D E@3 D E@3 F G@3 H I@3 J K@3 D E@3 F G@3 H I@3 J K@3 D E@3 F G@3 H I@3 J K@3 D E@3 F G@3 H I@3 J
K@3 D E@3 F G@3 H I@3 J K@3 L M N@2 O P Q R S T@2 U V W X@3 Y Z@3 AA AB@3 AC AD@3 W X@3 Y Z@3 AA AB@3 AC AD@3 W X@3 Y
Z@3 AA AB@3 AC AD@3 AE AF@3 AE AF@3 AE AF@3 AE AF@3 AE AF@3 AE AF@3 AE AF@3 AE AF@3 AG@5
>`.pickRestart({
A: "[[a#2,g#3,c#4]@5 ~ [b2,f#3,a#3]@24 ~@2]/4", B: "[[a#2,g#3,c#4]@11 ~ [b2,f#3,a#3]@47 ~@5]/4",
C: "[[g#2,b3,d#4]@5 ~ [c#3,f3,g#3,c#4]@24 ~@2]/4", D: "~@2 g#3 ~@2 f#4@3, f#2@7 ~, ~@2 c#3@13 ~, ~@3 a#3@5, ~ c#4",
E: "[~@4 f3 ~@3 c#4@2 f4 ~@13 c#4@2 ~@6 f#4@4 c#3@4 f3 ~ f#3@6, c#3@11 ~ b2@24 ~@12, ~@6 g#3@5 ~@9 f#3@17 ~@11, ~@22 b3@15 ~@11, ~@26 d#4@11 ~@11]/3",
F: "~@3 g#3 ~ f#4@2 c#4, f#2@7 ~, ~@2 c#3@5 ~, ~ a#3",
G: "[~@8 f4@2 ~@8 c#4@2 ~@2 f#4@14 c#3@4 f3 ~ f#3@6, c#3@10 ~@2 b2@23 ~@13, ~ f3@4 ~@2 f#3@11 ~@6, ~@2 g#3@3 ~@5 d#4@8 ~@6, ~@6 c#4@5 ~@5 b3@19 ~@13]/3",
H: "~@3 g#3 ~@2 c#4@2, f#2@15 ~, ~@2 c#3@5 ~, ~ a#3, ~@5 f#4@3",
I: "[~@8 c#4@2 f4 ~@9 c#4@2 ~@2 f#4@12 c#3@4 f3@2 f#3@6, c#3@11 ~ b2@23 ~@13, ~@4 f3@7 ~@5 f#3@20 ~@12, ~@6 g#3@5 ~@7 b3@18 ~@12, ~@11 d#4@7 ~@6]/3",
J: "~@3 d#4 ~@3 a#3, d#3@3 d#4, ~ f#3@7, ~@4 a#3@9 ~@3, ~@8 f#4@7 ~",
K: "[~@8 c#4@2 g#3@2 [c#3,f#3,a#3]@7 ~ g#3@2 ~@2 f#4@19 ~@5, f2@11 ~ f#2@31 ~@5, ~@4 c#3@7 ~@37, ~@6 f3@4 ~@12 a#3@21 ~@5]/3", // F#
L: "[f#3,c#4,f#4]@8 ~@4 c#4@2 f#4 ~, ~@8 f#3@5 ~@3, ~@5 b3@2 ~", M: "[a#3,c#4,f#4]@15 ~",
N: "[~@6 d#4@5 ~@11 a#3@8 ~@2, d#3@11 ~ c#3@18 ~@2, ~@2 g#3@9 ~@3 f#3@16 ~@2, ~@4 b3@7 ~@5 a#3@4 c#4@10 ~@2, ~@9 f#4@6 ~]/2",
O: "[g#3,b3,d#4]@6 g#3 b3", P: "[a#3,d4]@13 ~@3", Q: "~ [f#3,d#4] ~ [f#3,d#4], d#3@7 ~ c#3@7 ~",
R: "~@2 [f#3,d#4]@2 ~@2 [f#3,d#4] ~, c3@7 ~ c3@6 ~@2", S: "[a#3,f#4]@8 [f#3,d#4]@7 ~, c3@13 ~@3",
T: "[~@4 g#3@2 b3@2 [d#4,f#4]@12 ~@2 b3@2 [d#4,f#4]@5 ~@3, ~@5 g#3 ~@2]/2", // D#m
U: "[f3,g#3,c#4]@3 ~ [f3,g#3,c#4]@3 ~ [f3,g#3,c#4]@3 ~ [f3,g#3,c#4]@3 ~", // C#
V: "[g3,a3,d4]@3 ~ [g3,a3,d4]@3 ~ [f#3,a3,d4]@4 [f#3,a3,d4]@3 ~", // Gsus2 D
W: "~@2 a3 ~@2 g4@3, g2@7 ~, ~@2 d3@13 ~, ~@3 b3@5, ~ d4",
X: "[~@4 f#3 ~@3 d4@2 f#4 ~@13 d4@2 ~@6 g4@4 d3@4 f#3 ~ g3@6, d3@11 ~ c3@24 ~@12, ~@6 a3@5 ~@9 g3@17 ~@11, ~@22 c4@15 ~@11, ~@26 e4@11 ~@11]/3",
Y: "~@3 a3 ~ g4@2 d4, g2@7 ~, ~@2 d3@5 ~, ~ b3",
Z: "[~@8 f#4@2 ~@8 d4@2 ~@2 g4@14 d3@4 f#3 ~ g3@6, d3@10 ~@2 c3@23 ~@13, ~ f#3@4 ~@2 g3@11 ~@6, ~@2 a3@3 ~@5 e4@8 ~@6, ~@6 d4@5 ~@5 c4@19 ~@13]/3",
AA: "~@3 a3 ~@2 d4@2, g2@15 ~, ~@2 d3@5 ~, ~ b3, ~@5 g4@3",
AB: "[~@8 d4@2 f#4 ~@9 d4@2 ~@2 g4@12 d3@4 f#3@2 g3@6, d3@11 ~ c3@23 ~@13, ~@4 f#3@7 ~@5 g3@20 ~@12, ~@6 a3@5 ~@7 c4@18 ~@12, ~@11 e4@7 ~@6]/3",
AC: "~@3 e4 ~@3 b3, e3@3 e4, ~ g3@7, ~@4 b3@9 ~@3, ~@8 g4@7 ~",
AD: "[~@8 d4@2 a3@2 [d3,g3,b3]@7 ~ a3@2 ~@2 g4@19 ~@5, f#2@11 ~ g2@31 ~@5, ~@4 d3@7 ~@37, ~@6 f#3@4 ~@12 b3@21 ~@5]/3", // G
AE: "~@8 [a3,c4,f4]@6 [a3,c4,f4] ~, [c3,f3]@15 ~", // F F5
AF: "[~@4 [c4,g4]@6 ~@2 [b3,d4,g4]@8 ~@4 [b3,d4,g4]@5 ~@3 [d3,g3]@3 ~ [d3,g3]@4 [b3,d4,g4]@6 ~@2, [e3,g3]@11 ~@9 [d3,g3]@10 [b3,d4,g4]@5 ~@13]/3", // C5 G G5 G Em G5 G
AG: "[[g2,e3,a3] ~ [g2,d3,b3]@63 ~@15]/5", // A7 G
})).s("gm_epiano1").gain(0.64).pan(0.4)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
~@13 A@4 B@4 ~@16 C D@3 C E@3 C D@3 F G@3 ~@16 C D@3 C E@3 C D@3 F G@3 H@4 I@4 H@4 J K@3 L M N@2 O P Q R@2 S@2 T U V
W@3 V X@3 V W@3 Y Z@3 V W@3 V X@3 V W@3 Y Z@3 AA@4 AB AC@3 AD@4 AE AF@3 AG AH@3 AI AJ@3 AK AL@3 AK AM@3 AN AO@3 AN
AO@3 AN AO@3 AN AO@3 AP@5
>`.pickRestart({
A: "[f#6@7 c#6@9]/4", B: "[f#6@28 c#6@33 ~@3]/4", C: "[f#3,a#3,c#4]@15 ~",
D: "[[f3,g#3,c#4]@11 ~ [d#3,f#3,b3]@34 ~@2]/3", E: "[[f3,g#3,c#4]@13 ~ [d#3,f#3,b3]@31 ~@3]/3",
F: "[f#3,a#3,d#4]@15 ~", G: "[[f3,g#3,c#4]@11 ~ [f#3,a#3,c#4]@33 ~@3]/3",
H: "[[f#3,a#3,c#4]@15 ~ [f3,g#3,c#4]@11 ~ [d#3,f#3,b3]@34 ~@2, f#6@7 c#6@9]/4", // F# C# B
I: "[[f#3,a#3,c#4]@15 ~ [f3,g#3,c#4]@12 ~@2 [d#3,f#3,b3]@31 ~@3, f#6@7 c#6@9]/4", J: "[f#3,a#3,d#4,f#5,d#6]",
K: "[[f3,g#3,c#4,g#5,c#6]@11 ~ [f#3,a#3,c#4,f#5,a#5]@33 ~@3]/3", L: "[b3,d#4,f#4]@15 ~", M: "[a#3,c#4,f#4]@13 ~@3",
N: "[[g#3,b3,d#4,f#4]@10 ~@2 [a#3,c#4,f#4]@17 ~@3]/2", O: "[b3,d#4,g#4]@7 ~", P: "[a#3,d4,g#4]@15 ~",
Q: "[a#3,d#4,f#4]@3 ~ [c#4,d#4,f#4]@3 ~", R: "[[c4,d#4,f#4]@15 ~]/2", S: "[[b3,d#4,g#4]@31 ~]/2",
T: "[b3,f4,g#4]@7 ~", U: "[c4,e4,a4]@8 ~@2 a4@5 ~, ~@8 [c4,d4]@5 ~@3", V: "[g3,b3,d4]@15 ~",
W: "[[f#3,a3,d4]@11 ~ [e3,g3,c4]@34 ~@2]/3", X: "[[f#3,a3,d4]@13 ~ [e3,g3,c4]@31 ~@3]/3", Y: "[g3,b3,e4]@15 ~",
Z: "[[f#3,a3,d4]@11 ~ [g3,b3,d4]@33 ~@3]/3", // D G
AA: "[[g3,b3,d4]@15 ~ [f#3,a3,d4]@11 ~ [e3,g3,c4,d6]@34 ~@2, g6@7 ~@9]/4", AB: "[g3,b3,d4,g6]",
AC: "[g6@8 a6@6 [e3,g3,c4]@31 ~@3, [f#3,a3,d4]@13 ~ d6@33 ~]/3", // C D
AD: "[[g3,b3,d4]@15 ~ [f#3,a3,d4]@11 ~ d6@19 ~@5 d6@4 e6@4 g6@4, g6@27 ~ [e3,g3,c4]@34 ~@2]/4", // G D C
AE: "a6 b6@3, [g3,b3,e4]@15 ~", // Em
AF: "[[f#3,a3,d4,a6]@12 b6@2 a6@2 g6@12 d6@2 e6@2 g6@7 ~ d6@4 b5@2 ~@2, ~@4 [g3,b3,d4]@11 ~]/3", // D G
AG: "[a3,c4,f4]@7 ~, [f5,a5]@5 ~@11", AH: "[[g3,c4,e4]@12 ~@2 [g3,b3,d4]@33 ~]/3", AI: "~ [a3,c4,f4]@7",
AJ: "[[g3,c4,e4]@11 ~ [g3,b3,d4]@31 ~@5]/3", AK: "[a3,c4,f4]@7 ~", AL: "[[g3,c4,e4]@11 ~ [g3,b3,d4]@32 ~@4]/3",
AM: "[[g3,c4,e4]@11 ~ [g3,b3,d4]@29 ~@7]/3", AN: "[c4,f4,a4]@7 ~", AO: "[[c4,e4,g4]@10 ~@2 [b3,d4,g4]@33 ~@3]/3",
AP: "[[g3,e4] ~@15 g1@50 ~@14, c4@2 [g3,b3,d4]@65 ~@13]/5", // C G
})).s("gm_string_ensemble_2").gain(0.48).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
~@13 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C D E F C G H B F G I ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
// … 135 more lines
More by R. Kelly
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.