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: 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@5 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 L M@2 N O P Q P R S T@2 U V W X U V W X Y@2 Z AA@8 AB AC@8 AD AE@8 AF@6 AG AH
AI AJ AK P AL AM@8 AN@6 AO@4 AP@2 AQ@6 AR AS AT AU AV AW AX AY@6 AZ@2 BA
>`.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@5 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@5 a#1@6 ~ a#1@5 a#1@6 a#1@6 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: "~ b1@6 ~ b1@6 b1@6 b1@4", L: "~ b1@6 b1@6 b1@6 b1@5", M: "~ a#1@6 a#1@6 a#1@6 a#1@5", N: "~ b1@5 b1@6 b1@6 b1@6",
O: "e1!4", P: "b1!4", Q: "f#1!4", R: "e2!4", S: "c#2 d#2 e2 f#2@5", T: "[b1@3 ~]/2", U: "~ g#1 c#2@2 d#2 e2@2 g#1",
V: "c#2@2 d#2 e2@2 ~@3", W: "~ f#1 b1@2 c#2 d#2@2 f#1", X: "b1@2 c#2 d#2@2 ~@3", Y: "f#2!8",
Z: "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",
AA: "[~@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",
AB: "~@2 f#1@3 f#1@3 f#1@3 b1",
AC: "[~@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",
AD: "~ f#1@3 ~ f#1@3 f#1@3 f#1@2 f#1@3 f#1@3 f#1@3 ~ f#1",
AE: "[~ 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",
AF: "[~@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",
AG: "~ b1@6 ~ b1@5 b1@6 f#1@5", AH: "~ f#1@6 f#1@6 f#1@6 b1@5", AI: "~ b1@6 b1@6 b1@6 e2@5",
AJ: "~ e2@6 e2@5 e2@6 f#1@3 f#1@3", AK: "f#1!2 f#1@2 f#1@2 b1@2", AL: "b1@6 b1@5 b1@6 ~ a#1@6",
AM: "[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",
AN: "[~@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",
AO: "[~@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",
AP: "[~ d#2@3 e2@5 g#1@3 c#2@6 d#2@3 e2@6 ~@12 f#1@3 b1@6]/2",
AQ: "[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",
AR: "~ e2@9 c#2@6 d#2@3 e2@5", AS: "~ f#2@3 e2@6 ~@6 b1@6 c#2@2", AT: "~ d#2@9 b1@6 c#2@3 d#2@5",
AU: "~ e2@3 d#2@6 ~@6 c#2@5 d#2@3", AV: "e2@3 c#2@2 d#2 e2@2", AW: "f#2 e2@2 ~@2 b1@2 c#2",
AX: "d#2@3 b1@2 c#2 d#2@2",
AY: "[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",
AZ: "[~ e2@6 ~@6 b1@6 c#2@2 d#2@9 b1@6 c#2@3 d#2@6 e2@3]/2", BA: "~ 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 E F@2 G F G H I J K L@5 M L@8 N O P L@2 Q R@3 S T U V W D@6 X ~ C D@9 Y Z G AA G AB H@3 AC H@7 AD AE AF G AG
H@3 AH L@3 R@3 AI U@3 AJ W D AK AL G@2 AM H@3 L@4 AN R@2 AO AP ~ AQ AR D@3 AS G@3 H@3 AH L@3 AT R@3 AU U@2 AV X
>`.pickRestart({
A: "~@2 x!2", B: "x ~@4 x ~@5 x ~@6 x ~@4 x", C: "~ x!3", D: "x!4", E: "x ~@5 x ~@4 x ~@6 x ~@4 x",
F: "~@6 x ~@5 x ~@4 x ~@5 x", G: "~@5 x ~@5 x ~@5 x ~@5 x", H: "~@2 x ~@2 x ~@2 x ~@2 x",
I: "~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~", J: "~ x ~@2 x ~@5 x ~@5 x ~@5 x ~", K: "~@4 x ~@5 x ~@4 x ~@5 x ~@2",
L: "~ x ~ x ~ x ~ x", M: "~@3 x ~@4 x ~@6 x ~@5 x ~@2", N: "~@3 x ~@5 x ~@5 x ~@6 x ~",
O: "~@3 x ~@3 x ~@5 x ~@5 x ~@4", P: "~ x ~@2 x ~@4 x ~@5 x ~@5 x ~@2", Q: "~@3 x ~@5 x ~@4 x ~@5 x ~@3",
R: "~ x ~@2 x ~@2 x ~@2 x ~", S: "~ x ~@5 x ~@6 x ~@4 x ~@4", T: "~@2 x ~@4 x ~@5 x ~@5 x ~@4",
U: "~ x ~@5 x ~@5 x ~@5 x ~@4", V: "~ x ~@5 x ~@5 x ~@4 x ~@5", W: "~ x ~@4 x ~@5 x ~@5 x ~@5", X: "x",
Y: "x ~@5 x ~@5 x ~@5 x ~@4 x", Z: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", AA: "~@5 x ~@5 x ~@5 x ~@4 x ~",
AB: "~@5 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~", AC: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
AD: "~@4 x ~@6 x ~@4 x ~@5 x ~", AE: "~ x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~",
AF: "~@2 x ~ x ~@3 x ~ x ~@3 x ~@2 x ~@2 x ~ x ~", AG: "~@5 x ~@5 x ~@4 x ~@5 x ~", AH: "~@3 x ~@6 x ~@4 x ~@5 x ~@2",
AI: "~@2 x ~@5 x ~@4 x ~@6 x ~@3", AJ: "~ x ~@4 x ~@5 x ~@6 x ~@4", AK: "x ~@5 x ~@4 x ~@6 x ~@5",
AL: "x ~@4 x ~@5 x ~@5 x ~@5 x", AM: "~@4 x ~@5 x ~@6 x ~@4 x ~", AN: "~@2 x ~@5 x ~@5 x ~@6 x ~@2",
AO: "~@2 x ~@5 x ~@5 x ~@4 x ~@4", AP: "~ x ~@5 x ~@5 x ~@10", AQ: "~@13 x ~@5 x ~@4", AR: "x ~@6 x ~@4 x ~@5 x ~@5",
AS: "x ~@5 x ~@5 x ~@4 x ~@5 x", AT: "~@2 x ~@6 x ~@4 x ~@5 x ~@3", AU: "~ x ~@6 x ~@4 x ~@5 x ~@4",
AV: "~ x ~@4 x ~@6 x ~@4 x ~@5",
})).gain(0.29)
// drums · snare
const snare = s("sd").struct(`<
~ A B C@2 D B D B D A E F G H I@3 J@2 K L I@8 M N I@3 K@4 O@3 P@7 ~@2 P@11 Q R@2 S T U@2 V W U@7 V X Y R S U@3 Z AA@3
AB@3 AC AD@3 AE AF@2 AG A@3 AH H@3 I@3 J K@2 AI K AJ ~ AK P@4 R@3 S@2 U@2 Z AA@4 AB@3 AC AD@2 AF AL
>`.pickRestart({
A: "~@11 x ~@11 x", B: "~ x", C: "x ~@10 x ~@12", D: "x ~@10 x ~@11 x", E: "~@11 x ~@10 x ~",
F: "~@10 x ~@8 x ~@2 x ~", G: "~ x ~@8 x ~@11 x ~", H: "~@5 x ~@5 x", I: "~@3 x ~@3 x", J: "~@9 x ~@10 x ~@3",
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 ~@10 x ~@7",
T: "~@5 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x", U: "~ x ~@2 x ~", V: "~@2 x ~@5 x ~@2 x",
W: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4", X: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~",
Y: "~ x ~@2 x ~@3 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x", Z: "~@4 x ~@10 x ~@8", AA: "~ x ~@3 x ~@2", AB: "~ x ~@5 x ~@4",
AC: "~@2 x ~@10 x ~@10", AD: "~ x ~@11 x ~@10", AE: "~ x ~@10 x ~@11", AF: "x!2", AG: "x ~@11 x ~@10 x",
AH: "~@10 x ~@12 x", AI: "~@8 x ~@10 x ~@4", AJ: "~@7 x ~@16", AK: "~@19 x ~@4", AL: "x",
})).gain(0.29)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C D E F G H I J K L M N O P Q@2 R S T O Q O Q O Q U V W X O Q Y Z J AA AB AC AD AE AF Q AG Q AG Q AG Q AG Q AG Q
AH Q AG Q AG@2 Q AI AJ AK J AK AL AM L AM AN AM AO AP L AM L AM AQ AR AS AT AU AV AM L AW Q P AX AY J AZ BA BB L BB BC
BD AH Q BE J BF BG AP L AP BH BI Q BJ J AZ BK BL BM L BM BN BO Q BP BQ BR J BS BT BU BV BW BX BY BZ CA CB CC CD CE CF
CG CH CI
>`.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: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~@2 x ~ x",
G: "~@5 x ~@3 x ~ x ~@2 x ~@3 x ~ x ~@2 x", H: "~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~ x",
I: "~@6 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@2 x", J: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
K: "~@4 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@2 x ~", L: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
M: "~@4 x ~ x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~", N: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2", O: "~ x!7",
P: "x!6 ~ x", Q: "x!8", R: "~@3 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2",
S: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~@2", T: "~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2",
U: "~@3 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", V: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2",
W: "~@4 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", X: "~ x ~ x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
Y: "~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x", Z: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@5 x ~@2 x",
AA: "~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@3 x ~@3", AB: "~ x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~ x ~@2 x ~",
AC: "~ x ~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@4", AD: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4",
AE: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2", AF: "~ x ~ x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@5", AG: "x!7 ~",
AH: "x!5 ~ x!2", AI: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@5 x", AJ: "~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
AK: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x", AL: "~ x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~",
AM: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~", AN: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~",
AO: "~ x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", AP: "~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~",
AQ: "~ x ~@3 x ~ x ~@2 x ~@3 x ~ x ~@5 x ~", AR: "~ x ~@3 x ~ x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~",
AS: "~ x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@5 x", AT: "~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
AU: "~ x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@6 x", AV: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
AW: "x ~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@5 x ~@2", AX: "x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x",
AY: "~@3 x ~ x ~@2 x ~@3 x ~ x ~@5 x ~@2 x", AZ: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x",
BA: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~", BB: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~",
BC: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@6 x ~ x ~@2", BD: "~ x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
BE: "x ~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x", BF: "~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x",
BG: "~@2 x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x", BH: "x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", BI: "x!4 ~ x!3",
BJ: "x ~@2 x ~@5 x ~ x ~@3 x ~@2 x ~@2 x ~ x", BK: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3 x",
BL: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~ x ~", BM: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~",
BN: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@3 x ~", BO: "~ x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2",
BP: "x ~@2 x ~@2 x ~@4 x ~@3 x ~@2 x ~@2 x ~@2", BQ: "x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x",
BR: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x", BS: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~ x ~@2 x ~",
BT: "~ x ~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~", BU: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
BV: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~", BW: "~@4 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2",
BX: "x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", BY: "x!2 ~ x!5",
BZ: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3", CA: "x ~@2 x ~@4 x ~@2 x ~@3 x ~ x ~@2 x ~@2 x",
CB: "~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", CC: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~",
CD: "~@2 x ~@5 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~", CE: "~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
CF: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", CG: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~",
CH: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2", CI: "x!2 ~@6",
})).gain(0.29)
// drums · open hat
const open_hat = s("oh").struct(`<
~@3 A ~ B ~ B ~ B ~ B ~ C ~ C D ~@2 E F ~ E ~ E ~ E ~ E ~ E ~ E ~ E G ~ F ~ H@2 ~ I ~ I ~ I ~ I ~ I ~ I ~ J ~ I ~ I@2
~ K ~ K ~ K ~ L ~ L ~ L ~ M ~ L ~ L K ~ K ~ L ~ L ~ D ~ D ~ G ~ N ~ O ~ O@2 ~ J ~ P ~ P ~ M ~ M ~ Q ~ R ~ N ~ N S ~ S
~ T ~ T ~ U ~ U ~ V ~ C ~ W ~ R@2 ~ R ~ X ~ X ~
>`.pickRestart({
A: "~ x ~@6", B: "~ x ~@10", C: "~ x ~@22", D: "~@3 x", E: "x", F: "~@23 x", G: "~@17 x ~@6", H: "~@11 x", I: "~@7 x",
J: "~@5 x ~@2", K: "~@5 x", L: "~@19 x ~@4", M: "~@13 x ~@10", N: "~@11 x ~@12", O: "~@2 x", P: "~@7 x ~@4", Q: "~ x",
R: "~@5 x ~@18", S: "~@5 x ~@6", T: "~@3 x ~@4", U: "~ x ~", V: "~@7 x ~@16", W: "~ x ~@2", X: "~ x ~@4",
})).gain(0.29)
// drums · tambourine
const tambourine = s("tb").struct("<~@21 A B@7 C D E ~@38 F G H@7 ~@64>".pickRestart({
A: "~@3 x ~@4 x ~@5 x ~@6 x ~@2", B: "~ x ~ x ~ x ~ x", C: "~@3 x ~@5 x ~@6 x ~@5 x ~",
// … 5 more lines
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.