Strudelify

Goin' Out of My Head

Sinatra

KeyB♭ majorTempo84 bpm
0:00/0:00
// Goin' Out of My Head — Sinatra
// 84 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@12 A@3 B C@2 D@2 E F ~@3 G H I J K L M ~@10 N O P Q R S T U ~@9>".pickRestart({
  A: "[~@2 c4@2 db4 [ab3,c4,f4], f3@5 ~]/3", B: "[bb3,db4,gb4]@2 [c4,eb4,ab4] [db4,gb4,bb4]",
  C: "[[d4,f4]@16 [eb4,g4,bb4]@15 ~, c5]/2", D: "[[f4,a4,d5] [g4,c5,eb5], bb4]/2", E: "[a4,bb4,d5,f5]",
  F: "[g4,bb4,c5,eb5]@15 ~", G: "[bb4,f5,bb5]", H: "[bb4,c5,e5,g5]", I: "[a4,c5,eb5,gb5]", J: "[d5,f5]",
  K: "[g4,db5,e5]", L: "[a4,c5,eb5]", M: "db5", N: "[f3,ab3,db4] [ab3,c4,f4]", O: "[db4,f4,ab4] [f4,ab4,c5]",
  P: "[gb4,bb4,db5]@2 [c5,eb5] [db5,ab5], ~ ab4", Q: "[bb4,d5,a5] [c5,eb5,f5]", R: "[d5,f5,d6]", S: "[eb5,g5,eb6]",
  T: "[f5,a5,f6]", U: "[eb5,g5,eb6]@15 ~",
})).s("gm_string_ensemble_2").gain(0.27).pan(0.2)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<A@4 ~@8 B@3 ~@13 C ~ D E F@2 ~@25>".pickRestart({
  A: "[a3@31 ~]/4", B: "[ab3@13 ~@3, db3 ~@2]/3", C: "[f4,bb4]", D: "f4", E: "[e4,g4,bb4]", F: "[[eb4,f4,a4,c5]@7 ~]/2",
})).s("gm_string_ensemble_2").gain(0.16).pan(0.2)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@3 B C D@2 E F G H I J K L M N O P Q R S T U V W X F Y Z AA A AB AC C D@2 AD F AE H AF AG L AH AI P AJ AK AL AM AN AO
  AP AQ AP AR AS AT
