0:00/0:00
// Angeleyes — ABBA
// 132.5 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 electric guitar clean (copy of ch 7 piano); ch 4 tremolo strings (copy of ch 7 piano)
// note: Full arrangement: all 143 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132.5/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, A@4 for four bars: edit a riff to change every repeat.
// chords · piano
const piano = note(`<
~ A@4 B@2 C@2 ~@4 D@7 E@2 F@4 G H I J@3 K L M@3 N@2 O P Q@2 R@2 S@2 T@2 U@2 V W X Y V W X Y ~@3 Z@8 AA@8 AB@7 AC@6
AD@4 AE@3 AF@8 AG AH@2 AI@2 AJ@6 AK AL AM@2 AN@2 AO@4 AP AQ AR AS AT AU AV AW@4 AX AY AZ@2 ~
>`.pickRestart({
A: "[~@9 g#3@3 c#4@3 c#4@3 d#4@3 e4@6 g#3@3 c#4@2 c#4@3 ~ d#4@3 e4@6 f#4@2 e4@6 ~ e4@3 d#4@3 b3@6 c#4@2 d#4@6 ~ f#3@3 b3@6 c#4@3 d#4@6 ~@3]/4",
B: "[~@9 g#3@3 c#4@3 c#4@3 d#4@3 e4@5 g#3@3 ~ c#4@3 c#4@3 d#4@3 e4@6 f#4@3]/2",
C: "[e4@6 e4@2 d#4@3 ~ b3@6 c#4@3 d#4@6 f#3@3 b3@6 c#4@3 d#4@6 ~@3]/2",
D: "[~@4 [d#4,f#4,c#5]@6 [d#4,f#4,b4]@6 ~@3 a#4@3 [d#4,b4]@2 ~ d#4@3 ~@5 b4@3 ~ b4@3 a#4@3 a#4@2 ~ b4@2 b4@3 [e4,g#4,d#5]@6 [e4,g#4,c#5]@6 ~@3 b4@3 [e4,b4]@3 b4@9 a#4@3 a#4@3 g#4@3 g#4@3 a#4@3 a#4@3 [d#4,f#4,c#5]@6 [d#4,f#4,b4]@6 ~@3 a#4@3 [d#4,b4]@3 d#4@3 ~@6 b4@3 b4@3 a#4@3 a#4@3 b4@3 b4@3 [e4,g#4,d#5]@6 c#5@6 ~@6 [g#4,b4]@3, ~@22 f#4@6 d#4@12 [d#4,f#4]@6 g#4@5 ~@18 g#4@6 ~@42 f#4@6 d#4@12 [d#4,f#4]@6 [d#4,g#4]@6 ~@17 e4@3 ~, ~@8 c#5@3 ~@29 g#4@5 ~@11, ~@25 g#4@15 ~@5 d#4@6 ~@21 [c#4,f#4]@15 [c#4,e4]@6 [c#4,f#4]@6 ~@21 c#5@9 ~@39]/7", // D#m7 B G#m Emaj7 C#m E5 D#m7 B …
E: "[[f#4,b4]@3 ~@6 a#4@3 a#4@2 ~ g#4@3 g#4@2 ~@3 a#4@3 ~ [b4,e5]@5 ~ [b4,d#5]@6 b4@3 e4@3 f#4@3, c#4@14 a#4@6 a#4@3 ~@3 f#4@6 f#4@6 ~@10, ~@5 [c#4,e4]@2 [c#4,f#4]@2 ~@4 [b3,d#4]@3]/2", // B5 E5 B C#m F#5 B
F: "[a#3 a#3@2 ~@2 [f#4,a#4,c#5]@2 ~ g#4 d#4@2 ~@3 b4 [d#4,b4] e4 e4@2 [f#4,a#4]@2 [g#4,b4]@2 [a#4,c#5]@2 [f#4,b4,e5]@2 [f#4,b4,d#5]@2 b4 e4 f#4, [c#4,f#4]@3 ~@4 [c#4,f#4,a#4]@2 ~@6 f#4@2 ~@12 [b3,d#4]@3, ~@16 [a#4,c#5]@3 ~@13]/4", // F# G#m F# G#m A#m Esus2 B F#5 …
G: "[a#3,c#4,f#4]@3 [f#4,a#4,c#5]@2 ~ g#4 [c#4,f#4,a#4], ~@5 [c#4,f#4,a#4]@2 ~", H: "d#4 d#4@2 ~@5, [f#4,b4]@3 ~@5",
I: "b4 ~@2 [f4,g#4]@2 [f#4,a#4] [f4,g#4,b4]@2", // Fm F# Fdim
J: "[[e4,a#4,c#5]@33 ~@6 g#4@3 g#4@3 ~ g#4@3 g#4@2 ~ [b3,g#4]@8 ~ f#4@2 d#4 d#4@6 ~@2, ~@13 [b3,e4]@2 b3@2 ~@3 [b3,d#4] [b3,f#4]@2 ~, ~@15 e4 ~ e4@3 ~@4]/3", // A#dim E E5 B B5
K: "~ [b3,e4,g#4]@3 [b3,d#4,f#4]@2 [b3,e4,g#4]@2", L: "[b3,f#4,a#4] g#4@3 f#4 f#4@2 ~, ~ [a#3,c#4]@6 ~",
M: "[~@3 f#4@6 c#5@3 c#5@6 a#4@5 b4@6 ~ f#4@2 [d#4,f#4]@6 [c#4,e4]@6 [b3,d#4]@6 d#4@9 c#4@3 c#4@6 ~@4, ~@3 c#4@9 [c#4,f#4]@11 d#4@9 ~@18 [g#3,b3]@18 ~@4]/3", // D#m C#m B F#5 G#m
N: "[~@2 [e4,g#4,d#5]@6 [e4,g#4,c#5]@6 g#4@3 g#4@3 g#4@3 a#4@3 [b3,e4,g#4]@8 ~@5 f#5@6 ~@3, ~@14 [b3,e4]@6 [b3,e4]@6 ~@8 d#4@2 f#5@3 ~@9, ~@35 [b3,f#4]@2 [b3,d#4,f#4]@6 ~@5]/2", // Emaj7 C#m E E5 B5 B
O: "~ [b3,e4,g#4]@9 f#4@3 f#4@3 [b3,e4,g#4]@6 [b3,f#4,a#4]@2, ~@5 [b3,d#4]@3 ~@4", // E Bmaj7 B
P: "~ g#4@9 f#4@3 f#4@6 ~@5, ~ [a#3,c#4]@18 ~@5", // A#m
Q: "[~ f#4@6 c#5@3 c#5@6 a#4@5 ~ b4@8 f#4@6 f#4@6 f#4@6, ~ c#4@9 [c#4,f#4]@11 d#4@15 d#4@12]/2", // F#5
R: "[[g#3,e4]@3 [b3,g#4]@2 [g#3,e4]@2 [f#3,d#4,f#4]@5 ~@4]/2", // C#m E C#m D#m
S: "[[a#3,c#4,f#4]@2 [c#4,a#4,c#5] [c#4,a#4,c#5]@2 [c#4,f#4,a#4]@2 b4@3 f#4@2 [c#4,e4]@2 [b3,d#4]@2, ~@7 d#4@5 ~@4]/2", // F# C#m B
T: "[d#4@3 c#4 ~@4 [e4,g#4,d#5]@2 [g#3,e4,g#4,c#5]@2 ~ [e4,g#4,b4]@2 [e4,g#4,b4], [g#3,b3]@2 c#4@3 ~@3]/2", // Emaj7 C#m E G#m
U: "[~@3 b4@6 [d#4,f#4] ~ [c#4,e4] [b3,d#4]@24 ~@12]/2", V: "~ g#3 c#4!2 d#4 e4@2 g#3", W: "c#4!2 d#4 e4@2 f#4 e4@2",
X: "e4 d#4 b3@2 c#4 d#4@2 f#3", Y: "b3@2 c#4 d#4@2 ~@3",
Z: "[~@23 [d#4,f#4,c#5]@6 [d#4,f#4,b4]@6 ~@3 a#4@3 [d#4,b4]@3 d#4@3 ~@6 b4@3 b4@3 a#4@3 a#4@3 b4@3 b4@2 ~ [g#4,d#5]@5 ~ [e4,c#5]@6 ~@3 b4@3 [e4,b4]@2 ~ b4@8 a#4@3 ~ a#4@2 g#4@3 g#4@3 a#4@3 a#4@3 [d#4,f#4,c#5]@6 [d#4,f#4,b4]@6 ~@3 a#4@3 [d#4,b4]@3 d#4@3 ~@6 b4@3 b4@3 a#4@3 a#4@3 b4@3 b4@3 [e4,g#4,d#5]@6 c#5@6 ~@6 [e4,g#4,b4]@3 [f#4,b4]@3 ~@2, ~@41 f#4@6 d#4@12 [d#4,f#4]@6 [d#4,g#4]@6 ~@20 f#4@15 ~@30 f#4@6 d#4@12 [d#4,f#4]@6 [d#4,g#4]@6 ~@21 c#4@5, ~@44 g#4@15 ~@11 e4@6 g#4@6 ~@7 g#4@6 ~@44 g#4@15 ~@38, ~@44 c#5@9 ~@39 c#4@14 [c#4,e4]@6 [c#4,f#4]@6 ~@21 c#5@9 ~@44]/8", // D#m7 B G#m G#5 C#m E5 D#m7 B …
AA: "[~@4 a#4@3 a#4@3 g#4@3 g#4@2 ~@4 a#4@3 [f#4,b4,e5]@6 [f#4,b4,d#5]@6 b4@3 e4@3 f#4@3 a#3@3 a#3@6 ~@6 [f#4,a#4,c#5]@6 ~@3 g#4@3 d#4@6 ~@9 b4@3 [d#4,b4]@3 e4@3 e4@6 [f#4,a#4]@6 [g#4,b4]@6 [a#4,c#5]@6 [f#4,b4,e5]@6 [f#4,b4,d#5]@6 b4@3 e4@3 f#4@3 [a#3,c#4,f#4]@9 [f#4,a#4,c#5]@6 ~@3 g#4@3 [c#4,f#4,a#4]@3 d#4@3 d#4@6 ~@15 b4@3 ~@2, ~@10 [c#4,e4]@5 a#4@3 ~@70 f#4@6 ~@36 [b3,d#4]@9 ~@15 [c#4,f#4,a#4]@6 ~@32, ~@16 [c#4,f#4]@6 ~@12 [b3,d#4]@9 [c#4,f#4]@9 ~@12 [c#4,f#4,a#4]@6 ~@21 [a#4,c#5]@9 ~@63 [f#4,b4]@9 ~@20]/8", // Esus2 B F# G#m F# G#m A#m Esus2 …
AB: "[~@4 [f4,g#4]@6 ~ f#4@2 [f4,g#4,b4]@6 [e4,a#4,c#5]@33 ~@6 [e4,g#4] g#4@2 g#4@3 ~ [e4,g#4]@3 g#4@3 [b3,e4,g#4]@8 ~ f#4@2 b3 [b3,d#4,f#4]@6 ~@6 [b3,g#4]@8 ~ f#4@5 ~ [b3,e4]@5 [b3,f#4,a#4]@3 ~@10 f#4@2 f#4@6 ~@6 f#4@6 c#5@3 c#5@6 a#4@6 [d#4,b4]@5, ~@10 a#4@3 ~@45 b3@6 b3@6 ~@9 [b3,d#4]@3 ~@21 [b3,d#4]@6 ~@9 a#3@18 ~@32, ~@59 e4@6 ~@29 e4@9 ~@6 g#4@6 ~@3 g#4@9 ~@41, ~@119 c#4@18 ~@5 c#4@9 [c#4,f#4]@12 ~@5]/7", // Fm Fdim A#dim E B E E5 Bmaj7 …
AC: "[~ f#4@3 [d#4,f#4]@6 [c#4,e4]@5 b3 [b3,d#4]@6 d#4@8 c#4@3 c#4@6 ~@6 [e4,g#4,d#5]@6 [e4,g#4,c#5]@6 g#4@3 g#4@3 g#4@3 a#4@3 [b3,e4,g#4]@9 [b3,d#4,f#4]@3 [b3,d#4,f#4]@6 ~@6 [b3,e4,g#4]@9 f#4@3 f#4@2 ~ [e4,g#4]@5 ~ [b3,f#4]@2 ~ g#4@9 f#4@2 f#4@6 ~@6 [c#4,f#4]@4, ~@22 [g#3,b3]@18 ~@17 [b3,e4]@6 [b3,e4]@6 ~@33 [b3,d#4]@5 b3@6 a#4@3 [a#3,c#4]@18 ~@10]/6", // D#m C#m B Emaj7 C#m E B E …
AD: "[~@2 c#5@3 c#5@6 a#4@6 b4@9 f#4@6 f#4@6 f#4@5 [g#3,e4]@9 ~ [b3,g#4]@5 ~ g#3@5 [f#3,d#4,f#4]@15 e4@6 e4@6 [a#3,c#4,f#4]@5, ~@5 [c#4,f#4]@12 d#4@15 d#4@12 ~@14 e4@6 ~@32]/4", // C#m E D#m F# F#5
AE: "[~ [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@6 [c#4,f#4,a#4]@6 b4@9 f#4@6 [c#4,e4]@6 [b3,d#4]@5 ~ d#4@9 c#4@3 ~@12 d#5@5, ~@16 d#4@15 ~@11 g#3@12 ~@12 [e4,g#4]@6, ~@43 b3@12 c#4@17]/3", // F# C#m B E
AF: "[[e4,g#4,c#5]@6 g#4@3 g#4@3 [e4,g#4]@3 g#4@3 [b3,e4,g#4]@9 [b3,d#4,f#4]@3 [b3,d#4,f#4]@6 ~@6 [b3,e4,g#4]@8 ~ [b3,d#4]@5 ~ [e4,g#4]@5 ~ [b3,a#4]@3 g#4@8 f#4@3 f#4@6 ~@12 c#5@3 c#5@6 a#4@6 b4@6 f#4@3 [d#4,f#4]@6 [c#4,e4]@6 [b3,d#4]@6 d#4@9 c#4@3 c#4@6 ~@6 g#4@5 [e4,g#4,c#5]@6 ~ g#4@2 g#4@3 g#4@3 a#4@3 [b3,e4,g#4]@8, ~@6 [b3,e4]@6 b3@6 ~@32 f#4@6 b3@6 f#4@3 ~ [a#3,c#4]@18 ~@5 f#4@6 ~@65 [e4,d#5]@6 ~@26, ~@90 c#4@8 [c#4,f#4]@12 d#4@9 ~@18 [g#3,b3]@18 ~@17 [b3,e4]@6 [b3,e4]@6 ~@8]/8", // C#m E B E B E Bmaj7 D#m …
AG: "~ [b3,d#4,f#4]@3 [b3,d#4,f#4]@6 ~@6 [b3,e4,g#4]@8", // B E
AH: "[~ f#4@3 f#4@3 [b3,e4,g#4]@5 ~ [f#4,a#4]@2 ~ g#4@9 f#4@3 f#4@6 ~@5 f#4@6 ~ c#5@2, ~ [b3,d#4]@6 ~@5 b3@3 a#3@18 ~@15, ~@16 c#4@18 ~@5 c#4@9]/2", // E F# B
AI: "[c#5@2 a#4@2 b4@3 f#4@2 f#4@2 f#4@2 [g#3,e4]@3, [c#4,f#4]@4 d#4@5 d#4@4 ~@3]/2", // C#m F#5
AJ: "[[b3,g#4]@6 [g#3,e4]@6 [f#3,d#4,f#4]@15 ~@11 [a#3,c#4,f#4]@6 ~ c#4@2 [c#4,a#4,c#5]@6 [c#4,f#4,a#4]@6 b4@9 f#4@6 [c#4,e4]@6 [b3,d#4]@6 d#4@9 c#4@3 ~@12 [e4,g#4]@5 ~ [e4,g#4]@6 ~@2 [e4,g#4,b4]@6 [e4,g#4,b4]@3 ~@3 b4@6 [d#4,f#4] e4, ~@44 [a#4,c#5]@3 ~@12 d#4@15 ~@12 [g#3,b3]@12 c#4@18 ~@28, ~@109 d#5@6 c#5@6 ~@23]/6", // E C#m D#m F# C#m B E D#m …
AK: "c#4 [b3,d#4]@23", AL: "~@16 g#3@3 c#4@5",
AM: "[c#4@3 ~ d#4@2 e4@6 c#4@3 c#4@3 d#4@3 ~ e4@5 f#4@3 e4@6 e4@3 d#4@3 b3@6]/2",
AN: "[c#4@3 d#4@6 f#3@3 b3@6 c#4@3 d#4@6 ~@12 g#3@3 c#4@2 c#4@3 ~]/2",
AO: "[d#4@3 e4@5 g#3@3 c#4@3 c#4@3 ~ d#4@2 e4@6 f#4@3 e4@6 e4@3 d#4@3 b3@6 c#4@3 d#4@6 f#3@3 b3@6 c#4@3 d#4@6 ~@12 g#3@3 c#4@5 c#4@2]/4",
AP: "~ d#4@3 e4@6 c#4@3 c#4@3 d#4@3 e4@5", AQ: "~ f#4@3 e4@6 e4@3 d#4@3 b3@6 c#4@2",
AR: "~ d#4@6 f#3@3 b3@6 c#4@3 d#4@5", AS: "~@4 g#3 c#4@2 c#4", AT: "d#4 e4@2 c#4!2 d#4 e4@2",
AU: "f#4 e4@2 e4 d#4 b3@2 c#4", AV: "d#4@2 f#3 b3@2 c#4 d#4@2",
AW: "[~@11 g#3@3 c#4@6 c#4@3 d#4@3 e4@6 c#4@3 c#4@3 d#4@3 e4@6 f#4@3 e4@6 e4@3 d#4@3 b3@6 c#4@3 d#4@6 f#3@3 b3@5 c#4@3 ~ d#4@6 ~]/4",
AX: "~@10 g#3@3 c#4@6 c#4@3 d#4@2", AY: "~ e4@6 c#4@3 c#4@3 d#4@3 e4@6 f#4@2",
AZ: "[~ e4@6 e4@3 d#4@3 b3@6 c#4@3 d#4@6 f#3@3 b3@5 c#4@3 ~ d#4@6 ~@2]/2",
})).s("gm_piano").gain(0.4)
// bass · electric bass finger
const bass = note(`<
~ A@2 B@2 C@2 D@2 E@3 F G@8 H@8 I J@8 K@2 L@2 M N M O M P Q R@2 S T U V S T U V W@2 X Y@8 Z AA@8 AB AC@8 AD@6 AE AF AG
AH AI M AJ AK@8 AL@6 AM@4 AN@2 AO@6 AP AQ AR AS AT AU AV AW@6 AX@2 AY
>`.pickRestart({
A: "[~@9 g#1@2 c#2@6 d#2@3 ~ e2@6 g#1@3 c#2@5 d#2@3 ~ e2@6 ~@3]/2",
B: "[~@9 f#1@2 b1@6 ~ c#2@3 d#2@5 f#1@3 ~ b1@6 c#2@3 d#2@6 ~@3]/2",
C: "[~@9 g#1@3 c#2@6 d#2@2 e2@6 g#1@3 ~ c#2@6 d#2@2 e2@6 ~@4]/2",
D: "[~@9 f#1@3 b1@6 c#2@2 d#2@6 f#1@3 ~ b1@6 c#2@3 d#2@6 ~@3]/2",
E: "[~@6 f#2@2 f#2@3 ~ f#2@2 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@2 f#2@3 f#2@3 f#2@3 f#2@2]/3",
F: "~ f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@2",
G: "[~ f#2@3 b1@6 b1@6 b1@6 b1@5 g#1@6 g#1@6 g#1@6 g#1@6 e1@6 e1@6 ~ e1@5 e1@6 f#1@6 f#1@6 f#1@6 f#1@6 b1@6 b1@6 b1@6 b1@6 g#1@6 g#1@6 g#1@6 g#1@6 e1@6 e1@6 e1@5 e1@6 ~ f#1@5 f#1@6 ~ f#1@5 f#1@4]/8",
H: "[~ b1@2 b1@2 b1@2 b1@2 a#1@2 a#1@2 a#1@2 a#1@2 g#1@2 g#1@2 g#1@2 g#1@2 f#1@2 f#1@2 g#1@2 a#1@2 b1@2 b1@2 b1@2 b1@2 a#1@2 a#1@2 a#1@2 a#1@2 g#1@2 g#1@2 g#1@2 g#1@2 c#2@2 c#2@2 c#2@2 c#2]/8",
I: "~@3 f#1@3 f#1@3 f#1@3 f#1@3 ~ f#1@2 f#1@3 f#1@3",
J: "[f#1@3 ~ f#1@2 f#1@3 ~ f#1@2 f#1@3 f#1@6 f#1@6 ~ b1@6 b1@5 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@5 b1@6 b1@6 b1@6 b1@6 e1@6 e1@6 e1@6 e1@6 f#1@6 f#1@6 f#1@5 f#1@5]/8",
K: "[~@2 b1@6 b1@6 b1@6 b1@5 b1@6 b1@6 b1@6 b1@5]/2", L: "~ a#1@6 a#1@6 a#1@6 a#1@5", M: "b1!4", N: "e1!4",
O: "f#1!4", P: "e2!4", Q: "c#2 d#2 e2 f#2@5", R: "[b1@3 ~]/2", S: "~ g#1 c#2@2 d#2 e2@2 g#1", T: "c#2@2 d#2 e2@2 ~@3",
U: "~ f#1 b1@2 c#2 d#2@2 f#1", V: "b1@2 c#2 d#2@2 ~@3", W: "f#2!8",
X: "f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@2 f#2@3 f#2",
Y: "[~@3 f#2@2 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 f#2@3 b1@6 b1@6 b1@6 b1@6 g#1@6 g#1@6 g#1@6 g#1@6 e1@6 e1@6 e1@6 e1@6 f#1@6 f#1@5 f#1@6 f#1@6 b1@6 b1@6 b1@6 b1@6 g#1@6 g#1@6 g#1@6 g#1@6 e1@6 e1@6 e1@6 e1@6 f#1@2]/8",
Z: "~@2 f#1@3 f#1@3 f#1@3 b1",
AA: "[~@3 b1@6 b1@6 ~ b1@6 a#1@6 a#1@6 a#1@6 a#1@6 g#1@6 g#1@6 g#1@6 g#1@6 f#1@6 f#1@6 g#1@6 a#1@6 b1@6 b1@6 b1@6 b1@6 a#1@6 a#1@6 a#1@6 a#1@6 g#1@6 g#1@6 g#1@6 g#1@6 c#2@6 c#2@6 c#2@6 c#2@6 f#1@2]/8",
AB: "~ f#1@3 ~ f#1@3 f#1@3 f#1@2 f#1@3 f#1@3 f#1@3 ~ f#1",
AC: "[~ f#1@3 ~ f#1@3 f#1@2 f#1@6 f#1@6 ~ b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 a#1@6 a#1@5 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 b1@6 b1@6 b1@5 b1@6 ~ e1@6 e1@5 e1@6 e1@6 ~ f#1@5 f#1@6 f#1@6 f#1@6 b1@3]/8",
AD: "[~@3 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 a#1@5 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 b1@6 b1@6 b1@6 b1@6 e1@6 e1@6 e1@5 e1@6 b1@5]/6",
AE: "~ b1@6 ~ b1@5 b1@6 f#1@5", AF: "~ f#1@6 f#1@6 f#1@6 b1@5", AG: "~ b1@6 b1@6 b1@6 e2@5",
AH: "~ e2@6 e2@5 e2@6 f#1@3 f#1@3", AI: "f#1!2 f#1@2 f#1@2 b1@2", AJ: "b1@6 b1@5 b1@6 ~ a#1@6",
AK: "[a#1@5 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 a#1@6 b1@6 b1@6 b1@6 b1@6 e1@5 e1@6 ~ e1@5 e1@6 f#1@6 f#1@6 f#1@6 ~ f#1@5 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 b1@6 a#1@5 a#1@6 ~ a#1@5 a#1@6 ~ a#1@5 a#1@3]/8",
AL: "[~@3 a#1@6 a#1@6 b1@6 b1@6 b1@6 b1@6 e1@6 e1@6 e1@6 e1@5 b1@6 ~ b1@5 b1@6 b1@6 ~ f#1@5 f#1@6 f#1@6 f#1@6 b1@6 b1@6 b1@6 b1@6 e2@6 e2@4]/6",
AM: "[~@2 e2@6 e2@6 c#2@2 d#2@3 e2@3 f#2@15 b1@36 ~@15 g#1@3 c#2@5]/4",
AN: "[~ d#2@3 e2@5 g#1@3 c#2@6 d#2@3 e2@6 ~@12 f#1@3 b1@6]/2",
AO: "[c#2@3 d#2@6 f#1@3 b1@6 c#2@3 d#2@6 ~@12 g#1@3 c#2@5 d#2@3 ~ e2@5 g#1@3 c#2@6 d#2@3 e2@6 ~@12 f#1@3 c#2@3 d#2@6 f#1@3 ~@6 b1@6 c#2@3 d#2@6 ~@14 c#2@6 d#2@2]/6",
AP: "~ e2@9 c#2@6 d#2@3 e2@5", AQ: "~ f#2@3 e2@6 ~@6 b1@6 c#2@2", AR: "~ d#2@9 b1@6 c#2@3 d#2@5",
AS: "~ e2@3 d#2@6 ~@6 c#2@5 d#2@3", AT: "e2@3 c#2@2 d#2 e2@2", AU: "f#2 e2@2 ~@2 b1@2 c#2",
AV: "d#2@3 b1@2 c#2 d#2@2",
AW: "[e2@2 d#2@6 ~@6 c#2@6 ~ d#2@2 e2@9 c#2@6 d#2@3 e2@6 f#2@3 e2@6 ~@6 b1@6 c#2@3 d#2@9 b1@5 c#2@3 ~ d#2@6 e2@2 d#2@6 ~@6 c#2@6 d#2@3 e2@9 c#2@6 d#2@3 e2@6 f#2@2]/6",
AX: "[~ e2@6 ~@6 b1@6 c#2@2 d#2@9 b1@6 c#2@3 d#2@6 e2@3]/2", AY: "~ d#2@6 ~@17",
})).s("gm_electric_bass_finger").gain(0.33).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
~ A B C D B E F E F E G H I G J@14 K L M J@3 N@3 O P@3 D@7 Q ~ C D@9 R S E@3 S G@3 T G@8 U V E G@4 W J@3 N@4 P@3 D@4 X
E@2 G@4 J@4 N@4 Y ~ Z D@4 AA E@3 G@3 J@4 AB N@3 P@3 AC Q
>`.pickRestart({
A: "~@2 x!2", B: "x ~@4 x ~@5 x ~@6 x ~@4 x", C: "~ x!3", D: "x!4", E: "~@5 x ~@5 x ~@5 x ~@5 x",
F: "~@6 x ~@5 x ~@4 x ~@5 x", G: "~@2 x ~@2 x ~@2 x ~@2 x", H: "~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~",
I: "~ x ~@2 x ~@5 x ~@5 x ~@5 x ~", J: "~ x ~ x ~ x ~ x", K: "~@3 x ~@5 x ~@5 x ~@6 x ~",
L: "~@3 x ~@3 x ~@5 x ~@5 x ~@4", M: "~ x ~@2 x ~@4 x ~@5 x ~@5 x ~@2", N: "~ x ~@2 x ~@2 x ~@2 x ~",
O: "~ x ~@5 x ~@6 x ~@4 x ~@4", P: "~ x ~@5 x ~@5 x ~@5 x ~@4", Q: "x", R: "x ~@5 x ~@5 x ~@5 x ~@4 x",
S: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", T: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
U: "~ x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~", V: "~@2 x ~ x ~@3 x ~ x ~@3 x ~@2 x ~@2 x ~ x ~",
W: "~@3 x ~@6 x ~@4 x ~@5 x ~@2", X: "x ~@4 x ~@5 x ~@5 x ~@5 x", Y: "~ x ~@5 x ~@5 x ~@10", Z: "~@13 x ~@5 x ~@4",
AA: "x ~@5 x ~@5 x ~@4 x ~@5 x", AB: "~@3 x ~@5 x ~@4 x ~@5 x ~@3", AC: "~ x ~@5 x ~@5 x ~@4 x ~@5",
})).gain(0.29)
// drums · snare
const snare = s("sd").struct(`<
~ A B C D E B E B E A F G H I J@4 K J L J@8 M N J@3 K@4 O@3 P@7 ~@2 P@11 Q R@3 S T@2 U V T@7 U W X R T@4 Y Z@3 AA@4
AB@4 C@2 AC A@4 I@3 J@3 AD K@4 AE ~ AF P@4 R@4 AG T@3 Z@4 AA@3 AB@3 C AH
>`.pickRestart({
A: "~@11 x ~@11 x", B: "~ x", C: "x!2", D: "x ~@10 x ~@12", E: "x ~@10 x ~@11 x", F: "~@11 x ~@10 x ~",
G: "~@10 x ~@8 x ~@2 x ~", H: "~ x ~@8 x ~@11 x ~", I: "~@5 x ~@5 x", J: "~@3 x ~@3 x", K: "~@2 x ~@2 x",
L: "~@8 x ~@12 x ~@2", M: "~@13 x ~@10", N: "~ x ~@7 x ~@11 x ~@2", O: "~@7 x ~@11 x ~@4", P: "~ x ~ x",
Q: "~@5 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x", R: "~@5 x ~@11 x ~@6", S: "~@5 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x",
T: "~ x ~@2 x ~", U: "~@2 x ~@5 x ~@2 x", V: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4",
W: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~", X: "~ x ~@2 x ~@3 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x",
Y: "~@4 x ~@10 x ~@8", Z: "~ x ~@3 x ~@2", AA: "~ x ~@5 x ~@4", AB: "~ x ~@11 x ~@10", AC: "x ~@11 x ~@10 x",
AD: "~@9 x ~@10 x ~@3", AE: "~@7 x ~@16", AF: "~@19 x ~@4", AG: "~@5 x ~@10 x ~@7", AH: "x",
})).gain(0.29)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C D E D F G H I J K L M N O P@2 Q P R N P N P N P N P S T N P G U I V W X Y Z AA P AA P AA P AA P AA P AA P AB P
AA P AA@2 P AC I AD I AD K AE K AE K AE K AF K AE K AE AG AH AI AJ AK K AE K AL P O AM U I AN AO AP K AP AQ P AB P AR
I AS I AF K AF P AT P AU I AN I AN AV K AV M AW P AX D AY I AY K AZ K BA P BB BC BD BE I BF K BG K BH BI
>`.pickRestart({
A: "~@12 x ~@2 x ~@2 x ~@2 x ~ x", B: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~@3",
C: "x ~@4 x ~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@3", D: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~ x",
E: "~@6 x ~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2", F: "~@5 x ~@3 x ~ x ~@2 x ~@3 x ~ x ~@2 x",
G: "~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~ x", H: "~@6 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@2 x",
I: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", J: "~@4 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@2 x ~",
K: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", L: "~@4 x ~ x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~",
M: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2", N: "~ x!7", O: "x!6 ~ x", P: "x!8",
Q: "~@3 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2", R: "~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2",
S: "~@4 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", T: "~ x ~ x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
U: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@5 x ~@2 x", V: "~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@3 x ~@3",
W: "~ x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~ x ~@2 x ~", X: "~ x ~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@4",
Y: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4", Z: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2", AA: "x!7 ~",
AB: "x!5 ~ x!2", AC: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@5 x", AD: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x",
AE: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~", AF: "~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~",
AG: "~ x ~@3 x ~ x ~@2 x ~@3 x ~ x ~@5 x ~", AH: "~ x ~@3 x ~ x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~",
AI: "~ x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@5 x", AJ: "~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
AK: "~ x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@6 x", AL: "x ~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@5 x ~@2",
AM: "x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x", AN: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x",
AO: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", AP: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~",
AQ: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@6 x ~ x ~@2", AR: "x ~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x",
AS: "~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x", AT: "x!4 ~ x!3", AU: "x ~@2 x ~@5 x ~ x ~@3 x ~@2 x ~@2 x ~ x",
AV: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~", AW: "~ x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2",
AX: "x ~@2 x ~@2 x ~@4 x ~@3 x ~@2 x ~@2 x ~@2", AY: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x",
AZ: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~", BA: "~@4 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2", BB: "x!2 ~ x!5",
BC: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3", BD: "x ~@2 x ~@4 x ~@2 x ~@3 x ~ x ~@2 x ~@2 x",
BE: "~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", BF: "~@2 x ~@5 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~",
BG: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", BH: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2", BI: "x!2 ~@6",
})).gain(0.29)
// drums · open hat
const open_hat = s("oh").struct(`<
~@3 A ~ A ~ A ~ A ~ A ~ B ~ C D ~@2 C E ~ C ~ C ~ C ~ C ~ C ~ C ~ C F ~ E ~ G@2 ~ H ~ H ~ H ~ H ~ H ~ H ~ I ~ H ~ H@2
~ H ~ J ~ K ~ K ~ K ~ K ~ L ~ K ~ K@2 ~ J ~ K ~ K ~ K ~ D ~ F ~ M ~ N ~ N@2 ~ I ~ O ~ O ~ L ~ L ~ P ~ Q ~ M ~ M@2 ~ R
~ S ~ S ~ T ~ T ~ U ~ B ~ V ~ Q@2 ~ Q ~ W ~ W ~
>`.pickRestart({
A: "~ x ~@10", B: "~ x ~@22", C: "x", D: "~@3 x", E: "~@23 x", F: "~@17 x ~@6", G: "~@11 x", H: "~@7 x",
I: "~@5 x ~@2", J: "~@5 x", K: "~@19 x ~@4", L: "~@13 x ~@10", M: "~@11 x ~@12", N: "~@2 x", O: "~@7 x ~@4", P: "~ x",
Q: "~@5 x ~@18", R: "~@5 x ~@6", S: "~@3 x ~@4", T: "~ x ~", U: "~@7 x ~@16", V: "~ x ~@2", W: "~ x ~@4",
})).gain(0.29)
// drums · tambourine
const tambourine = s("tb").struct(`<
~@21
[~ x ~ x ~ x ~ x]!9
[~@2 x ~@2 x ~@2 x ~@2 x]
[~ x ~@4]
~@38
[~@7 x]
[~@2 x ~@2 x ~@2 x ~@2 x]!8
~@64
>`).gain(0.37)
stack(piano, bass, kick, snare, hihat, open_hat, tambourine)
More by ABBA
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.