Strudelify

Words

Boyzone

KeyD majorTempo82 bpm
0:00/0:00
// Words — Boyzone
// 82 bpm, 4/4, key D 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 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/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 · piano
const piano = note(`<
  A@4 B C D@2 E F G@2 H@2 I@2 J@2 K@2 L@2 M@2 N O P@2 Q@2 R@2 S@2 T@2 U@2 V W X Y Z@2 AA AB AC AD AE@2 AF@2 AG@2 AH@2
  AI@2 AJ AK AL@2 AM AN X Y Z@2 AA AB AC AO AP@7 AQ@2 ~
>`.pickRestart({
  A: "[[d3,g3,b3]@5 ~@7 e3@2 ~@2 [d3,g3,b3]@2 ~@9 g2 ~@4 [d3,g3,b3]@6 ~@6 e3@2 ~@2 [d3,g3,b3]@3 ~@6 g3@3 ~@2 d2@2, g2@8 d4@20 [c3,e3,g3,d5] b4@3 g1@12 [g3,c4]@2 e3 g2@4 d3 f#3 g3 c3@6 [c3,e3,g3]@4, ~@5 d4 g3 g4@23 e5@8 [d3,g3,b3]@3 d4@2 g4@17 ~@4, ~@6 f#4@24 d2 d5@11 f#4@18 ~@4, ~@6 [d3,b3]@4 g3 g2 [g3,c4]@2 e3 g2@3 d3 f#3@2 g3@2 d3@2 [g3,d5] f#5 g5@15 g3 g2 d4@16 ~@4]/4", // G C C5 C G C5 G5
  B: "[g3,b3]@5 ~@2 g4 ~@7 g2, [g2,d4]@8 [g2,d4]@3 g2@4 ~, ~@5 g3@3 ~@2 g3@4 g3@2, ~@3 b3 [c4,g4]@4, ~@3 [b3,d4]", // G G5 C5 Bm
  C: "~@7 c4 d3@2 ~@3 g3@2 d2, [d2,d3,f#3,a3]@8 [d2,g3]@4 d2@3 ~, ~@3 b3 ~ d3@3, ~@11 f#3@5", // D G5
  D: "[b3@3 ~@11 d5@2, g3@9 d3@2 g3 g2 c3 e3@2 [d1,a2,d3,f#3]@16, [g2,d3]@8 g2@2 f#3@5 d2@17, ~@6 [b3,d4]@10 ~@11 [f#5,a5]@5, ~@7 g4@9 ~@10 d6@6]/2", // D G5 Bm F#m
  E: "g2@2 ~@3 d3@3, [g3,b3], d3@5 ~@3, ~ g1@3", F: "g2@2 ~@5 [g3,c4,d4], d3, b3@11 g2@5, g3@5 g3 [b3,g4]@2, ~ g1@3",
  G: "[~@24 f#3@3 ~@3 a3@2, e4@12 c#4@11 a2@9, [a2,c#4]@11 a2@3 e4@10 ~@8, a3@10 a3@3 d4@2 a3@7 a3@2 ~@3 g3@5, ~@3 a1@5 a1@8]/2", // A
  H: "[d3@6 ~@8 d4@2 ~@6 d3@2 e3@3 ~@3 g3@2, f#3@16 [f#3,a3,d4]@8 ~@3 f#3@5, [d2,a3]@5 a3 [a3,f#4]@2 ~@8, ~@3 d3@5 ~@8, ~@11 d2@21]/2", // D D5 D
  I: "[[c2,c3,e3,g3]@6 [g1,d3,g3] ~@9 g1@16, ~@8 [g1,d3,g3]@7 [d3,g3,b3]@17, ~@7 g2 ~@8]/2", // C G5 G
  J: "[f3@4 ~@18 c4@2 [g3,a#3,d#4]@3 a#3@3 a#3@2, a#1@13 a#2 d4@6 a#3@4 ~@3 d4@5, d4@3 f3 a#1@4, [a#2,a#3]@6 a#2@2 f3 a#2 c4@6 ~@3 a#2@13, ~@4 f3@3 a#3@9 ~@2 f3@7 ~@7]/2", // D# A#
  K: "[~@15 c4, f1@14 f2@2 ~@10 a4@3 f3@3, [f3,c4]@9 f2 c4@2 f2 a3@2 c4@8 c4@2 c4@3 f4@4, a3@7 f4@9 ~@8 c5@8, ~@4 f2@4 a3@3 f3@5 f3@11 a3@5]/2", // F5
  L: "[f3@6 ~@10 f3@6 ~@2 [a#3,f4]@3 ~@3 f3@2, [a#2,a#3,d4]@7 a#2@2 f3@2 d#4@5 ~@16, ~@6 f3@2 d4@2 a#2@3 a#3@3 [a#3,d4]@8 ~@3 [a#3,d4]@5, ~@6 g3@2 ~@3 f3 ~@4, ~@14 a#2@9 a#2@9]/2", // A#5 A#
  M: "[~@16 d5@13 ~@3, [d2,f#3,d4]@8 d2@6 f#4 a4@14 ~@3, ~@6 d3@23 ~@3, ~@12 a3@17 ~@3, ~@13 d4@16 ~@3]/2", // D
  N: "g3 ~@6 g2@3 ~@4 g3@2, b3@4 d5 d4 g3@4 d3 g2 d4@4, [g2,d4] f#5@7, ~ d5@2 [a3,g5]@13, ~@2 g2 d4 g2 b3@11", // G5 A7
  O: "d3@2 d3 ~@4 d2, d2@10 d4 d3 f#3 d3@3, f#3@9 f#4@7, a3@3 a3@5, ~@7 d3 a4@8",
  P: "[~@6 [d3,g3,b3]@2 g2 ~@7 [d3,f#3]@10 ~@2 d5@3 ~, g2@8 ~ d3@4 g3 c3@2 ~@11 [f#5,a5]@5, [d3,g3,b3]@4 d5@11 d2@16 ~, ~ d5@2 g5@6 ~@2 f#3@5 ~@10 d6@5 ~, ~@2 f#5@7 ~ g2@6 d1@16]/2", // G D F#m G
  Q: "[[g3,b3,d4,g4]@6 g3 ~ g3@2 ~@6 g3@2 ~@2 g3@2 ~@2 [b3,d4,g4]@2 g3 ~@3 b3@2, g2@19 ~@13, ~@7 [d4,g4]@7 [d4,g4,d5]@5 ~@4 g3@3 ~@2 g3@4, ~@7 b3@3 b3@8 [d4,g4]@6 ~@3 [d4,g4]@5, ~@11 g3@5 ~@2 b3@4 b3@2 ~@3 b3@3 ~@2]/2", // G G5
  R: "[[a3,c#4,e4,a4]@6 ~@4 a3 ~@20 a2, a2@7 a4@4 e5@4 a3, ~@6 [c#4,e4,a4]@5 a3@3 e4@8 a4 c#5@9, ~@12 c#4@3 a3@9 a4 e4 a3 c#4 [e4,a4]@4, ~@12 a4 d4@3 a2@13 c#4@3]/2", // A A5
  S: "[[f#3,a3,d4]@6 ~@6 [f#3,d4] g3 ~@6 d3@2 ~@6 d5 ~@2 d3, d2@29 [g4,d5] f#4@2, ~@3 [f#3,a3,d4]@3 ~ [a3,d4]@2 a3@7, ~@10 d3@6 d3@4 ~@3 d3 [f#4,d5] g4 [a4,d5] d3 a4@4, ~@9 d4@2 d4@5]/2", // D G5 D D5 D D5
  T: "[[c3,g3,c4,e4]@6 [g2,g3,b3,d4] ~ d4@6 ~@10 g3@2 ~@2 [d4,g4]@2 ~@2, ~@4 g2@11 ~, ~@8 b3@10 b3@9 g3@3 ~@2, ~@4 g3@2 ~ g3 g3@2 g3 [d4,g4]@2 [d4,g4] ~@2, ~@15 [d4,g4]@7 d5@6 ~@4]/2", // C G G5
  U: "[~@12 [f4,d5]@3 ~@5 a#3@2 ~@8 c5@2, f3@15 d4@7 d4@4 a#3 [f4,d5]@5, [a#2,d4]@8 a#2 [d4,a#4]@6 a#4@17, ~@6 a#3@10 ~@7 a#3 [g4,d#5]@8, ~@6 f4@5 a#2@5 a#2@16]/2", // Dm A# Gm Cm
  V: "a4@3 [d4,a4] ~@3 a2, [d3,d5], f#4@11 f#4@5, ~ [d4,a4]", W: "[d1,d2]@5 ~ a4@2, e1 ~@9 a5@2 ~@4, ~@11 [d5,f#5]@5",
  X: "~@5 d3 g2@4 ~@2 g3@2 ~ g2, [g2,d3,g3,b3]@4 d5@7 g2 c4@2 g3@2, ~ d5@2 g5@13, ~@2 f#5@3 b3@11, ~@4 g2 g3@5 d3@6", // G
  Y: "~@3 f#3@2 ~@2 a3, d2, [f#3,a3]@6 [a3,d4]@5 d3@5, ~@2 d3@3 f#3 [f#3,d4]@2, ~@13 g3@3", // F#m D5 D
  Z: "[g2@4 ~@2 d3@3 ~@4 d3 ~ g2 ~@6 d4@4 ~@2 d4 ~@2 d3, [d3,g3,b3]@3 [g3,b3]@3 d5 [d3,e5] ~@2 d3@3 d4 d5 f#4, ~@4 g2@6 f#5@5 d5@12 d3@2 [d4,a4]@3, ~@9 d5@2 [g2,g5]@5 d2@16, ~@10 d3@3 [g3,b3,b4]@3 [f#3,a3,d4]@6 [f#3,a3]@10]/2", // G Dsus2 D5 G D F#m
  AA: "~@3 [b3,d4] ~ g2 ~ g2, g4@4 g3@4 g3 [b3,d4]@4 ~@3, g2 d5@2 [g3,b3], [b3,d4]@3 g5@9 ~@4, ~ d5 f#5@10 ~@4", // Bm G Bm
  AB: "~@3 f#3@2 ~@2 a3, d2, [f#3,a3,d4]@6 a3@7 g3@3, ~@2 d3@3 f#3 [f#3,d4]@2, ~@6 d4@5 d3@5", // D
  AC: "~@6 d3@3 ~ f#3 ~@4 c2, g2@3 g2, [d3,g3,b3]@4 d5@7 ~@3 e3@2, ~ d5@2 g5@3 ~@3 d3@2 ~@2 c3@3, ~@2 f#5@4 [g3,b3]@5 g3@5", // G
  AD: "[d2,a2,d3,f#3]@11 ~ d5@3 ~, ~@11 [f#5,a5,d6]@5", // D
  AE: "[~@3 [d5,b5] ~@3 [b4,g5] ~@3 [g4,d5] ~@8 g4@2 ~ g4@3 d5@2 d5@2 [g3,b4,d5]@2, g2@12 g4@2 g3 b4@3 g4 g2 d5@2 g3@4 g4@2 a4@4, g3@3 g3 g5@12, ~ b5@7, ~@4 d5@4 b4@2 g3@2 d5@3 d4@17]/2", // G Em G5 G
  AF: "[a3@2 ~@5 [a4,e5] a4@2 ~ [a4,c#5] c#5@2 ~@6 a3@2 ~@2 a4 ~@5 e4@2, a2@14 a3 e4@10 a4 c#5 a3 [e4,c#5] a4@3, ~@2 a4@4 a3@2 e5@14 a4 a3@2 e5@7, ~@3 a3 c#5@6 a3@2 a4@3 c#5@9 a5@8, ~ a5@3 a2@4]/2", // A5 A C#m
  AG: "[~@7 [d4,a4] d4@2 ~ [d4,f#4] d4@2 ~@10 a4@2 [a4,f#5]@2 a4@2 [a4,d5]@2, d2@11 a4 ~@2 f#5@2, d3@4 f#4@6 d3@2 f#4@11 d4@9, ~@2 d4@4 d3@2 a4@6 d3 [d4,a4] d3@8 ~@8, ~ [b4,d5]@5 a5@2]/2", // D5 D D5 Bm
  AH: "[g4@6 [g2,g3,g4,b4,d5]@2 g3@8 ~@13 b3 d4 ~, [c3,c4,c5,e5]@8 g2@23 ~, ~@8 [g4,b4]@11 b4@4 d4 g3 g4 d4 g3 a3@2 ~@2, ~@4 d5@5 d5@6 ~, ~@16 g3@4 g4 g3 a4@8 ~@2]/2", // G C G
  AI: "[[f4,d5]@3 ~ a#3 ~@6 [f4,a#4,d5] d5 [d5,a#5] d5 [d5,f5], a#3@4 ~ a#4 f5@5 ~@3 a#5@2, ~@3 f4@6 f4@2 ~ [f4,a#4]@4, ~@3 d5@4 [a#4,d5]@4 ~@5, ~@11 a#3@5 a#3@4 a#3@12]/2", // Dm A# Gm Dm A#5 A#
  AJ: "[f4,c5,f5,a5]@5 f4 ~@2 f4@2 ~@2 c5@2 [c5,f5]@2, f3, ~@6 f5@5 f4@5, ~@3 c5@2 c5 a5@2", // F F5
  AK: "~ [a4,c5,f5]@3 [a4,c5]@2 f4 ~@3 [f4,a4]@2 f3 ~ f3@2, f3@7 c5@6 ~@3, ~@7 f4@3 ~@3 [c4,f4,a4]@3, ~@2 f3 ~", // F Am F
  AL: "[a#4@6 [f4,a#4]@2 ~@3 [a#4,d5] [a#4,d5]@2 a#3 ~ a#3@6 f4@2 a#3@2 ~@4 [f4,d5]@2, a#3@8 ~@2 a#3@2 ~@10 [a#4,d5]@5 a#3@5, f4@4 ~@4 [f4,a#4]@4 ~@3 [a#4,f5]@8 ~@3 f4@2 [a#4,f5]@4]/2", // A#5 A# Dm A# A#5
  AM: "~@3 [a4,d5,a5] [a4,d5]@3 [a4,d5,f#5] a4@3 [d4,f#4,a4] [d4,f#4,a4]@3 [a3,d4,f#4], d3, ~ a5@3, ~ [d5,f#5]", // D5 D
  AN: "[d1,d2,a3,d4,f#4]@13 ~@3, [c1,d#1,e1,g#1,a#1] ~@15", // D G#
  AO: "[d1,a2,d3,f#3]@4 ~@3 f#3 ~@4 e3 [e3,g3,c4]@2 c3, ~@4 [f#3,a3,d4]@4 [f#3,a3,d4]@5 ~@3, ~@6 d3@5 d3@3 ~@2", // D C D
  AP: "[~ [g2,d3]@3 ~@2 d3@2 ~@2 [d3,g3]@2 ~@3 d3@2 [d3,g3]@2 [d2,d3]@2 ~@3 [f#3,a3]@2 [d3,f#3,a3]@3 ~@10 e5@3 ~ g3@4 ~@10 e3@2 ~@4 [d3,g3,b3]@4 ~@5 d3@3 ~@3 e3@2 e3@2 ~ [d3,g3,b3]@5 ~@6 d3@3 ~@11 g3@4, e3@2 ~@2 d3@2 [g3,b3]@5 ~@2 [d3,g3,b3]@2 ~@6 d3@5 ~@4 d5@3 g5@2 d5@8 d5@20 ~@12 d3@3 ~@5 g1@22 a3@7, ~ g1@18 ~@12 [d3,a3,f#5]@3 g3@9 g2@4 [d3,g3]@3 g2@5 b2@3 ~@2 e3@3 ~@4 [d3,g3,b3]@5 [g3,b3]@6 ~@10 [d3,g3,b3]@6 [g3,b3]@7 g3@2 b3@9, ~ [g3,b3]@4 g2@3 d3@2 c4@5 a3@4 [f#3,a3]@5 ~@5 b3@5 d3@2 b4 [d3,f#3]@5 [b2,d3]@5 b2@5 [d3,g3]@4 g2@5 g2@9 g2@6 g2@5 ~ g2@9 g2@8 g2@13, ~@9 g2@5 g2@6 ~@2 d2@6 ~ [d2,d3,f#3]@3 d2@10 g1@15 [g1,g3,c4]@6 g1@15 [g1,g3,c4]@6 ~@13 d3@4 [d3,c4]@11]/7", // G5 D F#m D G D G5 G …
  AQ: "[~ [g2,d3,g3]@31, [g1,b2]]/2", // G5 G
})).s("gm_piano").gain(0.35)

