Strudelify

pokemon gold silver crystal - violet olivine city

Shota

KeyD♭ majorTempo109 bpm
0:00/0:00
// pokemon gold silver crystal - violet olivine city — Shota
// 109 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Trumpet" named as a brass, played on trumpet (its overdriven guitar patch is not one); ch 3 "Flute" named as a pipe, played on flute (its electric guitar jazz patch is not one); ch 4 "Strings" named as a string part, played on string ensemble 1 (its electric bass finger patch is not one); ch 8 "Strings" named as a string part, played on string ensemble 1 (its trombone patch is not one); ch 12 "Strings" named as a string part, played on string ensemble 1 (its electric guitar muted patch is not one); ch 7 "Rotary Organ" named as an organ, played on drawbar organ (its glockenspiel patch is not one); ch 16 "Tubular Bells" named as a mallet, played on tubular bells (its distortion guitar patch is not one); ch 2 "Marimba (Single Stave)" named as a mallet, played on marimba (its electric guitar muted patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5987335; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(109/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet
const trumpet = note("<~@8 A B C D ~ E F G H I J K L ~@5 M D ~@8 A B C D ~ E F G H I J K L ~@5 M D ~>".pickRestart({
  A: "~@14 b4 db5", B: "eb5@4 ~@2 eb5 e5 [eb5,e5] eb5 db5 ~ b4@2 db5 ~",
  C: "db3 gb3 ab3 b3 db4 gb4 ab4 b4 [gb5,b5]@4 ~ ab6 db5 eb5, eb5@2 ab5@2 ~@2 [b5,eb6] ~", // B5 B
  D: "e5@2 ab4@2 b4@2 e5@2 eb5 gb4 b4 eb5 db5 e4 bb4 db5",
  E: "g3 b3 [d3,e3] gb3 g3 b3 d3 gb3 a3 e3 [ab3,a3] ab3 db4 e4 a4 e4", // Dsus2 Amaj7
  F: "a3 db4 e3 ab3 a3 db4 [e3,g3] ab3 b3 db4 b3 db4 d4 e4 gb4 db4", // Em
  G: "d4 g4 [b3,c4] db4 d4 g4 b3 db4 e4 db4 [e4,gb4] g4 b4 db5 d5 b4", // Cmaj7 Esus2
  H: "db5 e5 [a4,b4] db5 e4 a4 db4 e4 b4 gb4 d4 gb4 b4 db5 b5 db6", I: "d6@5 [d6,e6] db6@5 [b5,c6] b5@2 ab5 bb5",
  J: "b5@3 db6 d6@5 [d6,e6] db6@2 bb5@2 b5 ab5", K: "gb5@3 bb5@5", L: "gb5@6 gb5 ab5 bb5@3 [g5,ab5] bb3@4",
  M: "~@14 db5 eb5",
})).s("gm_trumpet").gain(0.19)

