0:00/0:00
// Black Friday — Steely Dan
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 151 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 · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
A B C@2 D@2 E@2 F@2 G ~ H@2 G ~ I@2 J@2 K@2 L@2 ~@3 M N@2 O@2 F@2 G ~ H@2 G ~ I@2 J@2 K@2 L@2 ~@3 M N@2 O@2 N@2 P@2
Q@2 P@2 ~@2 R S T@2 L@2 F@2 G ~ H@2 G ~ I@2 J@2 K@2 L@2 ~@3 M L@2 P@4 U@2 V@2 P@2 F@4 V@2 P@2 F@4 V@2 P@2 F@4 V@2 P@2
F@4 V@2 P@2 F@4 V@2 P@2 F@2 W ~@4
>`.pickRestart({
A: "~@5 [d4,g4,b4]@7", B: "~@5 [c#4,f#4,a#4]@5 [d4,g4,b4]@14", C: "~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@7",
D: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@3 ~ b3@7 ~@19, ~@21 [e4,g4]@8 ~@19]/2", // F# G F#m Em
E: "[~@6 [c#4,f#4,a#4]@4 [g4,b4]@3 ~@5 [c#4,f#4,g#4,a4]@4 [b3,e4,g4]@7 ~@19, ~@5 d4@4 ~@15]/2", // F# G F#m Em
F: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@4 [b3,e4,g4]@5 ~@21]/2", // F# G F#m Em
G: "~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 [c#4,f#4,a4]@2 [b3,e4,g4]", // F# G F#m Em
H: "[~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 [c#4,f#4,a4]@2 [b3,e4,g4]@2 ~@11]/2", // F# G F#m Em
I: "[~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 ~@2 [b3,e4]@4 ~@9, ~@18 [c#4,f#4,a4]@5 ~@25, ~@21 g4@8 ~@19]/2", // F# G E5 F#m
J: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@7 ~ [c#4,f#4,a4]@3 [b3,e4,g4]@6 ~@21]/2", // F# G F#m Em
K: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@3 [b3,e4,g4]@7 ~@20]/2", // F# G F#m Em
L: "[~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 [c#4,f#4,a4]@2 [b3,e4,g4]@4 ~@9]/2", // F# G F#m Em
M: "~@4 b4@2 c#5@3 b4@2 ~ e5@3 g4@2 ~ e4@3 e4@3",
N: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@4 [b3,e4,g4]@7 ~@19]/2", // F# G F#m Em
O: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@7 ~ [c#4,f#4,a4]@4 [b3,e4,g4]@7 ~@19]/2", // F# G F#m Em
P: "[~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 [c#4,f#4,a4]@2 [b3,e4,g4]@3 ~@10]/2", // F# G F#m Em
Q: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@7 ~ [c#4,f#4,a4]@4 [b3,e4,g4]@6 ~@20]/2", R: "~@21 b4@2 ~",
S: "~@3 b4@2 c#5@4 b4@2 e5@4 ~ g4@2 e4@4 e4@2",
T: "[~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@7 ~ [c#4,f#4,a4]@4 [b3,e4,g4]@5 ~@21]/2", // F# G F#m Em
U: "[~@6 [c#4,f#4,a#4]@4 ~ d4@7 [c#4,f#4,a4]@4 [b3,e4,g4]@5 ~@21, ~@5 [g4,b4]@4 ~@15]/2", // F# F#m Em G
V: "[~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 [c#4,f#4,a4]@2 [b3,e4,g4]@4 ~@9, ~@22 f#4 ~@25]/2", // F# G F#m Em
W: "~@6 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@5 ~", // F# G F#m
})).s("gm_epiano1").gain(0.67)
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@4 A B C D E F G H I@2 J K I L M N O P M Q@4 R M S M T E F G H I@2 J K I L M N O P M Q@4 R M S M U V W M X Y Z AA
AB@4 AC AD AE AF AG E F G H I@2 J K I L M N O P M Q@4 R AH AI AJ AK AJ AL AM AN AO AP AQ AR I AS AT AU AV AP AQ AR I
AS AT AU AV AP AQ AR I AS AT AU AV AP AQ AR I AS AT AU AV AP AQ AR I AS AT AU AV AP AQ AR I AS AW ~@4
>`.pickRestart({
A: "e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@2 ~@2 e2@2 e2@2 ~@2 e2 ~", B: "e2@3 ~ e2 ~ e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@2 ~@2 e2 ~",
C: "e2@3 ~ e2@2 e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@3 ~ e2 ~", D: "e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~",
E: "e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@2 ~@2 e2 ~ e2@3 ~ e2 ~", F: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@2 ~@2 e2 ~",
G: "e2@2 ~@2 e2 ~ e2 ~@3 e2 ~ e2@3 ~ e2 ~ e2@2 ~@2 e2 ~",
H: "e2@2 ~@2 e2 ~ e2 ~@3 e2 ~ e2@2 ~@2 e2@2 a2@2 a#2@2 b2@2",
I: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~",
J: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2@2 g2@2 e2@2 d2@2", K: "e2@3 ~ e2 ~ e2@2 ~@2 e2 ~ e2 ~@3 e2@2 d2@4 b2@2",
L: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2@2 d2@2 b1@2 a1@2", M: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2 ~ e2@4 e2 ~",
N: "e2@4 e2 ~ e2@6 e2 ~@3 e2@2 a1@4 b1@2", O: "e2@2 ~@2 e2 ~ e2@4 e2 ~ e2@4 e2 ~ e2@4 e2 ~",
P: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2@2 a1@4 b1@2",
Q: "[e2@4 e2 ~ e2@4 e2 ~ e2@4 e2@2 g2@3 ~ a2@12 g2@12 f#2@12 g2@12 d#3@12 d3@12 b2@2]/4",
R: "~@4 b2@2 c#3@4 b2@2 e3@3 ~@3 e2@2 ~@2 e2@2, ~@16 a2@7 ~", S: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2@2 a2@2 a#2 ~ b2@2",
T: "e2@2 e2 e2@2 e2!2 d2 b1 a1 a#1 b1", U: "e2@4 d2 ~ e2@3 ~ b1@6 a1@2 g1@3 a1@2 ~",
V: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2@2 e2 ~ d2 ~ b1@2", W: "e2@4 e2@2 e2@2 ~@2 e2@2 e2@4 e2@2 e2@2 d2 ~ [b1,c2] ~",
X: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2 ~@3 a#1@2 b1 ~, ~@18 a1@5 ~", Y: "e2@4 e2 ~@2 e2@3 e2 ~ e2@4 e2 ~ e2@4 e2 ~",
Z: "e2@4 e2 ~ e2@3 e2 ~@2 e2@4 e2 ~ e2@4 e2 ~", AA: "e2@4 e2 ~ e2@4 e2@2 e2@4 e2 ~ e2@4 e2@2",
AB: "[e1@6 f#1@6 g1@6 g#1@4 a1@5 e2@2 ~ a2@3 g1@7 d2@2 g2@3 f#1@12 g1@12 d#2@12 d2@12 b1@2 ~]/4",
AC: "~@3 b1@2 c#2@5 b1@2 e2@4 g1@2 e1@2 ~@2 e1@2", AD: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2 ~ e2@4 e2@2",
AE: "e2@4 e2 ~ e2@4 e2 ~ e2@4 e2@2 a2@2 a#2@2 b2@2", AF: "e3@3 ~ e3 ~ e3@3 ~ e3 ~ e3@4 e3 ~ e3@4 e3 ~",
AG: "e3@4 e3 ~ e3@4 e3 ~ e3@4 e3 ~ b2@4 ~@2", AH: "e2@4 e2 ~ e2@3 ~ e2 ~ e2@3 ~ e2 ~ e2@3 ~ e2 ~",
AI: "e2@3 ~ e2 ~ e2@2 ~@2 e2 ~ e2 ~@3 e2@2 a1@2 a#1@2 b1@2", AJ: "e2@3 ~ e2 ~ e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@3 ~ e2 ~",
AK: "e2@3 ~ e2 ~ e2@3 ~ e2 ~ e2@3 ~ a1@2 a#1@4 b1@2", AL: "e2@2 ~@2 e2 ~ e2@3 ~ e2 ~ e2@3 ~ e2 ~ e2@2 d2@2 b1@2",
AM: "e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~",
AN: "e1@2 ~@2 e1@2 f#1@2 ~@2 f#1@2 g1@2 ~@2 g1@2 b1@2 ~ b1@2 ~",
AO: "e2@2 ~ e2 ~@2 e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~",
AP: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2 ~@3 e2 ~ e2@2 d2@2 b1@2",
AQ: "e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~ e1 ~@3 e1 ~",
AR: "e1 ~@3 e1@2 f#1@2 ~@2 f#1 ~ g1 ~@3 g1@2 b1@2 ~@2 b1@2",
AS: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 d2@2 b1@2",
AT: "e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~ e1 ~@3 e1 ~ e1@2 ~@2 e1 ~",
AU: "e1 ~@3 e1@2 f#1@2 ~@2 f#1 ~ g1 ~@3 g1@2 b1@2 ~ b1 ~@2",
AV: "~@3 e2 ~@2 e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~", AW: "e1@2 ~@2 e1 ~ e1@2 ~@2 e1 ~ e1 ~@3 e1 ~@7",
})).s("gm_electric_bass_finger").gain(0.42)
// chords · clavinet
const clavinet = note(`<
~@23 A@4 B ~@19 A@4 B ~@35 A@4 B ~@15 C D E F@2 G@5 H I J K L M N O@2 P Q R@2 S@2 T@7 U@6 V W ~@4
>`.pickRestart({
A: "[~@18 d4@3 a3@12 g3@13 f#3@12 g3@11 d#4@12 d4@12 b3@2 ~]/4", B: "~@4 b4@2 c#5@3 b4@2 ~ e5@3 b4@2 e4@2 ~@2 e4@3",
C: "~@2 e2@4 e2@4 e2@4 e2@3 ~ e2@4 e2@2", D: "b1 d2 e2@9 d2",
E: "b1@2 d2@2 e2@2 b1@2 d2@2 e2@5 ~ b1@2 e2@2 b1@2 d2@2, ~@15 d2@2 ~@7",
F: "[g2@3 ~ g2@4 e2@2 d2@2 e2@32 d2@2 b1@2]/2",
G: "[~@2 b1 ~ d2 ~ e2@20 b1@2 d2@2 ~@2 e2@2 b2@2 e2@2 b1@2 d2@2 b2@4 ~@2 e2@2 g2@2 d2@2 a2@4 g2@4 ~@2 b1@2 ~@2 d2@2 b1@2 a1@2 b1 ~ d2@2 b1 ~@3 b1@2 ~@36, g2 ~@5 e1@14 ~@4, ~@21 d3@5 ~@34, ~@42 a#2 ~@3 a2@4 ~@13 e2@2 ~ g2@4 ~@10 e2@20 ~@20]/5",
H: "~@3 [a1,a#1] ~@2 d2@2 b1@2 d2@2 a2@3 ~ a2@4 g2@2 e2 ~, ~@5 b1@2 ~@17", I: "g2 e2@5",
J: "c3 ~@3 a2@4 g2 ~ g2@2 a2@2 g2 ~ a2 ~ [g2,g#2] ~@3 g2@2, ~@9 a2@2 ~", // G#maj7
K: "e2@2 g2@2 ~ d2@2 e2@2 ~ b1@2 d2@4 e2@3 ~ e2@3 ~, ~@2 e2 ~@9", L: "e2", M: "b1 d2 e2 b1 d2 e2 b1 d2 e2 b1 d2 b1",
N: "g2@3 ~ g2@4 e2@2 d2@2 e2@12",
O: "[~@4 a2@2 ~@3 g2@2 ~ a2@4 a2@5 a2@7 g2@2 e2@2 g2@2 e2@8 d2@2 e2@2 d2@2, b2@6 a2@6 ~@4 g#2 ~@31]/2",
P: "b1@2 d2@2 e2@2 b1@2 d2@2 e2@2 b1@2 e2@2 b1@2 d2@2 e2@2 b1 ~", Q: "d2@2 ~@8 b1 d2, ~ e2@5",
R: "[f#1 ~ e2@2 [b1,a3]@2 d2@2 [b1,a3,d4]@2 d2@2 a3@3 ~@9 b1@6 e2@4 b1@2 [d2,e3]@4 [b1,g3]@2 ~@2 b1@2 d2@2, e1@11 ~ e1@36, ~@12 d4@29 ~@7, ~@16 b3@5 g3@15 ~@12, ~@9 e2@3 ~@9 d2@2 ~]/2", // B7 Bm7 Dsus2 Em
S: "[[b2,e3,b3]@4 [e2,b2,e3]@2 b1@2 d2@2 ~ b1@2 d2@2 b1 ~ [b2,b3]@2 b1@2 ~@3 [b2,e3,b3]@4 b3@2 ~@6 [b2,e3,b3]@4 ~@6 e2@2, e1@22 ~ e1@25, ~@4 b3@5 ~ [b2,f#3,b3]@5 ~@6 e2@4 ~@3 [b2,e3]@4 [b2,e3,b3]@4 ~@4 b2@8, ~@15 e2@2 e2@4 e2@2 ~, ~@10 [e3,b3] [b1,e3,b3]]/2", // E5 B E5 B5 E5
T: "[[f#3,b3]@4 e2@2 ~@4 b2@2 ~@2 e2@2 b1@2 [e2,a2,d3]@3 ~ e2@2 ~@3 e2@2 ~ e2@4 d2 ~@3 e2@2 b1@2 d2@2 b1@2 [d2,a2,d3]@2 ~@2 [e2,b2,e3]@2 b1@2 [d2,b2,e3]@2 b1@2 [d2,b2,e3]@2 b1@2 [e2,b2,e3]@2 ~@2 [e2,b2,e3]@2 b1@2 [d2,b2,e3]@2 ~@2 [e2,a2,d3]@2 b1@2 [d2,a2,d3]@2 b1@2 d2@2 ~@2 e2@2 b1@2 e2@2 ~@2 d2@2 ~@2 [a2,d3]@2 e2@2 ~@6 e2@4 ~@2 e2@4 b1@2 ~@4 e2@2 [b2,e3]@2 e2@2 ~@2 e2@2 ~@6 e2@2 b1@2 d3 ~ [b2,e3]@2 ~@2 a2@2 ~@4 d2@2 b1@2 e2@2 b1@2 d2@2 b1@2, b2@8 e2@4 b1@4 ~@5 b1@2 ~ e1@5 b1@6 ~ e1@5 ~@7 e1@13 ~@3 e1@6 ~@2 e1@10 ~@2 e1@12 e1@13 ~@3 e1@7 ~@3 e1@22 e1@13 ~@11, e1@6 e1@16 b2@18 ~@42 [b2,e3]@15 ~@9 [b2,e3]@17 ~@7 [b2,e3]@5 b1@3 d3@4 ~@6 e2@4 b1@4 ~@12, ~ b3@40 ~, ~@4 g3@6 e3@7 ~@5 e3@21 ~@49 b1@4 ~@6 [b1,a2,d3]@6 ~@12 [c2,d2]@4 ~@10 g3@2 ~@2 g3@8 ~@4 d3@4 [b2,e3]@12 ~@2]/7", // B5 Dsus2 D5 E5 E7 E5 E7 Dsus2 …
U: "[d2@2 a2 b2@2 d3@2 ~ e3@2 d3@2 g3@2 ~@2 d#3 ~ b1@2 ~ b1@2 ~ a3@4 ~@4 e3@2 [b1,d3]@2 a1@3 ~@5 d2@2 b1@2 ~@3 e3 d3 ~@3 d3@2 b2@2 d3@2 e3@2 d3@2 b2@2 d3@2 e3@2 d3!2 e3 d3 b2 a2 b1@3 d3@6 ~@5 g2@2 a2@2 g2@4 f2@2 d2@2 b1@2 d2@2 ~@2 d3 d#3 e3@2 g3@2 e3@2 b1@2 ~@7 e2@3 a1@2 b1@3 d2@2 ~ b1@2 d2@2 b1@2, ~@7 b1@7 [d2,e2]@4 ~@2 d2@3 e1@24 ~ e1@29 ~ e1@18 e1@23 ~ e1@23 ~, ~@16 g3@4 ~@8 g3@4 ~@4 e3@15 ~@2 e3@3 ~@10 b1@6 b2@2 ~@4 b2@10 d3@16 ~@14 g3@26, ~@29 e2@5 ~@8 b1@4 ~@4 g3@2 ~@2 b1@6 d2@7 ~@5 d2@5 ~@4 e2@9 b1@6 ~@12 b1@6 e2@4 ~@19 a1@2 ~@5, ~@22 a2 ~@13]/6", // Bm Dsus2
V: "~@3 [a2,a#2] ~@3 e2@3 b1@2 d2@4 a1@2 ~@4 d2@2, e1@7 ~, ~@4 b1@3 ~@11 b1@6, ~@5 b2@18 ~", // A#maj7
W: "~@2 d3 d#3 e3@2 [f3,g3]@2 f3 ~ [a1,a3]@2 g#3@2 a3@2 [d2,g3]@3 ~@5, e1, ~@6 e2@6 b1@5 ~@7, ~@8 e3@7 ~@9", // Fsus2 A G5
})).s("gm_clavinet").gain(0.57)
// bass · harpsichord · "HARPSICHRD"
const bass_2 = note(`<
A@3 B@2 C@13 D E F G H I ~@4 J H K C@11 D E F G H I ~@4 J H K L@8 M@2 L@4 N L@2 C@10 D E F G H I ~@4 N L@6 O P L@7 Q
L@7 Q L@7 Q L@7 Q L@7 Q L@6 R ~@3
>`.pickRestart({
A: "e1!11 [e1,e2], ~ e2@2 e2@2 e2@2 e2@2 e2@2 ~", B: "[e1!12 e1!12, ~ e2@2 e2@2 e2@2 e2@2 e2@2 e2@13]/2", C: "e1!12",
D: "[e0,e1] ~ [e0,e1] ~ [e0,e1] ~ [e0,e1]@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1 ~, ~@2 e0 ~@3", // E
E: "e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~ e1@2 e1@2 e1@2 e1@2 e1@2 e1 ~",
F: "e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~",
G: "e1@2 e1@2 e1 ~ e1@2 e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~ e1@2 e1 ~",
H: "e1@2 e1@2 e1 ~ e1@2 e1@2 e1@2 e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~",
I: "e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~ e1@2 e1@2 e1@2 e1@2 e1@2 e1@2",
J: "e1@2 e1 ~ e1 ~ e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~ e1@2 e1@2 e1 ~",
K: "e1@2 e1@2 e1 ~ e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2",
L: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
M: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1!2 ~@2 e1 ~ e1 ~ e1 ~",
N: "e1@2 e1@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
O: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1!2 ~@2",
P: "e1 ~ e1@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
Q: "~@2 e1@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", R: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~@13",
})).s("gm_harpsichord").gain(0.63)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~@4 A@7 B@2 C D@2 E@2 ~@14 F@3 B@2 C D@2 E@2 ~@30 F@3 B@2 C D@2 E@2 ~@69
>`.pickRestart({
A: "[~@6 c#4@3 ~ d4@8 c#4@4 b3@6 ~@2 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@3 ~ [b3,e4]@8 c#4@3 d4@8 ~ c#4@3 b3@8 ~ [c#4,f#4,a#4]@3 [d4,g4,b4]@8 ~ [c#4,f#4,a4]@3 [b3,e4,g4]@8 ~ c#4@3 d4@9 c#4@3 b3@8 ~ [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@4 [b3,e4,g4]@6 ~@2 c#4@3 d4@9 c#4@3 b3@3, ~@15 g4@3 ~@38]/7", // F# G F#m E5 F# G F#m Em …
B: "[~@6 [c#4,f#4,a#4]@3 ~ d4@8 ~@4 b3@8 c#4@3 d4@9 c#4@3 ~ b3@2, ~@9 [g4,b4]@8 ~ [c#4,f#4,a4]@5 ~@25, ~@21 [e4,g4]@8 ~@19]/2", // F# G F#m Em
C: "~@3 [c#4,f#4,a#4]@2 [d4,g4,b4]@4 [c#4,f#4,a4]@2 [b3,e4,g4]", // F# G F#m Em
D: "[~@6 c#4@3 d4@9 c#4@3 ~ b3@5 ~@3 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,a4]@4 [b3,e4,g4]@2, ~@21 f#4 ~@2]/2", // F# G F#m Em
E: "[~@6 c#4@3 d4@8 ~ c#4@3 ~ b3@4 ~@4 [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@4 [b3,e4,g4]@2]/2", // F# G F#m Em
F: "[~@6 c#4@3 d4@9 c#4@3 b3@8 ~ [c#4,f#4,a#4]@4 [d4,g4,b4]@8 [c#4,f#4,a4]@4 [b3,e4,g4]@6 ~@2 c#4@3 d4@9 c#4@3 b3@3]/3", // F# G F#m Em
})).s("gm_electric_guitar_muted").gain(0.35)
// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@108 A@7 ~@7 B@2 C@4 D E@3 F G@8 ~@10>".pickRestart({
A: "[~@72 [a3,d4]@4 [a3,d4]@19 ~ a3 b3@23 e3@3 ~@45, [e1,e2]@25 ~@3, ~@96 d4@25 ~@47]/7", B: "[d5@11 b4@13, g4]/2",
C: "[d5 b4, g4]/2", D: "b4@3 a4, g4", E: "[e4@17 d4@6 ~ e4@48, g4]/3",
F: "e3@2 ~@2 d3@2 b2@2 ~ b2@2 e3@13, ~@4 a2 ~@7", G: "[~@14 d3@2 b2@2 ~ g2@2 ~@3 e1@168, ~@6 a2 e2@57]/8",
})).s("gm_lead_2_sawtooth").gain(0.39)
// other · synth brass 2 · "SYNBRASS 2"
const synth_brass_2 = note(`<
~@7 A B@2 C D E F G A H@2 I@2 J K@2 L@4 M@4 A N@2 C O E F G P Q R S@2 T U@2 V@4 W@2 ~@98
>`.pickRestart({
A: "~@3 b3", B: "[e4@12 e4@6 d4@3 e4@8 ~@13 b3@6]/2", C: "e4@5 ~ e4@4 ~@2 e4@4 ~@2 e4@3 ~ e4@2",
D: "~@3 g4@2 ~@17 b3@2", E: "d4@3 d4 ~@2 d4@6 d4@6 d4@4 b3 ~", F: "d4@6 ~@4 b3@2 d4@6 d4@5 ~, ~ d4 ~@2",
G: "e4@5 ~ e3@6 ~@12", H: "[e4@12 e4@6 d4@3 e4@6 ~@15 b3@4 b3@2]/2",
I: "[e4@2 ~ e4@6 ~ d4 ~ e4@2 ~ e4@6 e4@6 f#4 g4@3 ~@15 b3@2]/2", J: "d4@4 ~@2 d4@5 ~ d4@4 ~@2 d4@6",
K: "[d4@6 ~@4 b3@2 d4@5 ~ d4@3 [d4,d#4] ~@11 e3@10 ~@5, ~@2 d4@2 ~@3 e4@4 ~@5]/2", // D#maj7
L: "[~@18 b3@3 [e4,a4,c#5]@12 [g4,b4]@9 [c#4,g4,b4]@3 ~@12 c#4@2 [e4,g4,b4]@4 [e4,g4,b4]@6 [f#4,a#4]@7 ~@2 f#4@3 ~@7 c#4@7 ~, ~@33 e4@12 e4@14 ~@17 g4@6 a#4@13 ~, ~@45 [f#4,a#4]@8 ~ [f#4,a#4]@6 ~@9 c#5@26 ~, ~@51 c#4@6 ~@24 e4@7 ~@8]/4", // A G C#m7b5 Em F#
M: "[~@4 b3@2 c#4@4 b3@2 e4@3 g3@2 ~@13 e1@44 ~@22, ~@17 e3@48 ~@31, ~ e2@2 ~]/4",
N: "[e4@12 e4@6 d4@3 e4@6 ~@13 b3 ~ b3@4 ~@2]/2", O: "~@3 g4@2 ~@13 b3@4 b3@2", P: "~@9 b3 ~ b3",
Q: "e4@5 e4@6 ~ e4@3 e4@6 e4@3", R: "~@9 b3@2 b3", S: "[e4@4 e4@2 e4@4 d4 ~ e4@6 e4@3 e4@6 g4@8 ~@7 b3@3 ~ b3@2]/2",
T: "d4@4 d4 ~ d4@6 d4@6 d4@6", U: "[d4@6 ~@4 b3@2 ~@4 b3@2 d4@3 e4@9 e3@8 ~@10, ~ d4!2 ~@5]/2",
V: "[~@18 b3@3 ~ [e4,a4,c#5]@11 [e4,g4,b4]@9 [c#4,g4,b4]@3 [e4,f#4,a#4]@6 ~ [f#4,a#4]@2 a#4@3 ~ f#4@2 [e4,g4,b4]@3 [e4,g4,b4]@6 [f#4,a#4]@6 g4@2 ~ f#4@3 [e4,a#4]@6 c#4@6 ~@3, ~@51 c#4@6 [c#4,a#4]@2 ~@37, ~@54 [e4,f#4]@5 ~@10 c#5@18 ~@9]/4", // A Em C#m7b5 F#7 F# Em F# Edim …
W: "[~@3 b3@2 ~ c#4@3 b3@2 e4@3 ~ g3@2 e3@14 e3@8 ~@9, ~@31 e2 ~@16]/2",
})).s("gm_synth_brass_2").gain(0.5)
// other · shamisen
const shamisen = note(`<
A B@5 C ~@15 D E ~@16 F G H G@3 H ~@5 I@2 J@8 K@3 L@2 M@6 ~@29 N@2 O P Q R S ~@42
>`.pickRestart({
A: "~@7 e4@2 ~@7 e3@2 e4@2 e3@2 e4@2, ~@15 e4@2 ~@7", B: "e3 e4 e3 e4 e3 e4 e3 e4 e3 e4 e3 e4", C: "~@5 e4 ~ e4 ~@4",
D: "~ e3 e4 e3 e4 e3 e4 e3 e4 e3 e4 e3", E: "e4@2 e3@2 e4@2 e3@2 e4@2 e3@2 e4@2 e3@2 e4@2 e3@2 e4 ~@3",
F: "~@10 [b3,d4]@3 ~@11, ~@3 [f#4,a4] ~@4", G: "~@9 [b3,d4,f#4,a4]@2 ~@13", H: "~@10 [b3,d4,f#4,a4]@3 ~@11",
I: "[~@6 e4@2 ~@5 e4@3 ~@30 e4@2, e3@4 e3@4 e3@3 e3@4 ~ e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4, ~@2 e4@4 ~@3 e4@4 ~@5 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 ~@2]/2",
J: "[~@3 e3@3 ~@72 e4@4 ~@54 e3@2 ~@46 e3@2 ~@3 e4@3, e3@3 ~@5 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 ~@2 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@3 ~@3, ~ e4@4 ~ e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 d4@48 ~@66, ~@84 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 ~@3 e3@5 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 ~@3 e3@4 ~]/8",
K: "[~@27 e4@2 ~@6 e4, e3!6 e3!6 e3!2 ~ e3!3, ~ e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 ~@2 e4@2 e4@2 e4@2 ~]/3",
L: "[~@25 e4@4 ~@16 e4@3, e3@3 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 ~@4 e3@4 e3@4 e3@4 e3@4 ~, ~ e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 ~@4 e4@4 e4@4 e4@4 e4@4 ~@3]/2",
M: "[~@5 e4@3 ~@3 e3@3 e4@2 ~@13 e4@5 ~@42 e3@2 ~@42 e3@7 ~@17, e3@3 e3@4 ~ e3@3 ~@5 e3@3 e3@4 e3@4 e3@5 ~@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 ~@3 e3@5 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 ~@24, ~ e4@4 ~@4 e4@5 ~@3 e4@4 e4@4 e4@4 ~@5 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@9 ~@17]/6",
N: "[e3@4 e3@4 ~@3 e3@3 d4@4 d4@5 ~@7 e4@4 e4@4 ~@4 e4@4 e4@2, ~@5 e4@8 e4@2 ~@4 e4@2 ~@3, ~@7 e3 ~@2 e3 ~]/2",
O: "e3 ~ e3 ~ e3 e4 ~ e4@2 e4 e3 e4, ~@3 e4@2 ~ e3@2 ~@4",
P: "e3@2 e4@2 e3@2 d4@2 e3@2 d4@2 e3@2 d4 ~@3 d4 ~ e3@2 d4 ~",
Q: "e3@2 e4@2 e3@2 e4@2 e3@2 e4@2 e3@2 e4 ~@3 e4@2 e3@2 e4 ~", R: "e3@2 ~@8 e4 ~@11 e4@2",
S: "e3@2 ~@2 e3@2 e4 ~ e3@2 ~@14",
})).s("gm_shamisen").gain(0.35)
// other · shamisen · soft notes
const shamisen_soft = note("<~@6 A ~@50 B ~@6 B ~ C ~ B ~@33 D@2 E F@2 G H ~@42>".pickRestart({
A: "e3 e4 e3 e4 e3 ~ e3 ~ e3 ~ e3 e4", B: "~@2 e3 ~@3", C: "~@3 e3@4 ~@17",
D: "[~@2 e4@4 ~@2 e3@3 ~@5 e3@4 e3@3 ~ e3@4 ~@4 e3@4 e3@4 ~@4 e3@4, ~@6 e4@4 ~@13 d4@25]/2", E: "~ e4@2 ~@5 e3 ~@3",
F: "~@8 e3 ~@3", G: "~@2 e4 ~ e3@2 e4 ~ e3@2 ~@2 e3 ~@3 e3@2 ~@2 e3 ~@3", H: "~@2 e4 ~@21",
})).s("gm_shamisen").gain(0.24)
// drums · kick
const kick = s("bd").struct(`<
~@4 A@3 B A@16 C@3 ~ A@4 D A@15 C@3 ~ A@7 B A@3 E F@3 ~ G A@3 D A@15 C@3 ~ A@3 B A@3 H A@3 I A@3 J A@3 I A@3 J A@3 I
A@3 J A@3 I A@3 J A@3 I A@3 J A@3 I A@3 ~@4
>`.pickRestart({
A: "x ~ x ~@2 x!2 ~ x ~@2 x", B: "x ~ x ~@2 x!2 ~@5", C: "~@5 x ~@5 x", D: "~@2 x ~@2 x!2 ~ x ~@2 x",
E: "x ~@3 x ~@5 x ~ x ~@2 x ~@5 x ~@2", F: "~@3 x ~@3 x", G: "x ~ x!2 ~@2 x ~ x ~@2 x", H: "x ~ x ~@2 x!2 ~ x ~@3",
I: "x ~ x ~@2 x!2 ~@4 x", J: "x ~ x ~@2 x ~@6",
})).gain(0.54)
// drums · snare
const snare = s("sd").struct(`<
~@3 A B@3 C B@19 D B@23 D B@7 E B@4 F G@2 H I B@22 D J B@2 K B@3 L B@3 M B@3 M B@3 M B@3 N B@3 O B@3 P B@3 M B@3 M B@3
// … 40 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.