Strudelify

Twilight Time

The Platters

KeyF majorTempo105 bpm
0:00/0:00
// Twilight Time — The Platters
// 105 bpm, 4/4, key F 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 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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.

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@6 A B C D E F G H I J K L M B C D E F G H I N O P Q R S@2 T U@2 V W X Y Z A B C D E F G H I N O P AA AB AC AD AE AF
  AG AH AI AJ AK ~ AL AM AN AO AP ~@8
>`.pickRestart({
  A: "~@2 f2 ~@2 a2 ~@2", B: "c3 ~@2 f2 g2 ab2 a2 ~", C: "~ db3 ~@2 e3 ~@2 a3", D: "e3 db3 d3 ~@2 f3 ~@2",
  E: "a3 ~@2 d3!2 db3 c3 ~", F: "~ c3 ~@2 f2 ~@2 f2", G: "g2 a2 bb2 ~@2 bb2 ~@2", H: "db3 ~@2 db3 ~@2 f3 ~",
  I: "~ c3 ~@2 d3 ~@2 a3", J: "~@2 g3 ~@2 d3 ~ d3", K: "g3 ~@2 g3 ~ g3 c3!2", L: "c3!8", M: "c3!2 f2 ~@2 a2 ~@2",
  N: "~@4 g3@5 ~ g3 ~@3 g3 ~", O: "c3@2 ~@4 c3 ~@3 c3 ~ f3 ~ f3 ~", P: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~",
  Q: "f3 ~ f3 ~ a2@2 ~@2 a2@2 db3@2 ~@2 db3@2", R: "e3@3 ~ e3@2 db3@3 ~ e3@2 a2@3 ~",
  S: "[a2@2 db3@3 ~ db3@2 e3@3 ~ e3@2 db3@4 e3 ~ d3@5 ~ d3@5 ~]/2", T: "a2@5 ~ bb2@5 ~ a2@4",
  U: "[~@2 bb2@5 ~ a2@5 ~ a2@4 ~@2 g2@3 ~ g2@2 b2@3 ~ b2@2]/2", V: "d3@5 ~ b2@4 d3@2 g2@3 ~",
  W: "g2@2 d3@3 ~ d3@2 b2@6 g2@2", X: "~ g2 c3 ~@5", Y: "~@12 c3 ~@3", Z: "~@2 c3 ~@5 d3 ~@5 e3 ~",
  AA: "f3 ~ f3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~", AB: "db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ gb2@2 ~@2",
  AC: "~ bb2 ~@2 db3 ~@2 gb2", AD: "ab2 a2 bb2 ~@2 d3 ~@2", AE: "f3 ~@2 bb3 f3 d3 eb3 ~", AF: "~ gb3 ~@2 bb3 ~@2 eb3",
  AG: "eb3 d3 db3 ~@2 db3 ~@2", AH: "gb2 ~@2 gb2 ab2 bb2 b2 ~", AI: "~ b2 ~@2 d3 ~@2 d3", AJ: "~@2 gb3 ~@2 db3 ~@2",
  AK: "eb3 ~@2 bb3 ~@2 ab3 ~", AL: "~@4 db4 ~@11", AM: "~@12 gb3 ~ gb3 ~",
  AN: "gb3 ~ gb3 ~ gb3 ~ gb3 ~ b3 ~ b3 ~ b3 ~ b3 ~", AO: "b3 ~ b3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~",
  AP: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ gb3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.48)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D E F G H@2 I J K L M@3 N O P H@2 I J Q L R@3 S T U V W@2 X Y@2 Z AA AB AC AD@2 H@2 I J Q L AE@3 S T AF AG@2 AH
  AI@2 AJ AK AL@2 AM@4 AN AO AP@3 ~@6
>`.pickRestart({
  A: "~@4 f1 ~ f1 ~ f1@2 f1 ~ f1 ~ f1 ~", B: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 a1 ~ a1 ~",
  C: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", D: "a1 ~ a1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  E: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~", F: "c2 ~ bb1 ~ bb1 ~ bb1 ~ a1 ~ a1 ~ a1 ~ g1 ~",
  G: "g1 ~ g1 ~ f1@6 a1@6", H: "[c2@6 f1@2 g1@2 ab1@2 a1@6 db2@6 e2@5 ~ a2@2]/2", I: "e2 db2 d2@3 f2@3",
  J: "a2@3 d2!2 db2 c2@2", K: "~@2 c2@5 ~ f1@6 f1@2", L: "g1@2 a1@2 bb1@5 ~ bb1@6",
  M: "[db2@6 db2@6 f2@6 c2@6 d2@6 a2@5 ~ g2@5 ~ d2@4 d2@2]/3", N: "g2@6 g2@3 ~ g2@2 c2 ~ c2 ~",
  O: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", P: "c2 ~ c2 ~ f1@6 a1@6", Q: "~ c2@3 f1@3 f1",
  R: "[db2@6 db2@6 f2@6 c2@5 ~ d2@6 a2@5 ~ g2@5 ~ g2@3 ~ g2 ~]/3", S: "c2@4 ~@2 c2@4 c2@2 f2 ~ f2 ~",
  T: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", U: "f2 ~ f2 ~ a1@2 ~@2 a1@2 db2@2 ~@2 db2@2",
  V: "e2@3 ~ e2@2 db2@3 ~ e2@2 a1@3 ~", W: "[a1@2 db2@3 ~ db2@2 e2@3 ~ e2@2 db2@4 e2 ~ d2@5 ~ d2@5 ~]/2",
  X: "a1@5 ~ bb1@5 ~ a1@4", Y: "[~@2 bb1@5 ~ a1@5 ~ a1@4 ~@2 g1@3 ~ g1@2 b1@3 ~ b1@2]/2", Z: "d2@5 ~ b1@4 d2@2 g1@3 ~",
  AA: "g1@2 d2@3 ~ d2@2 b1@6 g1@2", AB: "~ g1 c2 ~@5", AC: "~@3 c2", AD: "[~@2 c2@5 ~ d2@5 ~ e2@5 ~ f1@6 a1@6]/2",
  AE: "[db2@6 db2@6 f2@6 c2@6 d2@6 a2@5 ~ g2@5 ~ g2@3 ~ g2@2]/3", AF: "f2 ~ f2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~",
  AG: "[db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ gb1@6 bb1@6 db2@6 gb1@2]/2", AH: "ab1 a1 bb1@3 d2@3",
  AI: "[f2@5 ~ bb2@2 f2@2 d2@2 eb2@6 gb2@6 bb2@6 eb2@2]/2", AJ: "eb2@2 d2@2 db2@5 ~ db2@5 ~",
  AK: "gb1@3 gb1 ab1 bb1 b1@2", AL: "[~@2 b1@6 d2@6 d2@6 gb2@6 db2@5 ~]/2",
  AM: "[eb2@6 bb2@5 ~ ab1@24 db2@23 ~ gb1 ~ gb1 ~]/4", AN: "gb1 ~ gb1 ~ gb1 ~ gb1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  AO: "b1 ~ b1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~", AP: "[b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ gb1@36]/3",
})).s("gm_fretless_bass").gain(0.56)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<A@6 B@6 C@3 D@6 E@7 F@3 G H I J K L M N O P Q R@6 S@4 T@2 U@7 V@5 ~ W@7 ~@5>".pickRestart({
  A: "[~ [a4,c5,f5]@6 [db5,e5,a5]@6 [d5,f5,bb5]@6 [e5,g5,c6]@5]/6", // F A Bb C
  B: "[~@4 [c5,f5]@24 [db5,e5]@23 ~ d5@24 c5@20, ~@4 a5@47 ~ [f5,a5]@44]/6", // F5 Dbm F
  C: "[~ d5@3 db5@3 c5@3 [d5,gb5]@2, ~ f5@9 ~@2, ~ bb5@6 a5@5]/3", // D
  D: "[~ [d5,g5,b5]@6 g5@3 ab5@3 [c5,f5]@6 [db5,e5]@5, ~@28 [c5,e5,c6]@23 ~ a5@44]/6", // G F5 Dbm C
  E: "[~@4 d5@24 c5@23 ~ d5@12 db5@12 c5@12 [d5,gb5]@10 ~@2 [d5,g5,b5]@11 ~, ~@4 [f5,a5]@47 ~ f5@36 ~@24, ~@26 bb5@12 a5@11 ~@7]/7", // D G F
  F: "[[g5,bb5]@11 ~ [f5,a5]@23 ~@5 [a4,db5,e5] ~@5 [a4,db5,e5] ~]/3", G: "~@4 [a4,db5,e5] ~@5 [a4,e5] ~@5",
  H: "[a4,db5,e5] ~@3 [a4,db5,e5] ~@3 [a4,db5,e5] ~@3 [a4,db5,e5] ~@3", I: "[a4,db5,e5] ~@7 [a4,f5] ~@5 [a4,d5,f5] ~",
  J: "~@4 [a4,db5,e5] ~@5 [a4,db5,e5] ~@5", K: "[a4,db5,e5] ~@5 [a4,e5] ~@5 [a4,e5] ~@3",
  L: "[a4,e5] ~@7 [g4,b4,d5] ~@5 [g4,d5] ~", M: "~@4 [g4,b4,d5] ~@3 [g4,b4,d5] ~@7",
  N: "[g4,b4,d5] ~@5 [g4,b4,d5] ~@5 [g4,b4,d5] ~@3", O: "d5 ~@3 [g4,c5,e5] ~@11", P: "~@14 e5 ~",
  Q: "[g4,e5] ~ [g4,c5,e5] ~ [g4,bb4,e5] ~ [g4,bb4,c5,e5] ~ [g4,c5,e5] ~ [g4,bb4,c5,e5] ~ [g4,bb4,e5] ~ [g4,bb4,e5] ~", // C Edim C7 C C7 Edim
  R: "[[g4,bb4,c5,e5] ~ [g4,bb4,c5,e5] ~ [c5,f5]@24 [db5,e5]@23 ~ d5@24 c5@20, ~@4 a5@47 ~ [f5,a5]@44]/6", // C7 F5 Dbm F
  S: "[~@4 d5@12 db5@12 c5@12 [d5,gb5]@10 ~@2 [d5,g5,b5]@11 ~, ~ f5@9 ~@6, ~@2 bb5@12 a5@11 ~@7]/4", // D G
  T: "[[g5,bb5]@11 ~ [f5,a5]@20]/2", // Gm F
  U: "[~@4 [db5,f5,ab5]@24 [db5,gb5]@24 [d5,f5]@23 ~ eb5@24 db5@12, ~@28 bb5@47 ~ [gb5,bb5]@36]/7", // Db Gb5 Dm Gb
  V: "[~@3 eb5@3 d5@3 db5@3 [eb5,g5]@3 [eb5,gb5,ab5]@3 ~@2, ~@3 gb5@9 ~@8, ~@3 b5@6 bb5@6 ~@5]/5", // Eb Ab7
  W: "[~@13 bb4@11 [b4,eb5]@12 db5@12 eb5@12 db6@2 c6@2 db6@2 eb6@4 db6@2 b5@4 bb5@2 a5@4 bb5@14 ~@16, ~@12 gb5@47 ~ [db5,gb5]@37 ~@15]/7", // B Gb5
})).s("gm_rock_organ").gain(0.32)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@28 A@3 B ~ C ~ D E ~@2 F G H ~@10 I@3 ~@12 J@2 K L@4 ~@5>".pickRestart({
  A: "[c5@5 ~ c5@12 ~@6, db5 ~@47]/3", B: "~@10 db5 ~@5", C: "~@8 d5 ~@7", D: "~@6 db5 ~@5 db5 ~@3", E: "db5 ~@13 b4 ~",
  F: "[g4,b4] ~@15", G: "~@12 [g4,bb4,c5,e5] ~ [g4,bb4,c5] ~", H: "[bb4,c5] ~ bb4 ~ c5 ~@3 bb4 ~@3 c5 ~ c5 ~",
  I: "[c5@5 ~ c5@12 ~@6]/3", J: "[~@13 db5@11 ~@8]/2", K: "~@4 bb4@11 ~", L: "[b4@11 ~ bb4@37 ~@15]/4",
})).s("gm_rock_organ").gain(0.16)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@6 A B C D E F G H I J K L M B C N O P G H I Q R S T U V W X Y Z AA AB AC ~ AD AE B C D E F G H AF J AG AH AI AJ AK
  AL AM AN AO AP AQ AO AR@4 AS AT AU@8 ~
