Strudelify

Nina Pretty Ballerina

ABBA

KeyC majorTempo123 bpm
0:00/0:00
// Nina Pretty Ballerina — ABBA
// 123 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(123/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 · flute
const flute = note(`<
  ~@6 A B C D@2 E@2 F@2 B C D@2 G@2 H@2 ~ I J K@2 L@2 M N I J O@2 P@2 Q@2 R S A B C T@2 E@2 F@2 B C D@2 G@2 U@2 ~ I J
  K@2 L@2 M V I J O@2 P@2 W X I J K@2 L@2 M V I J O@2 Y
>`.pickRestart({
  A: "~@6 g5!2", B: "a5@2 g5!2 f5!2 e5!2", C: "f5@2 e5!2 d5!2 c5!2", D: "[a4!2 c5!2 f5!2 a4 g4@5 ~@2 g4!2]/2",
  E: "[a4!2 c5!2 f5 a5@2 g5@2 d#5 e5@4 e5 f5]/2", F: "[g5!4 f5 e5@2 d5@5 ~@2 g5!2]/2",
  G: "[a4!2 c5!2 f5 a5@2 g5@2 d5 e5@4 [e5,g5] [f5,a5]]/2", H: "[[g5,c6]!4 [e5,a5] e5@2 [g5,b5]@7 ~@2, ~@5 a5 ~@10]/2",
  I: "[g5,c6]@2 [g5,c6]@2 [e5,a5] [e5,g5] [e5,a5] [e5,b5], e5 ~", // C5 A5 Em A5 E5
  J: "[g5,c6]@2 [g5,c6]@2 [e5,a5] [e5,g5] [e5,a5] [e5,a#5], e5 ~", // C5 A5 Em A5 Edim
  K: "[[g5,b5]@2 [g5,b5] [f#5,a#5] [g5,b5] [f#5,a#5]@2 [f5,a5]@5 ~ [e5,g5] [f5,a5] [f#5,a#5]]/2", // G F# G F# F Em F F#
  L: "[[g5,b5]@2 [g5,b5] [f#5,a#5] [g5,b5] [f#5,a#5]@2 [f5,a5]@5 [f5,g5] [f5,a5] [f5,c6] [f5,a5]]/2", // G F# G F# F Fsus2 F F5 …
  M: "[g5,c6]@2 a5 g5!2 a5 c6 a5, e5@3 ~@5", N: "e6@2 d6 c6 ~@4",
  O: "[[g5,b5]@2 [g5,b5] [f#5,a#5] [g5,b5] [f#5,a#5]@2 [f5,a5]@7 ~ [e5,g5]]/2", // G F# G F# F Em
  P: "[[g5,b5]@2 [g5,b5] [f#5,a#5] [g5,b5]@2 [f#5,a#5] [f5,a5]@5 [f5,g5] [f5,a5] [f5,c6] [f5,a5]]/2", // G F# G F# F Fsus2 F F5 …
  Q: "[[g5,c6]@2 [g5,c6]@2 a5 g5 e5 g5@5 ~ g5 a5 b5, e5@4 c5@3 b4@9]/2", // C5
  R: "[g5,c6]@6 [g5,c6]@6 [e5,a5]@3 e5@6 g5 a5 ~, e5 ~", S: "[g5,b5]", T: "[a4!2 c5!2 f5!2 a4 g4@2 ~@5 g4!2]/2",
  U: "[[g5,c6]!4 [e5,a5] e5@2 [g5,b5]@7 ~@2]/2", V: "e6@2 d6 c6@2 ~@3",
  W: "[g5,c6]@6 [g5,c6]@6 a5@3 e5@6 g5 a5 ~, e5 ~", X: "[g5,b5]@3 ~",
  Y: "[g5,b5]@2 [g5,b5] [f#5,a#5] [g5,b5]@2 [f#5,a#5] [f5,a5]", // G F# G F# F
})).s("gm_flute").gain(0.5).pan(0.2)