// other · flute
const flute = note(`<
  ~@4 A B C D E ~@4 F G ~ H I J K L B C D M N O ~@5 A B C D E ~@4 F G ~ H I J K L B C D M N O ~@2
>`.pickRestart({
  A: "~@14 eb5 e5", B: "gb5@4 ~@2 gb5 ab5 gb5 ~ e5 ~ eb5 ~ gb5 ~", C: "e5@13 ~ db5 eb5",
  D: "e5@4 ~@2 e5 gb5 e5 ~ eb5 ~ db5 ~ e5 ~", E: "eb5 ~", F: "~@2 b4 db5 d5@2 gb5@2 e5 ~ [d5,e5] d5 db5@2 b4 ~",
  G: "a4@2 gb4 ~ a4@2 e5@4 d5@4 db5@2", H: "~@6 e6@4 gb6@4 d6 e6", I: "gb6@13 ~ d6 e6", J: "gb6@13 ~ bb5 b5",
  K: "db6@15 ~", L: "bb5@6 a5 ab5 gb5@4 ~@2 eb5 e5", M: "eb5@8 ~@6 b4 db5",
  N: "eb5@4 ~@2 eb5 e5 [eb5,e5] eb5 db5 ~ b4@2 db5 ~", O: "eb5 ab5 b5 ~",
})).s("gm_flute").gain(0.19)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V ~@2 W X Y Z A B C D E F G H I J K L M N O P Q R S T U V ~@2 W X Y Z
>`.pickRestart({
  A: "[b1,ab4] ab1 [e1,bb4] ab1 b1@2 [e2,eb5]@4 [gb2,db5]@2 e1 ab1 eb2 e2, ~@4 b4 ~@7 bb4@2 ab4@2", // E Edim Emaj7 Gb5
  B: "[gb2,gb4] db2 [bb1,ab4] db2 gb1@2 ab1 ~ ab1@2 [eb2,b4]@2 b1 db2 bb1 b1, ~@4 bb4 ~ db5@4 ~@2 bb4@2 b4@2", // Gb Bb7 Abm
  C: "[e1,ab4] b1 bb4 e1 db1@2 f1@2 f1!2 [e1,bb4]@2 f1 f2 [f1,db5]@2, ~@4 b4 ~ ab4@4 ~@2 b4@2 ~@2", // E Edim Db
  D: "gb1 bb2 [gb1,gb4]@2 db2@2 bb2@4 a2 ab2 gb2@2 bb1@2, eb5@2 ~@2 eb5 ~ db5@8 ~@2", // Gb
  E: "b1 b1@3 ~@2 b1!2 ~@2 b1 ~ gb2@2 gb1 ~", F: "db2@2 ~@4 db2!2 ~@2 db2 ~ ab2@2 ab1 ~",
  G: "gb1 gb1@3 ~@2 gb1!3 ~ gb1 gb2 gb1 bb1 db2 e2", H: "b1 b1@3 ~@2 b1!2 ~@2 b1 ~ ab2@4",
  I: "ab1@2 ~@4 ab1!2 g1 ~ g1 ~ gb1@2 f1 e1", J: "db1 db2@3 ~@2 db2!3 ~ db2@2 ~@2 db5 eb5, ~@3 f1",
  K: "e1 ~ ab4@2 b4@2 e1!2 [gb1,eb5] gb4 [gb1,b4] eb5 db5 e4 bb4 db5, e5 ~@2 e5 ~@4, ~ e1@3 ~@8 db2@2 c2@2", // Ebm B5
  L: "b1 b1@3 ~@2 bb1 b1 ~@2 b1 ~ [a1,e4]@4, b4@3 ~", M: "g1@2 ~@4 g1!2 a1 ~ a1 ~ e2@2 a1 ab1",
  N: "gb1 ~@5 b1!3 ~ bb1@4 a1 ~", O: "g1 d1 ~ g1 ~@2 g1!2 a1 ~ a1 ~ e2@2 a1@2",
  P: "gb1 db1 ~ gb1 ~@2 b1!3 ~ bb1@4 a1 gb1", Q: "e1!2 ~@4 e1!2 ~@2 e1 ~ db2 d2 ab1@2",
  R: "f1 db1 ~ db1 ~@2 f1 e1 f1 b1 f1@2 e1 f1 c2 db2", S: "gb1!2 ~@4 gb1 f1 gb1 db2 gb1 ~ f1 gb1 c2 db2",
  T: "gb1@6 ab1 a1 bb1@4 gb1@4", U: "gb3@2 b3 db4 eb4@2 db4 d4 eb4@2 gb4@2 ab4@2 b4@2",
  V: "db5 ab4 e4 db5 c5 ab4 e4 c5 b4 ~ b4 ~ bb4@4",
  W: "[b3,eb4]@4 [bb3,e4]@4 [ab3,f4] ~ [ab3,f4] ~ [bb3,gb4] ~ [b3,g4]@2", // B Bbdim Db Ebm Em
  X: "ab4 eb4 b3 db4 [b4,db5] b4 [ab4,bb4] ab4 bb4@2 ab4@2 eb4@2 gb4@2, db2 ab1 ab2 gb2", // Bsus2 Absus2
  Y: "e1!2 e1@2 e2@2 eb1 e1 gb1 ~ gb1 ~ db2@2 c2 bb1", Z: "b0@2 b1 ~ b1 b0 b1 ~ b1 ~ b0!4 ~@2",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Strings"
const string_ensemble_1_2 = note(`<
  ~ A B C D E F G ~ H ~@2 I J K L M N O P Q R S T ~ U V W X A B C D E F G ~ H ~@2 I J K L M N O P Q R S T ~ U V W X