>`.pickRestart({
  A: "~@10 [f4,a4,c5] ~@5", B: "~@6 [f4,a4,c5] ~@9", C: "~@2 [e4,g4,a4,db5] ~@11 [e4,g4,a4,db5] ~",
  D: "~@10 [d4,f4,a4,d5] ~@5", E: "~@6 [d4,f4,a4,d5] ~@9", F: "~@2 [f4,a4,c5] ~@11 [f4,a4,c5] ~",
  G: "~@10 [f4,bb4,d5] ~@5", H: "~@6 [f4,bb4,db5] ~@9", I: "~@2 [f4,a4,c5] ~@11 [d4,gb4,a4,c5] ~",
  J: "~@10 [d4,g4,b4] ~@5", K: "~@6 [d4,g4,b4] ~@9", L: "~@2 [e4,g4,c5] ~@7 g4 ~ [e4,g4,c5] ~ [ab4,c5] ~",
  M: "[ab4,c5] ~ [e4,ab4,c5] ~@7 [f4,a4,c5] ~@5", N: "~@10 [f4,a4,d5] ~@5", O: "~@6 [f4,a4,d5] ~@9",
  P: "~@2 [f4,a4,c5,eb5] ~@11 [f4,a4,c5,eb5] ~", Q: "~@10 [d4,f4,g4,b4] ~@5", R: "~@6 [c4,e4,g4,c5] ~@9",
  S: "~@2 [f4,a4,c5] ~@7 [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", // F
  T: "[f4,a4,c5] ~ [a4,c5] ~@5 [db4,e4,a4] ~@5 [db4,e4,a4] ~", U: "~@4 [db4,e4,a4] ~@5 [db4,e4,a4] ~@5",
  V: "[db4,e4,a4] ~@5 [db4,e4,a4] ~@5 [e4,a4] ~@3", W: "~@2 [db4,e4,a4] ~@5 [d4,f4,a4] ~@5 [d4,a4] ~",
  X: "~@4 [db4,e4,a4] ~@5 [db4,a4] ~@5", Y: "[db4,e4] ~@5 [e4,a4] ~@5 [e4,a4] ~@3",
  Z: "~@2 [db4,a4] ~@5 [b3,d4,g4] ~@5 [b3,g4] ~", AA: "~@4 [b3,d4,g4] ~@5 [b3,g4] ~@5",
  AB: "[b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [b3,g4] ~@3", AC: "~@2 [b3,d4,g4] ~ [c4,e4,g4,c5] ~@11",
  AD: "~@2 [e4,c5] ~ [g4,c5] ~ [e4,c5] ~ [c4,e4,g4,c5] ~ [e4,c5] ~ [c4,e4,g4,c5] ~ [c4,e4,g4,c5] ~", // C C5 C
  AE: "[c4,e4,g4,c5] ~ [c4,e4,g4,c5] ~@7 [f4,a4,c5] ~@5", AF: "~@2 [f4,a4,c5] ~@11 [gb4,a4,c5] ~",
  AG: "~@6 [e4,g4,bb4] ~@5 [c4,f4,a4] ~ [c4,f4,a4] ~", // Edim F
  AH: "[c4,f4,a4] ~ [f4,a4] ~ [f4,a4] ~ [c4,f4,a4] ~ [c4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~", // F
  AI: "[c4,a4] ~ [c4,f4,a4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [f4,ab4] ~ [f4,ab4] ~ [f4,ab4] ~ [f4,ab4] ~", // F Db Fm
  AJ: "[f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [f4,ab4] ~ [f4,ab4] ~ [db4,f4,ab4] ~@5", // Fm Db Fm Db
  AK: "~@2 [gb4,bb4,db5] ~@11 [gb4,bb4,db5] ~", AL: "~@10 [f4,ab4,bb4,d5] ~@5", AM: "~@6 [f4,ab4,bb4,d5] ~@9",
  AN: "~@2 [eb4,gb4,bb4,eb5] ~@11 [eb4,gb4,bb4,eb5] ~", AO: "~@10 [gb4,bb4,db5] ~@5", AP: "~@6 [gb4,bb4,db5] ~@9",
  AQ: "~@2 [gb4,b4,eb5] ~@11 [gb4,b4,d5] ~", // B Bm
  AR: "[~@6 [g4,bb4,db5] ~@5 [ab3,c4,eb4,gb4,ab4]@22 ~@14 f5@11 ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~, ~@36 db3@8 ab4@15 ~@5, ~@38 ab3@21 ~@5, ~@40 db4@19 ~@5, ~@42 f4@17 ~@5]/4", // Gdim Ab7 Gb
  AS: "[db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~", // Gb B
  AT: "[eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~", // B Gb
  AU: "[[eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ gb4 ~ [db4,gb4]@116, ~@6 bb4@19 ~@39]/8", // B Gb5
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@17 A B ~@11 C ~ D E F G H I J ~ K L ~@8 M ~@2 N O P ~@8 Q ~ R@2 ~@2 S ~@8
>`.pickRestart({
  A: "~@10 [e4,c5] ~@3 e4 ~", B: "e4 ~@15", C: "~@2 f4 ~@13", D: "~@12 db4 ~@3", E: "~@14 f4 ~", F: "~@10 e4 ~@5",
  G: "a4 ~@5 db4 ~@5 db4 ~@3", H: "~@2 e4 ~@11 d4 ~", I: "~@10 d4 ~@5", J: "~@12 d4 ~@3", K: "~@14 [c4,e4,g4,c5] ~",
  L: "[c4,e4,g4,c5] ~ [c4,g4] ~ [c4,e4] ~ [c4,g4] ~@3 [c4,g4] ~@5", M: "~@14 [c4,d4] ~", N: "~@2 c4 ~ c4 ~@3 f4 ~@7",
  O: "f4 ~@7 db4 ~ db4 ~ db4 ~ db4 ~", P: "db4 ~@5 db4 ~ db4 ~@7", Q: "~@6 [db4,eb4] ~@9", R: "[~@14 db5@13 ~@5]/2",
  S: "~@10 [eb4,b4] ~@5", // Abm
})).s("gm_acoustic_guitar_nylon").gain(0.24)

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

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@6 A B C@2 B C@2 B C D B E A B C@2 B C@2 B C D B E F G H I G J K G H ~@3 A B C@2 B C@2 B C D B E A L C M C@2 M C@2 M
  N ~@14
