Strudelify
Name of the Game cover art

The Album

Name of the Game

ABBA

KeyA majorTempo156 bpm
0:00/0:00
// Name of the Game — ABBA
// 156 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(156/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 · lead 5 charang · "CHARANG"
const lead_5_charang = note("<~ A@5 B@3 C@3 D@2 E@3 F D@4 E@3 ~@120>".pickRestart({
  A: "[~@4 [f#3,c#4]@15 [b3,e4] ~@3 f#3 [b3,e4]@4 [f#3,c#4]@22 ~ [b3,e4] ~@3 f#3 [b3,e4]@4 [f#3,c#4]@20]/5", // F#5 E5 F#5 E5 F#5
  B: "[~@3 [b3,e4] ~@4 [b3,e4]@4 [f#3,c#4]@12 e4@4 d#4@20, ~@7 f#3@2 ~@15 b3@24]/3", // E5 F#5
  C: "[[f#3,c#4]@19 [b3,e4] ~@4 [b3,e4]@4 [f#3,c#4]@20, ~@23 f#3@2 ~@23]/3", // F#5 E5 F#5
  D: "[~@3 [b3,e4] ~@3 f#3 [b3,e4]@4 [f#3,c#4]@20]/2", // E5 F#5
  E: "[~@3 [b3,e4] ~@3 f#3 [b3,e4]@4 [f#3,c#4]@12 e4@4 d#4@20, ~ b3]/3", F: "[f#3,c#4]",
})).s("gm_lead_5_charang").gain(0.17).pan(0.3)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B@4 C@3 D E@2 F@2 G@3 D F@4 H@3 I J K L I J M@2 N O@3 P Q R S T Q N U V W N X Y Z AA Q Y AB AC AD AE ~@7 AF AG AH
  AG AI AJ AK AL@2 AM@2 AN@2 AO@2 AP P Q R S T Q N U V W N X Y Z AA Q Y AB AC AD AQ ~@7 AF AG AH AG AI AJ AK AL@2 AM@2
  AN@2 AO@4 AP P Q R S T Q N AP P Q R AR T Q N AS@3