// bass · electric bass pick
const bass = note(`<
  ~@3 A B C D E F G H I J K L M N O P Q R S T U V@2 W@4 X V@3 W@4 X Y Z AA AB AC AD AE AF AG J AH L AI AJ G P AK R S T U
  V@2 W@4 X V@3 W@4 Z AL V@2 W@4 X V@3 W@2 AM
>`.pickRestart({
  A: "c3@4 c3 c3@2 c3, e3", B: "c#3@4 c#3 c#3@2 c#3, e3", C: "d3@4 d3 d3@2 d3, f3", D: "g2 g2@3",
  E: "c2@6 c3@6 g2@3 g2!2 ~ g2!2 ~ f#2!2 ~", F: "c2@6 c3 c3@2 c3 c3@2 c3 c3@2 c3 c3@2 b2!2 ~ a2!2 ~",
  G: "~@6 c3 c3@2 f3 f3@2 f3 f3@2 f3@3 d3@3 d3@3, f2 ~", H: "c3@6 g3!2 ~ g3!2 ~ e3 e3@2 c3 c3@2 g2@3 g2@3",
  I: "f2@6 f3!2 ~ f3!2 ~ c3!2 ~ c3!2 ~ f2 f2@2 d#2 d#2@2", J: "c2@6 c3 c3@2 c3 c3@2 c3@3 c3@3 g2@3 g2@3",
  K: "c2@12 c3@3 c3 c3@2 c3!2 ~ c3!2 ~", L: "g2@6 g3@6 a2@3 g2@3 e2@4 d2@2",
  M: "c2@6 c3@6 g2@3 g2 g2@2 g2 g2@2 f#2 f#2@2", N: "c2@6 c3!2 ~ c3!2 ~ c3!2 ~ c3!2 ~ b2 b2@2 a2 a2@2",
  O: "~@6 c3 c3@2 f3 f3@2 f3!2 ~ f3@3 d3@3 d3@3, f2 ~", P: "c3@6 g3 g3@2 g3 g3@2 e3 e3@2 c3 c3@2 g2@3 g2@3",
  Q: "f2@6 f3 f3@2 f3 f3@2 c3 c3@2 c3 c3@2 f2 f2@2 d#2 d#2@2", R: "c2@6 c3!2 ~ c3!2 ~ c3@3 c3@3 g2@3 g2@3",
  S: "[c3,e3,g3] [c#3,a#3]", T: "[d3,b3]@3 g2", U: "g1", V: "c2@2 c3 g2 a2 g2 e2 g2",
  W: "[g2@2 g3 d3 e3 d3 b2 g2@3 g3 d3 e3 d3 b2 d3]/2", X: "c3@2 c3 g2 a2 g2 e2 g2", Y: "g2@2 g3 d3 e3 d3 g2@2",
  Z: "[c3,g3] [c#3,a#3]", AA: "[d3,b3]@2 g2!2 b2 g2 b2 d3", AB: "[g2,g3] g2@3",
  AC: "c2@6 c3@6 g2@3 g2 g2@2 g2!2 ~ f#2!2 ~", AD: "c2@6 c3 c3@2 c3 c3@2 c3 c3@2 c3 c3@2 b2 b2@2 a2 a2@2",
  AE: "~@6 c3!2 ~ f3!2 ~ f3 f3@2 f3@3 d3@3 d3@3, f2 ~", AF: "c3@6 g3!2 ~ g3!2 ~ e3!2 ~ c3!2 ~ g2@3 g2@3",
  AG: "f2@6 f3 f3@2 f3 f3@2 c3!2 ~ c3!2 ~ f2!2 ~ d#2!2 ~", AH: "c2@12 c3@3 c3 c3@2 c3 c3@2 c3 c3@2",
  AI: "c2@6 c3@6 g2@3 g2!2 ~ g2 g2@2 f#2 f#2@2", AJ: "c2@6 c3 c3@2 c3 c3@2 c3!2 ~ c3!2 ~ b2!2 ~ a2!2 ~",
  AK: "f2@6 f3!2 ~ f3!2 ~ c3 c3@2 c3 c3@2 f2 f2@2 d#2 d#2@2", AL: "[d3,b3]@3 g2@2 g2 a2 b2",
  AM: "g2@2 g3 d3 e3 d3 b2 g2",
})).s("gm_electric_bass_pick").gain(0.35).pan(1)