>`.pickRestart({
  A: "~@2 x!6", B: "x!5 ~ x!2", C: "x!8", D: "x ~ x!5 ~", E: "x!5 ~@3", F: "~@2 x ~@2 x ~@2", G: "x ~@2 x ~@2 x ~",
  H: "~ x ~@2 x ~@2 x", I: "~ x!2 ~@2 x ~@2", J: "~ x ~@2 x ~ x ~", K: "x ~ x ~@2 x ~@2", L: "x ~@5 x!2", M: "x ~ x!6",
  N: "x!5 ~ x ~",
})).gain(0.4)

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

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@32 A ~ B ~ C D E ~ F G ~@37>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~@4 x ~@2 x", D: "~@2 x ~@2 x ~@2", E: "x ~@2 x ~@4", F: "~@6 x!2", G: "x",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<A B@5 C ~@9 D B C ~@9 D B C ~@9 D B C ~@9 D B@2 E ~@11 D B@2 F ~@8>".pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!2 ~@6", D: "~@6 x!2", E: "x!6 ~@2", F: "x!7 ~",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<A B ~ A B C A ~@11 A ~@11 A ~@5 A ~@2 A ~ C A ~@12 B ~@11 B ~@2 B ~@8>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~ x ~@2 x ~@2 x",
})).gain(0.48)

stack(
  electric_guitar_muted, bass, rock_organ, rock_organ_soft, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick, snare,
  low_tom, hihat, open_hat, open_hat_soft, high_tom, crash
)

More by The Platters