0:00/0:00
// Downtown Train — Stewart Rod
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 113 bars on a 16-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.
// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
~@13 A B A B C D E F G H E I J K L M N O P Q R S R T U V W B X Y X Y E F G H E I J K L M N O P Q R S R T U V W B R S R
T U V W B Z AA AB AC AD AE AF AG AH R S R T U V W B R S R T U V W B AI AJ AK AL X AM X Y AN@4 ~
>`.pickRestart({
A: "eb1@15 ~", B: "f1@15 ~", C: "g1@15 ~", D: "a1@13 ~ a1 ~", E: "bb1@4 ~@2 bb1@9 ~", F: "bb1@2 ~ bb1@2 g1 f1 g1",
G: "bb1@2 ~ bb1@4 bb2", H: "bb1@5 ~ bb1@3 ~ g1@2 f1@2 g1@2", I: "bb1@5 ~ bb1@4 g1@2 f1@2 g1@2", J: "bb1@2 ~ bb1@4 ~",
K: "bb1@4 ~@2 bb1@3 ~ g1@2 f1@2 g1@2", L: "eb2@5 ~ eb2 ~ eb2@6 ~@2", M: "f2@5 ~ f2 ~ f2@6 ~@2",
N: "eb2@5 ~ eb2 ~ eb2@2 bb1@2 eb2@2 bb1@2", O: "f2@5 ~ f2 ~ f2@3 ~ f2@3 ~", P: "g1@5 ~ g1 ~ g1@2 g2@2 g1@2 g2@2",
Q: "a1@5 ~ a1@2 a2@2 a1 ~ a1@3 ~", R: "bb1@5 ~ bb1 ~ bb1@2 bb2@2 bb1@4", S: "eb2@4 ~@2 eb2 ~ eb2@2 eb1@2 eb2@4",
T: "eb2@4 ~@2 eb2 ~ eb2@4 d2@2 c2@2", U: "bb1@6 bb2 ~ bb1 ~ bb1@3 ~ bb1@2", V: "eb2@5 ~ eb2 ~ eb2@4 d2@4",
W: "c2@5 ~ c2 ~ c2@2 g1@2 c2@3 ~", X: "bb2@5 ~ bb2@7 ~ f2@2", Y: "bb2@5 ~ bb2@4 g2@2 f2@2 g2@2",
Z: "bb1@2 bb1 ~ bb1 ~ bb1 ~ f2@2 f2@2 f2 ~ f2@2", AA: "bb1 ~ bb1 ~ bb1 ~ bb1@2 f2 ~ f2 ~ f2 ~ f2@2",
AB: "bb1 ~ bb1 ~ bb1 ~ bb1@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~", AC: "f2@2 f2@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2",
AD: "bb1@2 bb1 ~ bb1 ~ bb1@2 f2 ~ f2@2 f2 ~ f2@2", AE: "bb1 ~ bb1 ~ bb1 ~ bb1@2 f2 ~ f2 ~ f2 ~ f2 ~",
AF: "bb1@2 ~ bb1@2 bb1@2 ~ eb2@2 ~ eb2@2 eb2 ~@2", AG: "f2@4 f1@2 f2 ~ f2@2 f1@2 f2@2 f1@2",
AH: "f2@4 f2 ~ f2@2 f3@2 f2@2 f3@2 f2 ~", AI: "bb2@5 ~ bb2@8 f2@2", AJ: "bb2@5 ~ bb2@4 f2@2 bb2@2 f2@2",
AK: "bb1@5 ~ bb2@7 ~ f2@2", AL: "bb2@5 ~ bb2@4 f2@2 g2@2 f2 ~", AM: "bb2@5 ~ bb2@4 f2@2 g2@2 f2@2", AN: "bb1/4",
})).s("gm_acoustic_bass").gain(0.62)
// chords · piano · "A.PIANO 1"
const piano = note(`<
A B C B D@2 E F G H I J K L M L N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL ~@4 Q R S T U V W X Y Z
AA AB AC AD AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AM@3 AN AO@2 AP AQ AR AE AF AG AH AI AJ AK AL AE AF AG AH
AI AJ AK AL AS@2 AT AU AV AW AX AU AY@4 ~
>`.pickRestart({
A: "~@3 c4, [bb2,f3,bb3,d4]", B: "[eb3,g3,bb3,eb4]", C: "bb2@2 ~ bb3, d4, bb3@3 ~, f3@5 f3@3, ~ bb2",
D: "[bb2,f3,bb3,d4]", E: "eb3@5 ~ g3@2, [bb3,eb4], g3@3 ~, ~@5 eb3@3", F: "d4@5 [a3,d4]@3, [bb2,f3,bb3]",
G: "eb3@2 ~ g3, eb4, g3@3 ~, bb3@5 bb3@3, ~ eb3", H: "[bb2,f3,bb3,d4]@3 [bb2,f3,bb3,d4]",
I: "g3@3 ~@3 g3@2, [eb3,eb4], bb3@5 bb3@3, ~@3 g3@3 ~@2, ~ c4", J: "[f3,bb3,d4]@12 [f3,bb3,d4]@3 ~, bb2@15 ~",
K: "[eb3,g3,bb3,eb4]@13 ~@3", L: "[eb2,g3,bb3,eb4]",
M: "f4@6 f5@2 bb4@3 [a4,a5]@3 [f4,f5]@2, [f2,a3,c4]@15 ~, ~@3 f4@4 ~, ~@8 bb5@7 ~", // A F
N: "f4@6 f5@2 [bb4,bb5]@3 ~@3 [f4,f5]@2, [f2,a3,c4], ~@6 f4@5 [a4,a5]@5", O: "[g2,g3,bb3,eb4]",
P: "[a2,a3,c4,f4]@7 ~", Q: "[bb3,d4]@3 ~@3 bb3@2, f3@5 f3@3, bb2!2, ~@3 d4@5, ~@3 bb3@3 ~@2",
R: "eb3 ~@5 eb4@2, eb2, eb4@5 bb3@3, bb3 g3, g3@3 eb3@5",
S: "f3@3 ~@3 [f3,bb3,d4]@2, [bb3,d4]@3 ~, bb2@5 bb2@3, ~@3 f3@3 ~@2", // Bb
T: "[g3,bb3,eb4]@3 ~@3 bb3@2, eb2, eb3@3 g3 eb3@4, ~@3 eb4@5, ~@3 bb3@2 g3@3", // Eb
U: "[f3,bb3,d4]@3 f3 ~@2 [a3,d4]@2, bb2!2, ~@3 bb3@5, ~@3 d4@3 ~@2, ~@5 f3@3", // Bb D5
V: "~@3 bb3, bb3@3 ~, eb4@5 eb4@3, g3@3 g3@5, ~ eb3 eb3@2",
W: "[f3,bb3,d4]@3 f3 ~ f3 [f3,bb3,d4]@2, bb2!2, ~@3 [bb3,d4]@3 ~@2", // Bb
X: "[g3,bb3,eb4]@3 ~@3 bb3@2, eb3!2, ~@3 eb4@5, ~@3 bb3@3 ~@2, ~@3 g3@2 g3@3", // Eb
Y: "eb3@3 ~@2 [bb3,eb4,g4]@3, [bb3,eb4,g4]@5 ~@3, g3!2, ~@3 eb3@5", // Eb
Z: "~@7 f5, [f3,a4]@11 a5 f4@4, f4 [g4,c5,bb5], c4@3 f5@2 c4@3, ~@3 a3@5", // F C7
AA: "eb3@3 ~@3 [d4,g4]@2, [eb4,g5], g4@5 bb3@3, bb3 g3, g3@3 eb3@5", // G5 Eb
AB: "f4@6 ~@5 a4 ~@2 f4@2, f3@3 a4, a4 [c4,bb4], c4@3 f4@2 c5@3, ~@3 a3@5", // C7
AC: "bb3@3 bb3 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2, [eb3,g3], [eb4,g4] ~", // Eb
AD: "~@10 f3@2 g3 ~@3, f2@13 ~@3, [a3,c4]@8 [a3,c4]@5 ~@3, f3@3 f3@2 ~@3, ~@4 c3@9 ~@3", // Am
AE: "bb2@3 ~@2 d4 [bb3,d4]@2, bb3@3 ~, d4@5 a3@3, f3!2, ~@3 bb2@5", // Bb
AF: "[bb3,eb4,g4]@6 [bb3,eb4,g4]@2 ~@5 [g4,g5]@3, g3@11 [bb4,bb5] bb3@4, eb3@4 [bb3,g4,g5] eb3@3, ~@3 [f4,f5]@5, ~ eb4", // Eb G Bb Eb F
AG: "bb2@3 ~@3 d4@2, d4@3 ~, bb3@5 bb3@3, f3!2, ~@3 bb2@5",
AH: "~@13 [g4,g5]@3, bb3@5 g3 bb3@2, g3@8 [g4,g5]@3 [bb4,bb5]@5, eb4@3 [eb3,f4,f5]@5, eb3 g4 eb4@2", // G Bb Ebsus2
AI: "f3@3 ~ d4!2 [bb3,d4]@2, bb2, [bb3,d4]@2 bb3 ~, ~@3 f3@5, ~@5 a3@3", // Bb
AJ: "[bb3,g4]@6 [bb3,g4]@2 g4@3 ~ g4@2 g4@2, [eb3,g3]@3 d4, eb4 [bb3,eb4,g5], ~@3 [f4,f5]@5, ~@11 [bb4,bb5]@5", // Eb F Bb
AK: "g3@3 ~@3 c4@2, [c3,c5,c6], c4@5 eb4@3, eb4 g4, g4@3 g3@5", AL: "[f2,f3,a3,c4]",
AM: "[[bb2,f3,bb3,d4]@2 ~@6 [f3,a3,c4]@4 f3@2 ~@2 [f3,bb3,d4]@4 [f3,bb3,d4]@2 [f3,a3,c4] ~ [f3,a3,c4]@4 f3@2 ~@2 [f3,bb3,d4]@4 [f3,bb3,d4]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4]@4, ~@2 [f3,bb3,d4]@2 [f3,bb3,d4]@3 f2@8 bb2@8 f2@8 bb2@9 ~@8, ~@3 bb2@5 ~@6 [f3,bb3]@2 ~@14 f3@2 ~@8 [eb3,g3]@8, ~@3 a3 ~@2 [a3,c4]@2 ~@6 [a3,c4]@2 ~@8]/3", // Bb F Bb F Bb Eb Bb Bb5 …
AN: "[f3,a3,c4]@3 ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [c3,f3,a3,c4]@4, f2, ~@3 c3@9 ~@4", // F
AO: "[[f3,bb3,d4]@4 [f3,bb3,d4]@3 ~ [f3,a3,c4]@4 f3@2 ~@2 [f3,bb3,d4]@4 [f3,bb3,d4]@3 ~ [f3,a3,c4]@4 [f3,a3,c4]@3 ~, bb2@7 f2@8 bb2@9 ~@8, ~@3 [a3,c4] ~@4, ~@14 [f3,bb3,d4]@2 ~@7 f2@8 ~]/2", // Bb F Bb F Am Bb
AP: "[bb2,f3,bb3]@2 ~ [bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4] ~@2 [bb3,eb4,g4]@2 ~ [eb3,g3,bb3,eb4,g4] ~ [eb3,g3,bb3,eb4,g4] ~@2, d4 ~@7 [eb3,g3] ~@7", // Bb5 Bb Eb
AQ: "[f3,a3,c4] ~ [f3,a3,c4]!3 [f2,f3,a3,c4]!3, f2@5 ~@3", // F
AR: "[f3,c4]@3 c4!2 [f3,c4] [f2,f3,a3,c4] ~, [f2,a3]@3 ~, ~@3 f3@2 ~@3, ~@4 g3@3 ~", // F5 F
AS: "f5 bb5 a5 bb5 f5 bb5 a5 bb5", AT: "~@3 bb5 ~@2 a5 bb5, f5@8 f5@7 ~, ~ bb5@2 ~@2 bb5@2 ~, ~ a5 ~@2",
AU: "~@2 a5 bb5 ~@3 bb5, f5@7 ~ f5@8, ~ bb5@2 ~@2 bb5@2 ~, ~@3 a5",
AV: "f5 ~ a5 f5 ~@3 bb5, ~@2 bb5@5 ~ bb5@6 ~@2, ~@5 f5@3, ~@3 a5",
AW: "f5 ~@6 bb5, ~ bb5@3 bb5@3 ~, ~@2 a5@3 a5@3, ~@3 f5@3 f5@2",
AX: "~@3 bb5 ~@3 bb5, f5!2, ~ bb5@2 ~@2 bb5@2 ~, ~ a5 ~ a5", AY: "[bb2,f3,bb3,d4]/4",
})).s("gm_piano").gain(0.56)
// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
~@19 A B C B D E D F G H I J K L M N O P Q R S T ~@4 A B C B D E D F G H I J K L M N O P Q R S T M N O P Q R S T U V@3
W@2 X Y@2 M N O P Q R S T M N O P Q R S T Z@3 AA AB AC@2 AD ~@5
>`.pickRestart({
A: "f4@3 ~@4 d4, bb2, bb3@3 bb3, d4@5 d4@2 ~, ~@3 f4@5", B: "~@3 eb4, g3, ~ f4@4 f4@3, ~ eb4@2 ~, ~@3 bb3@5",
C: "bb3@3 ~@4 bb3, d4@3 d4, f4@5 f4@3, bb2!2, ~@3 bb3@4 ~",
D: "[bb3,d4,f4]@3 ~@4 bb3, bb2!2, ~@3 f4@5, ~@3 d4@3 d4@2, ~@3 bb3@2 bb3@2 ~", // Bb
E: "~@3 bb3, g3, ~ f4@3 f4@4, ~@2 eb4@3 eb4@3, ~@3 bb3@3 ~@2",
F: "~@12 eb4@3 ~, g3@8 g3@7 ~, ~@2 f4@8 f4@5 ~, ~ eb4@2 ~, ~@6 bb3@9 ~",
G: "~@3 bb3, eb3, bb3@5 eb4@3, eb4 g4, g4@3 g3@5", H: "f3@3 ~@3 f3@2, [f2,c4], a3@5 a3@3, ~@3 f3@3 ~@2, ~ g3",
I: "~@3 eb4, ~ eb3@7, ~ g3@3, ~@3 bb3@5, ~@4 eb4 g4@3", J: "f2@3 ~@3 c4@2, c4@3 ~, a3@5 a3@3, f3!2, ~@3 f2@5",
K: "[bb3,eb4,g4]@3 ~@3 bb3@2, g3@5 g3@3, eb3!2, ~@3 [eb4,g4]@5, ~@3 bb3@3 ~@2", // Eb
L: "~@6 [a3,c4] ~, f2@7 ~, [a3,c4]@2 [a3,c4] ~, f3@3 f3@2 f3@2 ~, ~@2 c3@5 ~", // Am
M: "[f3,bb3,d4]@2 [f3,bb3,d4]!2 ~@3 bb2, bb2@5 bb2@2 ~, ~@2 [f3,bb3,d4]!2", // Bb
N: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4], ~ [g3,bb3,eb4]!2 ~, ~@3 eb3@2 eb3@3", // Eb
O: "[f3,bb3,d4]@4 [f3,bb3,d4]@2 [f3,bb3,d4]!2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2, bb2", // Bb
P: "[g3,bb3,eb4]@4 ~@8 [g3,bb3,eb4]@3 ~, eb3@6 eb3@4 eb3@5 ~, ~ [g3,bb3,eb4]!2 ~", // Eb
Q: "[f3,bb3,d4]@2 ~@2 [f3,bb3,d4] ~ bb2@2, bb2@3 bb2@3 ~@2, ~@2 [f3,bb3,d4]@2 ~ [f3,bb3,d4]@3", // Bb
R: "[g3,bb3,eb4] ~ [bb3,eb4]!2, eb3@3 eb3@5, ~ [g3,bb3,eb4] g3@2", // Eb Eb5 Eb
S: "[c4,eb4] ~ [c4,eb4]!2, [c3,eb3,g3]@3 [c3,eb3,g3]@5, ~ [c4,eb4] ~@2", T: "[f2,f3,a3,c4]@7 ~",
U: "f4@6 ~@2 [f4,a4]@6 ~ bb3, [bb3,d4]@7 [d4,f4,a4], ~@3 [c4,f4,a4] c4@4, ~@7 f3@9", // F Bb Dm F
V: "[f4@6 ~@2 f4@6 ~@2 [d4,f4]@8 [eb3,g3,bb3,eb4,g4]@7 ~ f4@6 ~@2 f4@2 f4@2 [f3,a3,c4,f4]@4, d4@7 f3@8 bb3@9 ~@7 [f3,a3,c4]@8 [f3,a3,c4]@5 ~@4, ~@3 [c4,f4,a4] [c4,a4]@4 ~@11 f4 ~@4, ~@7 [d4,f4] ~@8 a4@8]/3", // Dm Eb F Dm
W: "[f4@6 ~@2 f4@6 ~@2 [d4,f4]@6 [c4,f4,a4] ~ f4@6 ~ bb3, [bb3,d4]@7 f3@8 bb3@8 f3@9, ~@3 [c4,f4,a4] [c4,a4]@4 ~@4 [c4,a4]@4, ~@7 [d4,f4] ~@7 [d4,f4]]/2", // Dm F Bb F Dm
X: "[bb2,f3,bb3,d4]@3 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]@3 [eb3,g3]@2 ~ [eb3,g3]@2 [eb3,g3]@3", // Bb Eb
Y: "[[f2,f3] ~ [f2,f3]@2 [f2,f3]@2 [f2,f3]@2 [f2,f3]@2 [f2,f3]@2 [f2,f3]@2 [f2,f3,a3,c4]@2 [f2,f3,a3,c4]@4 [f2,f3,a3,c4]@4 [f2,f3,a3,c4]@4 [f2,f3,a3,c4] ~@3, c3@29 ~@3, a3@7 ~@9]/2", // F
Z: "[bb3 a3 ~@13 bb4@2 ~@2 f4@5, ~@2 bb3@9 c5@2 a4@4 g4@7, ~@3 c4@14 ~@7, ~@5 f4@12 ~@7, ~@7 bb4@2 d5@8 ~@7]/3",
AA: "~@3 [g5,bb5], ~@3 [f5,a5]@5", AB: "a5@13 ~@3", AC: "[~@5 d5@2 bb4@2 a4@2 f4@5, ~@3 eb5@4 ~@9]/2",
AD: "eb4@2 ~@2 c4@2 ~@6 a3@3 ~, ~@2 d4@4 bb3@9 ~",
})).s("gm_acoustic_guitar_steel").gain(0.35)
// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
A@3 B C@2 D E F E G H I@2 J K L K J ~@14 M@2 N@2 O@2 P Q R S T U ~ V W@4 X@2 Y Z AA Z AB AC M@2 N@2 O@2 P Q M@2 N@2
O@2 P Q AD@3 AE@4 AF ~ AG@6 AH AI AJ@6 AK Q AL@2 ~ AM ~ AN ~ AO AP@4 ~
>`.pickRestart({
A: "[[f3,d4]@15 ~ g3@15 ~ [f3,d4]@15 ~, bb3]/3", B: "[g3,eb4]@15 ~", C: "[f3@31 ~]/2", D: "~ g3@14 ~", E: "f3@15 ~",
F: "[g3,bb3,eb4]@15 ~", G: "g3@15 ~", H: "[f3,d4]@15 ~", I: "[[g3,eb4]@31 ~]/2", J: "[a3,c4,f4]@15 ~",
K: "[g3,bb3,eb4]", L: "[a3,c4,f4]", M: "[f5@24 g5@3 bb5@2 g5@3]/2", N: "[f5@23 g5@3 ~ bb5@2 g5@3]/2",
O: "[f5@21 ~ f5@2 g5@3 bb5@2 g5@2 ~]/2", P: "[c5,eb5,g5]@15 ~", Q: "[f4,f5]@15 ~, a5@3 ~",
R: "~@2 f5@3 d5@3, d4@15 ~", S: "~@9 d5@3 c5@2 d5@2, [g3,eb4]@15 ~", T: "~@6 bb4@3 f5@6 ~, [f3,d4]@15 ~",
U: "~@5 d5@4 c5@3 bb4@2 ~@2, [g3,bb3,eb4]@15 ~", V: "~@7 f6", W: "[bb5@61 f6@2 ~]/4", X: "[bb5@31 ~]/2", Y: "bb5",
Z: "c6", AA: "f6", AB: "g6", AC: "a6@15 ~", AD: "[[f4,f5]@5 [eb4,eb5]]/3", AE: "[f4@4 f6@3 [eb5,eb6], f5@7 ~]/4",
AF: "[f5,f6]@13 ~@3", // F
AG: "[f5@24 g5@3 ~@2 g5@3 f5@23 g5@3 ~ bb5@2 g5@3 ~@10 a6@4 ~@8 f5@2 g5@3 ~@2 g5@2 ~, bb6@73 ~@5 g6@14 f6@4, bb5@27 bb5@27 ~@10 f5@21 ~@6 bb5@3 ~@2]/6",
AH: "[c5,eb5,g5,g6]", AI: "[f5,f6], f4@7 ~, a5@3 ~",
AJ: "[f5@24 g5@3 bb5@2 g5@3 f5@23 g5@3 ~@3 g5@3 f5@21 ~ f5@2 g5@3 ~@2 g5@2 ~, bb6@23 a6, ~@32 bb5@27 bb5@27 ~@5 bb5@3 ~@2]/6",
AK: "[c5,eb5,g5,bb6]", AL: "[bb4@21 ~@11]/2", AM: "~@6 g5@5 ~@5", AN: "~@5 d5@3, ~@6 a6@7 ~@3",
AO: "~ d6@2 eb6@3 ~@4 c6@5 ~, ~@3 d6@2 ~@3, ~@7 bb5@8 ~", AP: "[[f4,d5]@25 ~@7]/4",
})).s("gm_string_ensemble_1").gain(0.18)
// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<A@2 ~ B C@2 D E ~ E D F G@2 ~@27 H@2 I@2 J@2 ~@35 K ~@18 L@7 M@4 ~>".pickRestart({
A: "[~@15 eb4@16 ~]/2", B: "bb3@7 ~", C: "[~@16 bb6@15 ~, [bb3,d4,bb5]@31 ~]/2", D: "[bb3,eb4]@15 ~",
E: "[bb3,d4]@15 ~", F: "bb3@15 ~", G: "[bb3@31 ~]/2", H: "[f3@15 eb5@11 ~@6, bb3@31 ~]/2",
I: "[bb3@15 eb5@6 ~@11, f5@3 ~@13]/2", J: "[bb5@15 ~]/2", K: "~@4 a6@9 ~@3",
L: "[~@5 d5@10 f5@22 ~@4 d5@6 ~ bb6@22 ~@10 bb4@16 g5@8 ~@8, ~@47 f5@27 ~@2 f6@22 ~@14]/7", M: "[bb5@25 ~@7]/4",
})).s("gm_string_ensemble_1").gain(0.11)
// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
A B C D E@2 ~@7 F G H G H G I J I K I K I J L M L M N O P Q P R P Q S T U V U W I J I K I K I J L M L M N O P Q P R P
Q S T P Q P R P Q S T X@2 Y@2 Z X AA AB@2 P Q P R P Q S T P Q P R P Q S T AC@8 AD@4 ~
>`.pickRestart({
A: "f5@12 bb4@3 ~", B: "bb4@6 c5@2 d5@3 c5@2 bb4@2 ~", C: "bb4", D: "~@2 g4@2 bb4@2 c5@2 d5@3 c5@3 bb4@2",
E: "[bb4@31 ~]/2", F: "[bb3,eb4,g4]", G: "[c4,f4,a4]@15 ~", H: "[bb3,eb4,g4]@15 ~", I: "[f3,bb3,d4]@15 ~",
J: "[g3,bb3,eb4]", K: "[g3,bb3,eb4]@15 ~", L: "[eb3,g3,bb3,eb4,g4]", M: "[f3,a3,c4]", N: "[eb3,g3,bb3,eb4,g4,eb5,g5]",
O: "[f3,c4,f4,a4,c5,f5,a5]@15 ~", P: "[f4,bb4,d5]", Q: "[g4,bb4,eb5]", R: "[g4,bb4,eb5]@15 ~", S: "[c4,eb4,g4]",
T: "f4@15 ~", U: "bb4@7 d5", V: "bb4@5 f4 g4 f4", W: "bb4@15 ~", X: "[d4,f4,bb4]@7 ~ [c4,f4,a4]@7 ~",
Y: "[[d4,f4,bb4]@7 ~ [bb3,eb4,g4]@7 ~ c4@14 ~@2, ~@8 [eb3,g3]@6 ~ [f3,a3]@14 ~@3]/2", // Bb Eb F
Z: "[d4,f4,bb4]@8 [c4,f4,a4]@7 ~", // Bb F
AA: "[f4,bb4,d5]@3 [f4,bb4,d5]@2 [f4,bb4,d5]@3 [bb3,eb4,g4]@2 ~ [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 ~, ~ eb3", // Bb Eb
AB: "[[f3,c4]@4 ~@20 a5@7 ~, [f4,a4], ~ c5@3, ~@16 f5@15 ~]/2", // F5 F
AC: "[[d4,f4]@15 ~ [eb4,g4]@15 ~ [d4,f4]@14 ~@2 [eb4,g4]@15 ~ [d4,f4]@14 ~@2 [eb4,g4]@15 ~ [d4,f4]@14 ~@2 [eb4,g4]@16, bb3@127 ~]/8", // Dm Eb Dm Eb Dm Eb Dm Eb
AD: "[[bb2,bb3,f4,bb4,d5]@25 ~@7]/4", // Bb
})).s("gm_drawbar_organ").gain(0.4)
// drums · kick
const kick = s("bd").struct(`<
~@19 A B A B A B A B@2 C B C B C D E D E D E@2 F A B A B A B A B A B A B@2 C B C B C D E D E D E@2 G D E D E D E D H
I@6 J I@2 D E D E D E D H D E D E D E@2 F ~@8 F ~@4
>`.pickRestart({
A: "x ~@2 x ~@4", B: "x ~@2 x ~@3 x", C: "x ~@2 x ~ x ~ x", D: "x ~@2 x!2 ~@3", E: "x ~@2 x!2 ~@2 x", F: "x",
G: "x ~@4 x ~@2", H: "x!2 ~ x!2 ~@2 x", I: "x!2 ~ x!3 ~ x", J: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.71)
// drums · rim
const rim = s("rim").struct("<~@19 [~ x ~ x]!7 [~ x ~@2] ~@18 [~ x ~ x]!7 [~ x ~@2] ~@60>").gain(0.64)
// drums · snare
const snare = s("sd").struct("<~@26 A B@13 ~@12 A B@13 C B@7 D B@6 E B F B@7 D B@7 ~@14>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~ x ~@9 x!2", D: "x ~ x ~@3 x ~@5 x!4", E: "~@5 x ~@2 x ~@2 x ~ x ~@2",
F: "~@4 x ~@3 x ~@3 x ~@2 x",
})).gain(0.71)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@66 A ~@7 B ~@6 C ~ D ~@7 B ~@21>".pickRestart({
A: "~@10 x ~ x!2 ~@2", B: "~ x ~@5 x ~@2 x ~@5", C: "x ~@2 x ~@12", D: "~@6 x!2 ~@2 x!2 ~ x ~@2",
})).gain(0.21)
// drums · low tom
const low_tom = s("lt").struct(`<
~@32 A ~@4 B@3 ~@4 B ~@13 A ~@4 B@3 C ~@4 B@2 ~ D A@6 ~ A E ~@4 B@2 ~ D ~@4 B@3 ~@14
>`.pickRestart({
A: "~ x ~ x", B: "~@3 x", C: "~@5 x ~@2", D: "~@5 x!3", E: "~@2 x ~@4 x",
})).gain(0.71)
// drums · hihat
const hihat = s("hh").struct("<~@19 [x!4]!21 [~ x ~ x] [x!4]!25 [~ x ~ x] [x!4]!32 [~ x ~ x]!9 ~@5>").gain(0.71)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@19 [~ x ~ x ~ x ~ x]!21 ~ [~ x ~ x ~ x ~ x]!25 ~ [~ x ~ x ~ x ~ x]!32 ~@14>")
.gain(0.21)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@32 A ~@4 B C B ~@4 C ~@13 A ~@4 B C B D ~@4 B C ~ D E F E F E F ~ F G ~@4 B C ~ D ~@4 B C B ~@14
>`.pickRestart({
A: "~ x ~@3 x ~@2", B: "~@5 x ~@2", C: "~@5 x ~ x", D: "~@3 x ~@4", E: "~@3 x ~@7 x ~@4", F: "~@3 x ~@6 x!2 ~@4",
G: "~@3 x ~@7 x!2 ~@3",
})).gain(0.71)
// drums · crash
// … 18 more lines
More by Rod Stewart
Maggie May1971 · D major · 130 bpmSailingB major · 130 bpmTwistin The Night Away (From "Innerspace")1987 · D major · 136 bpmIt Takes TwoB♭ major · 122 bpmDa Ya Think I'm SexyD minor · 114 bpmSome Guys Have All the LuckD major · 118 bpmTonight's the NightB major · 91 bpmAs Time Goes ByF major · 84 bpm
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.