>`.pickRestart({
  A: "f#2 g#2 a2 b2", B: "[b1 c#2 e2 f#2@2 g#2 a2 b2]/2", C: "[b1@2 c#2@2 e2@2 f#2@4 g#2@2 a2@2 b1@9 ~]/3",
  D: "f#2@4 g#2@4 a2@4 b2@2 ~ b2", E: "[b1@3 ~ c#2@4 e2@4 f#2@8 g#2@4 a2@4 b2@2 ~ b2]/2",
  F: "[b1@4 c#2@4 e2@4 f#2@8 g#2@4 a2@4 b2@2 ~ b2]/2", G: "[b1 c#2 e2 f#2@2 g#2 a2 b1@5]/3",
  H: "[b1@4 c#2@4 e2@4 f#2@8 g#2@4 a2@4 b1@18 ~ f#2]/3", I: "f#1@2 ~ f#1 g#1@4 a1@4 c#2@4", J: "d#2@12 ~@3 d#2",
  K: "c#2@13 ~@2 c#2", L: "d2@8 ~@4 c#2 b1 ~ a1, ~@11 e2@2 ~@3", M: "[c#2@13 ~@3 d2@14 ~ a1, ~@15 c#2@2 ~@15]/2",
  N: "d2", O: "[b1@12 e1@16 ~@4 a1@11 ~@3 a1 ~, ~@31 e1@2 ~@15]/3", P: "d2 ~ d2@6", Q: "e2", R: "d2@11 ~ d2@4",
  S: "a1@6 ~ a1", T: "d2@2 ~@2 d2@7 ~ d2@4", U: "a1@5 ~ a1@2", V: "d2@9 ~@3 d2@4", W: "e2@5 ~ e2@2", X: "a1@11 ~ a1@4",
  Y: "c#2@9 ~@3 c#2@4", Z: "f#1", AA: "b1@11 ~ b1@4", AB: "f#1@9 ~@3 f#1@4", AC: "b1", AD: "~@4 e1@2 ~@2 e1@5 ~@3",
  AE: "e1 ~@3 e1@5 ~@7", AF: "~@7 a1", AG: "a1@4 ~@10 a1 ~", AH: "a1 ~ a1 ~ a1@4 ~@6 a1 ~",
  AI: "a1@4 a2@4 ~@2 e2@2 ~@2 e2 ~", AJ: "a1@6 ~@8 a1 ~", AK: "a1 a2 ~ c#2", AL: "[f#1@4 ~@2 f#1@7 ~ f#1@2]/2",
  AM: "[g#1@3 c#2@5]/2", AN: "[d2@25 ~@7]/2", AO: "[~@3 e1@4 ~]/2", AP: "a1@11 ~@3 a1 ~", AQ: "e1 ~@3 e1@8 ~@4",
  AR: "a1@12 ~@2 a1 ~", AS: "[~@4 a1@29 ~@15]/3",
})).s("gm_fretless_bass").gain(0.44)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@25 A B C D E F G H@2 I@2 J K L M J N O P Q R S T U V W X Y Z W X AA AB ~@6 AC@2 AD@2 AE AF@2 AG AH@2 AI AJ AK@2 AL@2
  AM K L M J N O P Q R S T U V W X Y Z W X AA AB ~@6 AC@2 AD@2 AE AF@2 AG AH@2 AI AJ AK@2 AL@4 AN AO AP M AQ AR AP P AN
  AO AP M AQ AS AP P AT@3
>`.pickRestart({
  A: "[f#3,a3,c#4,f#4] ~@3 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@2 ~@2 [f#3,a3,c#4,f#4]@2 ~ [f#3,a3,c#4,f#4]", // F#m
  B: "[f#3,a3,c#4,f#4]@2 ~ [f#3,b3,d#4,f#4] [f#3,b3,d#4,f#4]@3 ~ [f#3,b3,d#4,f#4]@8", // F#m B
  C: "[e3,g#3,c#4,e4] ~@3 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@2 ~@2 [e3,e4]@3 [e3,g#3,c#4], ~@6 [g#3,c#4] ~", // C#m E C#m C#5
  D: "[e3,g#3,c#4,e4]@2 ~ [d3,a3,c#4,f#4] [d3,a3,c#4,f#4]@2 ~@2 [d3,a3,c#4,f#4]@8", // C#m Dmaj7
  E: "[f#3,a3,c#4,f#4]@2 ~@2 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@2 ~@2 [f#3,a3,c#4,f#4]@2 ~ [f#3,a3,c#4,f#4]", // F#m
  F: "[f#3,a3,c#4,f#4]@2 ~ [f#3,b3,d#4,f#4]!2 ~@3 [f#3,b3,d#4,f#4]@7 ~", // F#m B
  G: "[e3,g#3,c#4,e4] ~@3 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,c#4,e4]@3 [e3,g#3,e4]", // C#m E
  H: "[[e3,g#3,e4]@8 [d3,a3,c#4,f#4]@23 ~, c#4@3 ~@13]/2", I: "[[b2,f#3,a3,d4,f#4]@12 [e2,b2,d3,a3,b3,e4]@19 ~]/2",
  J: "[a2,e3,a3,c#4,e4,a4]@8 [a2,e3,a3,c#4,e4,a4]@6 [a2,e3,a3,c#4,e4,a4] ~", // A
  K: "[a3,d4,e4,a4]@2 [a3,d4,e4,a4] f#3 [d3,f#3,a3,d4,e4,a4]@4 [d3,f#3,a3,d4,e4,a4]@8, [d3,f#3] ~@3", // Asus4 D
  L: "[b2,e3,g#3,b3,e4]@8 [b2,e3,g#3,b3,e4]@6 [e3,g#3,b3,e4] ~", // E
  M: "[e3,g#3,b3,e4]@3 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@4 [b2,e3,g#3,b3,e4]@8, ~@3 b2@4 ~@9", // E
  N: "[d3,f#3,d4,e4,a4]@2 [f#3,d4,e4,a4] d3 [d3,f#3,a3,d4,e4,a4]@4 [d3,f#3,a3,d4,e4,a4]@8, a3 ~@3", // D
  O: "[b2,e3,g#3,b3,e4]@8 [b2,e3,g#3,b3,e4]@6 [e3,g#3,e4] b3", // E
  P: "[e3,g#3,b3,e4]@3 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@3 ~ [e3,g#3,b3,e4]@8", // E
  Q: "[a2,e3,a3,c#4,e4,a4]@8 [a2,e3,a3,c#4,e4,a4]@6 c#4 [a2,e3,a3,e4,a4]", // A A5
  R: "[d3,f#3,d4,e4]@2 [d4,e4] [d3,f#3] [d3,f#3,a3,d4,e4,a4]@4 [d3,f#3,a3,d4,e4,a4]@8, [a3,a4] ~@3", // D Dsus2 D A
  S: "[b2,e3,g#3,b3,e4]@8 [b2,e3,g#3,b3,e4]@6 ~ [b2,e3,g#3,b3]", // E
  T: "[b2,e3,b3,e4]@2 b3 [e3,e4] [e3,g#3,b3,e4]@4 [b2,e3,g#3,b3,e4]@7 ~, g#3 ~@15", // E5 E
  U: "[a2,e3,a3,c#4,e4,a4]@8 [a2,e3,a3,c#4,e4,a4]@6 [e3,a3,e4] a4", // A A5
  V: "[c#3,f3,g#3,c#4,f4]@2 [c#4,f4] ~ [c#4,f4]@3 ~ [c#3,f3,g#3,c#4,f4]@7 ~, ~ g#3@2 ~@5, ~@3 [c#3,f3]@4 ~@9", // C#
  W: "~ f#4@15, [f#3,a3,c#4]@15 ~", X: "~ f#4@14 ~, [f#3,b3,d#4]@15 ~", Y: "[g#3,b3,e4]@15 ~",
  Z: "[f3,g#3,c#4,f4]@15 ~", AA: "~@4 [e2,d3,a3,b3,e4,a4] ~@3 [e2,d3,a3,b3,e4,a4]@6 ~@2",
  AB: "[e2,d3,a3,b3,e4,a4] ~@3 [e2,d3,a3,b3,e4,a4]@12", // Esus4
  AC: "[[d3,a3,d4,f#4]@3 ~ [d3,b3,d4,g4]@7 ~ [d3,a3,d4,f#4]@7 ~ d3@4 d3@4 [d3,f#3,a3,d4]@3 ~, ~@5 [g3,a3,e4]@2 ~]/2", // D G D A7
  AD: "[~@4 [a2,e3,a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@3 ~@9 [e3,a3,c#4,e4,a4]@3 ~, ~@8 a2@16 a2@7 ~, ~@8 e3@7 ~@5 [e3,a3,c#4,e4,a4]@7 ~@5]/2", // A
  AE: "[d3,a3,d4,f#4,a4]@2 ~@2 [d3,a3,d4,f#4,a4]@3 ~ [d3,a3]@4 [d3,a3]@2 [d3,a3,d4,f#4,a4]@2, ~@4 [d4,f#4,a4]@3 ~", // D D5 D
  AF: "[[d3,a3,d4,f#4,a4]@4 [d3,a3]@4 [d3,a3]@4 [d3,d4,f#4,a4]@3 ~ [a2,e3,c#4,e4,a4]@2 ~@2 [a2,e3,a3,c#4,e4,a4]@2 ~@2 [a2,e3,a3,c#4,e4,a4]@4 [a2,e3,a3,c#4,e4,a4]@2 [e3,a3,c#4,e4,a4]@2, ~@2 [d4,f#4,a4]@4 a3@3 ~@7]/2", // D D5 D A D
  AG: "[a2,e3,a3,c#4,e4,a4]@4 [a2,e3,a3]@4 [a2,e3,a3]@4 [a2,e3,a3,c#4,e4,a4]@3 ~, ~ [c#4,e4,a4]@2 ~", // A A5 A
  AH: "[[f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@3 ~ [f#3,a3,c#4]@4 [f#3,a3,c#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@3 ~, ~@3 f#4@2 ~@3]/2", // F#m
  AI: "[g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4]@3 ~ [g#3,c#4,f4,g#4]@4", // G#m C#
  AJ: "[g#3,c#4,f4,g#4]@4 [g#3,c#4,f4,g#4]@4 [g#3,c#4]@4 [g#3,c#4]@3 ~, ~@8 [f4,g#4]@7 ~", // C# C#5 Fm
  AK: "[[c#4,f#4]@4 [c#4,f#4]@4 [c#4,f#4,a4]@3 ~ c#4@4 c#4@4 [c#4,f#4]@4 [d3,a3,f#4,a4]@8, [d3,a3]@11 ~ [d3,a3,a4]@12 ~@8, a4@8 ~@4 f#4@7 ~@5 c#4@6 ~@2]/2", // F#5 F#m F#5 D D5
  AL: "[~@12 [e2,b2,d3,a3]@19 ~, ~@12 [b3,e4]@17 ~@3]/2", // Esus4 E5
  AM: "[e3,a3,c#4,e4,a4]@8 [a2,e3,a3,c#4,e4,a4]@6 [a2,e3,a3,c#4,e4,a4] ~", // A
  AN: "[e3,a3,c#4,e4,a4]@8 [a2,e3,a3,c#4,e4,a4]@6 ~ [a2,e3,a3,c#4,e4,a4]", // A
  AO: "[d3,f#3,a3,d4,e4,a4]@3 [f#3,a3,d4,e4,a4] [d3,f#3,a3,d4,e4,a4]@4 [d3,f#3,a3,d4,e4,a4]@8", // D
  AP: "[b2,e3,g#3,b3,e4]@8 [b2,e3,g#3,b3,e4]@6 ~ [e3,g#3,b3,e4]", // E
  AQ: "[a2,e3,a3,c#4,e4,a4]@8 [a2,e3,a3,c#4,e4,a4]@6 ~ [a2,e3,a3,c#4,e4,a4]", // A
  AR: "[d3,f#3,d4,e4,a4]@2 [d4,e4,a4] [d3,f#3] [d3,f#3,a3,d4,e4,a4]@4 [d3,f#3,a3,d4,e4,a4]@8, a3 ~@3", // D Dsus2 D
  AS: "[a3,d4,e4,a4]@3 [d3,f#3,d4,e4,a4] [d3,f#3,a3,d4,e4,a4]@4 [d3,f#3,a3,d4,e4,a4]@8, [d3,f#3] ~@7", // Asus4 D
  AT: "[~@4 [a2,e3,a3,c#4,e4]@31 ~@13]/3", // A
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.3)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@9 A@2 B@2 C@4 A@4 D@5 ~@7 E F G@2 H@4 ~@2 I@6 ~@14 J K@8 L@4 M@2 N@3 O@4 P@4 Q@4 ~@14 R S@8 T@4 M@2 U@2 V@3 W@4 P@4
  X@4 Y@6
>`.pickRestart({
  A: "[f#4 g#4 a4 g#4@5]/2", B: "[f#4@4 g#4@3 a4@5 g#4@20]/2", C: "[f#4 g#4 a4 g#4@2 f#4 e4 f#4@4 f#4@5]/4",
  D: "[f#4@2 g#4@2 a4@2 g#4@4 f#4@2 e4@2 f#4@8 f#4@11 ~@7]/5", E: "~@2 f#4 g#4", F: "a4",
  G: "[~@4 d4@11 c#4@17, ~ [a3,e4,a4]@7]/2", // A5
  H: "[~@12 [d4,a4]@3 c#4 [b3,g#4]@8 [a3,c#4,a4]@4 [g#3,b4]@12 [b3,g#4]@4 [a3,c#4,a4]@20, ~@3 e4@13, ~@7 d4@4 ~@5]/4", // D5 E A G#m E A
  I: "[~@4 d4@11 c#4@4 [b3,d4,f#4] [a3,c#4]@16 ~@8 [d4,a4]@3 c#4 [b3,g#4]@8 [a3,c#4,a4]@4 b4@8 g#4@8 [a3,c#4,a4]@20, ~ [a3,e4,a4]@4 ~@6 e4@13, ~@15 [g#3,d4]@4 ~@5]/6", // Bm A D5 E A A5 G#dim
  J: "~@12 d4@3 e4",
  K: "[f#4@4 g4@8 f#4@8 e4@4 d4@4 ~@8 c#4@24 d4@8 f#4@15 e4 d4@8 ~@8 [e4,a4]@24 f#4@2 g#4@2, ~@7 e4@8 ~@8 [a3,c#4]@8 ~]/8", // A5 A
  L: "[a4@4 b4@8 a4@8 g#4@4 a4@2 g#4@2 f#4@21 ~@7 f#4@4 g#4@4]/4", M: "[a4@2 b4 a4@2 g#4 f#4 g#4]/2",
  N: "[a4@2 a4@2 a4@18 ~ d4@8 c#4@5 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4], ~@23 [a3,e4,a4]@13 ~@12]/3", // A A5
  O: "[[a3,c#4,e4,a4]@3 [b3,d4,f#4,b4] [b3,d4,f#4,b4]@4 [b3,d4,f#4,b4]@4 [b3,d4,a4]@3 c#4 [g#3,b3,g#4]@8 [a3,c#4,a4]@4 b4@12 g#4@4 [a3,c#4,a4]@8 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4], ~@3 e4@10 ~@3, ~@7 [g#3,d4]@4 ~@5]/4", // A Bm Bm7 G#m A G#dim
  P: "[[a3,c#4,e4,a4]@3 [b3,d4,f#4,b4] [b3,d4,f#4,b4]@4 [b3,d4,f#4,b4]@11 ~ [g#3,b3,e4,g#4]@3 [g#3,b3,e4,g#4] [g#3,b3,e4,g#4]@3 [g#3,b3,e4,g#4] [g#3,b3,e4,g#4]@8 d4@11 c#4@4 [b3,d4] [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4], ~@9 [a3,e4,a4]@4 ~@3]/4", // A Bm E Bm A A5
  Q: "[[a3,c#4,e4,a4]@3 [b3,d4,f#4,b4] [b3,d4,f#4,b4]@4 [b3,d4,f#4,b4]@4 [b3,d4,a4]@3 c#4 [b3,g#4]@8 [a3,c#4,a4]@4 b4@8 g#4@8 [a3,c#4,a4]@20, ~@3 e4@13, ~@7 [g#3,d4]@4 ~@5]/4", // A Bm Bm7 E A G#dim
  R: "~@6 d4 e4",
  S: "[f#4@4 g4@8 f#4@8 e4@4 d4@4 ~@8 c#4@24 d4@8 f#4@15 e4 d4@8 ~@8 a4@24 f#4@2 g#4@2, ~@7 e4@8 ~@8 [a3,c#4]@8 ~, ~@49 e4@13 ~@2]/8", // A
  T: "[a4@4 b4@8 a4@8 g#4@4 a4@2 g#4@2 f#4@21 ~@11 f#4@2 g#4@2]/4", U: "[a4!2 a4@8 c#5@2 b4@2 a4@2]/2",
  V: "[b4@2 a4 a4@16 ~@4 d4@8 c#4@5 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4], ~@23 [a3,e4,a4]@13 ~@12]/3", // A A5
  W: "[[a3,c#4,e4,a4]@3 [b3,d4,f#4,b4] [b3,d4,f#4,b4]@4 [b3,d4,f#4,b4]@4 [b3,d4,a4]@3 c#4 [g#3,b3,g#4]@8 [a3,c#4,a4]@4 b4@12 g#4@4 [a3,c#4,a4]@8 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4] [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4], ~@3 e4@10 ~@3, ~@7 [g#3,d4]@4 ~@5]/4", // A Bm Bm7 G#m A G#dim
  X: "[[a3,c#4,e4,a4]@3 [b3,d4,f#4,b4] [b3,d4,f#4,b4]@4 [b3,d4,f#4,b4]@4 [b3,d4,a4]@3 c#4 [b3,g#4]@8 [a3,c#4,a4]@4 b4@8 g#4@8 [a3,c#4,a4]@8 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4] [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@3 [a3,c#4,e4,a4], ~@3 e4@10 ~@3, ~@7 [g#3,d4]@4 ~@5]/4", // A Bm Bm7 E A G#dim
  Y: "[[a3,c#4,e4,a4]@3 [b3,d4,f#4,b4] [b3,d4,f#4,b4]@4 [b3,d4,f#4,b4]@11 ~ [g#3,b3,e4,g#4]@3 [g#3,b3,e4,g#4] [g#3,b3,e4,g#4]@3 [g#3,b3,e4,g#4] [g#3,b3,e4,g#4]@8 d4@11 c#4@35 ~@14, ~@18 [a3,e4,a4]@23 ~@7]/6", // A Bm E A5
})).s("gm_epiano1").gain(0.28)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@58 A B C D E F ~@16 G H ~@2 I J K L M N ~@12 A B C D E F ~@18 G H ~@2 I J K L M N ~@9
>`.pickRestart({
  A: "~@4 [a2,a3,c#4,e4,a4] ~@3 [a2,a3,c#4,e4,a4]@7 ~", B: "[a2,a3,c#4,e4,a4] ~@3 [a2,a3,c#4,e4,a4]@12",
  C: "~@4 [a2,a3,d4,f#4,a4] ~@3 [a2,a3,d4,f#4,a4]@7 ~", D: "[a2,a3,d4,f#4,a4] ~@3 [a2,a3,d4,f#4,a4]@12",
  E: "~@4 [a2,a3,c#4,e4] ~@3 [a2,a3,a4]@7 ~, ~@4 a4@3 ~ [c#4,e4]@5 ~@3", // A C#m
  F: "[a2,a3,c#4,e4,a4] ~@3 [c#4,e4,a4]@8 ~@4, ~ [a2,a3]@3", G: "~@4 a4@3 ~ a4@3 ~ a4@2 ~ a4",
  H: "a4@2 ~ b4 b4@3 ~ b4@6 ~@2", I: "~@4 a4@2 ~ a4 a4@3 ~ a4@2 ~ a4", J: "a4@2 ~ b4 b4@2 ~@2 b4@6 ~@2",
  K: "~@4 g#4@2 ~ g#4!2 ~@2 g#4 g#4@4", L: "f#4 ~@3", M: "~@4 a4@4 a4@3 ~ a4@2 ~ a4", N: "a4@3 a4 b4@3 ~ b4@5 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.22).pan(0.4)

// other · piano · "A.PIANO 2"
const piano = note("<~ A ~ B ~ C ~ D ~ C ~ E ~ F ~ G@2 H ~ I ~ I ~ J@2 ~@120>".pickRestart({
  A: "f#4@3 ~ g#4@3 ~ a4@2 ~@2 b4@2 ~@2", B: "f#4@2 ~@2 g#4@2 ~@2 a4 ~@3 b4 ~@3", C: "f#4 ~ g#4 ~ a4 ~ b4 ~",
  D: "f#4@3 ~ g#4@3 ~ a4@3 ~ b4@4", E: "f#4@2 ~@2 g#4@3 ~ a4@3 ~ b4@3 ~", F: "f#4@3 ~ g#4@2 ~@2 a4@2 ~@2 b4@3 ~",
  G: "[f#4@2 ~@2 g#4@3 ~ a4@3 ~ b4@16 ~@4]/2", H: "f#4@3 ~ g#4@3 ~ a4@2 ~@2 b4@3 ~",
  I: "f#4@2 ~@2 g#4@2 ~@2 a4@2 ~@2 b4@3 ~", J: "[f#4@2 ~@2 g#4@2 ~@2 a4 ~@3 b4@19 ~]/2",
})).s("gm_piano").gain(0.14).pan(0.7)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note("<~ A@8 B@8 C@8 ~@7 D@4 ~@42 E@2 ~@42 E@4 ~@19>".pickRestart({
  A: "[~@4 [c#4,f#4]@14 [b3,e4] ~@5 [b3,e4]@4 [c#4,f#4]@23 [b3,e4] ~@4 [b3,e4]@4 [c#4,f#4]@23 [b3,e4] ~@4 [b3,e4]@4 [c#4,f#4]@13 ~@3 [b3,b4]@20, ~@108 f#4@17 ~@3]/8", // F#5 E5 F#5 E5 F#5 E5 F#5 B
  B: "[[c#4,f#4]@18 [b3,e4] ~@5 [b3,e4]@4 [c#4,f#4]@22 ~ [b3,e4] ~@4 [b3,e4]@4 [c#4,f#4]@22 ~ [b3,e4] ~@4 [b3,e4]@4 [c#4,f#4]@12 ~@4 [b3,b4]@20, ~@27 f#4@4 ~]/8", // F#5 E5 F#5 E5 F#5 E5 F#5 B
  C: "[[c#4,f#4]@19 [b3,e4] ~@4 [b3,e4]@4 [c#4,f#4]@22 ~ [b3,e4] ~@4 [b3,e4]@4 [c#4,f#4]@22 [b3,e4] ~@5 [b3,e4]@4 ~@12 e4@4 [b3,d#4,b4]@20, ~@23 f#4@9, ~@92 c#4@15 ~@21]/8", // F#5 E5 F#5 E5 F#5 E5 B
  D: "[~@2 [a3,c#4]@9 [b3,a4]@5, ~ [d4,f#4]@7]/4", E: "[~@12 [b3,d4,e4,a4]@19 ~]/2",
})).s("gm_pad_poly").gain(0.33)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@7 A@2 ~@6 B@2 ~@6 C@2 D E F G H I J K@2 ~@111>".pickRestart({
  A: "[~@8 [e4,e5]@21 ~@3]/2", B: "[~ [e4,e5]@3]/2", C: "[~ [g#4,g#5]@3]/2",
  D: "~@8 [e3,a3,c#4]@4 [d#3,g#3,c4] [c#3,d3,f#3,g3,a#3,b3] [c3,f3,g#3,a3] [b2,e3,g3]", // A G# Gmaj7 F Em
  E: "~@8 [f#3,b3,d#4]@4 [f3,a#3,d4] [d#3,e3,g#3,a3,c4,c#4] [d3,g3,a#3,b3] ~", F: "~ [e3,c#4], ~@8 g#3@5 ~@3", G: "g#3",
  H: "~@8 [e3,a3,c#4]@4 [d#3,g#3,c4] [c#3,d3,f#3,g3,a#3,b3] [c3,f3,g#3,a3] [a#2,b2,d#3,e3,f#3,g3]", // A G# Gmaj7 F Bmaj7
  I: "~@8 [f#3,b3,d#4]@4 [f3,a#3,d4] [d#3,e3,g#3,a3,c4,c#4] [d3,g3,a#3,b3] [c3,c#3,f3,f#3,g#3,a3]", // B A# Amaj7 G C#maj7
  J: "~@8 [e3,c#4]@7 f#3, ~@8 g#3@5 ~@3", K: "[g#3,g#5]/2",
})).s("gm_overdriven_guitar").gain(0.2).pan(0.7)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D C B C E@2 B F B G D F H@2 B C I G B G J@2 K L M N O P M ~@113
>`.pickRestart({
  A: "~@15 f#3", B: "f#2@2 ~ f#2 g#2@3 ~ a2@3 ~ b2@2 ~ b2", C: "~@3 b2 c#3@2 ~@2 e3@2 ~@2 f#3@2 ~ f#3",
  D: "f#2@2 ~ f#2 g#2@2 ~@2 a2@2 ~@2 b2@2 ~ b2", E: "[f#2@4 g#2@2 ~@2 a2 ~@3 b2@15 ~@4 f#3]/2",
  F: "~@3 b2 c#3@3 ~ e3@3 ~ f#3@2 ~ f#3", G: "~@3 b2 c#3@3 ~ e3@2 ~@2 f#3@2 ~ f#3",
  H: "[f#2@4 g#2@2 ~@2 a2 ~@3 b2@14 ~@5 f#3]/2", I: "f#2@2 ~ f#2 g#2@2 ~@2 a2@3 ~ b2@2 ~ b2",
  J: "[f#2@3 ~ g#2@4 a2 ~@3 b2@15 ~@5]/2", K: "f#2 ~@3 f#2@4 f#3@4 f#2 ~@2 f#3", L: "~@3 f#3 ~@3 f#3 b2@3 ~ b2@4",
  M: "c#3 ~@3 c#3@4 f#3@4 c#3 ~@2 f#3", N: "~@3 f#3 ~@3 f#3 f#2@8", O: "~@4 f#2@4 f#3@4 f#2 ~@2 f#3",
  P: "~@3 f#3 ~@3 f#3 b2@7 ~",
})).s("gm_electric_guitar_muted").gain(0.27).pan(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@36 A@12 B@8 C@2 ~@6 D@2 E@8 F@4 ~@2 A@12 B@8 G@2 ~@6 D@2 E@8 F@4 ~@4 A@16 ~@3
>`.pickRestart({
  A: "[c#4 d4 [g#3,b3]@2, e4, a3 ~]/4", // G#m
  B: "[[a3,e4] [b3,f4] a3 d#4 e4 f4 a4 [d#4,b4], c#4@3 b3@2 c#4@2 ~, ~ f#4 g#4 f#4]/8", C: "[~ [d4,e4,a4]@5 ~@2]/2",
  D: "[[a3,f#4] [b3,g4]@2 [a3,f#4]@2 [g3,e4]@2 [f#3,d4]]/2", E: "[[c#4,e4] [d4,f#4] e4 f#4, a3, ~ c#4]/8",
  F: "[[b3,d#4]@3 [f4,g#4]@5 [d4,f#4,a4]@8, ~@3 c#4@13]/4", G: "[~ [d4,e4,a4]@6 ~]/2",
})).s("gm_string_ensemble_1").gain(0.27)

