0:00/0:00
// Young Turks — Rod Stewart
// 137 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Metal Pad" pad metallic (copy of ch 1 "Jazz Gt." electric guitar jazz)
// note: Full arrangement: all 168 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · synth strings 1 · "Syn. Strings1"
const synth_strings_1 = note(`<
A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 G H I J K L@2 M G N O P Q R@2 S G T O U V W@2 X Y Z O AA Q AB@2 AC AD AE AF AG AH@2 AF
AI AJ@3 AK AL@2 AM@2 AN@2 AO@2 AP@2 AQ AR AS U AT AU@2 AV AW AX AS AY AZ BA@2 AC AD AE BB BC AH@2 BB BD BE@3 AK BF@2
BG@2 AN@2 BH@2 AP@2 AQ AR AS U AT AU@2 AV AW AX AS BI AZ BA@2 AC AD AE BB BC AH@2 BB BD AQ AR AS U AT AU@2 AV AW AX AS
BJ AZ BK@2 BL AD AE BB BD BM@2 BB BN AD AE BB BD BM@2 BB BN AD AE BB BD
>`.pickRestart({
A: "[[bb3,d4,f4]@3 [d4,f4,bb4]]/2", B: "[bb3,eb4,g4]/2", C: "[c4@3 [f4,bb4]@9 [f4,bb4]@4]/2",
D: "[[bb3,eb4]@3 [bb3,eb4]@13]/2", E: "[d4@3 [f4,bb4]@8 ~ [f4,bb4]@4]/2", F: "[[bb3,eb4]@3 [bb3,eb4,g4]@12 ~]/2",
G: "f4!3 eb4 f4@2 f4 eb4", H: "f4 eb4 f4 eb4 f4 eb4 f4 g4", I: "eb4 c4 bb3 [g3,c4]@5",
J: "[g3,bb3]@3 g3@2 [c4,eb4,g4] [c4,eb4,g4]@2", K: "f4!2 ~@2 f4!2 ~ f4", L: "[f4 eb4 f4@2 f4 eb4 c4 eb4@3 ~@6]/2",
M: "[g3,bb3]@3 [g3,c4]@5", N: "f4@2 f4 eb4 f4!3 g4", O: "eb4 c4 bb3 c4@3 ~@2",
P: "[g3,c4,f4]!2 [g3,bb3,eb4]@2 c4@2 ~ eb4, ~ g3, ~@3 c4", Q: "f4@2 f4 eb4 f4@2 f4 eb4",
R: "[f4!3 eb4 f4!2 g4 bb4@2 g4 f4@2 ~@4]/2", S: "[d4,f4]@3 d4", T: "f4 eb4 f4!2 f4@2 f4 g4",
U: "[g3,bb3]@2 [g3,c4] ~@2 g4 f4 eb4, ~@3 [g3,bb3]@5", V: "f4@2 f4 eb4 f4@2 f4@2",
W: "[f4!3 eb4 g4 f4 eb4 c4@3 ~@6]/2", X: "bb3@2 bb3 c4@2 c4 g4@2, g3@3 g3@5", Y: "f4!2 eb4 f4@4 eb4",
Z: "f4!2 eb4 f4@3 f4 g4, ~@3 [ab3,c4]@5", AA: "g3@2 [g3,c4] eb4@2 c4 g4 f4, bb3@3 [g3,bb3]@5",
AB: "[f4@2 f4@2 f4 g4@2 bb4@2 g4 f4@2 ~@4]/2", AC: "[f4,bb4] [d4,f4]", AD: "[eb4,g4,bb4]@3 [eb4,g4]",
AE: "[eb4,g4,bb4]@3 [eb4,g4,c5]", AF: "[bb3,d4]@3 [d4,g4,bb4]@5", AG: "[bb3,d4]@3 [f3,bb3]@5",
AH: "[[eb4,g4,bb4]@6 [eb4,g4] [eb4,g4,bb4]@6 [eb4,g4,c5]@3]/2", AI: "[bb3,d4]@3 [g3,bb3]@5",
AJ: "[eb4!3 eb4@2 f4@2 eb4@3 f4@2 eb4 f4@2 ~@2 bb4!2 g4@3 f4 g4, ~@15 gb4@3 ~ [bb3,eb4]@5]/3", // Eb5
AK: "[eb4,g4,c5]@2 [eb4,g4,c5] [eb4,g4,bb4]@5", // Cm Eb
AL: "[eb4!3 [ab3,c4,eb4]@2 [ab3,c4,f4]@2 eb4@2 gb4 ~@3 eb4 b3@2, [ab3,c4]@3 ~@4 [gb3,bb3]@8 ~]/2", // Ab Fm Ab Gb
AM: "[f4 g4 bb4 c5@2 d5@6 ~ c5 d5 c5 bb4, [bb3,d4]@3 [f4,bb4]@9 f4@4, ~@12 bb4@3 ~]/2", // Bb Bb5
AN: "[f4 g4 bb4 [bb3,eb4,g4]@13, [bb3,eb4]@3 ~@13]/2", // Eb Eb5
AO: "[f4 g4 bb4 c5@2 d5@6 ~ c5 d5 c5 bb4, d4@3 [f4,bb4]@8 ~ f4@4, ~@12 bb4@3 ~]/2", // Bb5
AP: "[f4 g4 bb4 g4@11 g4 f4, [bb3,eb4]@3 [bb3,eb4]@13]/2", AQ: "f4!3 eb4 f4@2 f4 eb4, [ab3,c4]!2",
AR: "f4 eb4 f4!2 f4@2 f4 g4, [ab3,c4]!2", AS: "eb4 c4 bb3 g3@5, g3@3 ~@5, bb3@2 ~ c4@3 ~@2",
AT: "f4@2 f4 eb4 f4@2 f4@2, [ab3,c4]!2", AU: "[f4!3 eb4 g4 f4 eb4 [g3,bb3]@9, [ab3,c4]@4 [ab3,c4]@3 c4@3 ~@6]/2",
AV: "[g3,bb3]@3 ~@2 c4 g4@2, ~@3 g3@5", AW: "f4!2 eb4 [ab3,c4]@3 ~ eb4, [ab3,c4]@3 f4@4 ~, ~@3 [ab3,c4]",
AX: "f4!2 eb4 f4@3 f4 g4, [ab3,c4]@3 [ab3,c4]@5", AY: "g3@2 g3 ~@2 c4 g4 f4, bb3@3 [g3,bb3]@5",
AZ: "f4@2 f4 eb4 f4@2 f4 eb4, [ab3,c4]!2", // Ab
BA: "[f4@2 f4@2 f4 g4@2 bb4@2 g4 f4@6, [ab3,c4]@4 [ab3,c4]@3 d4@9, ~@7 f4@3 ~@6]/2", // Ab
BB: "g4 f4 eb4 [d4,g4,bb4]@5, [bb3,d4]@3 ~@5", BC: "g4 f4 eb4 [f3,bb3]@5, [bb3,d4]@3 ~@5",
BD: "g4 f4 eb4 [g3,bb3]@5, [bb3,d4]@3 ~@5", // Gm Bb
BE: "[eb4!3 [ab3,c4,eb4]@2 [ab3,c4,f4]@2 eb4@3 f4@2 eb4 [ab3,db4,f4]@2 gb4@2 bb4!2 g4@3 f4 g4, [ab3,c4]@3 ~@4 [gb3,b3]@5 [gb3,b3]@2 ~ [bb3,eb4]@4 [bb3,eb4]@5]/3", // Ab Fm Db Ab B5 Eb5
BF: "[eb4!3 [ab3,c4,eb4]@2 [ab3,c4,f4]@2 eb4@2 gb4 ~@3 eb4 b3@2, [ab3,c4]@3 ~@4 [gb3,b3]@7 ~@2]/2", // Ab Fm Ab B5
BG: "[f4 g4 bb4 c5@2 d5@7 c5 d5 c5 bb4, [bb3,d4]@3 [f4,bb4]@9 f4@4, ~@12 bb4@3 ~]/2", // Bb Bb5
BH: "[f4 g4 bb4 c5@2 d5@7 c5 d5 c5 bb4, d4@3 [f4,bb4]@9 f4@4, ~@12 bb4@3 ~]/2", // Bb5
BI: "g3@2 [g3,c4] ~@2 c4 g4 f4, bb3@3 [g3,bb3]@5", // C5 Gm
BJ: "eb4 c4 [g3,c4,f4] eb4@2 c4 g4 f4, bb3@3 ~@5, g3@2 ~ [g3,bb3]@5", // Csus4 Gm
BK: "[f4@2 f4@2 f4 g4@2 bb4@2 g4 ~@4 f5 d5, [ab3,c4]@4 [ab3,c4]@3 d4@9, ~@7 f4@3 f4@6]/2", // Ab
BL: "eb5 d5 d5@2 c5 bb4 g4@2, [f4,bb4] [d4,f4]", // Bb5 Dm
BM: "[[eb4,g4,bb4]@6 [eb4,g4] [eb4,g4,bb4]@5 [eb4,g4,bb4] [eb4,g4]@3, ~@13 c5@2 ~]/2", // Eb
BN: "g4 f4 eb4 [g3,bb3]@3 [bb3,d4,g4]@2, [bb3,d4]@3 ~@5", // Gm Bb
})).s("gm_synth_strings_1").gain(0.38).pan(0.2)
// bass · fretless bass
const bass = note(`<
A B A B A B A B C D A B E D A F G H I J G H K I G H I L G H M N G H I O P H K Q G H R S G H M T U I V W X Q V@2 H Y Z
U H AA E D A B E D A AB G H I O P H K Q G H R S G H M T U I V W X Q V@2 H Y Z U H AA E D A B E D A AB G H I O P H K Q
G H R S G H M T U I V W X Q V@2 G H I O P H K Q G H R S G H M T U I V@2 X Q V@2 U I V@2 X Q V@2 U I V@2
>`.pickRestart({
A: "bb1@2 ~ bb1!3 ~ bb1", B: "bb1!2 ~ bb1!3 ~ bb1", C: "c2@2 ~ bb1!3 ~ bb1", D: "bb1!2 ~ bb1 bb1@2 ~ bb1",
E: "bb1@2 ~ bb1 bb1@2 ~ bb1", F: "bb1!5 ~ bb1 ~", G: "f2@3 f2 f2@4", H: "ab2@3 ab2 ab2@4", I: "c2@3 c2!3 ~ c2",
J: "c2@2 ~ c2 c2@2 ~ c2", K: "c2!2 ~ c2!3 ~ c2", L: "c2@3 c2 c2@2 ~@2", M: "bb2@3 bb2!3 ~ bb2",
N: "bb2!2 ~ bb2 bb2@4", O: "c2@3 c2 c2@4", P: "f2@3 f2 f2@3 f2", Q: "c2@3 c2 c2@3 c2", R: "c2@3 c2!4 ~",
S: "c2@3 c2@4 ~", T: "bb2@3 bb2 bb2@4", U: "eb2@3 eb2!3 ~ eb2", V: "g2@4 g2!2 ~ g2", W: "g2@3 bb2@3 bb2!2",
X: "eb2@3 eb2!3 ~@2", Y: "b1@3 b1 b1@2 db2@2", Z: "eb2@3 eb2 eb2@4", AA: "b1@3 b1 b1@3 b1", AB: "bb1!2 ~ bb1!3 ~@2",
})).s("gm_fretless_bass").gain(0.35)
// chords · synth strings 1 · "Syn. Strings1"
const synth_strings_1_2 = note(`<
~@8 A@2 B@2 C@2 D@2 E@2 F G E H@2 I E@2 J K E L@2 M E@2 J N E H@2 O P Q J R E S@2 T U V W X Y@2 W Z AA@3 AB AC@2 AD@2
AE@2 AF@2 AG@2 E@2 J N E H@2 O AH AI J R E S@2 T U V W X Y@2 W Z AJ@3 AB AK@2 AL@2 AE@2 AM@2 AG@2 E@2 J N E H@2 O P AI
AN R E S@2 T U V W X Y@2 W Z E@2 AN N E H@2 O AH AI AN AO AP AQ@2 T U V W Z AR@2 W AS U V W Z AT@2 ~@6
>`.pickRestart({
A: "[f4 g4 bb4 c5@2 d5@7 c5 d5 c5 bb4]/2", B: "[f4 g4 bb4 g4@13]/2",
C: "[f4 g4 bb4 c5@2 d5@6 ~ c5 d5 c5 bb4, ~@3 f4, ~@12 bb4@3 ~]/2",
D: "[f4 g4 bb4 [bb3,eb4,g4]@12 ~, [bb3,eb4]@3 ~@13]/2", E: "[ab3,c4]!2", F: "[g3,bb3]@3 [g3,c4]@5",
G: "eb4 c4 bb3 [g3,c4]@2 ~@3, g3@3 ~@5, bb3 ~@3", H: "[[ab3,c4]@4 [ab3,c4]@3 [g3,bb3]@9]/2",
I: "eb4 c4 bb3 [g3,c4]@5, g3@3 ~@5, bb3 ~@3", J: "[g3,bb3]@3 g3@5, ~@3 c4@3 ~@2",
K: "[g3,c4,f4]!2 [g3,bb3,eb4]@2 [g3,c4]@4", L: "[[ab3,c4]@4 [ab3,c4]@3 [d4,f4]@9]/2",
M: "bb4@2 ab4@2 g4@2 f4 bb3, [d4,f4]@3 d4", N: "eb4 c4 [g3,c4,f4] [g3,bb3]@5, [g3,bb3]@2 ~ eb4@2 ~@3",
O: "eb4 c4 bb3 g3@5, g3@3 ~@5, bb3@2 ~ c4@2 ~@3", P: "[ab3,c4]@3 [ab3,c4]@3 [ab3,c4]@2, ~@3 f4@4 ~",
Q: "[ab3,c4]@3 [ab3,c4]@5, ~@3 f4@3 ~@2", R: "eb4 c4 [g3,c4,f4] [g3,bb3]@5, bb3@3 eb4@2 ~@3, g3 ~@3",
S: "[[ab3,c4]@4 [ab3,c4]@3 ~@7 f5 d5, ~@7 [d4,f4]@9]/2", T: "eb5 d5 d5@2 c5 bb4 g4@2, [f4,bb4] [d4,f4]",
U: "[eb4,g4,bb4]@3 [eb4,g4]", V: "[eb4,g4,bb4]@3 [eb4,g4,c5]", W: "g4 f4 eb4 [d4,g4,bb4]@5, [bb3,d4]@3 ~@5",
X: "g4 f4 eb4 [f3,bb3]@5, [bb3,d4]@3 ~@5", Y: "[[eb4,g4,bb4]@6 [eb4,g4] [eb4,g4,bb4]@6 [eb4,g4,c5]@3]/2",
Z: "g4 f4 eb4 [g3,bb3]@5, [bb3,d4]@3 ~@5", // Gm Bb
AA: "[[ab3,c4]@3 [ab3,c4]@2 [ab3,c4]@2 [gb3,b3]@5 [gb3,b3,eb4] [ab3,db4,f4]@2 [bb3,eb4]@4 [bb3,eb4]@5]/3", // Ab B5 B Db Eb5
AB: "[eb4,g4,c5]@2 [eb4,g4,c5] [eb4,g4,bb4]@5", AC: "[[ab3,c4]@3 [ab3,c4,eb4]@2 [ab3,c4]@2 [gb3,bb3]@8 ~]/2",
AD: "[f4 g4 bb4 c5@2 d5@6 ~ c5 d5 c5 bb4, [bb3,d4]@3 [f4,bb4]@9 f4@4, ~@12 bb4@3 ~]/2", // Bb Bb5
AE: "[f4 g4 bb4 [bb3,eb4,g4]@13, [bb3,eb4]@3 ~@13]/2", // Eb Eb5
AF: "[f4 g4 bb4 c5@2 d5@6 ~ c5 d5 c5 bb4, d4@3 [f4,bb4]@8 ~ f4@4, ~@12 bb4@3 ~]/2", // Bb5
AG: "[f4 g4 bb4 [bb3,eb4]@13, [bb3,eb4]@3 g4@11 ~@2]/2", AH: "[ab3,c4]@3 [ab3,c4]@3 [ab3,c4]@2",
AI: "[ab3,c4]@3 [ab3,c4]@5", // Ab
AJ: "[[ab3,c4]@3 [ab3,c4,eb4]@2 [ab3,c4,f4]@2 [gb3,b3]@5 eb4 [ab3,db4,f4]@2 [bb3,eb4]@4 g4@3 f4 g4, ~@12 [gb3,b3]@2 ~@5 [bb3,eb4]@5]/3", // Ab Fm B5 Db Eb5 B5 Eb5
AK: "[[ab3,c4]@3 [ab3,c4,eb4]@2 [ab3,c4,f4]@2 eb4@2 gb4 ~@6, ~@7 [gb3,b3]@7 ~@2]/2", // Ab Fm B5
AL: "[f4 g4 bb4 c5@2 d5@7 c5 d5 c5 bb4, [bb3,d4]@3 [f4,bb4]@9 f4@4, ~@12 bb4@3 ~]/2", // Bb Bb5
AM: "[f4 g4 bb4 c5@2 d5@7 c5 d5 c5 bb4, d4@3 [f4,bb4]@9 f4@4, ~@12 bb4@3 ~]/2", AN: "[g3,bb3]@3 g3@5",
AO: "eb4 c4 [g3,c4,f4] eb4@2 c4 g4 f4, bb3@3 ~@5, g3@2 ~ [g3,bb3]@5", AP: "f4@2 f4 eb4 f4@2 f4 eb4, [ab3,c4]!2",
AQ: "[f4@2 f4@2 f4 g4@2 bb4@2 g4 ~@4 f5 d5, [ab3,c4]@4 [ab3,c4]@3 d4@9, ~@7 f4@3 f4@6]/2", // Ab
AR: "[[eb4,g4,bb4]@6 [eb4,g4] [eb4,g4,bb4]@5 [eb4,g4,bb4] [eb4,g4]@3, ~@13 c5@2 ~]/2", // Eb
AS: "g4 f4 eb4 [g3,bb3]@3 [bb3,d4,g4]@2, [bb3,d4]@3 ~@5", // Gm Bb
AT: "[[eb4,g4,bb4]@6 [eb4,g4] [eb4,g4,bb4]@5 [eb4,g4,bb4] ~@3]/2", // Eb
})).s("gm_synth_strings_1").gain(0.56).pan(0.9)
// chords · synth strings 1 · "Syn. Strings1" · soft notes · Eb Gm Bb Gm Bb Eb Cm Gm …
const synth_strings_1_soft = note(`<
~@161
[~@5 [eb4,g4]@3, ~@5 c5@2 ~]
[g4 f4 eb4 [d4,g4,bb4]@5, [bb3,d4]@3 ~@5]
[g4 f4 eb4 [g3,bb3]@3 [bb3,d4,g4]@2, [bb3,d4]@3 ~@5]
[[eb4,g4,bb4]@3 [eb4,g4]]
[[eb4,g4,bb4]@3 [eb4,g4,c5]]
[g4 f4 eb4 [d4,g4,bb4]@5, [bb3,d4]@3 ~@5]
[g4 f4 eb4 [g3,bb3]@5, [bb3,d4]@3 ~@5]
>`).s("gm_synth_strings_1").gain(0.24).pan(0.9)
// drums · kick
const kick = s("bd").struct(`<
A@15 B A@15 B C A@14 D A@21 E@2 A@9 F A@3 F G A@21 G A@4 H A@10 E A F A I A@3 E A@9 F A F A@3 I A F A J A@3 K A L ~@10
>`.pickRestart({
A: "x!2 ~ x!3 ~ x", B: "x ~ x ~@3 x ~@3 x!2 ~@4", C: "x!2 ~ x ~ x ~@2", D: "x!2 ~@2 x!2 ~ x", E: "~@4 x!2 ~@2",
F: "x ~ x ~@3 x ~ x ~ x ~@3 x!2", G: "x!2 ~ x ~ x ~ x", H: "x ~ x ~@3 x!3 ~ x ~@3 x ~", I: "~ x!2 ~ x!2 ~@2",
J: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4", K: "x!2 ~ x ~@4", L: "x!2 ~ x!3 ~@2",
})).gain(0.29)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@47 A ~@109 B C D C@3 D C@3 E>".pickRestart({
A: "~@3 x ~@4", B: "~@14 x!2", C: "x!2 ~ x!3 ~ x", D: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4", E: "x!2 ~ x ~@4",
})).gain(0.13)
// drums · snare
const snare = s("sd").struct(`<
A@15 B A@7 C A@7 B D A@14 E A@21 F@2 A@14 G A@21 G A@15 F A@3 H A@3 F A@7 C A@7 H A@3 I A@3 J A ~@11
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~@2 x ~ x ~", C: "~@2 x ~@3 x!2", D: "~@4 x ~@3 x ~@3 x ~ x!2", E: "~@2 x ~ x!4",
F: "x!3 ~ x ~ x ~@5 x ~@3", G: "~ x!3", H: "x ~@5 x ~@7 x!2", I: "x!2 ~@14", J: "~@4 x ~@3 x!5 ~ x ~",
})).gain(0.29)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@47 A ~@11 B ~@33 B ~@47 B ~ B ~@5 B ~@7 C D E D@3 E D@3 F>".pickRestart({
A: "~@3 x ~@4", B: "~@7 x ~@8", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~ x ~ x", E: "x!2 ~@14", F: "~@4 x ~@3 x!5 ~ x ~",
})).gain(0.13)
// drums · low tom
const low_tom = s("lt").struct("<~@23 A ~@23 B ~@79 A ~@11 A ~@7 A ~@3 C ~@7 D ~@8>".pickRestart({
A: "~@3 x", B: "~@2 x!6", C: "~@12 x!4", D: "~@12 x!2 ~@2",
})).gain(0.25)
// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@159 [~@14 x!2] ~@3 [~@12 x!4] ~@4>").gain(0.13)
// drums · hihat
const hihat = s("hh").struct(`<
A@2 B A B A@10 C A@2 B A B A@2 D A@7 C@2 E A@2 B@2 A B A@3 B A@13 F A@11 G@2 A@6 B A B A@2 B@2 A C A@21 C A@15 G A@3 H
A@3 G I A B@2 A B A D A@5 B A H E A@3 E A@6 J ~@8
>`.pickRestart({
A: "x!8", B: "x!3 ~ x!4", C: "x!3 ~ x ~ x ~", D: "x!7 ~", E: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~",
F: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", G: "x ~ x ~ x ~ x!2", H: "x!4", I: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", J: "x",
})).gain(0.25)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A@47 ~@22 A@17 ~@21 A ~@15 A@28 ~@8 B C@8>".pickRestart({
A: "~ x ~ x ~ x ~ x", B: "~ x!7", C: "x!8",
})).gain(0.16)
// drums · mid tom
const mid_tom = s("mt").struct("<~@127 A ~@19 A ~@3 B ~@7 B ~@3 B ~@4>".pickRestart({
A: "~@3 x ~@2 x ~", B: "~@8 x!2 ~@6",
})).gain(0.25)
// drums · open hat
const open_hat = s("oh").struct(`<
A@2 B A B A@2 C A C A@2 C A@2 D A C B A B C A@6 C@2 A D A@2 C@2 B@2 A B A C A B A C A@4 C B@3 A B@2 C B A@5 C B@2 A B
C@2 A C@2 A@2 C B C B A@2 B@2 A@3 B C@2 A B@2 A@7 B C A@7 B@2 A C A C@2 B A@5 B C A@5 C@3 A@2 B@2 A B A@4 C A@2 B A@4
C A@2 C B A@4 E ~@8
>`.pickRestart({
A: "x!4", B: "x ~ x!3 ~ x ~", C: "x ~@3 x ~@3 x ~@3 x ~@2 x", D: "x ~ x ~ x ~ x!2", E: "x",
})).gain(0.25)
// drums · open hat · soft notes
const open_hat_soft = s("oh").struct(`<
~@159
[~ x!3]
[x!4]!2
[x ~@3 x ~@3 x ~@3 x ~@2 x]
[x!4]!2
[x ~@3 x ~@3 x ~@3 x ~@2 x]!2
[x!4]
>`).gain(0.13)
// drums · high tom
const high_tom = s("ht").struct("<~@127 A ~@19 A ~@3 B ~@7 B ~@3 B ~@4>".pickRestart({
A: "x", B: "~@4 x!2 ~@10",
})).gain(0.25)
// drums · ride
// … 15 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.