Strudelify
Love Me For A Reason cover art

1995 · Said And Done

Love Me For A Reason

Boyzone

KeyA majorTempo150 bpm
0:00/0:00
// Love Me For A Reason — Boyzone
// 150 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 144 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/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 pick · "Track 2"
const bass = note(`<
  ~ A B C D E F G H I J K B C D E F G F I B C D E F G F L M@2 N@2 O P Q R S T U V W X Y Z S T U V AA AB AC AD AE AF AG
  AH B C D E F G F I B C D E F G F L M@2 AI@2 O P Q AJ S T U V W X Y Z S T U V AA AB AC AK AL AM AN B D AO AP AQ M@2 N@2
  O P Q R S T U V W X Y Z ~@8 AR AS AT AU AV AW AX AY AR AS AT AU AZ BA BB BC
>`.pickRestart({
  A: "~@7 g#2 e1@8", B: "a1@11 ~ a1@3 ~", C: "g#1@11 ~ g#1@3 ~", D: "g1@11 ~ g1@3 ~", E: "f#1@11 ~ f#1@3 ~",
  F: "e2@11 ~ e2@3 ~", G: "d2@11 ~ d2@3 ~", H: "e2 ~@3 e2@7 ~ e2@3 ~", I: "e1@11 ~ e1@3 ~", J: "e2@2 ~@2 e2 ~@3 e1@7 ~",
  K: "e1 ~@3 e1@12", L: "e1@11 ~ e1@3 d1",
  M: "[c#1@2 ~@2 c#1@2 ~ c#2 c#1@4 ~@2 f#1@5 ~ f#1 ~@2 f#1 c#2@2 a1@2 f#1@2 c#1@2]/2",
  N: "[b1@2 ~@2 b1 ~@2 b1 e1@4 b1@2 e2@4 e1@4 ~ e2!2 ~@2 e2 g#1 a1 ~ b1]/2", O: "c#2@4 ~@3 c#3 c#2@8",
  P: "f#1@4 ~@7 c1 c#2 [a1,b1] g#1 [e1,f#1]", Q: "d1@3 ~ e1@2 f#1@2 ~@2 c#2 d2 ~@2 d1@2", R: "e1@2 ~ e1 ~@3 g#2 e1@8",
  S: "a1@8 ~@3 a1 e2@3 a1", T: "g#1@8 ~@3 g#1 b1@3 e2", U: "f#1@7 ~ f#1@3 g#1 a1@3 f#1",
  V: "e1@8 ~@4 e1 [d#1,f1] d1 [c#1,f#1]", W: "d1@2 ~ d2", X: "c#2@7 a1 e2@3 a1 c#2@3 a1",
  Y: "d2@3 ~ d2 ~ d2@3 ~ d2 ~ d2@2 e2 ~", Z: "e2@3 b2 e2@3 b2 e1 f#1 ~ g#1 a1@2 b1@2", AA: "d2@2 ~ d2",
  AB: "c#2@4 a1 b1 c#2@2", AC: "d2@3 e2@2 e2 d2 b1", AD: "a1@8 ~@3 a1 ~@3 a1", AE: "e1@2 ~ e1", AF: "d1@2 ~ e1",
  AG: "c#2 ~ a1 ~ e1@4 ~@4 e1@3 b0", AH: "e2 ~ b1 ~ e1@12",
  AI: "[b1@2 ~@2 b1 ~@2 b1 b1@4 b1@2 e2@4 e1@4 ~ e2!2 ~@2 e2 g#1 a1 ~ b1]/2", AJ: "e1@2 ~ e1 ~@3 e2 g#0@8",
  AK: "a1@8 a1 ~@3 b1 ~@3", AL: "c2@11 ~ c2@3 ~", AM: "b1@11 ~ b1@3 ~", AN: "a#1@11 ~ a#1@3 ~", AO: "f1@11 ~ f1@3 ~",
  AP: "e1 ~@3 e1@7 ~ e1@3 ~", AQ: "e1 ~ e1 ~ e1@3 ~ e1 ~ e1@4 e2 ~", AR: "c2@8 ~@3 c2 g2@3 c2",
  AS: "b1@8 ~@3 b1 d2@3 g2", AT: "a1@7 ~ a1@3 b1 c2@3 a1", AU: "g1@8 ~@4 g1 [f#1,g#1] f1 [e1,a1]", AV: "f1@2 ~ f2",
  AW: "e2@7 c2 g2@3 c2 e2@3 c2", AX: "f2@3 ~ f2 ~ f2@3 ~ f2 ~ f2@2 g2 ~", AY: "g2@3 d3 g2@3 d3 g1 a1 ~ b1 c2@2 d2@2",
  AZ: "f2@2 ~ f2", BA: "e2@4 c2 d2 e2@2", BB: "f2@3 g2@2 g2 f2 d2", BC: "c2 ~",
})).s("gm_electric_bass_pick").gain(0.71)

