Strudelify

Fool Again

Westlife

KeyE majorTempo72 bpm
0:00/0:00
// Fool Again — Westlife
// 72 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/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 · "Martin Mc Parland"
const bass = note(`<
  ~@10 A B C D E F G H I F G H J K L M N O P M N Q R S T U V W X Y V W X Y V Z X Y V W X AA AB AC AD ~ AE AF AG AH AI AF
  AG AH AI AJ AG AH AI AF AG AH AK
>`.pickRestart({
  A: "~@14 e1 ~", B: "a1@7 ~ c#2@7 ~", C: "a1@7 ~ b1@6 f#2 ~", D: "a1@7 a1 a1@7 e1", E: "b1@7 ~@9",
  F: "e2@2 ~ e2@4 b1 g#1 ~ g#1@4 d#2 f2", G: "a1@2 ~ a1@3 ~ a1 f#1 g#1 b1 ~ b1 ~ f#2 g#2",
  H: "e2@2 ~ e2@3 ~ e2 d#2 f2 g#1 g#2@3 f2 d#2", I: "a1@2 ~ a1@4 e1 b1!2 ~ b1@3 f#2!2",
  J: "a1@3 a1@4 e1 b1!2 ~ b1@3 f#2!2", K: "~@8 e2@7 e2", L: "e2@7 b1 g#1@7 g#1", M: "g#1@7 d#1 a1@7 a1",
  N: "b1@6 f#2 ~ e2@7 e2", O: "e2@7 b1 e2@7 e2", P: "e2@6 b2 ~ g#1@7 g#1", Q: "e2@7 b1 a1@7 a1",
  R: "c#2@6 g#2 ~ a1@7 a1", S: "b1@7 f#1 a1@7 a1", T: "a1@6 e2 ~ b1@7 ~", U: "~@8 e2@2 ~ e2@4 b1",
  V: "d#1 f1 g#1 ~ g#1 ~ d#2 f2 a1@2 ~ a1@3 ~ a1", W: "f#2 g#2 b1 b2@3 g#2 f#2 e2@3 e2@4 b1",
  X: "g#1!2 ~ g#1@3 d#2!2 a1@2 ~ a1@4 e1", Y: "b1 ~ b1@4 f#2 g#2 e2@2 ~ e2@3 ~ e2",
  Z: "f#2 g#2 b1 b2@3 g#2 f#2 e2@2 ~ e2@4 b1", AA: "b1 ~@7 a1@7 ~", AB: "c#2@6 ~@2 a1@7 ~", AC: "b1@7 ~ a1@7 ~",
  AD: "a1@6 ~@2 b1@7 ~", AE: "~@8 f#1@2 ~ f#1@4 c#1", AF: "f2 g2 a#1 a#2@3 g2 f2 b1@3 b1@4 f#1",
  AG: "c#2!2 ~ c#2@3 g#2!2 f#1@2 ~ f#1@4 c#1", AH: "a#1 ~ a#1@4 f2 g2 b1@2 ~ b1@3 ~ b1",
  AI: "g#1 a#1 c#2 ~ c#2 ~ g#2 a#2 f#1@2 ~ f#1@3 ~ f#1", AJ: "f2 g2 a#1 a#2@3 g2 f2 b1@2 ~ b1@4 f#1",
  AK: "g#1 a#1 c#2 ~ c#2 ~ g#2 a#2 ~@8",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · acoustic guitar steel · "Quorum Music"
const acoustic_guitar_steel = note(`<
  ~ A B A C D A@2 C D A E@2 F G H@6 I@8 J@3 K@2 L@8 M@8 N@2 K@2 O ~ P@7 Q@8 R@2
>`.pickRestart({
  A: "[e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3] [e3,g#3,b3]@3 [e3,g#3,b3]@2 [e3,g#3,b3]@4", // E
  B: "[e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3] [e3,g#3,b3]@3 [e3,g#3,b3]@5 ~", // E
  C: "[g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] [g#3,b3,d#4]@3 [g#3,b3,d#4]@2 [g#3,b3,d#4]@4", // G#m
  D: "[a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4] [a3,c#4,e4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4", // A B
  E: "[[a3,c#4,e4]@4 e4@2 e4@3 [c#4,e4,g#4]@3 ~@4 [f#4,a4,c#5]@4 [f#4,a4,c#5]@2 f#4@2 [b3,d#4,f#4]@8, ~@4 [a3,c#4]@4 ~@4 [c#4,e4,g#4]@13 ~@7, ~@11 [a4,c#5]@2 ~@3]/2", // A C#m F#m B A C#m A
  F: "[a3,c#4,e4]!2", G: "[b3,d#4,f#4]@3 ~@5",
  H: "[[e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]!2, ~@6 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@6]/6", // E G#m A B E G#m A B …
  I: "[[e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@3 ~@6 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3] [e3,g#3,b3]@3 [e3,g#3,b3]@2 [e3,g#3,b3]@4 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] [g#3,b3,d#4]@3 [g#3,b3,d#4]@2 [g#3,b3,d#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4] [a3,c#4,e4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3] [e3,g#3,b3]@3 [e3,g#3,b3]@2 [e3,g#3,b3]@4 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3] [e3,g#3,b3]@3 [e3,g#3,b3]@2 [e3,g#3,b3]@4 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4]!2, ~@6 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@102]/8", // E G#m A B E G#m A B …
  J: "[~@2 [g#3,b3,d#4]@2 [g#3,b3,d#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4] [a3,c#4,e4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3] [e3,g#3,b3]@3 [e3,g#3,b3]@2 [e3,g#3,b3]@4 [a3,c#4,e4]@4 e4@2 e4@2, ~@11 [a3,c#4]]/3", // G#m A B E A
  K: "[~ [c#4,e4,g#4]@3 ~@4 [f#4,a4,c#5]@4 [f#4,a4,c#5]@2 f#4@2 [b3,d#4,f#4]@8 [a3,c#4,e4]@8, ~@4 [c#4,e4,g#4]@13 ~@15, ~@7 [a4,c#5]@2 ~@7]/2", // C#m F#m B A C#m A
  L: "[[a3,c#4,e4]@8 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4]@4 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3]@2, ~@30 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@6]/8", // A B E G#m A B E G#m …
  M: "[[g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [g#3,b3]@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3 [e3,g#3,b3]@4 [e3,g#3,b3]@2 [e3,g#3,b3]@2, ~@7 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@4 e3@4 ~@5 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [d#4,f#4]@3 ~@6]/8", // G#m A B E G#m A B E …
  N: "[[g#3,b3,d#4]@4 [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [a3,c#4,e4]@4 e4@2 e4@2, ~@7 [g#3,b3,d#4]@3 ~@4 [a3,c#4,e4]@4 ~@5 [b3,d#4,f#4]@3 ~@2 [a3,c#4]@4]/2", // G#m A B A G#m A B A
  O: "[a3,c#4,e4]@4 [b3,d#4,f#4]@3 ~", // A B
  P: "[~@8 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2, ~@14 f#3@4 ~@5 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@4 f#3@4 ~@5 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@4 f#3@4 ~@5 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@6]/7", // F# A#m B C# F# A#m B C# …
  Q: "[[a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] c#4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2, ~@7 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@4 f#3@4 ~@5 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@4 f#3@4 ~@5 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@4 f#3@4 ~@5 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@5 [f4,g#4]@3 ~@6]/8", // A#m B C# F# A#m B C# F# …
  R: "[[a#3,c#4,f4]@4 [a#3,c#4,f4]@2 [a#3,c#4,f4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4,g#4] [c#4,f4,g#4]@3 ~@6, ~@7 [a#3,c#4,f4]@3 ~@4 [b3,d#4,f#4]@4 ~@14]/2", // A#m B C# A#m B
})).s("gm_acoustic_guitar_steel").gain(0.19)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@3 A@5 B@3 C@3 D ~@9 E@2 F@5 G H@3 ~@38>".pickRestart({
  A: "[~@16 d#4@15 ~ [a3,c#4,e4]@8 [d#4,f#4]@8 g#3@32, e3, [g#3,b3]@31 ~@9 b3@40]/5", // A D#m G#m
  B: "[~@16 [a3,c#4,e4]@8 ~ [b3,f#4]@7 [e3,g#3,b3]@9 ~@7, d#4@11 ~@5]/3", // A B5 E
  C: "[[a3,c#4,e4]@7 ~ g#4@7 ~ [f#4,a4,c#5]@8 [b3,d#4,f#4]@7 ~ a3@14 ~@2, ~@4 [c#4,e4]@19 ~]/3", D: "[b3,d#4,f#4] ~@7",
  E: "[~@8 d#4@15 ~ [a3,c#4,e4]@8]/2", // A
  F: "[[d#4,f#4]@8 g#3@32 ~@16 [a3,c#4,e4]@8 ~ [b3,f#4]@7 [e3,g#3,b3]@8, b3@40 d#4@33 ~@7]/5", G: "~@8 [a3,c#4,e4]@7 ~",
  H: "[g#4@7 ~ [f#4,a4,c#5]@8 [b3,d#4,f#4]@7 ~ a3@14 ~@2 [b3,d#4,f#4]@8, [c#4,e4]@19 ~@5]/3", // F#m B C#m
})).s("gm_string_ensemble_2").gain(0.1)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note("<~@6 [~@10 b3@2 c#4@2 e4 ~] [e4@3 ~@5] ~@19 [~@2 b3@2 c#4@2 e4 ~ e4@6 ~@2] ~@45>")
  .s("gm_acoustic_guitar_steel").gain(0.32)