// chords · piano
const piano = note(`<
  ~@7 A B C D ~@2 E@2 A B F@2 ~ G H@2 ~ I J K@2 L@2 M ~ I J N@2 O@2 P@2 Q ~@2 A B C D ~@2 R@2 A B F@2 ~ G H@2 ~ I J K@2
  L@2 S T I J N@2 O@2 U ~ I J K@2 L@2 S T I J N@2 V
>`.pickRestart({
  A: "e4 c4", B: "c4 g3", C: "~@4 a3!3 [e3,g3]", D: "[e3,g3] ~", E: "[g4!4 f4 e4@2 [b3,d4]@5 ~@4, e4@5 ~@11]/2",
  F: "[~@4 a3!3 [e3,g3]@5 ~@4]/2", G: "~@2 e4@4 [e4,g4] [f4,a4]", H: "[[g4,c5]!4 [e4,a4] e4@2 g4@7 ~@2]/2",
  I: "[g4,c5]@2 [g4,c5]@2 [e4,a4] [e4,g4] [e4,a4] [e4,b4], e4 ~", // C5 A5 Em A5 E5
  J: "[g4,c5]@2 [g4,c5]@2 [e4,a4] [e4,g4] [e4,a4] [e4,a#4], e4 ~", // C5 A5 Em A5 Edim
  K: "[[g4,b4]@2 [g4,b4] [f#4,a#4] [g4,b4] [f#4,a#4]@2 [f4,a4]@5 ~ [e4,g4] [f4,a4] [f#4,a#4]]/2", // G F# G F# F Em F F#
  L: "[[g4,b4]@2 [g4,b4] [f#4,a#4] [g4,b4] [f#4,a#4]@2 [f4,a4]@5 [f4,g4] [f4,a4] [f4,c5] [f4,a4]]/2", // G F# G F# F Fsus2 F F5 …
  M: "[g4,c5]@2 a4 g4!2 a4 ~ a4, e4", N: "[[g4,b4]@2 [g4,b4] [f#4,a#4] [g4,b4] [f#4,a#4]@2 [f4,a4]@7 ~ [e4,g4]]/2",
  O: "[[g4,b4]@2 [g4,b4] [f#4,a#4] [g4,b4]@2 [f#4,a#4] [f4,a4]@5 [f4,g4] [f4,a4] [f4,c5] [f4,a4]]/2", // G F# G F# F Fsus2 F F5 …
  P: "[[g4,c5]@2 [g4,c5]@2 a4 g4 e4 g4@5 ~ g4 a4 b4, e4@4 c4@3 b3@9]/2", // C5
  Q: "[g4,c5]@6 [g4,c5]@6 [e4,a4]@3 e4@6 g4 a4 ~, e4 ~", R: "[~@7 [b3,d4]@5 ~@4]/2",
  S: "[g4,c5]@2 a4 g4!2 a4 c5 a4, e4", T: "[g4,e5] [e4,c5]@3", U: "[g4,c5]@6 [g4,c5]@6 a4@3 e4@6 g4 a4 ~, e4 ~",
  V: "[g4,b4]@2 [g4,b4] [f#4,a#4] [g4,b4]@2 [f#4,a#4] ~", // G F# G F#
})).s("gm_piano").gain(0.32).pan(0)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A B C D ~@17 E F G@2 H G F@2 E F G@2 H@2 E G I G J ~@17 E F G@2 H G F@2 E F G@2 H@2 E ~ E F G@2 H G F@2 E F G@2 H
>`.pickRestart({
  A: "~ g3 c4 g3 e4 c4@3", B: "~@3 g3@3 a#3@3 g3@3 e4@3 a#3@8 ~", C: "~ d4 f4 c4 d4 e4 f4 d4", D: "~ [g1,g2]@3, g3@3 ~",
  E: "[c4,g4,c5]@3 [c4,g4,c5]@5", F: "[c4,g4,c5]@3 [c4,g4,c5]@3 [c4,g4,c5]@2",
  G: "[g3,d4,g4]@3 [g3,d4,g4]@3 [g3,d4,g4]@2", H: "[g3,d4,g4]@3 [g3,d4,g4]@5",
  I: "[c4,g4,c5]@3 [c4,g4,c5] [c4,f#4,c5]@2 [c4,f#4,c5]@2", J: "~ [g2,g3]@3",
})).s("gm_electric_guitar_clean").gain(0.74)

// chords · whistle
const whistle = note("<A@4 B C@2 ~@82>".pickRestart({
  A: "[~@13 f3@70 ~@13, ~ [c4,e4,a4,c#5,f5]@6 ~]/4", B: "[f3,c4,e4,a4,c#5,f5]@11 ~", C: "[[f3,c4,e4,a4,c#5,f5]@3 ~]/2",
})).s("gm_whistle").gain(0).pan(0.1)

// bass · electric bass pick
const bass_2 = note(`<
  ~@7 A B C D E F G H I J K L M N ~@3 O P Q R S T U V F W X Y Z AA AB AC AD Q AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS ~@3 AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO AG BP BQ BR BS BT BU