// other · brass section · "Track 3"
const brass_section = note(`<
  ~ A B C D E F G H I J ~@16 K ~@8 L M N L ~@2 O P Q R S T U V W X Y ~@18 K ~@8 L M N L ~@2 O P Q R S T U V W Z AA AB AC
  AD AE AF AG AH ~@8 L M N L ~@2 O P ~@8 AI AJ AK AI ~@2 AL AM AN AO AP AQ AR AS AT AU
>`.pickRestart({
  A: "~@12 b3 [c#4,d4] e4 [f#4,g#4]", B: "a4@15 ~", C: "g#4@15 ~", D: "g4@15 ~", E: "f#4@15 ~", F: "e4 a4", G: "f#4 b4",
  H: "[e4,a4]@11 ~ [g#4,b4] ~ [a4,c#5] ~", I: "e4@11 ~ [e4,a4]@2 ~@2", J: "[e4,b4]", K: "~@8 g#4 ~ a4 ~ b4@2 e4@2",
  L: "e4", M: "f#4 e4", N: "d4@7 ~ d4 ~ e4 ~ f#4@3 ~", O: "f#3@2 ~@2 f#3 ~ f#3@3 ~ f#3 ~ f#3 ~ g#3 ~",
  P: "g#3@4 ~@4 f#4@3 ~ g#4@3 ~", Q: "e4@10 ~ [a3,e4] c#4@2 ~ e4", R: "f#4@4 [b3,f#4] ~@3 e4@4 [b3,e4] ~@2 [b3,e4]",
  S: "d4@4 c#5 [c#5,d5] d5 [c#5,d5] d4 ~ e4 ~ f#4@3 ~", T: "e4@2 f#4 g#4 a4@2 e5@2", U: "d5@9 ~ e5 ~ f#5@3 ~",
  V: "e5@7 ~ a5@7 ~", W: "a4@3 ~ a4@3 ~ b4@3 ~ b4@3 ~", X: "a4 ~@3", Y: "~ a4", Z: "a4@6 ~@2 a4@3 ~ b4@3 ~",
  AA: "c5@10 ~@2 d5 ~ e5 ~", AB: "d5@3 ~ g5@3 ~", AC: "g5@15 ~", AD: "c5@7 ~ f5@7 ~", AE: "f5@7 ~ e5@7 ~",
  AF: "e5@7 ~ d5@7 ~", AG: "[a4,e5]@15 ~",
  AH: "~@2 e5 ~ [g#4,e5] ~ [g#4,e5] ~ [e3,e4,e5] ~ [e3,e4,e5] ~ [e3,e4,e5] ~@3", AI: "g4", AJ: "a4 g4",
  AK: "f4@7 ~ f4 ~ g4 ~ a4@3 ~", AL: "a3@2 ~@2 a3 ~ a3@3 ~ a3 ~ a3 ~ b3 ~", AM: "b3@4 ~@4 a4@3 ~ b4@3 ~",
  AN: "g4@10 ~ [c4,g4] e4@2 ~ g4", AO: "a4@4 [d4,a4] ~@3 g4@4 [d4,g4] ~@2 [d4,g4]",
  AP: "f4@4 e5 [e5,f5] f5 [e5,f5] f4 ~ g4 ~ a4@3 ~", AQ: "g4@2 a4 b4 c5@2 g5@2", AR: "f5@9 ~ g5 ~ a5@3 ~",
  AS: "g5@7 ~ c6@7 ~", AT: "c5@3 ~ c5@3 ~ d5@3 ~ d5@3 ~", AU: "c5@3 ~@5",
})).s("gm_brass_section").gain(0.62).pan(0.7)

