0:00/0:00
// That's My Kick — Erroll Garner
// 164 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 7 "Bass-James" named as a bass, played on electric bass finger (its pad new age patch is not one)
// note: Full arrangement: all 78 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(164/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 · "Piano RH-Garner"
const piano = note(`<
~ A B ~@8 C@2 D E F G H I@3 ~ J K@2 L M N@3 O P Q R S T U V W X@3 ~@5 Y Z@2 AA@2 AB AC AD AE@3 AF@2 AG@4 AH AI@2 AJ AK
AL AM AN AO AP AQ@2 ~ AR
>`.pickRestart({
A: "~@4 [e4,ab4,c5]@6 [f4,bb4,db5]@7 ~@7", B: "~@6 [g4,b4,d5,g5]@7 [ab4,c5,eb5,ab5]@3 ~@8",
C: "[~@9 [eb5,ab5,eb6]@2 ~@10 [eb5,g5,bb5,eb6]@12 ~@3 [eb6,gb6]@10 [f5,ab5,c6,f6]@2, ~@33 [gb5,a5,c6]@11 ~@4]/2", // Ab5 Eb Ebm Fm Gbdim
D: "~@5 [f4,c5,f5] [g4,c5,g5]@2 [ab4,c5,ab5] ~@2 [a4,db5,a5]", // F5 C5 Ab A
E: "~@2 [bb4,db5,bb5]@3 f5 [c5,f5,c6] ~@2 [db5,f5,db6] ~@2", // Bbm F5 Db
F: "[eb5,bb5,eb6]@3 ~@2 [eb5,bb5,eb6] [f5,bb5,f6]@2 [eb5,bb5,eb6] ~@2 [gb5,a5,gb6]", // Eb5 Bb5 Eb5 Gbm
G: "~@5 [eb5,eb6] [f5,a5,f6]@2 [e5,a5,e6] [eb5,a5,eb6]@2 [d5,a5,d6]", // Eb F A5 Ebdim D5
H: "[db5,ab5,db6]@3 ~@2 [db5,ab5,db6] [d5,ab5,d6]@2 [db5,ab5,db6] ~@2 [e5,g5,e6]", // Db5 Ddim Db5 Em
I: "[~@5 [c5,c6] [eb5,g5,eb6]@2 [d5,g5,d6] [db5,g5,db6]@2 [c5,eb5,ab5,c6]@6 [eb5,ab5,c6,eb6]@6 [f5,bb5,db6,f6]@6 [ab5,c6,f6,ab6]@7]/3", // C Eb G5 Dbdim Ab Bbm Fm
J: "~@11 [e4,bb4,db5,f5]@13", K: "[~@23 [db5,gb5,db6]@6 [b4,gb5,b5]@2 ~ [a4,d5,a5]@3 [gb4,b4,d5,gb5]@13]/2",
L: "~ [ab4,db5,e5,ab5]@3 [f4,ab4,db5,e5]@3 [ab4,db5,e5,ab5]@2 [c5,e5,ab5,c6] ~@2", // Dbm Db Dbm Caug
M: "[d5,g5,bb5,d6]@5 ~ [d5,g5,bb5,d6]@6 [bb4,eb5,g5,bb5]@2 [g4,c5,eb5,g5]@4 [f4,c5,f5]@2 ~@4", // Gm Eb Cm F5
N: "[~@2 [a4,d5,gb5,a5]@3 ~ [a4,d5,gb5,a5]@6 [a4,d5,gb5]@2 [ab4,b4,e5,ab5]@6 [ab4,b4,e5]@6 [ab4,db5,f5,ab5]@3 ~ [bb4,db5,f5,bb5]@2 [ab4,db5,f5,ab5]@3 ~ [ab4,db5,f5]@2 [g4,bb4,eb5,g5]@6 [g4,bb4,eb5]@6 ~@10 [f4,c5,f5]@2 [g4,c5,g5]@4 [ab4,c5,ab5]@2 ~@4]/3", // D E Db Bbm Db Eb F5 C5 …
O: "[a4,db5,a5] ~@2 [bb4,db5,bb5]@3 f5 [c5,f5,c6] ~@2 [db5,f5,db6] ~", // A Bbm F5 Db
P: "~ [eb5,bb5,eb6]@3 ~@2 [eb5,bb5,eb6] [f5,bb5,f6]@2 [eb5,bb5,eb6] ~@2", // Eb5 Bb5 Eb5
Q: "[gb5,a5,gb6]@2 ~@10 [f5,a5,f6]@6 ~ [e5,a5,e6]@2 [eb5,a5,eb6]@3", // Gbm F A5 Ebdim
R: "~ [d5,a5,d6]@2 [db5,ab5,db6]@6 ~@4 [db5,ab5,db6]@2 [eb5,ab5,eb6]@4 [db5,ab5,db6]@2 ~@3", // D5 Db5 Ab5 Db5
S: "~ [e5,g5,e6]@2 ~@10 [eb5,g5,eb6]@6 [d5,g5,d6]@2 [db5,g5,db6]@3", // Em Eb G5 Dbdim
T: "~ [b4,b5]@2 [c5,gb5,c6]@6 ~@4 [c5,gb5,c6]@2 [db5,gb5,db6]@4 [c5,gb5,c6]@2 ~@3", // B Cdim Gb5 Cdim
U: "~ [eb5,gb5,eb6]@2 ~@10 c6@2 [eb5,gb5,eb6]@4 [d5,gb5,d6]@2 [db5,gb5,db6]@3", // Ebm D Gb5
V: "~ [c5,gb5,c6]@2 [bb4,f5,bb5]@6 ~@4 [bb4,f5,bb5]@2 [c5,f5,c6]@4 [bb4,f5,bb5]@2 ~@3", // Cdim Bb5 F5 Bb5
W: "~ [db5,f5,bb5,db6]@2 ~@10 [g4,bb4,db5,e5,g5]@11", // Bbm Gdim
X: "[~ [ab4,c5,eb5,ab5]@4 ~@2 ab3@2 ~ ab3@3 ab3@2 ~ ab3@4 ab3@2 ab3@4 ab3@2 ab3@4 ab3@2 ab3@4 ab3@2 ab3@4 ab3@2 ab3@4 ab3@2 ~@20]/3", // Ab
Y: "~@15 [eb5,ab5,eb6]@2 ~@7", // Ab5
Z: "[~@3 [eb5,g5,bb5,eb6]@12 ~@2 [eb6,gb6]@10 [f5,ab5,c6,f6]@2 ~@10 [f4,c5,f5]@2 [g4,c5,g5]@4 [ab4,c5,ab5]@2 ~, ~@15 [gb5,a5,c6]@11 ~@22]/2", // Eb Ebm Fm F5 C5 Ab Gbdim
AA: "[~@3 [a4,db5,a5]@2 ~@4 [bb4,db5,bb5]@6 f5@2 [c5,f5,c6]@2 ~@4 [db5,f5,db6]@2 ~@4 [eb5,bb5,eb6]@6 ~@4 [eb5,bb5,eb6]@2 [f5,bb5,f6]@4 [eb5,bb5,eb6]@2 ~]/2", // A Bbm F5 Db Eb5 Bb5 Eb5
AB: "~@3 [gb5,a5,gb6]@2 ~@10 [eb5,eb6]@2 [f5,a5,f6]@4 [e5,a5,e6]@2 ~", // Gbm Eb F A5
AC: "[eb5,a5,eb6]@3 [d5,a5,d6]@2 ~ [db5,ab5,db6]@6 ~@4 [db5,ab5,db6]@2 [d5,ab5,d6]@4 [db5,ab5,db6]@2", // Ebdim D5 Db5 Ddim Db5
AD: "~@2 [e5,g5,e6] ~@5 [c5,c6] [eb5,g5,eb6]@2 [d5,g5,d6]", // Em C Eb G5
AE: "[[db5,g5,db6]@2 [c5,eb5,ab5,c6]@6 [eb5,ab5,c6,eb6]@6 [f5,bb5,db6,f6]@6 [ab5,c6,f6,ab6]@7 ~@9]/3", // Dbdim Ab Bbm Fm
AF: "[~@8 [e4,bb4,db5,f5]@7 ~@9]/2", // Bbm
AG: "[~@5 [db5,gb5,db6]@6 [b4,gb5,b5]@2 [a4,d5,a5]@4 [gb4,b4,d5,gb5]@14 [ab4,db5,e5,ab5]@6 [f4,ab4,db5,e5]@6 [ab4,db5,e5,ab5]@4 [c5,e5,ab5,c6]@2 ~@4 [d5,g5,bb5,d6]@5 ~ [d5,g5,bb5,d6]@6 [bb4,eb5,g5,bb5]@2 [g4,c5,eb5,g5]@4 [f4,c5,f5]@2 ~@6 [a4,d5,gb5,a5]@3 ~ [a4,d5,gb5,a5]@6 [a4,d5,gb5]@2 [ab4,b4,e5,ab5]@5]/4", // Gb5 B5 D5 Bm Dbm Db Dbm Caug …
AH: "~ [ab4,b4,e5]@6 [ab4,db5,f5,ab5]@4 [bb4,db5,f5,bb5]@2 [ab4,db5,f5,ab5]@4 [ab4,db5,f5]@2 [g4,bb4,eb5,g5]@5", // E Db Bbm Db Eb
AI: "[~ [g4,bb4,eb5]@6 ~@10 [f4,c5,f5]@2 [g4,c5,g5]@4 [ab4,c5,ab5]@2 ~@4 [a4,db5,a5]@2 ~@4 [bb4,db5,bb5]@6 f5@2 ~ [c5,f5,c6]@2 ~@2]/2", // Eb F5 C5 Ab A Bbm F5
AJ: "~ [db5,f5,db6] ~@2 [eb5,bb5,eb6]@3 ~@2 [eb5,bb5,eb6] [f5,bb5,f6]@2", // Db Eb5 Bb5
AK: "[eb5,bb5,eb6] ~@2 [gb5,a5,gb6] ~@5 [f5,a5,f6]@3", // Eb5 Gbm F
AL: "[e5,a5,e6] [eb5,a5,eb6]@2 [d5,a5,d6] [db5,ab5,db6]@3 ~@2 [db5,ab5,db6] [eb5,ab5,eb6]@2", // A5 Ebdim D5 Db5 Ab5
AM: "[db5,ab5,db6] ~@2 [e5,g5,e6] ~@5 [eb5,g5,eb6]@3", // Db5 Em Eb
AN: "[d5,g5,d6] [db5,g5,db6]@2 [b4,b5] [c5,gb5,c6]@3 ~@2 [c5,gb5,c6] [db5,gb5,db6]@2", // G5 Dbdim B Cdim Gb5
AO: "[c5,gb5,c6] ~@2 [eb5,gb5,eb6] ~@5 c6 [eb5,gb5,eb6]@2", // Cdim Ebm
AP: "[d5,gb5,d6]@2 [db5,gb5,db6]@4 [c5,gb5,c6]@2 ~ [bb4,f5,bb5]@6 ~@4 [bb4,f5,bb5]@2 [c5,f5,c6]@3", // D Gb5 Cdim Bb5 F5
AQ: "[~ [bb4,f5,bb5]@2 ~@4 [db5,f5,bb5,db6]@2 ~@10 [g4,bb4,db5,e5,g5]@12 [ab4,c5,eb5,ab5]@8 ~@9]/2", // Bb5 Bbm Gdim Ab
AR: "~ [ab5,ab6]@2 ~@5", // Ab
})).s("gm_piano").gain(0.15).pan(1)
// chords · piano · "Piano RH-Garner" · soft notes
const piano_soft = note("<A B C ~@2 D E@2 F@2 G@2 ~@9 H@2 I ~@17 J K L M@2 N@2 ~@9 O P Q ~@18>".pickRestart({
A: "~@10 [eb4,eb5]@3 ~@2 [f4,f5]@6 [ab4,ab5]@3", B: "~@17 [g4,b4,eb5]@7", C: "[bb4,db5,f5,bb5]@7 ~@17",
D: "~@7 [f4,c5,f5]@2 [g4,c5,g5]@4 [ab4,c5,ab5]@2 ~@4 [a4,db5,a5]@2 ~@3", // F5 C5 Ab A
E: "[~ [bb4,db5,bb5]@6 ~ f5@2 [c5,f5,c6]@2 ~@4 [db5,f5,db6]@2 ~@4 [eb5,bb5,eb6]@6 ~@4 [eb5,bb5,eb6]@2 [f5,bb5,f6]@4 [eb5,bb5,eb6]@2 ~@4 [gb5,a5,gb6]@2 ~@2]/2", // Bbm F5 Db Eb5 Bb5 Eb5 Gbm
F: "[~@8 [eb5,eb6]@2 [f5,a5,f6]@4 [e5,a5,e6]@2 [eb5,a5,eb6]@4 [d5,a5,d6]@2 [db5,ab5,db6]@6 ~@5 [db5,ab5,db6]@2 [d5,ab5,d6]@4 [db5,ab5,db6]@2 ~@4 [e5,g5,e6]@2 ~]/2", // Eb F A5 Ebdim D5 Db5 Ddim Db5 …
G: "[~@9 [c5,c6]@2 [eb5,g5,eb6]@4 [d5,g5,d6]@2 [db5,g5,db6]@4 [b4,b5]@2 [c5,eb5,c6]@6 ~@19]/2", // C Eb G5 Dbdim B Cm
H: "[[f4,ab4,db5,f5]@3 ~@4 [ab4,db5,f5,ab5]@3 ~@3 [bb4,db5,f5,bb5]@4 [c5,f5,ab5,c6] ~@5 [c5,e5,ab5,c6]@6 [bb4,ab5,bb5]@2 [ab4,db5,ab5]@4 ~@13]/2", // Db Bbm Fm Caug Bb7 Db5
I: "~ [bb4,eb5,bb5]@4 ~@2 [ab4,eb5,ab5]@4 ~@2 [bb4,eb5,bb5]@4 [c5,eb5,c6] ~@6", // Eb5 Ab5 Eb5 Cm
J: "~@7 [f4,c5,f5] [g4,c5,g5]@2 [ab4,c5,ab5] ~", // F5 C5 Ab
K: "~ [a4,db5,a5] ~@2 [bb4,db5,bb5]@3 f5 [c5,f5,c6] ~@2 [db5,f5,db6]", // A Bbm F5 Db
L: "~@2 [eb5,bb5,eb6]@3 ~@2 [eb5,bb5,eb6] [f5,bb5,f6]@2 [eb5,bb5,eb6] ~", // Eb5 Bb5 Eb5
M: "[~ [gb5,a5,gb6] ~@5 [eb5,eb6] [f5,a5,f6]@2 [e5,a5,e6] [eb5,a5,eb6]@2 [d5,a5,d6] [db5,ab5,db6]@3 ~@2 [db5,ab5,db6] [d5,ab5,d6]@2 [db5,ab5,db6] ~]/2", // Gbm Eb F A5 Ebdim D5 Db5 Ddim …
N: "[~@2 [e5,g5,e6]@2 ~@11 [c5,c6]@2 [eb5,g5,eb6]@4 [d5,g5,d6]@2 [db5,g5,db6]@4 [b4,b5]@2 [c5,eb5,c6]@6 ~@13]/2", // Em C Eb G5 Dbdim B Cm
O: "~@6 [f4,ab4,db5,f5]@3 ~@3 [ab4,db5,f5,ab5]@3 ~@3 [bb4,db5,f5,bb5]@4 [c5,f5,ab5,c6] ~", // Db Bbm Fm
P: "~@2 [c5,e5,ab5,c6]@3 [bb4,ab5,bb5] [ab4,db5,ab5]@2 ~@4", // Caug Bb7 Db5
Q: "~@6 [bb4,eb5,bb5]@4 ~@2 [ab4,eb5,ab5]@4 ~@3 [bb4,eb5,bb5]@3 [c5,eb5,c6] ~", // Eb5 Ab5 Eb5 Cm
})).s("gm_piano").gain(0.1).pan(1)
// chords · piano · "Piano LH-Garner"
const piano_2 = note(`<
~ A@2 ~ B C@2 D@3 E@6 F G H I J K@2 L@3 M N@8 O@7 P@7 Q@8 R S@2 T@2 U V W X Y Z AA AB AC@8
>`.pickRestart({
A: "[~@10 a2@7 ~@6 eb2@7 g2@7 ab2@3 ~@8]/2", B: "~@5 [ab3,c4,d4]",
C: "[~@2 [ab3,c4,d4]@6 ~ [ab3,c4,d4]@6 [ab3,c4,d4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [bb3,c4,eb4]@3]/2", // Dm7b5 Gdim Cm7
D: "[~@3 [bb3,c4,eb4]@6 ~ [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [g3,bb3,db4]@2]/3", // Cm7 Adim Bbm7 Gdim
E: "[~@4 [g3,bb3,db4]@6 ~ [g3,bb3,db4]@6 [g3,bb3,db4]@6 [ab3,c4,eb4]@6 [ab3,c4,eb4]@6 [ab3,c4,eb4]@6 [ab3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 ~ [bb3,c4,eb4]@6 [bb3,c4,eb4]@6]/6", // Gdim Ab Cm7 Dm7b5 Gdim Cm7
F: "[a3,c4,eb4]!4", G: "[ab3,bb3,db4]!4", H: "[g3,bb3,db4]!4", I: "[gb3,bb3,c4]!4",
J: "[gb3,bb3,db4]!2 [gb3,a3,c4]!2", K: "[~@23 [f3,ab3,bb3]@6 ~@12 f3@7]/2",
L: "[~ [eb3,ab3,c4]@6 [eb3,ab3,c4]@6 [eb3,ab3,c4]@4 [eb3,ab3,c4]@2 ~@4 [a3,d4,gb4]@6 [a3,d4,gb4]@2 ~ [a3,d4,gb4]@3 [ab3,d4]@6 ~@3 [b3,d4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@4 [ab3,bb3,db4]@2 ~@4, ~@21 ab3@4 ~@11]/3", // Ab D Abdim Bm Bbm7
M: "[bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@6 [bb3,eb4,g4]@2 [a3,eb4]@4 [a3,eb4]@2 ~@4", // Eb Adim
N: "[~@2 [a3,d4,gb4]@3 ~ [a3,d4,gb4]@6 [a3,d4,gb4]@2 [ab3,d4,gb4]@6 [ab3,d4,gb4]@6 [ab3,db4,f4]@6 [ab3,db4,f4]@6 [g3,db4,f4]@6 [g3,db4,f4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@4]/8", // D Abm7b5 Db Gm7b5 Dm7b5 Gdim Cm7 Adim …
O: "[~@2 [gb3,bb3,eb4]@6 [gb3,bb3,eb4]@6 [gb3,bb3,eb4]@6 ~ [gb3,bb3,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 eb3@6 eb3@6 eb3@6 eb3@6 eb3@6 eb3@6 eb3@6 eb3@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@3, ~@33 [ab2,c3]@8 [ab2,c3]@8 ~@7]/7", // Ebm Adim Bbm7 Gdim Dm7b5 Ab
P: "[~@3 [g3,bb3,db4]@6 [g3,bb3,db4]@6 ~ [g3,bb3,db4]@6 [g3,bb3,db4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [ab3,c4,eb4]@6 [ab3,c4,eb4]@6 [ab3,c4,eb4]@6 [ab3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@2]/7", // Gdim Cm7 Adim Bbm7 Gdim Ab Cm7
Q: "[~@4 [ab3,c4,d4]@6 ~ [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [gb3,bb3,c4]@6 [gb3,bb3,c4]@6 [gb3,bb3,c4]@6 [gb3,bb3,c4]@6 ~ [gb3,bb3,db4]@6 [gb3,bb3,db4]@6 [gb3,a3,c4]@6]/8", // Dm7b5 Gdim Cm7 Adim Bbm7 Gdim Cm7b5 Gb …
R: "[gb3,a3,c4] ~@3", S: "[~@2 [f3,ab3,bb3]@3 ~@6 f3@4 [eb3,ab3,c4]@3 [eb3,ab3,c4]@3 [eb3,ab3,c4]@2 [eb3,ab3,c4]]/2",
T: "[~@2 [a3,d4,gb4]@3 [a3,d4,gb4] [a3,d4,gb4]@2 [ab3,d4]@3 ~ [b3,d4]@3 [ab3,bb3,db4]@3 [ab3,bb3,db4]@3 [ab3,bb3,db4]@2 [ab3,bb3,db4], ~@11 ab3@4 ~@9]/2", // D Abdim Bm Bbm7
U: "~@4 [bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@6 [bb3,eb4,g4]@2 [a3,eb4]@4 [a3,eb4]@2", // Eb Adim
V: "~@7 [a3,d4,gb4]@3 [a3,d4,gb4]@6 ~ [a3,d4,gb4]@2 [ab3,d4,gb4]@5", // D Abm7b5
W: "~ [ab3,d4,gb4]@6 [ab3,db4,f4]@6 [ab3,db4,f4]@6 [g3,db4,f4]@5", // Abm7b5 Db Gm7b5
X: "~ [g3,db4,f4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@6 [ab3,c4,d4]@5", // Gm7b5 Dm7b5
Y: "~ [ab3,c4,d4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@5", // Dm7b5 Gdim
Z: "~ [g3,bb3,db4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@6 [bb3,c4,eb4]@5", // Gdim Cm7
AA: "~ [bb3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@5", // Cm7 Adim
AB: "~ [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@5", // Adim Bbm7
AC: "[~@2 [ab3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [gb3,bb3,eb4]@6 [gb3,bb3,eb4]@6 [gb3,bb3,eb4]@6 [gb3,bb3,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [a3,c4,eb4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [ab3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 [g3,bb3,db4]@6 ab3@2 ~@2 ab3@2 g3@6 f3@6 eb3@6 ab2@6 ~@4 ab3@8 ~ ab1@6 ~@15]/8", // Bbm7 Gdim Ebm Adim Bbm7 Gdim
})).s("gm_piano").gain(0.12).pan(1)
// chords · piano · "Piano LH-Garner" · soft notes
const piano_soft_2 = note("<A B C@2 D ~@16 E F ~@34 G H I ~@18>".pickRestart({
A: "~@14 f3@7 a3@3", B: "~@3 g2@7 ~@7 bb2@7",
C: "[~@19 [d3,eb3,e3,f3,gb3,g3,ab3,a3,bb3] ~@2 [b2,c3,db3] ~@3 bb2@2 c3@2 ~@3 c3@2 d3@2 ~@3 d3@2 eb3@2 ~@2 eb3@2, ~@22 bb1@7 ~@19, ~@22 bb2@2 ~@4 c2@7 d2@7 eb2@6]/2",
D: "~ e3@2 ~@2 e3@2 [f2,f3]@4 ~@3 [f1,f2]@7 ~@3, ~ e2@7 ~@16", // F
E: "[f3,ab3,bb3]@6 ~ [f3,ab3,bb3]@6 [f3,ab3,bb3]@4 [f3,ab3,bb3]@2 ~@5", // Bb7
F: "~@5 [f3,ab3,bb3]@2 [f3,ab3,bb3]@4 [f3,ab3,bb3]@6 ~@2 [ab3,bb3]@5", // Bb7 Absus2
G: "~@3 [f3,ab3,bb3]@3 [f3,ab3,bb3]@3 [f3,ab3,bb3]@2 [f3,ab3,bb3]", // Bb7
H: "~@5 [f3,ab3,bb3] [f3,ab3,bb3]@2 [f3,ab3,bb3]@3 ~", I: "[ab3,bb3] ~@3",
})).s("gm_piano").gain(0.04).pan(1)
// bass · electric bass finger · "Bass-James"
const bass = note("<~@2 A ~ B@8 C@3 D E F G H I ~@9 J K@8 L@3 M N O@7 P@4 Q R S T ~@4 U V W U V X@7 Y@3>".pickRestart({
A: "eb3@6 g3@7 ab3@3 ~@8",
B: "[~@21 bb2@6 d3@6 f3@6 ~@4 [bb3,d4]@2 eb3@6 g3@6 bb3@6 ~ db4@2 ~@2 [bb3,c4]@2 c4@6 eb3@6 g3@6 bb3@6 c4@6 a3@6 f3@6 eb3@6 bb3@6 f3@6 db3@6 ~ ab3@6 eb2@6 g2@6 bb2@6 db3@6 ab2@6 eb2@6 c3@6 ab2@6 c2]/8", // Bb Bbsus2
C: "[~@3 [eb2,g2]@2 bb2@6 f2@2 ~@4 a1@4 g2@2 bb2@6 d3@6 f3@6 ~@4 [bb3,d4]@2 eb3@6 g3@6 bb3@6 ~ db4@2 ~ [bb3,c4]@2 ~, ~@15 f1@4 ~@53]/3", // Eb Bb Bbsus2
D: "c4 eb3 g3 bb3", E: "c4 a3 f3 eb3", F: "bb3 f3 db3 ab3", G: "eb2 g2 bb2 db3", H: "g2 eb2 c3 bb2",
I: "eb2 gb2 c2 ab2", J: "[bb3,d4] eb3@3 g3@3 bb3@3 db4 ~",
K: "[[bb3,c4]@2 c4@6 eb3@6 g3@6 bb3@6 f3@6 g3@6 eb3@6 c3@6 bb2@6 db3@6 f3@6 bb3@6 ~ bb2@2 ~ [db3,g3]@2 ~ eb3@6 db3@6 g2@6 c3@6 bb2@6 gb2@6 eb2@6 f2@6 a2@6 c3@6 eb3@6 bb2@6 g2@6 db3@6 ab2@6 ~@4 eb3@2 bb2@2 ~@2 [eb2,g2]@2 g2@4 bb2@4 ~]/8", // Bbsus2 Dbdim Eb
L: "[~ a2@2 ab2@6 eb2@6 c3@6 ab2@6 eb2@6 c3@6 eb3@6 ~ ab3@6 ~@20]/3", M: "~@2 bb2@3 d3@3 f3@3 ~",
N: "~ [bb3,d4] eb3@3 g3@3 bb3@3 db4", // Bb
O: "[~@2 [bb3,c4]@2 c4@6 eb3@6 g3@6 bb3@6 c4@6 a3@6 f3@6 eb3@6 bb3@6 f3@6 db3@6 ab3@6 eb2@6 g2@6 ~ bb2@6 db3@6 ab2@6 eb2@6 c3@6 ab2@6 c2@2 ~@2 [eb2,g2]@2 bb2@6 f2@2 ~@4 a1@4 g2@2 bb2@6 d3@6 f3@6 ~, ~@141 f1@4 ~@23]/7", // Bbsus2 Eb
P: "[~@3 [bb3,d4]@2 eb3@6 g3@6 bb3@6 db4@2 ~@2 [bb3,c4]@2 c4@6 eb3@6 g3@6 bb3@6 c4@6 a3@6 f3@6 eb3@6 bb3@6 f3@6 ~ db3@6]/4", // Bb Bbsus2
Q: "ab3 eb2 g2 bb2", R: "db3 g2 eb2 c3", S: "bb2 eb2 gb2 c2", T: "ab2 ~@3", U: "~@5 [bb3,d4]@2 eb3@6 g3@6 bb3@5",
V: "~ db4@2 ~@2 [bb3,c4]@2 c4@6 eb3@6 g3@5", W: "~ bb3@6 ~@17",
X: "[~ bb3@6 ~ f3@6 g3@6 eb3@6 c3@6 bb2@6 db3@6 f3@6 bb3@6 bb2@2 ~@2 [db3,g3]@2 eb3@6 db3@6 g2@6 c3@6 bb2@6 gb2@6 eb2@6 f2@6 a2@6 c3@6 eb3@6 bb2@6 g2@6 db3@6 ab2@6 ~@4 eb3@2 bb2@2 ~@2 [eb2,g2]@2 g2@4]/7", // Dbdim Eb
Y: "[bb2@4 ~@2 a2@2 ~ ab2@6 eb2@6 c3@6 ab2@6 eb2@6 c3@6 eb3@6 ab3@6 ~@15]/3",
})).s("gm_electric_bass_finger").gain(0.16).pan(1)
// bass · electric bass finger · "Bass-James" · soft notes
const bass_soft = note("<A B C@3 ~@16 D E@2 F@2 ~@3 G ~@28 H I J K L ~@2 M ~@12>".pickRestart({
A: "~@10 eb4@3 ~ f4@7 a4@3", B: "~@4 g3@6 a3@7 bb3@7",
C: "[~@22 bb2@4 bb3@2 ~ c3@4 c4@2 ~ d3@4 d4@2 eb3@4 ~ eb4@2 e3@4 e4@2 f3@4 ~@3 f3@7 ~@3]/3",
D: "db3@3 bb2@3 ab2@3 db3 ~ [eb3,f3]", E: "[gb3@6 bb2@6 ~ db3@6 gb3@2 ~@2 [bb2,db3]@2 ab2@6 c3@6 eb3@6 b2@5]/2",
F: "[~ bb3@6 d3@6 a3@6 e3@2 ~@2 [ab3,b3]@2 ~@23]/2", G: "~ bb2@3 d3@3 f3@3 ~@2", H: "~ db3 bb2 ab2",
I: "db3 ~ [eb3,f3] gb3@3 bb2@3 db3@3", J: "gb3 ~ [bb2,db3] ab2@3 c3@3 eb3@3", K: "b2@6 bb3@6 ~ d3@6 a3@5",
L: "~ e3@2 ~@2 [ab3,b3]@2 bb2@6 d3@6 f3@5", M: "~@7 bb2@6 d3@6 f3@5",
})).s("gm_electric_bass_finger").gain(0.04).pan(1)
// drums · kick
const kick = s("bd").struct(`<
~@4 A B C D E F G@2 H G I J@5 K ~@8 L M@4 N O@6 P Q R Q R Q S T U V U V U W K X Y ~@7 Z AA@2 AB AC@6 AD AE AF
>`.pickRestart({
A: "~@7 x", B: "~@3 x ~@5 x ~@9 x ~ x ~@2", C: "~@3 x ~@5 x ~@10 x ~ x ~", D: "~@2 x ~@2 x ~@4 x!2",
E: "~@2 x ~@2 x ~@2 x ~@2 x", F: "~@4 x ~@5 x ~@10 x ~ x", G: "~@5 x ~@5 x ~@9 x ~ x", H: "~@5 x ~@5 x ~@5 x ~@5 x",
I: "~@5 x ~@5 x ~@6 x ~@5", J: "x ~@2 x ~@2 x ~@4 x", K: "x!4", L: "~ x ~@2 x ~@2 x ~@4", M: "x!2 ~@2 x ~@2 x ~@4",
N: "x!2 ~ x ~ x ~@2", O: "~ x ~ x ~@5 x ~@5 x ~@8", P: "~ x ~@2 x ~@5 x ~@5 x ~@7", Q: "~ x!2 ~@2 x ~@2 x ~@2 x",
R: "~@2 x ~@2 x ~@2 x ~@3", S: "~@4 x ~@5 x ~@6 x ~@6", T: "~@2 x ~@2 x ~@5 x ~@5 x ~@5 x",
U: "~@5 x ~@5 x ~@5 x ~@6", V: "~@3 x ~ x ~@5 x ~@5 x ~@5 x", W: "~@3 x ~ x ~@5 x ~@6 x ~@5",
X: "~@2 x!2 ~@2 x ~@2 x ~@2", Y: "x", Z: "~@7 x ~@5 x ~@5 x ~@4", AA: "~@5 x ~ x ~@5 x ~@5 x ~@4",
AB: "~@5 x ~@2 x ~@5 x ~@5 x ~@3", AC: "~@3 x!2 ~@2 x ~@2 x ~", AD: "~@2 x!2 ~ x ~ x",
AE: "~@7 x ~ x ~@5 x ~@5 x ~@2", AF: "~@7 x ~@16",
})).gain(0.07).pan(1)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@21 A B C D C D E F ~@28 G H I H B J D J K ~@12>".pickRestart({
A: "x ~@2 x ~@2 x ~@4 x", B: "x ~@5 x ~@6 x ~@5 x ~@4", C: "~ x ~@5 x ~@5 x ~@9 x", D: "~ x ~@5 x ~@5 x ~@5 x ~@4",
E: "~ x ~@6 x ~@5 x ~@9", F: "x!2 ~@2 x ~@2 x ~@2 x ~", G: "~ x!3", H: "~@2 x!2 ~@2 x ~@2 x ~@2", I: "x!4",
J: "~@5 x ~ x ~@5 x ~@5 x ~@4", K: "~ x ~@22",
})).gain(0.04).pan(1)
// drums · snare
const snare = s("sd").struct("<~@8 A ~@3 B ~ C ~@26 D@6 E F@6 G H I ~@21>".pickRestart({
A: "~ x!2 ~@4 x!2 ~@3", B: "~@3 x ~ x ~@9 x ~ x ~@6", C: "~@5 x ~@12 x ~@5", D: "~@5 x ~@5 x", E: "~@10 x ~@12 x",
F: "~@11 x ~@11 x", G: "~@11 x ~@12", H: "x!2", I: "x",
})).gain(0.22).pan(1)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@20 [~@2 x ~@2 x ~@2 x ~@3] ~@35 [~@5 x ~@2 x ~@2 x] ~@21>").gain(0.11).pan(1)
// drums · low tom
const low_tom = s("lt").struct("<~@20 [~@11 x] ~@36 [~ x ~@4] ~@20>").gain(0.29).pan(1)
// drums · mid tom
const mid_tom = s("mt").struct("<~@20 [~@3 x] ~@36 x ~@20>").gain(0.29).pan(1)
// drums · high tom
const high_tom = s("ht").struct("<~@20 [~@11 x] ~@36 [~ x ~@4] ~@20>").gain(0.29).pan(1)
// drums · ride
const ride = s("rd").struct(`<
~@4 A B C D@2 E F@4 G H@6 ~@8 I J@4 K B@5 L M D@5 N O F@5 G H@2 P ~@7 Q R@2 S J@6 K B T
>`.pickRestart({
A: "~@7 x", B: "~ x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2", C: "~ x ~ x ~@3 x ~ x ~@3 x ~@2 x ~@3 x ~ x ~",
D: "~ x!2 ~ x!2 ~ x!2 ~ x!2", E: "~@2 x ~ x ~@3 x ~ x ~@3 x ~@2 x ~@3 x ~ x",
F: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x", G: "~@3 x ~ x ~@3 x ~ x ~@3 x ~@2 x ~@2 x ~@2",
H: "x ~ x!2 ~ x!2 ~ x!2 ~ x", I: "~ x ~ x!2 ~ x!2 ~ x!2 ~", J: "x!2 ~ x!2 ~ x!2 ~ x!2 ~",
K: "x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@2", L: "~ x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2 x ~",
M: "~ x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~", N: "~@2 x ~ x ~@3 x ~ x ~@3 x ~@2 x ~@2 x ~@2 x",
O: "~@2 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x", P: "x!2 ~@4", Q: "~@7 x ~@3 x ~ x ~@3 x ~ x ~@3 x",
R: "~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x", S: "~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@3", T: "~ x ~ x ~@3 x ~@16",
})).gain(0.25).pan(1)
// … 21 more lines
More by Erroll Garner
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.