Strudelify
Chiquitita cover art

1979 · Voulez-Vous

Chiquitita

ABBA

KeyA majorTempo85 bpm
0:00/0:00
// Chiquitita — Abba
// 85 bpm, 4/4, key A major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 5/4 at bar 42, 4/4 at bar 43, 5/4 at bar 50, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · fretless bass
const bass = note(`<
  ~@16 A B C D@6 B C D@6 B C E@6 F G H I J K H L M N O P Q R S T Q U@5 V@8 W@6 F X H Y Z AA H AB M@2 AC O AD AE AF AG AH
  AI@2 AG AJ@2 AK@4 ~
>`.pickRestart({
  A: "~@4 a1@11 ~", B: "e2@4 a2@11 ~", C: "b1@2 c2@2 c#2@5 ~ g#1@2 c#2@4",
  D: "[~@2 g#1@2 c#2@14 ~@2 e2@7 ~ d2@7 ~ e2@14 ~@2 a1@14 ~@2 a1@14 ~@2 a1@11 ~]/6",
  E: "[~@2 g#1@2 c#2@14 ~@2 e2@7 ~ d2@7 ~ e2@14 ~@2 a1@14 ~@2 a1@14 ~@2 d2@3 ~ a1@3 ~ d2@3 ~]/6",
  F: "a1@3 ~ d2@3 ~ a1@3 ~ d2@3 ~", G: "a1@3 ~ d2@2 a1@2 a1@3 ~ e2@3 ~", H: "a1@3 ~ e2@3 ~ a1@3 ~ e2@3 ~",
  I: "a1@3 ~ e2@2 d2@2 e2@3 ~ b1@3 ~", J: "d2@3 ~ a1@3 ~ e2@3 ~ b1@3 ~", K: "e2@3 ~ b1@3 ~ a1@3 ~ e2@3 ~",
  L: "a1@3 ~ e2@2 d#2@2 d2@3 ~ a1@3 ~", M: "d2@3 ~ a1@3 ~ d2@3 ~ a1@3 ~", N: "d2@3 ~ a1@3 ~ d2@2 a1@2 a1@3 ~",
  O: "e2@3 ~ a1@3 ~ e2@3 ~ a1@3 ~", P: "e2@3 ~ a1@3 ~ e2@2 d2@2 e2@3 ~", Q: "b1@3 ~ d2@3 ~ a1@3 ~ e2@3 ~",
  R: "b1@3 ~ e2@3 ~ b1@3 ~ a1@3 ~", S: "e2@3 ~ a1@3 ~ a1@2 b1@2 c#2@2 d2@2", T: "e2@2 f#2@2 b1@5 ~ a1@2 e2@3 ~",
  U: "[b1@3 ~ b1@7 ~ a1@15 ~ a1@15 ~ a1@11 ~ e2@4 a2@11 ~ b1@2 c2@2 c#2@4]/5",
  V: "[~@2 g#1@2 c#2@5 ~ g#1@2 c#2@14 ~@2 e2@7 ~ d2@7 ~ e2@14 ~@2 a1@14 ~@2 a1@14 ~@2 a1@11 ~ e2@4 a2@11 ~ b1@2 c2@2 c#2@4]/8",
  W: "[~@2 g#1@2 c#2@5 ~ g#1@2 c#2@14 ~@2 e2@7 ~ d2@7 ~ e2@14 ~@2 a1@14 ~@2 a1@14 ~@2 d2@3 ~]/6",
  X: "a1@3 ~ d2@3 ~ a1@3 ~ d2@2 a1@2", Y: "a1@3 ~ e2@3 ~ a1@3 ~ e2@2 d2@2", Z: "e2@3 ~ b1@3 ~ d2@3 ~ a1@3 ~",
  AA: "e2@3 ~ b1@3 ~ e2@3 ~ b1@3 ~", AB: "a1@3 ~ e2@3 ~ a1@3 ~ e2@2 d#2@2", AC: "d2@2 a1@2 a1@3 ~ e2@3 ~ a1@3 ~",
  AD: "e2@2 d2@2 e2@3 ~ b1@3 ~ d2@3 ~", AE: "a1@3 ~ e2@3 ~ b1@3 ~ e2@3 ~", AF: "b1@3 ~ a1@3 ~ e2@3 ~ a1@3 ~",
  AG: "a1 b1 c#2 d2 e2 f#2 b1@2", AH: "~@2 a1@2 e2@3 ~ b1@3 ~ d2@3 ~",
  AI: "[a1@3 ~ e2@3 ~ b1@3 ~ b1@7 ~ a1@3 ~ e2@3 ~ a1@3 ~]/2", AJ: "[~@2 a1@2 e2@7 ~ d2@8 ~@2 e2@10]/2",
  AK: "[~ e1@12 ~ a1@49 ~]/4",
})).s("gm_fretless_bass").gain(0.4)