// chords · piano
const piano_2 = note(`<
  ~@15 A B@2 C@2 D@2 E@2 F G H ~@8 I J K L@2 F G M@2 F G H ~ N@2 O@4 P I Q@2 R@2 S@2 L@2 F G M@2 F G H ~ T ~@9
>`.pickRestart({
  A: "~@3 [b3,d4]", // Bm
  B: "[[a#3,d4]@6 [a#3,d4]@2 [c4,d#4]@2 [a#3,d4]@2 [a3,c4]@2 a#3@4 [a#3,d4]@2 [a#3,d4]@2 [a#3,d4] [c4,d#4]@3 [a#3,d4]@2 [a3,c4]@2 [g3,a#3]@2]/2", // A# Cm A# Am A# Cm A# Am …
  C: "[[a3,c4]@3 [f3,a3] c4@10 [a3,d4,f4]@2, ~ a3@2 ~]/2", // Am F Dm
  D: "[a#3,d4,f4]@3 [a#3,d4,f4] [c4,d#4,g4] [a#3,d4,f4] [a3,c4,d#4] [g3,a#3,d4]", E: "[d4@5 d4!2 c4, f#4, a3 ~]/2",
  F: "[g3,b3,g4,b4]@3 [g3,b3,g4,b4] [a3,c4,a4,c5] [g3,b3,g4,b4] [f#3,a3,f#4,a4] [d3,g3,d4,g4]", // G Am G F#m G5
  G: "[f#3,a3,f#4,a4]@7 [f#3,a3,f#4,a4] [g3,b3,g4,b4]@2 [f#3,a3,f#4,a4]@2 [e3,g3,e4,g4]@2 [d3,f#3,d4,f#4]@2", // F#m G F#m Em D
  H: "[d3,g3,d4,g4]", I: "~@3 [b3,d4,g4]",
  J: "[a#3,d4,f4]@3 [a#3,d4,f4] [c4,d#4,f4] [a#3,d4,d#4] [a3,c4,d#4] [f3,a#3,d4]", // A# F7 D#maj7 Adim A#
  K: "[a#3,d4,f4]@3 [a#3,d4,f4] [c4,d#4,f4] [a#3,d4,d#4] [a3,c4,d#4] [g3,a#3,d4]", L: "[d4@5 d4!2 c4, [a3,f#4]]/2",
  M: "[[g3,g4], [d3,d4] ~]/2", // G D
  N: "[~@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] [g3,c4,d4,g4]@3 [g3,b3,d4,g4]@2 [g3,a3,d4,g4]@2 [g3,d4,g4]@4 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] [g3,c4,d4,g4]@3 [g3,b3,d4,g4]@2 [g3,a3,d4,g4]@2 [g3,d4,g4]@2]/2", // G Gsus4 G Gsus2 G5 G Gsus4 G …
  O: "[[e3,a3,c#4,e4]@6 [e3,a3,c#4]@2 [e3,a3,c#4,e4]@26 [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4] [f#3,b3,d4,f#4]@3 [f#3,a3,d4,f#4]@2 [f#3,g3,d4,f#4]@2 [f#3,d4,f#4]@4 [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4] [f#3,b3,d4,f#4]@3 [f#3,a3,d4,f#4]@2 [f#3,g3,d4,f#4]@2 [f#3,d4,f#4]@2]/4", // A D Bm D Gmaj7 D Bm D …
  P: "[e3,g3,c4,e4]@3 [d3,g3,b3,d4] [d3,g3,b3,d4]@4", // C G
  Q: "[[a#3,d4,f4]@6 [a#3,d4,f4]@2 [c4,d#4,f4]@2 [a#3,d4,f4]@2 [a3,c4,f4]@2 [a#3,f4]@4 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4] [c4,d#4,f4]@3 [a#3,d4,f4]@2 [a3,c4,f4]@2 [g3,a#3,f4]@2]/2", // A# F7 A# F A#5 A# F7 A# …
  R: "[[a3,c4,f4]@3 [f3,a3,c4] [a3,c4,f4]@10 [a3,d4,f4]@2]/2", // F Dm
  S: "[a#3,d4,f4]@3 [a#3,d4,f4] [c4,d#4,f4] [a#3,d4,f4] [a3,c4,f4] [g3,a#3,f4]", T: "~ [g3,b3,d4]@6 ~@9",
})).s("gm_piano").gain(0.05)

