Strudelify

Goodbye Girl

Bread

KeyE♭ majorTempo115 bpm
0:00/0:00
// Goodbye Girl — Bread
// 115.2 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (6/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115.2/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 · piano
const piano = note(`<
  A B C D E B F D G H I J K L M N O H I J K L P Q O ~@14 R B F D G H I J K L M N O H I J K L P Q O ~@14 R S T U@5
>`.pickRestart({
  A: "~ c-1 ~@14", B: "eb4 ~@5 eb4@2, g4@3 g4@5, ~ bb3@6 ~", C: "~@2 g4 f4@2 ~ [eb4,ab4]@2, eb4@3 ~, ~ bb3@7",
  D: "eb4@6 c4@2 eb4@4 c4@3 ~", E: "~@12 d4@3 ~, eb4@3 ~, ~@3 bb3@5", F: "~@2 g4 f4@2 ~ [eb4,g4]@2, d4@3 ~, ~ bb3@7",
  G: "~@3 bb3@2 ~ bb3@2, d4@11 ~@5, ~ f3@3 ~ f3@3", H: "~@2 bb3 ~@4 eb3, eb3@3 bb3, ~ g3@3, ~@3 eb4@4 ~",
  I: "~@3 bb3, d3@7 ~, ~ g3@7, ~@2 bb3@3 ~@3, ~@3 d4@5", J: "~@3 eb4, eb3@3 ~, ~@2 c4@7 ~ c4@5 ~, ~@6 g3@7 ~@3",
  K: "~@2 d4@2 ~@2 bb3 g3, g3@5 ~@3 f4@7 ~, ~@2 bb3@6 g3@5 ~@3, ~@10 d4@5 ~",
  L: "~@2 eb4 ~ f3 ab3 f3 c4, ab3@5 ~@11, ~@2 c4@4 f4@7 ~@3",
  M: "~@2 g3 ~@4 c4, c3@6 c4@4 g3@5 ~, ~@2 eb3@5 ~ eb3@4 c3@4",
  N: "~@3 c4 ~@2 c4 eb3, eb4@3 ~ eb4@2 ~@2, ~ ab3@3 ~ ab3@3, ~@2 eb3@3 ~@3",
  O: "~@2 d3 ~ d3 ~@2 d4, d4@11 ~@5, ~ f3@3 ~ f3@3, ~@6 bb3@5 ~ bb3@4",
  P: "~@2 g3 ~@4 bb3, d4@6 bb3@4 g3@5 ~, ~ d3@3 f3@2 d3@2",
  Q: "~@3 bb3 ~@2 bb3 d3, d4@3 ~ d4@2 ~@2, ~ f3@3 ~ f3@3, ~@2 d3@3 ~@3", R: "~@12 d4@3 ~, d4@11 ~@5, ~@3 bb3@5",
  S: "eb4 ~@5 eb4@2, g4@3 g4@5, ~@2 bb3@13 ~", T: "~@4 g4@2 ~ f4@5 ~ [eb4,ab4]@3, eb4@3 ~, ~ bb3@7",
  U: "[~@5 eb4@2 eb4@7 c4@4 [c4,eb4]@9 [bb3,d4]@9 [bb3,eb4,g4]@42 ~@2, ~ c4@11 ~@68]/5", // Cm Bb Eb
})).s("gm_piano").gain(0.13).pan(0.3)

