Strudelify

Israelism

Army of Lovers

KeyC♯ minorTempo128 bpm
0:00/0:00
// Israelism — Army of Lovers
// 128 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@9 A B C D E F G H ~@2 I J K@2 L A M N O P Q R@2 S T I F C D E B E U I F C@2 V B W X ~@2 I J N K L A M N O Y Q R@2 S
  T I F C D Z AA E U A@2 AB AC AD AE AF AG ~ AH AI AJ F C AK AL F E AM I F C D Z F AN AO AP AQ@2 AR
>`.pickRestart({
  A: "c#3@2 c3@2 c#3@2 c3 c#3@2 c3 c#3@2 d#3@2 e3@2", B: "c#3@2 c3@2 c#3@2 c3 c#3@2 c3 c#3@2 d#3@2 e3 ~",
  C: "f#2@2 f2 ~ f#2@2 f2 f#2@2 f2 f#2@2 g#2@2 a2@2", D: "f#2@2 f2 ~ f#2@2 f2 f#2@2 f2 f#2@2 g#2@2 a2 ~",
  E: "g#2@2 g2 ~ g#2@2 g2 g#2@2 g2 g#2@2 a#2@2 c3@2", F: "c#3@2 c3 ~ c#3@2 c3 c#3@2 c3 c#3@2 d#3@2 e3 ~",
  G: "g#2@2 g2 ~ g#2@2 g2 g#2@2 g2 g#2 ~ g#2@2 g2 ~", H: "g#3@2 f#3@2 e3@2 d#3 ~ c#3@2 c3 c#3 ~ c#3 c3 ~, g#2 ~@15",
  I: "c#3@2 c3 ~ c#3@2 c3 c#3@2 c3 c#3@2 d#3@2 e3@2", J: "c#3@2 c3@2 c#3 ~ c3 c#3@2 c3 c#3@2 d#3@2 e3@2",
  K: "c3@2 b2 ~ c3@2 b2 c3@2 b2 c3 ~ c#3@2 d#3@2", L: "c#3 ~ c3 ~ c#3@2 c3 c#3@2 c3 c#3@2 d#3@2 e3@2",
  M: "c3@2 b2@2 c3@2 b2 c3@2 b2 c3@2 c#3@2 d#3@2", N: "c3@2 b2 ~ c3@2 b2 c3@2 b2 c3@2 c#3@2 d#3@2",
  O: "b2 ~ b2@2 b2 ~ b2 b2@2 b2 b2@2 b2@2 b2@2", P: "a#2 ~ a#2 ~ a#2 ~ a#2!2 ~ a#2 a#2@2 a#2 ~ a#2@2",
  Q: "a2 ~ a2 ~ a2 ~ a2 a2@2 a2 a2@2 a2 ~ a2@2", R: "[g#2@7 ~]/2",
  S: "g#3 a3@2 f#3 g#3 e3 ~ f#3 g#3 a3 ~ f#3 g#3 e3 ~ f#3", T: "g#3 a3 ~ f#3 g#3 e3 ~ f#3 g#3@2 ~@6",
  U: "g#2 ~ f#2 ~ e2 ~ d#2 ~ c#3 ~@7", V: "g#2 ~ g2 ~ g#2@2 g2 g#2@2 g2 g#2@2 a#2@2 c3 ~",
  W: "g#2@2 g2 ~ g#2@2 g2 g#2@2 g2 g#2 ~ g2@2 g#2 ~", X: "g#2 f#2 e2 d#2 c#2@2 ~@2",
  Y: "a#2 ~ a#2 ~ a#2 ~ a#2 a#2@2 a#2 a#2@2 a#2 ~ a#2@2", Z: "g#2@2 g2 ~ g#2@2 g2 g#2@2 g2 g#2@2 a#2@2 c3 ~",
  AA: "c#3@2 c3@2 c#3 ~ c3 c#3@2 c3 c#3@2 d#3@2 e3 ~", AB: "c#3 c3 c#3 c3 d#3@2 e3@2",
  AC: "f#3@4 g#3@3 ~ a3@3 ~ a#3@3 ~", AD: "b2 ~ b2 ~ b2 ~ b2!2 ~ b2 b2@2 b2@2 b2@2",
  AE: "a#2@2 a#2 ~ a#2@2 a#2 a#2@2 a#2 a#2@2 a#2 ~ a#2!2", AF: "a2 ~ a2 ~ a2@2 a2 a2@2 a2 a2@2 a2 ~ a2@2",
  AG: "g#2@15 ~", AH: "g#3 a3 ~ f#3 g#3 e3 ~ f#3 g#3 a3 ~ f#3 g#3 e3 ~ f#3", AI: "g#3 a3 ~ f#3 g#3 e3 ~ f#3 g#3 ~@7",
  AJ: "~@2 c#3 ~ c#3@2 c#3 c#3@2 c3 c#3@2 d#3@2 e3@2", AK: "f#2@2 f2@2 f#2@2 f2 f#2@2 f2 f#2@2 g#2@2 a2@2",
  AL: "g#2 ~ g2 ~ g#2@2 g2 g#2@2 g2 g#2@2 a#2@2 c3@2", AM: "g#2@2 f#2@2 e2@2 d#2@2 c#3@5 ~@3",
  AN: "g#2@2 g2 ~ g#2@2 g2 g#2@2 g2 g#2@2 g#2 ~ g#2 ~, ~@13 g2@2 ~",
  AO: "g#2@2 f#2@2 e2@2 d#2@2 c#2 ~ d#2@2 e2@2 f#2 ~", AP: "g#2@2 g2 ~ g#2 ~ g2 g#2@2 g2 g#2@2 a#2@2 c3 ~",
  AQ: "[g#2@2 a2@2 a#2 ~ c3 ~ c#3@2 c3 ~ c#3@2 c3 c#3@2 c3 c#3@2 d#3@2 e3@2 c#3@2 c3 ~ c#3@2 ~@2]/2", AR: "c#3@9 ~@7",
})).s("gm_acoustic_bass").gain(0.31)

// bass · electric guitar muted · "BASS GTR"
const bass_2 = note(`<
  ~ A@2 B C D A D E A@2 B@2 D A D F A@3 G H@2 A@2 H@2 I J K L M N O A@2 B@2 D A D F A@2 B@2 D A D E A@3 G H@2 A@2 H@2 I
  J K L M N O A@2 B@2 D A D F A@2 P Q I J K R@2 N O A@2 B@2 D A D E A@2 B@2 D A D F D S T U