>`.pickRestart({
  A: "e3 ab3 b3 eb4 ab4 ~ bb4@4 ab4@2 gb4@2 eb4@2", B: "eb3 gb3 bb3 db4 gb4 ~ eb4@4 ab4@2 eb4@2 ab3@2",
  C: "db3 e3 ab3 b3 ab4 ~ b3@4 db4 gb4 db4 gb4 ab4 bb4", D: "b4@2 [ab4,bb4] bb4 b4@2 gb5@8 ~@2",
  E: "[gb3,b3]@2 b3 db4 eb4@2 db4 d4 eb4@2 gb4 ~ ab4@2 b4 ~, ~ bb3 db4 b3", // B5
  F: "db5 ab4 e4 db5 c5 ab4 e4 c5 b4 ~ b4 ~ [db4,bb4]@4, db4 c4 eb4 ~", G: "e4 eb4 gb4 e4",
  H: "ab4 eb4 b3 db4 [b4,db5] b4 [ab4,bb4] ab4 bb4 ~ bb4 ~ [eb4,gb4] eb4 db4 b3", // Bsus2 Absus2 Ebm
  I: "e4 b3 ab3 e4 b3 ab3 b3 e4 eb4@4 db4@4", J: "~@2 g4 a4 b4@2 d5@2 db5 ~ [b4,db5] b4 a4@2 gb4 ~",
  K: "gb4@2 db4 ~ gb4@2 d4@4 e4@4 gb4@2", L: "b4 ~ b4 db5 d5@2 gb5@2 e5 ~ [d5,e5] d5 db5@2 b4@2",
  M: "a4@2 gb4 ~ a4@2 e5@4 d5@4 db5@2", N: "ab4 e4 b3 e4 ab4 ~ ab4 a4 b4@3 [b4,c5] d5@2 db5 b4, ~@12 db5 ~@3",
  O: "ab4 f4 b3 f4 ab4 ~ ab4 a4 b4@3 [b4,c5] d5@2 db5 b4, ~@12 db5 ~@3", // Cmaj7
  P: "db5 b4 gb4 db5 b4 gb4 db5 b4 gb4 db4 gb4 bb4 db5 gb5 bb5 db6", Q: "db5@6 c5 b4 bb4@4 gb4@4",
  R: "b3@4 ~@2 e4 f4 [db4,gb4]@4 [b3,eb4]@4, eb4@3 ~@5, ~ bb3 ~@2", S: "db4@4 c4@4 ab4 ~ ab4 ~ [db4,e4]@4, e4@2 eb4 ~",
  T: "e4 [eb4,gb4] [gb4,bb4] e4", U: "ab4 ~@2 b4 ~@2 ab4 ~ g4 ~@2 b4 ~@2 gb4 ~", V: "f4@6 gb4 g4 ab4@4 b4@2 db5 eb5",
  W: "e5@2 ab4@2 b4@2 e5@2 eb5 gb4 b4 eb5 db5 e4 bb4 db5", X: "b4@12 b4!2 ~@2",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1_3 = note("<~@21 A B C D E F G H ~@20 A B C D E F G H>".pickRestart({
  A: "b2@6 b2 db3 [eb3,b3]@4 [b2,gb3]@4, gb3 ~", B: "db3@6 db3 eb3 [e3,c4]@4 [db3,db4]@4, ab3 ~",
  C: "[gb3,db4]@2 [gb2,e4] [gb3,bb3]", D: "[b2,gb3]@4 b2@3 eb3, ~ ab3",
  E: "[ab2,b3] ~ ab3 [eb3,eb4] ~@2 [ab2,b3] ~ [g2,b3] ~ g3 [eb3,eb4] ~@2 [g2,b3] ~", // Abm Eb Abm G Eb G
  F: "db3 gb2 [gb3,f4] [db3,f4], b3 ~", G: "e3 ab3 bb3 e3, e4 db4", H: "e4@6 eb4 db4 eb4@4 [b2,eb4,gb4]!2 ~@2, b2@3 ~",
})).s("gm_string_ensemble_1").gain(0.18)

// other · piano
const piano = note("<~@8 A B C ~@4 D E ~@7 A B C ~@9 A B C ~@4 D E ~@7 A B C ~@2>".pickRestart({
  A: "~@14 [b4,b5] [db5,db6]", // B Db
  B: "[eb5,eb6]@4 ~@2 [eb5,eb6] [e5,e6] [eb5,e5,eb6,e6] [eb5,eb6] [db5,db6] ~ [b4,b5]@2 [db5,db6] ~", // Eb E Emaj7 Eb Db B Db
  C: "[eb5,eb6] [ab5,ab6] [b5,b6] ~", D: "~@2 g5 a5 b5@2 d6@2 db6 ~ [b5,db6] b5 a5@2 g5 ~", E: "gb5 db5 gb5 ~@5",
})).s("gm_piano").gain(0.4)

// other · drawbar organ · "Rotary Organ"
const drawbar_organ = note("<~ A B C D ~@3 E ~ F G H ~@13 F G ~ A B C D ~@3 E ~ F G H ~@13 F G ~>".pickRestart({
  A: "ab5 ~ bb5 ~ b5 ~ eb6@4 db6@2 bb5@2 ab5@2", B: "gb5 ~ ab5 ~ bb5 ~ db6@4 b5@2 bb5@2 b5@2",
  C: "ab5 ~ bb5 ~ b5 ~ ab5@4 bb5@2 b5@2 db6@2", D: "eb6@2 gb5@2 eb6 ~ db6@8 ~@2",
  E: "[b4,eb5]@4 [bb4,e5]@4 [ab4,f5] ~ [ab4,f5] ~ [b4,gb5] ~ ab5@2", F: "~@14 db7 eb7",
  G: "e7@2 ab6@2 b6@2 e7@2 eb7 gb6 b6 eb7 db7 e6 bb6 db7", H: "~@3 db5",
})).s("gm_drawbar_organ").gain(0.4)

// other · tubular bells
const tubular_bells = note("<~@10 A B C ~@13 A B D ~@9 A B C ~@13 A B D>".pickRestart({
  A: "~@14 db5 eb5", B: "e5 ab4 gb5 e5", C: "eb5 b4 gb5 e5", D: "eb5@4 gb4@4 eb5@4 gb4!2 ~@2",
})).s("gm_tubular_bells").gain(0.19)

// other · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T ~@8 A B C D E F G H I J K L M N O P Q R S T ~@8
>`.pickRestart({
  A: "eb4 e4!3 e4@2 f4 gb4 ~ f4 gb4!2 bb4 b4!3", B: "f4 gb4!3 gb4@2 g4 ab4 ~ g4 ab4!2 eb5 e5 ~ e5",
  C: "bb4 b4!3 [bb4,b4] [ab4,a4] g4 ab4 ~ g4 ab4!2 g4 ab4 bb4 b4", D: "f5 gb5 f4 gb4!3 f5 gb5 f4 gb4!3 f5 gb5 ~@2",
  E: "bb3 b3 bb4 b4 b4@2 bb4 b4 ~@8", F: "c5 db5 db4!2 db4@2 c5 db5 ~@2 eb4 e4 e4@3 ~",
  G: "a3 ab3 a4 bb4 bb4@2 a4 bb4 ~@2 a4 bb4 bb3@4", H: "bb4 b4 b3!2 b3@2 bb4 b4 ~@2 bb4 b4 ab4@4",
  I: "d4 eb4!2 eb4@3 d4 eb4 d4 eb4!2 eb4@3 d4 eb4", J: "c4 db4!3 ~ db4@2 db4 g4 ab4!2 g4 ab4!2 eb4 e4",
  K: "~@2 eb4 e4@3 eb4 e4 gb4@2 gb4!2 e4@2 e4!2", L: "gb3 g3 eb4 e4@3 eb4 e4 gb3 g3 eb4!2 ~ a3@3, ~@3 [b3,db4]",
  M: "b2@2 gb3 g3 g3@4 ~@2 ab3 a3!5", N: "a2!2 f3!2 gb3@4 ~@2 db4 d4 db4 d4!3", O: "d3@2 bb3 b3 b3@4 ~@2 c4 db4!5",
  P: "c3@2 ab3 a3 a3@4 ~@2 db4 d4!3 gb4 g4", Q: "db4 d4!9 db4 d4 ab4!2 g4 ab4", R: "db4 d4!9 db4 d4 db4!2 c4 db4",
  S: "f4 gb4 gb3!4 f4 gb4 gb3!6 f4 gb4", T: "f4 gb4 db4!4 c4 db4!5 d4@2 d4!2",
})).s("gm_acoustic_guitar_steel").gain(0.14)