// chords · harpsichord
const harpsichord = note(`<
  ~@35 A ~@4 B C D E F G H E I C J E K L M N O L P@3 Q R S T U V@2 W X Y Z AA AB AC@2 AD C@2 E@2 AE AF E@2 C@2 AG E AH
  AI AJ ~ AK AL@2 ~@8
>`.pickRestart({
  A: "~ [b3,d#4,f#4] [c#4,e4,g#4]@3 ~@3", // B C#m
  B: "~@4 [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // D
  C: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // D
  D: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // D A
  E: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // A
  F: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // A E
  G: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // D E
  H: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // E A
  I: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // A D
  J: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // D A
  K: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // A E
  L: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E D E
  M: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,f#4,g#4] ~ [b3,e4,f#4,g#4] ~ [b3,e4,f#4,g#4] ~ [b3,e4,f#4,g#4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // E A
  N: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~@9", O: "~@12 [b3,e4,g#4] ~ [b3,e4,g#4] ~",
  P: "[[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,f#4]@7 ~ [c#4,e4,a4]@14 ~@2 [c#4,e4,a4]@14 ~@2 c#6 e5 g#5 c#6, ~@11 a4]/3", // E Bsus4 A
  Q: "~ e5 g#5 c#6 ~ f#5 a5 d6 ~ f#5 a5 d6 ~ e5 a5 c#6, a4!4",
  R: "~ e5 a5 b5 c#6 e5 a5 c#6 d6 f#5 a5 d6 c#6@2 b5@2, a4!4",
  S: "a5@2 g#5@2 ~ b4 e5 g#5 ~ b4 e5 g#5 ~ b4 e5 g#5, a4 e4!3",
  T: "~ b4 e5 g#5 ~ b4 e5 g#5 ~ b4 e5 g#5 e6 g#5 b5 e6, e4!4",
  U: "g#5 b5 d6 e6 f#6 a5 d6 f#6 ~ a5 d6 a5 g#5 e5 g#5 b5, e4 d4!2 e4",
  V: "[~ e5 g#5 a5 [e3,f#5,b5]@7 ~ f#5@2 e5@2 d5@2 e5@2 a4 f#5 a5 d6 a4 f#5 a5 d6 a4 e5 g#5 c#6, e4 ~@2 a3@4 ~]/2", // Esus2
  W: "a4 e5 a5 b5 c#6@2 d6@2 c#6 b5 a5@2 c#6 e5 a5 c#6, ~@3 a4",
  X: "~ e5 a5 c#6 ~ f#5 a5 d6 ~ f#5 a5 d6 ~ e5 a5 c#6, a4!4",
  Y: "~ e5 a5 b5 c#6 e5 a5 c#6 d6 f#5 a5 d6 e6 g#5 d#6 c#6, a4!3 c#4",
  Z: "e6 g#5 d#6 ~@2 e5 g#5 c#6 ~ e5 g#5 c#6 ~ e5 g#5 c#6, c#4@3 c#6@2 ~@5 [b3,d#4,f#4]@2 ~@4, ~ c#4!2 [c#4,e4,g#4]", // B C#m
  AA: "~ e5 g#5 c#6 ~ e5 g#5 c#6 ~ e5 g#5 c#6 e6 g#5 b5 e6, c#4!3 e4",
  AB: "g#5 b5 d6 f#6 a5 d6 f#6 ~ a5 d6 a5 g#5 e5 g#5 b5 ~, e4 d4!2 e4",
  AC: "[e5 g#5 a5 ~ e4@7 ~ f#5@2 e5@2 d5@2 e5@2 a4 f#5 a5 d6 a4 f#5 a5 d6 a4 e5 g#5 c#6, e4@3 [f#5,b5]@7 ~@2 a3@15 ~ a3@2 ~@2]/2", // B5
  AD: "a4 e5 f#6 g#6 a6@2 b6@2 a6 g#6 ~ g#6 [d4,f#4,a4] ~ [d4,f#4,a4] ~", // D
  AE: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // E D
  AF: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
  AG: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // D A
  AH: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // A E D
  AI: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,f#4,g#4] ~ [b3,e4,f#4,g#4] ~", // D E
  AJ: "[b3,e4,f#4,g#4] ~ [b3,e4,f#4,g#4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // E A
  AK: "~@4 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // E D
  AL: "[[d4,f#4,a4] ~ [d4,f#4,a4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,f#4]@7 ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~]/2", // D E Bsus4 A
})).s("gm_harpsichord").gain(0.3)

// chords · harpsichord · soft notes
const harpsichord_soft = note("<~@55 A B ~@19 C ~@15 D@2 ~@2 E@3 F@5>".pickRestart({
  A: "~@4 [a3,c#4] [b3,d4] [e3,e4] [f#3,f#4]", B: "[g#3,g#4] [a3,a4] [b3,b4]@3 [a3,a4] ~@2", C: "~@10 f#6 ~@5",
  D: "[[a3,c#4] [b3,d4] [e3,e4] [f#3,f#4] [g#3,g#4] [a3,a4] [b3,b4]@3 [a3,a4] ~@6]/2", // A Bm E F# G# A B A
  E: "[[a3,c#4]@2 [b3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [g#3,g#4]@2 [a3,a4]@2 [b3,b4]@6 [a3,a4]@2 [e5,g#5]@6 [d5,f#5] [e5,g#5] [f#5,a5]@7 [a4,f#5]@2 ~ [g#4,e5]@8 [d4,b4] [e4,c#5]]/3", // A Bm E F# G# A B A …
  F: "[~ [f#4,d5]@6 [f#4,d5]@7 [f#4,d5]@4 [e4,c#5]@4 [d4,b4]@4 [c#4,a4]@41 ~@13]/5", // D C#m G F#m
})).s("gm_harpsichord").gain(0.1)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A@2 B@3 C@7 D@3 E@5 F@3 G@8 E@5 H@3 I J K L M N O L P J Q L R S T U V S W X Y Z AA AB AC AD AE@2 AF AG AH AI AJ AK
  AL@2 AM J@2 L@2 AN AO L@2 J@2 AP L AQ AR AS AT@2 AU@2 AV@6 ~@2
>`.pickRestart({
  A: "[~@6 d4 [d4,f#4]@2 [e4,g#4]@2 ~@2 g#4 ~@4 [g#4,b4]@12 ~ a4, ~@2 c#4 ~@3 a4 [g#4,b4] c#5 ~@7, ~@5 e4@2 ~@4 f#4@2 ~@2 a4@2 e4@12 ~@3]/2", // D E G#m
  B: "[b4 a4 ~@2 e5@11 f#4@2 g#4@2 ~ a4@8 ~@3 f#4@3 ~@2 b4@6 ~@2 [d5,f#5]@4, ~@2 g#4@8 ~@9 [e4,f#4]@10 ~@6 e4@12 ~, ~@3 b4@8 ~@24 g#4@8 c#5@2 ~@3, ~@42 b4@5 ~]/3", // D Esus2
  C: "[[d5,f#5]@4 ~@66 b4@2 a4@2 ~@37 f#5, ~@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 [a3,c#5]@4 a3@5 b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 ~ e4@2 e5@2 b4@2 g#4@2 d5@2 d3@4, ~@5 e4@2 c#5@2 ~ g#4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 c#5@2 ~ g#4@2 ~ f#4@2 d5@2 ~ a4@2 c#5@2 g#4@2 ~ e4@2 c#5@2 ~ a4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 b4@2 e4@2 c#5@2 f#4@2 d5@2 ~@7 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 f#5@2 d5@2, ~@6 g#4@2 ~ e4@2 c#5@2 ~ a4@2 ~ f#4@2 d5@2 ~ g#4@2 ~ e4@2 c#5@2 ~ a4@2 ~ f#4@2 d5@2 e4@2 c#5@2 ~ g#4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 c#5@2 ~ a4@2 c#5@2 a4@2 d5@2 a4@2 ~@6 g#4@4 e4@2 ~ b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 g#4@2 e5@2 b4@2 e5@2 a4@2 ~]/7", // D A
  D: "[~@6 [e2,f#4,b4]@4 f#4 e4 d4 e4 ~@8 c#5 d5, d3@4 g#4@2 g#4@2 ~ e4@2 a4@2 ~@16 f#4@2 d5@2 f#4@2 d5@2 e4@2 c#5@2 e4@2 b4@2 ~@3, ~ a4@2 a4@2 e4@2 b4@2 ~ g#4@2 ~@16 a3@2 a4@2 a3@2 a4@2 a3@2 g#4@2 a3@2 a4@2 ~@4, ~@2 d5@2 e3@4 e3@5 ~@7 a2@17 ~@11]/3", // Esus2
  E: "[~ a4 ~@37 f#5, c#5@2 ~@2 c#5@2 a4@2 ~ e4@2 c#5@2 ~ a4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 b4@2 e4@2 c#5@2 f#4@2 d5@2 g#4@2 c#5@2 g#4@2 c#5@3 g#4@2 ~ e4@2 c#5@2 ~ g#4@2 ~ e4@2 c#5@2 ~ g#4@2 ~ e4@2 c#5@2 g#4@2 e5@2 b4@2 f#5@2 d5@2 ~, ~ b4@2 ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 e5@2 d#5@2 e5@2 d#5@2 ~ e4@2 c#5@2 ~ g#4@2 ~ e4@2 c#5@2 ~ g#4@2 ~ e4@2 c#5@2 ~ g#4@2 e3@4 e3@4 a4@2 ~@2, ~@5 e4@2 c#5@2 ~ a4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 c#5@2 ~ a4@2 c#5@2 a4@2 d5@2 a4@2 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 e5@2 b4@2 g#4@2 d5@2 d3@4]/5",
  F: "[~@3 b4 ~@2 e3@4 f#4 e4 d4 e4 ~@8 c#5 d5, d3@4 e4@2 ~@2 e4@2 a4@2 ~@17 f#4@2 d5@2 f#4@2 d5@2 e4@2 c#5@2 e4@2 b4@2 ~@3, a4@2 a4@2 e3@4 e3@4 ~@8 a2@17 ~@11, ~ d5@2 g#4@2 g#4@2 ~@2 g#4@2 [f#4,b4]@8 ~@9 a3@2 a4@2 a3@2 a4@2 a3@2 g#4@2 a3@2 a4@2 ~@4]/3", // B5
  G: "[~ a4 ~@17 b4 a4 ~@25 [e2,f#4,b4]@4 f#4 e4 d4 e4 ~@8 c#5 d5, c#5@2 ~@2 c#5@2 g#4@2 ~ e4@2 c#5@2 ~ a4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 b4@2 e4@2 c#5@2 f#4@2 d5@2 ~@7 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 f#5@2 d5@2 ~ a4@2 a4@2 e4@2 b4@2 ~ g#4@2 ~@16 a3@2 a4@2 a3@2 a4@2 a3@2 g#4@2 a3@2 a4@2 ~@4, ~ b4@2 ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 [a3,c#5]@4 a3@5 b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 ~ e4@2 e5@2 b4@2 g#4@2 d5@2 d3@4 d3@4 g#4@2 g#4@2 ~ e4@2 a4@2 ~@16 f#4@2 d5@2 f#4@2 d5@2 e4@2 c#5@2 e4@2 b4@2 ~@3, ~@5 e4@2 c#5@2 ~ g#4@2 ~ f#4@2 d5@2 ~ a4@2 ~ e4@2 c#5@2 ~ a4@2 c#5@2 a4@2 d5@2 a4@2 ~@6 g#4@4 e4@2 ~ b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 ~ e4@2 ~ b3@2 g#4@2 g#4@2 e5@2 b4@2 e5@2 a4@2 f#5@2 ~ d5@2 e3@4 e3@5 ~@7 a2@17 ~@11]/8", // Esus2 A
  H: "[~@3 b4 ~@2 e3@4 f#4 e4 d4 e4 ~@8 a5 b5, d3@4 e4@2 ~@2 e4@2 a4@2 ~@17 f#4@2 d5@2 f#4@2 d5@2 ~ g#4@2 a3@2 f#5@2 ~@4, a4@2 a4@2 e3@4 e3@4 ~@8 a2@16 [a2,a3]@3 ~@9, ~ d5@2 g#4@2 g#4@2 ~@2 g#4@2 [f#4,b4]@8 ~@9 a3@2 a4@2 a3@2 a4@2 ~ e4@2 c#5@2 e4@2 g#5@2 ~@3]/3", // A B5
  I: "~@2 [d4,f#4,a4]!6, a5 f#5 ~@6, ~ g#5@2 g#5@2 ~@11", J: "[d4,f#4,a4]!8", K: "[d4,f#4,a4]!4 [c#4,e4,a4]!4",
  L: "[c#4,e4,a4]!8", M: "[c#4,e4,a4]!4 [b3,e4,g#4]!4", N: "[d4,f#4,a4]!4 [b3,e4,g#4]!4",
  O: "[b3,e4,g#4]!4 [c#4,e4,a4]!4", P: "[c#4,e4,a4]!4 [d4,f#4,a4]!4", Q: "[d4,f#4,a4]!6 [c#4,e4,a4]!2",
  R: "[c#4,e4,a4]!6 [b3,e4,g#4]!2", S: "[b3,e4,g#4]!2 [d4,f#4,a4]!4 [b3,e4,g#4]!2",
  T: "[b3,e4,g#4]!2 [b3,e4,f#4,g#4]!4 [c#4,e4,a4]!2", U: "[c#4,e4,a4]!4 [a3,c#4] [b3,d4] [e3,e4] [f#3,f#4]",
  V: "[g#3,g#4] [a3,a4] [b3,b4]@3 [a3,a4] [b3,e4,g#4]!2", // G# A B A E
  W: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,f#4]@8 ~ e4 g#4 c#5, ~@3 a3", // E Bsus4
  X: "~ e4 g#4 c#5 ~ f#4 a4 d5 ~ f#4 a4 d5 ~ e4 g#4 c#5, a3!4",
  Y: "~ e4 g#4 c#5 ~ f#4 a4 d5 ~ f#4 a4 d5 c#5 e4 g#4 c#5, a3!4",
  Z: "~ e4 g#4 c#5 ~ f#4 a4 d5 ~ f#4 a4 d5 ~ e4 a4 c#5, a3!4",
  AA: "~ e4 a4 b4 c#5 e4 a4 c#5 d5 f#4 a4 d5 c#5@2 b4@2, a3!4",
  AB: "a4@2 g#4@2 ~ b3 e4 g#4 ~ b3 e4 g#4 ~ b3 e4 g#4, a3 e3!3",
  AC: "~ b3 e4 g#4 ~ b3 e4 g#4 ~ b3 e4 g#4 e5 g#4 b4 e5, e3!4",
  AD: "g#4 b4 d5 e5 f#5 a4 d5 f#5 ~ a4 d5 a4 g#4 e4 g#4 b4, e3 d3!2 e3",
  AE: "[~ e4 g#4 a4 [e2,f#4,b4]@7 ~ f#4@2 e4@2 d4@2 e4@2 a3 f#4 a4 d5 a3 f#4 a4 d5 a3 e4 g#4 c#5, e3 ~@2 a2@4 ~]/2", // Esus2
  AF: "a3 e4 a4 b4 c#5@2 d5@2 c#5 b4 a4@2 c#5 e4 a4 c#5, ~@3 a3",
  AG: "~ e4 a4 c#5 ~ f#4 a4 d5 ~ f#4 a4 d5 ~ e4 a4 c#5, a3!4",
  AH: "~ e4 a4 b4 c#5 e4 a4 c#5 d5 f#4 a4 d5 e5 g#4 d#5 c#5, a3!3 c#3",
  AI: "e5 g#4 d#5 ~@2 e4 g#4 c#5 ~ e4 g#4 c#5 ~ e4 g#4 c#5, c#3@3 c#5@2 ~@11, ~ c#3!3",
  AJ: "~ e4 g#4 c#5 ~ e4 g#4 c#5 ~ e4 g#4 c#5 e5 g#4 b4 e5, c#3!3 e3",
  AK: "g#4 b4 d5 f#5 a4 d5 f#5 ~ a4 d5 a4 g#4 e4 g#4 b4 ~, e3 d3!2 e3",
  AL: "[e4 g#4 a4 ~ e3@7 ~ f#4@2 e4@2 d4@2 e4@2 a3 f#4 a4 d5 a3 f#4 a4 d5 ~ e4 g#4 c#5, e3@3 [f#4,b4]@7 ~@2 a2@15 ~ [a2,a3]@2 ~@2]/2", // B5 A
  AM: "a3 e4 f#5 g#5 a5@2 b5@2 a5 g#5 f#5 g#5 [d4,f#4,a4]@2 [d4,f#4,a4]@2", AN: "[b3,e4,g#4]!4 [d4,f#4,a4]!4",
  AO: "[b3,e4,g#4]!8", AP: "[d4,f#4,a4]!2 [c#4,e4,a4]!6", AQ: "[c#4,e4,a4]!2 [b3,e4,g#4]!4 [d4,f#4,a4]!2",
  AR: "[d4,f#4,a4]!2 [b3,e4,g#4]!4 [b3,e4,f#4,g#4]!2", AS: "[b3,e4,f#4,g#4]!2 [c#4,e4,a4]!6",
  AT: "[[a3,c#4] [b3,d4] [e3,e4] [f#3,f#4] [g#3,g#4] [a3,a4] [b3,b4]@3 [a3,a4] [b3,e4,g#4]!4 [d4,f#4,a4]!2]/2", // A Bm E F# G# A B A …
  AU: "[[d4,f#4,a4]!2 [b3,e4,g#4]!4 [b3,e4,f#4]@4 [c#4,e4,a4]!6]/2", // D E Bsus4 A
  AV: "[[a3,c#4]@2 [b3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [g#3,g#4]@2 [a3,a4]@2 [b3,b4]@6 [a3,a4]@2 [b3,e4,g#4]@8 [d4,f#4,a4]@10 [b3,e4,g#4]@24 f#4@4 e4@4 d4@4 c#4@13 ~@9]/6", // A Bm E F# G# A B A …
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// other · string ensemble 2
const string_ensemble_2 = note("<~@20 A@4 B@8 C@8 D ~@19 E@3 F@8 G@5 H ~@27>".pickRestart({
  A: "[~ [e4,g#4]@2 [d4,f#4]@2 [e4,g#4]@2 [f#4,b4]@2 [e4,a4]@6 ~]/4", // E D E B5 A5
  B: "[~@2 a2@4 d3@4 a2@8 e3 d3 c#3 b2@13 c#3@4 d3@4 e3@4 e2@4 a2@12 ~@2]/8",
  C: "[~@4 a2@8 d3@8 a2@16 g#3@2 f#3 e3 g#3@2 e3@24 ~@2 c#3@8 d3@8 e3@8 e2@8 a2@22 d4 e4 f#4@2 g#4@2]/8",
  D: "f#4 e4 d4 e4 ~@12", E: "[~@12 a2@7 ~ d3@7 ~ a2@14 ~@2 e3@2 d3@2]/3",
  F: "[c#3@2 b2@23 ~@3 c#3@7 ~ d3@7 ~ e3@7 ~ e2@7 ~ a2@22 ~@10 a2@7 ~ d3@7 ~ a2@14 ~@2 g#3@2 f#3 e3]/8",
  G: "[g#3@2 e3@22 ~@4 c#3@7 ~ d3@7 ~ e3@7 ~ e2@7 ~ a2@20]/5", H: "~@2 d4 e4 f#4@2 g#4@2 f#4 e4 d4 e4 ~@4",
})).s("gm_string_ensemble_2").gain(0.35)

// other · orchestral harp
const orchestral_harp = note("<~@31 A B ~@5 C D@2 ~@26 E F ~@5 G H@2 ~@27>".pickRestart({
  A: "a6 [e6,f#6] f#6 [c#6,e6] e6 [a5,c#6] c#6 [f#5,a5] a5 [e5,f#5] f#5 [c#5,e5] e5 [a4,c#5] c#5 [f#4,a4]", // Esus2 C#m A F#m Esus2 C#m A F#m
  B: "a4 [e4,f#4] f#4 [c#4,e4] a3@3 ~@9", C: "~@4 a6 [e6,f#6] f#6 [c#6,e6] e6 [a5,c#6] c#6 [f#5,a5] a5 [e5,f#5] e5 f#5",
  D: "[g#5 a5 b5 e5 [a4,a5]@16 ~@12]/2", E: "~@8 a6 [e6,f#6] f#6 [c#6,e6] e6 [a5,c#6] c#6 [f#5,a5]",
  F: "a5 [e5,f#5] f#5 [c#5,e5] e5 [a4,c#5] c#5 [f#4,a4] a4 [e4,f#4] f#4 [c#4,e4] a3@3 ~", // Esus2 C#m A F#m Esus2 C#m
  G: "~@12 a6 [e6,f#6] f#6 [c#6,e6]", H: "[e6 [a5,c#6] c#6 [f#5,a5] a5 [e5,f#5] e5 f#5 g#5 a5 b5 e5 [a4,a5]@16 ~@4]/2",
})).s("gm_orchestral_harp").gain(0.25)

// chords · orchestra hit
const orchestra_hit = note("<~@33 [~ a4 ~@2, ~ e4@2 ~@5] ~@35 [~@3 a4, ~@5 e4@2 ~] ~@34>")
  .s("gm_orchestra_hit").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~@24 A B@14 C D@2 E F@7 G D@7 H ~ I B@15 I D J F@8 K D@9 H ~@6>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~@2", D: "~ x ~ x", E: "~@3 x!2 ~@3", F: "x!2", G: "x ~@4 x!2 ~", H: "~ x ~@2",
  I: "~@3 x", J: "~@2 x ~@4 x", K: "~ x!2 ~@3 x ~",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@40 A B C D@7 E B@7 F ~@18 B@2 D@8 A B@5 A B A B ~@7>".pickRestart({
  A: "~ x", B: "x!2", C: "x ~@2 x", D: "~ x ~ x", E: "~ x ~@2", F: "x",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@39 A B ~ C ~@7 D ~@25 E ~ F ~@8 G ~@4 H B ~@2 H B ~@6>".pickRestart({
  A: "~@8 x ~@5 x!2", B: "~ x ~@6", C: "~ x ~@2", D: "~ x", E: "x ~@5 x!2 ~@2 x ~@5", F: "~@3 x", G: "x",
  H: "~@5 x ~@2",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@6 B ~@28 C ~@6 D ~@15 E ~@3 E ~@7>".pickRestart({
  A: "~ x!2 ~@5", B: "x!2 ~@14", C: "~@5 x!2 ~", D: "~@8 x!2 ~@6", E: "~@6 x!3 ~@7",
})).gain(0.15)

// drums · hihat
const hihat = s("hh").struct(`<
  A B ~@38 C D E D E D@3 E D F D F D@5 G ~@17 H D I D I D@3 I D@2 J D J D@2 I C I C I K ~@6
>`.pickRestart({
  A: "x!4", B: "x", C: "~@2 x!6", D: "x!8", E: "x!3 ~ x!4", F: "x!5 ~ x!2", G: "x!3 ~@5", H: "~@6 x!2", I: "x!7 ~",
  J: "x ~ x!6", K: "~ x ~@2",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@35 B ~@15 C ~@3 C ~@7>".pickRestart({
  A: "x!2 ~@14", B: "~@8 x!2 ~@6", C: "x ~ x ~ x ~ x!3 ~@7",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@26 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 B ~ B ~@3 B ~ C ~ C ~@9 C ~ C ~ C ~ C ~ C ~ C ~ C ~@3 D ~ D ~@3 D ~@2 A ~ A ~@2 E
  ~@3 E ~@7
>`.pickRestart({
  A: "~ x ~@6", B: "~@3 x ~@4", C: "~@5 x ~@2", D: "~@7 x", E: "~@3 x",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@39 A ~@18 A ~@16 B ~@17 A B ~@2 A ~@6>".pickRestart({
  A: "~ x ~@2", B: "~@3 x",
})).gain(0.2)
// … 29 more lines

More by ABBA