Strudelify

Hamlet III, Part 2

ABBA

KeyC majorTempo130 bpm
0:00/0:00
// Hamlet III, Part 2 — ABBA
// 130 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 117 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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 · synth brass 1 · "Hamlet III - ABBA"
const synth_brass_1 = note(`<
  A@7 B@2 C D@8 E F@2 G@2 H@4 I@2 J@2 K@3 L@8 M ~@50 N@2 G@2 H@4 I@2 J@2 K@3 O@8 ~
>`.pickRestart({
  A: "[~@24 [f4,a4]@5 [e4,g4]@2 ~@5 [f4,a4]@5 g4@2 ~@29 [f4,a4]@5 ~ e4@12 ~@3 e4@3 c3@6 ~@6 f4@2 e4 ~@3 d4@2 c4 ~@3 c5@4 ~@2 c5 ~@5 c5@6 c4@3 e4@3 g4@3 ~@3 g4@5 ~ f4@2 ~ e4@2 ~ d4 ~@2 c4@3, c2@41 ~, c3@45 ~@3 c3@47 ~@10 c3@60 ~@3, ~@21 c4@23 ~@25 c4@20 ~ c4@6 ~@72, ~@41 e4 ~@35 g4@12 ~@7 g4@3 ~@3 g4@6 ~@60]/7", // F Em F
  B: "[b3@2 c4 ~@3 d4@2 ~ e4 ~@2 f4@2 ~ g4 ~@2 a4@3 g4 ~@2 b4@4 ~@2 b4@4 ~@2 b4@5 d4@3 ~ g4@3, [g2,g3]@47 ~]/2", // G
  C: "a4@6 a4@5 ~ a4@8 ~ g4 f4 ~, [f2,f3]@11 ~", // F
  D: "[g4@15 c4@3 e4@3 f4@3 g4@12 f4@3 e4@3 d4@3 c4 ~@2 c5@5 ~ c5@5 ~ c5@5 ~ c4@3 e4@3 g4@5 ~ g4@5 ~@13 [c4,e4] ~@5 f4@3 g4@2 f4@2 ~@2 e4 ~ d4 ~@2 c4 ~@3 b3@2 ~ c4 ~@2 d4@2 ~ e4 ~@2 f4@2 ~ g4 ~@2 a4@2 ~ g4 ~@2 b4@5 ~ b4@5 ~ b4@9 b4@3 c5@2 ~ b4@2 ~ a4@3 g4@2 ~@9 f4@2 ~@2, [c2,c3]@80 ~@3 a4@18 ~@79 a4@6 b4@6, ~@24 e4 ~@58 a3@22 ~@2 g3@73 ~@3 g3@7 ~@2, ~@84 a2@22 ~ g2@83 ~@2]/8", // C
  E: "~@12 a#4@11 ~, [e4,c5]@23 ~, [c2,c3]@19 ~@5", // C
  F: "[[f4,a4,c5]@4 ~@2 [a4,c5]@3 ~@3 [a4,c5]@3 [g4,b4] ~@2 b4@3 [f4,a4] ~@2 [f4,a4]@3 [e4,g4] ~@2 [e4,g4]@3 [d4,f4] ~@2 [d4,f4]@4 ~@2 f4@3 g4@3, f2@47 ~, f3@6 ~@3 f3@37 ~@2, ~@18 g4@2 ~@22 d4@5 ~]/2", // F Am G F Em Dm
  G: "[[f4,a4]@3 ~@3 [f4,a4]@4 ~@2 [f4,a4]@3 f4@3 d4@2 ~ e4@3 [d4,f4]@15 e4@3 d4@3 c4@3, [d2,d3]@23 ~]/2", // F Dm D
  H: "[b3@2 ~ c4@3 d4@3 e4@3 f4@3 g4@3 a4@3 g4@2 ~ [g4,b4]@5 ~ [g4,b4]@5 ~ [g4,b4]@9 ~@3 a4@5 ~ [f4,a4]@4 ~@2 a4@9 ~@21 c3@3 ~@3, [g2,g3]@45 f4@8 ~@7 f4@23 e4@10 ~@3, ~@16 [f2,f3]@7 g4@8 ~, ~@72 c2@19 ~@5, ~@9 c3@2 ~]/4", // G F G F
  I: "[~@6 d5@6 c5@3 d5@3 c5 ~@2 [a4,c5]@6 [g4,b4]@6 a4@2 ~ [f4,a4]@9 [e4,g4]@3, [f2,f3]@15 ~, ~@6 a4@13 ~@14 f4 ~@14]/2", // Am G F Em F
  J: "[[f4,a4]@3 ~@3 [f4,a4]@3 ~@3 [f4,a4]@3 ~@2 f4 ~@3 d4 e4@2 ~ d4@14 e4@2 ~ d4@3 c4@2 ~, [d2,d3]@23 ~, ~@15 d4@5 ~@4 f4@14 ~@10]/2", // F D
  K: "[b3@2 ~ c4@3 d4@2 e4@3 ~ f4@3 g4@2 ~ a4@3 ~@3 b4@5 ~ [g4,b4]@5 ~ [g4,b4]@8 ~ b4@3 c5@2 ~ b4@3 a4@3 g4@2 ~ a4@2 ~ b4@2 ~ c5@3 d5@2 ~, [g2,g3], f3 ~@20 g4@8 ~@43]/3", // G
  L: "[e5@2 ~ d5@3 c5@3 b4@3 ~@10 [e4,g4] ~@7 [e4,g4] ~@5 [g4,a#4]@6 ~@3 [g4,a#4]@2 ~@7 [g4,a#4] ~@4 [f4,a4]@7 ~@3 [f4,a4]@2 ~@7 [f4,a4] ~@5 [f4,g#4]@8 ~ [f4,g#4]@2 ~@6 [f4,g#4]@2 ~@5 [e4,g4]@8 ~ g4 e4 ~@7 [e4,g4] ~@5 [g4,a#4]@8 ~ [g4,a#4] ~@8 [g4,a#4]@2 ~@4 [f4,a4]@7 ~@2 [f4,a4] ~@7 f4 a4 ~@5 [f4,g#4]@8 ~ [f4,g#4] ~@2, ~ [c2,c5]@15, ~@3 c3@23 ~ c3@21]/8", // Em Gm F Fm Em Gm F Fm …
  M: "~@6 [f4,g#4] ~@17", // Fm
  N: "[[f4,a4,c5]@4 ~@2 [a4,c5]@3 ~@3 [a4,c5]@3 [g4,b4] ~@2 b4@3 [f4,a4] ~@2 [f4,a4]@3 [e4,g4] ~@2 [e4,g4]@3 [d4,f4] ~@2 [d4,f4]@4 ~@2 f4@3 g4@3, ~@9 f3@37 ~@2, ~@18 g4@2 ~@22 d4@5 ~]/2", // F Am G F Em Dm
  O: "[e5@2 ~ d5@3 c5@3 b4@3 ~@10 [e4,g4] ~@169, ~ [c2,c5]@15, ~@3 c3@23 ~@22]/8", // Em C
})).s("gm_synth_brass_1").gain(0.25)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A B@4 C D E@7 F G H@4 I@4 J@6 K L@2 M@4 N@5 ~@50 O@2 I@4 J@6 K P@7 ~@4
>`.pickRestart({
  A: "~ [f4,a4]@5 [e4,g4]@3 ~@3 [f4,a4]@6 [e4,g4]@4 ~@2, ~ c4@23", // F Em F Em
  B: "[~@24 [f4,a4]@6 ~@18 c5@8 ~ [e4,g4]@8 [c4,e4,g4]@4 ~@2 [g4,c5]@6 ~ [e4,g4,c5]@5 ~ [e4,g4,c5]@10 ~@2, ~ c4@47 ~@48, ~@10 [e4,g4]@9 ~@13]/4", // F Em C C5 C Em
  C: "[c4,e4,g4]@5 ~ [c4,e4]@6 ~@6 [c4,e4]@3 ~@3, ~@6 g4@17 ~", D: "[b3,d4,g4]@7 ~@2 [d4,g4,b4]@8 ~ d4@6",
  E: "[[g4,b4,d5]@8 ~ d5@9 [b4,d5]@7 [f4,a4,c5]@7 ~ [f4,a4,c5]@8 ~ [f4,a4]@5 g4@15 c4@3 ~@3 c5@2 ~@2 g4@5 ~@2 [e4,g4,c5]@9 ~@2 [e4,g4,c5]@3 ~@3 c5@8 ~ [g4,c5,e5]@7 ~ [g4,c5,e5]@3 ~@3 [e4,g4,c5]@7 ~@6 [e4,g4,c5]@3 ~@9 [e4,g4]@11 ~ [d4,g4,b4]@11 ~, ~@8 [g4,b4]@9 ~ g4@5 ~@19 c5@19 ~@5 g4@5 c5@5 ~@67 c5@12 ~@13, ~@47 e4@29 ~@19 [g4,e5]@9 ~@64]/7", // G Bm F C Em G C
  F: "[d4,g4,b4]@7 ~@2 [b4,d5]@11 ~@4, ~@9 g4@8 ~@7, ~@9 c5@2 ~@13", G: "[b4,d5,g5]@8 ~ [b4,d5]@14 ~, ~@8 g5@15 ~",
  H: "[~@9 f5@14 ~@13 c5@11 [c5,f5,a5]@9 ~@4 [c5,f5]@8 ~@2 [c5,f5]@13 ~ f5@7 [e5,g5]@5, g5@47 ~@13 a5@30 ~@6, d5@36 ~@48 c5@11 ~, b4@23 ~ e5@22 ~@50]/4", // F F5 Em
  I: "[[d5,f5,a5]@8 ~ a5@8 ~ a4@6 a5@9 ~ a5@7 ~ a4@5 ~ c5@8 ~ d5@7 ~@7 b4@8 ~ b4@8 ~ [b4,d5]@5 ~ c5, ~@9 [d5,f5]@24 d5@23 ~ c5@13 ~@26, ~@24 b5@2 ~@8 f5@14 g5@47 ~, ~@65 d5@24 ~@7]/4", // Dm Bm Dm
  J: "[[a4,f5]@8 ~ [a4,f5]@8 a4@4 ~@14 e5@12 [f4,a4]@12 ~ f4@8 ~ f4@14 ~ f4@10 ~@11 f4@22 ~@2 [f4,a4]@8 ~ [f4,a4]@5 ~, ~@8 c5@8 ~ c5@78 ~ d5@31 ~@2 d5@14 ~, ~@17 f5@19 ~@58 f4@10 ~@40, ~@23 g4@22 ~@15 a4@69 ~@15]/6", // Dm F
  K: "b4@9 ~@9 d5@5 ~, g4@23 ~, d5@3 ~, ~@5 b4@7",
  L: "[[b4,d5,g5]@8 ~ [b4,d5]@14 [b4,d5]@18 ~@2 b4@5, ~@3 g5@13, ~@42 d5@5 ~]/2", // G Bm
  M: "[[b4,d5]@10 ~@2 e5@23 ~@2 a5@47 g#5@12, ~ c5@7, ~@4 g5@9 ~@19, ~@37 f5@59]/4", // Bm
  N: "[~@12 e5@15 e5@9 ~@48 g#5@25 ~@11, ~@12 g5@47 a5@25 ~@36, ~@12 c5@12 ~@12 c6@73 ~@11, ~@60 f5@49 ~@11]/5",
  O: "[~@12 [c5,f5]@8 ~@2 [c5,f5]@13 ~ f5@7 [e5,g5]@5, ~@2 a5@5 ~, ~@36 c5@11 ~]/2", // F5 Em
  P: "[[b4,d5,g5]@8 ~ [b4,d5]@14 [b4,d5]@18 ~@2 b4@5 [b4,d5]@10 ~@2 c5@95 ~@13, ~@3 g5@17 g5@9 ~@27, ~@42 d5@5 ~@13 e5@23 ~@85]/7", // G Bm
})).s("gm_string_ensemble_1").gain(0.25)

// bass · fretless bass
const bass = note(`<
  A B C D E F C G H I C J K L M N O P Q R S T U P@2 I V I@2 W X Y N Z AA V AB AC AD C V@2 AE ~@49 AF AG S T U P@2 I V
  I@2 W X Y N Z AA ~@8