// other · string ensemble 1 · "Track 4"
const string_ensemble_1 = note(`<
  ~ A B C D E F G H@2 I ~@10 J K L M L N O P Q R S T U V W X Y Z AA AB AC Z AD AE AF AG AH AI AJ AK AL AM AN AO AP ~@9 J
  K L M L N O P Q R S T U V W X Y Z AA AB AC Z AD AE AF AG AH AI AJ AK AL AQ AR AS AT AU AV AW AX P Q R S T U V W X Y Z
  AA AB AC Z AD ~@8 AY AZ BA BB BC BD BA BE BF BG BH BI BJ BK BL BM
>`.pickRestart({
  A: "~@12 b4 [c#5,d5] e5 [f#5,g#5]", B: "a5@11 ~ b5@2 ~ c#6", C: "b5@7 ~ e6@7 ~", D: "e6@11 ~ e6@3 ~",
  E: "e6@7 ~ d6@7 ~", F: "d6@7 ~ c#6@7 ~", G: "c#6@7 ~ b5@7 ~", H: "a5/2", I: "b5", J: "~ g#5, e5", K: "[g5,b5]",
  L: "[a5,e6]", M: "b5 c#6, a6", N: "c#5 e5 a5 c#6 e6 a6 ~ e7, a6 c#7", O: "~@8 e6@7 ~, b5@15 ~", P: "[b5,e6]@15 ~",
  Q: "[a5,e6]@15 ~", R: "[a5,d6]@15 ~", S: "[g#5,d6]@15 ~", T: "[g#5,c#6]@15 ~", U: "[f#5,c#6]@15 ~",
  V: "[f#5,b5]@15 ~", W: "[e5,b5]@15 ~", X: "c#6", Y: "b5 e6", Z: "a5", AA: "d6 c#6",
  AB: "d6@3 ~ d6@3 ~ e6@3 ~ f#6@3 ~", AC: "e6 c#6", AD: "g#5@8 e4 [f#4,g#4] a4 [b4,c#5] d5 [e5,f#5] g#5 [a5,b5]",
  AE: "[e5,a5]@11 ~ [e5,b5]@2 [a5,c#6]@2", AF: "b5 e6, g#5", AG: "[d6,a6]@6 [d6,f#6] [a5,e6]",
  AH: "[b5,d6]@7 ~ [a5,c#6]@7 ~", AI: "d4@3 ~ d4@3 ~ e4@3 ~ f#4@3 ~", AJ: "e4@3 ~ a4@3 ~",
  AK: "d5@3 ~ d5@3 ~ e5@3 ~ e5@3 ~", AL: "c#5@15 ~", AM: "d5@7 ~ c#5@7 ~", AN: "c#5@7 ~ b4@7 ~", AO: "a4@15 ~",
  AP: "b4@15 ~", AQ: "c6@11 ~ d6@2 ~ e6", AR: "d6@7 ~ g6@7 ~", AS: "g6@11 ~ g6@3 ~", AT: "g6@7 ~ f6@7 ~",
  AU: "f6@7 ~ e6@7 ~", AV: "e6@7 ~ c7@7 ~", AW: "b6@5 a6 g#6 f#6",
  AX: "e6@7 ~ [e2,e3,e4,e5,e6] ~ [e2,e3,e4,e5,e6] ~ [e2,e3,e4,e5,e6] ~ [d#5,d#6]@2", AY: "e6", AZ: "d6 g6", BA: "c6",
  BB: "f6 e6", BC: "f6@3 ~ f6@3 ~ g6@3 ~ a6@3 ~", BD: "g6 e6", BE: "b5@8 g4 [a4,b4] c5 [d5,e5] f5 [g5,a5] b5 [c6,d6]",
  BF: "[g5,c6]@11 ~ [g5,d6]@2 [c6,e6]@2", BG: "d6 g6, b5", BH: "[f6,c7]@6 [f6,a6] [c6,g6]",
  BI: "[d6,f6]@7 ~ [c6,e6]@7 ~", BJ: "f4@3 ~ f4@3 ~ g4@3 ~ a4@3 ~", BK: "g4@3 ~ c5@3 ~",
  BL: "f5@3 ~ f5@3 ~ g5@3 ~ g5@3 ~", BM: "e5@15 ~",
})).s("gm_string_ensemble_1").gain(0.42).pan(0.3)

