0:00/0:00
// Kid Charlemagne — Steely Dan
// 102 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 62, 4/4 at bar 63) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "SAW WAVE" lead 2 sawtooth (copy of ch 1 "VOICE OOHS" voice oohs); ch 12 "POLYSYNTH" pad poly (copy of ch 1 "VOICE OOHS" voice oohs); ch 8 "E.PIANO 1" epiano1 (copy of ch 4 "E.PIANO 2" epiano2)
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): DISTORTION.
setcpm(102/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · synth bass 1 · "SYN BASS 1"
const bass = note(`<
~@4 A B C D A B C D E F G H I@2 A B C D A B C D E F G H J@3 K L M A B C D A B C D E F G H J@3 K M@2 N O N P Q R S T U
V W X Y Z AA AB AC AD M@3 AE AF AG AH AI AF AG AH AJ AK AL AC AM AN@2 AO AP AQ AG AR AS AR AT AR AS AR AT AR AS AR AT
AR AS AR AU
>`.pickRestart({
A: "a2 ~@4 e3 a2!2 ~@6 a2 ~", B: "g2 ~@4 d3 g2!2 ~@6 g2 ~", C: "a2 ~@4 f3 a2!2 ~@6 a2 ~",
D: "g#2 ~@4 f3 g#2!2 ~@6 g#2 ~", E: "a2 ~@4 f3 a2!2 ~@6 g2 ~", F: "a2 ~@4 e3 a2!2 ~@6 g2 ~",
G: "d2@4 ~@2 g2 ~ f2@5 ~@3", H: "e2@4 ~@2 a2 ~ f2@2 ~ e2@2 ~ d2 ~", I: "g2 ~@4 e3 g2!2 ~@6 g2 ~",
J: "d2!2 ~ d2 a2!2 d3 ~ e2!2 ~ e2 b2!2 e3 ~", K: "a2!2 ~ a2 d#3!2 f3 ~ b2!2 ~ b2 f3!2 g3 ~",
L: "g2!3 ~ c3!2 e3 ~ g2!2 ~ g2 c3!2 e3 ~", M: "g2!2 ~ g2 c3!2 e3 ~ g2!2 ~ g2 c3!2 e3 ~", N: "d3@4 ~@2 d3@5 ~ d3@3 ~",
O: "a2!2 ~ a2 d3!2 f3 ~ a2!2 ~ a2 d3!2 f3 ~", P: "a2!2 ~ a2 c3!2 e3 ~ e3!2 ~ e3 g3!2 c4 ~",
Q: "a2!2 ~ a2 e3!2 f3 ~ g2!2 ~ g2 d3!2 e3 ~", R: "a2!2 ~ a2 d#3!2 f#3 ~ g2!2 ~ g2 d3!2 e3 ~",
S: "g2!2 ~ g2 d3!2 e3 ~ a2!2 ~ a2 d3!2 f#3 ~", T: "a2!2 ~ a2 d3!2 f#3 ~ c3!2 ~ c3 e3!2 g3 ~",
U: "c3!2 ~ c3 e3!2 g3 ~ g2!2 ~ g2 b2!2 e3 ~", V: "a2!2 ~ a2 d3!2 f#3 ~ g2!2 ~ g2 c3!2 e3 ~",
W: "g2!2 ~ g2 c3!2 e3 ~ g2!2 ~ g2 b2!2 d3 ~", X: "g2!2 ~ g2 b2!2 d3 ~ a2!2 ~ a2 c3!2 f3 ~",
Y: "a2!2 ~ a2 c3!2 f3 ~ g#2!2 ~ g#2 d3!2 f3 ~", Z: "g#2!2 ~ g#2 d3!2 f3 ~ a2!2 ~ a2 d3!2 f3 ~",
AA: "g2!2 ~ g2 b2!2 d3 ~ a2!2 ~ a2 c3!2 e3 ~", AB: "g2!2 ~ g2 c3!2 e3 ~ d2@4 ~@2 g2 ~", AC: "f2@5 ~@3 e2@4 ~@2 a2 ~",
AD: "f2@2 ~ e2@2 ~ d2 ~ g2!2 ~ g2 c3!2 e3 ~", AE: "g2!2 ~ g2 c3!2 e3 ~ a2 ~@4 e3 a2!2", AF: "~@6 a2 ~ g2 ~@4 d3 g2!2",
AG: "~@6 g2 ~ a2 ~@4 f3 a2!2", AH: "~@6 a2 ~ g#2 ~@4 f3 g#2!2", AI: "~@6 g#2 ~ a2 ~@4 e3 a2!2",
AJ: "~@6 g#2 ~ a2 ~@4 f3 a2!2", AK: "~@6 g2 ~ a2 ~@4 e3 a2!2", AL: "~@6 g2 ~ d2@4 ~@2 g2 ~",
AM: "f2@2 ~ e2@2 ~ d2 ~ d2!2 ~ d2 a2!2 d3 ~", AN: "e2!2 ~ e2 b2!2 e3 ~ d2!2 ~ d2 a2!2 d3 ~",
AO: "e2!2 ~ e2 b2!2 e3 ~ a2!2 ~ a2 d#3!2 f3 ~", AP: "b2!2 ~ b2 f3!2 g3 ~ g2 ~@4 e3 g2!2",
AQ: "~@6 g2 ~ g2 ~@4 e3 g2!2", AR: "~@6 b2 ~ a2 ~@4 f3 a2!2", AS: "e3@5 e3 ~ e3@4 ~@2 e3 f2!2",
AT: "e3@5 e3 ~ e3 a2 ~@4 f3 a2!2", AU: "e3@5 e3 ~ e3 ~@8",
})).s("gm_synth_bass_1").gain(0.35).pan(0.1)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
~@4 A B C D A B C D E@2 F G ~@2 A B C D A B C D E@2 F G H@2 I J K@2 A B C D A B C D E@2 F G L@2 I J K@2 ~ M N O P Q
R@3 S T@2 U V W X Y Z@2 AA@2 AB AC AD C AE AC AD C AF@2 AG AH AI AJ@3 AK AL AM@5 AN@8 AO@4
>`.pickRestart({
A: "~@4 [a4,c5,e5,a5]!2 ~@6 [a4,c5,e5,a5]!2 ~@2", B: "~@4 [g4,b4,d5,g5]!2 ~@6 [g4,b4,d5,g5]!2 ~@2",
C: "~@4 [d5,g5,c6]!2 ~@6 [d5,g5,c6]!2 ~@2", D: "~@4 [d5,g5,c6]!2 ~@4 [d5,g5,c6]!6",
E: "[~@4 [d5,g5] ~ [e5,g5] [d5,g5]@6 [d5,g5] ~ [d5,g5]@2 [e5,g5]!4 ~@2 [e5,g5] ~ [e5,g5] ~ [e5,g5]!2 ~@3]/2", // G5 Em G5 Em
F: "[f4,a4,c5]@4 ~@2 [g4,b4,e5] ~ [f4,a4,d5]@5 ~@3", G: "[g4,b4,d5]@4 ~@2 g5 ~ a5@2 ~ c6@2 e6@2 ~",
H: "[c6@8 ~@4 g6!2 ~ f6@11 d6 d#6 d6 c6 a5 c6]/2", I: "d6 c6@12 ~@3",
J: "~@2 [a4,c5,d#5] ~@2 [a4,c5,d#5] ~@2 [b4,d5,f5] ~@2 [b4,d5,f5] ~@2 [b4,d5,f5] ~", // Adim Bdim
K: "~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~", // D#5
L: "[c6@8 ~@4 e6!2 ~ f6@11 d6 d#6 d6 c6 a5 c6]/2", M: "~@2 e5@5 ~ d5 c5 a4 c5 e5 e5@2 ~", N: "d5@11 ~@5",
O: "~@2 e5 ~ g5 a5 c6 ~ e6 ~ d6 c6 d6 c6 a5 ~", P: "c6 d6 c6@12 ~ e5",
Q: "f5 a5 c6 d6 d#6 f#6 d#6 f#6 g6@3 ~ f#6@3 ~",
R: "[b5 d6 e6 f#6 g6 f#6 e6 g5 a5 d6 e6 a5 d6 a5 d6 a6@4 ~@2 b6 a6 g6 a6 ~ g6 ~ d6 ~ g6 e6@2 b5@6 ~ b5 d6 e6 g6 b6 g6 a6 b6]/3",
S: "f#6 d6 b5 f5 g5 d6 e6 g6 b6 ~ a6@3 ~ e5 a5",
T: "[c6 ~ b5 ~ a5 ~ b5 ~ a5 b5 g5 e5 d5 d6 ~ g5@4 ~ a4 c5 e5 ~ g5 e5 a5 e5 c6 e5 d6 e5]/2",
U: "e6 ~ a5 c6@3 ~ d6 a#5 c6 g#5 c6 g5 e5 c5 b4", V: "a4@5 ~@4 g#4 a4 c5 e5 c5 d5 c5",
W: "a4 b4 d5 g5 d5 g5@2 ~@3 c6 ~ b5@3 ~", X: "a5 ~ e5 ~ d5!2 e5@3 a4 d5 a4 e5@2 ~ a4",
Y: "d5 a4 e5@3 e4 g4 a4 a#4 b4 d5 b4 c5 e5 g5 g#5", Z: "[a5 c6 d6 ~ d#6 d6 c6 a#5@25]/2",
AA: "[~@4 a#5 a5 g5 e5@13 ~@2 d#5 ~ e5@2 ~ a#5@3 ~ d#5]/2", AB: "d5 c5@2 ~ c5 d5 c5 ~@5 [a4,c5,e5,a5]!2 ~@2",
AC: "~@4 [a4,c5,e5,a5]!2 ~@6 [g4,b4,d5,g5]!2 ~@2", AD: "~@4 [g4,b4,d5,g5]!2 ~@6 [d5,g5,c6]!2 ~@2",
AE: "~@2 [d5,g5,c6]!6 ~@4 [a4,c5,e5,a5]!2 ~@2", // Csus2 Am
AF: "[~@2 [d5,g5,c6]!6 ~@4 [d5,g5] ~ [e5,g5] [d5,g5]@6 [d5,g5] ~ [d5,g5]@2 [e5,g5]!4 ~@2 [e5,g5]]/2", // Csus2 G5 Em G5 Em
AG: "~ [e5,g5] ~ [e5,g5]!2 ~@3 [f4,a4,c5]@4 ~@2 [g4,b4,e5] ~", AH: "[f4,a4,d5]@5 ~@3 [g4,b4,d5]@4 ~@2 g5 ~",
AI: "a5@2 ~ c6@2 e6@2 ~ c6@8",
AJ: "[~@4 g6!2 ~ f6@11 d6 d#6 d6 c6 a5 c6 d6 c6@12 ~@5 [a4,c5,d#5] ~@2 [a4,c5,d#5] ~@2]/3", // Adim
AK: "[b4,d5,f5] ~@2 [b4,d5,f5] ~@2 [b4,d5,f5] ~@3 [d#5,a#5] ~@2 [d#5,a#5] ~@2", // Bdim D#5
AL: "[d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@3 [d#5,a#5] ~@2 [d#5,a#5] ~@2", // D#5
AM: "[[d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~ a5@6 ~ g5@4 ~ g5@2 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5@6 g5 ~ a5@7 ~ g5@7 ~ f5 ~ f5 ~ f5 ~ g5 ~ e5@6 g5 ~ a5 a5@6 ~ g5]/5", // D#5
AN: "[~@4 g5@2 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5@6 g5 ~ a5@7 ~ g5@7 ~ f5 ~ f5 ~ f5 ~ g5 ~ e5@6 g5 ~ a5 a5@6 ~ g5@4 ~ g5@2 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5@6 g5 ~ a5@7 ~ g5@7 ~ f5 ~ f5 ~ f5 ~ g5 ~ e5@6 g5 ~ a5 a5@6 ~ g5]/8",
AO: "[~@4 g5@2 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5@6 g5 ~ a5@7 ~ g5@7 ~ f5 ~ f5 ~ f5 ~ g5 ~ e5@6 g5 ~ a5 ~@8]/4",
})).s("gm_overdriven_guitar").gain(0.27)
// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
A B A@2 C D E F C D E F G H I J K@2 C D E F C D E F G H I J L M N O K@2 C D E F C D E F G H I J L M N O K@2 P Q R S
T@4 U V@3 W X@2 Y Z AA AB@3 AC@3 W AD@3 W X@2 Y AE AF@4 AG AH AI@8 AJ@8 AK
>`.pickRestart({
A: "~ c5 [c5,f#5,b5]@2 c5 [c5,f#5,b5]@2 c5 [c5,f#5,b5]@2 c5 [c5,f#5,b5]@2 c5 [c5,f#5,b5] ~", // B
B: "~ c5 [c5,f#5,b5]@3 [c5,g5,c6]@2 c5 [c5,f#5,b5]@2 c5 [c5,f#5,b5]@2 c5 [c5,f#5,b5] ~", // B C5 B
C: "~@4 [c4,e4]!2 ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~", // C Dm C Bm C
D: "~@4 [b3,d4] [c4,e4] ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~", E: "~@4 [a3,d4,g4]!2 ~@6 [a3,d4,g4]@3 ~",
F: "~@4 [g#3,d4,g4]!2 ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~@2 [g#3,d4,g4] ~ [g#3,d4,g4] ~", // G
G: "~@4 [f3,a3,d4] ~ e4 [g3,b3,d4]@6 ~@3", H: "[g3,c4,e4]@5 ~@3 [g3,c4,e4]@5 ~@3",
I: "[f3,a3,c4]@4 ~@2 [g3,b3,e4] ~ [f3,a3,d4]@5 ~@3", // F Em Dm
J: "[g3,b3,d4]@4 ~@2 [g3,c4,e4] ~ [a3,c4,f4]@2 ~ [g3,c4,e4]@2 ~ [f3,a3,d4] ~", // G C F C Dm
K: "~ d#4 [e4,a#4]@2 d#4 [e4,a#4]@2 d#4 [e4,a#4]@2 d#4 [e4,a#4]@2 d#4 [e4,a#4] ~", // Edim
L: "~@4 [f3,a3,c4]!2 ~ [g3,b3,d4]@6 ~@3", // F G
M: "~@4 [f3,a3,c4]!2 ~ [g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4]!2 ~", // F G
N: "~@4 [f3,a3,c4]!2 ~ [g3,b3,d4]@2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] [a3,c4,d#4]", // F G Adim
O: "~@2 [a3,c4,d#4] ~@2 [a3,c4,d#4] ~@2 [b3,d4,f4] ~@2 [b3,d4,f4] ~@2 [b3,d4,f4] ~", // Adim Bdim
P: "~@4 [g3,d4] ~ [g3,c#4]@3 ~ c#4 ~ d4 e4 ~ f4", Q: "~@6 [d4,f4,a4] ~ [c4,f4,a4]@5 ~@3",
R: "~@4 [d4,a4] ~ [d4,g#4]@3 ~ g#4 ~ a4 b4 ~ c5", S: "~@4 [a4,c5,e5]!2 ~ [g4,c5,e5]@6 ~@3",
T: "[~@4 e5 d5 ~ d5@2 c5 ~ c5@2 b4 ~ b4@2 c5 ~ c5@2 b4 ~ e4 ~@4 [g4,b4]!2 ~ [a4,c5]@2 ~ [g4,b4] ~ [f#4,a4] ~ [g4,b4] ~@5 [f#4,a4] [g4,b4] ~ [a4,c5]@2 ~ [g4,b4] ~ [f#4,a4] ~ [g4,b4] ~@5 [d4,e4,g4]!2 ~@2]/4", // G Am G F#m G F#m G Am …
U: "~@4 [d4,e4,g4]@3 ~ [e4,g4,b4]@5 ~@3", // Em7 Em
V: "[[d4,f#4,a4]@5 ~@7 [c4,e4]!2 ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~@5 [b3,d4] [c4,e4] ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~@5 [a3,d4,g4]!2 ~@2]/3", // D C Dm C Bm C Bm C …
W: "~@4 [a3,d4,g4]@3 ~@5 [g#3,d4,g4]!2 ~ [g#3,d4,g4]", // Dsus4 G
X: "[~ [g#3,d4,g4] ~@2 [g#3,d4,g4] ~ [g#3,d4,g4] ~@5 [f3,a3,d4] ~ e4 [g3,b3,d4]@6 ~@3 [g3,c4,e4]@5 ~@3]/2", // G Dm G C
Y: "[g3,c4,e4]@5 ~@3 [f3,a3,c4]@4 ~@2 [g3,b3,e4] ~", Z: "[f3,a3,d4]@5 ~@3 [g3,b3,d4]@4 ~@2 [a3,c4,e4] ~",
AA: "[c4,e4,g4]@2 ~ [e4,g4,b4]@2 ~ [d4,f4,a4] ~@3 [a#3,e4]@3 [a#3,e4]@2 ~", // C Em Dm A#dim
AB: "[a#3,e4]@2 ~ [a#3,e4]@2 ~ [a#3,e4] ~@3 [a#3,e4]@3 [a#3,e4]@2 ~", // A#dim
AC: "[[a#3,e4]@2 ~ [a#3,e4]@2 ~ [a#3,e4] ~@5 [c4,e4]!2 ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~@5 [b3,d4] [c4,e4] ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~@5 [a3,d4,g4]!2 ~@2]/3", // A#dim C Dm C Bm C Bm C …
AD: "[~ [g#3,d4,g4] ~@2 [g#3,d4,g4] ~ [g#3,d4,g4] ~@5 [c4,e4]!2 ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~@5 [b3,d4] [c4,e4] ~ [d4,f4]@2 ~ [c4,e4] ~ [b3,d4] ~ [c4,e4] ~@5 [a3,d4,g4]!2 ~@2]/3", // G C Dm C Bm C Bm C …
AE: "[f3,a3,d4]@5 ~@3 [g3,b3,d4]@4 ~@2 [g3,c4,e4] ~", // Dm G C
AF: "[[a3,c4,f4]@2 ~ [g3,c4,e4]@2 ~ [f3,a3,d4] ~@5 [f3,a3,c4]!2 ~ [g3,b3,d4]@6 ~@7 [f3,a3,c4]!2 ~ [g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4]!2 ~@5 [f3,a3,c4]!2 ~ [g3,b3,d4]@2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] [a3,c4,d#4] ~@2 [a3,c4,d#4] ~@2 [a3,c4,d#4] ~@2]/4", // F C Dm F G F G F …
AG: "[b3,d4,f4] ~@2 [b3,d4,f4] ~@2 [b3,d4,f4] ~@3 [e3,a#3,d#4]@3 [e3,a#3,d#4]@2 ~", // Bdim D#
AH: "[e3,a#3,d#4]@2 ~ [e3,a#3,d#4]@2 ~ [e3,a#3,d#4] ~@3 [e3,a#3,d#4]@3 [e3,a#3,d#4]@2 ~", // D#
AI: "[[e3,a#3,d#4]@2 ~ [e3,a#3,d#4]@2 ~ [e3,a#3,d#4] ~ [c4,e4,a4]@6 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@6 ~@2 [g3,b3,e4]@6 [b3,d4,g4] ~ [c4,e4,a4]@7 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@7 ~ [g3,b3,e4]@6 [b3,d4,g4] ~ [c4,e4,a4] [c4,e4,a4]@6 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@6 ~@2 [g3,b3,e4]@6 [b3,d4,g4] ~ [c4,e4,a4]@7 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@7 ~ [g3,b3,e4]]/8", // D# Am G F Em G Am G …
AJ: "[~@5 [b3,d4,g4] ~ [c4,e4,a4] [c4,e4,a4]@6 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@6 ~@2 [g3,b3,e4]@6 [b3,d4,g4] ~ [c4,e4,a4]@7 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@7 ~ [g3,b3,e4]@6 [b3,d4,g4] ~ [c4,e4,a4] [c4,e4,a4]@6 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@6 ~@2 [g3,b3,e4]@6 [b3,d4,g4] ~ [c4,e4,a4]@7 ~ [b3,d4,g4]@7 ~ [a3,c4,f4]@7 ~ [g3,b3,e4]]/8", // G Am G F Em G Am G …
AK: "~@5 [b3,d4,g4] ~ [c4,e4,a4] ~@8", // G Am
})).s("gm_epiano2").gain(0.39).pan(0.9)
// chords · clavinet
const clavinet = note(`<
A@2 B C D E F G D E H G I J ~@2 K@2 D E F G D E H G I J ~@6 L@2 D E F G D E H G I J ~@6 L@2 M N M J O P Q R S T U V W
X Y Z ~ AA L@3 AB AC AD AE AF AC V W AG Y Z ~@5 AH K AI@7 AJ@8 AK@2
>`.pickRestart({
A: "[c3,c4]@11 ~@5", B: "[c3,c4]@13 f3 g3 c#4", C: "[c3,c4]@13 ~ g3 c4",
D: "~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2", // Am
E: "~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2", // G
F: "~@2 [f3,a3,c4]!2 ~@2 [f3,a3,c4]!2 ~@2 [f3,a3,c4]!2 ~@2 [f3,a3,c4]!2", // F
G: "~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2", // A#7
H: "~@2 [a3,c4,f4]!2 ~@2 [a3,c4,f4]!2 ~@2 [a3,c4,f4]!2 ~@2 [a3,c4,f4]!2", // F
I: "~@2 [f3,a3,d4]!2 ~@2 [f3,a3,d4]!2 ~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2", // Dm G
J: "~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2 ~@2 [c4,e4,g4]!2 ~@2 [c4,e4,g4]!2", // Am C
K: "~@2 [c4,e4,g4,a#4]!2 ~@2 [c4,e4,g4,a#4]!2 ~@2 [c4,e4,g4,a#4]!2 ~@2 [c4,e4,g4,a#4]!2", // C7
L: "~@2 [e4,g4,a#4,c5]!2 ~@2 [e4,g4,a#4,c5]!2 ~@2 [e4,g4,a#4,c5]!2 ~@2 [e4,g4,a#4,c5]!2", M: "b4@4 ~@2 b4@5 ~ b4@3 ~",
N: "~@2 [d4,f4,a4,c5]!2 ~@2 [d4,f4,a4,c5]!2 ~@2 [d4,f4,a4,c5]!2 ~@2 [d4,f4,a4,c5]!2", // Dm7
O: "~@2 [e4,f4,a4,c5]!2 ~@2 [e4,f4,a4,c5]!2 ~@2 [e4,g4,b4,d5]!2 ~@2 [e4,g4,b4,d5]!2", // Fmaj7 Em7
P: "~@2 [d4,f4,a4]!2 ~@2 [b3,d#4,f#4,a4]!2 ~@2 [e4,g4,b4,d5]!2 ~@2 [e4,g4,b4,d5]!2", // Dm B7 Em7
Q: "~@2 [e4,g4,b4,d5]!2 ~@2 [e4,g4,b4,d5]!2 ~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4]!2", // Em7 D
R: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4]!2 ~@2 [c4,e4,g4]!2 ~@2 [c4,e4,g4]!2", // D C
S: "~@2 [c4,e4,g4]!2 ~@2 [c4,e4,g4]!2 ~@2 [e4,g4,b4]!2 ~@2 [e4,g4,b4]!2", // C Em
T: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4]!2 ~@2 [c4,e4,g4,a4]!2 ~@2 [c4,e4,g4,a4]!2", // D Am7
U: "~@2 [c4,e4,g4,a4]!2 ~@2 [c4,e4,g4,a4]!2 ~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2", // Am7 G
V: "~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2 ~@2 [a3,c4,f4]!2 ~@2 [a3,c4,f4]!2", // G F
W: "~@2 [a3,c4,f4]!2 ~@2 [a3,c4,f4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2", // F A#7
X: "~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [d4,f4,a4]!2 ~@2 [d4,f4,a4]!2", // A#7 Dm
Y: "~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2 ~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2", Z: "~@2 [c4,e4,g4]!2 ~@2 [c4,e4,g4]!2 ~@8",
AA: "~@10 [e4,g4,a#4,c5]!2 ~@2 [e4,g4,a#4,c5]!2", // C7
AB: "~@2 [e4,g4,a#4,c5]!2 ~@2 [e4,g4,a#4,c5]!2 ~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2", // C7 Am
AC: "~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2 ~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2", // Am G
AD: "~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2 ~@2 [f3,a3,c4]!2 ~@2 [f3,a3,c4]!2", // G F
AE: "~@2 [f3,a3,c4]!2 ~@2 [f3,a3,c4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2", // F A#7
AF: "~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2", // A#7 Am
AG: "~@2 [a#3,d4,f4,g#4]!2 ~@2 [a#3,d4,f4,g#4]!2 ~@2 [f3,a3,d4]!2 ~@2 [f3,a3,d4]!2", // A#7 Dm
AH: "~@10 [c4,e4,g4,a#4]!2 ~@2 [c4,e4,g4,a#4]!2", // C7
AI: "[~@2 [c4,e4,g4,a#4]!2 ~@2 [c4,e4,g4,a#4]!2 ~@4 e5 d5 ~ d5@2 c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5@2 c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5@2 c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5]/7", // C7
AJ: "[~ c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5@2 c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5@2 c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5@2 c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@9 e5 d5 ~ d5]/8",
AK: "[~ c5 ~ c5@2 c5 ~ b4@2 c5 ~ c5@2 b4 ~ c5@4 ~@13]/2",
})).s("gm_clavinet").gain(0.27)
// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@29 A ~@30 B ~@2 C ~ D E ~@27 F ~@3 F ~@11>".pickRestart({
A: "~@7 [g4,a4] ~@2 c5 ~@5", B: "~@6 f5 ~@9", C: "~@3 a4 b4 ~@11", D: "~@5 a3 c4 e4 ~@8", E: "~@15 a#3",
F: "~@13 g4 ~@2",
})).s("gm_distortion_guitar").gain(0.21)
// chords · clavinet
const clavinet_2 = note(`<
A@2 B C D E F G D E F G H@2 ~@2 I@2 D E F G D E F G H@2 ~@6 J K D E F G D E F G L@2 ~@5 M N@2 O P Q R S T U V W X Y Z
AA AB AC AD ~ AE AF@3 AG AH AI F AJ AH AI F AK@2 AL ~@5 AM AN AO@7 AP@2 ~@8
>`.pickRestart({
A: "[c3,c4]", B: "[c3,c4]@13 f3 g3 a#3", C: "[c3,c4]@14 g3 c4", D: "~@4 [a4,c5,e5,a5]!2 ~@6 [a4,c5,e5,a5]!2 ~@2",
E: "~@4 [g4,b4,d5,g5]!2 ~@6 [g4,b4,d5,g5]!2 ~@2", F: "~@4 [d5,g5,c6]!2 ~@6 [d5,g5,c6]!2 ~@2",
G: "~@4 [d5,g5,c6]!2 ~@4 [d5,g5,c6]!6", // Csus2
H: "[~@4 [d5,g5]@2 [e5,g5] [d5,g5]@6 [d5,g5]@2 [d5,g5]@2 [e5,g5]!4 ~@2 [e5,g5] ~ [e5,g5] ~ [e5,g5] [e5,g5]@2 ~@2]/2", // G5 Em G5 Em
I: "~ d#4 [e4,a#4]@2 d#4 [e4,a#4]@2 d#4 [e4,a#4]@2 d#4 [e4,a#4]@2 d#4 [e4,a#4]@2", // Edim
J: "~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@3 [d#5,a#5]", // D#5
K: "~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@2 [d#5,a#5] ~@4", // D#5
L: "[~@4 [d5,g5]@2 [e5,g5] [d5,g5]@6 [d5,g5]@2 [d5,g5]@2 [e5,g5]!4 ~@2 [e5,g5] ~ [e5,g5] ~ [e5,g5] ~@4]/2", // G5 Em G5 Em
M: "~@2 [a2,c3,d#3] ~@2 [a2,c3,d#3] ~@2 [b2,d3,f3] ~@2 [b2,d3,f3] ~@2 [b2,d3,f3] ~", // Adim Bdim
N: "~@2 [d#3,a#3] ~@2 [d#3,a#3] ~@2 [d#3,a#3] ~@2 [d#3,a#3] ~@2 [d#3,a#3] ~", // D#5
O: "[c3,a#3,d#4]@3 [c3,a#3,d#4]@3 [c3,a#3,d#4]@2", P: "~@4 [d4,f4,a4,c5]!2 ~@6 [c4,e4,g4,c5]!2 ~@2",
Q: "[b3,d4,f4,a4]@3 [d4,g4,b4,e5]@3 [e4,g4,b4,d5]@2", R: "~@4 [a3,e4,a4,c5]!2 ~@6 [c4,e4,g4,c5]!2 ~@2",
S: "~@4 [f3,e4,a4,c5]!2 ~@6 [e3,g4,b4,d5]!2 ~@2", // Fmaj7 Em7
T: "[d4,f4,a4,d5]@2 [d4,f4,a4,d5]@2 [b3,f4,a4,d5]@2 [b3,f4,a4,d5]@2 ~@4 [e4,g4,b4,d5]!2 ~@2", // Dm Bm7b5 Em7
U: "~@4 [e4,g4,b4,d5]!2 ~@6 [d4,f#4,a4,d5]!2 ~@2", V: "~@4 [d4,f#4,a4,d5]!2 ~@6 [c4,e4,g4,c5]!2 ~@2",
W: "~@4 [c4,e4,g4,c5]!2 ~@6 [e4,g4,b4,d5]!2 ~@2", X: "~@4 [d4,f#4,a4,e5]!2 ~@6 [a3,e4,g4,c5]!2 ~@2",
Y: "~@4 [a3,e4,g4,c5]!2 ~@6 [g3,d4,g4,b4]!2 ~@2", Z: "~@4 [g3,d4,g4,b4]!2 ~@6 [f3,f4,a4,c5]!2 ~@2",
AA: "~@4 [f3,f4,a4,c5]!2 ~@6 [a#3,d4,f4,g#4,g5]!2 ~@2", AB: "~@4 [a#3,d4,f4,g#4,g5]!2 ~@6 [d4,f4,a4,c5]!2 ~@2",
AC: "~@4 [g3,g4,b4,d5]!2 ~@6 [a3,e4,a4,c5]!2 ~@2", AD: "~@4 [g3,d4,g4,b4]!2 ~@10", AE: "~@12 [c4,e4,g4,b4,d#5]!2 ~@2",
AF: "~@4 [c4,e4,g4,b4,d#5]!2 ~@6 [c4,e4,g4,b4,d#5]!2 ~@2", AG: "~@4 [c4,e4,g4,b4,d#5]!2 ~@6 [a4,c5,e5,a5]!2 ~@2",
AH: "~@4 [a4,c5,e5,a5]!2 ~@6 [g4,b4,d5,g5]!2 ~@2", AI: "~@4 [g4,b4,d5,g5]!2 ~@6 [d5,g5,c6]!2 ~@2",
AJ: "~@2 [d5,g5,c6]!6 ~@4 [a4,c5,e5,a5]!2 ~@2", // Csus2 Am
AK: "[~@2 [d5,g5,c6]!6 ~@4 [d5,g5]@2 [e5,g5] [d5,g5]@6 [d5,g5]@2 [d5,g5]@2 [e5,g5]!4 ~@2 [e5,g5]]/2", // Csus2 G5 Em G5 Em
AL: "~ [e5,g5] ~ [e5,g5] [e5,g5]@2 ~@10", AM: "~@10 [d#3,a#3] ~@2 [d#3,a#3] ~@2",
AN: "[d#3,a#3] ~@2 [d#3,a#3] ~@2 [d#3,a#3] ~@3 [d#3,a#3] ~@2 [d#3,a#3] ~@2", // D#5
AO: "[[d#3,a#3] ~@2 [d#3,a#3] ~@2 [d#3,a#3] ~@5 e4 d4@2 d4@2 c4@2 c4@2 c4@2 b3@2 c4@2 c4@2 b3@2 c4@5 ~@8 e4 d4@2 d4@2 c4@2 c4@2 c4@2 b3@2 c4@2 c4@2 b3@2 c4@5 ~@8 e4 d4@2 d4@2 c4@2 c4@2 c4@2 b3@2 c4@2 c4@2 b3@2 c4@5 ~@8 e4 d4@2 d4]/7", // D#5
AP: "[~ c4@2 c4@2 c4@2 b3@2 c4@2 c4@2 b3@2 c4@5 ~@12]/2",
})).s("gm_clavinet").gain(0.17)
// bass · synth bass 1 · "SYN BASS 1"
const bass_2 = note(`<
~@4 A B C D A B C D E A F G H I A B C D A B C D E A F G J@3 K L@2 A B C D A B C D E A F G M@3 K L@2 N O P Q R S T U V
W X Y Z AA AB AC AD AE L@2 AF AG AH AI AJ AK AH AI AJ AL AM AN AD AO AP@2 AQ AR L AS AT AU AT AV AT AU AT AW ~@8
>`.pickRestart({
A: "a1@2 ~@4 e2 a1!2 ~@5 a1@2", B: "g1@2 ~@3 d2 g1!2 ~@6 g1@2", C: "f1@2 ~@3 c2 f1!2 ~@6 f1@2",
// … 113 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.