// chords · piano
const piano_2 = note(`<
  ~ A B C@2 A B D@2 E F G H I@2 J@2 E F G K L M N@2 O P Q R S T U V W X Y Z AA AB AC A B D@2 E F G AD I@2 J@2 E F G AE L
  M N@2 O P Q R S T U V W X Y Z AA AB AC AF AG@6
>`.pickRestart({
  A: "~@3 g5 ~ [eb5,g5] ~ g5, eb5!2 bb5@2, ~@2 bb4@13 ~, ~@3 eb5", // Eb
  B: "~@2 [eb5,g5] f5!2 [eb5,g5] eb5 ab5, f5@2 ~ d5@2 ~@3, ~@2 bb4@11 ~@3", // Eb
  C: "[~ c6 ab5 ~ eb5 ~@4 d5 f5 ~@2 g5@2 g4, ab4@6 c5@4 ab5@4 f5@5 ~@3 f5@4 ~@6, ~@6 c5@2 bb4@3 ~ d5@3 ~]/2",
  D: "[~@2 c6@2 ab5@2 ~@2 eb5@2 ~@10 bb4@2 d5@2 eb5@2 f5@5 ~, ab4@3 c5@2 ab5@2 f5@2 f4@3 ~@4, ~@12 c5@4 d5@5 ~@11]/2",
  E: "~@2 f5 ~@3 [bb4,g5] bb4, bb4@7 ~ bb4@4 ~@4, g5@2 ~@3 eb5@3, ~@2 eb5@4 [eb5,g5]@5 ~@5", // Eb
  F: "[bb4,d5,f5]@2 ~ bb4@2 ~@2 d5, ~@4 g4@5 ~ g4@5 ~, ~@3 f5@5, ~@3 d5@3 bb4@2", // Bb
  G: "~@3 [c5,eb5,g5]@2 ~ [c5,eb5,g5]@2, [c5,g5]@4 g4@5 ~ g4@5 ~, ~ eb5@2 ~@5", // Cm C5
  H: "~@5 [bb4,f5]@2 d4, g4@4 g4@4 d5@5 ~@3, ~ d4@4 ~@3, ~@3 bb4@2 ~@3", // Bb5
  I: "[~@2 c5 ab4@2 ~ ab4 ~@4 bb4@2 g4 bb4 g4, f4@15 ~ g4@5 ~@11, ~ f5@7 ~ g5@3 ~@4, ~@4 eb5@9 ~ eb5@5 ~ eb5@4 ~@8, ~@10 c5@5 ~@17]/2",
  J: "[~ eb5 ab5 ~ eb5 ~@5 bb4 d5 eb5 ~ bb4 f4, ab4@3 c5@2 ab5@2 f5@2 f4@3 ~@4, ~@12 c5@4 d5@5 ~@5 f5@5 ~]/2",
  K: "g4 ~@5 g4 d4, ~ d4@4 ~@3, ~@4 g4@4 d5@5 ~@3, ~@6 bb4@4 [bb4,f5]@5 ~", // Bb5
  L: "~@2 c5 ab4@2 ~ ab4 eb5, f4@15 ~, ~ f5@7, ~@4 eb5@9 ~@3, ~@10 c5@5 ~",
  M: "~@5 g4 bb4 g4, g4@2 d5@2 d5@3 ~, ~@2 g5@6 ~@2 f5@5 ~, ~@3 bb4@2 ~@3",
  N: "[~ d5 f5 ~ d5 ~@5 bb4 d5 eb5 ~ bb4 f4, bb4@5 ~ bb4@4 ab5@4 f5@4 f4@6 ~@8, ~@12 bb4@4 d5@5 ~@5 f5@5 ~]/2",
  O: "~@2 bb4 ~@2 bb4 ~ bb4, eb4@3 ~@3 g4@2, ~@2 g4@4 eb5@9 ~",
  P: "~@2 bb4 ~@2 bb4 ~ bb4, d4@5 ~ d5@9 ~, ~@2 g4@7 ~@3 g4@4", Q: "~@5 c5 ~ c5, eb4@7 ~, ~ ab4@2 eb5@5, ~ c5 ~ ab4",
  R: "~@2 d5 ~ d5 f4 d5 f4, f4@5 bb4@3, ~@2 bb4@4 f5@9 ~", S: "~@2 bb4 eb5@2 bb4 ~ bb4, eb4@7 ~, ~@2 g4@13 ~, ~@3 eb5",
  T: "~@2 bb4 ~ bb4 ~@2 bb4, d4@15 ~, ~ g4@2 d5@5, ~@5 g4@3",
  U: "eb4@4 ~@8 eb5@3 ~, ~@4 c4@4 c5@5 ~@3, ~@3 ab4@2 ab4@3", V: "~ c4 ab4 c5 [eb4,ab4] bb4@3, eb4@7 ~@3 d5@4 ~@2",
  W: "g4 ~@2 g4 ~ bb4 g4 eb4, eb5@4 eb4@4 c5@5 ~@3, ~@2 c4@7 ~@7, ~@6 eb5@7 ~@3",
  X: "g4 ~ f4 g4 bb4 d5 bb4 g4, ~ d4@2 ~@5", Y: "~@2 g4 c5@2 g4 c5 g4, c4, ~@2 eb4@13 ~",
  Z: "~@3 b4@2 g4 eb4 f4, db4 ~, ~ f4@4 ~@3, ~@4 ab4@5 ~@7", AA: "~@4 g4@2 bb4@4 ~@2 bb4@3 ~, eb4@7 ~, ~@10 g4@5 ~",
  AB: "~@2 a4@2 g4@2 f4@3 ~ f4@2 g4@4, f4 ~@3", AC: "~ d5 f5 ~@2 bb4@2 g4, bb4@3 f4@2 ~@3, ~@4 d5@3 ~",
  AD: "g4 ~@4 [bb4,f5]@2 d4, ~ d4@4 ~@3, ~@4 g4@4 d5@5 ~@3, ~@3 bb4@2 ~@3", // Bb5
  AE: "~@6 g4 d4, g4@4 g4@4 d5@5 ~@3, ~ d4@4 ~@3, ~@6 bb4@4 [bb4,f5]@5 ~", // Bb5
  AF: "~@3 g5 ~ [eb5,g5] ~ g5, eb5@2 eb5@3 ~ eb5@2, ~@2 bb4@13 ~, ~ bb5", // Eb
  AG: "[~@4 [eb5,g5]@2 ~ f5@2 f5@2 [eb5,g5]@2 eb5@2 ab5@2 ~@2 c6@2 ab5@2 ~@2 eb5@3 ~@8 d5@2 f5@2 ~@5 g5@2 ~@3 bb4@2 [eb5,g5]@42 ~@2, f5@4 ~@3 d5@4 ~@12 c5@4 ~ ab5@4 f5@6 ~@3 f5@5 ~ f5@5 ~@44, ~@2 bb4@12 ~@3 ab4@7 ~@6 c5@4 bb4@8 ~ d5@6 ~@47]/6", // Eb
})).s("gm_piano").gain(0.18).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@4 A B C@2 D ~@8 E@2 F G H@5 I J I K I L@2 J M N ~@8 B O P Q R Q S T U@2 V W H@5 I J I K I L@2 J M N ~@7 X@2 ~@2
>`.pickRestart({
  A: "~@2 c5 d5", B: "eb5", C: "[d5@2 eb5 d5@2 eb5@2 bb4@2 c5@7]/2", D: "bb4@15 ~", E: "[g5@3 d6]/2", F: "c6@3 bb5",
  G: "g5", H: "[~@2 bb5@2 [eb5,g5], f5@13 ~@3]/5", I: "[d5,f5]", J: "[c5,eb5]", K: "[eb5,g5]",
  L: "[[c5,eb5]@13 [d5,f5]@3]/2", M: "[bb4,d5]", N: "[ab4,c5]", O: "bb4 d5", P: "c5@3 bb4", Q: "g4", R: "f4", S: "ab4",
  T: "bb4", U: "[bb5@3 f6]/2", V: "eb6@7 ~", W: "~@2 bb5 g5 c6 bb5@3", X: "[~@2 ab5@4 g5@2 ~ g5@4 f5@7 ~@12]/2",
})).s("gm_string_ensemble_2").gain(0.16).pan(0.3)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@4 A B@2 C D ~@66 E@7>".pickRestart({
  A: "~@3 bb4 ~@4", B: "g4/2", C: "eb4", D: "d4@15 ~", E: "[bb4@33 c5@26 ~@9 eb5@42 ~@2, eb5@50 ~@9 bb4@51 ~@2]/7",
})).s("gm_string_ensemble_2").gain(0.08).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~@5 A@2 B C ~@8 D E F G H I J K L@2 M N@3 O@2 P@2 M ~@10 D G H Q@2 E D E F G H I J K L@2 M N@3 O@2 P@2 M ~@4 R@7
>`.pickRestart({
  A: "[g5@8 f5@2 g5 f5@2 g5@3, bb4]/2", B: "d5 eb5@7, ab4", C: "[bb4,d5]@7 ~", D: "eb4", E: "d4", F: "c4", G: "bb3",
  H: "ab3", I: "g3", J: "d4@3 eb4", K: "f4", L: "[g4,bb4]/2", M: "[eb4,ab4]", N: "[f4 g4@2, bb4]/3",
  O: "[[eb4,ab4]@13 [f4,bb4]@3]/2", P: "[c5 bb4, g4]/2", Q: "[c4@7 eb4]/2",
  R: "[g5@16 f5@4 g5@3 f5@4 g5@6 [ab4,eb5]@17 d5@18 [eb4,g4]@42 ~@2, bb4@33 ~@17 bb4@60 ~@2]/7", // Ab5 Eb
})).s("gm_string_ensemble_2").gain(0.2).pan(0.7)

