0:00/0:00
// Deacon Blues — Steely Dan
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 1/4 at bar 8, 4/4 at bar 9, 1/4 at bar 143, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "piano" named as a piano, played on piano (its clarinet patch is not one); ch 2 "sax" named as a reed, played on alto sax (its shakuhachi patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 187 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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@7 B C D@2 E F G@3 H I J K L M N B C O@2 E F P@2 Q R S T U V W X Y Z AA AB AC AD AE@3 AF AG AH AI AJ AK@2 AL AM AN AO
AP AQ B C D@2 E F AR@3 H I J K L M N B C D@2 E F AS@2 Q R S T U V W X Y Z AA AB AC AD AE@3 AF AG AH AI AJ AK@2 AL AM
AN AT AU@2 AV AW@2 AX AY AZ BA BB BC BD BE BF BG BH AY BI@2 BG BJ@2 BK@3 BL@7 BM@8 BN@8 BO@8 BP@8 BQ@7 BR@3
>`.pickRestart({
A: "[~@18 [c2,c3,b3,c4,e4,g4]@12 [b2,a3,d4,e4,g4]@11 ~ [a3,c4,d4,f4]@11 [a2,g3,c4,f4]@12 ~ [d2,d3]@12 [c#2,c#3,b3,e4,a4]@12 [c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@12 [d#2,d#3,g3,a#3,d4,f4]@18 g#3@17 ~@12 g6@6 ~, ~@41 a#2@12 ~@12 [c#4,f#4,a4]@13 ~@54 [e2,e3]@19 g#4@2 d5 g5@6 d6@7 ~, ~@66 [d4,g4]@9 d4@4 g#4@5, ~@149 g#3@19, ~@151 g4@8 d5@9]/7", // Cmaj7 Em7 Dm7 F D A Cmaj7 G …
B: "[g2,f#3]@23 ~, [b3,e4]@7 ~", C: "[f2,a3,d4], d#3@5 ~",
D: "[[g3,d4]@10 ~@2 f2@14 ~ g2@3 a2@3 c3@5 ~ d3@3 a2@2 ~ f2@2 ~, a2@4 [d#3,a3,d4]@11 ~, b3 ~@5]/2", // G5 D
E: "~ e4@21 ~@2, g2, [f#3,b3]@11 ~, ~ d#4@2 ~@21", F: "[a3,d4]@7 ~, f2, d#3@19 ~@5",
G: "[[g3,b3,d4]@10 ~@39 g4@20 ~@3, a2@6 [c4,e4]@17 ~ [c4,e4]@10 ~@2, ~@12 f#3@21 b5@9 d2@6 f2@23 ~, ~@4 d2@6 f#5@5 ~@9, ~@8 e5@7 a3@8 ~]/3", // G C
H: "[e2,g#3,b3,d4,f4]", I: "[a2,g3,a3,c4,e4]", J: "[a#2,g#3,d4,g4]", K: "[e2,g#3,b3,d4,e4]",
L: "[b2,a3,b3,d#4,f#4]@23 ~", M: "[b2,b3,d4,f4,a4] [e3,b3,d4,e4,g#4]",
N: "[b2,b3,d4,f4,a4]@7 ~@5 [e2,e3,g#3,d4,g4]@11 ~", // Bm7b5 E7
O: "[[g3,d4]@10 ~@14 g#5 ~@2 g2@3 [a2,d6]@3 c3@5 ~ d3@3 a2@2 ~ f2@2 ~, a2@4 [d#3,a3,d4]@11 ~, b3@8 ~@4 f2@14 ~@7 c6@12 ~@3, ~@6 a5@5 ~]/2", // G5 D5 D
P: "[[g3,b3,d4,f#4]@10 ~@10 e5@2 f#5@2 ~@6 f#5@3 e5@10 ~@5, a2@4 a2@11 ~, ~@12 [c#4,f#4]@31 ~@5, ~@24 b5@19 ~@5]/2", // Gmaj7 F#5
Q: "[a3,c4,e4,g4]@19 ~@5, f2", R: "[g#3,b3,d4,f4]@3 ~, e2@23 ~", S: "[a2,g3,a3,c4,e4]@23 ~",
T: "[g2,g3,a#3,d4,f4]@2 [g2,a#3,d4,f4,a4] [f#2,a#3,c#4,e4,g#4]", U: "[a3,c4,g4]@7 ~, [f2,e4]@23 ~",
V: "[e2,b3,d4,e4,g4]", W: "[d2,f#3,a3,c4,e4]", X: "[g2,f3,a3,c4,e4]@23 ~", Y: "[g3,a3,c4,e4]@11 ~, a2",
Z: "[e3,d4,e4], [b3,g4]@11 ~", AA: "[a3,c4,d4,f4]@7 ~, d3", AB: "[b3,c4,e4,g4]@7 ~, c3",
AC: "[a3,a#3,d4,f4]@7 ~, a#2@23 ~", AD: "[a2,g3,c4,e4]@11 ~ [g3,b3,c4,e4]@9 ~@3, a3@8 ~@4 g2@11 ~",
AE: "[[f#2,f#3,a3,c4,e4]@2 ~@4 [f3,e4]@13 ~@2 [e2,b3,e4,g4]@11 ~ [a3,c4,e4,g4]@11 ~@4 [a2,e4]@24, ~@5 [a3,c4]@13 ~@3 d4@9 ~@17 g3@22 ~@3, ~@6 f2@15 ~@12 f2@14 ~ [a3,c4]@22 ~@2]/3", // F#m7b5 Fmaj7 Em Am7 A5 Am
AF: "[e3,b3,d4,e4,g4]@23 ~", AG: "[a3,c4,d4,f4]@19 ~@5, d3@11 ~", AH: "[c2,c3,b3,c4,e4,g4]@3 ~",
AI: "[a3,f4]@7 ~, a#2@23 ~, [a#3,d4]@19 ~@5", AJ: "[a3,c4,e4,g4]@3 ~ [g3,c4,e4]@3 ~, a2@11 b3@8 ~@5, ~@12 g2@11 ~",
AK: "[[f#2,f#3,a3,c4,e4]@2 ~@4 [f3,a3,c4,e4]@13 ~@2 [e2,b3,e4,g4]@12 [a3,c4,e4,g4]@12 ~@3, ~@2 f2@5 d4@3 ~ f2@5]/2", // F#m7b5 Fmaj7 Em Am7
AL: "[g3,a3,c4,e4]@5 ~, a2", AM: "[e3,b3,d4,e4,g4]@5 ~", AN: "[d2,d3,c#4,f#4,a4] [c#2,c#3,b3,e4,a4]",
AO: "[c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@11 ~", AP: "[d#2,d#3,g3,a#3,d4,f4]@23 ~", AQ: "[e2,e3,g#3,d4,g4]@11 ~",
AR: "[[g3,b3,d4]@10 ~@2 d2@29 ~@8 g4@20 ~@3, a2@6 [c4,e4]@17 ~ [c4,e4]@10 ~@2, ~@12 f#3@32 ~ a3@24 ~@3, ~@42 d2@6 f2@23 ~]/3", // G C
AS: "[[g3,b3,d4,f#4]@10 ~@2 [c#4,f#4]@31 ~@5, a2@4 a2@11 ~]/2", AT: "[c2,c3,b3,d4,e4,g4]@2 [b2,a3,d4,g4] ~",
AU: "[[a#2,g#3,d4,g4]@20 ~@3 [b2,b3,d4,g4]@22 ~@3]/2", AV: "[c3,b3,e4,g4]@23 ~, c4@7 ~",
AW: "[[b3,d4,e4,g4]@5 ~ a2@6, e3@23 [c#4,f#4]@21 ~@4, ~@8 g3@7 ~]/2", AX: "[f#3,c4,f4]@7 ~, d3@23 ~",
AY: "[f3,b3,e4]@7 ~, g2", AZ: "[b2,a3,d#4,g4]@23 ~", BA: "[b3,d4,e4,g4]@5 ~, e3", BB: "[g3,c#4,f#4]@19 ~@5, a2",
BC: "[a3,c4,e4,g4]@9 ~@3 [a#3,e4,a4]@8 ~@4, f2@12 f#2@11 ~", // Am7 A
BD: "[g3,b3,d4,f#4]@3 ~ [b2,g4]@4, g2 ~, c4 ~@11 [a3,d#4]@10 ~@2", BE: "[c3,b3,e4,g4]@23 ~, c4@5 ~",
BF: "[b3,d4,e4,g4]@5 ~, e3@23 ~", BG: "[g3,c#4,f#4]@7 ~, a2@23 ~", BH: "[f#3,c4,f4]@5 ~, d3@23 ~",
BI: "[[b2,g4]@23 ~ [b3,e4,g4]@21 ~@3, [a3,d#4]@21 ~@2 d4@20 ~@5, ~ e3]/2", // Em Adim
BJ: "[[a3,c4,e4,g4]@9 ~@3 [a#3,e4,a4]@8 ~@3 [g3,b3,d4]@8 ~@5 [b2,a3,d#4,g4]@11 a3, f2@11 ~ f#2@11 g2@12 ~@13, ~@23 f#4@10 ~@15]/2", // Am7 A G Baug
BK: "[[c2,c3,b3,c4,e4,g4]@12 [b2,a3,d4,e4,g4]@11 ~ [a3,c4,d4,f4]@11 [a2,g3,c4,f4]@12 ~ [d2,d3]@12 [c#2,c#3,b3,e4,a4]@12, ~@23 a#2@12 ~@12 [c#4,f#4,a4]@13 ~@12]/3", // Cmaj7 Em7 Dm7 F D A F#m
BL: "[[c2,c3,b3,d4,e4,g4]@12 d4@12 [d#2,d#3,g3,a#3,d4,f4]@18 g#3@17 ~@12 g6@6 ~ [g2,f#3]@23 ~ [f2,a3,d4]@24 [g3,d4]@10 ~@2 f2@14 ~ g2@3 a2@3 c3@5 ~ d3@3, ~@12 [b2,a3,g4]@15 ~@15 [e2,e3]@19 g#4@2 d5 g5@6 d6@7 ~@91, ~@21 [d4,g4]@9 d4@4 g#4@5 ~@24 b3@4 ~@17, ~@59 g#3@19 [b3,e4]@21 ~@3 d#3@20 ~@4 a2@12 [d#3,a3,d4]@30, ~@61 g4@8 d5@9 ~@90]/7", // Cmaj7 D#maj7 Gmaj7 Dm G5 Em E G5 …
BM: "[a2@2 ~ f2@2 ~@2 e4@21 ~@2 [a3,d4]@21 ~@3 [g3,b3,d4,f#4]@10 ~@2 [c#4,f#4]@31 ~@5 [a3,c4,e4,g4]@19 ~@5 [g#3,b3,d4,f4]@18 ~@6 [a2,g3,a3,c4,e4]@23 ~ [g2,g3,a#3,d4,f4]@12 [g2,a#3,d4,f4,a4]@6, ~@6 g2@24 f2@24 a2@12 a2@33 ~@3 f2@24 e2@23 ~@43, ~@6 [f#3,b3]@22 ~@2 d#3@19 ~@143, ~@7 d#4@2 ~@183]/8", // D5 Gmaj7 F#5 Am7 G#dim Am7 Gm7 B5
BN: "[[f#2,a#3,c#4,e4,g#4]@6 [a3,c4,g4]@21 ~@3 [e2,b3,d4,e4,g4]@24 [d2,f#3,a3,c4,e4]@24 [g2,f3,a3,c4,e4]@23 ~ [g3,a3,c4,e4]@22 ~@2 [e3,d4,e4]@24 [a3,c4,d4,f4]@21 ~@3 [c3,b3,c4,e4,g4]@18, ~@6 [f2,e4]@23 ~@73 a2@24 [b3,g4]@22 ~@2 d3@24 ~@18]/8", // F#7 Am7 Em7 D7 Fmaj7 Am7 E7 Dm7 …
BO: "[~@6 [a3,a#3,d4,f4]@21 ~@3 [a2,g3,c4,e4]@11 ~ [g3,b3,c4,e4]@9 ~@3 [f#2,f#3,a3,c4,e4]@2 ~@4 [f3,e4]@13 ~@2 [e2,b3,e4,g4]@11 ~ [a3,c4,e4,g4]@11 ~@4 [a2,e4]@24 [e3,b3,d4,e4,g4]@23 ~ [a3,c4,d4,f4]@19 ~@5 [c2,c3,b3,c4,e4,g4]@18, ~@6 a#2@23 ~ a3@8 ~@4 g2@11 ~@6 [a3,c4]@13 ~@3 d4@9 ~@17 g3@22 ~@27 d3@22 ~@20, ~@60 f2@15 ~@12 f2@14 ~ [a3,c4]@22 ~@68]/8", // A#maj7 Am7 Cmaj7 F#m7b5 Fmaj7 Em Am7 A5 …
BP: "[~@6 [a3,f4]@21 ~@3 [a3,c4,e4,g4]@9 ~@3 [g3,c4,e4]@9 ~@3 [f#2,f#3,a3,c4,e4]@2 ~@4 [f3,a3,c4,e4]@13 ~@2 [e2,b3,e4,g4]@12 [a3,c4,e4,g4]@12 ~@3 [g3,a3,c4,e4]@20 ~@4 [e3,b3,d4,e4,g4]@20 ~@4 [d2,d3,c#4,f#4,a4]@12 [c#2,c#3,b3,e4,a4]@12 [c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@6, ~@6 a#2@23 ~ a2@11 ~ g2@11 ~@7 f2@15 ~@12 f2@15 a2@24 ~@66, ~@6 [a#3,d4]@19 ~@16 b3@8 ~@26 d4@9 ~@108]/8", // Dm Am7 C F#m7b5 Fmaj7 Em Am7 Em7 …
BQ: "[~@6 [a#2,g#3,d4,g4]@20 ~@3 [b2,b3,d4,g4]@22 ~@3 [c2,c3,b3,c4,e4,g4]@12 [b2,a3,d4,e4,g4]@11 ~ [a3,c4,d4,f4]@11 [a2,g3,c4,f4]@12 ~ [d2,d3]@12 [c#2,c#3,b3,e4,a4]@12 [c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@12 [d#2,d#3,g3,a#3,d4,f4]@18, ~@77 a#2@12 ~@12 [c#4,f#4,a4]@13 ~@54]/7", // Gm G Cmaj7 Em7 Dm7 F D A …
BR: "[g#3@17 g#3@48 ~@7, [e2,e3,d4,g4]@2 ~]/3", // Em7
})).s("gm_piano").gain(0.31)
// chords · alto sax · "sax"
const alto_sax = note(`<
~@25 A B C@5 D E F@4 G ~@8 H@5 I@2 ~ J@6 ~@2 K@3 ~ L@3 ~@3 M N O@2 ~@2 A B C@5 D E F@4 G ~@13 I@2 ~ P@5 Q@5 R@3 S ~
Q@5 R@3 S ~@10 T ~ U@8 V@5 ~@12 W@3 X@2 Y@3 ~@9
>`.pickRestart({
A: "b3 ~", B: "~@22 a3 ~",
C: "[[b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@33 ~@3 [c4,e4]@24 ~, ~@47 b3@45 ~@28, ~@47 d4@8 ~@65]/5", // E5 D5 C
D: "~ g#3, [d4,f4]", E: "[c4,e4]@11 [c4,e4]@13, g3@23 ~",
F: "[~@11 [f4,a4]@5 ~@2 g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~, ~@17 e4@5 ~ d4@22 ~@51, ~@12 g4@23 ~@13]/4", // F C
G: "[c4,e4]@11 ~", // C
H: "[~@11 [c4,e4]@11 ~ [g4,b4]@17 ~ [e4,g4]@5 ~ [f4,a4]@23 ~ [e4,g4]@11 ~ [c4,e4]@5 ~ [e4,g4]@6 ~ f4@23 ~, ~@95 d4@24 ~]/5", // C G Em F Em C Em
I: "[~@5 a4@6 g4@5 ~ e4@6 d4@3 e4@2 d4 c4@15 ~@4]/2",
J: "[~@11 [c4,e4]@11 ~ [e4,g4]@20 ~@4 f#4@12 e4@11 ~ a4@7 ~@2 a4 a#4 a4 g4@24 ~@12 g4@23 ~@2, ~@107 d4@35 ~@2]/6", // C Em
K: "[~@18 d4@9 d#4@3 f4@2 g4@3 ~ d4@32 ~@4]/3", L: "[~@18 e4@9 f#4@3 a4@3 b4@3 a4@31 ~@5]/3", M: "d4", N: "d#4",
O: "[e4@11 d4@12 f4@12 [f4,g4]@11 g4 ~]/2", // Fsus2
P: "[~@11 [c4,e4]@11 ~ [e4,g4]@20 ~@4 f#4@12 e4@11 ~ a4@7 ~@2 a4 a#4 a4 g4@24 ~@13]/5", // C Em
Q: "[~@23 g4@6 ~ f#4@5 e4@5 ~ g4@6 f#4@6 e4@6 d4@12 c#4@24 c4@24 ~]/5", R: "[b3@23 d4@48 ~]/3", S: "e4",
T: "~ b3@2 ~",
U: "[~@4 a3 ~ [b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@33 ~@3 [c4,e4]@24 ~@13 g#3@12 [c4,e4]@11 [c4,e4]@13 ~@11 [f4,a4]@5 ~ e4, ~@53 b3@45 ~@52 g3@23 ~@19, ~@53 d4@8 ~@65 [d4,f4]@24 ~@42]/8", // E5 D5 C F Dm
V: "[g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~ [c4,e4]@22 ~@20, ~@5 d4@22 ~@93, ~@3 g4@23 ~@34]/5", // C
W: "[~@11 a4@6 g4@5 ~ e4@6 d4@3 e4@2 d4 c4@15 ~@22]/3", X: "[~@17 [c4,e4]@11 ~ [e4,g4]@19]/2",
Y: "[~@5 f#4@12 e4@11 ~ a4@7 ~@2 a4 a#4 a4 g4@24 ~@7]/3",
})).s("gm_alto_sax").gain(0.26)
// chords · alto sax · "sax" · soft notes
const alto_sax_soft = note("<~@22 A@5 ~@5 B ~@27 C ~@16 D@4 ~@5 B ~@54 E@5 ~@4 F ~@36>".pickRestart({
A: "[~@23 b3@24 [a3,d4]@24 d4@11 ~ [a3,c4]@35 ~@2, ~@23 e4@23 ~@74]/5", B: "~@8 g#3 ~@15", C: "g#3@23 ~",
D: "[e4@23 [a3,d4]@24 d4@11 ~ [a3,c4]@35 ~@2, b3@25 ~@71]/4", // D5 Am
E: "[~@6 e4@23 [a3,d4]@24 d4@11 ~ [a3,c4]@35 ~@20, ~@6 b3@25 ~@89]/5", F: "~@14 g#3 ~@9",
})).s("gm_alto_sax").gain(0.15)
// chords · pad poly · "Synth Horns"
const pad_poly = note(`<
~@60 A@2 B C@3 D@3 E F G@2 H I J K L@2 M@2 N@5 O P Q@4 R ~@8 S@5 ~@8 T@3 U@2 ~ V@3 ~ T@3 U@2 ~ V@3 ~@8 W@8 X@4 Y@5 ~@7
Z@6 ~@16
>`.pickRestart({
A: "[~@23 b3@24 ~]/2", B: "a3", C: "[g3@12 a3@35 b3@24 ~]/3", D: "[a3@23 g3@12 f#3@6 ~ b3@18 a3@11 ~]/3",
E: "e3@23 ~", F: "f3", G: "[g3@23 g#3@23 ~@2]/2", H: "g#3", I: "a3@11 ~", J: "a3@11 ~ g#3@12", K: "a3@11 b3@11 ~@2",
L: "[e4@23 [a3,d4]@24 ~, b3@25 ~@23]/2", M: "[b3@11 c4@35 a3 ~]/2",
N: "[[b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@33 ~@3 [c4,e4]@24 ~, ~@47 b3@45 ~@28, ~@47 d4@8 ~@65]/5", // E5 D5 C
O: "~ g#3, [d4,f4]", P: "[c4,e4]@11 [c4,e4]@13, g3@23 ~",
Q: "[~@11 [f4,a4]@5 ~@2 g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~, ~@17 e4@5 ~ d4@22 ~@51, ~@12 g4@23 ~@13]/4", // F C
R: "[c4,e4]@11 ~", // C
S: "[~@11 [c4,e4]@11 ~ [g4,b4]@17 ~ [e4,g4]@5 ~ [f4,a4]@23 ~ [e4,g4]@11 ~ [c4,e4]@5 ~ [e4,g4]@6 ~ [f4,c5]@24, ~@95 d4@24 ~]/5", // C G Em F Em C Em F5
T: "[~@23 [g4,e5]@6 ~ a4@5 ~ b4@6 [g4,e5]@5 ~ a4@5 ~ b4@6 g4@12, ~@29 d5@6 ~@12 d5@5 ~@20]/3", U: "[a4@47 ~]/2",
V: "[[d4,g4]@23 [g4,b4]@48 ~]/3", // G5 G
W: "[~@6 e4@23 [a3,d4]@24 ~ b3@11 c4@35 a3 ~ [b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@31, ~@6 b3@25 ~@118 b3@43, ~@149 d4@8 ~@35]/8", // D5 E5 D5
X: "[~@5 [c4,e4]@24 ~@13 g#3@12 [c4,e4]@11 [c4,e4]@13 ~@11 [f4,a4]@5 ~ e4, ~@30 [d4,f4]@24 g3@23 ~@19]/4", // C F Dm
Y: "[g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~ [c4,e4]@22 ~@20, ~@5 d4@22 ~@93, ~@3 g4@23 ~@34]/5", // C
Z: "[~@17 [c4,e4]@11 ~ [g4,b4]@17 ~ [e4,g4]@5 ~ [f4,a4]@23 ~ [e4,g4]@11 ~ [c4,e4]@5 ~ [e4,g4]@6 ~ [f4,c5]@24 ~@18, ~@101 d4@24 ~@19]/6", // C G Em F Em C Em F5
})).s("gm_pad_poly").gain(0.31)
// chords · pad poly · "Synth Horns" · soft notes
const pad_poly_soft = note("<~@63 A@3 ~ B@3 ~@3 C D ~@3 E@3 ~@5 F ~@56 G@3 ~@4 H ~@36>".pickRestart({
A: "[~@18 d4@9 d#4@3 f4@2 g4@3 ~ d4@32 ~@4]/3", B: "[~@18 e4@9 f#4@3 a4@3 b4@3 a4@31 ~@5]/3", C: "d4", D: "d#4",
E: "[~@23 d4@11 ~ a3@35 ~@2]/3", F: "~@8 g#3 ~@15", G: "[~@5 d4@11 ~ a3@35 ~@20]/3", H: "~@14 g#3 ~@9",
})).s("gm_pad_poly").gain(0.15)
// bass · acoustic bass · "Bass"
const bass = note(`<
A@6 B C D E@2 F G H@2 I J K L M N O P Q R S@2 T U V@2 W X K Y Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL AM AN AO AI AP@2
AQ AR AS AT@2 AU C D E@2 F G H@2 I J K L M N O P Q R S@2 T U AV@2 W X K Y Z AA AB AC AD AE AF AG AH AI AW@2 AX AL AM
AN AO AI AY@2 AQ AR AS AZ BA@2 BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BV BY@6 BZ CA@3 CB
CC@3 CD@4 CE CF@5 CG CH CI@5 CJ CK CL CM@3 CN@8 CO@2 ~
>`.pickRestart({
A: "[~@18 c3@12 b2@11 ~ a#2@11 ~ a2@11 ~ d3@11 ~ c#3@12 c3@12 b2@11 ~ d#3@17 ~ e3@12]/6", B: "e2@23 ~",
C: "g3 ~@2 d3 ~@2 g2@15 d2@3", D: "f2@7 g2", E: "[a2@8 ~ c3@3 f2@15 g2@3 a2@2 ~ c3@6 d3@2 ~ a2@3 f2@3]/2",
F: "g2@19 ~@2 g2@3", G: "f2@20 ~ g2@3", H: "[a2@4 d2@7 f#2@3 g2 ~]/2", I: "~@7 f3, f2", J: "e3@11 ~ e2@11 ~",
K: "a2@20 ~ a2@3", L: "a#2@19 ~@2 a#2@3", M: "e2@20 ~ a#2@3", N: "b2@20 ~ a#2@3", O: "b2@3 e2@2 ~",
P: "b2@3 e3 ~@2 e3@3 b2@3 e2@11 ~, ~@5 f3@2 ~@17", Q: "g2@20 ~ f#2@2 ~", R: "f2@20 ~ g#2@2 ~",
S: "[a2@8 ~ c3@3 f2@18 ~@3 g2@3 a2@2 ~ c3 ~@2 f3@3 f#3@3]/2", T: "g3@19 ~@2 f#3@2 ~", U: "f3@20 ~ e2@3",
V: "[a2@8 ~ e2@3 a2@15 a3 a#3 b3@3 ~ e3@3 a3@5 ~ e3@3 e2@3]/2", W: "f2@19 ~@2 f2@3", X: "e2@12 e3@11 ~",
Y: "g2@8 ~ g2@3 g3@5 ~ f#3@5 ~", Z: "f3@7 c3", AA: "e3@21 c3@2 ~", AB: "d3@23 ~", AC: "g2@15 d3@3 g3@5 ~",
AD: "a2@7 ~@2 a2@2 ~ a2@7 ~@2 d3@2 ~", AE: "e3@7 ~@2 e3@2 ~ e3@8 ~ a2@3", AF: "d3@6 ~@3 d3@2 ~ d3@8 ~ a2@3",
AG: "c3@7 ~@2 c3@2 ~ c3@8 ~ g2@3", AH: "a#2@7 ~@2 a#2@2 ~ a#2@8 ~ f2@3", AI: "a2@7 ~@2 a2@3 g2@6 ~@3 g2@3",
AJ: "[f#2@3 ~@3 f2@5 ~@3 c3 ~ d3 f3@2 ~@2 e3@9 c3@3 f2@9 g2@5 ~]/2", AK: "a2@7 ~@2 a2@2 ~ a2@8 d3@3 ~",
AL: "e3@7 ~@2 e3@2 ~ e3@8 ~ a2@2 ~", AM: "d3@7 ~@2 d3@2 ~ d3@8 ~ a2@3", AN: "c3@6 ~@3 c3@2 ~ c3@8 ~ g2@3",
AO: "a#2@7 ~@2 a#2@2 ~ a#2@7 ~@2 a#2@2 ~",
AP: "[f#2@3 ~@3 f2@6 ~@3 c3 d3 f3@2 ~@2 e3@8 ~ c3@3 f2@5 ~ f2@2 ~ g2@5 ~]/2", AQ: "a2@6 ~@3 a2@2 ~ a2@11 ~",
AR: "e3@7 ~@2 e3@2 ~ e3@9 ~@3", AS: "d3@7 ~@2 d3@3 c#3@7 ~@5", AT: "[c3@7 ~@2 c3@2 ~ b2@10 ~ d#3@23 ~@2]/2",
AU: "e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ d2@2 ~ e2@2 ~ f#2@2 ~",
AV: "[a2@8 ~ e2@3 a2@15 [a3,a#3] ~@2 b3@3 e3@3 a3@5 ~ e3@3 e2@3]/2", // A#maj7
AW: "[f#2@3 ~@3 f2@5 ~@3 c3 d3 ~@2 f3@3 e3@9 c3@3 f2@9 g2@5 ~]/2", AX: "a2@7 ~@2 a2@2 ~ a2@8 ~ d3@3",
AY: "[f#2@3 ~@3 f2@6 ~@3 c3 ~ d3 f3@2 ~ e3@8 ~ c3@3 f2@5 ~ f2@2 ~ g2@5 ~]/2", AZ: "c3@7 ~@2 c3@2 ~ b2@10 ~@2",
BA: "[a#2@22 ~ b2@23 ~@2]/2", BB: "c3@7 ~@2 c3@2 ~ c3@7 ~@2 g2@3", BC: "e2@7 ~@2 e2@2 ~ e2@7 ~@2 e2@3",
BD: "a2@6 ~@3 a2@2 ~ a2@7 ~@2 a2@3", BE: "d3@6 ~@3 d3@2 ~ d3@8 ~ a2@2 ~",
BF: "g2@7 ~@2 g2@2 ~ g2@4 ~@2 g2@2 ~ a2@2 ~", BG: "b2@6 ~@3 b2@2 ~ b2@7 ~@2 b2@3", BH: "e3@6 ~@3 e3@2 ~ e3@8 ~ b2@3",
BI: "a2@7 ~@2 a2@2 ~ a2@7 ~@2 a2@2 ~", BJ: "f2@11 ~ f#2@11 ~", BK: "g2@11 ~ b2@10 ~@2",
BL: "c3@6 g2@3 a2@2 ~ c3@2 ~ e3@2 ~ g2@2 ~ f2@2 ~", BM: "e2@7 ~@2 e2@2 ~ e2@7 ~@2 e2@2 ~",
BN: "a2@7 ~@2 a2@2 ~ a2@7 ~@2 a2@3", BO: "d3@7 ~@2 d3@2 ~ d3@7 ~@2 d3@3", BP: "g3@7 ~@2 g3@2 ~ g3@4 ~@2 g2@2 ~ a2@3",
BQ: "b2@6 ~@3 b2@2 ~ b2@8 ~ b2@3", BR: "e3@6 ~@3 e3@2 ~ e3@8 ~ b2@2 ~", BS: "a2@6 ~@3 a2@2 ~ a2@6 ~@3 a2@2 ~",
BT: "f2@11 ~ f#2@10 ~@2", BU: "g2@11 ~ b2@9 ~@3", BV: "c3@12 b2@11 ~", BW: "a#2@11 ~ a2@11 ~", BX: "d3@11 ~ c#3@12",
BY: "[d#3@17 ~ e3@12 e2@23 ~ g2@20 ~ f#2@2 ~ f2@20 ~ g#2@2 ~ a2@8 ~ c3@3 f2@18 ~@3 g2@3 a2@2 ~ c3 ~@2]/6",
BZ: "f3 f#3 g3@6", CA: "[~@3 f#3@2 ~ f3@20 ~ e2@3 a2@8 ~ e2@3 a2@15 [a3,a#3] ~@2 b3@3 e3@3 a3@5 ~]/3",
CB: "e3 e2 f2@6", CC: "[~@3 f2@3 e2@12 e3@11 ~ a2@20 ~ a2@3 g2@8 ~ g2@3 g3@5 ~]/3",
CD: "[f#3@5 ~ f3@21 c3@3 e3@21 c3@2 ~ d3@23 ~ g2@15 d3@3]/4", CE: "g3@5 ~ a2@7 ~@2 a2@2 ~ a2@6",
CF: "[~@3 d3@2 ~ e3@7 ~@2 e3@2 ~ e3@8 ~ a2@3 d3@6 ~@3 d3@2 ~ d3@8 ~ a2@3 c3@7 ~@2 c3@2 ~ c3@8 ~ g2@3 a#2@7 ~@2 a#2@2 ~ a#2@8 ~ f2@3 a2@7 ~@2 a2@3 g2@6]/5",
CG: "~@3 g2@3 f#2@3 ~@3 f2@5 ~@3 c3 d3 ~@2", CH: "f3 e3@3 c3 f2@3",
CI: "[g2@5 ~ a2@7 ~@2 a2@2 ~ a2@8 ~ d3@3 e3@7 ~@2 e3@2 ~ e3@8 ~ a2@2 ~ d3@7 ~@2 d3@2 ~ d3@8 ~ a2@3 c3@6 ~@3 c3@2 ~ c3@8 ~ g2@3 a#2@7 ~@2 a#2@2 ~ a#2@6]/5",
CJ: "~@3 a#2@2 ~ a2@7 ~@2 a2@3 g2@6", CK: "~@3 g2@3 f#2@3 ~@3 f2@6 ~@3 c3 ~ d3",
CL: "f3@2 ~ e3@8 ~ c3@3 f2@5 ~ f2@2 ~",
CM: "[g2@5 ~ a2@6 ~@3 a2@2 ~ a2@11 ~ e3@7 ~@2 e3@2 ~ e3@9 ~@3 d3@7 ~@2 d3@3 c#3@6]/3",
CN: "[~@6 c3@7 ~@2 c3@2 ~ b2@10 ~@2 a#2@22 ~ b2@23 ~@2 c3@12 b2@11 ~ a#2@11 ~ a2@11 ~ d3@11 ~ c#3@12 c3@12 b2@11 ~ d#3@17 ~]/8",
CO: "[e3@12 e2@23 ~@13]/2",
})).s("gm_acoustic_bass").gain(0.26)
// drums · kick
const kick = s("bd").struct(`<
~ A@3 B C ~ D@38 E F D@6 E F D@44 E F D@6 E F D@4 G ~ D@8 ~@2 D@8 ~@2 H@4 ~@2 I J@21 K L I J@5 K L I J@3 M ~ C A@3 N O
~@2
>`.pickRestart({
A: "x!2", B: "x ~ x!2", C: "~ x", D: "x ~@2 x!2 ~@2 x", E: "x ~ x ~@4 x", F: "~@3 x ~@4",
G: "x ~@8 x ~@2 x ~@2 x!2 ~@7", H: "~ x ~ x", I: "~@2 x ~@2 x!2 ~", J: "~ x!2 ~@2 x!2 ~", K: "~ x!2 ~ x ~@3",
L: "~ x ~@3 x ~@2", M: "~@3 x ~@2 x ~@8 x ~@2 x ~@2 x!2 ~", N: "x!2 ~@2", O: "x",
})).gain(0.41)
// drums · snare
const snare = s("sd").struct(`<
~@7 A@15 B A@15 C A@6 D E A@6 D E A@5 F A@15 B A@15 C A@6 D E A@6 D E A@4 G H I A@7 ~@2 A@8 ~@8 J K@14 L J K@5 M N J
K@5 M N J K@3 O P ~@8
>`.pickRestart({
A: "~ x ~ x", B: "~@2 x ~@2 x ~@2", C: "~ x!2 ~", D: "x ~ x ~@4 x", E: "~@3 x ~ x ~@2", F: "x!6 ~@2",
G: "x ~@8 x ~@7 x ~@4 x!2", H: "~ x ~@6", I: "x!2 ~ x", J: "~ x", K: "x!2", L: "x ~ x!2", M: "x!3 ~",
N: "~ x ~@3 x ~ x", O: "x ~@5 x ~@8 x ~@7 x", P: "~@4 x!2 ~@3 x ~@14",
})).gain(0.46)
// drums · low tom
const low_tom = s("lt").struct(`<
~@22 A ~@15 B ~@6 C D ~@6 C D ~@5 E ~@15 A ~@15 B ~@6 C D ~@6 C D ~@5 F ~@42 G ~@5 H I G ~@5 H I G ~@4 J G ~@7
>`.pickRestart({
A: "~@20 x!2 ~@2", B: "~@19 x ~ x ~@2", C: "~@16 x!2 ~@6", D: "~@4 x!2 ~@13 x ~ x ~@2",
E: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@7 x!2 ~@2", F: "~@15 x!2 ~@2 x ~ x ~@2", G: "~ x ~ x ~@20", H: "~@22 x!2",
I: "~@10 x!2 ~@12", J: "~@21 x!2 ~",
})).gain(0.41)
// drums · hihat
const hihat = s("hh").struct(`<
A B@2 C D E ~ F@8 G F@7 G F@7 G F@7 ~@6 H I ~@6 H I ~@6 G F@7 G F@7 G F@7 G F@7 ~@6 H I ~@6 H I ~@26 J@2 C ~@3 K F@7 L
F@7 M ~@5 N I O ~@5 N I O ~@5 P Q C@2 R O ~@2
>`.pickRestart({
A: "~@18 x ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~ x ~@2 x!2 ~@2 x ~ x!2 ~@2 x ~ x",
// … 24 more lines
More by Steely Dan
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.