Strudelify

Eye of the Tiger (From "Rocky II")

Survivor

KeyC minorTempo119 bpm
0:00/0:00
// Eye of the Tiger (From "Rocky II") — Survivor
// 119 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/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 · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C@2 A D E@2 F@2 G H F@2 I J F K L M N K N O P Q R S T U V W X Y Z AA AB AC AB AD AE AF F K AG AH F AI F@3 AJ
  AK AL AM AC AB AN AE AO L AP L AQ N AR AS AT M@3 Y Z AU AV AC Z AN AE AW AF F@2 AX AY AZ BA BB BC AZ BD BC@2 AZ AW BE
  BF BG@2
>`.pickRestart({
  A: "c2@2 ~@6 c2@2 ~ bb1@2 ~ c2@2", B: "~@8 c2@2 ~ bb1@2 ~ c2@2", C: "[~@8 c2@2 ~ g1@2 ~ ab1@14 ~@4]/2",
  D: "~@10 c2@2 ~ bb1@2 ~", E: "[c2@2 ~@6 c2@2 ~ g1@2 ~ ab1@11 ~@7]/2", F: "c2 ~ c2 ~ c2 ~ c2 ~",
  G: "c2@2 ~@2 c2@2 ~@2 c2@2 ~ f1@3 g1@2", H: "ab1@3 ~ ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~",
  I: "c2@2 ~@2 c2@2 ~@2 c2 ~@2 f1@3 g1@2", J: "ab1@3 ~ ab1@2 ~@2 ab1@3 ~ ab1@2 ~@2",
  K: "c2@2 ~@2 c2@2 ~@2 c2@2 g1 bb1@2 g1 b1@2", L: "c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@3 ~",
  M: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", N: "c2@2 ~@2 c2@3 ~ c2@2 ~@2 c2@3 ~", O: "c2@3 ~ c2@2 ~@2 c2@2 ~@2 c2@3 ~",
  P: "c2@2 ~@2 c2@3 ~ c2@3 ~ c2@3 ~", Q: "c2@2 ~@2 c2@2 ~@2 c2@2 ~ g1@3 bb1@2", R: "c2@3 ~ c2@3 ~ c2@3 ~ c2@4",
  S: "ab1@2 ~@2 ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~", T: "bb1@3 ~ bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~",
  U: "c2@3 ~ c2@2 ~@2 c2@2 g1 bb1@2 g1@3", V: "c2@2 ~@2 c2@2 ~@2 c2@3 ~ c2@4", W: "ab1 ~ ab1 ~ ab1 ~ ab1@2",
  X: "bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~", Y: "c2@3 ~ c2@3 ~ c2 ~ bb1@3 g1@2 ~", Z: "f1@3 ~ f1@2 ~@2 f1@3 ~ f1@3 ~",
  AA: "bb1@3 ~ bb1@3 ~ bb1 ~ bb1@3 g1@2 ~", AB: "f1@3 ~ f1@3 ~ f1@2 ~@2 f1@3 ~", AC: "g1@3 ~ bb1@3 ~ bb1 ~ bb1@3 g1@3",
  AD: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@2 ~@2", AE: "f1@3 eb1@2 f1@2 ~ g1@3 f1@2 g1@2 ~", AF: "ab1@7 ~ ab1 ~@7",
  AG: "c2@3 ~ c2@3 ~ c2@2 ~@2 c2@3 ~", AH: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 ~@2",
  AI: "c2@2 ~@2 c2@3 ~ g2@2 bb2@2 g2 f2 eb2@2", AJ: "c2@2 ~@2 c2@2 ~@2 c2 ~ bb1@3 g1@2 ~",
  AK: "f1@3 ~ f1@2 ~@2 f1@2 ~@2 f1@3 ~", AL: "bb1@2 ~@2 bb1@3 ~ bb1 ~ bb1@3 g1@3",
  AM: "f1@3 ~ f1@3 ~ f1@2 ~@2 f1@2 ~@2", AN: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~", AO: "ab1 ~",
  AP: "c2@2 ~@2 c2@3 ~ c2@2 ~@2 c2@2 ~@2", AQ: "c2@2 ~@2 c2@2 ~@2 c2@2 ~ g1 bb1@2 g1@2",
  AR: "c2@3 ~ c2@3 ~ c2@2 ~@2 c2@2 ~@2", AS: "c2@3 ~ c2@2 ~@2 c2@2 ~@2 c2@2 ~@2",
  AT: "c2@2 ~@2 c2@2 ~@2 c2@3 g1 bb1@2 b1@2", AU: "bb1@3 ~ bb1@3 ~ bb1 ~ bb1@3 g1@3", AV: "f1 ~ f1 ~ f1 ~ f1 ~",
  AW: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~", AX: "c2@2 ~@2 c2@2 ~@2 c2 ~@3 c2 ~@3", AY: "c2 ~@3 c2 ~@3 c2 ~@3 c2 ~@3",
  AZ: "c2 ~ c2 ~ c2 f1@2 g1", BA: "ab1 ~ ab1 ~ ab1 ~ ab1 ~", BB: "c2@3 ~ c2@2 bb1@2 c2@2 ~@2 c2@2 ~@2",
  BC: "c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2 ~ bb1@2", BD: "ab1@2 ~@2 ab1@3 ~ ab1@2 ~@2 ab1@2 ~@2", BE: "c2 ~ c2 ~ c2 ~ c2 bb1",
  BF: "c2@3 ~ c2@3 ~ c2@2 ~@2 c2 ~ bb1@2", BG: "[c2@2 ~@2 c2@2 ~@2 c2 ~@2 g1@2 ~ ab1@15 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@4 A B C@2 D E F@2 G H I@2 J B K@2 ~@2 L M N O L P Q R@2 M S T R U S V W X W Y W Z AA AB AC ~ L P Q AD O U S AE AF X
  W Y AF AG AH AI ~@4 O P N AJ AD U S AK AF AL W Y AF AG AH AF AM ~@2 A B C@2 A B AN@2 AO H C@2 AP H AQ@2
>`.pickRestart({
  A: "[c4,eb4,g4] ~@7 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~", // Cm Bb Cm
  B: "~@8 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~", C: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@15 ~@3]/2",
  D: "[c4,g4]@2 ~@6 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~, eb4 ~@15", E: "~@10 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2",
  F: "[[c4,eb4,g4] ~@7 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@15 ~@3]/2", // Cm G5 Ab
  G: "[c4,eb4,g4]@2 ~@6 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,g4]@2, ~@14 eb4 ~", // Cm Bb C5
  H: "~@8 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4]@2", // Cm Bb Cm
  I: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [c4,eb4]@15 ~@3, ~@14 ab3@17 ~]/2", // Cm G5 Cm
  J: "[c4,eb4] ~@7 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~, g4 ~@7", // Cm Bb Cm
  K: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [c4,eb4]@17 ~, ~@14 ab3@15 ~@3]/2", L: "[c4,eb4,g4]@15 ~", M: "[ab3,c4,eb4]@7 ~",
  N: "[bb3,f4]@15 ~, d4@13 ~@3", O: "[c4,eb4,g4]@7 ~", P: "[ab3,c4,eb4]@15 ~", Q: "[bb3,d4,f4]@7 ~",
  R: "[c4,eb4,g4]@13 ~@3", S: "[bb3,d4,f4]@13 ~@3", T: "[c4,eb4,g4]@13 ~@3, db4 ~@15", U: "[ab3,c4,eb4]@13 ~@3",
  V: "[c4,eb4,g4]@8 ~@2 [bb3,d4,f4]@2 ~ [bb3,eb4,g4]@2 ~", W: "[c4,eb4,ab4]@13 ~@3",
  X: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@4 ~ [bb3,eb4,g4]@2 ~", // Bbsus4 Bb Eb
  Y: "[bb3,eb4,g4]@2 ~@2 [bb3,d4,f4]@5 ~ [bb3,d4,f4]@2 ~ [bb3,eb4,g4]@2 ~", Z: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@6 ~@2",
  AA: "[c4,eb4,ab4]@5 ~@3 [eb4,g4,bb4]@5 ~@3", AB: "[c4,eb4,c5]@9 ~@7, ab4 ~@15", AC: "[c4,eb4,g4]",
  AD: "[c4,eb4,g4]@3 ~", AE: "[c4,eb4,g4]@9 ~ [bb3,d4,f4]@2 ~ [bb3,eb4,g4]@2 ~", AF: "[c4,eb4,ab4]@7 ~",
  AG: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@5 ~@3", AH: "[c4,eb4,ab4]@3 ~ [bb3,eb4,g4]@3 ~", AI: "[c4,eb4,ab4]@9 ~@7",
  AJ: "[c4,eb4,g4]@9 ~ [ab3,c4,eb4] [ab3,c4,eb4]@2 [f3,bb3,d4]@3", // Cm Ab Bb
  AK: "[eb4,g4] ~@9 [bb3,d4,f4]@3 [bb3,eb4,g4]@2 ~, c4 ~", // Eb Bb Eb
  AL: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@3 [bb3,eb4,g4]@2 ~", AM: "[ab3,c4,eb4]@3 ~@13",
  AN: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@17 ~]/2", // Cm G5 Ab
  AO: "[c4,eb4,g4] ~@7 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4]@2", // Cm Bb Cm
  AP: "[c4,eb4,g4] ~@7 [c4,eb4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~, ~@4 g4 ~@3", // Cm Bb Cm
  AQ: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@16 ~@2]/2", // Cm G5 Ab
})).s("gm_piano").gain(0.56).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@88 A@2 B@2 C@2 D@2 E@2 F@2 G@3>".pickRestart({
  A: "[~@14 [g5,c6,eb6]@17 ~]/2", B: "[ab6@15 g5@6 ~@11, [c6,eb6]@11 ~@5]/2", C: "[~@7 [g5,c6,eb6]@9]/2",
  D: "[ab6@14 g5@9 ~@9, [c6,eb6]@23 ~@9]/2", E: "[~@10 [g5,c6,eb6]@21 ~]/2",
  F: "[ab6@14 ~ g5@7 ~@10, [c6,eb6]@11 ~@5]/2", G: "[~@10 g5@19 ~ ab5@5 ~@13, ~@10 [c6,eb6]@25 ~@13]/3",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.2)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@4 A B C@2 A D E@2 F@4 G@4 H ~@17 I J K L M N O P ~@2 Q@2 R S Q@2 R T U V W X Y Z AA P ~@12 AB AC AD AE AF AG AA AH
  ~@3 A AI AJ@2 AK@4 AL@4 AM@4
