Strudelify

Run for Cover

Basia

KeyE majorTempo112 bpm
0:00/0:00
// Run for Cover — Basia
// 112 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "BRASS" brass section (copy of ch 4 "BRASS2" synth brass 1)
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · "BASS"
const bass = note(`<
  ~@8 A B C D E D E D E D E D E D E D E F G F H D E D I D E D E D E D E D E D E F G F H D E D E D E D E F G J K F G J L
  D E D E D E D M ~@8 N@2 ~@2 D E D E D E D O D E D E D E D E P ~@6
>`.pickRestart({
  A: "~@8 e3 ~@3 f#3 ~@3", B: "f#2@2 ~ f#2 d#3 e3 ~ f#3 ~ e3 ~ d#3 e3@2 d#3 c#3",
  C: "f#2@2 ~ f#2 d#3 e3 ~ g#3 ~ e3 ~ d#3 e3@2 d#3 c#3", D: "f#2 ~@2 f#2 d#3 e3 ~ f#3 ~ e3 ~ d#3 e3@2 d#3 c#3",
  E: "f#2 ~@2 f#2 d#3 e3 ~ g#3 ~ e3 ~ d#3 e3@2 d#3 c#3", F: "b2 ~@2 b2 g#3 a3 ~ b3 ~ a3 ~ g#3 a3@2 g#3 f#3",
  G: "b2 ~@2 b2 g#3 a3 ~ c#4 ~ a3 ~ g#3 a3@2 g#3 f#3", H: "b2 ~@2 b2 g#3 a3 ~@2 c#3 ~@3 e3@2 ~@2",
  I: "f#2 ~@2 f#2 d#3 e3 ~ g#3 ~ e3 ~ d#3 e3@2 d#3 ~", J: "a2 ~@2 a2 f#3 g3 ~ a3 ~ g3 ~ f#3 g3@2 f#3 e3",
  K: "a2 ~@2 a2 f#3 g3 ~ b3 ~ g3 ~ f#3 g3@2 f#3 e3", L: "a2 ~@2 a2 f#3 g3 ~@2 b2@2 ~@2 c#3@2 ~@2",
  M: "c#4 ~ c4 ~ b3 ~ a3 ~", N: "[f#3@3 ~]/2", O: "[c#3,c#4] ~ c4 ~ b3 ~ a3 ~", P: "f#2 ~@15",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · synth brass 1 · "BRASS2"
const synth_brass_1 = note("<~@8 A B ~@54 C D ~@7 E F G F G F G ~@4 H ~@23>".pickRestart({
  A: "~@4 [f#4,c#5,f#5] ~ [e4,a4,e5,a5] ~", B: "[b4,f#5,b5,f#6,b6] ~@7", C: "~@4 [b4,f#5,b5,f#6] ~ [c#5,g#5,c#6,g#6] ~",
  D: "[b4,f#5,b5,f#6] ~@7", E: "[f#4,a#4,f#5] ~@7", F: "~@6 [f#4,b4,f#5,b5] ~", G: "[f#4,a#4,f#5,a#5] ~@7",
  H: "~@4 [g#4,c#5,g#6] ~ [e5,g#5,b5,g#6,b6] ~, ~@8 g#5 ~@3 e6 ~@3", // C#5 E
})).s("gm_synth_brass_1").gain(0.48)

// chords · synth brass 1 · "BRASS2" · soft notes
const synth_brass_1_soft = note("<~@8 A ~@56 B ~@7 C D E D E D E ~@28>".pickRestart({
  A: "~@4 f#6 ~ a6 ~", B: "b6 ~@7", C: "[f#6,a#6,a#7] ~@7", D: "~@6 [f#6,b6] ~", E: "[f#6,a#6] ~@7",
})).s("gm_synth_brass_1").gain(0.08)

// chords · electric guitar muted · "GUITAR MUTES"
const electric_guitar_muted = note(`<
  ~@9 A B C D C D C D ~@12 E@4 F@4 ~@2 C D ~@2 C D ~@4 G@3 H F@4 ~@8 C D C D C D C ~@13 G@3 H I@3 ~ G@3 H J@3 ~@8
>`.pickRestart({
  A: "~@3 [f#3,f#4,c#5] [a#3,f4,a#4,f5] [b3,f#4,b4,f#5]@2 [c#4,g#4,c#5,g#5]@2 [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5] [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5] [e3,b3,e4,b4]", // F#5 A#5 B5 C#5 B5 A#5 B5 A#5 …
  B: "[f#3,c#4,f#4,c#5]@2 ~ [f#3,c#4,f#4,c#5] [a#3,f4,a#4,f5] [b3,f#4,b4,f#5]@2 [c#4,g#4,c#5,g#5]@2 [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5] [c#4,g#4,c#5,g#5]@2 ~@2", // F#5 A#5 B5 C#5 B5 A#5 C#5
  C: "~@3 [f#4,c#5] [a#4,f5] [b4,f#5]@2 [c#5,g#5]@2 [b4,f#5]@2 [a#4,f5] [b4,f#5]@2 [a#4,f5] [e4,b4]", // F#5 A#5 B5 C#5 B5 A#5 B5 A#5 …
  D: "[f#4,c#5]@2 ~ [f#4,c#5] [a#4,f5] [b4,f#5]@2 [c#5,g#5]@2 [b4,f#5]@2 [a#4,f5] [c#5,g#5]@2 ~@2", // F#5 A#5 B5 C#5 B5 A#5 C#5
  E: "[[c#4,g#4,c#5,g#5]@5 ~@3 [e4,b4,e5,b5]@3 ~ [g#4,d#5,g#5,d#6]@2 ~ [f#4,c#5,f#5,c#6]@2 [c#4,g#4,c#5,g#5]@2 ~@5 [e4,b4,e5,b5]@4 [g#4,d#5,g#5,d#6]@3 [f#4,c#5,f#5,c#6]@2 [c#4,c#5,g#5,c#6,g#6] ~@6 [c#4,g#4,c#5,g#5] ~ [b3,f#4,b4,f#5]@2 ~ [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5]@4 ~@13, ~@22 [a#3,f4,a#4,f5] ~@9]/4", // C#5 E5 G#5 F#5 C#5 E5 G#5 F#5 …
  F: "[~@8 [e4,b4,e5,b5]@3 ~ [g#4,d#5,g#5,d#6]@2 ~ [f#4,c#5,f#5,c#6]@2 [c#4,g#4,c#5,g#5]@2 ~@5 [e4,b4,e5,b5]@4 [g#4,d#5,g#5,d#6]@3 [f#4,c#5,f#5,c#6]@2 [c#4,c#5,g#5,c#6,g#6] ~@6 [c#4,g#4,c#5,g#5] ~ [b3,f#4,b4,f#5]@2 ~ [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5]@4 ~@13, ~@22 [a#3,f4,a#4,f5] ~@9]/4", // E5 G#5 F#5 C#5 E5 G#5 F#5 C#5 …
  G: "[[c#4,g#4,c#5,g#5]@5 ~@3 [e4,b4,e5,b5]@3 ~ [g#4,d#5,g#5,d#6]@2 ~ [f#4,c#5,f#5,c#6]@2 [c#4,g#4,c#5,g#5]@2 ~@5 [e4,b4,e5,b5]@4 [g#4,d#5,g#5,d#6]@3 [f#4,c#5,f#5,c#6]@2 [c#4,c#5,g#5,c#6,g#6] ~@6 [c#4,g#4,c#5,g#5] ~ [b3,f#4,b4,f#5]@2 ~ [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5], ~@22 [a#3,f4,a#4,f5] ~]/3", // C#5 E5 G#5 F#5 C#5 E5 G#5 F#5 …
  H: "~ [c#5,g#5] [f#5,g#5,c#6] [b5,c#6,f#6] [a#5,f6,f#6] [f#5,c#6,f6] [g#5,c#6,d#6] [e5,b5,d#6] [f#5,b5,c#6] [c#5,g#5,c#6] [e5,g#5,b5] [c#5,g#5,b5] [c#5,g#5]!2 [b4,f#5,g#5] [c#5,f#5,g#5]", // C#5 F#sus2 Bsus2 F#maj7 G#sus4 Emaj7 F#sus4 C#5 …
  I: "[~@8 [e4,b4,e5,b5]@3 ~ [g#4,d#5,g#5,d#6]@2 ~ [f#4,c#5,f#5,c#6]@2 [c#4,g#4,c#5,g#5]@2 ~@5 [e4,b4,e5,b5]@4 [g#4,d#5,g#5,d#6]@3 [f#4,c#5,f#5,c#6]@2 [c#4,c#5,g#5,c#6,g#6] ~@6 [c#4,g#4,c#5,g#5] ~ [b3,f#4,b4,f#5]@2 ~ [b3,f#4,b4,f#5]@2 [a#3,f4,a#4,f5], ~@22 [a#3,f4,a#4,f5] ~]/3", // E5 G#5 F#5 C#5 E5 G#5 F#5 C#5 …
  J: "[~@8 [e4,b4,e5,b5]@3 ~ [g#4,d#5,g#5,d#6]@2 ~ [f#4,c#5,f#5,c#6]@2 [c#4,g#4,c#5,g#5]@2 ~@5 [e4,b4,e5,b5]@4 [g#4,d#5,g#5,d#6]@3 [f#4,c#5,f#5,c#6]@3 ~@14]/3", // E5 G#5 F#5 C#5 E5 G#5 F#5
})).s("gm_electric_guitar_muted").gain(0.8)

// chords · piano · "PIANO A."
const piano = note(`<
  ~@10 A B@2 ~ A C@3 ~@7 D@2 E@2 ~ A B@2 ~ A F@2 ~@8 G H I ~@2 A B@2 ~ A F@2 J K L M J K L N ~ A B@2 ~ A O@2 P Q P Q P Q
  P Q ~@5 A B@2 ~ A O@2 ~ A B@2 ~ A R@2 ~@7
>`.pickRestart({
  A: "~@3 [b3,e4]", B: "[[f#3,a#3]@29 ~ a#3@2]/2", C: "[a#3@11 ~@5]/3", D: "[[e3,a3,e4]@7 [e3,a3,e4,a4]]/2",
  E: "[[b3,d#4]@11 ~@5]/2", F: "a#3/2", G: "b3 [c#5,d#5,f#5] b5@14, ~@2 g#5 ~@13", H: "~@3 [e3,a3,e4,a4]",
  I: "[b3,d#4]", J: "[a3,c#4,e4,a4]@7 ~@5 [a3,c#4,e4,a4]@4", K: "[f#3,a3,c#4]@7 ~@9",
  L: "[g3,b3,d4,g4]@7 ~@5 [g3,b3,d4,g4]@4", M: "[e3,b3,e4,g4]@7 ~@9", N: "[e3,b3,e4,g4]@7 ~ [b2,b4] ~@3 [c#4,g#4] ~@3",
  O: "[~@8 [c#2,c#3,c#4] ~ [c2,c3,c4] ~ [b1,b2,b3] ~ [a1,a2,a3] ~, a#3]/2", // C# C B A
  P: "[f#1,f#2]@2 ~ [f#1,f#2] [d#2,d#3] [e2,e3] ~ [f#2,f#3] ~ [e2,e3]@2 [d#2,d#3] [e2,e3]@2 [d#2,d#3] [c#2,c#3]", // F# D# E F# E D# E D# …
  Q: "[f#1,f#2]@2 ~ [f#1,f#2] [d#2,d#3] [e2,e3] ~ [g#2,g#3] ~ [e2,e3] ~ [d#2,d#3] [e2,e3]@2 [d#2,d#3] [c#2,c#3]", // F# D# E G# E D# E D# …
  R: "[~@16 [f#2,f#3]@3 f#2 [d#3,d#4] [e3,e4] ~ [g#3,g#4] ~ [e3,e4] ~ [d#3,d#4] [e3,e4]@2 [d#3,d#4] [c#3,c#4], a#3, ~@19 f#3@13]/2", // F# D# E G# E D# E D# …
})).s("gm_piano").gain(0.56)

// chords · piano · "PIANO A." · soft notes
const piano_soft = note(`<
  ~@9 A@2 ~ B A@2 C@3 ~@7 D@2 ~@2 A@2 ~ B A@2 E@2 ~@12 A@2 ~ B A@2 E@2 ~@8 A@2 ~ B A@2 E@2 ~@12 A@2 ~ B A@2 E@2 A@2 ~ B
  A@2 F ~@8
>`.pickRestart({
  A: "[[b3,e4]@7 ~, e3]/2", B: "~@7 a#2", C: "[f#3@11 ~@5]/3", D: "[a4@7 ~]/2", E: "f#3/2", F: "f#3",
})).s("gm_piano").gain(0.4)

// chords · cello
const cello = note(`<
  ~@10 A B@2 ~ A C@3 ~@7 D@2 E@2 ~ A B@2 ~ A F@2 ~@8 D@2 G@2 ~ A B@2 ~ A F@2 H I J K H I J L ~ A B@2 ~ A F@2 ~@8 M N O@2
  ~@23
>`.pickRestart({
  A: "~@3 [b4,e5]", B: "[[f#4,a#4]@29 ~ a#4@2]/2", C: "[a#4@11 ~@5]/3", D: "[e5@7 [e4,a4,e5,a5]]/2",
  E: "[b4@21 ~@11]/2", F: "a#4/2", G: "[[b4,d#5,b5]@11 ~@5]/2", H: "[c#5,e5,a5]@7 ~", I: "[c#5,f#5]@7 ~",
  J: "[d5,g5,b5]@7 ~", K: "[e4,e5]@7 ~", L: "[e4,g4,b4,e5]@7 ~@9", M: "[c#5,e5,g#5]@12 [d#5,f#5,b5] [c#5,e5,g#5] ~@2",
  N: "[d#5,f#5]@3 [d#5,g#5]@2 ~ [c#5,f#5]@3 ~@3 [d#5,g#5]@2 ~@2", // D#m G#5 F#5 G#5
  O: "[[c#5,e5,g#5]@10 [c#5,a5]@2 [c#5,g#5] ~ [f#5,a5]@8 ~@10]/2", // C#m F#m C#5 F#m
})).s("gm_cello").gain(0.4)

// chords · cello · soft notes
const cello_soft = note(`<
  ~@9 A@2 ~ B A@2 C@3 ~@7 D@2 E@2 A@2 ~ B A@2 F@2 ~@8 D@2 ~@2 A@2 ~ B A@2 F@2 G H I ~ J H ~@2 A@2 ~ B A@2 F@2 ~@35
>`.pickRestart({
  A: "[[b4,e5]@7 ~, e4]/2", B: "~@7 a#3", C: "[f#4@11 ~@5]/3", D: "[[e4,a4,a5]@7 ~]/2", E: "[[d#5,b5]@21 ~@11]/2",
  F: "f#4/2", G: "[e4,a4]@7 ~", H: "f#4@7 ~", I: "[g4,b4]@7 ~", J: "e4@7 ~",
})).s("gm_cello").gain(0.24)

// chords · piano · "CELLO"
const piano_2 = note("<~@84 A ~ B C@2 ~ B D@2 ~@15>".pickRestart({
  A: "~@4 [g#3,c#4,g#5] ~ [g#4,b4,e5,g#5,b5] ~, ~@8 [g#4,c#5] ~@3 e4 ~@3", B: "~@3 [b4,e5]",
  C: "[[f#4,a#4]@29 ~ a#4@2]/2", D: "a#4/2",
})).s("gm_piano").gain(0.4)

// chords · piano · "CELLO" · soft notes
const piano_soft_2 = note("<~@85 A@2 ~ B A@2 C@2 ~@15>".pickRestart({
  A: "[[b4,e5]@7 ~, e4]/2", B: "~@7 a#3", C: "f#4/2",
})).s("gm_piano").gain(0.24)

// chords · piano · "CELLO"
const piano_3 = note("<~@93 A@2 B@2 A@2 C@2 ~@7>".pickRestart({
  A: "[[b4,e5]@7 [b4,e5], e4]/2", B: "[[f#4,a#4]@29 ~ [a#3,a#4]@2]/2", C: "[f#4,a#4]/2",
})).s("gm_piano").gain(0.32)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@10 A B@2 ~ A C@3 ~@7 D@2 E@2 ~ A B@2 ~ A F@2 ~@8 D@2 G@2 ~ A B@2 ~ A F@2 H I J K H I J L ~ A B@2 ~ A F@2 ~@8 M N O@2
  ~ A B@2 ~ A F@2 ~ A B@2 ~ A P@8 ~
>`.pickRestart({
  A: "~@3 [b3,e4]", B: "[[f#3,a#3]@29 ~ a#3@2]/2", C: "[a#3@11 ~@5]/3", D: "[e4@7 [e3,a3,e4,a4]]/2",
  E: "[b3@21 ~@11]/2", F: "a#3/2", G: "[[b3,d#4,b4]@11 ~@5]/2", H: "[c#4,e4,a4]@7 ~", I: "[c#4,f#4]@7 ~",
  J: "[d4,g4,b4]@7 ~", K: "[e3,e4]@7 ~", L: "[e3,g3,b3,e4]@7 ~@9", M: "[c#4,e4,g#4]@12 [d#4,f#4,b4] [c#4,e4,g#4] ~@2",
  N: "[d#4,f#4]@3 [d#4,g#4]@2 ~ [c#4,f#4]@3 ~@3 [d#4,g#4]@2 ~@2", // D#m G#5 F#5 G#5
  O: "[[c#4,e4,g#4]@10 [c#4,a4]@2 [c#4,g#4] ~ [f#4,a4]@8 ~@2 [g#2,c#3,g#4]@2 ~@2 [g#3,b3,e4,g#4,b4]@2 ~@2, ~@24 [g#3,c#4] ~@3 e3 ~@3]/2", // C#m F#m C#5 F#m C#5 E C#5
  P: "a#3/8",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@9 A@2 ~ B A@2 C@3 ~@7 D@2 E@2 A@2 ~ B A@2 F@2 ~@8 D@2 ~@2 A@2 ~ B A@2 F@2 G H I ~ J H ~@2 A@2 ~ B A@2 F@2 ~@12 A@2 ~
  B A@2 F@2 A@2 ~ B A@2 K@8 ~
>`.pickRestart({
  A: "[[b3,e4]@7 ~, e3]/2", B: "~@7 a#2", C: "[f#3@11 ~@5]/3", D: "[[e3,a3,a4]@7 ~]/2", E: "[[d#4,b4]@21 ~@11]/2",
  F: "f#3/2", G: "[e3,a3]@7 ~", H: "f#3@7 ~", I: "[g3,b3]@7 ~", J: "e3@7 ~", K: "f#3/8",
})).s("gm_string_ensemble_1").gain(0.24)

// other · pad new age · "SYNTH FANTASIA"
const pad_new_age = note("<~ A B C D E F G H ~@15 I J ~@19 K ~@62>".pickRestart({
  A: "[b2,c#3,b3,c#4,b4] [d#3,d#4] [f#3,g#3,f#4,g#4] [b4,c#5,b5,c#6] [d#4,f#4,d#5,f#5] [g#4,b4,g#5,b5] [c#5,d#5,c#6,d#6] [f#5,f#6,g#6,g#7] [b6,b7] [f#5,f#6,g#6,g#7] [c#5,d#5,c#6,d#6] [g#5,b5,g#6,b6] [d#4,f#4,d#5,f#5] [c#4,b4,c#5,b5] [f#3,g#3,f#4,g#4] [c#3,d#3,c#4,d#4]", // Bsus2 D# F#sus2 Bsus2 D#m G#m C#sus2 F#sus2 …
  B: "[b2,b3,b4] [c#3,d#3,c#4,d#4] [f#3,f#4,g#4,g#5] [b4,c#5,b5,c#6] [d#4,f#4,d#5,f#5] [g#4,b4,g#5,b5] [c#5,d#5,c#6,d#6] [f#5,f#6,g#6,g#7] [b6,b7] [f#5,f#6,g#6,g#7] [c#5,d#5,c#6,d#6] [g#5,b5,g#6,b6] [d#4,f#4,d#5,f#5,d#6,f#6] [c#4,b4,c#5,b5] [f#3,g#3,f#4,g#4] [c#3,d#3,c#4,d#4]", // B C#sus2 F#sus2 Bsus2 D#m G#m C#sus2 F#sus2 …
  C: "[a2,b2,a3,b3,a4] [b2,c#3,b3,c#4] [e3,e4,f#4,f#5] [a4,b4,a5,b5] [c#4,e4,c#5,e5] [f#4,a4,f#5,a5] [b4,c#5,b5,c#6] [e5,e6,f#6,f#7] [a6,a7] [e5,e6,f#6,f#7] [b4,c#5,b5,c#6] [f#5,a5,f#6,a6] [c#4,e4,c#5,e5,c#6] [b3,a4,b4,a5] [e3,f#3,e4,f#4] [b2,c#3,b3,c#4]", // Asus2 Bsus2 Esus2 Asus2 C#m F#m Bsus2 Esus2 …
  D: "[a2,a3,a4] [b2,c#3,b3,c#4] [e3,e4,f#4,f#5] [a4,b4,a5,b5] [c#4,e4,c#5,e5] [f#4,a4,f#5,a5] [b4,c#5,b5,c#6] [e5,e6,f#6,f#7] [a6,a7] [e5,e6,f#6,f#7] [b4,c#5,b5,c#6] [f#5,a5,f#6,a6] [c#4,e4,c#5,e5,c#6] [b3,a4,b4,a5] [e3,f#3,e4,f#4] [b2,c#3,b3,c#4]", // A Bsus2 Esus2 Asus2 C#m F#m Bsus2 Esus2 …
  E: "[a2,b2,a3,b3,b4] [c#3,d#3,c#4,d#4] [f#3,f#4,g#4,g#5] [b4,c#5,b5,c#6] [d#4,f#4,d#5,f#5,f#6] [g#4,b4,g#5,b5] [c#5,d#5,c#6,d#6] [f#5,f#6,g#6,g#7] [b6,b7] [f#5,f#6,g#6,g#7] [c#5,d#5,c#6,d#6] [g#5,b5,g#6,b6] [d#4,f#4,d#5,f#5,d#6] [c#4,b4,c#5,b5] [f#3,g#3,f#4,g#4] [c#3,d#3,c#4,d#4]", // Asus2 C#sus2 F#sus2 Bsus2 D#m G#m C#sus2 F#sus2 …
  F: "[b2,b3,b4] [c#3,d#3,c#4,d#4] [f#3,f#4,g#4,g#5] [b4,c#5,b5,c#6] [d#4,f#4,d#5,f#5] [g#4,b4,g#5,b5] [c#5,d#5,c#6,d#6] [f#5,f#6,g#6,g#7] [b6,b7] [f#5,f#6,g#6,g#7] [c#5,d#5,c#6,d#6] [g#5,b5,g#6,b6] [d#4,f#4,d#5,f#5,d#6] [c#4,b4,c#5,b5] [f#3,g#3,f#4,g#4] [c#3,d#3,c#4,d#4]", // B C#sus2 F#sus2 Bsus2 D#m G#m C#sus2 F#sus2 …
  G: "[a2,b2,a3,b3,a4] [b2,c#3,b3,c#4] [e3,e4,f#4,f#5] [a4,b4,a5,b5] [c#4,e4,c#5,e5,e6] [f#4,a4,f#5,a5] [b4,c#5,b5,c#6] [e5,e6,f#6,f#7] [a6,a7] [e5,e6,f#6,f#7] [b4,c#5,b5,c#6] [f#5,a5,f#6,a6] [c#4,e4,c#5,e5,c#6] [b3,a4,b4,a5] [e3,f#3,e4,f#4] [b2,c#3,b3,c#4]", // Asus2 Bsus2 Esus2 Asus2 C#m F#m Bsus2 Esus2 …
  H: "[a2,a3,a5] [b2,c#3,b3,c#4] [e3,e4,f#4,f#5] [a4,b4,a5,b5] [c#4,e4,c#5,e5] [f#4,a4,f#5,a5] [b4,c#5,b5,c#6] [e5,e6,f#6,f#7] [a6,a7] ~@7", // A Bsus2 Esus2 Asus2 C#m F#m Bsus2 Esus2 …
  I: "~@9 f#5 [c#6,d#6] [g#6,b6] [d#6,f#6] [c#6,b6] [f#6,g#6] [c#6,d#6]", J: "b6@7 ~",
  K: "b4 [c#6,d#6] [f#6,g#6] b6 ~@12", // C#sus2 F#sus2
})).s("gm_pad_new_age").gain(0.48)

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

// drums · rim
const rim = s("rim").struct("<~@72 [~@3 x] ~@35>").gain(0.8)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@31 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@6 A@2 ~@2 A@4 ~ A@2 ~@13 A ~@3 A ~@7 A@2 ~@2 A ~@3 A B ~@2 A ~ C ~@6
>`.pickRestart({
  A: "~@3 x", B: "~@12 x ~ x!2", C: "x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<A B C B C B C B C B@19 D B@19 D B@15 D B@16 E B@2 F B@16 ~@7>".pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~@2 x", B: "x!16", C: "~ x!15", D: "x!10 ~@2 x ~@3", E: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x",
  F: "x!15 ~",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<A@28 ~ A@19 ~ A@15 ~ A@27 ~ A@7 ~@8>".pickRestart({
  A: "~@15 x",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@44 [~@14 x!2] ~@27 [x ~@13 x!2] x ~@18 [~@3 x] ~@15>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@8 B ~@7 B ~@2 A B ~@3 B ~@3 B ~@3 B ~@3 B@3 A B ~@3 B ~@3 B ~@6 A ~@8 B C B C B C B C ~@4 B ~@3 B ~@2 B@2 ~@3
  B ~@2 B ~@7
>`.pickRestart({
  A: "~@2 x!2", B: "x", C: "~@3 x",
})).gain(0.8)
// … 82 more lines