>`.pickRestart({
  A: "c#3!16", B: "f#3!16", C: "f#3!11 ~ f#3!4", D: "g#3!16", E: "g#3!8 c#3 ~@7", F: "g#3!8 c#3!8", G: "c#3!15 ~",
  H: "c3!16", I: "b2!16", J: "a#2!16", K: "a2!16", L: "g#3 a3 ~ f#3 g#3 e3@2 f#3 d#3 e3 ~ c#3 d#3 c3 ~ c#3",
  M: "g#3 a3 ~ f#3 g#3 e3@2 f#3 d#3 e3 ~ c#3 d#3 c3@2 c#3", N: "g#3 a3 ~ f#3 g#3 e3 ~ f#3 g#3 a3 ~ f#3 g#3 e3 ~ f#3",
  O: "g#3 a3 ~ f#3 g#3 e3 ~ f#3 g#3@2 ~@6", P: "c#3!8 d#3!4 e3!4", Q: "f#3!4 g#3!4 a3!4 a#3!4",
  R: "g#3 a3 ~ f#3 g#3 e3 ~ f#3 d#3 e3 ~ c#3 d#3 c3 ~ c#3", S: "g#3!2 a3!2 a#3!2 c4!2 c#4!8", T: "c#4!16",
  U: "c#4 ~@15",
})).s("gm_electric_guitar_muted").gain(0.21)

// other · accordion
const accordion = note("<~@95 A B C D E F@2 G H@2 I>".pickRestart({
  A: "b5 a5 g#5 ~ g#5 f#5 e5 ~ e5 d#5 c#5@5 ~", B: "f#5 e5", C: "d#5@6 e5@9 ~", D: "g#5 a5", E: "g#5@7 c#6@8 ~",
  F: "[g#5@19 f#5 e5@2 d#5@2 c#5@2 d#5@2 e5@2 f#5@2]/2", G: "g#5@15 ~",
  H: "[g#5@2 a5@2 a#5@2 c6@2 c#6@20 ~@2 e5 d#5]/2", I: "c#5@3 ~@5",
})).s("gm_accordion").gain(0.4)

// other · piano · "A.PIANO 1"
const piano = note("<~@27 A B C D E F G ~@26 A B C H E F G ~@7 I J K L ~ M N C O P F Q ~@20>".pickRestart({
  A: "[d#4,f#4,b4]@15 ~", B: "[c#4,f#4,a#4]@15 ~", C: "[c#4,e4,a4]@7 ~",
  D: "g#5 a5@2 ~ g#5 e5 ~ f#5 d#5 e5 ~ c#5 d#5 c5@2 c#5, ~@3 f#5@2 ~@11",
  E: "~ a4 ~@2 g#4 e4@2 f#4 d#4 e4 ~@2 d#4 c4 ~ c#4, g#4@2 ~ f#4@2 ~@6 c#4@2 ~@3",
  F: "[g#4,g#5] a4@2 [f#4,f#5] [g#4,g#5] [e4,e5] ~ [f#4,f#5] [g#4,g#5] [a4,a5] ~ [f#4,f#5] [g#4,g#5] [e4,e5] ~ [f#4,f#5], ~ a5 ~@14", // G# F# G# E F# G# A F# …
  G: "[g#4,g#5] a4@2 [f#4,f#5] [g#4,g#5] [e4,e5] ~ [f#4,f#5] [g#4,g#5]@3 ~@5, ~ a5 ~@14", // G# F# G# E F# G#
  H: "g#5 a5 ~@2 g#5 e5 ~ f#5 d#5 e5 ~ c#5 d#5 c5@2 c#5, ~@3 f#5@2 ~@11", I: "~@13 [e3,g#3] c#4 [e4,g#4], ~@6 c#3 ~",
  J: "c#5 [e4,g#4] c#5 [e5,g#5] c#6 [c#5,e5] g#5 c#6 c#7 ~@4 [e3,g#3] c#4 [e4,g#4], ~@7 e6@2 ~@3 c#3@2 ~@2", // E C#m E
  K: "c#5 [e4,g#4] c#5 [e5,g#5] c#6 [e5,g#5] c#6 ~ c#7 ~@3 c#3 [e3,g#3] c#4 [e4,g#4], ~@7 [e6,g#6]@2 ~@7", // E
  L: "c#5 [e4,g#4] c#5 [e5,g#5] c#6@3 ~@9", M: "[d#4,f#4,b4]@7 ~, a4 ~@15", N: "[c#4,f#4,a#4]@7 ~",
  O: "g#5 a5 ~ f#5 g#5 e5 ~ f#5 d#5 e5 ~@3 c5 ~ c#5, ~@11 c#5@2 ~@3, ~@6 d#5 ~",
  P: "g#5 a5@2 f#5 g#5 e5 ~ f#5 d#5 e5 ~ c#5 d#5 c5 ~ c#5",
  Q: "[g#4,g#5] [a4,a5] ~ [f#4,f#5] [g#4,g#5] [e4,e5] ~ [f#4,f#5] [g#4,g#5]@3 ~@5", // G# A F# G# E F# G#
})).s("gm_piano").gain(0.39)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@9 A B C D E F G@2 ~@2 H@2 I@2 J@2 K@2 L M N O P Q R A B C S T F U@2 A B C S V F W@2 ~@2 H@2 I@2 J@2 X@2 Y M N O Z AA
  AB A B C S V F AC AD AE@3 AF AG AH N AI P AJ AA A B C AK V F AL@2 A B C D V F AM@2 AN@4
>`.pickRestart({
  A: "c#6 b5", B: "a5 g#5", C: "f#5 e5", D: "d#5@2 e5 f#5", E: "g#5@7 ~ a5@8", F: "g#5 c#6",
  G: "[g#5@18 f#5@2 e5@2 d#5@2 c#5@5 ~@3]/2", H: "[c#6@13 e6 d#6 c#6]/2", I: "[d#6@13 f#6 e6 d#6]/2",
  J: "[e6@13 g#6 f#6 e6]/2", K: "[g#6@15 ~]/2", L: "~ b6@15, b5", M: "[a#5,a#6]", N: "[a5,a6]",
  O: "[g#5,g#6]@3 ~ [g#5,g#6]@4 ~@8", P: "[g#5,g#6] ~ [g#5,g#6] ~@5", Q: "g#6 ~ [g#5,g#6] ~@5, g#5 ~@15",
  R: "g#6@2 ~@2 [g#5,g#6] ~@11, g#5 ~@15", S: "d#5@8 e5@7 ~", T: "g#5@8 a5@7 ~",
  U: "[g#5@18 f#5@2 e5@2 d#5@2 c#5@3 ~@5]/2", V: "g#5 a5", W: "[g#5@9 f#5 e5 d#5 c#5 ~@3]/2", X: "g#6/2", Y: "[b5,b6]",
  Z: "[g#5,g#6]@2 ~@2 [g#5,g#6]@3 ~@9", AA: "[g#5,g#6] ~@3 [g#5,g#6]@2 ~@10", AB: "[g#5,g#6] ~@3 [g#5,g#6] ~@11",
  AC: "g#5", AD: "g#5 f#5 e5 d#5 c#5@3 ~", AE: "[[c#4,g#4,c#5]@10 [d#4,d#5] [e4,e5]]/3",
  AF: "[f#4,f#5]@4 [g#4,g#5]@4 [a4,a5]@4 [a#4,a#5]@3 ~", AG: "b4@3 b6@5, b5", AH: "[a#5,a#6]@15 ~",
  AI: "[g#5,g#6]@5 ~@11", AJ: "[g#5,g#6] ~ g#5 ~@5, ~@4 g#6 ~@11", AK: "d#5 e5", AL: "[g#5@9 f#5 e5 d#5 c#5@2 ~@2]/2",
  AM: "[g#5@9 f#5 e5 d#5 c#5 d#5 e5 f#5]/2",
  AN: "[~@16 g#4@2 [a4,a5]@2 [a#4,a#5] ~ [c5,c6]@2 ~@16 e5@10 ~@14, g#5@9 ~@3 [c#5,c#6]@13 ~@7]/4", // A A# C C#
})).s("gm_string_ensemble_1").gain(0.24)