// chords · overdriven guitar
const overdriven_guitar = note("<~@16 A B ~@7 C D ~@2 E@2 ~@29 C D ~@2 E@2 ~@16>".pickRestart({
  A: "~@8 [d5,eb5]@2 d5 ~ d5@2 c5@2", B: "bb4@13 ~@3", C: "~@4 eb5@3 ~, ~ eb4@3 ~@4, ~ g4@2 ~, ~@6 bb4@9 ~",
  D: "~@8 d5@7 ~, ~ d4@3 ~@4, ~ g4@2 ~, ~@3 bb4@4 ~", E: "[~@4 g4@2 bb4@2 eb5@2 f5@2 eb5@2 d5@15 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.2).pan(0.4)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@18 A B ~@16 C D E F ~@7 G F ~@2 H I A B ~@16 C D E F ~@3 J@4>".pickRestart({
  A: "~ f5", B: "eb5@7 ~", C: "bb3@3 ab3@5", D: "~@4 bb4 ~ bb4@4 bb4@6, g3@7 ~", E: "~@2 a4 a4@2 a4@3", F: "ab4@15 ~",
  G: "~@2 g4 bb4 d5@2 g4@2", H: "~@8 [d5,eb5]@2 d5 ~ d5@2 c5@2", I: "bb4@13 ~@3", J: "[~@11 eb5@2 d5@7 eb5@42 ~@2]/4",
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@4 A B C D E F G H I J I K L M N H I O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@2 AI E AJ AK AL AM J H K AN M N
  H AO O P Q R S T U AP W X Y Z AA AB AC AD AE AF AG AQ@2 AR@5
>`.pickRestart({
  A: "~ bb1", B: "eb2", C: "g2", D: "ab2@15 ~", E: "bb2!2", F: "eb2@15 ~", G: "d2@15 ~", H: "c2@15 ~", I: "g2@15 ~",
  J: "f2@15 ~", K: "ab1@15 ~", L: "bb1@15 ~", M: "eb2@3 eb2", N: "d2@3 d2", O: "f2@10 ~@2 f2@3 ~", P: "g2@3 g2",
  Q: "bb1@7 ~ bb1@3 ~ bb1@3 ~", R: "bb1@5 ~ bb1@2 bb1@4 bb1@3 ~", S: "eb2@5 ~ eb2 ~ eb2@3 ~ eb2@2 f2@2",
  T: "g2@5 ~ g2 ~ g2@2 d2@2 bb1@4", U: "ab2@5 ~ ab2 ~ ab2@5 ~ bb2 ~", V: "bb2@2 ~ bb2 c3 bb2 g2 f2",
  W: "eb2@5 ~ eb2@2 f2@2 g2@2 bb2@2 c3@2", X: "g2@4 ~@2 g2 ~ g2@4 d2@2 bb1@2", Y: "ab2@4 ~@2 ab2 ~ ab2 ~ ab2@3 ~ ab2 ~",
  Z: "ab2 ~ ab2@2 ~@2 ab2@2 eb2@2 bb1@6", AA: "c2@7 ~ c2@4 f2@2 gb2@2", AB: "g2@4 ~@2 g2 ~ g2@3 ~ g2@3 ~",
  AC: "ab2@3 ~ ab2 ~ ab2 ~ ab2@4 eb2@4", AD: "db2@13 ~@3", AE: "c2@3 g2, ~@12 f2 ~@3", AF: "f2@12 f2@3 ~",
  AG: "bb1@7 ~", AH: "[eb2@29 ~ eb3 ~]/2", AI: "eb3@15 ~", AJ: "eb2@11 ~ eb2@4", AK: "d2@10 ~@2 d2@3 ~",
  AL: "c2@11 ~ c2@4", AM: "g2@7 g2", AN: "bb1@11 ~ bb1@3 ~", AO: "g2@4 ~ g2@3",
  AP: "bb2@4 ~@2 bb2 ~ c3@2 bb2@2 g2@2 f2@2, ~@8 bb2 ~@7", AQ: "[eb2@28 ~ eb2@3]/2",
  AR: "[~ eb3@26 bb2@9 eb2@42 ~@2]/5",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@23 A B C D E F C D G H I J G K L M N ~@18 A B C D E F C D G H I J G K L M N ~@7
>`.pickRestart({
  A: "~@8 [bb4,d5,f5] ~ [bb4,d5,f5]@3 ~ [bb4,d5,f5] ~", // Bb
  B: "[bb4,d5,f5]@3 ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5]@2", // Bb
  C: "[bb4,eb5,g5]!3 [bb4,eb5,g5]@2 [bb4,eb5,g5]!3", D: "[bb4,d5,g5]!3 [bb4,d5,g5]@2 [bb4,d5,g5]!3",
  E: "[ab4,c5] [ab4,c5,eb5]!2 [ab4,c5,eb5]@2 [ab4,c5,eb5]!3, f5", // Ab
  F: "bb4!2 [bb4,d5,f5] [bb4,d5,f5]@2 [bb4,d5,f5]!3, [d5,f5] ~@3", // Bb Dm
  G: "c5!2 [ab4,c5,eb5] [ab4,c5,eb5]@2 [ab4,c5,eb5]!3, [ab4,eb5] ~@3", H: "[ab4,c5,eb5]!5 [bb4,d5,f5]@3",
  I: "[g4,c5,eb5]!5 [c5,eb5]!2 [g4,c5,eb5], ~@5 g4@2 ~", J: "[bb4,d5]!3 [g4,bb4,d5]!5, g4@3 ~@5",
  K: "[f4,ab4,b4,d5]@15 ~", L: "[g4,bb4,eb5]@7 ~", M: "[a4,eb5,f5]@15 ~", N: "[ab4,bb4,d5]@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.3)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@23 A B C D E@2 F@2 G@2 H I ~@16 J@2 K L M N ~ O P C D E@2 F@2 Q@2 H I ~@12
>`.pickRestart({
  A: "~@4 bb3 ~ bb3 ~ bb3@2 c4@2 eb4@2 g4@2", B: "bb4@2 c5@2 f4@4 g4@2 bb4@5 ~", C: "~@2 g4@2 eb5@3 ~, ~@2 bb4@5 ~",
  D: "~@8 [bb4,d5]@7 ~, ~@4 g4@11 ~", E: "[~@4 bb4 ~ bb4 ~ bb4@4 ab4@2 bb4@4 c5@2 f4@10 ~@2]/2",
  F: "[~@4 eb4@2 g4@2 bb4@4 c5@2 [g4,bb4]@11 ~@7]/2", G: "[~@7 c5@2 eb5 c5 bb4 g4 f4@3]/2", H: "eb4", I: "f4",
  J: "[~@4 d4@2 eb4@2 f4@2 bb4@4 f4@17 ~]/2", K: "~ f5", L: "eb5", M: "~ d5 bb4 g4 [bb4,c5] bb4@2 f4", N: "eb4@15 ~",
  O: "~@2 [bb4,eb5]@2 ~ [bb4,eb5]@2 [bb4,eb5]", P: "~ [bb4,eb5]@6 ~",
  Q: "[~@14 c5@4 eb5@2 c5@2 bb4@2 g4@2 f4@4 eb4 f4]/2",
})).s("gm_distortion_guitar").gain(0.3).pan(0.6)

// other · electric guitar jazz
const electric_guitar_jazz_2 = note("<~@36 A B C ~@32 A B C ~@4 D@4>".pickRestart({
  A: "db4@3 b3@5", B: "~@4 g4 ~ g4@4 g4@6, bb3@7 ~", C: "~@4 g4 ~ g4@4 g4@6",
  D: "[~@2 ab4@4 g4@4 ~ g4@2 f4@7 g4@42 ~@2, ~@2 g4 ~@61]/4",
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.6)

// other · melodic tom
const melodic_tom = note(`<
  ~@43
  [bb4 ~@3 g4@5 ~ eb4 ~ c4@3 ~]
  ~@14
  [~@2 eb4@3 ~@3]
  [~@2 bb3 ~ ab3@5 ~ g3 ~ f3@3 ~]
  ~@22
>`).s("gm_melodic_tom").gain(0.3).pan(0)

// drums · kick
const kick = s("bd").struct("<~@25 A@3 B A@5 B ~@2 B@3 ~@4 B@16 A@3 B A@5 B ~@12>".pickRestart({
  A: "x ~@6 x", B: "x",
})).gain(0.25)

// drums · rim
const rim = s("rim").struct("<~@37 [~ x]!3 ~@4 [~ x]!7 [~@3 x!4 ~] ~@30>").gain(0.3)

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

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@5 x!2 ~] ~@14 [x!2 ~@2] ~@19 [~@5 x!2 ~] ~@18>").gain(0.25)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~ x] ~@34 [~ x] ~@18>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@33 A@2 B@2 ~@3 B ~@10 C ~@3 C ~@12 A@2 B@2 ~@3 B ~@3 D ~@2>".pickRestart({
  A: "~ x", B: "x", C: "~@3 x", D: "~ x ~@2",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@25 A ~@3 A ~@2 B A ~@26 A ~@3 A ~@2 B A ~@13>".pickRestart({
  A: "x", B: "~@5 x ~@2",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@35 A ~@3 B ~ C D ~@27 A ~@3 B ~@7>".pickRestart({
// … 8 more lines

More by Bread