// bass · electric bass finger
const bass = note(`<
  ~@16 A B C D A E F G H I H J K@2 L M N@2 O P Q R S T U V W X U Y Z AA K@2 L M N@2 O P AB AC C AD Q R S G U V W X U Y Z
  G AE@3 AF@6 ~
>`.pickRestart({
  A: "a#1@7 f1", B: "a#1@3 d1", C: "f1@3 c1 f1@3 c1", D: "f1@11 ~ f1@2 g1 f1", E: "a#1@12 a#1@2 c2 c#2",
  F: "d2@11 ~ d2 c2 a1@2", G: "d1", H: "g1@5 ~ g1 ~ g1@5 ~ g1 a1", I: "d2@2 d1@4 d1 ~ d1@4 f#1@4",
  J: "d1@5 ~ d1 ~ d1@4 d2@4", K: "[g1@5 ~ g1 ~ g1@6 g1@8 g1@2 g2@2 d2@2 g1@2 e1@2]/2", L: "a1@5 ~ a1 ~ a1@6 e1@2",
  M: "a1@6 e2@2 a1 a2@3 e2@2 a1@2", N: "[d1@5 ~ d1 ~ d1@6 g1 a1@3 d1@3 ~ d1 ~ d1@4 a1@4]/2",
  O: "c2@5 ~ g1 ~ g1@6 g1 d2", P: "g1@6 g1@2 d2@2 g1 g2@3 d2 ~", Q: "a#1 f1 a#0@5 f1",
  R: "a#1@2 f1@2 a#0@8 a#1@2 c2 c#2", S: "d2@6 a1@2 d1@4 d2@2 c2 a1", T: "d1@5 ~@3", U: "g1@6 g1@6 g1@2 g1 a1",
  V: "d1@6 d1@6 d1@2 d1 e1", W: "g1@6 g1@6 g1@3 a1", X: "d1@6 d1@4 a1 d1 d2 c2 a1@2", Y: "d2@2 d1@4 d1@2 d1@5 a1 d2 a1",
  Z: "g1@6 g1@4 a1 g1 d2 c2 a1 g1", AA: "d1@12 d2 c2 a1 d1", AB: "a#0@6 a#0@6 a#1@2 a#0 f1", AC: "a#0@3 a#0@3 a#1 c1",
  AD: "f1@10 f1@2 f2 c2 f1@2", AE: "[~@2 g1@6 g1@12 d1@6 d1@15 g1@7]/3",
  AF: "[~@2 g1 ~@9 c1@3 g1@18 c1@2 g1@30 g1@31]/6",
})).s("gm_electric_bass_finger").gain(0.52)