// other · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@17 A B C ~@12 D E ~@16 A B C ~@12 D F ~@10 G H I ~@4 J F ~@20>".pickRestart({
  A: "e4 d#4 e4 d#4 c#4 d#4 e4 d#4 e4 d#4 e4 d#4 e4 d#4 c#4 d#4",
  B: "e4 d#4 e4 d#4 c#4 d#4 e4 d#4 e4 d#4 e4 f#4 g#4 a4 b4 c5", C: "c#5 ~@15",
  D: "g#4 a4 ~ f#4 g#4 e4 ~ f#4 g#4 a4 ~ f#4 g#4 e4 ~ f#4", E: "g#4 a4 ~ f#4 g#4 e4 ~ f#4 g#4@2 ~@6",
  F: "g#4 a4 ~ f#4 g#4 e4 ~ f#4 g#4 ~@7", G: "~@2 d#3 e3", H: "f#3 g#3 a3 a#3", I: "b3 ~@3",
  J: "g#4 a4@2 f#4 g#4 ~ e4 f#4 g#4 ~@2 f#4 g#4 ~ e4 f#4, ~@5 a4 ~@2",
})).s("gm_drawbar_organ").gain(0.19)

// chords · french horn · "FR.HORN"
const french_horn = note(`<
  ~ A@6 B@2 C@2 D@2 E F G@2 ~@2 H@4 I@7 J ~ K ~ L@4 M N@3 O@2 P@2 E F Q@2 ~@2 R@4 S@4 T@3 U ~ V ~ C@2 P@2 E W X@2 Y@3 Z
  AA AB@2 AC@2 AD@2 AE@4 AF F AG@2 AH@2 P@2 AI AJ AK@2 AL@4
>`.pickRestart({
  A: "[g#4@15 ~ a4@8 ~@40 c4@16 ~ [c#4,e4]@14 ~, c#4@21 ~@11, e4@32 f#4@49 ~@15, ~@32 a4@31 ~@33, ~@56 d#4@25 ~@15]/6", // C#m
  B: "[[c4,d#4,f#4,g#4]@23 ~@9]/2", C: "[g#4@16 a4@7 ~ g#4@7 ~, [c#4,e4]@31 ~]/2",
  D: "[~@22 d#4@9 ~, [c#4,f#4,a4]@31 ~]/2", E: "g#4@7 ~ a4@8, [c4,d#4,f#4]@15 ~", F: "[c#4,e4,g#4]@15 ~",
  G: "[[c4,d#4]@22 ~@2 [c#4,e4]@5 ~@3, g#4@29 ~@3, f#4@3 ~]/2", H: "[[c#4,e5]@32 [c4,d#5]@31 ~, g#4@63 ~]/4",
  I: "[[c#4,e5]@2 c4@2 b3 a#3 a3, g#4@32 f#4@16 e4@7 ~, ~@2 d#5@3 c#5@2]/7", J: "[g#3,d#4,g#4,c5] ~@3",
  K: "[g#2,g#3,g#4]@3 ~ [g#2,g#4]@2 ~@10, ~@4 g#3 ~@11", // G#
  L: "[g#4@16 a4@8 g#4@8 ~@17 d#4@14 ~, e4@9 ~@7, c#4@31 ~ [c#4,a4]@31 ~]/4", M: "g#4@7 ~ a4@7 ~, f#4, [c4,d#4]@7 ~",
  N: "[[c#4,e4]@15 ~ [c4,d#4,f#4]@23 ~ [c#4,e4]@4 ~@4, g#4@15 ~]/3", O: "[g#4@16 a4@8 g#4@7 ~, [c#4,e4]@31 ~]/2",
  P: "[~@16 d#4@15 ~, [c#4,f#4,a4]@31 ~]/2", Q: "[[c4,d#4,f#4]@11 ~ c#4@2 ~@2, g#4@29 ~@3]/2",
  R: "[[c#4,e5] [c4,d#5], g#4@63 ~]/4", S: "[[c#4,e5]@31 ~ [c4,d#5]@31 ~, g#4@63 ~]/4",
  T: "[[b3,d#5]@16 a#3@15 ~ [a3,e4]@15 ~, f#4@31 ~@17, ~ c#5@2]/3", U: "[g#3,d#4,g#4] ~",
  V: "[g#2,g#3,g#4] ~ [g#2,g#3,g#4]@2 ~@4", W: "[c#4,e4]@7 ~", X: "[[c4,d#4,f#4]@23 ~ [c#4,e4]@6 ~@2, g#4@15 ~]/2",
  Y: "[[f#3,a3,c#4,e4]@39 ~ [d#3,d#4]@4 [e3,e4]@4]/3", Z: "[f#3,f#4]@4 [g#3,g#4]@4 [a3,a4]@4 [a#3,a#4]@3 ~",
  AA: "[b3,d#4,b4]", AB: "[[f#4,a#4]@16 [e4,a4]@15 ~, c#4@31 ~]/2", AC: "[g#3@31 ~, g#4@17 ~@15]/2",
  AD: "[g#3@25 ~@7, g#4@17 ~@15]/2", AE: "[g#4@16 a4@8 g#4@8 ~@16 d#4@15 ~, c#4@63 ~, e4@32 [f#4,a4]@31 ~]/4",
  AF: "~@4 f#4@4 a4@7 ~, [c4,d#4]@15 ~, g#4 ~", AG: "[~@2 f#4@9 ~ [c#4,e4,g#4]@2 ~@2, [c4,d#4,g#4]@23 ~@9]/2",
  AH: "[g#4@2 a4 g#4, [c#4,e4]]/2", AI: "[f#4,g#4]@5 a4@3, [c4,d#4]@15 ~", AJ: "[c#4,e4]@15 ~",
  AK: "[[c4,d#4,f#4,g#4]@22 ~@2 [c#4,e4,g#4]@7 ~]/2", AL: "[[c4,d#4,f#4,g#4]@22 ~@2 [c#4,e4,g#4,c#5]@31 ~@9]/4",
})).s("gm_french_horn").gain(0.18)

