0:00/0:00
// Jealous Guy — Roxy Music
// 68 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 21, 4/4 at bar 22) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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(`<
~@12 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF B AG AH@2 AI AJ AK I J K L M N O P Q R S T
U V W@3 ~
>`.pickRestart({
A: "~ g2", B: "f2 c2", C: "~@2 d2 ~ d2 ~ e2 ~ g2@8", D: "f2 a#2", E: "~@4 a2@4 g2@7 ~", F: "f#2@7 ~ e2@7 ~",
G: "d3@7 ~ c2@7 ~", H: "g1@7 ~@3 c2 ~ d2 ~ f#2 ~", I: "g2@8 e2@7 ~", J: "d2@7 ~ d2 ~ d2@4 ~ a1",
K: "d2@8 ~@2 d2 ~ d2@2 d#2 ~", L: "e2@7 ~ g2@3 ~ b2@3 ~", M: "e3@5 ~ e3 [g2,b2] e2@5 ~ e2 ~",
N: "d2@7 a1 d2 ~ d2@3 ~ d2 ~", O: "e2@7 ~ e2@4 d2@3 ~", P: "c2@5 ~ c2@2 c2 ~ c2@2 c2@2 d2 ~", Q: "g2 f2",
R: "c2@8 d2 ~ d2@3 e2 g2 e2", S: "g2@7 ~ f2@5 ~ f2@2", T: "a#1@11 ~ a1@4", U: "g1@7 ~ f#1@6 ~@2", V: "e1@8 d2@7 ~",
W: "c2@4 ~ c2 a1 ~ g1@6 ~@2", X: "c2 ~ c2 ~ d2 ~ f#2 ~ g2@8", Y: "e2@7 ~ d2@7 ~", Z: "d2 ~ d2@4 ~ a1 d2@8",
AA: "~@2 d2 ~ d2@2 d#2 ~ e2@7 ~", AB: "g2@3 ~ b2@3 ~ e3@5 ~ e3 [g2,b2]", AC: "e2@5 ~ e2 ~ d2@7 a1",
AD: "d2 ~ d2@3 ~ d2 ~ e2@7 ~", AE: "e2@4 d2@3 ~ c2@5 ~ c2@2", AF: "c2 ~ c2@2 c2@2 d2 ~ g2@8",
AG: "d2 ~ d2@3 e2 g2 e2 g2@7 ~", AH: "[f2@5 ~ f2@2 a#1@11 ~ a1@4 g1@7 ~]/2", AI: "f#1@3 ~ e1@4",
AJ: "d2@7 ~ c2@4 ~ c2 a1 ~", AK: "g1@6 ~@2 c2 ~ c2 ~ d2 ~ f#2 ~",
})).s("gm_acoustic_bass").gain(0.59)
// chords · piano · "A.PIANO 2"
const piano = note(`<
A B C D@2 E@2 F G H I J@2 K L M@2 N@2 O@2 P Q R S T U V W X Y Z AA@2 AB@2 AC@2 AD@3 AE@3 AF AG AH AI AJ@2 AK AL AM AN
R S AO U AP W X Y Z AQ AR AS@2 AT ~
>`.pickRestart({
A: "~@8 g4 b4 g4 b4 [d4,g4] b4 g4 b4, ~@8 g3@5 ~@3, ~@4 d5 ~ d5 ~", // G5
B: "[g4,e5] b4 g4 b4 [g4,e5] [g4,f#5] g5 ~ [d4,d5,f#5]@2 f#4 ~ [d4,d5,f#5]@2 ~@2, e3@3 ~ d3@3 ~, e4@3 ~ e4@2 ~@10", // C Gmaj7 D
C: "[e4,a4] ~ a4 f#4 ~ e5@2 ~ d5 ~ d5@2 d4@2 [a4,d5,f#5] [b3,c4,g5], d3@7 ~ d3@7 ~, d4 d5 ~@2 [d4,a4,f#5]@2 ~@2, ~ f#4@2 ~ a4@2 ~ f#4@8 ~", // A5 D Cmaj7 D
D: "[[d4,f#5,a5]@2 ~ [d5,f#5,b5] ~ [a4,d5,f#5,a5] ~@2 g5@2 e5@2 e4@2 ~@2 a4 b4 ~ b3 f#5 ~ b4 g4 d4 b4 ~@3 b4 g4 f#3, [c#4,a4,d5] ~ a4@2 d4@2 d#4@2 [e4,b4]@5 ~@2 b3@2 ~ g4@3 e5@2 ~ d5@2 ~@2 d5@2 ~@2, ~@7 g4@6 ~ g4@2 e3@6 b3@2 g3@7 ~, ~@16 e5@2 ~@2 e4@3 ~@4 d4@3 ~@2]/2", // D Bm D Dmaj7 E5
E: "[e4 b4 ~@3 b4@2 e4 [d5,f#5]@3 ~ [d5,f#5]@2 a4@2 [d5,f#5]@2 a4 [a3,b3] [c#4,a4,d5,f#5] [b4,d5,g5]@2 ~ [a4,d5,f#5]@5 ~ [a4,d5,f#5] [b4,d5,g5], e3@7 ~@25, e5@2 ~ e4@2 ~@3 d4@11 ~ d4@3 ~ d4@3 ~@5, ~@4 e5@2 ~@2 a4 ~@23]/2", // D Asus2 Dmaj7 G D G
F: "[d4,d5,f#5]@3 ~ b5 ~ a5@2 [b4,e5,g5]@2 ~@2 [b3,g4,b4,e5]@2 ~@2, a4 ~@3 d4@3 ~ e3@6 ~@2, ~@5 d5@2 ~@9", // D Em
G: "a4 ~ g4@3 ~ [g4,b4,e5] [g4,c5,e5] [c#5,e5]@2 ~@2 [c#5,e5]@3 ~, [e3,e5]@3 ~ e3@2 ~@2, ~ b4@4 ~@11, ~@2 e4 ~@5 g4 ~@3 g4 ~@3", // Em C C#m E
H: "[e3,c#5,e5]@2 [e4,g4] ~ [c#5,e5]@2 [e3,g4] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~@3, g4 ~@3 g4 ~@3 d3@7 ~, ~@6 a3 ~", // C#m Em C#m Em D
I: "[f#4,a4,d5]@3 ~ f#4 g4 f#4 g4 [b4,e5]@2 ~@2 [b4,e5]@2 ~@2, d3@3 ~ e3@2 ~@2, ~@4 [a4,d5]@3 ~ g4 ~@3 g4 ~@3", // D E5 D5
J: "[[b4,e5]@3 ~ g4 ~ b4 g4 [c4,c5,e5]@3 ~ [c4,g4,e5] ~ g4 [g4,c5,e5,g5] [g4,c5,e5]@3 [g5,c6,e6,g6] c4 ~ d3@2 [g3,g4,b4,d5]@4 [g4,b4,d5]@2 g3@2, e3@5 e5@2 ~ g4 ~@3 c5@2 ~@2 g5@2 ~@2 [g5,c6,e6,g6]@4 ~@8, g4 ~@3 [e4,f#5]@2 ~@2 c3@14 ~@10, ~@16 c4 ~@15]/2", // E5 C G C Esus2
K: "[f3,f4,a4,d5]@4 [f4,a4,d5]@2 f3@2 [e4,g4,d5]@3 ~ [e4,g4,d5] ~ c3 ~, ~@2 c3 ~", // Dm Em7
L: "[g4,c5,e5,g5] ~ c5 g4 ~@2 c4 g4 [g3,g4,b4,d5]@4 [g4,b4,d5]@2 g3@2, c3@5 [e5,g5]@2 ~@9, c4@2 [e5,g5]@2 c5@3 ~@9", // C G Em
M: "[[f3,a4,d5]@4 [f4,a4,d5]@2 f3 ~ [a#3,a#4,d5]@2 ~@4 a#4 ~@3 a#4 ~@3 a#4 ~ [g4,d5,g5]@3 ~ [b4,g5] a5 [b4,b5]@2, f4@2 ~@6 a#2@15 ~@9, ~@8 f4 ~@3 [a#3,c5,f5]@2 ~@2 [a#3,c5,f5]@2 ~@2 [a#3,c5,f5]@3 ~ [g3,b4] ~@5 g5 ~, ~@13 d5@2 ~@2 d5@2 ~@2 d5@2 ~@5 d5@3 ~]/2", // Dm A# G5 Em B A#sus2 G
N: "[[f#3,d5,g5]@4 [b4,d5,g5] a5 [b4,g5] ~ [e3,g5,e6]@4 ~ g5 ~@2 [e5,g5]@2 ~@2 [e5,g5] [d5,f5]@2 ~ g4 e5 g4 ~ [e4,g4] g4 ~ c4, f#4@2 ~@2 f#4@2 b5@2 [e4,e5,b5]@3 ~ [e5,b5]@2 b4@4 ~@6 c3@7 ~, ~@12 [c4,d5,g5] ~ [c4,c5] ~]/2", // Gmaj7 G Em Dm Em E5 Csus2 C
O: "[[d4,g4]@3 ~ g4 ~@3 a4 b4 g4 ~ d5 ~ b4 d5 [d4,g4,g5,b5]@3 ~ [d5,g5]@2 ~@2 a4 b4 g4 ~ [e4,b4,e5]@3 ~, g3@9 ~@7, b4@4 ~@6 g5@2 [d4,g4]@3 ~ [b4,d5] ~@3 [g4,b4] ~@3 [e4,e5]@3 ~@5, ~@11 b4@2 a5@2 ~@17]/2", // G5 G G5 E5 G5 Bm G E
P: "[d4,d5,f#5]@3 ~ [d5,f#5]@5 ~@3 d4 ~ d4 a4, d3, ~@4 [d4,f#4]@3 ~@3 d5@2 ~ e5@2 ~, ~@11 f#4@2 ~@3", // D
Q: "a4@2 d5@2 a4@2 f#5 [a3,b3,g5] [c4,c#4] ~@3 b5 ~ [d5,f#5,a5] ~, d4@3 ~ d4@3 ~, f#5@4 ~@4 [f#5,a5]@2 d5@3 ~@3, ~@9 a4@2 f#5@3 ~@2", // Em C#maj7 D F#m
R: "[e4,e5,g5]@3 ~ [b4,e5] ~ a4 b4 [e4,g4]@2 b4 e5 [g4,e5] g4 [c5,e5] [e4,g4], e3, g4 ~@5 e5@3 ~@3 [e4,b4]@2 ~@2", // Em E5 Em C Em E5
S: "[e4,c#5,e5]@3 ~ [e4,c#5,e5]@3 ~ [e4,c#5]@3 ~ [e4,c#5]@3 ~, e3@7 ~, g4 ~@3 g4 ~@3 e5@6 ~@2, ~@8 g4 ~@3 g4 ~@3", // C#m
T: "[a4,d5,f#5]@3 ~ [d5,f#5]@3 [a3,b3] [c4,c#4,a4,d5,f#5] [b4,d5,g5]@2 [a3,b3,c4] [c#4,b4,d5,g5] [a4,d5,f#5]@2 ~, d4@7 ~ d4@3 ~ d4@4, ~@4 a4 ~@11", // D Asus2 D7 G Am G D
U: "[e4,b4,e5,g5]@3 ~ [e4,b4,e5,g5]@3 ~ a4 b4 g4@2 [e4,b4,e5,g5]@2 g4 ~, e3@15 ~, g4 ~@3 g4 ~@3 [e4,e5,g5]@3 ~@5", // Em
V: "[c4,c5,e5]@3 ~ [c4,g4,c5,e5] ~@2 [c5,e5,g5] [c5,e5,g5]@2 ~ [g5,c6,e6,g6] [g5,c6,e6,g6]@3 ~, c3@7 ~, g4 ~@7 c4 ~@3 c4 ~@3", // C
W: "[g3,g4,b4,d5]@4 [g4,b4,d5]@2 g3 ~ [f3,f4,a4,d5]@4 [f4,a4,d5]@2 f3 ~", // G Dm
X: "[c4,e4,g4,d5]@3 ~ [c4,g4]@2 c3 ~ [c3,e4,g4] ~ e5 g4 c5 ~@2 g4, c3@4 [e4,d5]@4 ~@2 g5@2 ~ [e5,g5]@3, ~@7 c4", // C C5 C E7 Em
Y: "[g4,b4,d5]@3 ~ [g4,b4,d5]@2 g3@2 [f3,f4,a4,d5]@4 [f4,d5]@2 f3@2, g3@4 ~@8 a4 ~@3", // G Dm
Z: "[a#3,f4,a#4,d5,f5]@3 ~ [a#3,f4,a#4,d5,f5]@2 ~@2 [a#4,d5,a#5] f5 [a#4,d5,a#5] ~ [d5,a#5] ~ d5 ~, a#2 ~@2 a#4, ~@13 g5@2 ~", // A# Gm
AA: "[[g4,b4,d5,g5]@3 ~@2 a5 b5 d4 [f#4,d5,g5]@2 ~@2 d5 a5 [f#3,b5] e5 [e4,e5]@3 ~@2 g5 ~@2 [e5,g5]@2 ~@2 [e5,g5] [d5,f5]@2 ~, g3@3 ~ f#3@2 ~@2 [e3,b5,e6]@3 ~@5, ~@4 [g4,b4,d5,g5]@3 ~ b4 ~@3 [f#4,b4,g5]@2 ~ g5@4 ~ [e4,e5]@2 b4@4 ~@6]/2", // G Gmaj7 B5 E Em Dm E5 G …
AB: "[g4 e5 g4 ~ [e4,g4] g4 ~ c4 [d4,g4]@3 ~ g4 ~@3 a4 b4 g4 ~ d5 ~@2 d5 [g3,d4,g4,d5,g5,b5]@3 ~ [d5,g5]@2 ~@2, c3@7 ~ b4@4 ~@6 g5@2 [d4,g4]@2 b4@2 b4 ~@3 [g4,b4] ~@3, [c4,d5,g5] ~ [c4,c5] ~ g3@8 ~@4, ~@19 b4@2 a5@2 ~@9]/2", // Em G5 G G5 G Csus2 C
AC: "[a4 b4 g4 ~ [e4,b4,e5]@3 ~ [d4,d5,f#5]@3 ~ [d5,f#5]@5 ~@3 d4 ~ d4 a4 a4@2 d5@2 a4@2 f#5 [a3,b3,g5], [e4,e5]@3 ~@5 d3@16 ~@8, ~@12 d4@2 ~@5 f#4@2 ~@3 d4@6 ~@2, ~@12 f#4 ~@5 d5@2 ~ e5@2 ~ f#5@4 ~@4]/2", // E5 D Em E
AD: "[[c4,c#4] ~@3 b5 ~ [d5,f#5,a5] ~ [e4,e5,g5]@3 ~ [b4,e5] ~ a4 b4 [e4,g4]@2 b4 e5 [g4,e5] g4 [c5,e5] [e4,g4] [e4,c#5,e5]@3 ~ [e4,c#5,e5]@3 ~ [e4,c#5]@3 ~ [e4,c#5]@3 ~ [a4,d5,f#5]@3 ~ [d5,f#5]@3 [a3,b3], d4@3 ~ e3@8 e3@7 ~@5, [f#5,a5]@2 d5@3 ~@3 g4 ~@11 [e4,b4]@2 ~@2 g4 ~@3 g4 ~@3 g4 ~@3 g4 ~@3 d4@7 ~, ~ a4@2 f#5@3 ~@8 e5@3 ~@15 e5@6 ~@6 a4 ~@3]/3", // C#maj7 D Em E5 Em C Em C#m …
AE: "[[c4,c#4,a4,d5,f#5] [b4,d5,g5]@2 [a3,b3,c4] [c#4,b4,d5,g5] [a4,d5,f#5]@2 ~ [e4,b4,e5,g5]@3 ~ [e4,b4,e5,g5]@3 ~ a4 b4 g4@2 [e4,b4,e5,g5]@2 g4 ~ [c4,c5,e5]@3 ~ [c4,g4,c5,e5] ~@2 [c5,e5,g5] [c5,e5,g5]@2 ~ [g5,c6,e6,g6] [g5,c6,e6,g6]@3 ~ [g3,g4,b4,d5]@4 [g4,b4,d5]@2 g3 ~, d4@3 ~ d4@4 e3@15 ~ c3@14 ~@10, ~@8 g4 ~@3 g4 ~@3 [e4,e5,g5]@3 ~@5 g4 ~@7 c4 ~@3 c4 ~@11]/3", // D7 G Am G D Em C G …
AF: "[f3,f4,a4,d5]@4 [f4,a4,d5]@2 f3 ~ [c4,e4,g4,d5]@3 ~ [c4,g4]@2 c3 ~, ~@2 c3 [e4,d5]", // Dm C C5 E7
AG: "[c3,e4,g4] ~ e5 g4 c5 ~@2 g4 [g4,b4,d5]@3 ~ [g4,b4,d5]@2 g3@2, ~@2 g5@2 ~ [e5,g5]@3 ~@8, ~@3 c4 g3@2 ~@2", // C G Em
AH: "[f3,f4,a4,d5]@4 [f4,d5]@2 f3@2 [a#3,f4,a#4,d5,f5]@3 ~ [a#3,f4,a#4,d5,f5]@2 ~@2, ~@4 a4 ~@3 a#2@4 ~@4", // Dm A#
AI: "[a#4,d5,a#5] f5 [a#4,d5,a#5] ~ [d5,a#5] ~ d5 ~ [g4,b4,d5,g5]@3 ~@2 a5 b5 d4, ~@2 a#4@2 g3@3 ~, ~@5 g5@2 ~@5 [g4,b4,d5,g5]@3 ~", // A# Gm G
AJ: "[[f#4,d5,g5]@2 ~@2 d5 a5 [f#3,b5] ~ [e3,g5,e6]@4 ~ g5 ~@2 [e5,g5]@2 ~@2 [e5,g5] [d5,f5]@2 ~ g4 e5 g4 ~ [e4,g4] g4 ~ c4, f#3@2 ~@5 b4@2 ~@3 [c4,d5,g5] ~ [c4,c5] ~, b4 ~@3 [f#4,b4,g5]@2 ~@2 [e4,e5,b5]@3 ~ [e4,e5,b5]@3 ~@9 c3@7 ~]/2", // Gmaj7 B5 Em Dm Em Csus2 C Gmaj7 …
AK: "[g4,b4,g5]@3 ~ [g4,d5]@2 ~@2 g4@2 [b4,g5] d5 g5 d5 a5 [g4,d5], g3, ~ g5 ~@2, ~@4 b4 ~@7 g4@2 ~@2", // G G5 Em G5
AL: "[g3,d4,g4,d5,g5,b5]@3 ~ [d5,g5]@2 ~@2 a4 b4 g4 ~ [e4,b4,e5]@3 ~, b4 ~@3 [g4,b4] ~@3 [e4,e5]@3 ~@5", // G G5 E5 G E
AM: "[d4,d5,f#5]@3 ~ [d5,f#5]@5 ~@3 d4 ~ d4 a4, d3, ~@4 d4@2 ~@5 f#4@2 ~@3, ~@4 f#4 ~@5 d5@2 ~ e5@2 ~", // D
AN: "a4@2 d5@2 a4@2 f#5 g5 ~@4 d4@2 [d5,f#5,a5] ~, d4@6 ~@2 [d4,f#5,a5]@2 d5@2 b5 ~@3, f#5@4 ~@5 a4@2 f#5@3 ~@2", // D
AO: "[a4,d5,f#5]@3 ~ [d5,f#5]@3 ~ [a4,d5,f#5] [b4,d5,g5]@2 ~ [b4,d5,g5] [a4,d5,f#5]@2 ~, d4@7 ~ d4@3 ~ d4@3 ~, ~@4 a4 ~@11", // D G D
AP: "[c4,c5,e5]@3 ~ [c4,g4,c5,e5] ~@2 [c5,e5,g5] [c5,e5,g5]@3 [g5,c6,e6,g6] [g5,c6,e6,g6]@3 ~, c3@7 ~, g4 ~@7 c4 ~@3 c4 ~@3", // C
AQ: "[g4,b4,d5,g5]@3 ~@2 a5 b5 d4 [f#4,d5,g5]@2 ~@2 d5 a5 [f#3,b5] ~, g3@3 ~ f#3@2 ~@2, ~@4 [g4,b4,d5,g5]@3 ~ b4 ~@3 [f#4,b4,g5]@2 ~@2", // G Gmaj7 B5 G Gmaj7
AR: "[e3,g5,e6]@4 ~ g5 ~@2 [e5,g5]@2 ~@2 [e5,g5] [d5,f5]@2 ~, [e4,e5,b5]@3 ~ [e4,e5,b5]@2 b4@4 ~@6", // Em Dm E5
AS: "g4 e5 g4 ~ [e4,g4] g4 ~ c4 [g4,b4,g5]@3 ~ [g4,d5]@2 ~@2, c3@7 ~@5 g5@4, [c4,d5,g5] ~ [c4,c5] ~ g3@4, ~@12 b4 ~@3", // Em G G5 Csus2 C
AT: "g4 e5 g4 ~ [e4,g4] g4 ~ c4 [g3,g4,b4,g5]@8, c3@7 ~@9, [c4,d5,g5] ~ [c4,c5] ~@5", // Em G Csus2 C
})).s("gm_piano").gain(0.42).pan(0.7)
// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note(`<
A B C ~ D E F G H I J K ~@4 L M N O P Q ~ R S T U V ~ W ~ X Y ~ Z AA AB AC AD AE AF AE ~ AG ~ AH AI ~ AJ N AK P Q ~ R
S T U V ~ W ~ X Y ~ AL@2 AM ~
>`.pickRestart({
A: "~@4 d4 ~@3", B: "~@7 b3 ~@3 a4 ~@4", C: "~@4 d4 ~ d4 ~@8 a3", D: "~@10 g4 ~@5", E: "~@2 g4 ~@3 g4 ~@3 a4@3 ~@3",
F: "~@6 d4 ~", G: "~@10 e4 ~@3 e4 ~", H: "~@4 b3 ~@5 [e4,g4] ~@3 [e4,g4] ~", I: "~@10 d4 ~@3 d4@2",
J: "~@2 d4 ~ a3@2 d4 ~@3 g4 ~@3 e4@2, ~@14 g4 ~", K: "~@2 g4 ~@7 g4 ~@5",
L: "~@9 g3 b4 ~ g4 ~@3, ~@9 d4@6 ~, ~@10 g3@5 ~", M: "~@2 b4 ~ g4@3 f#3 ~@8", N: "~@14 e4 ~",
O: "~@5 a4 b4 g4 d4@3 ~@5, ~@2 d4 ~@5", P: "~@6 b4 ~@5 g4 ~ g4 ~", Q: "~@8 [d4,f#4]@3 ~ a4 ~@2 f#4",
R: "~@2 g4 ~ e4@3 ~@9, ~@4 g4 ~@11", S: "~@2 g4 ~@3 g4 ~@3 g4!2 ~@2 g4 ~", T: "~@6 a4 ~@9", U: "~@2 g4 ~@3 g4 ~@9",
V: "~@10 c4 ~@5", W: "~@12 c4 ~@3", X: "~@6 a#2 ~@9", Y: "~@10 b4 ~@5", Z: "~@6 e4 ~@6 a4 b4 g4, ~@6 d4 ~",
AA: "d4@3 ~@11 b4 ~", AB: "~@4 g4 ~ g4 ~@9", AC: "[d4,f#4]@3 ~ a4 ~@2 f#4 ~@8", AD: "~@10 g4 ~ e4@3 ~, ~@12 g4 ~@3",
AE: "~@10 g4 ~@3 g4 ~", AF: "~@2 g4!2 ~@2 g4 ~@7 a4 ~", AG: "~@2 c4 ~@13", AH: "~@4 c4 ~@11", AI: "~@14 a#2 ~",
AJ: "~@2 b4 ~@13", AK: "~@7 b4!2 ~@7", AL: "~@6 e4 ~@8 b4", AM: "~@6 e4 ~@9",
})).s("gm_piano").gain(0.24).pan(0.7)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
A@5 B@8 C@2 D@6 E@2 F@2 G H@2 I@2 J@2 K@4 L M N O@6 P@6 Q R@2 S@2 T Q U V@4 W@2 X@3 ~
>`.pickRestart({
A: "[~ d5 e5 [a4,d5,f#5]@4 [b4,e5,g5]@2 [g4,b4,d5], ~ [g4,b4]@2 ~@7]/5", // D Em G
B: "[e5 [a4,d5,f#5]@4 b4@2 c#5@2 [a4,d5,f#5]@2 b4@2 c5@2 [g4,b4], ~@5 [e5,g5]@4 ~@2 [g4,e5]@4 ~]/8", // D G Em C
C: "[[f4,a4] [e4,g4]@2 [g4,b4], c5@3 ~]/2", // F Em G
D: "[[a4,c5] [a#4,d5]@2 d4@2 ~@2 c5 d4@2 d5 e5, f4 g4@3, ~@3 b4@4 ~ b4@4, ~@5 e4@3 ~@4]/6", E: "[a4,d5,f#5]/2",
F: "[b4 c#5, [e5,g5]]/2", G: "[a4,d5,f#5]", H: "[b4 c5, [g4,e5]]/2", I: "[[g4,b4] [f4,a4] [e4,g4]@2, ~ c5@3]/2",
J: "[[g4,b4] [a4,c5] [a#4,d5]@2, ~ f4@3]/2", K: "[d4@4 ~@4 c5@2 [d4,b4]@4 ~ [d5,d6], g4@7 ~, b4 ~, ~@2 e4@3 ~@3]/4",
L: "[e5,e6] [g5,g6] [b4,b5]@2", M: "[a4,a5]@2 ~ [a4,a5]", N: "[b4,b5] [d5,d6] [f#4,f#5]@2",
O: "[[e4,e5]@24 [f#4,f#5]@16 [e4,e5]@28 ~ e5 g5 e6 g5@8 f5@7 ~ [e5,g5]@8, ~@9 [b5,d6]@2 ~]/6", // E F# E Em Bm
P: "[~@4 [c6,e6]@4 g5@7 ~@9 [a#5,d6]@16 g5@8 f#5@8 [g5,e6]@15 ~ [e4,c5]@8 [d4,b4]@16, ~@8 [b5,d6]@16 ~@16 b5@31 ~ g4@24, ~@2 f5@3 d6@2 ~@5]/6", // C A# C G Bm
Q: "[g4,b4]", R: "[a4@4 [a4,a5]@4 [b4,b5]@7 ~ [a4,a5]@14 ~@2, f#4@31 ~, ~@8 [a#4,a#5] ~@7 [a#4,a#5] ~@15]/2",
S: "[f#4@4 e4@4 f#5@6 f#5 f5 [c#5,e5]@16, g4, b4@7 ~ b4@24]/2", T: "[f#4,d5]",
U: "~@2 g4 c5 e5 ~ c5 e5 g5 c5 e5 g5 c6 ~ g5 c6, ~ e4@2 ~@2 g4@2 ~@6 e5@2 ~",
V: "[[g5,b5]@2 [f5,a5]@2 [e5,g5]@3 [f#5,a5] [g5,b5]@2 a5@2 a#5@4, d6, ~@5 f5@3]/4", W: "[g5 f#5 e5 d5, b5, d5 g5]/2",
X: "[c5,e5] [b4,d5], g5", // C Bm
})).s("gm_string_ensemble_2").gain(0.15).pan(0.3)
// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
~@20 A B C D E C F G H I J K L M N@2 O@8 P@2 Q@2 R@2 S A B C D E C F G H I J K L M T@3 ~
>`.pickRestart({
A: "g3@4 [g3,b3]@4 [e3,b3]@4 [e3,b3]@3 ~, [g2,d4,g4]@8 [e2,e4,g4]@7 ~", B: "[d3,d4,f#4] [d3,d4,f#4,a4]@3, d2",
C: "[d2,d3,a3,d4,f#4]@15 ~", D: "[e3,g4]@14 ~ c5, [e2,b3,e4], ~@7 [e3,g4,b4]", E: "[e2,e3,e4,g4,c#5]@7 ~",
F: "[e2,e3,b3,e4,g4]@15 ~", G: "[c2,c3,g3,c4,e4,g4]", H: "[g3,d4,g4,b4]@8 [f3,c4,f4,a4]@7 ~",
I: "[c4,e4,g4], c3@3 ~@5", J: "[g3,d4,g4,b4] [f3,f4,a4,c5]", K: "[a#3,d4,f4,a#4]@15 ~",
L: "[g3,d4,g4,b4] [f#3,d4,f#4,b4]", M: "e3 d3, [b3,e4,g4,b4]",
N: "[[c3,c4,e4,g4]@2 [g2,b3,d4,g4]@4 g3 [g3,b3], ~@3 [g2,d4,g4]]/2", // C G G5
O: "[[e3,b3]@4 [e3,b3]@3 ~ [d3,d4,f#4]@4 [d3,d4,f#4,a4]@12 [d2,d3,a3,d4,f#4]@15 ~ [e3,g4]@14 ~ c5 [e2,e3,e4,g4,c#5]@14 ~@2 [d2,d3,a3,d4,f#4]@15 ~ [e2,e3,b3,e4,g4]@15 ~ [c2,c3,g3,c4,e4,g4]@16 [g3,d4,g4,b4]@8, [e2,e4,g4]@7 ~ d2@16 ~@16 [e2,b3,e4]@16 ~@72, ~@27 [e3,g4,b4] ~@36]/8", // E5 D Em C#dim D Em C G …
P: "[[f3,c4,f4,a4]@7 ~ [c4,e4,g4]@16 [g3,d4,g4,b4]@8, ~@4 c3@3 ~@9]/2", // F C G
Q: "[[f3,f4,a4,c5]@8 [a#3,d4,f4,a#4]@15 ~ [g3,d4,g4,b4]@8]/2", // F A# G
R: "[[f#3,d4,f#4,b4] e3 d3 [c3,c4,e4,g4], ~ [b3,e4,g4,b4]@2 ~]/2", S: "[g2,b3,d4,g4]",
T: "[c3,c4,e4,g4] [g2,b3,d4,g4]", // C G
})).s("gm_epiano1").gain(0.42).pan(0.3)
// other · whistle
const whistle = note("<~@35 A B@2 C@6 ~@25>".pickRestart({
A: "~@12 d7@2 e7 g7", B: "[~ e7@3 d7 ~ e7 ~ b6@15 ~@5 a6@2 b6 d7]/2",
C: "[~ b6@3 a6@2 b6 ~ f#6@11 ~@9 e6@2 f#6 g6@3 a6 b6@2 ~ d7 d7@11 ~ d7 ~@8 e6@2 f#6 g6@3 a6 b6@3 e7 ~ e7@13 ~@11]/6",
})).s("gm_whistle").gain(0.35).pan(0.8)
// drums · kick
const kick = s("bd").struct(`<
~@20 A B A@2 B@3 A C D C E A F G C A H A@2 H@3 I@2 J I K A L M A B A@2 B@3 A C D C E A F G@2 N ~
>`.pickRestart({
A: "x!2", B: "x ~@3 x ~@2 x", C: "x ~@6 x!2 ~@7", D: "x ~@6 x!2 ~ x ~@3 x ~", E: "x ~@6 x!2 ~@4 x!2 ~",
F: "x ~@7 x ~@4 x!2 ~", G: "x!2 ~@6 x ~@6 x", H: "x ~@2 x!2 ~@3", I: "x ~@7 x ~@6 x", J: "x ~ x ~@3 x ~ x ~@6 x",
K: "x ~@4 x!2 ~ x ~@7", L: "x ~@4 x!2 ~ x!2 ~@6", M: "x ~@6 x!2 ~@6 x", N: "x!2 ~@6 x ~@7",
})).gain(0.6)
// drums · snare
const snare = s("sd").struct("<~@20 A@7 B A@14 C D A@14 E A F A G A@4 H ~>".pickRestart({
A: "~ x ~ x", B: "~@4 x ~@2 x!2 ~@7", C: "~@4 x ~@7 x ~@2 x", D: "x ~@2 x", E: "~@4 x ~ x!4 ~ x ~@4",
F: "~@2 x ~@2 x!3", G: "~ x ~@2", H: "~@4 x!3 ~@9",
})).gain(0.6)
// drums · low tom
const low_tom = s("lt").struct("<~@27 A ~@15 B ~@14 C ~ D ~ E ~@6>".pickRestart({
A: "~@9 x!2 ~@2 x!3", B: "~ x!2 ~@2 x!3 ~@8", C: "~@12 x!4", D: "~@3 x", E: "~@13 x ~ x",
})).gain(0.54)
// drums · pedal hat
const pedal_hat = s("hh").struct(`<
~@20 A B A B A B A B A B A B A B A@3 C A C A C A C A C A C A C A@2 B A B A B A B A B A B A B A@2 D ~
>`.pickRestart({
A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x ~ x!3 ~ x ~", D: "x!3 ~",
})).gain(0.48)
// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
~@20 A B A B A B A B A B A B A B A@3 C A C A C A C A C A C A C A@2 B A B A B A B A B A B A B A@2 D ~
>`.pickRestart({
A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~ x ~@3 x ~ x", D: "~ x ~ x ~@4",
})).gain(0.24)
// drums · mid tom
const mid_tom = s("mt").struct("<~@27 A ~@15 B ~@16 C ~ D ~@6>".pickRestart({
A: "~@11 x!2 ~@3", B: "~@3 x!2 ~@11", C: "~@11 x ~@3 x", D: "~@10 x!3 ~@3",
})).gain(0.54)
// drums · crash
const crash = s("cr").struct("<~@28 A ~@14 B ~@5 B ~ A ~@7 A ~ A ~ A ~ B ~ B ~>".pickRestart({
A: "x", B: "~ x",
})).gain(0.54)
stack(
bass, piano, piano_soft, string_ensemble_2, epiano1, whistle, kick, snare, low_tom, pedal_hat, pedal_hat_soft,
mid_tom, crash
)
More by Roxy Music
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.