// other · timpani
const timpani = note(`<
  ~@16 A B C D E F G H ~@2 I ~ J K L M N O P Q ~@20 A B C D E F G H ~@8 R S T U V W X Y ~@2
>`.pickRestart({
  A: "~@3 a#2 a#2@3 ~@9", B: "~@3 a#2 a#2@4 ~@8", C: "f2@4 ~@2 f2 ~ f2 ~@7", D: "~@10 f2 ~ f2 ~@3", E: "~@2 a#2!3 ~@11",
  F: "~@3 a#2!2 ~@11", G: "~@14 a2 ~", H: "d2@5 ~@11", I: "~@7 g2!2 ~@7", J: "~@3 g2 g2@10 ~@2", K: "~@2 g2!2 g2@11 ~",
  L: "~@4 a2@9 ~ e2 ~", M: "a2@10 a2!2 a2@4", N: "~@4 d2@6 d2!2 d2@3 ~", O: "~@4 d2@5 ~@7", P: "~@11 g2 g2@4",
  Q: "~@10 g2@5 ~", R: "~@6 g2 ~@7 g2!2", S: "~@8 d2 ~@7", T: "~@2 d2 ~@12 g2", U: "~@7 g2!3 ~@6",
  V: "~@3 g2 ~@8 g2 ~ g2 ~", W: "~@8 g2 ~@7", X: "~@5 g2 ~@10", Y: "~ g1@7 ~@8",
})).s("gm_timpani").gain(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A@7 B@2 C@2 D@2 E@2 F G H@2 I@2 J K L@4 M@2 N@2 O P Q@2 R S T@2 U@4 V W X@2 Y@2 Z@2 AA@2 AB@2 AC AD AE@2 AF@2 AG AH
  U@4 V W X@2 AI@7 AJ@2 ~
>`.pickRestart({
  A: "[~@48 g4@12 a4@4 f#4@16 g4@13 [c3,c4] [e3,e4] [c3,c4] [d3,d4]@16, ~@3 g6@25, ~@48 d4@45 ~@19]/7", // C E C D
  B: "[g3,b3,d4]/2", C: "[a3@13 e3 f#3 g3, [c#4,e4]]/2", D: "[d4@7 f#4, [f#3,a3]]/2",
  E: "[[g3,c4,e4]@5 ~ [g3,b3,d4] ~@5 a3 ~@11 b4@4 c5@4, ~ [g3,b3,d4]@3, ~@5 g4@3]/2", F: "[f4,d5]@3 [g4,d#5], a#3",
  G: "d5@3 a#4, [a#3,f4]", // A#5
  H: "[[f4,c5]@6 a4@2 [f4,c5]@6 [c4,a4]@2 [f4,c5]@12 ~@3 c5, f3, g3 ~@5 c4 ~@21 a4@4, ~@15 a#4]/2", // F5 F F5
  I: "[[f4,d5]@7 [g4,d#5] d5@6 a#4 ~, a#3, ~ f4]/2", J: "f#4@11 ~ a5@4, [d3,d5]", K: "d6@15 ~",
  L: "[b4@8 c5@4 b4@4 a4@8 g4@4 f#4@4 [b3,g4]@13 [c3,c4] [e3,e4] [c3,c4] [d3,d4]@15 ~, d6@15 ~, d4 ~]/4", // Em C E C D
  M: "[g3@16 g3 ~@11 d4@4, b3@29 ~@3]/2", N: "[c#4@4 e4@2 a4 g4, a3]/2", O: "[d4,f#4]@6 e4 d4",
  P: "f#4@8 g4@3 f#4@3 e4@2, a3@15 ~", Q: "[[g3,c4]@5 ~ [g3,b3] ~ b3@12 d4@4 g4@4 d5@4, ~ g3@3]/2",
  R: "d5@3 d5 [g4,d#5] d5 c5 [d4,a#4,d#6], d6@7 ~, f4@4 ~ f4@2 ~", S: "d5@3 d5 [g4,d#5] d5 c5 a#4, f6, f4@4 ~ f4@3",
  T: "[[f#4,d5]@21 ~@11, d6]/2", U: "[b4@3 c5 a4@3 f#4 g4@4 a4@2 d5 c5, d6, d4@32 d4@31 ~]/4",
  V: "~@2 g6 [c5,b6], d4, b4@3 ~", W: "[a4,a6]@3 [a4,f#6], f#4", X: "[[g4,g6]@16 [d3,d7]@15 ~, d4@31 ~]/2",
  Y: "[~@2 b5 ~ b5@2 b5 c6@3 b5@2 a5@2 g5 ~@3 b5 ~ b5@2 b5 c6@3 b5@2 a5@2 g5 ~, d4, b4@3 c5 b4@4]/2",
  Z: "[~@2 a5 ~ a5@2 e5 ~@3 a5 ~ a5@2 e5 ~@3 a5 ~ a5@2 e5 ~@3 e5 ~ [b4,a5]@2 c#5@2, e4, c#5@28 ~@2 g5 ~]/2", // B7
  AA: "[~@2 a5 ~ a5@2 a5 b5@3 a5@2 g5@2 f#5 ~@3 a5 ~ a5@2 a5 ~@3 a5@2 g5@2 a5@2, [f#4,d5]@23 b5@3 ~@6, ~@6 [a4,f#5] [f#4,d5]]/2", // D
  AB: "[[g4,c5,c6]@5 ~ [g4,b4,d5,g5] ~ [d5,g5]@8 b5@8 d6@5 ~@3, ~@4 [g4,b4]@11 ~]/2", // C5 G G5 G
  AC: "f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~, a#3, [f4,d5]@3 [g4,d#5]", // Dm Cm
  AD: "f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~, [a#3,f4], d5@3 a#4", // A#5
  AE: "[c6 ~ c6 ~ c6 ~ [c4,a4]@2 c6 ~ c6 ~ c6 ~ [c4,a4,a5]@2 c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ [a4,a5]@2 a#4 c5, f3@7 ~, [f4,c5]@6 c6 ~ [f4,c5]@6 ~@2 [f4,c5]@12 ~@2 c6@2]/2", // F A F5
  AF: "[d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ [g4,d#5,d#6]@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6@2 c6@2, a#3, [f4,d5]@7 ~ [f4,d5]@6 a#4@2]/2", // Cm Dm
  AG: "~@3 f#6, [d3,f#4,d5,d6]", AH: "d7@7 ~",
  AI: "[~ g4@5 d4@4 g4@4 ~ b4@4 [d4,a4]@23 ~ [b3,g4]@58 c3 ~ b2 ~ a2 ~ g2 ~@4, ~@3 d6@5]/7", // D5 Em
  AJ: "[~ g6@30 ~, g2@31 ~]/2",
})).s("gm_string_ensemble_1").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@35 A B C ~ D B E B F B E B D B E B F B E B D B E B F B E G H B E B F B E I D ~@10
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "x ~@2 x!2 ~@2 x", C: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~", D: "x", E: "~ x ~ x!3 ~@2",
  F: "~ x ~ x!2 ~@3", G: "x ~@2 x ~@4", H: "~@13 x ~@2", I: "x ~@2 x!2 ~@3",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@35 A B@2 C D B@3 E B@3 ~ B@3 E B@3 ~ B@3 E B@2 ~ F B@3 E B@2 G ~@11>".pickRestart({
  A: "~@4 x ~@6 x!2 ~@3", B: "~ x ~ x", C: "x ~@10 x ~@3 x", D: "~@15 x", E: "~@4 x ~@7 x ~ x!2", F: "~@14 x!2",
  G: "~ x ~@2",
})).gain(0.45)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@38
  [~@8 x ~@4 x ~@2]
  [~@7 x]
  ~@7
  [~@2 x ~ x!2 ~ x!2 ~@2 x ~ x ~@2]
  ~@7
  [~@2 x ~ x!2 ~ x!2 ~@2 x ~ x ~@2]
  ~@26
>`).gain(0.15)