>`.pickRestart({
  A: "c2@2 ~ g1@2 ~ e1 c2@2 ~@4 g1 ~ c2@3 a#1@3 b1@3", B: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 g1 ~ c2@3 g1 ~@2 e1@3",
  C: "f1@2 ~ f1@2 ~@2 f1@2 ~@4 d1 ~ f1@3 c2 ~@2 a1@3, ~@3 a1 ~@8",
  D: "c2@2 ~ d2@2 ~ c2!2 ~@5 d2 ~ c2@3 g1 e1@2 d1 e1@2", E: "f1@2 ~ f1@2 ~@2 f1 ~@5 d1 ~ f1@3 a#1@3 b1@3, ~@3 g1 ~@8",
  F: "c2@2 ~ a1@2 ~ c2 c2@2 ~@4 a1 ~ c2@3 a#1@3 b1@3", G: "c2@2 ~ a1@2 ~ c2 c2@2 ~@4 c2 ~ c2@3 d1@3 e1 ~@2",
  H: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 b1 ~ g1@3 d1@3 f1@3", I: "c2@2 ~ c2@2 ~ c2!2 ~@5 a1 ~ c2@6 a1@3",
  J: "c2@2 ~ a1@2 ~ c2!2 ~@5 a1 ~ g1@3 d#1@3 e1@3", K: "f1@2 ~ f1@2 ~ f1 f1@2 ~@4 a1 ~ f1@6 a1@3",
  L: "c2@2 ~ c2@2 ~ g1 c2@2 ~@4 c2 ~ c2@3 d#1 ~@2 e1@3",
  M: "f1@2 ~ f1@2 ~@2 f1@2 ~@4 d1 ~ f1@3 d1 f1@2 g1 a1@2, ~@3 a1 ~@8", N: "c2@2 ~ c2@2 ~ c2!2 ~@5 a1 ~ c2@3 a#1@3 b1@3",
  O: "c2@2 ~ d2@2 ~ c2 c2@2 ~@4 c2 ~ c2@3 a#1 ~@2 b1@3", P: "c2@2 ~ c2@2 ~ c2!2 ~@5 c2 ~ c2@3 d1 ~@2 e1@3",
  Q: "g1@2 ~ g1@2 ~ g1!2 ~@5 e1 ~ g1@3 g1@3 e1@3", R: "g1@2 ~ g1@2 ~ e1 g1@2 ~@4 g1 ~ d1@3 d1 ~@2 e1@3",
  S: "g1@2 ~ g1@2 ~ e1 g1@2 ~@4 e1 ~ g1@3 f1@3 f#1 ~@2",
  T: "g1@2 ~ e1@2 ~@2 g1@2 ~@4 g1 ~ g1@3 a1 ~@2 b1 ~@2, ~@3 d1 ~@8", U: "c2@2 ~ c2@2 ~ c2!2 ~@5 a1 ~ g1@3 c2@3 a1@3",
  V: "c2@2 ~ c2@2 ~@2 c2 ~@5 a1 ~ c2@3 g1 ~@2 a1@3, ~@3 d2 ~@8", W: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 c2 ~ c2@3 c2@3 c2@3",
  X: "g1@2 ~ g1@2 ~@2 g1@2 ~@4 b1 ~ d2@3 f1@3 f#1 ~@2, ~@3 b1 ~@8", Y: "g1@2 ~ b1@2 ~ g1!2 ~@5 b1 ~ g1@3 d1@3 e1@3",
  Z: "g1@2 ~ g1@2 ~ g1!2 ~@5 b1 ~ g1@3 g1@3 g1@3", AA: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 g1 ~ b1@3 g1@3 b1@3",
  AB: "c2@2 ~ d2@2 ~ c2 c2@2 ~@4 c2 ~ c2@3 f1@3 f#1@3", AC: "g1@2 ~ a1@2 ~@2 g1@2 ~@4 g1 ~ b1@3 d2@3 b1@3, ~@3 b1 ~@8",
  AD: "c2@2 ~ a1@2 ~ c2!2 ~@4 c2 ~@2 f#1 f1 ~ g1 f1@2 d#1 f1@2", AE: "g1@2 ~ g1@2 ~ b1 g1@2 ~@4 e1 ~ g1@6 b1 ~@2",
  AF: "c2@2 ~ g1@2 ~ e1 c2@2 ~@4 g1 ~ e1@6 a1 ~@2", AG: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 g1 ~ e1@3 c2@3 g1@3",
  AH: "f1@2 ~ f1@2 ~ f1!2 ~@5 f1 ~ d1@3 f1@3 a1@3", AI: "c2@2 ~ c2@2 ~ c2!2 ~@5 c2 ~ c2@3 c2@3 c2@3",
  AJ: "f1@2 ~ a1@2 ~ c2 f1@2 ~@4 f1 ~ f1@3 c2 ~@2 a1@3", AK: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 c2 ~ d2@3 c2@3 d2@3",
  AL: "c2@2 ~ d2@2 ~ c2 c2@2 ~@4 a1 ~ c2@6 f#1@3", AM: "g1@2 ~ g1@2 ~ g1!2 ~@5 g1 ~ g1@3 e1 g1@2 a1 b1@2",
  AN: "c2@2 ~ d2@2 ~ c2!2 ~@5 c2 ~ g1@3 a#1@3 b1 ~@2", AO: "c2@2 ~ c2@2 ~ a1 c2@2 ~@4 d2 ~ c2@6 e1@3",
  AP: "f1@2 ~ f1@2 ~ f1 f1@2 ~@4 d1 ~ f1@3 a#1@3 b1 ~@2",
  AQ: "c2@2 ~ a1@2 ~@2 c2@2 ~@4 c2 ~ c2@3 d#1@3 e1@3, ~@3 g1 ~@8",
  AR: "f1@2 ~ f1@2 ~ f1!2 ~@5 a1 ~ f1@3 g1 c2@2 a#1 b1 ~",
  AS: "c2@2 ~ c2@2 ~@2 c2 ~@5 e1 ~ c2 a1 ~@2 c2 ~ a#1 b1@2, ~@3 d2 ~@5 g1 ~@2",
  AT: "c2@2 ~ c2@2 ~ c2!2 ~@5 c2 ~ d2@3 c2@3 c2@3", AU: "c2@2 ~ d2@2 ~ c2!2 ~@5 a1 ~ g1@3 g1 ~@2 e1@3",
  AV: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 f1 ~ g1@3 b1@3 g1@3", AW: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 b1 ~ g1@3 f1@3 d1@3",
  AX: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 g1 ~ g1@3 f1@3 g1@3", AY: "g1@2 ~ f1@2 ~@2 g1 ~@5 g1 ~ g1@6 b1 ~@2, ~@3 d1 ~@8",
  AZ: "c2@2 ~ a1@2 ~ c2!2 ~@5 c2 ~ c2@6 g1@3", BA: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 c2 ~ c2@3 c2@3 a1@3",
  BB: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 a1 ~ c2@3 a#1 ~@2 b1@3",
  BC: "c2@2 ~ c2@2 ~@2 c2@2 ~@4 a1 ~ c2@3 f1 ~@2 f#1@3, ~@3 a1 ~@8", BD: "g1@2 ~ g1@2 ~ g1!2 ~@5 b1 ~ d2@3 g1@3 d2@3",
  BE: "g1@2 ~ g1@2 ~ g1!2 ~@5 g1 ~ g1@3 g1@3 f1@3", BF: "g1@2 ~ d2@2 ~ b1 g1@2 ~@4 f1 ~ g1@3 g1 ~@2 f1@3",
  BG: "g1@2 ~ f1@2 ~ b1 g1@2 ~@4 b1 ~ g1@3 a#1 ~@2 b1@3", BH: "c2@2 ~ c2@2 ~ c2 c2@2 ~@3 c2 ~@2 c2@3 c2@3 a#1@3",
  BI: "g1@2 ~ g1@2 ~ g1!2 ~@5 e1 ~ d1@3 g1@3 a1@3", BJ: "c2@2 ~ c2@2 ~ c2!2 ~@5 c2 ~ c2@3 e1@3 g1@3",
  BK: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 e1 ~ c2@3 g1@3 c2@3", BL: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 g1 ~ g1@3 g1@3 f1@3",
  BM: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 f1 ~ g1@3 f1@3 b1@3", BN: "g1@2 ~ g1@2 ~ g1!2 ~@5 g1 ~ g1@3 g1@3 g1@3",
  BO: "g1@2 ~ g1@2 ~@2 g1 ~@5 g1 ~ g1@3 ~ b1 ~@2 b1 ~, ~@6 b1@2 ~@10 a1@2 ~ d2@2 ~",
  BP: "c2@2 ~ g1@2 ~ c2 c2@2 ~@4 e1 ~ c2@3 a#1@3 b1@3", BQ: "c2@2 ~ c2@2 ~ c2 c2@2 ~@4 c2 ~ c2@3 g1@3 e1@3",
  BR: "c2@2 ~ c2@2 ~ c2!2 ~@5 g1 ~ e1@3 c2@3 c2@3", BS: "g1@2 ~ g1@2 ~ g1!2 ~@5 g1 ~ d2@3 b1@3 g1@3",
  BT: "g1@2 ~ f1@2 ~ d1 g1@2 ~@4 f1 ~ d1@3 f1@3 f#1@3", BU: "g1@2 ~ g1@2 ~ g1 g1@2 ~@4 g1 ~ f1@3 g1@3 g1@3",
})).s("gm_electric_bass_pick").gain(0.47).pan(0.6)

// other · overdriven guitar
const overdriven_guitar = note("<~@15 [~ c5@2 ~]!6 ~@30 [~ c5@2 ~]!6 ~@32>").s("gm_overdriven_guitar").gain(0.2).pan(1)

// chords · piano
const piano_2 = note(`<
  ~@7 A B C B D B A E F B C B G H I J K L@2 M@4 N@4 M@4 L M O P ~ Q B C R S R A T U H C R C B V W X L@2 M@4 L@4 M@4 O M
  N@2 M@4 N@4 M@3