// other · acoustic guitar steel · "Track 12"
const acoustic_guitar_steel_3 = note("<~@43 A B C@3 D ~@24>".pickRestart({
  A: "~@7 e5, ~@13 b4@2 ~", B: "d#5@3 b4@2 ~ g#4@2 c#5@6 ~@2",
  C: "[~@16 f#5@3 d#5@2 ~ b4@2 e5@12 ~@10 [b4,e5]@2, ~@7 e5@2 ~@15]/3", D: "f#5@3 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.19)

// other · overdriven guitar · "Track 13"
const overdriven_guitar = note("<~@48 A@2 B ~@22>".pickRestart({
  A: "[~@14 c#4@2 ~@14 e4!2, ~@13 b3@8 ~@11]/2", B: "f#4@2 f#4@2 g#4@2 e4@7 ~@3",
})).s("gm_overdriven_guitar").gain(0.19)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@11 A B C D E F E F E F E G@2 ~@3 H@5 I J@2 K L M L M L M L N L M L M L M L O ~@4 P Q R Q R Q R Q S Q R Q R Q R Q T
>`.pickRestart({
  A: "a4 b4", B: "c#5@8 d#5@6 e5 d#5", C: "c#5", D: "b4@3 ~@5", E: "e4 f#4", F: "e4 d#4", G: "[e4 f#4@2 ~]/2",
  H: "[~@8 e4@10 f#4@2 g#4@2 b4@2 c#5@10 b4@5 ~ g#4@10 f#4@6 e4@12 ~@4 a4@8]/5", I: "b4 c#5",
  J: "[d#5@6 e5 d#5 ~@14 a4 a#4 b4@5 ~@3, ~ c#5@2 ~]/2",
  K: "~@2 e4 [f#4,g#4] [a4,b4] [c#5,d#5] ~@2 e4@8, ~ d#4@4 ~ e5@6 ~@4", L: "f#5 e5", M: "d#5 e5", N: "f#5@3 ~@5 e5@8",
  O: "f#5@3 ~@13", P: "~ f#3", Q: "g#4 f#4", R: "f#4!2", S: "g#4@3 ~@5 f#3@8", T: "g#4@3 ~@13",
})).s("gm_string_ensemble_1").gain(0.29)

// drums · kick
const kick = s("bd").struct(`<
  ~@15 A@3 B A@3 B C D@11 C E@2 F E@3 F E@3 F E@3 F G H@2 G ~ C E F E@3 F E@3 F E@3 F E I
>`.pickRestart({
  A: "x ~@2 x ~@3 x!2 ~@2 x ~@2 x ~", B: "x ~@2 x ~@3 x ~ x ~ x ~@3 x", C: "~@8 x ~@2 x ~@3 x",
  D: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x", E: "x ~@2 x ~@2 x ~ x ~@2 x ~@3 x", F: "~ x ~ x ~@3 x!2 ~@2 x ~@3 x", G: "x",
  H: "~ x", I: "x ~@2 x ~@2 x ~@9",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct("<~@23 [~@3 x] [~ x ~ x]!11 ~@38>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@15 A@3 B A@3 B C ~@11 D A@2 E A@3 E A@3 E A@3 E ~@4 F G A E A@3 E A@3 E A@3 E A C
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "~ x ~@2", D: "~@3 x", E: "x!2 ~ x", F: "~@8 x ~@2 x ~@2 x ~", G: "~ x ~@4 x ~@5 x ~@3",
})).gain(0.54)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@14 [~@7 x] ~@20 [~@5 x!2 ~@9] ~@19 [~@7 x] [~ x ~@4 x ~@9] ~@16>").gain(0.6)

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

// drums · high tom
const high_tom = s("ht").struct("<~@14 [~@12 x!2 ~@2] ~@20 [~ x!2 ~@13] ~@19 [~@8 x ~@2 x ~@4] [~@4 x!2 ~@10] ~@16>")
  .gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@3 A ~@14 B ~@3 B ~@3 B ~@3 B ~@7 B ~@3 B ~@3 B ~@3 B ~@3>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<~@23 A@2 ~ A ~ A ~ A ~ A ~ A ~@38>".pickRestart({
  A: "~ x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@15 A@8 ~@12 B A@15 ~@5 B A@15 C>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.48)

// drums · bongos
const bongos = s("bongo:4").struct("<~@15 A@8 ~@12 B A@15 ~@5 B A@15 C>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@5 x ~@2", C: "~ x ~@6",
})).gain(1.1)

// drums · congas
const congas = s("conga:13").struct("<~@15 A@8 ~@12 B A@15 ~@5 B A@15 C>".pickRestart({
  A: "~ x ~@7 x ~@6", B: "~@9 x ~@6", C: "~ x ~@14",
})).gain(1.54)

// drums · congas
const congas_2 = s("conga:18").struct("<~@15 A@8 ~@12 B A@15 ~@5 B A@15 C>".pickRestart({
  A: "~@6 x!2 ~@6 x!2", B: "~@14 x!2", C: "~@6 x!2 ~@8",
})).gain(1.54)

// drums · congas
const congas_3 = s("conga:33").struct("<~@15 A@8 ~@12 B A@15 ~@5 B A@15 C>".pickRestart({
  A: "~@5 x ~@7 x ~@2", B: "~@13 x ~@2", C: "~@5 x ~@10",
})).gain(1.54)

// drums · shaker
const shaker = s("sh").struct("<~@23 [~@4 x!4] [x!8]!11 ~@38>").gain(0.42)

stack(
  bass, acoustic_guitar_steel, string_ensemble_2, acoustic_guitar_steel_2, acoustic_guitar_steel_3, overdriven_guitar,
  string_ensemble_1, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride, tambourine, bongos,
  congas, congas_2, congas_3, shaker
)

More by Westlife