0:00/0:00
// When The Going Gets Tough — Boyzone
// 127 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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 · synth bass 1
const bass = note(`<
~@3 A@7 B@2 C@2 D@2 E F G H I J K@3 L M N O P Q@2 R@3 S T@6 U V W X Y Z AA AB@2 AC@8 AD@4 AE@6 AF AG AH AI AJ AK AL AM
AN AO AP AQ AR AS AT AU@4 AV@2 AW@2 ~@10 AX@2 AY AZ BA BB BC BD BE BF@4
>`.pickRestart({
A: "[a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@2 e2@5 ~ f#2@2 a1@5 ~ c#2@2 e2@4 ~@2 a2@7 a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@2 e2@5 ~ f#2@2 a1@5 ~ c#2@2 e2@4 ~@2 a2@7 ~@3 c#2@3 d2@3 e2@2 f#2@2, ~@53 a1 ~@2]/7",
B: "[~@4 f#2@3 ~@2 f#2@3 ~@2 e2@5 ~@11 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@5]/2",
C: "[~@3 a1@3 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@6 ~@2 a1@2 c#2@5 ~ d2@5]/2",
D: "[~@3 a1@2 b1@4 ~ d2@6 ~@2 b1@3 d2@5 e2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@6]/2",
E: "~@2 a1@3 c#2@4 ~ e2@7 ~ c#2@2 e2@5 f#2@3 a1@4", F: "~ c#2@3 e2@4 ~ a2@6 ~@2 a1@3 c#2@5 d2@6 ~",
G: "~ a1@3 b1@4 ~ d2@6 ~@2 b1@2 d2@5 e2@3 a1@5", H: "c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~",
I: "a1@3 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5", J: "c#2@2 e2@4 ~@2 a2@7 ~ a1@2 c#2@6 f#2@7 ~",
K: "[a1@2 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@2 c#2@6 f#2@7 ~ a1@2 c#2@4 ~@2 e2@7 c#2@3 e2@5 f#2@3 a1@5 c#2@2]/3",
L: "~ e2@4 ~ a2@6 ~@2 a1@3 c#2@5 d2@6 ~@2 a1@2", M: "~ b1@4 ~ d2@6 ~@2 b1@3 d2@5 e2@3 a1@5 c#2@2",
N: "~ e2@4 ~ a2@7 ~@3 c#2@6 f#2@7 ~ a1@2, ~@7 a1@2 ~@7", O: "~ c#2@4 ~ e2@7 ~ c#2@2 e2@5 ~ f#2@2 a1@5 ~ c#2@2",
P: "e2@4 ~@2 a2@6 ~@2 a1@2 c#2@5 d2@6 ~@2 a1@3",
Q: "[b1@4 ~ d2@6 ~@2 b1@3 d2@5 e2@3 e2@11 ~@2 f#2@13 ~@3 d2@9 ~@2]/2",
R: "[f#1@5 a1@7 ~ f#1@2 ~ a1@2 c#2@2 ~ d2@2 ~ e2@12 ~ f#2@14 ~@2 d2@14 ~@2 e2@5 ~@14 a1@5 c#2@3]/3",
S: "e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3",
T: "[c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@2 e2@4 ~@2 a2@7 ~ a1@2 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@2 c#2@6 f#2@7 ~ a1@2 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@2 c#2@6 f#2@7 ~ a1@2 c#2@3]/6",
U: "~@2 e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@3", V: "~@2 a2@7 ~ a1@3 c#2@5 f#2@7 ~ c#2@2 e2@4",
W: "~@2 f#2@6 ~@2 c#2@2 e2@5 f#2@2 ~ e2@5 a1@3 b1@4", X: "~ e2@7 ~ a1@3 b1@5 d2@7 ~ a1@3 b1@4",
Y: "~ d2@6 ~@2 a1@2 b1@5 ~ d2@2 d2@4 ~ a1@3 d2@2 ~ a1@2", Z: "d2@3 d2@4 ~@4 d2@4 ~@4 a1@5 c#2@3 e2@4 ~",
AA: "a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~",
AB: "[e2@7 ~ c#2@2 e2@5 ~ f#2@2 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@3 d2@2 e2@3 f#2@2 ~@3 f#2@3 ~@2 f#2@3 ~]/2",
AC: "[~@2 e2@5 ~@11 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@2 e2@5 ~ f#2@2 a1@5 ~ c#2@2 e2@4 ~ a2@6 ~@3 a1@2 c#2@5 d2@6 ~@2 a1@3 b1@4 ~ d2@6 ~@2 b1@3 d2@5 e2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@2 c#2@6 f#2@7 ~ a1@2 c#2@4 ~@2 e2@7 ~ c#2@2 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@6 ~@3 a1@2 c#2@5 ~ d2@6 ~@2 a1@2 b1@4 ~ d2@3]/8",
AD: "[~@5 b1@3 d2@5 e2@3 e2@11 ~@2 f#2@13 ~@3 d2@9 ~@2 f#1@5 a1@7 ~ f#1@2 ~ a1@2 c#2@2 ~ d2@2 ~ e2@12 ~ f#2@14 ~@2 d2@14 ~@2 e2@3]/4",
AE: "[~@15 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~ c#2@3 e2@5 f#2@3 a1@5 c#2@2 e2@4 ~@2 a2@7 ~ a1@2 c#2@6 f#2@7 ~ a1@2 c#2@4 ~ e2@5]/6",
AF: "~@3 c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@5", AG: "~@3 a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@5",
AH: "~@3 c#2@2 e2@5 ~ f#2@2 a1@6 c#2@2 e2@4 ~@2 a2@5", AI: "~@2 a1@3 c#2@5 f#2@7 ~ c#2@3 e2@5 f#2@6",
AJ: "~@2 c#2@2 ~ e2@5 f#2@2 ~ e2@5 a1@3 b1@5 e2@6", AK: "~@2 a1@2 b1@5 ~ d2@7 ~ a1@3 b1@5 d2@6",
AL: "~@2 a1@3 b1@5 d2@2 d2@4 ~@2 a1@2 d2@2 ~ a1@2 ~ d2@2 d2@3 ~",
AM: "~@2 d2@3 ~@2 d2@4 ~ a1@5 ~ c#2@2 e2@4 ~@2 a2@6", AN: "~@4 c#2@5 f#2@7 ~@2 a1@2 c#2@4 ~ e2@7, ~ a1@2 ~@13",
AO: "~ c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@6 ~", AP: "~ a1@3 c#2@5 d2@6 ~@2 a1@3 b1@4 ~ d2@6 ~",
AQ: "~ b1@3 d2@5 e2@2 a1@5 ~ c#2@2 e2@4 ~@2 a2@7", AR: "a1@3 c#2@5 f#2@7 ~ a1@3 c#2@4 ~ e2@7 ~",
AS: "c#2@3 e2@5 f#2@3 a1@5 c#2@3 e2@4 ~ a2@6 ~@2", AT: "a1@3 c#2@5 d2@6 ~@2 a1@2 b1@4 ~@2 d2@6 ~@2",
AU: "[b1@2 d2@5 e2@3 e2@11 ~@2 f#2@13 ~@3 d2@9 ~@2 f#1@5 a1@7 ~ f#1@2 a1@2 ~ c#2@2 ~ d2@2 e2@11 ~@2 f#2@13 ~@3 d2@9 ~@2 f#1@5 a1@7 ~ f#1@2]/4",
AV: "[~ a1@2 c#2@2 ~ d2@2 ~ e2@11 ~@2 f#2@13 ~@3 d2@9 ~ f#1@5 a1@7 ~ f#1@2 ~]/2",
AW: "[a1@2 ~ c#2@2 d2@2 ~ e2@12 ~ f#2@14 ~@2 d2@14 ~ e2@5 ~@7]/2",
AX: "[~@5 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@3 c#2@5 f#2@7 ~ c#2@2 e2@5 ~ f#2@6 ~@2 c#2@2 e2@4]/2",
AY: "~ f#2@2 ~ e2@5 a1@3 b1@5 e2@7 ~ a1@3 b1@4", AZ: "~ d2@7 ~ a1@3 b1@5 d2@6 ~@2 a1@3 b1@4",
BA: "~ d2@3 a1@5 c#2@3 e2@4 ~ a2@7 ~ a1@2 c#2@5", BB: "~ f#2@7 ~ c#2@2 e2@5 ~ f#2@6 ~@2 c#2@2 e2@5",
BC: "f#2@2 ~ e2@5 a1@3 b1@5 e2@7 ~ a1@3 b1@5", BD: "d2@7 ~ a1@3 b1@5 d2@6 ~@2 a1@3 b1@5",
BE: "d2@3 d2@5 ~@3 d2@5 ~@3 d2@3 ~@2 d2@3 ~@2 b1@3", BF: "[~@2 a1@95 ~@2 a1@5 ~@24]/4",
})).s("gm_synth_bass_1").gain(0.45)
// chords · piano
const piano = note("<A ~@83 B@4 C@2 D@2 ~@18 E@2 ~@3>".pickRestart({
A: "f#3@31 ~",
B: "[~@10 [b3,e4,g#4]@12 ~ [c#4,f#4,a4]@14 ~@2 [a3,d4,f#4]@19 [b3,d4]@4 ~ [c#4,e4]@3 ~@2 [d4,f#4]@3 ~@2 [b3,e4,g#4]@12 ~@2 [c#4,f#4,a4]@14 ~ [a3,d4,f#4]@19 [g#4,b4]@4 ~ [a4,c#5]@2]/4", // E F#m D Bm C#m D E F#m …
C: "[~@3 [b4,d5]@3 ~@3 [e4,g#4,b4]@12 ~ [f#4,a4,c#5]@14 ~@12 [a5,d6]@4 ~@4 [b5,d6]@4 ~ [c#6,e6]@3, ~@38 [f#4,a4,d5]@19 ~@7]/2", // Bm E F#m D5 Bm C#m D
D: "[~@3 [d6,f#6]@3 ~@2 [e4,g#4,b4]@12 ~ [f#4,a4,c#5]@14 ~@2 [d4,f#4,a4]@15 ~ b4@3 ~@2 e2 ~ e2 ~@2 e2, ~@52 g#4@3 ~@9]/2", // D E F#m D
E: "[~@19 [a3,c#4,e4]@3 ~@3 f#3@3 ~@2 [f#3,a3]@4 ~@30, ~@24 [b3,d4]@4 ~ c#4@4 ~@31]/2", // A F#m Bm
})).s("gm_piano").gain(0.65)
// chords · electric guitar clean
const electric_guitar_clean = note(`<
~@23 A B C D C E F G H I H J ~@7 K ~@8 L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF ~@43
>`.pickRestart({
A: "~ [e4,a4,c#5] ~@7 [e4,a4,c#5] ~@6", B: "~ [e4,a4,c#5]@2 ~@14 [e4,g#4,b4] ~@14",
C: "~ [e4,a4,c#5]@2 ~@14 [e4,a4,c#5]@2 ~@13", // A
D: "~ [f#4,a4,d5] ~@9 [f#4,a4,d5] ~@2 [f#4,a4] ~@2 [f#4,a4,d5]@5 [f#4,a4,d5] ~@9", // D F#m D
E: "~ [e4,a4,c#5]@2 ~@13 [e4,g#4,b4] ~@15", F: "[e4,a4,c#5] ~@7 [e4,a4,c#5] ~@7",
G: "[f#4,a4,d5] ~@10 [f#4,a4,d5] ~ [f#4,a4] ~@2 [f#4,a4,d5]@5 [f#4,a4,d5] ~@10", // D F#m D
H: "[e4,g#4,b4] ~@7 [f#4,a4,c#5] ~@7", I: "[d4,f#4,a4] ~@7 [d4,f#4,a4] ~@7",
J: "[d4,f#4,a4]@2 ~@3 [g#4,b4,e5]@2 ~@25", K: "~@5 e4 ~@2 [b4,e5] ~ [b4,e5]@2 ~ [b4,e5]@2 ~ [b4,e5]@2 [b4,e5]@2 ~@12",
L: "~@13 [e4,a4,c#5] ~@2", M: "~@5 [e4,a4,c#5] ~@7 [e4,a4,c#5] ~@2",
N: "~ e4 ~@2 [e4,a4,c#5] ~@2 e4 ~ [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 ~@8 [e4,a4,c#5]@2 ~@5", // A
O: "~@9 [e4,a4,c#5]@2 ~@14 [f#4,a4,d5] ~@6", // A D
P: "~@4 [f#4,a4,d5] ~ [f#4,a4] ~@2 [f#4,a4,d5]@2 ~ [f#4,a4]@2 [f#4,a4,d5] ~@10 [e4,a4,c#5]@2 ~@5, ~@11 d5@2 ~@19", // D F#m D F#m D A
Q: "~@9 [e4,a4,c#5]@2 ~@13 [e4,a4,c#5]@2 ~@6", // A
R: "e4 ~@2 [e4,a4,c#5] ~@4 [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 ~@8 [e4,a4,c#5]@2 ~@6", // A
S: "~@8 [e4,a4,c#5]@2 ~@9 [a4,d5]@2 ~ [a4,d5]@2 [a4,d5]@2 ~ [a4,d5]@2 [a4,d5]@2 ~", // A D5
T: "[a4,d5]@2 ~ [a4,d5]@2 [a4,d5]@2 ~ [a4,d5]@2 ~ [a4,d5]@2 [a4,d5] ~@10 [e4,g#4,b4]@2 ~@6", // D5 E
U: "~@4 [f#4,a4,c#5] ~@7 [d4,f#4,a4] ~@3", V: "~@4 [d4,f#4,a4] ~@7 [e4,g#4,b4] ~@3",
W: "~@8 [f#4,a4,c#5]@2 ~@13 [d4,f#4,a4]@2 ~@4 [g#4,b4,e5]@2 ~", X: "~@23 [e4,a4,c#5]@2 ~@7",
Y: "~@7 [e4,a4,c#5]@2 ~@14 [e4,a4,c#5]@2 ~@6 e4", // A
Z: "~@2 [e4,a4,c#5] ~ e4 ~@2 [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 [e4,a4,c#5]@2 ~@9 [e4,a4,c#5]@2 ~@7", // A
AA: "~@7 [e4,a4,c#5]@2 ~@14 [f#4,a4,c#5] ~@8", // A F#m
AB: "~ [e4,a4,c#5] ~@5 [e4,a4]@2 [e4,a4]@2 ~ [e4,a4] ~@10 e4@2 ~@7, ~@11 [a4,c#5] ~@4", // A A5 A
AC: "~@7 [a4,c#5]@2 ~@13 [e4,a4,c#5]@2 ~@6 e4 ~, ~@3 e4 ~@12", // A
AD: "~ [e4,a4,c#5] ~ e4 ~@2 [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 [e4,a4,c#5]@2 ~@9 [e4,a4,c#5]@2 ~@8", // A
AE: "~@6 [e4,a4,c#5]@2 ~@14 [f#4,a4,c#5] ~@9", AF: "[e4,a4,c#5] ~@5 e4@2 [e4,a4]@2 ~ [e4,a4] ~@20, ~@5 a4@3 ~@24",
})).s("gm_electric_guitar_clean").gain(0.24)
// chords · overdriven guitar
const overdriven_guitar = note(`<
~@6 A@4 B ~@7 C D@2 E@2 ~@7 F@5 ~@7 G@5 H@2 I@2 J ~@7 K@4 ~@8 L@5 M@6 N@2 O@8 ~@10 P Q@2 R S T U V W X@4
>`.pickRestart({
A: "[~@31 a3@5 f#3@2 ~ a3@16 f#3@21 e3@14 ~@4 a3@5 ~ f#3@2 a3@16 f#3@8 [f#2,c#3,f#3]@2]/4", // F#5
B: "~@4 [f#2,c#3,f#3]@4 ~ [f#2,c#3,f#3]@3 ~@2 [e2,b2,e3]@7 ~@11", C: "~@27 a3@5",
D: "[~ f#3@2 a3@16 f#3@21 e3@14 ~@5 a3@5]/2", E: "[f#3@2 ~ a3@15 f#3@21 e3@14 ~@11]/2",
F: "[~@24 [b2,e3,b3]@12 ~ [c#3,f#3,c#4]@14 ~@2 [d3,a3,d4]@33 ~@2 [b2,e3,b3]@12 ~ [c#3,f#3,c#4]@14 ~@2 [d3,a3]@14 ~@2 e3@4 ~@23, ~@52 a2@33 ~@31 [a2,d4]@14 ~@2 [b2,g#3,b3,e4]@4 ~@24]/5", // E5 F#5 D5 E5 F#5 D5 E
G: "[~@21 [a2,e3,a3,c#4]@27 ~@2 [c#3,c#4]@33 ~ [b2,e3,b3,e4]@26 ~@3 [a2,a3,d4]@33 ~ [d3,a3,d4]@13, ~@49 f#3@34 ~@29 d3@34 ~@14, ~@5 f#2@3 ~@8]/5", // A C# E5 D5
H: "[~@3 [d3,a3,d4]@4 ~@4 [d3,a3,d4]@4 ~@4 a3@5 f#3@2 ~ a3@16 f#3@21]/2", // D5
I: "[e3@14 ~@4 a3@5 ~ f#3@2 a3@16 f#3@8 [f#2,c#3,f#3]@3 ~@2 [f#2,c#3,f#3]@3 ~@3 c#3@3, ~@60 [f#2,f#3]@3 ~]/2", // F#5 F#
J: "~@2 [e2,b2,e3]@7 ~@23", // E5
K: "[~@16 [b2,e3,b3]@12 ~ [c#3,f#3,c#4]@14 ~@2 [d3,a3,d4]@34 ~ [b2,e3,b3]@12 ~ [c#3,f#3]@14 ~ [a2,d3,a3,d4]@14 ~@2 [b2,e3,g#3,b3,e4]@4, ~@44 a2@33 ~@15 c#4@14 ~@22]/4", // E5 F#5 D5 E5 F#5 D5 E
L: "[~@13 [a2,e3,a3,c#4]@27 ~@2 [f#3,c#4]@34 ~ [b2,e3,b3,e4]@27 ~ [a2,d3,a3,d4]@34 ~ [d3,a3,d4]@16 [d3,a3,d4]@4, ~@42 [f#2,c#3]@31 ~@87]/5", // A F#5 E5 D5 F#5
M: "[~@2 [d3,a3,d4]@4 ~ [d3,a3,d4]@4 ~ a3@27 ~@2 f#3@30 ~@5 a3@27 ~@2 f#3@30 ~@4 a3@27 ~@2 f#3@21 ~@3]/6", // D5
N: "[f#3@3 a3@5 a3@56]/2",
O: "[~@10 [b2,e3,b3]@11 ~@2 [c#3,f#3,c#4]@14 ~@2 [d3,a3]@34 [b2,e3,b3]@12 ~ [c#3,f#3,c#4]@14 ~@2 [a2,d3,a3,d4]@34 ~ [b2,e3,b3]@11 ~@2 [c#3,f#3]@14 ~ [a2,d3,a3,d4]@34 ~ [b2,e3,b3]@11 ~@2 [c#3,f#3,c#4]@14 ~ [a2,d3,a3,d4]@14 ~@2 [b2,e3,g#3,b3,e4]@4 ~@8, ~@38 [a2,d4]@33 ~@78 c#4@14 ~@93]/8", // E5 F#5 D5 E5 F#5 D5 E5 F#5 …
P: "~@5 [a2,e3,a3,c#4]@27", Q: "[~@2 [c#3,c#4]@33 ~ [b2,e3,b3,e4]@27 ~, ~ f#3@34 ~@29, ~ f#2@15 ~@16]/2",
R: "~ [a2,a3,d4]@31, d3", S: "~@4 [a2,e3,a3,c#4]@27 ~", T: "~ [c#3,c#4]@31, [f#2,f#3]", U: "~@3 [b2,e3,b3,e4]@27 ~@2",
V: "[a2,d3,a3,d4]", W: "~@3 [d3,a3,d4]@6 ~@2 [d3,a3,d4]@6 ~@2 [e3,a3,e4]@4 ~ [d3,b3,d4]@4 ~ [f#3,a3,c#4]@3",
X: "[~@2 [a2,e3,a3,c#4]@95 ~@2 [a2,e3,a3,c#4,e4]@6 ~@23]/4", // A
})).s("gm_overdriven_guitar").gain(0.22)
// chords · synth strings 1
const synth_strings_1 = note(`<
~@22 A@6 B@6 C@8 D@5 E ~@6 F G@8 H@8 I@5 J ~@7 K@7 L ~@9 M N O@2 P Q R S T U V@2 ~@2
>`.pickRestart({
A: "[~@26 [c#4,a4]@45 [b3,g#4]@18 [e4,c#5]@32 d5@18 d5 ~@2 c#5 ~@2 b4 ~ c#5 ~@2 d5 ~@2 [c#4,e4,a4]@39, ~@26 e4@63 a4@63 ~@40, ~@121 f#4@31 ~@40]/6", // F#m E C#m A
B: "[~@6 [b3,g#4]@18 [e4,c#5]@29 ~ f#4@33 ~ [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@33 ~@2 [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@11, ~@8 a4@21 ~@35, ~@53 d5@34 ~@105]/6", // E C#m E F#m D E F#m D
C: "[~@5 [b3,e4,g#4]@2 ~@17 [c#4,a4]@45 [b3,g#4]@18 ~ [c#4,a4]@44 [b3,g#4]@18 ~ [c#4,a4]@44 [b3,g#4]@18 ~ [c#4,e4,a4]@42, ~@24 e4@63 ~ e4@63 e4@62 ~@43]/8", // E F#m E F#m E F#m E A
D: "[~@2 [b3,g#4]@18 ~ [a3,c#4,e4]@27 ~@2 [a3,c#4,f#4]@32 ~@2 [b3,e4,g#4]@27 ~@2 [a3,d4,f#4]@33 ~ [d3,a3,d4,f#4]@2 ~@6 [d3,a3,d4,f#4]@2 ~@3]/5", // E A F#m E D
E: "~@3 [d3,a3,d4,f#4]@2 ~@6 [d3,a3,d4,f#4]@2 ~@19", F: "~@17 a4@8 g#4@7",
G: "[~ [f#4,a4]@8 [e4,g#4]@8 e4@32 f#4@15 g#4@8 a4@7 ~ [c#4,e4,a4]@27 ~@3 a4@33 ~ [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@33 ~@2 [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@14 ~@2 [b3,e4,g#4]@2 ~, ~@17 c#5@63 ~@176, ~@17 a4@47 e4@15 ~@30 [d4,f#4]@33 ~@114]/8", // F#m E A E F#m D E F#m …
H: "[~@15 [c#4,a4]@45 [b3,g#4]@18 ~ [c#4,a4]@45 [b3,g#4]@18 ~ [c#4,a4]@44 [b3,g#4]@18 ~ [c#4,a4]@45 [b3,g#4]@5, ~@15 e4@63 ~ e4@63 ~ e4@63 e4@50]/8", // F#m E F#m E F#m E F#m E
I: "[~@13 [a3,c#4,e4]@27 ~@2 [a3,c#4,f#4]@32 ~@3 [b3,e4,g#4]@27 ~@2 [a3,d4,f#4]@33 ~ [d3,a3,d4,f#4]@2 ~@6 [d3,a3,d4,f#4]@2 ~@6 [d3,a3,d4,f#4]@2 ~@2]/5", // A F#m E D
J: "~@2 [d3,a3,d4,f#4]@2 ~@3 [d3,a3,d4,f#4]@2 ~@23", // D
K: "[~@10 [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@33 ~ [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@33 ~@2 [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@13 ~@3 [d4,f#4,a4]@33 ~ [b3,e4,g#4]@11 ~@2 [c#4,f#4,a4]@11]/7", // E F#m D E F#m D E F#m …
L: "~@5 [d4,f#4,a4]@13 ~@2 [b3,e4,g#4]@2 ~@10", // D E
M: "~@5 [d3,a3,d4]@2 ~@3 [d3,a3,d4]@2 ~@4 [a3,d4]@2 ~@3 [e3,b3,e4]@7 ~ e3 ~ f#3, ~@15 d3@2 ~@15", // D5 E5
N: "~@2 a3 ~@2 [a3,c#4,e4]@26 ~", O: "[~@2 [a3,c#4,f#4]@33 ~ [b3,e4,g#4]@26 ~@2]/2", P: "~ [d4,f#4,a4]@31",
Q: "~@2 [a3,c#4,e4]@13 ~", R: "~ [a3,c#4,f#4]@31", S: "~@3 [b3,e4,g#4]@26 ~@3", T: "[d4,f#4,a4]",
U: "~@3 [d3,d4,f#4,a4]@4 ~@4 [d3,d4,f#4,a4]@4 ~@4 [d3,d4,f#4,a4]@3 ~@2 [d3,e4,g#4,b4]@3 ~@3 a2@2, ~@29 [d4,f#4,a4]@3", // D E7 D
V: "[~@2 [a2,a3,c#4,e4]@61 ~]/2", // A
})).s("gm_synth_strings_1").gain(0.23)
// other · string ensemble 1
const string_ensemble_1 = note("<~@22 A@6 B@8 C@6 D@5 E ~@7 F@2 G@7 ~@12 H ~@7 I@8 ~@9 J K@8 L M@3 ~>".pickRestart({
A: "[~@26 c#5@45 b4@18 c#5@31 ~ d5@18 d5 ~@2 c#5 ~@2 b4 ~ c#5 ~@2 d5 ~@2 c#5@30 ~@2 c#5@7]/6",
B: "[~@6 b4@18 c#5@29 d5@32 ~@3 e6@63 ~ e6@50 ~@14 c#6@40]/8",
C: "[~@5 g#5@18 ~ e5@30 ~ a5@12 ~ g#5@17 ~@2 c#6@44 g#5@18 ~ e5@30 ~ a5@11]/6",
D: "[~@2 g#5@17 ~@2 e5@28 ~ e5@33 ~ e5@26 ~@3 a5@32 ~@2 a5@4 ~@2 f#5@2 a5@2 ~ a5@2]/5",
E: "f#5@2 ~ a5@4 ~@4 b5@3 ~@18", F: "[~ a4@7 ~ b4@7 ~ c#5@30 ~@2 c#5@15]/2",
G: "[c#5@6 ~@2 d5@7 ~ a4@28 ~@2 d5@30 ~@4 e6@63 ~ e6@50 ~@30]/7", H: "~@12 f#5 ~@19",
I: "[~@10 e6@62 ~ e6@63 ~ e6@62 ~ e6@50 ~@6]/8", J: "~@5 a5@3 ~@2 g#5@3 ~@2 f#5@3 ~@3 e5@4 ~ e5@2 ~ e5 ~ f#5",
K: "[~@2 a5 ~@2 e6@63 ~@40 [a5,c#6]@6 ~@2 [e5,a5]@7 ~ [a5,c#6]@6 ~@2 e6@63 e6@61, ~@17 e6@16 ~@31]/8", // A A5 A
L: "~@3 a5@5 ~@3 a5@4 ~@4 c#6@3 ~@2 b5@3 ~@2 a5@3", M: "[~ c#4@45 ~@2]/3",
})).s("gm_string_ensemble_1").gain(0.33)
// chords · brass section
const brass_section = note(`<
~@6 A@3 B C ~@7 D E@2 F@2 ~@7 G@2 H@3 ~@12 I J@3 K ~@7 L@2 M@3 ~@11 N ~@8 O@2 P@4 Q@2 ~@23
>`.pickRestart({
A: "[~@31 [c#5,e5,a5]@2 ~@11 [c#5,e5,a5]@3 ~@8 [c#5,a5]@24 [b4,g#5]@15 [c#5,e5,a5]@2, ~@55 e5@39 ~@2]/3", // A F#m E A
B: "~@12 [c#5,e5,a5]@3 ~@5 c5@2 c#5@2 ~ e5@2 ~ f#5@2 [c#5,e5,a5]@2", // A
C: "~@4 [c#5,e5,a5]@3 ~@2 [c#5,e5,a5]@3 ~@2 [e5,g#5]@3 ~@15", D: "~@27 [c#5,e5,a5]@2 ~@3",
E: "[~@8 [c#5,e5,a5]@3 ~@8 [c#5,a5]@24 [b4,g#5]@15 ~ [c#5,e5,a5]@2 ~@3, ~@19 e5@39 ~@6]/2", // A F#m E A
F: "[~@8 [c#5,e5,a5]@3 ~@7 [e5,f#5,b5]@6 [c#5,e5,a5]@15 [b4,e5,g#5]@18 ~@7, ~@18 a5 ~@45]/2", // A Esus2 A E
G: "[~@3 e5 ~ f#5 ~@2 a5 ~@2 f#5 ~ e5 ~@2 a5 ~@2 f#5 ~ e5 ~@2 [b4,e5]@12 ~ [c#5,f#5]@14 ~@13]/2", // E5 F#5
H: "[~@24 [b4,e5]@12 ~ [c#5,f#5]@14 ~@2 e6@23 ~@20]/3", I: "~@19 [c#5,e5,a5]@2 ~@11",
J: "[[c#5,e5,a5]@3 ~@8 [c#5,a5]@23 [b4,g#5]@15 ~ [c#5,e5,a5]@2 ~@11 [c#5,e5,a5]@3 ~@5 c5@3 c#5@2 ~ e5@2 f#5@2 ~ [c#5,e5,a5]@3 ~@2 [c#5,e5,a5]@3 ~@2 [c#5,e5,a5]@3 ~, ~@11 e5@39 ~@46]/3", // A F#m E A
K: "~@2 [e5,g#5]@3 ~@27", L: "[~@3 a4@2 b4@3 c#5 ~@2 e5 ~ f#5 ~@2 [b4,e5]@12 ~ [c#5,f#5]@14 ~@21]/2",
M: "[~@16 [b4,e5]@12 ~ [c#5,f#5]@14 ~@2 e6@23 ~@28]/3", N: "~ [a4,a5] ~@3 [a4,a5] ~@2",
O: "[~@10 [b4,e5]@12 ~ [c#5,f#5]@14 ~@27]/2", P: "[~@9 [b4,e5]@12 ~ [c#5,f#5]@14 ~@28]/2",
Q: "[~@8 [b4,e5]@12 ~ [c#5,f#5]@14 ~@29]/2", // E5 F#5
})).s("gm_brass_section").gain(0.32)
// other · alto sax
const alto_sax = note(`<
~@6 A@3 B C ~@7 D E@2 F@2 ~@7 G@4 ~@13 H I@3 J ~@7 K@4 ~@13 L@3 M N O P Q@2 ~@3 R@2 S ~@24
>`.pickRestart({
A: "[~@31 a4@2 ~@11 a4@2 ~@9 f#4@23 e4@15 ~ a4@2]/3", B: "~@12 a4@2 ~@6 c4@2 c#4@2 ~ e4@2 ~ f#4@2 f#4@2",
C: "~@4 f#4@3 ~@2 f#4@3 ~@2 e4@4 ~@14", D: "~@27 a4@2 ~@3", E: "[~@8 a4@2 ~@9 f#4@24 e4@15 ~ a4@2 ~@3]/2",
F: "[~@8 a4@2 ~@9 b4@5 f#4@15 e4@17 ~@8]/2", G: "[~@24 g#4@12 ~ a4@13 ~@14]/2", H: "~@19 a4@2 ~@11",
I: "[a4@2 ~@9 f#4@23 e4@15 ~ a4@2 ~@11 a4@2 ~@6 c4@3 c#4@2 ~ e4@2 f#4@2 ~ f#4@3 ~@2 f#4@3 ~@2 f#4@3 ~]/3",
J: "~ e4@2 ~@13", K: "[~@16 g#4@12 ~ a4@13 ~@22]/2",
L: "[~@8 c#5@2 d5 e5 f#5@37 e5@2 ~ e5@5 c#5 ~@2 e5@9 ~@4 a4 ~@2 c#5@5 c#5@3 d5@5 d#5@2 ~ e5@3 ~, ~@3 a4 ~@44, ~@7 b4@2 ~@87]/3",
M: "~ c5@3 b4@5 a4@10 ~ f#4@4 ~ e4 ~@2 a4@4", N: "~ f#4@6 ~@10 a4 ~ f#5@4 ~@2 f#5@2 e5@5",
O: "~ c#5@2 e5@7 ~ c5@6 ~@2 c5@2 ~ b4@2 a4 ~@2 b4@5",
P: "a4@2 g4 f#4 d4@2 ~@10 c5@3 c#5@2 e5@2 ~ f#5 ~@2 a5@5, ~@4 e4 ~@27", Q: "[~@3 c#6@5 e6@52 ~@4]/2",
R: "[~@9 g#4@12 ~ a4@13 ~@29]/2", S: "~@8 g#4@12 ~ a4@11",
})).s("gm_alto_sax").gain(0.46)
// chords · percussive organ
const percussive_organ = note(`<
~@3 A@7 B ~@7 C@4 D@6 E@6 F@8 G@5 H@4 I ~@7 J@4 K@8 L@5 M@7 N@8 O ~@10 P Q@2 R@2 S T U V W@3 X
>`.pickRestart({
A: "[[c#5,a5]@47 ~ b4@14 ~ [c#5,e5,a5]@31 ~ [a4,c#5,a5]@12 ~ [b4,e5,g#5]@17 ~@2 [c#5,a5]@47 ~ b4@14 ~ [c#5,e5,a5]@31 ~ [a4,c#5,a5]@2, e5@63 ~@64 e5@63 ~@34, ~@47 g#5@14 ~@113 g#5@14 ~@36]/7", // F#m A E F#m A
B: "~@4 [a4,c#5,a5]@2 ~@3 [a4,c#5,a5]@2 ~@3 [b4,e5,g#5]@3 ~@15", // A E
C: "[~@27 [c#5,a5]@48 [b4,g#5]@14 ~@2 [c#5,e5,a5]@30 ~ [a4,c#5,a5]@6, ~@27 e5@63 ~@38]/4", // F#m E A
D: "[~@7 [b4,e5,g#5]@17 ~@2 [c#5,a5]@47 [b4,g#5]@14 ~@2 [c#5,e5,a5]@31 ~ [d5,f#5,a5]@30 ~@2 [c#5,e5,a5]@39, ~@26 e5@63 ~@103]/6", // E F#m E A D A
E: "[~@9 b4@14 ~ [c#5,e5,a5]@28 ~@2 f#5@33 ~ [b4,e5,g#5]@12 ~ [c#5,f#5,a5]@14 ~@2 [a4,d5,f#5]@34 ~ [b4,e5,g#5]@12 ~ [c#5,f#5,a5]@14 ~@2 [a4,d5,f#5]@11, ~@8 g#5@14 ~@31 [d5,a5]@34 ~@105]/6", // A E F#m D E F#m D D5
F: "[~@5 [b4,e5,g#5]@4 ~@15 [c#5,a5]@48 [b4,g#5]@14 ~@2 [c#5,e5,a5]@30 ~ [a4,c#5,a5]@12 ~ [b4,e5,g#5]@17 ~@2 [c#5,a5]@47 [b4,g#5]@14 ~@2 [c#5,e5,a5]@30 ~ [a4,c#5,a5]@11, ~@24 e5@63 ~@64 e5@62 ~@43]/8", // E F#m E A E F#m E A
G: "[~@2 [b4,e5,g#5]@17 ~@2 [a4,c#5,e5]@27 ~@2 [a4,c#5,f#5]@33 ~ [b4,e5,g#5]@26 ~@3 [a4,d5,f#5]@34 [a4,d5,f#5]@5 ~@3 [a4,d5,f#5]@5]/5", // E A F#m E D
H: "[~@3 [d5,f#5,a5]@5 ~@3 [d5,f#5,b5]@4 ~@4 [c#5,a5]@47 [b4,g#5]@14 ~@2 [c#5,e5,a5]@31 ~ [a4,c#5,a5]@2 ~@3 [a4,c#5,a5]@2 ~@4 [a4,c#5,a5]@2 ~, ~@19 e5@63 ~@46]/4", // D Bm F#m E A
I: "~@2 [b4,e5,g#5]@3 ~@27", // E
// … 425 more lines
More by Boyzone
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.