// other · trombone
const trombone = note(`<
  ~@36 A@3 B C@4 D@4 E F@2 ~@14 G H I J K@2 L@2 ~@7 A@3 B C@4 D@4 E F@2 ~@14 G H I J K@2 L@2 ~@28
>`.pickRestart({
  A: "e5/3", B: "~@4 d5 ~ c#5 ~ d5@4 c#5 ~ b4 ~", C: "[c#5 ~ a4 ~ e4@47 ~@9 c#5 ~ d5 ~]/4",
  D: "[e5@2 ~@2 a5@8 e5@37 ~@3 d5 ~ c#5 ~ d5@3 ~ c#5@2 b4 ~]/4", E: "c#5@2 a4 ~ e4@9 ~@3",
  F: "[f4@4 b4@6 c#5 b4 a4@20]/2", G: "~@14 a4!2", H: "a4@10 ~@2 c#5 ~ d5 ~", I: "e5 ~ a5 ~ a4@3 ~ a4@4 ~@2 a4!2",
  J: "a4@11 ~ d5 ~ e5 ~", K: "[f#5 ~ a5 ~ a4@3 ~ b4 ~@3 c#5@14 ~@2 c#5 ~ d5 ~]/2", L: "[e5 ~ a5 ~ a4@27 ~]/2",
})).s("gm_trombone").gain(0.22).pan(0.7)