// drums · low tom
const low_tom = s("lt").struct("<~@35 A ~@2 B ~@8 C ~@7 C ~@14 D ~@11>".pickRestart({
  A: "~@7 x!2 ~@7", B: "~@6 x!2", C: "~@14 x!2", D: "~@15 x",
})).gain(0.4)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@24 A B C D A@6 E ~ D ~@3 D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~@3 D ~ D ~ D ~ D ~@11
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~ x ~ x ~@3 x", D: "~ x ~@6", E: "~@2 x ~@3 x ~@3 x ~@3 x!2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@38 A ~@8 B ~@7 B ~@14 C ~@11>".pickRestart({
  A: "~@5 x!2 ~@2 x!2 ~@5", B: "~@9 x!2 ~ x ~@3", C: "~@13 x!2 ~",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@25 A@2 B ~@7 C D@2 ~ D@2 ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~@2 E D ~ D ~ D ~@13
>`.pickRestart({
  A: "~@15 x", B: "~ x ~@2", C: "x ~@4 x ~@2", D: "~@7 x", E: "x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@35 A ~@2 B ~@8 C ~@7 C ~@14 D ~@11>".pickRestart({
  A: "~ x ~@6", B: "x ~ x!2 ~@12", C: "~@3 x ~@2 x ~@9", D: "~@3 x",
// … 83 more lines

More by Boyzone