// chords · french horn · "FR.HORN" · soft notes
const french_horn_soft = note("<~@2 A ~@2 B C ~ D ~@27 E@2 ~@11 F ~@13 G ~@8 C ~@2 H@3 ~@21 C ~@6>".pickRestart({
  A: "~ g#4", B: "g#4@7 ~ a4@8", C: "g#4@15 ~", D: "~@2 [c#4,e4,g#4] ~", E: "[f#4@31 ~]/2", F: "~@2 e4 ~", G: "c5 ~",
  H: "[g#4@13 ~@3]/3",
})).s("gm_french_horn").gain(0.09)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@9 A B C D E A F G ~@17 A B C D E A F G A B C D E A F H ~@17 A B C D E A F G ~@11 A B C D E A F I A B C J E A F K L M
  N O
>`.pickRestart({
  A: "[c#5,e5,g#5] ~@3 [c#5,e5,g#5] ~@2 [c#5,e5,g#5] ~ [c#5,e5,g#5]!2 ~ [c#5,e5,g#5] ~@3", // C#m
  B: "[c#5,e5,a5] ~@3 [c#5,e5,a5] ~@2 [c#5,e5,g#5] ~ [c#5,e5,g#5]!2 ~ [c#5,e5,g#5] ~@3", // A C#m
  C: "[c#5,f#5,a5] ~@3 [c#5,f#5,a5] ~@2 [c#5,f#5,a5] ~ [c#5,f#5,a5]!2 ~ [c#5,f#5,a5] ~@3", // F#m
  D: "[c#5,d#5,f#5,a5] ~@3 [c#5,d#5,f#5,a5] ~@2 [c#5,d#5,f#5,a5] ~ [c#5,d#5,f#5,a5]!2 ~ [c#5,d#5,f#5,a5] ~@3", // D#m7b5
  E: "[c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@2 [c5,d#5,f#5,a5] ~ [c5,d#5,f#5,a5]!2 ~ [c5,d#5,f#5,a5] ~@3", // G#7 Cdim
  F: "[c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@3", // G#7
  G: "g#5 ~ f#5 ~ e5 ~ d#5 ~ c#5 ~@7", H: "g#5 ~ f#5 ~ e5 ~ d#5 ~ c#5@2 ~@6",
  I: "[c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@3 [c#5,e5,g#5] ~@7", // G#7 C#m
  J: "[c#5,d#5,f#5,a5] ~ d#5 ~ [c#5,d#5,f#5,a5] ~@2 [c#5,d#5,f#5,a5] ~ [c#5,d#5,f#5,a5]!2 ~ [c#5,d#5,f#5,a5] ~@3", // D#m7b5
  K: "[c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@3 [c#5,e5,g#5] ~ e5 ~ [c#5,e5,g#5] ~ [c#5,e5,g#5] ~", // G#7 C#m
  L: "[c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@2 [c5,d#5,f#5,g#5] ~ [d#5,f#5,g#5] [c5,d#5,f#5,g#5] ~ [c5,d#5,f#5,g#5] ~@3", // G#7
  M: "[c5,d#5,f#5,g#5] ~@3 [c5,d#5,f#5,g#5] ~@3 [c#5,e5,g#5] ~@3 [c#5,e5,g#5] ~@2 [c#5,e5,g#5]", // G#7 C#m
  N: "~ [c#5,e5,g#5]!2 ~ [c#5,e5,g#5] ~@3 [c#5,e5,g#5] ~@3 [c#5,e5,g#5] ~ [c#5,e5,g#5] ~", O: "[c#5,e5,g#5] ~@15",
})).s("gm_pizzicato_strings").gain(0.28)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@7 B A C A@7 D A@6 E A@7 F A@7 G A C A@7 D A@6 E A@7 G A@3 H A@6 H A@7 H ~@4 A@3 I A J K ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@2 x!6", C: "~@4 x ~@2 x!2 ~ x ~ x!4", D: "~@4 x ~@2 x ~@2 x ~ x!4", E: "~ x ~@2",
  F: "~@4 x ~ x!3 ~@3 x!4", G: "~@4 x ~ x!3 ~ x ~ x!4", H: "~@4 x ~ x!3 ~@7", I: "~@4 x ~@5 x ~ x!4",
  J: "~@4 x ~ x!2 ~@4 x ~@3", K: "~@4 x ~ x!2 ~ x!7",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A@4 B A B@2 A@2 B A B A@2 B A B A B A B@3 C B A@2 B A B A@2 B A@2 B@2 A@2 C B@3 A B A B A@2 B@2 A@2 B A B C B A B
  A B@2 A B@4 D B@6 C B A@2 B@2 A@2 C ~@4 B@2 A E A B A F
>`.pickRestart({
  A: "x ~ x ~ x ~ x!5 ~ x ~ x ~", B: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", C: "x ~ x ~ x ~ x!3 ~@7", D: "x!5 ~@3",
  E: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", F: "x",
})).gain(0.48)

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

stack(
  bass, bass_2, accordion, piano, string_ensemble_1, drawbar_organ, french_horn, french_horn_soft, pizzicato_strings,
  kick, snare, hihat, crash
)