// chords · piano · "Track 5"
const piano = note(`<
  ~ A B C D E F G H I J K L M N O L O L O L M N O L O L O P Q R@3 S T@2 U V W X@2 Y Z AA U V W X@2 AB@2 AC AD AE AF AG L
  M N O L O L O L M N O L O L O P Q R@3 S T@2 U V W X@2 Y Z AA U V W X@2 AB@2 AC AH AI AJ@3 AK AL AM P Q R@3 S T@2 U V W
  X@2 Y Z AA ~@8 AN AO AP AQ@2 AR AS AT AN AO AP AQ@2 AU@2 AV
>`.pickRestart({
  A: "~@8 [e2,f#2] [g#2,a2,b2] [c#3,d3,e3] [f#3,g#3,a3] [b3,c#4,d4] [e4,f#4] [g#4,a4,b4] [c#5,d5,e5]", // Esus2 G#m C#m F#m Bm Esus2 G#m C#m
  B: "[a4,a5]@6 [b4,b5] [c#5,c#6], [c#3,e3,a3], [f#5,g#5] ~@15", C: "[b4,b5] [e5,e6], [b2,e3,g#3]",
  D: "[e5,e6]@3 [e5,e6], [e3,g3,b3]", E: "[e5,e6] [d5,d6], [d3,f#3,a3]", F: "[d5,d6] [c#5,c#6], [c#3,e3,a3]",
  G: "[c#5,c#6] [b4,b5], [d3,f#3,a3]", H: "[a4,a5]@6 [b4,b5] [c#5,c#6], [c#3,e3,a3]",
  I: "[e4,e5]@3 [a4,a5], [d3,f#3,a3]", J: "[e5,e6]!9 e6 [e5,e6]!6, [e2,b2,e3,b3]", K: "e6 ~@15", L: "[c#3,e3,a3]",
  M: "[b2,e3,g#3]", N: "[e3,g3,b3]", O: "[d3,f#3,a3]", P: "[g#3,c#4,e4]@2 ~ [g#3,c#4,e4]",
  Q: "[a3,c#4,f#4]@5 ~ [f#3,a3,c#4]@5 ~ [a3,c#4,e4]@3 ~", // F#m A
  R: "[[f#3,a3,d4]@7 ~ [f#3,a3,d4]@3 ~ [g#3,b3,e4]@6 [e3,a3,c#4]@4 [e3,g#3,b3]@5 ~ [a3,c#4] [b3,d4] ~@2 g#3@4 ~@4 [f#5,b5,e6]@4 ~@4, ~@28 e3@3 [c#4,e4]@5 ~@12]/3", // D E A E A Bm Esus2 C#m
  S: "[b3,e4,a4] ~ [a5,e6,a6] ~", T: "[[a3,d4,f#4]@5 ~ [d4,f#4,a4]@5 ~ [f#4,a4,d5]@3 [e4,b4,e5]@7 ~@10]/2",
  U: "[e3,a3,c#4]@7 ~ [e3,a3,c#4]@7 ~", V: "[g#3,b3,e4]@7 ~ [g#3,b3,e4]@7 ~", W: "[f#3,a3,d4]@7 ~ [f#3,a3,d4]@7 ~",
  X: "[[c#3,a3,e4]@7 ~@3 [c#3,a3,e4]@4 [a3,d4,f#4]@7 ~ [a3,d4,f#4]@5 ~ [d4,f#4]@4]/2", // A D
  Y: "[a3,c#4,e4]@7 ~@5 [a3,c#4,e4]@3 ~", Z: "[a3,c#4,f#4]@5 ~ [a3,c#4,f#4]@5 ~ [a3,d4,f#4]@3 ~",
  AA: "~@2 [g#3,e4,b4]@5 ~ [b3,e4,g#4]@3 ~ [g#3,e4,b4]@3 ~", // E
  AB: "[[c#3,a3,e4]@7 [e3,c#4]@7 ~ [d3,a3,f#4]@7 [e3,b3,g#4]@7 ~@3]/2", AC: "[e3,c#4,a4]@15 ~",
  AD: "[a3,f#4,d5]@7 ~ [a3,e4,c#5]@7 ~", AE: "[a3,d4,c#5]@7 ~ [a3,d4,b4]@7 ~",
  AF: "[e4,a4]@7 ~@5 a4@4, ~@2 c#5 ~, ~@5 b4@2 ~", AG: "[g#3,b3,e4]@7 ~ [e4,b4]@7 ~",
  AH: "[g3,c4,e4,c5]@4 ~@2 [d5,d6] [e5,e6], c3, c6@3 ~, ~@8 [c5,e5,g5]@7 ~", AI: "[d5,d6] [g5,g6], [d3,g3,b3]",
  AJ: "[g3 ~@31 [e3,g3,c4]@3 ~ [e3,g3,c4]@3 ~ [e4,g4,c5,e5]@4 [e5,g5,c6]@4, g6@4 g4 a#4 d5 g5 a#5 d6 g6 d6 a#5 g5 d5@2 [g5,g6]@5 f4 a4 c5 f5 a5 c6 f6 c6 a5 f5@2 [f5,f6]@8 e6@8, [d3,a#3,d4]@2 a#3@13 a#4@2 c3@2 a3@12 c5@2 ~@15, ~ g3@15 [a3,c4]@4 c4@12 ~@16, ~@3 d4@13 [a2,f3]@2 f3@14 ~@16]/3", // C G F Gm Am Dm
  AK: "[f6,a6,c7]@3 ~ [f5,a5,c6]@3 ~ [f4,a4,c5]@3 ~ [a3,c4]@3 ~, [c3,f3], [e5,e6] [d5,d6]", // F Am F5 E D
  AL: "[a3,b3]@3 ~ [b3,e4]@3 ~ [e4,a4]@3 ~ [a4,b4]@3 ~, [e2,e3]", // Asus2 E5 A5 Asus2 E
  AM: "[e2,e3,b3,e4] ~ [e2,b3,e4,b4]@3 ~ [e2,e3,b3,e4] ~ [e2,e3,b3,e4] ~ [e2,e3,b3,e4] ~ [e2,e3,b3,e4] ~ [d#2,d#3,d#4] ~", // E5 D#
  AN: "[g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~", AO: "[b3,d4,g4]@7 ~ [b3,d4,g4]@7 ~", AP: "[a3,c4,f4]@7 ~ [a3,c4,f4]@7 ~",
  AQ: "[[e3,c4,g4]@7 ~@3 [e3,c4,g4]@4 [c4,f4,a4]@7 ~ [c4,f4,a4]@5 ~ [f4,a4]@4]/2", // C F
  AR: "[c4,e4,g4]@7 ~@5 [c4,e4,g4]@3 ~", AS: "[c4,e4,a4]@5 ~ [c4,e4,a4]@5 ~ [c4,f4,a4]@3 ~",
  AT: "~@2 [b3,g4,d5]@5 ~ [d4,g4,b4]@3 ~ [b3,g4,d5]@3 ~", // G
  AU: "[[e3,c4,g4]@7 [g3,e4]@7 ~ [f3,c4,a4]@7 [g3,d4,b4]@7 ~@3]/2", AV: "[g3,e4,c5]@15 ~",
})).s("gm_piano").gain(0.54).pan(0.4)

