Strudelify
Dancing Queen cover art

1976 · Arrival

Dancing Queen

ABBA

KeyA majorTempo100 bpm
0:00/0:00
// Dancing Queen — ABBA
// 100 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · electric bass finger · "Electric Bass"
const bass = note(`<
  ~@2 A B C D C D E F G H I J K L M N O P Q R S T U@2 V W Q X S Y Z AA AB AC AD AE A AF AG AH M AI E AJ AK AL AM AN AO
  AP AQ AR AQ AS AT AU AV AH S AW AX@2 AY AZ BA BB S BC Q D S D E F BD BE BF BG BH BI S D S AH S D S AH S BJ S AH S AH S
  BK
>`.pickRestart({
  A: "a1@2 ~ a1 ~@2 a1@2 ~ a1 e2 f#2 a2@3 ~", B: "a1@2 ~ a1 ~@2 a1@4 e1!2 f#1@2 g#1@2",
  C: "a1@2 ~ a1 ~@2 a1@2 ~ a1 e2 f#2 a2@4", D: "a1@2 ~ a1 ~@2 a1@2 ~ a1 e1@2 f#1@2 g#1@2",
  E: "a1@2 ~ a1 ~@2 a1@3 a1 a1@2 g#1@3 ~", F: "f#1@2 ~ f#1 ~@2 e1@3 ~ e1 ~ e1 f#1 g#1@2",
  G: "e1@2 ~ e1 ~@2 e1@2 ~ e1 e2 ~ e2 b1@2 c2", H: "c#2@2 ~ c#2 ~@2 c#2@2 ~ c#2 d2@2 d#2!2 e2 f2",
  I: "f#2@3 f#2 ~@2 f#2@2 ~ f#2!2 ~ f#2 e2@3", J: "d#2@2 ~ d#2 ~@2 d#2@2 ~ d#2 b2 ~ b2 d#2@3",
  K: "d2@2 ~ d2 ~@2 d2@4 d2@2 ~ c#2@3", L: "b1@2 ~ b1 ~@2 b1@3 ~ b1@2 e1@2 f#1@2",
  M: "a1@2 ~ a1 ~@2 a1@4 e2 f#2 a2@3 ~", N: "a1@2 ~ a1@2 ~ a1@2 ~ a1 e1!2 f#1@2 g#1@2",
  O: "a1@2 ~ a1 e2 f#2 a2@2 ~ a1 a1@2 a1@2 ~@2", P: "a1@2 ~ a1 e2 f#2 a2@2 ~ a1!2 ~ a1@3 ~",
  Q: "a1@2 ~ a1 ~@2 a1@3 ~ a1@2 e2 f#2 a2 ~", R: "a1@2 ~@4 a1@3 e1@3 f#1@2 g#1@2",
  S: "a1@2 ~ a1 ~@2 a1@3 ~ a1@2 e2 f#2 a2@2", T: "f#2@2 ~ f#2 ~@2 f#2@4 c#2 ~ f#2 e2 f#1 ~",
  U: "e1@2 ~ e1 ~@2 g#1@4 e2 ~ e2 f#2 a2 ~", V: "e2@2 ~ f#2 ~@2 f#2@4 e2 f#2 e2 f#2 f#1 ~",
  W: "f#1@2 ~ f#1 ~@2 f#1@3 ~ f#1!2 f#1@2 g#1@2", X: "a1@2 ~ a1 ~@2 a1@3 e1@3 f#1@2 g#1@2",
  Y: "f#2@2 ~ f#2 ~@2 f#2@3 ~ f#2 e2 f#2@2 f#1@2", Z: "e2@2 ~ e1 ~@2 e2@3 ~ e2 f#2 a2@2 d3@2",
  AA: "e2@2 ~ e2 ~@2 b1@4 e2 ~ e2@2 b1 c#2", AB: "e2@2 ~ f#2 ~@2 f#2@4 a2@2 f#2 ~ f#2@2",
  AC: "f#1@2 ~ f#1 ~@2 f#1@4 f#2 ~ f#2@2 f#1@2", AD: "b1@2 ~ b1 ~@2 b1@2 ~ b1!3 b1@2 f#1@2",
  AE: "e1@2 ~ e1 ~@2 e1@3 ~ e1 f#1 g#1@2 f#1@2", AF: "a1@2 ~ a1 ~@2 a1@3 e1!2 ~ f#1@2 g#1@2",
  AG: "a1@2 ~ a1 ~@2 a1@3 a1 e2 f#2 a2@4", AH: "a1@2 ~ a1 ~@2 a1@3 a1 e1@2 f#1@2 g#1@2",
  AI: "a1@2 ~ a1@2 ~ a1@4 e1!2 f#1@2 g#1@2", AJ: "f#1@2 ~ f#1 ~@2 e1@2 ~ e1@3 e1 f#1 g#1@2",
  AK: "e1@2 ~ e1!2 ~ e1@2 ~ e1 e2 b1 e2@2 b1 c2", AL: "c#2@2 ~ c#2 ~@2 c#2@2 ~ c#2 d#2!2 e2!3 f2",
  AM: "f#2@2 ~ f#2!2 ~ f#2@2 ~ f#2!3 f#2@2 e2@2", AN: "d#2@2 ~ d#2!2 ~ d#2@2 ~ d#2!3 d#2@2 ~ d#2",
  AO: "d2@2 ~ d2 ~@2 d2@3 ~ d2 ~ d2 c#2@3", AP: "b1@2 ~ b1 ~@2 b1@3 f#1 b1!2 e1@2 f#1@2",
  AQ: "a1@2 ~ a1 ~@2 a1@2 ~ a1!2 ~ e2 f#2 a2@2", AR: "a1@2 ~ a1 ~@2 a1@2 ~ a1 e1!2 f#1@2 g#1!2",
  AS: "a1@2 ~ a1 ~@2 a1@3 a1 a1@2 e1@2 f#1@2", AT: "a1@2 ~ a1 ~@6 e2 f#2 a2@2 a1 ~",
  AU: "a1@2 ~ a1 ~@2 a1@3 ~ e2 f#2 a2@2 g#1 ~", AV: "a1@2 ~ a1 ~@2 a1@2 ~ a1 a1@2 e2 f#2 a2@2",
  AW: "f#2@2 ~ f#2 ~@2 f#2@3 ~ f#2 c#2 f#2@2 g#1@2", AX: "e1@2 ~ e1 g#1@2 e2@4 e2!3 g#2 b2 ~",
  AY: "e1@2 ~ f#1@2 e2 f#2 ~", AZ: "f#2@2 ~ f#2 ~@2 f#2@2 ~@2 f#2@3 c#2@3", BA: "b1@5 ~ b1@2 b2 f#2 d2@2 d2@2 g#1@2",
  BB: "e1@4 ~ e1 e2 d2@2 e2 d2@2 ~ d2 ~ g#1", BC: "a1@2 ~ a1 ~@2 a1@2 ~ e1!3 f#1@2 g#1@2",
  BD: "e1@2 ~ e1 ~@2 e1@2 ~ e1 e2 b1 e2 b1@3", BE: "c#2@2 ~ c#2 ~@2 c#2@2 ~ c#2 d2 c#2 d#2 e2 f2@2",
  BF: "f#2@2 ~ f#2 ~@2 f#2@4 a2 c#3 a2@2 a#2 b2", BG: "d#2@2 ~ d#2 ~@2 d#2@2 ~ d#2 b2 d#2 b2 d#2@3",
  BH: "d2@2 ~ d2 ~@2 d2@3 d3 d2@2 d2 c2@3", BI: "b1@2 ~ b1 ~@2 b1@3 f#1 b1@2 b1@2 e2@2",
  BJ: "a1@3 a1 ~@2 a1@3 a1 e1@2 f#1@2 g#1@2", BK: "a1@3 a1 ~@2 a1@2 ~ a1 e1@2 f#1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · piano · "Bright Piano"
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X@2 Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN D E AO AP AQ AR L AS
  AT AU AV AN AW AX AY AZ BA BB BA BC BD AF BE AH BF AJ BG AL BH N BI BJ BK AP BL BM L BN N@2 BI N BO BP BI N BI BQ BR N
  BI N BI N BI BS
>`.pickRestart({
  A: "~@12 [a5,b5,c6,d6,e6,f6] [b4,c5,d5,e5,f5,g5] [b3,c4,d4,e4,f4,g4,a4] [d3,e3,f3,g3,a3]", // Dm7 Cmaj7 Bm7b5 Dm
  B: "~ [a3,c#4,e4,a4] ~@2 [a3,e4,a4] ~@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4,a4]@3 ~@3, ~@4 c#4@2 ~ a4 ~@8", // A A5 A
  C: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4,a4]@4 ~@2, ~@7 a4 ~@8", // D
  D: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@5 ~", // A
  E: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,f#4]@2 ~ [a3,d4,f#4,a4]@5 ~, ~@7 [d4,a4] ~@8", // D D5
  F: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,a4] ~@2 [a3,c#4,e4,a4]@5 ~, ~@7 e4@2 ~@7", // A
  G: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@4 ~@2, ~@7 a3@2 ~@7", // D
  H: "~ [b3,e4,g#4,b4] ~@2 [b3,g#4,b4] ~@2 [c#4,e4,a4,c#5]@4 ~ [b3,e4,g#4,b4]@3 ~, ~@2 e4 ~@5", // E A E
  I: "[b3,d4,f#4,a4]@2 [b3,d4,f#4,a4] ~@3 [a3,c#4,e4,a4]@8 ~@2", // Bm7 A
  J: "[b3,e4,g#4,b4]@9 ~ [b3,e4,g#4,b4] ~ [b3,e4,g#4,b4]@2 ~@2", // E
  K: "[c#4,f4,g#4,b4]@9 ~ [c#4,f4,g#4,b4] ~ [c#4,f4,g#4,b4]@2 ~@2", // C#7
  L: "[c#4,e4,f#4,a4]@2 ~ [c#4,e4,f#4,a4] ~@2 [c#4,e4,f#4,a4]@8 ~@2", // F#m7
  M: "[b3,d#4,f#4,a4]@2 ~ [b3,d#4,f#4,a4] ~@2 [b3,d#4,f#4,a4]@4 [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4]@2 ~@2", // B7
  N: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@6", // D
  O: "~ [a3,d4,f#4,a4] ~@2 [d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@5 ~, ~@4 a3 ~@11", // D
  P: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@2 ~ [a3,c#4,e4]@2 ~ [a3,c#4,e4,a4]@5 ~, ~@7 a4 ~@8", // A
  Q: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4]@2 ~ [a3,f#4,a4] ~@2 [a3,d4,f#4,a4]@5 ~, ~@4 a4 ~@2 d4@2 ~@7", // D
  R: "~@10 [a3,d4,f#4,a4] ~ [a3,d4,f#4,a4]@2 ~@2", S: "~@10 [a3,d4,f#4,a4] ~ [a3,d4,f#4]@2 ~@2, ~@12 a4 ~@3",
  T: "[a3,c#4,e4]@4 ~@2 [a3,c#4,e4]@7 ~@3", U: "[a3,d4,f#4]@4 ~@2 [a3,d4,f#4]@5 ~ [b3,e4,g#4]@3 ~",
  V: "[a3,c#4,e4]@2 ~ [a3,c#4,e4]@4 ~", W: "[a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@4 ~",
  X: "[e2,e3]@2 ~ [e2,e3] ~@2 [e2,e3]@8 ~@2", Y: "[e2,e3]@2 ~ [f#2,f#3] ~@2 [f#2,f#3]@9 ~",
  Z: "[e3,e4]@3 [f#3,f#4] ~@2 [f#3,f#4]@9 ~", AA: "[a3,c#4,e4,a4]@2 ~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@9 ~",
  AB: "[a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@9 ~", // D
  AC: "[a3,c#4,e4,a4]@3 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@9 ~", // A
  AD: "[a3,c#4,f#4]@2 ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@9 ~", // F#m
  AE: "[e2,e3,b3,d4,e4,g#4]@3 [e2,e3,b3,d4,e4,g#4] ~@2 [e2,e3,c#4,e4,a4]@8 ~@2", // E7 A
  AF: "[e2,e3,b3,d4,e4,g#4]@3 [e2,e3,b3,d4,e4,g#4] ~@2 [e2,e3,c#4,e4,a4]@9 ~", // E7 A
  AG: "[e2,e3]@2 ~ [f#2,f#3] ~@2 [f#2,f#3]@3 ~@5 c#4 a4, ~@9 f#2@4 a3@2 ~, ~@10 a2@5 ~, ~@11 c#3@4 ~, ~@12 f#3@3 ~", // E F#
  AH: "[b3,e4,g#4]@3 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@7 ~@3", AI: "[c#4,c#5]@2 ~ [d4,d5] ~@2 [d4,d5]@10",
  AJ: "[e3,d4,e4,g#4,b4]@15 ~", // E7
  AK: "~ [a3,c#4,e4,a4] ~@2 [c#4,e4]@2 ~ [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4]@5 ~, ~@4 [a3,a4] ~@11", // A C#m A
  AL: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4,a4]@5 ~, ~@7 a4 ~@8", // D
  AM: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,a4] ~@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4,a4]@6, ~@4 e4@2 ~ a4 ~@8", // A
  AN: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@5 ~", // D
  AO: "~ [b3,e4,g#4,b4] ~@2 [e4,g#4]@2 ~ [c#4,e4,a4,c#5]@3 [c#4,e4,a4,c#5] ~ [b3,e4,g#4,b4]@3 ~, ~@4 [b3,b4] ~@11", // E A E B
  AP: "[a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4] ~@2 [a3,c#4,e4,a4]@8 ~@2", // D A
  AQ: "[b3,e4,g#4,b4]@9 ~ [e4,g#4]@2 [b3,e4,g#4,b4]@2 ~@2, ~@10 [b3,b4] ~@5", // E B
  AR: "[c#4,f4,g#4,b4]@8 ~@2 [c#4,f4,g#4,b4] ~ [c#4,f4,g#4,b4]@3 ~", // C#7
  AS: "[b3,d#4,f#4,a4]@2 ~ [b3,d#4,f#4,a4] ~@2 [b3,d#4,f#4,a4]@5 ~ [b3,d#4,f#4,a4]@3 ~", // B7
  AT: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4,a4]@6, ~@7 a4 ~@8", // D
  AU: "~ [a3,d4,f#4,a4] ~@2 [a3,f#4]@2 ~ [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@5 ~, ~@4 [d4,a4] ~@11", // D D5
  AV: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4]@2 ~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@6, ~@4 [e4,a4] ~@11", // A A5
  AW: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,a4] ~@2 [a3,c#4,e4,a4]@2 ~ [a3,c#4,e4,a4]@6, ~@2 e4 ~@5", // A
  AX: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4]@2 ~ [a3,d4,f#4,a4]@6, ~@7 a4 ~@8", // D
  AY: "~@5 [d4,f#4] [a3,d4,f#4,a4] ~, ~@10 [a3,a4] ~@5", AZ: "~@10 [a3,d4,f#4,a4] ~ [a3,d4,f#4,a4] ~@3",
  BA: "[a3,c#4,e4]@5 ~ [a3,c#4,e4]@8 ~@2", BB: "[a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@4 ~",
  BC: "[a3,c#4,f#4]@5 ~ [a3,c#4,f#4]@9 ~", // F#m
  BD: "[e2,e3,b3,d4,e4,g#4]@2 ~ [e2,e3,b3,d4,e4,g#4] ~@2 [e2,e3,c#4,e4,a4]@9 ~", // E7 A
  BE: "[e2,e3]@2 ~ [f#2,f#3] ~@2 f#2@3 ~@5 c#4 a4, ~@6 f#3@5 c#3@2 a3@2 ~, ~@9 f#2@5 ~@2, ~@5 a2@2 ~, ~@12 f#3@3 ~", // E F#
  BF: "[c#4,f#4,a4,c#5]@2 ~ [d4,f#4,a4,d5] ~@2 [d4,f#4,a4,d5]@10, b2", // F#m D
  BG: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@4 ~@2", // A
  BH: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [c#4,e4]@2 ~ [a3,c#4,e4,a4]@5 ~, ~@7 [a3,a4] ~@8", // A C#m A
  BI: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@6", // A
  BJ: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@4 ~@2", // D
  BK: "~ [b3,e4,g#4,b4] ~@2 [b3,e4,g#4,b4] ~@2 [c#4,e4,a4,c#5]@5 [b3,e4,g#4,b4]@3 ~", // E A E
  BL: "[b3,e4,g#4]@4 ~ [b3,e4,g#4]!2 ~", BM: "[c#4,f4,g#4,b4]@9 ~ [c#4,f4,b4] ~ [c#4,f4,g#4,b4]@2 ~@2, ~@5 g#4 ~@2",
  BN: "[b3,d#4,f#4,b4]@3 [b3,d#4,f#4,b4] ~@2 [b3,d#4,f#4,b4]@3 ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4]@4", // B
  BO: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [a3,c#4,e4,a4]@6, ~@7 a3@2 ~@7", // A
  BP: "~ [a3,d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@6, ~@2 a3 ~@5", // D
  BQ: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@3", // D
  BR: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4]@2 ~ [a3,c#4,e4,a4]@6, ~@4 a4 ~@2 a4 ~@8", // A
  BS: "~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4] ~@2 [a3,d4,f#4,a4]@2 ~ [a3,d4,f#4,a4]@3", // D
})).s("gm_piano").gain(0.23).pan(0.4)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@10 A B C D E@3 ~@4 F G ~@6 F G ~@6 H I J K@2 I L M N A O P D E@3 ~@6 F G ~ Q R S ~@2 H I T U@2 V T M W A X Y Z AA@2
  ~@11 AB AC ~@3
>`.pickRestart({
  A: "g#5@9 f#5 g#5 f#5 g#5 a5@3", B: "g#5@9 a5 b5 a5 b5 c#6@2 ~", C: "a5@3 b5@3 g#5@2 a5@3 b5@3 g#5@2",
  D: "a5@3 b5@3 c#6@2 d#6@3 e6@3 f#6@2", E: "[e6@11 ~]/3", F: "a5 f#5 d5 a5 f#5 d5 a5 f#5 d5 a5 f#5 d5 a5 g#5 e5@2",
  G: "c#5 ~@3", H: "b4 c#5!4 d5!3 e5@2 ~ f#5@2 ~ g#5 ~", I: "g#5@2 ~ a5 ~@2 a5@9 ~", J: "g#5@2 ~ a5 ~@2 a5@4 b5@4 a5@2",
  K: "[g#5@3 a5 ~@2 a5@21 ~ a5 g#5 e5 ~]/2", L: "g#5@2 ~ a5@2 ~ a5@4 b5@4 a5@2", M: "b5@2 ~ c#6 ~@2 c#6@9 b5",
  N: "b5@3 a5@2 ~ e5@9 ~", O: "g#5@8 ~ a5 b5 a5 b5 c#6@2 ~", P: "a5@3 b5@2 ~ g#5@2 a5@2 ~ b5@2 ~ g#5@2",
  Q: "[e2,e3]@2 ~ [e2,e3] ~@2 [e2,e3]@5 ~@5", R: "[e2,e3]@2 ~ [e2,e3] ~@2 [e2,e3]@7 ~@3", S: "e3@3 f#3 ~@2 f#3@7 ~@3",
  T: "g#5@2 ~ a5 ~@2 a5@4 b5@4 a5 ~", U: "[g#5@2 ~ a5 ~@2 a5@21 ~ a5 g#5 e5 ~]/2", V: "g#5@2 ~ a5@2 ~ a5@9 ~",
  W: "b5@2 ~ a5 ~@2 e5@9 ~", X: "g#5@9 a5 b5 a5 b5 c#6@3", Y: "a5@2 ~ b5@2 ~ g#5@2 a5@2 ~ b5@3 g#5@2",
  Z: "a5@2 ~ b5@2 ~ c#6@2 d#6@3 e6@3 f#6@2", AA: "e6/2", AB: "~@7 [b3,b4] ~ [c#4,c#5] ~ [d4,d5] ~ [e4,e5]!3",
  AC: "[g#4,g#5] [a4,a5]!2 a5 [a4,a5]@3 ~@9", // G# A
})).s("gm_string_ensemble_1").gain(0.16)

// other · pad halo · "Halo-Pad"
const pad_halo = note(`<
  ~@2 A B C@2 A D E F G H I J K L M N ~@13 O ~@5 P Q R S T Q U V@2 W X I Y K Z M AA ~@7 O ~@5 AB Q AC S T AD AE AF ~ W X
  I J AG AH S AA AI AJ S AA AK AL ~@8
>`.pickRestart({
  A: "c#4@3 b3", B: "d4@11 ~ c#4 b3 ~ a3", C: "[b3@3 c#4@2 ~ c#4@24 ~@2]/2", D: "d4@12 c#4 b3 ~ a3",
  E: "b3@3 c#4@2 ~ c#4@10", F: "a3@7 ~", G: "e4@3 ~ e4 ~ e4@8 ~@2", H: "f4@3 ~ f4@2 f4@9 ~",
  I: "a4@3 b4@3 g#4@2 a4@3 b4@3 g#4@2", J: "a4 g#4 f#4@6 c#5@2 b4 c#5 b4 a4@2 ~", K: "e4@2 ~ e4 ~@2 e4@8 ~@2",
  L: "e4@2 ~ e4@2 ~ e4@5 ~ e4 d4 ~ d4", M: "d4@3 c#4 ~@2 c#4@10", N: "d4@7 ~", O: "f#4@7 ~",
  P: "~@8 d4@2 ~ d4 ~@2 d4 ~", Q: "d4@2 ~ c#4 ~@2 c#4@8 ~@2", R: "d4@2 ~ d4 ~@2 d4@4 d4@3 ~ d4 ~",
  S: "d4@2 ~ c#4 ~@2 c#4@10", T: "d4@15 ~", U: "d4@2 ~ d4@2 ~ d4@3 ~ d4@4 b3@2",
  V: "[[e4,g#4]@2 ~ [e4,a4]@2 ~ [e4,a4]@6 e4@20]/2", W: "g#4@3 ~ g#4 ~ g#4@8 ~@2", X: "g#4@3 ~ g#4 ~ g#4@4 a4@5 ~",
  Y: "a4 g#4 f#4@5 ~ c#5@2 b4 c#5 b4 a4@3", Z: "e4@2 ~ e4 ~@2 e4@5 ~ e4 d4 ~ d4", AA: "d4",
  AB: "~@8 d4@2 ~ d4@2 ~ d4 ~", AC: "d4@2 ~ d4 ~@2 d4@3 ~ d4@3 ~ d4 ~", AD: "d4@2 ~ c#4 ~@2 c#4@9 ~",
  AE: "d4@2 ~ d4 ~@2 d4@3 ~ d4@3 ~ b3@2", AF: "[e4,g#4]@3 [e4,a4] ~@2 [e4,a4]@6 [e4,g#4]@4", AG: "e4@3 e4 ~@2 e4@9 ~",
  AH: "e4@3 e4 ~@2 e4@5 ~ e4 d4 ~ d4", AI: "c#4@3 ~@13", AJ: "~@12 d4!2 ~ d4", AK: "c#4", AL: "d4@13 ~@3",
})).s("gm_pad_halo").gain(0.3)

// chords · pad poly · "Polysynth Pad"
const pad_poly = note(`<
  ~@2 A B C D A B E F G H I J K@2 L M N O A D A I P Q R@2 A S A T P Q U R D V W X Y X Y M Z AA AB H AC J K@2 L X L M
  AD@2 A D C T AE Q R AF D V A D A B AG B AH F V H T J K@2 AI D AJ AK L X AL M AL X AJ M AJ X Y X
>`.pickRestart({
  A: "[a3,c#4,e4]@15 ~", B: "[a3,d4,f#4]@7 ~", C: "[a3,c#4,e4]", D: "[a3,d4,f#4]@15 ~",
  E: "[b3,e4,g#4]@3 [c#4,e4,a4] ~@2 [c#4,e4,a4]@6 [b3,e4,g#4]@4", F: "[a3,d4,f#4]@5 ~ [a3,c#4,e4]@8 ~@2",
  G: "[g#3,b3,e4]@13 ~@3", H: "[b3,c#4,f4]@7 ~", I: "[a3,c#4,f#4]@7 ~", J: "[b3,d#4,f#4]@7 ~", K: "[a3,d4,e4]@15 ~",
  L: "[a3,c#4,e4]@3 [a3,c#4,e4] ~@2 [a3,c#4,e4]@9 ~", M: "[a3,d4,f#4]@3 [a3,d4,f#4] ~@2 [a3,d4,f#4]@8 ~@2",
  N: "[a3,c#4,e4]@2 ~ [a3,c#4,e4] ~@2 [a3,c#4,e4]@4 ~@6", O: "[a3,c#4,e4]@3 [a3,c#4,e4] ~@2 [a3,c#4,e4]@4 ~@6",
  P: "[g#3,b3,e4]@3 [g#3,b3,e4] ~@2 [a3,c#4,e4]@9 ~", Q: "[g#3,b3,e4]@3 [g#3,b3,e4] ~@2 [a3,c#4,e4]@8 ~@2",
  R: "[g#3,b3,e4]@3 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@9 ~", S: "[a3,d4,f#4]", T: "[a3,c#4,f#4]@15 ~",
  U: "[g#3,b3,e4]@3 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]@10", V: "[g#3,b3,e4]@15 ~",
  W: "[a3,c#4,e4]@3 [a3,c#4,e4] ~@2 [a3,c#4,e4]@4 [a3,c#4,e4]@5 ~", X: "[a3,d4,f#4]@3 [a3,d4,f#4] ~@2 [a3,d4,f#4]@9 ~",
  Y: "[a3,c#4,e4]@2 ~ [a3,c#4,e4] ~@2 [a3,c#4,e4]@9 ~", Z: "[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@5 ~ [b3,e4,g#4]@3 ~",
  AA: "[a3,d4,f#4]@5 ~ [a3,c#4,e4]@9 ~", AB: "[g#3,b3,e4]@7 ~", AC: "[a3,c#4,f#4]@13 ~@3", AD: "[a2,e3,c#4,e4]@11 ~@5",
  AE: "[g#3,b3,e4]@4 ~@2 [a3,c#4,e4]@9 ~", AF: "[b3,e4,g#4]@2 ~ [c#4,f#4,a4] ~@2 [c#4,f#4,a4]@9 ~",
  AG: "[a3,c#4,e4]@7 ~", AH: "[b3,e4,g#4]@3 [c#4,e4,a4] ~@2 [c#4,e4,a4]@5 ~ [b3,e4,g#4]@3 ~",
  AI: "[a3,e4]@2 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4]@9 ~, c#4 ~@15", AJ: "[a3,c#4,e4]@3 [a3,c#4,e4] ~@2 [a3,c#4,e4]@10",
  AK: "[a3,d4,f#4]@3 [a3,d4,f#4] ~@2 [a3,d4,f#4]@10", AL: "[a3,c#4,e4]@2 ~ [a3,c#4,e4] ~@2 [a3,c#4,e4]@10",
})).s("gm_pad_poly").gain(0.25)

// chords · banjo
const banjo = note(`<
  ~@9 A ~@10 B C B D ~@4 B C B E ~@5 F G H B C B C ~@2 I J K@2 L M B C B N ~@2 B C B O ~@14 I J K@2 L M B C B C B C B C
  B C B C B C B P
>`.pickRestart({
  A: "~ a3!5 ~@10", B: "[c#4,e4]!16", C: "[d4,f#4]!16", D: "[c#4,f#4]!6 c#4 [c#4,f#4]!2 c#4!2 [c#4,f#4]!5",
  E: "[c#4,f#4]!7 c#4 [c#4,f#4]!8", F: "[b3,d4]!16", G: "[c#4,e4] e4 [c#4,e4]!14", H: "d4 [d4,f#4]!15",
  I: "[e4,g#4]!16", J: "[f4,g#4]!16", K: "[f#4,a4]!16", L: "[e4,a4]!16", M: "[d4,a4]!16",
  N: "[d4,f#4]!3 d4 [d4,f#4]!4 ~@8", O: "[c#4,f#4]!5 c#4 [c#4,f#4] c#4 [c#4,f#4]!8", P: "[d4,f#4]!6 d4 [d4,f#4]!7 ~@2",
})).s("gm_banjo").gain(0.07).pan(0.3)

// chords · piano · "Bright Piano"
const piano_2 = note(`<
  ~@4 A B ~@2 C D ~@3 E F ~ A G ~@5 H I J K L ~@3 M I N K O ~@2 P Q R S P ~ T U ~@3 E V ~ A G ~@7 M I N W O ~@2 P X A Y
  Z AA AB AC ~@2 AD E V ~@3 A AE ~@2 A Y ~@2 R AF ~@2 A AE
>`.pickRestart({
  A: "~@11 [a5,c#6,e6,a6] [a5,c#6,e6,a6]@3 [g#5,b5,e6,g#6]", // A E
  B: "[g#5,b5,e6,g#6]@3 [f#5,a5,d6,f#6] [f#5,a5,d6,f#6]@8 ~@4", C: "~@3 [e5,g#5,b5]",
  D: "[d5,f#5,a5]@3 [c#5,e5,a5]@4 ~", E: "[a4,a5]@3 [b4,b5]@3 [c#5,c#6]@2 [d#5,d#6]@3 [e5,e6]@3 [f#5,f#6]@2",
  F: "[e5,e6]@15 ~", G: "[g#5,b5,e6,g#6]@3 [f#5,a5,d6,f#6] [f#5,a5,d6,f#6]@10 ~@2",
  H: "~@11 [a4,a5] ~ g#4@2 [e4,e5], ~@13 g#5 ~@2", // A E
  I: "[d4,d5]@2 ~ [e4,e5] ~@2 [e4,e5]@4 [a4,a5]!2 ~ [g#4,g#5] ~ [e4,e5]", J: "[d4,d5]@3 [e4,e5]@3 [e4,e5]@10",
  K: "[e4,e5]@3 [f#4,f#5]@3 [f#4,f#5]@10", L: "[e5,e6]@3 [f#5,f#6]@3 [f#5,f#6]@8 ~@2",
// … 39 more lines

More by ABBA