// bass · synth bass 2 · "SYN BASS 2"
const bass_2 = note("<A B C D E F G H@2 B I J E K L H@2 J M J E N O P@2 Q R S T Q U V W X Y@2 ~@109>".pickRestart({
  A: "~@15 f#2", B: "f#1 g#1 a1 b1", C: "~@3 b1 c#2@2 ~ c#2 e2@2 ~ e2 f#2@2 ~ f#2",
  D: "f#1 ~ g#1@2 a1@2 b1@2, ~@3 f#1@2 ~@11", E: "~@3 b1 c#2!2 ~ b1 e2@2 ~ c#2 f#2@2 ~ f#2",
  F: "f#1 ~@3 g#1@4 a1@4 b1@4, ~@3 f#1@2 ~@11", G: "~@3 b1 c#2@2 ~ c#2 e2 ~@2 e2 f#2 ~@2 f#2",
  H: "[f#1@4 g#1@4 a1@4 b1@16 ~@3 f#2]/2", I: "~@3 b1 c#2 ~@2 c#2 e2@2 ~ e2 f#2@2 ~ f#2",
  J: "f#1@2 ~ f#1 g#1@3 ~ a1@4 b1@4", K: "f#1 ~@2 f#1 g#1@4 a1@4 b1@4", L: "~@3 b1 c#2@3 ~ e2@3 ~ f#2@2 ~ f#2",
  M: "~@3 b1 c#2 ~@2 c#2 e2 ~@2 e2 f#2 ~@2 f#2", N: "f#1 f#1@2 ~ g#1@4 a1@4 b1@4",
  O: "~@3 b1 c#2 ~@2 c#2 e2@2 ~ e2 f#2 ~@2 f#2", P: "[f#1@4 g#1@4 a1@4 b1@19 f#2]/2", Q: "f#1@2 ~ f#1 g#1@4 a1@4 c#2@4",
  R: "d#2@11 ~@4 d#2", S: "c#2@13 ~@2 c#2", T: "d2@2 ~@2 d2@4 ~@3 e2 c#2 b1 ~ a1", U: "d#2@12 ~@3 d#2",
  V: "c#2@11 ~@4 c#2", W: "d2@14 ~ a1", X: "d2", Y: "[b1@3 e1@5]/2",
})).s("gm_synth_bass_2").gain(0.33).pan(0.8)

// drums · kick
// … 55 more lines

More by ABBA