// other · clarinet · "Track 7"
const clarinet = note(`<
  ~@12 A B A C D E F G A B A C D E H I J K L M N O P@2 ~@15 Q R S T U A B A C D E F G A B A C D E H I J K L M V W P@2
  ~@15 X Y ~@6 Z J K L M N O P@2 ~@23 AA AB AC ~@6
>`.pickRestart({
  A: "e5", B: "f#5 e5", C: "e5 d5", D: "c#5 e5", E: "c#5 b4", F: "a4 b4", G: "e4", H: "a4", I: "b4",
  J: "~@2 e5 ~@3 e5 ~@3 e5 ~@3 e5 ~", K: "~ f#4 ~ g#4 ~ a4 ~@2", L: "~@2 d5 ~@3 d5 ~@3 d5 ~@3 d5 ~",
  M: "~ d5 ~ c#5 ~ b4 ~@2", N: "~ c#5 d5 e5 ~@4", O: "~ f#4 g#4 a4 ~@4", P: "[d4@2 e4 f#4@3 d4 e4@3 ~@6]/2",
  Q: "c#5@6 b4 c#5", R: "d5@2 c#5 d5 e5@4", S: "f#5@6 e5 d5", T: "c#5@2 d5@2 e5@11 ~", U: "e5 ~",
  V: "~@2 b4 ~@3 c#5 ~@3 e5@2 ~@2 a4 ~", W: "~@2 e4 ~@3 f#4 ~@3 a4@2 b4 [c5,c#5] c#5 [c5,c#5]",
  X: "c#5@7 ~ e4@3 ~ f#4@3 ~", Y: "[e4,g4]@7 ~@9",
  Z: "a4 [b4,e5] a4 [b4,e5] a4 [b4,e5] a4 [b4,e5] a4 [b4,e5] a4 [b4,e5] a4 [b4,e5] a4 [b4,e5]", // E5
  AA: "~@4 [d4,d5] ~ [d4,d5] ~ [d4,d5]@3 ~ [d4,d5] ~ [d4,d5] ~", AB: "[e4,e5]@2 ~ c5", AC: "b4 ~",
})).s("gm_clarinet").gain(0.39).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A C A B A B A B A B A B A B A B A D A B A B A B A D A B A B A B A B A B A B A B A B A B A C A B A
  B A B A B A B A B A B A D A B A B A B A D A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A D A B A B A B
  A B ~@8 A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x ~@3 x ~@10 x", B: "x!2 ~ x", C: "x", D: "x!2 ~@2",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<[~ x]!11 ~ [~ x]!43 ~ [~ x]!64 ~@8 [~ x]!16>").gain(0.57)