>`.pickRestart({
  A: "f2@5 ~ f2 ~ f2@7 ~", B: "f2@5 ~ f2 ~ f2@6 ~@2", C: "bb2@4 ~@2 bb2 ~ bb2@7 ~", D: "bb2@5 ~ bb2 ~ bb2@7 ~",
  E: "bb2@5 ~ bb2 ~ bb2@6 ~@2", F: "eb2@5 ~ eb2 ~ eb2@7 ~", G: "eb2@5 ~ eb2 ~ eb2@5 ~ bb2 eb2",
  H: "eb2@5 ~ eb2 ~ eb2@8", I: "ab2@5 ~ ab2 ~ ab2@3 ~ ab2@3 ~", J: "db2@5 ~ db2 ~ db2@8", K: "f2@5 ~ f2 ~ f2@8",
  L: "db2@5 ~ db2@2 f2@5 ~ f2@2", M: "gb2@5 ~ gb2@2 ab2@3 ~ ab2@4", N: "bb2", O: "f2@7 ~ f2@3 f2 f2@2 a2 ~",
  P: "bb1@5 ~ bb1 ~ bb1@3 f1!3 g1@2", Q: "bb1@6 bb1 ~ bb1@4 f2 g2 bb2 g2", R: "bb1@6 bb1 ~ bb1@3 f1!3 g1@2",
  S: "bb1@5 ~ bb1 ~ bb1@4 f2 g2 bb2@2", T: "bb1@3 ~@3 eb1@3 ~ eb1@2 bb1@2 ~@2",
  U: "~@2 eb1@3 ~ eb1 ~ bb1@2 ~@2 eb1@3 ~", V: "bb1@2 ~@4 eb1@3 ~ eb1@2 bb1@2 ~@2", W: "~@6 d2 eb2",
  X: "e2@5 ~ e2 ~ e2@8", Y: "d2@5 ~ d2 ~ d2@4 bb2 f2 d2@2", Z: "db2@5 ~ db2 ~ db2@4 bb2 g2 e2 db2",
  AA: "c2@5 ~ c2 ~ c2@8", AB: "f2@5 ~ f2 ~ f2@5 ~ f2 ~", AC: "f2@3 ~", AD: "bb2@5 ~ bb2 ~ bb2@3 ~ bb1 d2 eb2@2",
  AE: "eb2@5 ~ eb2 ~ eb2@2 ~ bb1 c2 d2 eb2@2", AF: "ab1@5 ~ ab1 ~ ab1@3 ab1 ab1@3 ~", AG: "db2@5 ~ db2@2 f2@6 f2@2",
  AH: "gb2@5 ~ gb2@2 ab2@4 eb2@4", AI: "bb1@8 f2@4 f2@3 ~", AJ: "bb1@5 ~ bb1@2 g2 bb2 g2 bb2 g2 bb2 g2 f2",
  AK: "bb1@4 ~@2 bb1 ~ bb1@3 f1!3 g1@2", AL: "bb1@5 ~ bb1@2 d3 c3 bb2 g2 bb2 g2 f2 d2",
  AM: "bb1@3 ~@3 eb1@3 ~ eb1 ~ bb1@2 ~@2", AN: "~@2 eb1@3 ~ eb1 ~ bb1@2 ~@2 eb1@2 ~@2",
  AO: "bb1@2 ~@4 eb1@3 ~ eb1 ~ bb1@2 ~@2", AP: "~@2 eb1@3 ~ eb1 ~ bb1@2 ~@4 eb1@2",
  AQ: "~@2 eb1 ~ bb1@2 ~@2 eb1@2 ~@2 bb1@2 ~@2", AR: "~@2 eb1 ~ bb1@2 ~@4 eb1@3 ~ eb1 ~", AS: "bb1 ~ eb1 ~ bb1 ~@2 f1",
  AT: "~@2 f1 ~ bb1@2 ~@10",
})).s("gm_acoustic_bass").gain(0.33)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note("<A B C B ~@10 D E F G H I J K ~@37>".pickRestart({
  A: "f2@4 ~@2 f2 ~ f2@6 ~@2", B: "f2@5 ~ f2 ~ f2@5 ~@3", C: "f2@5 ~ f2 ~ f2@6 ~@2", D: "db3 f3", E: "gb3 ab3",
  F: "bb3", G: "f3@15 ~", H: "d4", I: "eb4", J: "f4", K: "eb4@15 ~",
})).s("gm_string_ensemble_2").gain(0.33).pan(0.3)

// other · french horn · "FR.HORN"
const french_horn = note("<~@8 A B C D ~@4 E F ~@7 G H I J ~@9 A B C D ~ K L M N O P Q R S T U V W X Y Z>".pickRestart({
  A: "~@4 d4@4 f4@3 eb4@2 d4@3", B: "c4@15 ~", C: "~@4 db4@4 f4@3 eb4@2 db4@3", D: "c4@11 ~@5", E: "~ f4 bb4 d5",
  F: "c5@15 ~", G: "f4@15 ~", H: "e4 g4", I: "gb4", J: "f4", K: "~@3 f4", L: "gb4@2 ab4 gb4",
  M: "a4@4 f4@3 ~ f4@3 ~ f4@3 ~", N: "f4@5 ~ f4 ~ f4@7 ~", O: "g4@5 ~ g4 ~ g4@8", P: "a4@5 ~ a4 ~ a4@7 ~",
  Q: "g4@5 ~ g4 ~ g4@3 ~ g4@3 ~", R: "f4 ~@5 eb4 ~@3 eb4 ~ f4 ~@3", S: "~@2 eb4 ~@3 eb4 ~ f4 ~@3 eb4 ~@3",
  T: "f4 ~@5 eb4@2 ~@2 eb4 ~ f4 ~@3", U: "~@2 eb4 ~@3 eb4 ~ f4 ~@5 eb4 ~", V: "~@2 eb4 ~ f4 ~@3 eb4 ~@3 f4 ~@3",
  W: "~@2 eb4 ~@3 eb4 ~ f4 ~@5 g4@2", X: "~@2 g4 ~ bb4@2 ~@4 c5@2 ~@2 c5 ~", Y: "d5@2 ~@2 c5 ~@3 d5@2 ~@4 c5@2",
  Z: "~@2 c5 ~ d5@2 ~@10",
})).s("gm_french_horn").gain(0.33).pan(0.3)

// other · french horn · "FR.HORN" · soft notes
const french_horn_soft = note("<~@29 e4 eb4 db4 a3 [f4@3 ~] ~@25>").s("gm_french_horn").gain(0.11).pan(0.3)

// chords · alto sax
const alto_sax = note(`<
  ~@9 A ~ B ~ C D E@3 F G H I J K J L M N O P Q R S@2 ~@5 A ~ B T U V W X Y Z AA ~@9