// other · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~ A B C D E F G H I J K L M N M O P Q R S ~@8 A B C D E F G H I J K L M N M O P Q R S ~@8
>`.pickRestart({
  A: "g3 ab3!3 ab3@2 a3 bb3 ~ a3 bb3!2 eb4 e4!3", B: "bb3 b3!3 b3@2 d4 eb4 ~ d4 eb4!2 bb4 b4 ~ b4",
  C: "eb4 e4!3 [eb4,e4] [db4,d4] c4 db4 ~ c4 db4!2 c4 db4 eb4 e4", D: "c5 db5 c4 db4!3 c5 db5 c4 db4!3 c5 db5 ~@2",
  E: "f3 gb3 f4 gb4 gb4@2 f4 gb4 ~@8", F: "g4 ab4 ab3!2 ab3@2 g4 ab4 ~@2 c4 db4 db4@3 ~",
  G: "e3 f3 eb4 e4 e4@2 eb4 e4 ~@2 c4 db4 db4@4", H: "e3 f3 eb4 e4 e4@2 eb4 e4 ~@2 eb4 e4 gb3@4",
  I: "bb3 b3!2 b3@3 bb3 b3 bb3 b3!2 b3@3 bb3 b3", J: "g3 ab3!3 ~ ab3@2 ab3 d4 eb4!2 d4 eb4!2 bb3 b3",
  K: "bb2 b2 bb3 b3@3 bb3 b3 db4@2 db4!2 b3@2 b3!2", L: "bb2 b2 g3 ab3@3 g3 ab3 bb2 b2 b3!2 ~ d3@3, ~@3 [gb3,a3]",
  M: "g2@2 db3 d3 d3@4 ~@2 eb3 e3!5", N: "gb2!2 c3 db3 db3@4 ~@2 gb3 g3 gb3 g3!3",
  O: "a2@2 eb3 e3 e3@4 ~@2 f3 gb3!3 bb3 b3", P: "f3 gb3!9 f3 gb3 d4!2 db4 d4", Q: "bb3 b3!9 bb3 b3 gb3!2 f3 gb3",
  R: "c4 db4 db3!4 c4 db4 db3!6 c4 db4", S: "c4 db4 gb3!4 f3 gb3!5 ~ bb2 gb4!2, ~@6 [d3,e3] ~",
})).s("gm_electric_guitar_clean").gain(0.14)

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

// drums · rim
const rim = s("rim").struct("<~@17 A B C ~@8 D ~@16 A B C ~@8 D>".pickRestart({
  A: "~@2 x!3 ~@7 x ~@3", B: "~@2 x!2 ~@5 x ~@2 x!2 ~@2", C: "~@3 x ~@2 x!2 ~@3 x!2 ~ x!2", D: "~@8 x!3 ~@5",
})).gain(0.4)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@3 A B ~@20 C ~@5 A B ~@20 C ~@3>".pickRestart({
  A: "~@2 x!2 ~@12", B: "~@4 x ~@6 x!2 ~@3", C: "~@15 x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A B ~@20 C D ~@4 A B ~@20 C D ~@2>".pickRestart({
  A: "x!2 ~@14", B: "~@2 x ~@6 x!2 ~@5", C: "~@7 x", D: "~@12 x!3 ~",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@3 B ~ C ~ D ~ E ~@2 C F C F A G H I ~@3 B ~@3 E A@3 B ~ C ~ D ~ E ~@2 C F C F A G H I ~@3 B ~@3 E
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~ x ~@2", D: "~@2 x ~@4 x", E: "~@3 x", F: "~ x!3", G: "~@5 x ~ x", H: "~ x",
  I: "~@3 x ~@2 x ~",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@21 B ~@5 A ~@21 B ~@2>".pickRestart({
  A: "~ x", B: "~@11 x ~@4",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<A B@2 C D ~@15 E@2 ~@4 F E ~ B@2 C D ~@15 E@2 ~@4 F E ~>".pickRestart({
  A: "~@3 x", B: "x!2 ~@2", C: "~ x ~@2", D: "~@3 x ~@4", E: "x", F: "x!3 ~",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@6 A ~ B ~@25 A ~ B ~@20>".pickRestart({
  A: "~@10 x ~@2 x ~@2", B: "~@8 x!3 ~@2 x ~@2",
// … 7 more lines