// drums · clap
const clap = s("cp").struct(`<
  A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B ~@8 A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~ x", B: "~@3 x ~@4 x ~@7",
})).gain(0.71)

// drums · hihat
const hihat = s("hh").struct("<[x ~ x!2]!11 x [x ~ x!2]!43 x [x ~ x!2]!64 ~@8 [x ~ x!2]!16>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~@2]!11 ~ [~ x ~@2]!43 ~ [~ x ~@2]!64 ~@8 [~ x ~@2]!16>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~ A B ~@3 B ~ B ~ B ~@16 C B ~@5 B D B ~@6 C B ~@6 B ~@12 B ~@6 C B ~@5 B D B ~@6 C B ~@6 B@2 ~@3 B ~ B E B ~@5 B D B
  ~@6 C ~@7 C B ~@6 C B ~@6 B
>`.pickRestart({
  A: "~@13 x!3", B: "x", C: "~@12 x!4", D: "x ~@11 x!4", E: "x!2 ~@4 x ~",
})).gain(0.29)

// drums · crash · soft notes
const crash_soft = s("cr").struct(`<
  ~ A ~@25 B ~@7 B ~@7 B ~@27 B ~@7 B ~@7 B ~@23 B ~@7 B ~@7 B ~@7 B ~@8
>`.pickRestart({
  A: "~@3 x", B: "~@8 x!4 ~@4",
})).gain(0.07)

// drums · ride
const ride = s("rd").struct("<~@2 A@8 B ~@17 C@8 A@15 D C@3 ~@9 C@8 ~@8 C@16 A@8 C@8 A@8 ~@8 A@8 C@8>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!4", D: "x ~ x ~ x!3 ~",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<A@11 B A@15 C A@7 C A@19 B A@15 C A@7 C A@31 C A@8 ~@8 A@16>".pickRestart({
  A: "x ~@2 x!2 ~@3 x ~@3 x ~@2 x", B: "x", C: "x ~@2 x!2 ~@3 x ~@7",
})).gain(0.57)

// drums · congas
const congas = s("conga:18").struct("<[x ~@2 x ~@12]!11 x [x ~@2 x ~@12]!43 x [x ~@2 x ~@12]!64 ~@8 [x ~@2 x ~@12]!16>")
  .gain(2.06)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  A B A B A B A B A B A ~ A B A B A B A B A B A B A B A ~ A B A B A B A ~ A B A B A B A B A B A B A B A B A B A ~ A B A
  B A B A B A B A B A B A ~ A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A B
  A B ~@8 A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@12 x ~@2 x", B: "~@11 x ~@3 x",
})).gain(2.06)

// drums · triangle
const triangle = s("triangles:35").struct("<A@11 ~ A@15 B A@7 B A@19 ~ A@15 B A@7 B A@31 B A@8 ~@8 A@16>".pickRestart({
  A: "~@3 x ~@8 x ~@3", B: "~@3 x ~@12",
})).gain(4.35)

stack(
  bass, brass_section, string_ensemble_1, piano, clarinet, kick, snare, clap, hihat, open_hat, crash, crash_soft, ride,
// … 2 more lines

More by Boyzone