0:00/0:00
// Against All Odds — Collins Phil
// 60 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 50 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
A B C D E F G H C D E I G H J K L M J K N O@2 P Q R S T@5 U V@3 U W@3 X Y@2 Z AA AB AC AD@2 ~
>`.pickRestart({
A: "~@5 d#4@3 f#3 ~@3 [c#3,f#3,a#3]@4, ~ f#3@4 ~@3 [f#2,a#3]@4 ~@4, ~@2 g#3@4 ~@3 f#4@7, ~@3 e4@4 ~ c#4@2 c#4@6", // F#
B: "~@3 e4@2 d#4@2 ~ [f#2,f#3,a#3]@4 [f#2,c#3]@4, f#2@7 ~@9, ~ f#3@4 ~@7 [f#3,a#3] ~@3, ~@2 g#3@3 ~@2 c#4@9", // F# F#5 F#
C: "[g#3,b3,d#4]!2 [a#3,c#4,f4]!2, g#2 a#2", // G#m A#m
D: "[f#3,b3,d#4]@4 [f#3,b3,d#4]@4 [g#3,c#4,e4]@4 e4@2 e4 f#4, b2@7 ~ c#3@8, ~@3 [g#3,c#4]", // B C#m C#5
E: "g#4@3 b4@2 g#4@2 e4 a#4@3 c#5@2 a#4@2 f#4, [e2,b3] [e2,c#4], e4@6 ~@2 f#4@5 ~@3", // E5 C#m
F: "[a#3,d#4]@4 [a#3,d#4,f#4]@4 [g#3,b3,d#4]@4 d#4@2 e4 f#4, d#3@8 g#2@7 ~, ~@3 b3", // D#5 D#m G#m
G: "[c#4,e4,g#4] [c#4,g#4] [b3,e4,b4]!2, c#3!2", // C#m C#5 E5
H: "[f#3,b3,c#4] ~ [f#2,f#3,a#3,c#4]!2, f#2 ~, ~ f#3 ~@2, ~@5 b3@2 f#4@9, ~@3 c#4 ~@4", // F#sus4 F#
I: "[a#3,d#4]@4 ~@2 c#5@2 d#4 ~ a#4 b4 [d#4,g#4]@2 f#4 g#4, d#3@8 g#2@7 ~, ~ [a#3,d#4,f#4] [g#3,b3] b3, ~@4 b4 ~@3, ~@9 d#4@2 ~@5", // D#5 G#5 D#m G#m
J: "[b3,d#4,f#4]!4, b2@15 ~", K: "[g#3,c#4,f4]!4, b2@15 ~", L: "[g#3,b3,d#4]!2 [b3,e4,g#4]!2, g#2@7 ~ e2@7 ~",
M: "[g#3,c#4,e4]@4 [g#3,c#4,e4]@4 f#3 ~ b3 c#4 [f#2,f#3,a#3,c#4]@4, c#3@3 ~ [f#2,c#4]@2 ~@2, ~@4 b3 ~@3, ~@9 f#3@2 ~@5", // C#m F# F#5
N: "g#3 ~@2 g#3 ~@3 b3, g#2@7 ~ e2@8, [b3,d#4]@4 [b3,d#4]@4 ~ b3@2 b3@2 e4@2 ~, ~@2 g#3@4 ~@4 e4@2 g#4@3 ~", // B
O: "[~@6 c#4 g#3 [f#3,b3,c#4]@4 [f#3,b3,c#4]@4 ~@8 a#3@3 ~@5, c#3@8 f#2@19 ~@5, [c#4,e4]@2 [c#4,e4]@3 e4@2 ~@10 f#3@2 f#3@9 ~@4, ~ g#3@2 g#3@4 ~@9 [b3,c#4]@2 b3@3 c#4 b3 c#4@4 ~@5, ~@4 g#4@4 ~@12 f#4@7 ~@5]/2", // F#sus4 C#m Bsus2
P: "~@6 g#4 b3, ~@4 b3@3 ~, ~@10 g#3@5 ~",
Q: "c#4@4 a#4@3 ~ [b3,d#4]@2 ~@4 d#4@2, f4@7 ~@4 d#4@2 f#4@2 ~, a#3@2 ~@8 b3@2 b3@3 ~", // B
R: "g#3 ~ g#4 c#4 b3 ~ [e4,g#4] b3, [c#4,e4]@3 ~ [e4,g#4]@2 ~@2, ~@2 g#3@5 ~@3 b3@4 ~@2", // E C#m E
S: "[c#4,f#4]@2 ~@4 f#4 c#4 a#3@2 ~@4 d#4@2, a#4@5 a#4@2 ~@3 a#3@5 ~, ~@2 c#4@2 c#4@3 ~ d#4@5 f#4@2 ~, ~@3 f#4@3 ~@2 f#4@4 a#4@3 ~", // F#5
T: "[g#3@2 ~@4 g#3@2 c#4@2 ~@4 c#4 ~@2 e4@2 ~ c#4@2 ~@6 c#4@2 ~@2 a#3@6 ~@10 b3 ~ d#4@2 [d#4,f#4]@4 ~@2 c#4@2 f4@8 f4@4 ~@2 b3@2 ~ b3 ~@2, [b3,d#4]@4 d#4@4 ~@2 c#4@4 ~ e4@2 ~@10 f#4@9 ~@6 d#4@4 d#4@4 ~@26 d#4@4, ~@2 g#3@3 b3@3 g#3@15 ~ f#3@8 ~@8 b2@16 b2@16 g#2@7 ~, ~@3 g#4@5 g#4@4 g#4@4 b4@3 b4@4 ~@21 b4@10 ~@26]/5", // D#m B
U: "~@3 b3 ~@2 g#4@2, b3 ~ c#3@2, ~ g#4@3 ~@4",
V: "[~@4 f#4@4 ~@8 b3 ~ d#4@2 [d#4,f#4]@4 ~@2 c#4@2 f4@8 f4@4 ~@2 b3@2 ~ b3 ~@2, ~@8 b2@16 b2@16 g#2@7 ~, ~@5 d#4@2 d#4@2 ~@13 d#4@2, ~@6 b4@5 ~@13]/3", // D#m
W: "[~@4 f#4@4 ~@2 d#4@4 ~@5 f#3@2 d#4@2 ~@3 c#4@2 f4@3 c#4@3 ~@2 f4@4 ~@2 b3@3 ~@3, ~ b2@2 b2@2 g#2, ~@9 d#4 ~@14]/3",
X: "~ e4 g#4@2 ~@3 c#4, e3 c#3, ~@9 e4@2 ~@5, ~@5 g#4@3",
Y: "[~@4 b3 ~@3 a#3@3 ~@5, f#3@7 ~@3 b3@4 ~@18, ~@4 f#4@7 c#4@2 ~@19, ~@6 f#4@5 ~@5]/2",
Z: "~@5 d#4@3 f#3 ~@3 [c#3,f#3,a#3]@4, f#2@2 [f#2,a#3] ~, ~ f#3@4 ~@11, ~@2 g#3@4 ~@3 f#4@7, ~@3 e4@4 ~ c#4@2 c#4@6", // F#
AA: "~@3 e4@2 d#4@2 ~ [f#2,f#3,a#3]@4 [f#2,c#3,f#3,a#3]@4, f#2@7 ~@9, ~ f#3@4 ~@11, ~@2 g#3@3 ~@2 c#4@9", // F#
AB: "~@3 e4@2 d#4@3 ~@2 [c#4,f#4]@5 ~, f#2@9 [b2,f#3,b3]@5 ~@2, ~ f#3@7 ~@8, ~@2 g#3@3 ~@11", // F#5 B5
AC: "~ f#4@6 ~ e4@8, [a#2,g#3,c#4]@5 ~@2 [e2,g#3,b3]@7 ~@2", // A#m7 E
AD: "[~ [c#4,f#4]@31, [f#2,c#3]@27 ~@5, ~ [f#3,a#3]@29 ~@2]/2", // F#5 F#
})).s("gm_epiano2").gain(0.2).pan(0.4)
// chords · epiano2 · "E.PIANO 2" · soft notes
const epiano2_soft = note("<A ~@4 B C ~@4 B C ~@10 D E F ~ G H I J@2 K L J@2 K M@2 N@4 ~@7>".pickRestart({
A: "f#2 ~", B: "~@12 g#3 ~@3", C: "~ e4 ~@2", D: "~@8 d#4@5 d#4@3, ~@4 g#3 ~@3", E: "~@2 a#3 ~@3 c#4@2 f#4@5 ~@3",
F: "~@5 e4@3 ~@8", G: "~@13 e4@2 ~", H: "~@6 e4 c#4 ~@2 c#4@2 ~@2 c#4@2, ~@8 c#3@3 ~@5, ~@9 b3@4 b3@2 ~",
I: "~@13 f#4@3, ~@11 b3@5", J: "[~@6 b3@2 ~ g#3@2 g#3@2 c#4 g#3 c#4@2 g#3 c#4 ~@3 c#4@2 ~ g#3@2 g#3@3 g#3 g#2]/2",
K: "~ e4@2 ~ b3@2 ~ e4@2 ~@5 c#4@2, ~@3 e4@4 ~@3 c#4@3 e4@2 ~, ~@11 g#3@4 ~",
L: "~@3 b3@2 c#4 b3 ~@6 f#4@3, f#3 ~@3, ~ b3@2 ~@8 b3@5, ~@2 c#4@3 ~@11",
M: "[~@3 b3@2 c#4 b3 ~@2 b3@2 ~@5 d#4@2 ~@2 b3@2 f#4@2 ~@3 g#3@2 c#4 g#3 ~, f#3@2 ~@5 d#4 ~@8, ~ b3@2 ~@8 b3@2 f#4@2 f#4@2 ~@15, ~@2 c#4@3 ~@7 b4@3 ~@17]/2",
N: "[~@2 c#4 g#3@2 c#4 g#3 ~@6 b3 g#3 b3@2 ~@2 b3@2 e4 b3 e4@2 ~@4 e4@2 ~@4 b3@2 c#4 ~ f#3 ~@7 f#3@4 ~@13, ~ g#3@2 ~@8 g#3@3 ~@14 c#4@2 ~ g#3@2 b3@2 ~@3 b3@2 ~ f#3@5 b3@2 ~@16, ~@12 d#4@4 ~@11 e4@2 ~@3 b2@2 c#4@3 ~@8 c#4@4 ~@15]/4",
})).s("gm_epiano2").gain(0.11).pan(0.4)
// bass · fretless bass · "FRETLESS"
const bass = note(`<
A B C D E F G H I J K L M N O@2 P Q O R S T U@2 V W X Y Z AA AB AC AD AE AF AG AD AH AI AJ AK AL AM B AN AO AP AQ@3
>`.pickRestart({
A: "c#2@7 g#2 f#2@8", B: "c#2 f#2", C: "g#2@3 g#2 a#2@3 a#2", D: "b2@6 b2@2 c#3@5 ~@3", E: "e3!2",
F: "d#3@3 ~ g#2@3 ~", G: "c#3@6 g#2 c#3 c#3@4 g#2@4", H: "f#2@3 f#2@3 c#2 ~ f#1@8", I: "g#2@3 g#2 a#2@3 ~",
J: "b2@6 b2@2 c#3@6 c#3 ~", K: "e3@7 b2 e3@6 f#3 e3", L: "d#3@3 ~ g#2@2 a#2 b2", M: "c#3@6 g#2@2 c#3@4 g#2@3 ~",
N: "f#2@3 f#2@2 f#2 c#2@2 f#1@5 d#2 f#2 c#2", O: "f#1@3 f#1 f#1@2 f#1@2", P: "g#2@6 g#2 f#2 e2@5 ~ d#2 ~",
Q: "c#2@6 g#1@2 f#1@2 d#2 c#2 f#2@2 d#2 c#2", R: "f#1@6 f#1@2 f#1@4 f#1 ~ g#3 d#3", S: "g#2@5 ~ g#2 f#2 e2@6 d#2@2",
T: "c#2@6 g#1@2 f#1@6 c#3 [d3,d#3,e3]",
U: "[f#3@3 f#3 c#3 ~ c#3 [d3,d#3] [e3,f3] ~@14 f#2 g#2@6 g#2@2, f3 ~@7 f#3@14 ~@10]/2", V: "a#2@3 a#2 b2@3 b2",
W: "c#3@6 ~@2 e3@7 b2", X: "e3@6 f#3 ~ d#3@6 b2 a#2", Y: "g#2@4 a#2@2 b2 ~ c#3@6 g#2@2", Z: "c3@2 g#2@2 f#2@3 c#2",
AA: "f#2@3 d#3 f3@2 d#3 c#3 b2@2 f#2@4 f#2@2", AB: "f#2@2 ~ f#2 f#2@2 ~@2 f#2@2 f#2@4 f#2@2",
AC: "f#2@2 f#2!2 ~@2 f#2!2 g#2@5 ~ g#2 f#2", AD: "e2@6 d#2@2 c#2@6 g#2 ~",
AE: "f#2@3 c#3 d3 f#3 d#3 ~ b2@2 f#2@4 ~@2", AF: "f#2@2 f#1@2 f#2@3 f#2", AG: "f#2@2 ~@2 f#2@2 f#2!2 g#2@5 ~ g#2 f#2",
AH: "f#2!7 [c#2,d#2] f#2@6 f#2@2", AI: "f#2@3 ~ f#2@3 f#2", AJ: "f#2@6 f#2 d#2 g#2@5 ~ g#2 f#2",
AK: "e2@5 ~ e2 d#2 c#2@6 g#2@2", AL: "f#2@6 c#2@2 f#2@3 ~ c3@2 c#3@2", AM: "f#3@15 ~", AN: "c#2@8 f#2@7 f#2",
AO: "c#2@8 b2@7 ~", AP: "a#2@7 ~ e2@8", AQ: "[[f#1,f#2]@19 ~@5]/3",
})).s("gm_fretless_bass").gain(0.57)
// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note("<~@3 A ~ B ~@2 C D ~ E ~@13 F G ~ H ~ I J ~ K ~ L ~@2 M ~@11>".pickRestart({
A: "~@14 c#3 d#3", B: "~@3 d#3 ~@3 d#3", C: "~@7 a#2", D: "~@8 c3 ~@6 d#3", E: "~@7 a#2 ~@8", F: "~@6 c#3 d#3 ~@8",
G: "~@7 e3 ~@8", H: "~@4 b2 ~@11", I: "~@2 f#2 ~@3 f#2!2 ~@8", J: "~@2 f#2 ~@5", K: "~@7 c#3 ~@6 f#2@2",
L: "~@2 f#2!2 ~@12", M: "~@3 f#2 ~@4",
})).s("gm_fretless_bass").gain(0.34)
// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@2 A B C D E F A G@2 H I@2 J K L@2 J M N O@3 P Q R S@6 T@7 U V@2 W@2 X Y Z@2 ~>".pickRestart({
A: "[f#3,b3,d#4] [g#3,c#4,f4]", B: "[b3,d#4,f#4] [g#3,c#4,e4]", C: "[g#3,b3,e4] [a#3,c#4,f#4]",
D: "[a#3,d#4,f#4] [f#3,b3,d#4]", E: "[g#3,b3,e4]", F: "b3 a#3, [f#3,c#4]",
G: "[[d#4,f#4] [g#3,e4] [g#3,e4] [a#3,c#4,f#4], b3@3 ~]/2", H: "[a#3,d#4,f#4] [g#3,b3,d#4]",
I: "[[g#3,e4]@2 ~ a#3, b3@3 ~, ~ [f#3,c#4]]/2", J: "[f#3,b3,d#4]", K: "[f3,g#3,c#4]",
L: "[[f#3,d#4]@2 [g#3,e4]@2 [g#3,e4]@2 ~ a#3, b3@7 ~, ~@3 [f#3,c#4]]/2", M: "[g#3,c#4,f4]",
N: "[g#3,b3,d#4] [g#3,b3,e4]", O: "[[g#3,b3,e4] b3@2 a#3@2 [f#3,b3,d#4], ~ [f#3,c#4]@4 ~]/3",
P: "[g#3,c#4,f4] [b3,d#4,f#4]", Q: "[g#3,c#4,e4] [g#3,b3,e4]", R: "[a#3,c#4,f#4] [a#3,d#4,f#4]",
S: "[[f#3,b3,d#4] [g#3,b3,e4]@2 b3 a#3 [f#3,b3,d#4]@2 [f3,g#3,c#4]@2 [f#3,d#4] [g#3,e4]!2, ~@3 [f#3,c#4]@2 ~@4 b3@3]/6", // B E B C# D#m C#m F#5
T: "[~ a#3 [f#3,b3,d#4]@4 [f3,g#3,c#4]@4 [f#3,d#4]@2 [g#3,e4]@2 [g#3,e4]@2 ~ a#3 [f#3,b3,d#4]@4 [g#3,c#4,f4]@4 [g#3,b3,d#4]@2, [f#3,c#4]@2 ~@8 b3@7 ~@11, ~@8 [f#3,c#4] ~@5]/7", // B C# D#m C#m B C# G#m F#5
U: "[g#3,b3,e4]!2", V: "[b3 a#3, [f#3,c#4]]/2", W: "g#3 a#3", X: "g#3 [f#3,b3,c#4]",
Y: "g#3@3 ~ f#3@4 [e3,g#3,b3]@8, [a#2,c#4]@7 ~@9", Z: "[~ [f#2,f#3,a#3,c#4]@31]/2",
})).s("gm_pad_warm").gain(0.42)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@8 A B C D E F G H I J K L M@4 N O P Q R@5 S@4 T@4 U@2 ~@7>".pickRestart({
A: "~@7 f4, ~@5 g#3@3, ~@3 c#4", B: "f#4 ~@2 f#4 ~@3 g#4, ~@2 b3@6 ~@2 b3@5 ~, ~ d#4 ~ e4",
C: "~@3 b4@2 ~@9 f#4@2, ~ b3@5 b3@2 c#4@2 c#4@2 f#4@2 ~@2, ~@2 e4@3 e4@2 e4@2 f#4@2 c#5@2 c#4@2 ~",
D: "~@7 f#4 ~@2 a#3@2 b3 g#3 [c#4,e4] [d#4,f#4], g#3 f#4 a#4@2 ~@4, ~ d#4@2 d#4@2 f#4@2 ~@9, ~@6 d#4@2 ~ g#3@2 ~@5", // C#m D#m
E: "~@4 e4@4 ~@4 e4@3 ~, ~ g#3@2 g#3@3 ~@3 g#3@2 g#3@5, ~@2 b3@3 ~@5 b3@6",
F: "~@5 f#4 ~@2 a#3@7 ~, ~@3 b3@5 ~@8, ~@2 c#4 c#4@5", G: "~@7 b3, ~ b3@2 b3@2 b3@2 ~, ~ d#4@2 d#4, ~ f#3",
H: "~@4 g#3 ~@2 g#3, ~ c#4@2 c#4@2 g#3@2 ~, ~@4 f4@7 c#4@2 c#4@3, ~@3 f4",
I: "~@3 d#4 e4 ~@2 b3, ~ d#4@2 ~@2 b3@2 ~, ~@4 g#4@4 ~@3 e4@2 e4@3, ~@3 g#4",
J: "~@3 b3 ~@3 f#4, ~ g#3@2 g#3@4 ~ f#3@4 a#3@4, ~@2 b3@3 e4@3 ~ b3@2 f#4@3 ~@2, ~@4 g#4@3 ~@3 c#4@6",
K: "~@10 b3@2 ~ b3@3, ~ b3@2 b3@2 ~@3, ~@4 d#4@8 d#4@3 ~, ~@8 f#3@5 ~@3",
L: "~@6 c#4@2 ~@2 c#4@2 ~ c#4@3, ~ c#4@2 ~ g#3@4, ~@4 f4@8 f4@3 ~",
M: "[~@6 d#4@2 e4@2 ~@4 b3@3 ~@5 b3@2 ~@8 b3@3 ~@5 a#3@15 ~@3 b3@2 [b3,d#4]@3 ~, ~@2 d#4@4 ~@4 b3@4 ~@3 g#3@2 g#3@3 ~@7 b3@3 ~@3 b3@3 b3@2 ~@16 g#3@7 ~, ~@4 g#4@7 e4@2 e4@5 b3@3 e4@3 ~@6 c#4@4 ~@3 c#4@2 c#4@2 ~@23, ~@12 g#4@2 ~@6 g#4@3 ~@8 f#4@4 ~ f#4@6 ~@22]/4", // B
N: "~@2 c#4@2 [c#4,f4]@3 ~@3 d#4@2 [d#4,f#4]@3 ~, a#3@2 ~@2 b3@3 ~", // C# D#m
O: "~@6 b3@2 g#4@3 b4@2 ~ e4@2, ~ b3@2 ~@5, ~@4 e4@4 ~@5 g#4@2 ~",
P: "c#4@2 ~ c#5@2 ~ f#4@2 ~@6 a#4@2, f#4@5 a#4@2 ~@3 c#4@3 c#4@3, ~@2 c#4@5 ~ a#3@8, ~@11 f#4@5",
Q: "~ f#3 g#3 a#3 ~@3 e4, ~@8 g#3@7 ~, ~@4 [e4,g#4]@2 e4 ~, ~@11 b3@5, ~@13 g#4@3", // E
R: "[b3@3 ~@3 e4@2 ~@8 a#3@8 ~@12 d#4@4 ~@12 f4@4 ~@6 d#4@2 e4@2 ~@4 b3@3 ~@5 b3@2, g#3@7 ~@25 f#3@6 ~@10 g#3@5 ~@20 g#3@2 ~@5, [e4,g#4]@4 e4@2 ~@6 c#4@2 c#4@4 ~@10 d#4@8 ~@6 c#4@4 c#4@4 c#4@5 ~@3 d#4@4 ~@5 e4@2 e4@6 e4@2 e4@2 ~, ~@3 b3@4 ~@4 b3@4 b3@5 ~@6 b3@4 b3@4 b3@6 ~@26 b3@4 ~@4 b3@2 ~@4, ~@5 g#4@3 ~@5 f#4@4 ~@27 f4@4 ~@12 g#4@7 ~ g#4@8 g#4@3 ~]/5", // E
S: "[~@3 c#4@2 ~@2 f#4 ~@12 d#4@4 ~@12 f4@4 ~@6 d#4@2 e4@2 ~@4 b3@3 ~@5 b3@2, b3@5 b3@3 ~@2 b3@4 b3@4 b3@6 ~@2 c#4@4 c#4@4 c#4@5 ~@3 d#4@4 ~@5 e4@2 e4@5 b3@2 ~@4, ~ c#4@2 ~@3 c#4@2 ~@4 d#4@8 ~@8 f4@4 ~@12 g#4@7 ~ g#4@8 g#4@3 ~, ~@2 f#4@5 ~@9 f#3@6 ~@10 g#3@5 ~@13 b3@4 ~@3 g#3@2 e4@2 e4@2 ~]/4",
T: "[~@3 c#4@2 ~@2 f#4 ~@12 d#4@4 ~@12 f4@4 ~@6 d#4@2 e4@2 ~@4 b3@2 ~@6 b3@2, b3@5 b3@3 ~@2 b3@4 b3@4 b3@6 ~@2 c#4@4 c#4@4 c#4@5 ~@3 d#4@4 ~@5 e4@2 e4@5 b3@4 ~@2, ~ c#4@2 ~@3 c#4@2 ~@4 d#4@8 ~@8 f4@4 ~@12 g#4@7 ~ g#4@4 g#4@3 e4@2 e4@2 ~, ~@2 f#4@5 ~@9 f#3@6 ~@10 g#3@5 ~@13 b3@4 ~@3 g#3@6 ~, ~@60 g#4@3 ~]/4",
U: "[~@7 b3 a#3@8, b3@8 f#3@7 ~@17, ~@2 c#4@4 c#4@3 b3@2 b3@3 ~@18, ~@4 f#4@8 f#4@5 ~@15, ~@10 c#4@3 c#4@7 ~@12]/2",
})).s("gm_electric_guitar_clean").gain(0.26).pan(0.6)
// chords · piano · "A.PIANO 1"
const piano = note("<A B C D E F G H C D E I G H J K L M N O P Q@2 ~@20 A R S ~@4>".pickRestart({
A: "~@5 d#4@3 f#3 ~@3 [c#3,f#3,a#3]@4, f#2@2 [f#2,a#3] ~, ~ f#3@4 ~@11, ~@2 g#3@4 ~@3 f#4@7, ~@3 e4@4 ~ c#4@2 c#4@6", // F#
B: "~@3 e4@2 d#4@2 ~ [f#2,f#3,a#3]@4 [f#2,c#3]@4, f#2@7 ~@9, ~ f#3@4 ~@7 [f#3,a#3] ~@3, ~@2 g#3@3 ~@2 c#4@9", // F# F#5 F#
C: "[g#3,b3,d#4]!2 [a#3,c#4] [c#4,f4], g#2 a#2", // G#m A#m C#
D: "[f#3,b3,d#4]@4 [f#3,b3,d#4]@4 [c#4,e4]@4 e4@2 e4 f#4, b2@7 ~ c#3@8, ~@3 [g#3,c#4]", // B C#m C#5
E: "g#4@3 b4@2 g#4@2 e4 a#4@3 c#5@2 a#4@2 f#4, [e2,b3] [e2,c#4], e4@6 ~@2 f#4@5 ~@3", // E5 C#m
F: "[a#3,d#4]@4 [d#4,f#4]@4 d#4@4 d#4@2 e4 f#4, d#3@8 g#2@7 ~, ~@3 b3", // D#5 D#m
G: "[c#4,e4,g#4] [c#4,g#4] [b3,e4,b4]!2, c#3!2", // C#m C#5 E5
H: "[f#3,b3,c#4] ~ [f#2,f#3,a#3,c#4]!2, f#2 ~, ~ f#3 ~@2, ~@5 b3@2 f#4@9, ~@3 c#4 ~@4", // F#sus4 F#
I: "[a#3,d#4]@4 ~@2 c#5@2 d#4 ~ a#4 b4 [d#4,g#4]@2 f#4 g#4, d#3@8 g#2@7 ~, ~@2 [d#4,f#4]@2 b4 ~@3, ~@9 d#4@2 ~ b3@4", // D#5 G#5 D#m
J: "[b3,d#4]@4 d#4@4 [d#4,f#4]@4 [b3,d#4]@3 ~, b2@15 ~", K: "[g#3,c#4,f4] [c#4,f4] g#3 [g#3,c#4,f4], b2@15 ~",
L: "[b3,d#4] [g#3,b3] [b3,e4,g#4] [b3,g#4], g#2@7 ~ e2@7 ~", // B G#m E
M: "[g#3,c#4,e4]@4 [g#3,c#4,e4]@4 f#3 ~ b3 c#4 [f#2,f#3,a#3,c#4]@4, c#3@3 ~ [f#2,c#4]@2 ~@2, ~@4 b3 ~@3, ~@9 f#3@2 ~@5", // C#m F# F#5
N: "[b3,d#4] [b3,d#4,f#4]!2 b3, b2@15 ~", O: "[g#3,c#4,f4]!3 [g#3,c#4], b2@15 ~",
P: "[b3,d#4]@2 ~ g#3 ~ e4 g#4 b3, g#2@7 ~ e2@8, g#3@2 ~@2 [b3,d#4]@4 ~ b3@2 ~@5", // B
Q: "[c#4@2 ~@4 c#4 g#3 [f#3,b3,c#4]@4 [f#3,b3,c#4]@4 ~@8 a#3@3 ~@5, c#3@8 f#2@19 ~@5, ~@2 c#4@4 ~@10 [b3,c#4]@2 b3@4 b3 c#4@4 ~@5, ~@3 g#3@4 ~@10 f#3@2 f#3@9 ~@4, ~@4 g#4@4 ~@12 f#4@7 ~@5]/2", // F#sus4 Bsus2
R: "~@3 e4@2 d#4@2 ~ [f#2,c#3,f#3]@4 [f#2,c#3,f#3,a#3]@4, f#2@7 ~@9, ~ f#3@4 ~@11, ~@2 g#3@3 ~@2 c#4@9", // F#5 F#
S: "~@3 e4@2 d#4@3 ~@8, f#2@9 ~@7, ~ f#3@7 ~@8, ~@2 g#3@3 ~@11",
})).s("gm_piano").gain(0.37).pan(0.4)
// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<~@2 A B ~ C D ~ A B ~ C D ~ E F G ~ H I J K L ~@27>".pickRestart({
A: "~@2 f4 a#3", B: "~@2 g#3 ~", C: "~@4 a#3@4 [g#3,b3]@4 g#3 ~@3", D: "~ e4 ~@2", E: "f#4 [b3,f#4] b3 f#4",
F: "~ g#3 [c#4,f4] ~", G: "g#3 d#4 ~ e4", H: "f#4 ~@2 [d#4,f#4]", I: "~@3 f4", J: "~@2 g#3@4 ~@5 b3@2 e4@2 ~",
K: "~@2 e4@3 e4@2 ~@9, e4 ~@7, ~ g#3@2 ~@13", L: "~@5 c#4@2 ~@9",
})).s("gm_piano").gain(0.21).pan(0.4)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@8 A B@2 C D@2 E F G@2 H I J K@3 L M N O@5 P@4 Q@4 R S@2 ~@2 T U V@2 ~>".pickRestart({
A: "[f#3,b3,d#4] [g#3,c#4,f4]", B: "[[d#4,f#4] [g#3,e4] [g#3,e4] [a#3,c#4,f#4], b3@3 ~]/2",
C: "[a#3,d#4,f#4] [g#3,b3,d#4]", D: "[[g#3,e4]@2 ~ a#3, b3@3 ~, ~ [f#3,c#4]]/2", E: "[f#3,b3,d#4]", F: "[f3,g#3,c#4]",
G: "[[f#3,d#4]@2 [g#3,e4]@2 [g#3,e4]@2 ~ a#3, b3@7 ~, ~@3 [f#3,c#4]]/2", H: "[b4,d#5]", I: "[c#5,f5]",
J: "[b4,d#5] [b4,e5]", K: "[[b4,e5] [c#5,f#5]@4 [f#3,b3,d#4]]/3", L: "[g#3,c#4,f4] [f#3,b3,d#4]",
M: "~@3 a#4 b4 a#4 g#4 d#5, [g#3,c#4,e4] [b3,e4]", N: "[c#4,f#4,c#5]@4 f#5@3 c#6, ~ [d#4,f#4]",
O: "[[d#5,b5]@2 [c#5,a#5] ~ [b4,g#5]@2 [a#4,f#5]@2 [c#5,e5]@8 e5@2 d#5@2 c#5@2 b4@2 [c#4,c#5,f#5]@16 f#5@12 b5@2 a#5@2 g#5@14 a#5@2 b5@2 a#5@2 g#5@2 f#5@2, [b3,d#4] [c#4,e4]@2 ~@2 [b4,d#5]@2 [c#5,f5]@2 [b4,d#5]]/5", // G#m F# E D#m C#m F#5 B C#m …
P: "[~@2 g#5 f#5 e5 g#5 f#5 e5 ~@2 g#5 f#5 e5 g#5 f#5 e5 [a#4,f#5]@8 [b4,d#5,f#5]@16 g#5@14 g#5 a#5 b5@2 a#5@2 g#5@2 a#5@2, e5 ~@31, ~ g#4@12 ~@51, ~ b4@7 c#5@16 ~@16 [c#5,f5]@16 [b4,d#5]@8]/4", // D#m B C# B
Q: "[~@2 g#5 f#5 e5@2 d#5@2 e5@8 [a#4,f#5]@8 [b4,d#5,f#5]@16 g#5@14 g#5 a#5 b5@2 a#5@2 g#5@2 a#5@2, e5 ~@31, ~ g#4@12 ~@51, ~ b4@7 c#5@16 ~@16 [c#5,f5]@16 [b4,d#5]@8]/4", // D#m B C# B
R: "~@2 g#5 f#5 e5@2 d#5@2 [c#5,e5]@8, e5 ~@7, ~ g#4@15, ~ b4@7 ~@8", S: "[b3 a#3, [f#4,c#5]]/2",
T: "~@9 c#4@3 f#4@4, ~ [f#3,b3]", U: "~@3 f#4@4 ~ [e3,g#3,b3]@8, c#4@9 ~@7, [a#2,g#3]@7 ~@9",
V: "[[f#2,c#3,f#3,a#3]@31 ~]/2", // F#
})).s("gm_string_ensemble_2").gain(0.29)
// other · melodic tom · "+MELO TOM2"
const melodic_tom = note("<~@22 A B ~@5 C ~@3 D ~@8 E ~@7>".pickRestart({
A: "~@8 f3 ~ c5 ~ g4 ~ f3 ~", B: "~ a3 b3 a3 ~ f4 c3 ~@9", C: "~ b4!2 f4!2 d4!2 ~@9",
D: "~@3 [e4,b4] [d4,a4] f4 b3 g3 ~@8", E: "~@2 g5 ~ b4 ~ f4 ~@2 d4 ~ g3 c4 ~@3",
})).s("gm_melodic_tom").gain(0.57)
// drums · kick
const kick = s("bd").struct("<~@22 A B C B@2 C D E C B F G C H D I B@2 D J C K ~@3 L M ~>".pickRestart({
A: "~ x", B: "x ~@6 x!2 ~@7", C: "x!2", D: "x ~@6 x!2 ~@2 x ~@4", E: "x ~@3 x!5 ~@7", F: "x ~@7 x ~@2 x ~@4",
G: "x ~@4 x!4 ~@7", H: "x ~@2 x ~@3 x!2 ~@7", I: "x!5 ~@3", J: "x ~@2 x!2 ~@3", K: "x", L: "~@11 x ~ x ~@2",
M: "x!3 ~@2 x!2 ~@9",
})).gain(0.57)
// drums · snare
const snare = s("sd").struct("<~@23 A B@4 C D B@2 C D B@2 C E B@4 ~@8>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~ x!2 ~@9 x ~@3", E: "x!8 ~@4 x ~@3",
})).gain(0.64)
// drums · low tom
const low_tom = s("lt").struct("<~@22 [~ x] [~@3 x ~@4] ~@9 [~@5 x!3 ~@8] ~@8 [~@3 x] ~@7>").gain(0.57)
// drums · hihat
const hihat = s("hh").struct("<~@23 A B@4 C D ~@11 E F ~@7>".pickRestart({
A: "~@4 x!4", B: "x!8", C: "x ~ x ~ x ~ x ~@3 x!2 ~@4", D: "~@3 x ~@4", E: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", F: "x ~@6 x",
})).gain(0.43)
// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A B ~@5 C ~@3 D ~@8 E ~@7>".pickRestart({
A: "~@7 x", B: "~ x!3 ~ x ~@10", C: "~@5 x!2 ~@9", D: "~@4 x!2 ~@10", E: "~@6 x ~@2 x ~ x ~@4",
})).gain(0.64)
// drums · high tom
const high_tom = s("ht").struct("<~@22 A ~@6 B ~@3 C ~@8 D ~@7>".pickRestart({
A: "~@5 x!2 ~", B: "~ x!4 ~@11", C: "~@3 x ~@12", D: "~ x!2 ~@5",
})).gain(0.64)
// drums · crash
// … 15 more lines
More by Phil Collins
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.