>`.pickRestart({
  A: "[g3,c4]@2 ~@6 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@2", B: "~@8 [g3,c4]@2 ~ [f3,bb3] ~@2 [g3,c4]@2",
  C: "[~@8 [g3,c4]@2 ~ [d3,g3]@2 ~ [eb3,ab3]@12 ~@6]/2", D: "~@10 [g3,c4]@2 ~ [f3,bb3] ~@2",
  E: "[[g3,c4]@3 ~@5 [g3,c4]@2 ~ [d3,g3] ~@2 [eb3,ab3]@11 ~@7]/2", // C5 G5 Ab5
  F: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@7 ~@3 [eb4,g4] ~@2 [b3,d4]@2 ~ [c4,eb4]@15 ~@3]/4", // Eb Dm Eb Dm Eb Bm Cm
  G: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@6 ~@4 [eb4,g4]@2 ~ [b3,d4]@2 ~ [c4,eb4]@14 ~@2 [g3,c4]!2]/4", // Eb Dm Eb Dm Eb Bm Cm C5
  H: "[g3,c4] ~@3", I: "[c3,f3]@9 ~ f3@4 c3@2, ~@5 c3 ~@2", J: "[bb3,eb4,f4]@4 [bb3,d4,f4]@3 ~",
  K: "[c3,f3]@10 [c3,f3]@4 c3 ~, db4 ~@15", L: "[eb3,bb3]@3 ~ [f3,bb3]@11 ~", M: "[c3,f3]@5 [c3,f3]@2 c3",
  N: "[bb3,eb4,f4]@3 ~ [d4,f4]@8 ~ g4@2 ~, ~@2 bb3@3 ~@3", O: "ab4@3 g4@2 ~ ab4@2 bb4@3 ab4@2 bb4@2 ~", P: "c5@9 ~@7",
  Q: "g4/2", R: "f4", S: "eb4@15 ~", T: "eb4@3 ~", U: "[c3,f3] ~@9 f3@4 c3@2, ~@10 c3@3 ~@3",
  V: "[bb3,eb4,f4] [bb3,d4], ~@4 f4@3 ~", W: "[c3,f3]@15 ~", X: "[eb3,bb3]@3 ~ [f3,bb3]@12",
  Y: "f3@3 ~ [c3,f3]@5 ~ [c3,f3]@3 ~ [c3,f3]@2, c3 ~@15", Z: "[bb3,eb4,f4]@8 [bb3,d4]@4 ~@2 g4 ~, ~@4 f4@3 ~",
  AA: "ab4@3 g4@3 ab4@2 bb4@3 ab4@3 bb4@2", AB: "[c3,f3]@9 ~ [c3,f3]@3 ~ [c3,f3] ~",
  AC: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@7 ~", AD: "[c3,f3]@9 ~ [c3,f3]@6", AE: "[eb3,bb3] [f3,bb3]@3",
  AF: "[c3,f3]@9 ~ [c3,f3]@3 ~ [c3,f3]@2", AG: "[bb3,eb4,f4]@7 ~ [d4,f4]@7 ~, ~@2 bb3 ~", AH: "c5",
  AI: "~@8 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@2", AJ: "[~@8 [g3,c4]@2 ~ [d3,g3]@2 ~ [eb3,ab3]@14 ~@4]/2",
  AK: "[[g3,c4]@2 ~@6 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@5 ~@5 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@5 ~@5 [g3,c4]@2 ~ [d3,g3]@2 ~ [eb3,ab3]@14 ~@4]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
  AL: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [b3,d4]@2 ~ [c4,eb4]@15 ~@3]/4", // Eb Dm Eb Dm Eb Bm Cm
  AM: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@4 ~@6 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@6 ~@4 [eb4,g4]@2 ~ [g3,d4]@2 ~ [ab3,eb4]@15 ~@3]/4", // Eb Dm Eb Dm Eb G5 Ab5
})).s("gm_overdriven_guitar").gain(0.64).pan(0.9)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@4 A B C@2 A D E@2 F@4 G@4 H ~@66 I J@3 A B K@2 A J@3 L@4>".pickRestart({
  A: "[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@2", B: "~@8 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@2",
  C: "[~@8 [c3,g3] ~@2 [g2,d3] ~@2 [ab2,eb3]@14 ~@4]/2", D: "~@10 [c3,g3] ~@2 [bb2,f3] ~@2",
  E: "[[c3,g3]@2 ~@6 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/2", // C5 G5 Ab5
  F: "[[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@7 ~@3 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3] ~@2 [g2,d3] ~@2 [ab2,eb3]@15 ~@3]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
  G: "[[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@7 ~@3 [c3,g3]@2 ~ [bb2,f3] ~@2 [c3,g3]@6 ~@4 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@18]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
  H: "[c3,g3]@3 ~@13", I: "[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@3 [c3,g3]@2",
  J: "[~@8 [c3,g3]@2 ~ [bb2,f3]@3 [c3,g3]@4 ~@6 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/3", // C5 Bb5 C5 G5 Ab5
  K: "[~@8 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/2", // C5 G5 Ab5
  L: "[[c3,g3]@2 ~@6 [c3,g3] ~@2 [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3] ~@2 [g2,d3] ~@2 [ab2,eb3]@15 ~@3]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
})).s("gm_distortion_guitar").gain(0.64).pan(0.2)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note("<~@14 A ~@2 B ~@30 C@2 D E F@2 D E ~@45 G ~>".pickRestart({
  A: "~@11 eb3 ~@4", B: "~@14 bb2 ~", C: "eb4/2", D: "d4", E: "c4@15 ~", F: "[eb4@31 ~]/2", G: "~@8 bb2 ~@2 eb3 ~@4",
})).s("gm_distortion_guitar").gain(0.24).pan(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E C F G C@2 H I J C@3 J C H K H L M L@2 N L@2 M O L@4 C M P Q ~@8 M O M@2 L R M R M S ~@8 R L@2 G M@3 L M@3 T
  ~@9 O C O C L@2 M@2 L@2 M U L@2 M L V ~
>`.pickRestart({
  A: "c3!6 ~@2 c3!7 ~", B: "c3!7 ~ c3 ~ c3!6", C: "c3!16", D: "c3 ~ c3!5 ~ c3!8", E: "c3!15 ~", F: "c3!3 ~ c3!12",
  G: "c3 ~ c3!14", H: "c3!13 ~ c3!2", I: "c3 ~ c3 ~ c3 ~ c3 ~ c3!8", J: "c3!5 ~ c3!10", K: "c3 ~ c3!8 ~ c3!5",
  L: "c3 ~ c3!3 ~ c3!3 ~ c3!6", M: "c3 ~ c3!3 ~ c3!3 ~ c3!3 ~ c3!2", N: "c3 ~ c3!7 ~ c3!6", O: "c3 ~ c3!3 ~ c3!10",
  P: "c3!9 ~ c3!3 ~ c3!2", Q: "c3 ~ c3!3 ~ c3!3 ~@7", R: "c3 ~ c3!3 ~ c3!3 ~ c3!4 ~ c3",
  S: "c3 ~ c3!3 ~ c3!3 ~ c3!4 ~@2", T: "c3 ~ c3!3 ~ c3!3 ~ c3!2 ~@4", U: "c3 ~ c3!3 ~ c3!7 ~ c3!2", V: "c3 ~ c3!3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.6)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  A B ~ C D ~ E F ~@2 G H I ~@3 I ~ G J G K L M N O P@2 L I M@4 ~ K Q ~@9 G ~@5 G R ~@33 K ~ P N G ~@2 P S T P ~ G F ~@2
>`.pickRestart({
  A: "~@6 c3!2 ~@7 c3", B: "~@7 c3 ~ c3 ~@6", C: "~ c3 ~@5 c3 ~@8", D: "~@15 c3", E: "~@3 c3 ~@12", F: "~ c3 ~@14",
  G: "~@13 c3 ~@2", H: "~ c3 ~ c3 ~ c3 ~ c3 ~@8", I: "~@5 c3 ~@10", J: "~ c3 ~@8 c3 ~@5", K: "~ c3 ~@3 c3 ~@10",
  L: "~ c3 ~@3 c3 ~@3 c3 ~@3 c3 ~@2", M: "~ c3 ~@3 c3 ~@3 c3 ~@6", N: "~@9 c3 ~@6", O: "~ c3 ~@7 c3 ~@6",
  P: "~@5 c3 ~@3 c3 ~@6", Q: "~@9 c3 ~@3 c3 ~@2", R: "~@14 c3 ~", S: "~@5 c3 ~@3 c3 ~@3 c3 ~@2", T: "~ c3 ~@11 c3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.16).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 A B@2 ~ A C A ~ D@7 E D@25 F D@17 F D@20 F D@16 G ~>".pickRestart({
  A: "x ~@7 x ~@2 x ~@2 x ~", B: "~@8 x ~@2 x ~@2 x ~", C: "~@10 x ~@2 x ~@2", D: "x!4", E: "x ~@3 x ~@3 x ~@2 x ~@4",
  F: "x!3 ~", G: "x ~@3 x ~@3 x ~@2 x ~@2 x ~",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@12 A@17 B A@15 C A@17 C A@20 C A@16 D E>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!2 ~@2", C: "x!2 ~ x ~@4 x ~@7", D: "~ x ~@2", E: "~@11 x!2 ~@3",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@29 A ~@15 B ~@17 B ~@20 B ~@18>".pickRestart({
  A: "~@7 x", B: "~@7 x ~@8",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@12 A@17 B A@15 C ~ D A@15 C ~@2 A@18 C A@16 E ~>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x", D: "~@7 x", E: "x!3 ~@5",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 A ~@15 B ~@17 B ~@20 B ~@18>".pickRestart({
  A: "~@13 x ~@2", B: "~@5 x!2 ~@9",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@29 A ~@15 B ~@17 B ~@20 B ~@18>".pickRestart({
  A: "~@3 x", B: "~ x ~@2",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@4 A B@2 ~ A C A ~@27 D ~@17 D ~@19 D ~@24 B ~>".pickRestart({
  A: "x ~@7 x ~@2 x ~@2 x ~", B: "~@8 x ~@2 x ~@2 x ~", C: "~@10 x ~@2 x ~@2", D: "x",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~@12 [~ x ~@2]!8 ~@67 [~ x ~@2]!15 ~>").gain(0.5)

stack(
  bass, piano, string_ensemble_1, overdriven_guitar, distortion_guitar, distortion_guitar_soft, electric_guitar_muted,
  electric_guitar_muted_2, kick, snare, low_tom, hihat, mid_tom, high_tom, crash, tambourine
)

More by Survivor