>`.pickRestart({
  A: "[c4,e4,g4]", B: "[e3,g3,c4]@5 ~@7", C: "[a3,c4,f4]", D: "a3@2 ~ f3, [c4,f4], ~ a3", E: "[b3,d4,f4]@5 ~@7",
  F: "e4, c4@11 ~", G: "[f3,a3,c4]", H: "[c4,e4,g4]@5 ~@7", I: "[e3,g3,c4] [f#3,c4,d#4]", J: "[b3,d4,g4]@5 ~@7",
  K: "[g3,b3,d4]", L: "[c4,e4,g4]!12", M: "[b3,d4,f4]!12", N: "[g3,c4,e4]!12", O: "[c4,e4,g4]!6 [c4,d#4,f#4]!6",
  P: "[b3,d4,g4]!12", Q: "[e3,g3,c4]", R: "[g3,c4,e4]@5 ~@7", S: "[f3,a3]@11 f3, c4", T: "[f3,b3,d4]@5 ~@7",
  U: "g3@11 g3, c4", V: "[c4,e4,g4] [c4,e4,f#4]", W: "[g3,b3,d4]@5 ~@7", X: "d4@11 d4, [g3,b3]",
})).s("gm_piano").gain(0.47).pan(1)

// drums · kick
const kick = s("bd").struct("<~@3 A B C ~ B@15 C ~ B@17 C@2 B@14 D C ~ B@15 C B@7 C B@5>".pickRestart({
  A: "~ x", B: "x!2", C: "x", D: "x ~@6 x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@3 A@2 B ~ A@15 C ~ A@17 B ~ A@14 D ~@2 A@15 B A@7 B A@5>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x", D: "~@3 x ~@4 x ~@3",
})).gain(0.42)

// drums · low tom
const low_tom = s("lt").struct("<~@5 A ~@35 A ~@15 A B ~@16 A ~@7 A ~@5>".pickRestart({
  A: "~@6 x ~ x!2 ~@2", B: "x",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@3 A B C@2 B@2 A B@12 D ~ B@17 E C B@7 F B@6 C D ~ B@15 E B@7 E B@5>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "~ x!2 ~", E: "x!2 ~@2", F: "x!3 ~",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A ~@3 B ~@12 C ~@27 C ~@6 A C ~@30>".pickRestart({
  A: "~ x ~@2", B: "x", C: "~@3 x",
})).gain(0.48)

stack(
  flute, bass, piano, electric_guitar_clean, whistle, bass_2, overdriven_guitar, piano_2, kick, snare, low_tom, hihat,
  open_hat
)

More by ABBA