>`.pickRestart({
  A: "[eb3,g3,bb3,c4]@2 ~@4 [eb3,g3,bb3,c4] ~ [eb3,g3,bb3,c4]@3 ~@5", // Cm7
  B: "[eb3,gb3,bb3,c4]@2 ~@4 [eb3,gb3,bb3,c4] ~ [eb3,gb3,bb3,c4]@2 ~@6", C: "c4", D: "db4 c4, [f3,ab3]",
  E: "[[gb3,bb3,db4]@8 [ab3,eb4]@8 d4@16 f3@15 ~, ~ c4@5, ~@16 bb3@31 ~]/3", F: "[f3,a3,d4]", G: "[g3,c4,eb4]",
  H: "[a3,bb3,d4,f4]", I: "[g3,bb3,c4,eb4]@15 ~",
  J: "[f3,bb3,d4,f4] ~@5 [g3,bb3,c4,f4]@2 ~@2 [g3,bb3,c4,f4] ~ [f3,bb3,d4,f4] ~@3", // Bb Gm7 Bb
  K: "~@2 [g3,bb3,c4,f4] ~@3 [g3,bb3,c4,f4] ~ [f3,bb3,d4,f4] ~@3 [g3,bb3,c4,f4] ~@3", L: "[bb3,c4,d4,f4]",
  M: "[bb3,c4,e4,g4] ~@5 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~@7", // C7
  N: "[c4,eb4,gb4,a4] ~@5 [c4,eb4,gb4,a4] ~ [c4,eb4,gb4,a4] ~@7", // Cdim
  O: "[f3,bb3,d4,f4] ~@5 [f3,bb3,d4,f4] ~ [f3,bb3,d4,f4] ~@7", // Bb
  P: "[g3,bb3,db4,e4] ~@5 [g3,bb3,db4,e4] ~ [g3,bb3,db4,e4] ~@7", // Gdim
  Q: "[f3,a3,c4,eb4] ~@5 [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4] ~@7", // F7
  R: "[e3,g3,bb3,db4] ~@5 [e3,g3,bb3,db4] ~ [e3,g3,bb3,db4] ~@7", S: "[[c3,eb3,f3,a3]@7 ~]/2",
  T: "~@8 [c3,f3,ab3]@5 ~ [c3,f3,ab3]@2", U: "[db3,f3,ab3]@5 ~ [db3,f3,ab3]@2 [c3,f3,ab3]@5 ~ [c3,f3,ab3]@2",
  V: "[db3,gb3,bb3]@5 ~ [db3,gb3,bb3]@2 [eb3,ab3,c4]@4 [gb3,bb3,db4]@4", // Gb Ab Gb
  W: "[f3,a3,d4]@7 ~ [f3,bb3,c4]@4 [f3,a3,c4]@3 ~", X: "[bb3,d4,f4,a4]@6 [bb3,d4,f4,a4] ~ [bb3,d4,f4,a4]@8",
  Y: "[c4,eb4,g4,bb4]@5 ~ [c4,eb4,g4,bb4] ~ [c4,eb4,g4,bb4]@7 ~", // Cm7
  Z: "[d4,f4,a4,c5]@5 ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5]@8", // Dm7
  AA: "[c4,eb4,g4,bb4]@5 ~ [c4,eb4,g4,bb4] ~ [c4,eb4,g4,bb4]@4 [c4,eb4,g4,bb4]@3 ~", // Cm7
})).s("gm_alto_sax").gain(0.33).pan(0.6)

// chords · alto sax · soft notes
const alto_sax_soft = note("<~@4 A B A B ~@4 C@2 ~@4 D@2 ~@14 A B A B ~@21>".pickRestart({
  A: "[c4,db4,f4,ab4]", B: "[c4,d4,f4,a4]@15 ~", C: "[[f3,ab3]@31 ~]/2", D: "bb3/2",
})).s("gm_alto_sax").gain(0.16).pan(0.6)

// other · baritone sax · "BARITONSAX"
const baritone_sax = note("<~@9 A ~ B ~@6 C D E D F G F H ~@6 I J ~@5 A ~ B ~@2 K L ~@13>".pickRestart({
  A: "eb2@2 ~@4 eb2 ~ eb2@3 ~@5", B: "ab2@3 ~@3 ab2 ~ ab2@3 ~@5", C: "bb2", D: "c3", E: "d3",
  F: "bb2 ~@5 eb2@2 ~@2 eb2 ~ bb2 ~@3", G: "~@2 eb2 ~@3 eb2 ~ bb2 ~@3 eb2 ~@3", H: "g3", I: "f2@5 ~ f2 ~ f2@5 ~ f2 ~",
  J: "f2@3 ~", K: "gb2@5 ~ gb2@2 ab2@3 ~ ab2@4", L: "bb2@8 f2@3 ~ f2@3 ~",
})).s("gm_baritone_sax").gain(0.33).pan(0.7)

// other · baritone sax · "BARITONSAX" · soft notes
const baritone_sax_soft = note("<~@4 [bb3@15 ~]!4 ~@26 [bb3@15 ~]!4 ~@21>").s("gm_baritone_sax").gain(0.22).pan(0.7)

// other · trumpet
const trumpet = note("<~@45 A B C D E F G H I J K L M N>".pickRestart({
  A: "~@4 f4@3 ~ bb4@4 c5@3 ~", B: "a4@5 ~ a4 ~ a4@5 ~@3", C: "bb4@5 ~ bb4 ~ bb4@5 ~@3", D: "c5@5 ~ c5 ~ c5@5 ~@3",
  E: "bb4@5 ~ bb4 ~ bb4@3 ~ bb4@3 ~", F: "f4 ~@5 eb4 ~@3 eb4 ~ f4 ~@3", G: "~@2 eb4 ~@3 eb4 ~ f4 ~@3 eb4 ~@3",
  H: "f4 ~@9 g4 ~ bb4 ~@3", I: "~@2 g4@2 ~@2 g4 ~ bb4 ~@5 c5 ~", J: "~@2 c5 ~ d5 ~@3 c5 ~@3 d5 ~@3",
  K: "~@2 eb5@2 ~@2 eb5 ~ f5@2 ~@4 g5@2", L: "~@2 g5 ~ bb5 ~@5 c6@2 ~@2 c6 ~", M: "d6 ~ c6 ~ d6 ~@2 [c5,c6]",
  N: "~@2 [c5,c6] ~ d6@2 ~@10, ~@4 d5 ~@11", // C
})).s("gm_trumpet").gain(0.44).pan(0.6)

// chords · muted trumpet · "MT TRUMPET"
const muted_trumpet = note("<~@9 A ~ B ~@27 A ~ B ~@17>".pickRestart({
  A: "[g3,bb3,c4]@2 ~@4 [g3,bb3,c4] ~ [g3,bb3,c4]@2 ~@6", B: "[gb3,bb3,c4]@2 ~@4 [gb3,bb3,c4] ~ [gb3,bb3,c4]@2 ~@6",
})).s("gm_muted_trumpet").gain(0.22).pan(0.6)

// chords · brass section · "BRASS 1"
const brass_section = note("<~@50 A B C D E F G H I>".pickRestart({
  A: "[bb3,d4,f4] ~@5 [bb3,c4,eb4] ~@3 [bb3,c4,eb4] ~ [bb3,d4,f4] ~@3", // Bb Cm7 Bb
  B: "~@2 [bb3,c4,eb4] ~@3 [bb3,c4,eb4] ~ [bb3,d4,f4] ~@3 [bb3,c4,eb4] ~@3", // Cm7 Bb Cm7
  C: "[bb3,d4,f4] ~@5 [c4,eb4,g4]@2 ~@2 [bb3,c4,eb4,g4] ~ [bb3,d4,f4,bb4] ~@3, ~@6 bb3 ~@9", // Bb Cm Cm7 Bb
  D: "~@2 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~ [bb3,d4,f4,bb4] ~@5 [eb4,bb4,c5] ~, ~@7 g4", // Cm7 Bb Cm7
  E: "~@2 [eb4,g4,bb4,c5] ~ [f4,bb4,d5] ~@3 [eb4,g4]@2 ~@2 [f4,bb4,d5]@2 ~@2, ~@8 [bb4,c5] ~@7", // Cm7 Bb Eb Bb Bbsus2
  F: "~@2 [g4,bb4,c5,eb5]@2 ~@2 [g4,bb4,c5,eb5] ~ [f4,bb4,f5]@2 ~@4 [bb4,c5,eb5,g5]@2, ~@8 d5 ~@7", // Cm7 Bb5 Cm7
  G: "~@2 [bb4,c5,eb5,g5] ~ [bb4,d5,f5,bb5]@2 ~@4 [c5,eb5,g5,c6]@3 ~ [c5,eb5,g5,c6] ~", // Cm7 Bb Cm
  H: "[d5,f5,bb5,d6] ~ [c5,eb5,c6] ~ [d5,f5,bb5,d6] ~@2 [c5,eb5,g5,c6], ~@4 g5 ~@11", // Bb Cm Bb Cm
  I: "~@2 [eb5,g5,c6] ~ [d5,bb5,d6]@2 ~@10, ~@2 c5@2 f5 ~@11", // Cm Gm
})).s("gm_brass_section").gain(0.49).pan(0.7)

// chords · trombone
const trombone = note("<~@5 A B C ~@14 D E D F@2 G H@2 ~@2 I J ~ A B C ~@7 K L M N O P Q P R S T U V W>".pickRestart({
  A: "bb2@3 ~@5 bb2@3 ~@5", B: "bb2@3 ~@3 bb2 ~ bb2@3 ~@5", C: "bb2@3 ~@3 bb2 ~ bb2@2 ~@6",
  D: "[f3,bb3,d4,f4] ~@5 [g3,bb3,c4,f4]@2 ~@2 [g3,bb3,c4,f4] ~ [f3,bb3,d4,f4] ~@3", // Bb Gm7 Bb
  E: "~@2 [g3,bb3,c4,f4] ~@3 [g3,bb3,c4,f4] ~ [f3,bb3,d4,f4] ~@3 [g3,bb3,c4,f4] ~@3", // Gm7 Bb Gm7
  F: "[[d4,f4] [c4,e4], [g3,bb3]]/2", G: "[gb3,a3,c4,eb4]", H: "[[d3,f3,d4] [e3,g3,db4], bb3]/2",
  I: "~@6 f2 ~ f2@4 ~@2 f2 ~", J: "f2@11 ~@5", K: "~@4 [f2,f3,bb3,c4]@4 [f2,f3,bb3,c4]@3 ~ [f2,f3,a3,c4]@4",
  L: "[bb2,f3,a3,d4]@5 ~ [bb2,f3,a3,d4] ~ [bb2,f3,a3,d4]@7 ~", // Bbmaj7
  M: "[bb2,g3,c4,eb4]@5 ~ [bb2,g3,c4,eb4] ~ [bb2,g3,c4,eb4]@7 ~", // Cm7
  N: "[bb2,a3,d4,f4]@5 ~ [bb2,a3,d4,f4] ~ [bb2,a3,d4,f4]@7 ~", // Bbmaj7
  O: "[bb2,g3,c4,eb4]@5 ~ [bb2,g3,c4,eb4] ~ [bb2,g3,c4,eb4]@3 ~ [bb2,g3,c4,eb4]@3 ~", // Cm7
  P: "[bb2,f3,bb3,d4] ~@5 [eb2,eb3,g3,bb3,c4] ~@3 [eb2,eb3,g3,bb3,c4] ~ [bb2,f3,bb3,d4] ~@3", // Bb Cm7 Bb
  Q: "~@2 [eb2,eb3,g3,bb3,c4] ~@3 [eb2,eb3,g3,bb3,c4] ~ [bb2,f3,bb3,d4] ~@3 [eb2,eb3,g3,bb3,c4] ~@3", // Cm7 Bb Cm7
  R: "~@2 [eb2,eb3,g3,bb3,c4] ~@3 [eb2,eb3,g3,bb3,c4] ~ [bb2,bb3,d4] ~@5 [eb2,eb3,g3,bb3,c4]@2, ~@4 f3 ~@3", // Cm7 Bb Cm7
  S: "~@2 [eb2,eb3,g3,bb3,c4] ~ [bb2,f3,bb3,d4] ~@3 [eb3,g3,bb3,c4] ~@3 [f3,d4]@2 ~@2, ~@8 eb2@2 ~@2 [bb2,bb3] ~@3", // Cm7 Bb Cm7 Dm Bb
  T: "~@2 [eb2,eb3,g3,bb3,c4]@2 ~@2 [eb2,eb3,g3,bb3,c4] ~ [f3,bb3]@2 ~@4 [eb2,eb3,g3,bb3,c4]@2, ~@8 [bb2,d4] ~@7", // Cm7 Bb5 Cm7 Bb
  U: "~@2 [eb2,eb3,g3,bb3,c4] ~ [f3,bb3,d4]@2 ~@4 [eb3,g3,bb3,c4]@2 ~@2 [eb2,eb3,g3,bb3,c4] ~, ~@4 bb2 ~@5 eb2 ~@5", // Cm7 Bb Cm7
  V: "[bb2,f3,bb3,d4] ~ [eb2,eb3,g3,bb3,c4] ~ [bb2,f3,bb3,d4] ~@2 [f2,bb3,c4,eb4]", // Bb Cm7 Bb Fsus4
  W: "~ [bb3,c4] [bb2,f3,bb3] ~@5, ~@2 [f2,eb4] ~ d4 ~@11", // Bbsus2 Bb5 F7
})).s("gm_trombone").gain(0.38).pan(0.2)

// chords · trombone · soft notes
const trombone_soft = note("<~@4 A B ~@24 C D E@2 A B ~@23>".pickRestart({
  A: "bb2@3 ~@3 bb2 ~ bb2@3 ~@5", B: "~@6 bb2 ~@9", C: "[f3,a3,c4,eb4]", D: "[e3,g3,bb3,db4]",
  E: "[[f3,a3,c4]@25 ~@7]/2", // F
})).s("gm_trombone").gain(0.22).pan(0.2)

// other · piano · "A.PIANO 2"
const piano = note("<[f1@5 ~ f1 ~ f1@7 ~]!3 [f1@5 ~ f1 ~ f1@6 ~@2] ~@4 [~@4 g6 ~@5 g6 ~@5]!2 [gb6 ~@11 gb6 ~@3] ~@48>")
  .s("gm_piano").gain(0.33).pan(0.7)

// other · timpani
const timpani = note("<~@45 A B@4 C D C E F E G H I>".pickRestart({
  A: "~@8 f2 ~@3 f2 ~@3", B: "bb2 ~@5 bb2 ~ bb2 ~@7", C: "bb2 ~@5 eb2 ~@3 eb2 ~ bb2 ~@3",
  D: "~@2 eb2 ~@3 eb2 ~ bb2 ~@3 eb2 ~@3", E: "~@2 eb2 ~@3 eb2 ~ bb2 ~@5 eb2 ~", F: "~@2 eb2 ~ bb2 ~@3 eb2 ~@3 bb2 ~@3",
  G: "~@2 eb2 ~ bb2 ~@3 f2 ~ eb2 ~@3 eb2 ~", H: "bb2 ~@3 eb2 ~@3 bb2 ~@2 f2!2 ~ f2 ~", I: "~@2 f2 ~ bb2 ~@11",
})).s("gm_timpani").gain(0.33).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@4 A@12 B C@2 B C B D E D ~ F@2 A C B ~@3 G@11 H G@4 D I D J K J L M N>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x!2", D: "x ~@2 x ~ x!2 ~", E: "~ x ~ x!2 ~ x ~", F: "x ~@3 x!2 ~@2",
  G: "x ~@2 x!3 ~@2", H: "x!8", I: "x!2 ~ x!2 ~ x ~", J: "x!2 ~ x!2 ~@2 x", K: "~ x!2 ~ x ~ x ~", L: "~ x!2 ~ x!2 ~ x",
  M: "x ~ x ~ x ~@2 x", N: "~ x!2 ~@5",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@2 [~ x ~ x]!14 x ~@42>").gain(0.44)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@22 A ~@7 B C@2 D ~@11 E ~@4 F ~ G ~@6>".pickRestart({
  A: "~@2 x ~@12 x", B: "~@3 x", C: "~ x ~ x", D: "~ x ~@2", E: "~ x ~@6", F: "~@15 x", G: "~@3 x ~@11 x",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@17 [~@7 x] ~@27 [~@6 x!2] ~@12 [~ x ~@2]>").gain(0.55)
// … 42 more lines

More by Sinatra