>`.pickRestart({
  A: "~ c2@2 c2@2 ~ c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~ c2 ~@2 c2 ~@2",
  B: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~ c2@2 ~",
  C: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2",
  D: "c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2",
  E: "c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2",
  F: "c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2",
  G: "g1@2 ~ g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 ~ g1 ~@2",
  H: "g1@2 ~ g1 ~@2 g1@2 ~ g1@2 ~ g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2",
  I: "f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2",
  J: "c2@2 ~ c2 ~@2 c2@2 ~ c2 ~@2 c2@2 ~ c2 ~@2 c2 ~@2 c2 ~@2",
  K: "c2 ~@2 c2 ~@2 c2@2 ~@2 c2 ~ c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2",
  L: "c2@2 ~ c2 ~@2 c2 ~@2 c2@2 ~ a1@2 ~ a1 ~@2 a1 ~@2 a1 ~@2",
  M: "a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2",
  N: "g1@2 ~ g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2",
  O: "g1@2 ~ g1 ~@2 g1@2 ~ g1 ~@2 g1 ~@2 g1 ~@2 g1@2 ~ g1 ~@2",
  P: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2",
  Q: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@3 c2 ~ c2 ~@2 c2@2 ~",
  R: "f1 ~@2 f1 ~@2 f1@2 ~ f1 ~@2 f1@2 ~ f1@2 ~ f1 ~@2 f1 ~@2",
  S: "f1@2 ~ f1@2 ~ f1@2 ~ f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~",
  T: "d2 ~@2 d2 ~@3 d2 ~ d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2",
  U: "d2@2 ~ d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2@2 ~",
  V: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2 c2 ~@2 c2@2 ~",
  W: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2@2 ~ d2 ~@2",
  X: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@3 d2 ~ d2 ~@2 d2 ~@2 d2 ~@2",
  Y: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 ~ g1 ~@2",
  Z: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 ~ g1 ~@2 g1 ~@2 g1 ~@2",
  AA: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 c2@2 ~ c2@2 ~ c2 ~@2 c2@2 ~",
  AB: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~",
  AC: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~",
  AD: "c2@2 ~ c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2", AE: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@14",
  AF: "~@3 c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~ c2 ~@2 c2 ~@2 c2 ~@2",
  AG: "f1@3 f1@2 ~ f1@2 ~ f1 ~@2 f1@2 ~ f1@2 ~ f1 ~@2 f1 ~@2",
})).s("gm_fretless_bass").gain(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@42 A@4 ~@2 B@7 C@4 D@6 E@6 F@5 G@4 H@2 I J K@2 L@2 M@3 N@2 ~@24>".pickRestart({
  A: "[~@12 c3@23 ~@2 g4@48 ~@11, ~ c2@4 ~@3, ~@35 [c3,g3,c4]@48 ~@13, ~@3 e4@4 ~]/4", // C5
  B: "[~@102 g4@4 ~@21 g4@5 ~@19 g4@4 ~@8 g4@5, ~@12 g2@12 g2@12 g2@12 g2@12 g2@6 g3@6 g2@24 e4@11 ~@7 e4@12 [c4,e4]@6 ~@5 c4@13 [c4,e4]@5 ~@6 c4@6 ~, ~@18 [b3,d4,g4]@23 g3@13 g3@11 ~ g4@13 g3@5 c3@5 g3@4 c4@14 ~@6 c4@7 g3@11 ~@13 g3@11 ~@13, ~@18 g3@12 g3@11 b3@24 b3@42 ~ c3@24 c3@23 ~ c3@12, ~@42 [d4,g4]@24 d4@41 ~@8 g4@12 ~@11 [e4,g4]@12 ~@12 e4@6]/7", // C G G5 Em
  C: "[~@12 a3@6 [a3,c4,e4]@5 g3@6 ~@49 [g4,b4]@6 ~@6 [f4,a4]@6, a3@12 ~@18 [g3,b3,d4]@12 [g3,b3]@11 g3@31 ~@12, ~@5 c4@12 ~@19 g2@12 g2@11 ~ g2@12 g2@12 f2@12, ~@6 a4@16 ~@44 [d4,g4]@11 d4@7 ~@12, ~@6 e4@12 ~@25 d4@11 [b3,d4]@11 b3@20 ~@4 c4@7]/4", // Am G F G G5 Bm
  D: "[~@6 [d4,g4,b4]@5 ~@7 [g4,c5]@5 ~@2 c5@10 ~@46 a4@3 ~@57 d4@3, g2@11 ~ c3@23 ~ f3@12 f3@12 f3@12 f3@12 d3@12 d3@12 d3@12 d3@12 g2@12, ~@17 f4@18 ~@7 f4@12 f4@12 f4@12 f4@6 ~@6 f4@12 f4@12 f4@12 f4@9 ~@3 b3@6, ~@23 e4@12 ~@4 c4@12 c4@12 c4@12 c4@9 ~@3 d4@12 d4@12 d4@12 d4@12 g3@9, ~@24 g4@11 ~@10 a4@12 a4@12 a4@12 ~@12 a4@12 a4@12 a4@12 a4@6 ~@9]/6", // G C5
  E: "[~@33 g3@3 ~@21 f3@3 ~@21 g4@3 ~@43 f4@5 ~@6 [d4,f4]@6, g2@12 g2@25 ~@8 c4@3 f4@12 ~@9 c4@3 e4@3 g4@3 c5@5 ~@7 a4@23 c4@7 f3@12 d3@12, ~@3 g3@12 g3@15 b3@6 f2@24 c3@24 ~@17 a3@25 [a3,c4]@7 ~@4 a3@7, ~@6 b3@12 b3@9 d4@9 ~@3 f3@15 a3@6 ~@3 e3@21 f3@12 f3@6 f4@12 f4@13 ~@17, ~@9 d4@12 d4@3 g4@12 ~@6 a3@9 c4@9 ~@6 g3@18 ~@5 [c4,f4]@12 c4@6 f3@8 a4@18 ~@11]/6", // Dm Am F5
  F: "[~@31 a4@5 ~@30 [d4,g4]@5 ~@43 [b4,d5]@6, d3@12 d3@25 ~@8 d4@3 g4@18 ~@6 [d4,g4]@18 d4@6 g2@6 [g4,b4]@6 g2@12, ~@5 d4@13 a3@19 ~@2 g3@15 b3@6 g2@24 g2@7 g4@10 d4@12 g4@6 ~, ~@6 a4@18 a2@12 g2@21 g3@8 [g3,b3]@6 g3@48 ~, ~@6 f4@12 d4 f4@11 [d4,f4]@7 ~@5 b3@9 d4@15 ~@5 b3@18 ~ b3@30]/5", // G5 Bm G5 G Dm
  G: "[~@91 d5@5, f2@12 f2@12 f2@6 f4@18 d3@5 f3@25 [f4,a4]@6 d3@12, ~@6 c5@36 [f3,a3] c4@34 d4@13 [f4,a4]@6, ~@6 [f4,a4]@12 a4@36 a3 d4@5 d3@5 a3@30 ~, ~@18 [c4,f4]@11 [a3,c4]@7 f2@30 [d4,f4]@6 a2@24]/4", // F F5 Am Dm
  H: "[~@7 [g3,b3,d4], g2@2 g2@3 [b3,d4] g2@2, ~ [b3,d4]@2 g3@4 ~, ~@7 g4@12 d4@5 d3@24, ~@3 b3@2 g4@3]/2", // G Bm
  I: "~@6 [a3,c4]@6 ~ f4@5 ~ a4@5, f2@23 ~, ~@5 f3@18 ~, ~@12 a3@11 ~, ~@2 c4 [c4,f4]", // Am F5
  J: "~@7 c4, c3, ~ c4@5 e4@2, ~@2 e4@3 g4@3, ~@3 g4 c5@4",
  K: "[~@6 [f4,a4] [f4,a4,c5], f2 f2, ~@5 a3@12 a3@31, ~ [c4,f4]@2 [c4,f4]@3 c4@2, ~@2 c3@3 c3@3]/2", // F F5
  L: "[~@37 d4@5 [a3,d4,f4]@6, d3@3 f3@5, ~@5 d4@7 f4@6 d4@12 d5@18, ~@5 f4@7 a3@18 f4@7 a4@11, ~ a4@3 d3@4]/2", // Dm
  M: "[~@54 g4@6 ~ g4@11, g2@18 d4 g4@5 g2@6 g4 b4@5 d3@24 [b3,d4]@12, ~@5 g3@36 g4 d5@30, ~@5 b3@8 d3@16 d4@13 b4@6 g2@24, ~@6 d4@11 b3@36 d4 b4@18]/3", // Bm
  N: "[~@12 c5@11 ~, ~ c3@45 ~@2, ~@3 c4@20 ~, ~@6 e4@17 ~, ~@6 g4@9 ~]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// other · flute
const flute = note("<~@44 A B C D E@2 F G@2 H I J@3 K@3 L M N@3 O P@3 Q R@2 S T U V@2 ~@39>".pickRestart({
  A: "c5@7 ~@2 e5@2 ~ g5@4 ~@2 g5@6", B: "f5@3 e5@3 d5@2 ~ c5 ~@2 c6@5 ~ c6@4 ~@2",
  C: "c6@5 ~ c5@2 ~ e5@2 g5@5 ~@2 g5@5 ~", D: "g5@6 c5@3 e5@3 g5@4 ~ g5@6 ~",
  E: "[f5@2 ~ e5@2 ~ d5@3 c5 ~@2 c5@3 b4@27 ~@6]/2", F: "~@6 d5@2 ~ f5@2 ~ a5@6 a5@5 ~",
  G: "[a5@9 b5@2 ~ g5@21 ~@3 g5@12]/2", H: "f5@2 ~ e5@2 ~ d5@2 ~ c5 ~@2 c6@5 ~ c6@4 ~@2",
  I: "c6@5 ~ c5@3 e5@2 ~ g5@5 ~ g5@6",
  J: "[a5@8 ~ a5@3 e5@5 ~ f5@2 g5@2 ~ f5@2 ~ e5@3 ~ d5@2 ~ c5 ~ c5@3 ~ b4@28 ~@5]/3",
  K: "[~@6 d5@3 f5@2 ~ [f5,a5]@4 ~@2 a5@6 ~@9 d6@2 ~ [f5,d6]@3 [e5,c6]@17 ~@4 c6@5 ~ c6@4 ~@2, ~@17 f5@17 ~@38, ~@24 b5@11 ~@37]/3", // F Dm C
  L: "c6@2 b5@2 ~@2 b5@3 a5 ~@2 a5@3 g5 ~@2 g5@3 f5 ~@2", M: "f5@9 g5@2 ~ a5@5 ~ a5@5 ~",
  N: "[a5@3 f5@2 ~ d5@3 e5@3 f5@15 e5@3 d5@3 c5@3 b4@3 c5@2 ~ d5@2 e5@2 ~ f5@3 ~ g5@2 a5@3 ~ g5@2 ~ b5@5 ~ b5@5 ~]/3",
  O: "b5@9 a5@2 ~ a5@5 ~ a5@4 ~@2",
  P: "[a5@9 b5@3 g5@22 ~@2 c6@10 ~ c6@3 ~ b5@2 ~ b5@3 a5@2 ~ a5@3 g5@2 ~ g5@3 f5 ~@2]/3",
  Q: "f5@9 g5@3 a5@5 ~ a5@4 ~@2", R: "[a5@3 f5@3 d5@2 e5@3 ~ f5@15 e5@3 d5@3 c5@3 b4@2 ~ c5@3 d5@3 e5@2 ~]/2",
  S: "f5@2 ~ g5@2 ~ a5@2 ~ g5@2 ~ b5@5 ~ b5@5 ~", T: "b5@8 ~ b5@2 ~ c6@2 ~ b5@2 ~ a5@2 ~ g5@2 ~",
  U: "a5@2 ~ b5@2 ~ c6@2 d6@2 ~ e6@2 ~ d6@2 ~ c6@2 ~@2 b5 ~@2", V: "[c6@11 ~]/2",
})).s("gm_flute").gain(0.2)

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

// drums · snare
const snare = s("sd").struct("<~ A B C A@6 D A@7 E A@7 D A@11 F G@3 H ~@50 A@7 D A@8 ~@8>".pickRestart({
  A: "~ x ~ x", B: "x", C: "~ x ~@2", D: "~@2 x ~@2 x!2 ~", E: "~@6 x ~@8 x ~@2 x!2 ~ x ~@2", F: "~ x!2 ~", G: "~ x",
  H: "~ x ~@2 x ~@3",
})).gain(0.4)

// drums · splash
const splash = s("cr").struct("<~ [x ~ x!2] x [x!2] ~@34 [~ x]!5 ~@74>").gain(0.45)

stack(synth_brass_1, string_ensemble_1, bass, acoustic_guitar_nylon, flute, kick, snare, splash)

More by ABBA