Strudelify

Uncertain Weather

Genesis

KeyF majorTempo84 bpm
0:00/0:00
// Uncertain Weather — Genesis
// 84 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 7 "Bass Pedals" named as a bass, played on electric bass finger (its lead 2 sawtooth patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 119 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.

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@9 A B C D A B C E A B C B C F G H A B C I J K A L M C N O C J@2 P L Q@2 N R C J S T U V W@2 X@2 Y@2 Z A B C D A B C
  E A B C B C F G H A B C I J K A L M C N O C J@2 P L Q@2 N R C J S T U M C N O C J@2 P L Q@2 N R C J S T U
>`.pickRestart({
  A: "d2", B: "c2", C: "bb1", D: "f1@14 g1 a1", E: "~ f1@13 g1@2", F: "bb1@7 f2", G: "f1@14 f2 c2",
  H: "f1@6 c2 f1@7 g1@2", I: "f1 c2", J: "g1", K: "c2@14 g1 a1", L: "d2@3 d2", M: "bb1@15 ~", N: "bb1@3 f2", O: "f1",
  P: "f1@7 g1", Q: "[bb1@7 bb2]/2", R: "f1@13 ~ f1@2", S: "g1@11 ~ g1@4", T: "g1 ~@13 a1@2", U: "~ [c2,d2] ~@14",
  V: "d2@15 ~", W: "[d2@29 a1 ~@2]/2", X: "[d2@13 d2 a2 d3@17]/2", Y: "[d2@31 a2]/2", Z: "d3@7 ~",
})).s("gm_electric_bass_finger").gain(0.63)

// chords · electric guitar muted · "Guitar (Muted)"
const electric_guitar_muted = note(`<
  ~@17 A B C D E F G H I J K L M N O P ~@34 A B C D E F G H I J K L M N O P ~@36
>`.pickRestart({
  A: "[d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@3", // Dm
  B: "[c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 c4 ~@2 [c4,e4] ~@3", // C
  C: "[bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~ bb3 ~", // Bb
  D: "[bb3,d4] e4 ~ e4 ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@3", // Bb C
  E: "[bb3,e4]@2 ~ d4 ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@3", // Bbdim Bb
  F: "[bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@3", // Bb
  G: "[c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~ [c4,f4] d4", // F5
  H: "~ [c4,f4] ~ [c4,f4] ~@2 [c4,f4] ~ c4 [c4,f4] ~ f4 c4!2 [c4,f4] ~", // F5
  I: "[d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@4 f4 ~, ~@6 [d4,f4] ~, ~@13 d4@2 ~", // Dm
  J: "[c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4]@2 c4 ~", // C
  K: "[bb3,e4] ~@2 [bb3,d4] ~@2 d4 ~@2 [bb3,d4] ~@3 bb3@2 ~, ~@6 [bb3,d4] ~", // Bbdim Bb
  L: "[c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,e4] ~@3 c4@2 ~, ~@6 [c4,e4] ~", // F5 C
  M: "d4 ~@2 d4 ~@2 [bb3,d4] ~@2 [bb3,d4] ~@3 bb3!2 ~, ~@6 d4 ~", // Bb
  N: "[c4,e4] ~@2 e4 ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] c4 ~@2", // C
  O: "[d4,f4] ~@2 [d4,f4] ~@2 f4 ~@2 [d4,f4] ~@2 [d4,f4] ~ [c4,f4] ~", // Dm F5
  P: "[c4,f4] d4 ~ [d4,f4] ~@2 [d4,f4] d4 ~ d4 ~ f4 ~@2 f4 ~, ~@13 d4@2 ~", // F5 Dm
})).s("gm_electric_guitar_muted").gain(0.31)

// chords · electric guitar muted · "Guitar (Muted)" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@17 A B C D E ~ F G H ~@2 I ~ J K ~@35 A B C D E ~ F G H ~@2 I ~ J K ~@37
>`.pickRestart({
  A: "~@14 d4 [d4,f4]", B: "~@9 e4 ~@4 c4 e4", C: "~ e4 ~@5 d4 ~@3 d4 ~@2 d4!2", D: "~@14 c4 ~", E: "~@7 bb3 ~@6 bb3 ~",
  F: "~@7 c4 ~@8", G: "~@5 c4 ~@10", H: "~@8 d4 ~@7", I: "~@11 c4 ~@4", J: "~@3 c4 ~@10 [c4,e4] ~", K: "~@6 d4 ~@8 c4",
})).s("gm_electric_guitar_muted").gain(0.15)

// chords · drawbar organ · "Organ"
const drawbar_organ = note("<~@9 A@2 B@2 C@4 ~@42 A@2 B@2 C@4 ~@52>".pickRestart({
  A: "[d5 f5 [g4,e5]@2, a4@15 ~@17, ~ c5@3]/2", B: "[[bb4,d5]@8 a4@5 [e4,g4]@3, f4@13 ~@3, ~ c5]/2",
  C: "[d5@4 f5@4 [g4,e5]@8 [bb4,d5]@8 a4@5 [e4,g4]@3, [f4,a4]@16 ~@16 f4@25 ~@7, ~@8 c5@25 ~@15 c5@16]/4", // C Bb Em F
})).s("gm_drawbar_organ").gain(0.46)

// chords · synth strings 2 · "Pads"
const synth_strings_2 = note(`<
  ~ A B C D E F G@2 ~@8 A B C H I J K@2 A B C L M F N@2 ~@18 O@2 P@2 Q@2 R@2 ~@8 A B C H I J S@2 T U@2 V W X Y@2 ~@36
>`.pickRestart({
  A: "d5 c5, [f4,a4]", B: "d5 c5, [e4,g4]", C: "c5 bb4, [d4,f4]", D: "[c4,f4,a4] [c4,e4,g4]",
  E: "~@3 d5, [bb3,d4,g4], ~ bb4", F: "c5@2 ~ e5, [c4,e4,g4], ~ c5", G: "[[d4,f4,a4,d5]@15 ~]/2", H: "bb4 a4, [c4,e4]",
  I: "a4 g4, [bb3,d4]", J: "bb4 a4, [bb3,d4]", K: "[[c4,f4,a4]@15 ~]/2", L: "[c4,f4,a4] [c4,e4,g4], ~@8 f4 ~@7",
  M: "bb3 ~@5 d5@2, [d4,g4], ~ bb4", N: "[[d4,f4,a4,d5]@29 ~@3]/2",
  O: "[a4@6 ~ a4@2 [e4,g4]@2 [e4,g4]@5 g4@2 ~@3 f4 ~ [d4,f4]@9, d4@23 ~@9, f4@9 ~@7 a3@16, ~@19 [e4,g4]@4 ~@9]/2", // Em Dm Em
  P: "[f4@7 f4@2 e4@2 ~@5 g4@7 [d4,f4]@9, bb3 a3, a4@9 g4@7 ~@16, ~@11 e4@12 ~@9]/2", // Dm
  Q: "[a4@9 g4@7 g4@7 [d4,f4]@9, bb3 a3, f4 ~@8 e4@14 ~@9]/2", // Dm
  R: "[[f4,a4]@9 g4@7 g4@7 [d4,f4]@8 ~, bb3@8 a3@7 ~, d4 ~@8 e4@14 ~@9]/2", S: "[[c4,f4,a4]@15 c4]/2",
  T: "[d4,d5] [c4,c5], [f4,a4]@15 ~", U: "[[d4,d5] c4 c4 [bb3,bb4], [e4,g4] [d4,f4], ~ c5@2 ~]/2",
  V: "[a3,f4,a4]@4 [g3,e4,g4]@3 f3, c4@15 ~", W: "bb3@2 ~ [d4,d5], [g3,g4], d4@3 ~, gb4 ~@7 [bb3,bb4]@8",
  X: "c4 ~@2 [e4,e5], g4, e4@3 ~, c5 [c4,c5], ~ g3@3", Y: "[[d4,f4,a4,d5]@31 ~]/2",
})).s("gm_synth_strings_2").gain(0.31)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@9 A B C D A B E@2 F ~@15 G@8 H I@4 J@5 ~@8 A B C D A B E@2 F ~@15 K@8 L M@8 N@8 O P Q@4 R@5
>`.pickRestart({
  A: "[d3,d4] [f3,f4]", B: "[g3,g4]@2 [f3,f4] [e3,e4] [d3,d4]@2 [c3,c4]@2", C: "[d3,d4]@7 [bb2,bb3]",
  D: "[c3,c4]@2 [a2,a3] [g2,g3]@2 [a2,a3]@2 [c3,c4]", E: "[[d3,d4]@2 [f3,f4]@5 [e3,e4]]/2", F: "[d3,d4]@11 ~@5",
  G: "[[bb3,d4,bb4,d5]@7 ~ [c4,c5,e5]@8 [bb3,d4,bb4,d5]@24 [e4,e5]@8 [a3,a4]@16 [e4,e5]@8 [bb3,d4]@8 [e3,g3,bb3,d4]@32 ~@12 e5@3 ~, [f3,f4]@78 ~@2 e4@47 ~, ~@8 e4@7 ~@25 [c4,c5]@32 [bb4,d5]@40 ~@8 c5@8, ~@40 g4@15 ~ [e3,a3,c4,a4]@8]/8", // Bb C Bb E A E Bb Em7b5 …
  H: "[f4,a4,d5], [f3,a3,d4]@7 ~", // Dm
  I: "[[bb3,d4,bb4] [c4,e4,c5,e5] [bb3,d4,bb4,d5]@3 [c4,e4,e5] [a3,c4,a4]@2, f3, f4@5 [f4,c5]@3]/4", // Bb C Bb C Am F5
  J: "[[c4,e4,e5]@8 [bb3,d4]@8 ~@24 c5@3 bb4@4 ~ [c4,c5]@16 [f3,d4,f4]@15 ~, f4 [e3,e4]@3 ~, ~ [bb4,d5]@4 ~@5, ~@16 [g3,bb3,d4,g4]@32 [a3,a4]@31 ~]/5", // C Bb C Dm E Bb Gm A
  K: "[[bb3,d4,bb4,d5]@7 ~ [c4,e4,e5]@8 [bb3,d4,bb4,d5]@24 [e4,e5]@8 [a3,a4]@16 [e4,e5]@8 [bb3,d4]@8 [e3,g3,bb3,d4]@32 c4@4 [c4,c5]@4 [e4,e5]@4 [f4,e5,f5]@4, [f3,f4]@39 ~ e4@20 ~@4, ~@7 c5@9 ~@24 [c4,c5]@32 [bb4,d5]@40 ~@8 c5@8, ~@40 g4@15 ~ [e3,a3,a4]@8]/8", // Bb C Bb E A E Bb Em7b5 …
  L: "[d4,f4,d5] [f4,f5] [g4,g5] [a4,a5], [f3,a3]@7 ~, a4@3 ~", // Dm F G A F
  M: "[[bb4,f5]@8 [c4,e4,c5,e5]@8 [bb3,d4,bb4,d5]@24 [c4,e4,e5]@8 ~@4 [g4,g5]@2 [f4,f5]@2 [e4,e5]@4 [d4,d5]@2 c5@2 [c4,e4,e5]@8 [bb3,d4]@8 ~@24 c5@3 bb4@4 ~ [a3,c4,a4,c5]@4 [c4,c5]@4 [e4,e5]@4 [f4,f5]@4, f3@78 ~@2 e3@47 ~, [bb3,d4]@7 ~@33 f4@8 c4@14 c4 ~ f4@16 [g3,bb3,d4,g4]@32 ~@16, f4 ~@39 c5@22 ~@10 [bb4,d5]@32 ~@24, ~@6 [a3,a4]@2 ~@2 e4@5 ~]/8", // Bb5 C Bb C G F E D …
  N: "[[d4,f4,d5]@4 ~@8 a4@3 ~ [bb3,d4,bb4,d5]@7 ~@5 [g4,g5]@4 [bb3,d4,bb4,d5]@24 [e4,e5]@8 ~@4 [g4,g5]@2 [f4,f5]@2 [e4,e5]@4 [d4,d5]@2 [c4,c5]@2 [e4,e5]@8 [bb3,d4]@8 [e3,g3,bb3,d4,e4]@32, f3@15 ~ f3@78 ~@34, ~@4 [f4,f5]@11 ~ f4@16 [f4,f5]@8 ~@24 [a3,a4]@16 ~@48, ~@8 [g4,g5]@7 ~@8 c5@9 ~@56 [bb4,d5]@40, ~@6 a5@6 [c4,e4,e5]@4 ~@12 [c4,c5]@11 ~@9 g4@15 ~]/8", // Dm Bb G Bb E G F E …
  O: "c4 [c4,c5] [e4,e5] [f4,e5,f5], [e3,a3,a4], ~ c5", // C E Fmaj7 A5
  P: "[d4,d5] [f4,f5] [g4,g5] [a4,a5], [f3,a3]@7 ~, a4@3 ~, f4 ~@15", // D F G A F
  Q: "[[bb3,d4,f4,bb4,bb5]@8 [c4,e4,c5,e5]@8 ~@8 [c5,c6]@4 [bb4,bb5]@2 [a4,a5]@2 [g4,g5]@4 f4@4 [e4,e5]@4 [e4,e5] ~@3 a4@4 [a4,a5]@2 [g4,g5]@2 [f4,f5]@4 [e4,e5]@4, f3, ~@8 [f4,f5]@11 ~@21 c5@24, ~@2 [bb3,d4,d5]@3 f4@2 ~, ~@16 bb4@12 ~@8 f5@4 c4@7 ~ [a3,c4]@15 ~]/4", // Bb C Bb A G E A G …
  R: "[[e4,e5]@3 ~@5 [bb3,d4,d5]@8 ~@24 c5@3 bb4@4 ~ [c4,c5]@16 [f3,d4,f4]@15 ~, f4@16 [g3,bb3,d4,g4]@32 [a3,a4]@31 ~, c4 bb4@4 ~@5, ~@8 c5 ~@7 [e3,e4]@48 ~@16]/5", // E Bb C Dm Gm A E
})).s("gm_string_ensemble_2").gain(0.46)

// chords · acoustic guitar steel · "Strumming Guitar"
const acoustic_guitar_steel = note("<~@9 A B C D A B C E ~@42 A B C D A B C D ~@7 F G ~@43>".pickRestart({
  A: "~@8 [f4,a4,d5]@3 [f4,a4,d5]@3 [f4,a4,d5]@2", B: "~@8 [e4,g4,c5]@3 [e4,g4,c5]@3 [e4,g4,c5]@2",
  C: "~@8 [d4,f4,bb4]@3 [d4,f4,bb4]@3 [d4,f4,bb4]@2", D: "~@8 [f4,a4,c5]@3 [e4,g4,c5]@3 [e4,g4,c5]@2",
  E: "~@8 [f4,a4,c5]@3 [e4,g4,c5]@3 [e4,g4,c5] ~", F: "~@2 f4 e4", G: "d4@7 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.46)

// chords · electric guitar clean · "Rhythm Guitar"
const electric_guitar_clean = note(`<
  ~@33 A B C D E F@2 G H I J K L M N@2 O P Q R S T U V W X ~@15 Y Z ~@7 A B C D E F@2 G H I J K L M N@2 O P A B C D E
  F@2 G H I J K L M N@2 AA ~
>`.pickRestart({
  A: "~ d4 ~ d4 ~ c4 ~ c4, bb3@7 ~ bb3@7 ~, ~ f4 ~ e4", B: "~ d4 ~ d4 ~ d4 ~ e4, bb3@7 ~ bb3@8, ~@2 f4@3 ~ c4@2",
  C: "~ d4 f4 d4 ~ c4 e4 c4, bb3@8 bb3@7 ~", D: "~ c4 ~@2 g4 ~ a4 a3, a3@13 ~@3, ~ f4 ~@2, ~@6 c4@4 c4@5 ~",
  E: "~ d4 ~ d4 ~ d4 ~ d4, bb3@7 ~ bb3@6 ~@2, ~@4 f4@7 ~ f4@4",
  F: "[~@8 bb3@2 g3@2 bb3@2 ~@13 bb3@2 ~ bb3@2, g3@9 ~@5 g3@14 ~ g3@3, ~@2 bb3@4 d4@6 ~@6 bb3@2 ~ bb3@4 d4@7, ~@4 e4@14 ~ d4@4 e4@8 ~]/2",
  G: "~ c4 e4 c4@2 ~@2 c4, a3@15 ~, ~@3 e4", H: "~@2 d4@2 ~@8 d4@2 a3 ~, a3@13 ~@3, ~@4 f4@4 a4@5 ~@3, ~@3 d4@2 f4@2 ~",
  I: "~ d4 ~ d4 ~@3 bb3, bb3@3 ~ bb3@2 e4@2, ~@2 f4@2 ~ c4@3", J: "bb3@2 ~ bb3 ~ bb3 ~ bb3, ~ d4 f4@2, ~@3 d4",
  K: "~@2 d4 ~@7 c4@2 ~@2 c4@2, bb3@2 d4@2 e4@3 ~, ~@6 bb3@5 ~ bb3@4",
  L: "~ c4 ~@5 a3, a3@9 ~ a3@4 ~@2, ~ f4 g4 f4, ~@6 c4@9 ~", M: "~ c4@2 e4 d4 bb3@2 d4, bb3 ~",
  N: "[~ bb3 d4 ~@3 g3 bb3 ~ bb3 ~@2 e4 ~@2 g3, g3@11 bb3@2 ~@3 g3@13 ~@3, ~@6 bb3@3 d4@10 ~ d4@4 ~@2 d4@6, ~@7 e4@15 bb3@5 ~ bb3@4]/2",
  O: "~@10 e4@2 ~@2 a3 ~, a3 e4 c4@2, ~ c4@2 a3@3 f4@2", P: "~@8 d4@4 a3 ~@3, a3@5 ~@3, ~@2 d4@5 ~@9, ~@4 f4@9 ~@3",
  Q: "[f4,a4]@2 f4 [f4,a4]@3 ~ [f4,a4]@2 [e4,g4]@2 [e4,g4]@5", R: "g4@3 g4@2 a4 ~ [d4,f4]@9, e4@5 ~@11",
  S: "a4 ~ a4 ~ a4@2 ~ a4@2 [e4,g4]@2 [e4,g4]@5, f4@9 ~@7", T: "e4@2 ~ e4@2 a4 ~ [d4,f4]@8 ~, g4@5 ~@11",
  U: "a4@2 a4 a4@3 ~ [f4,a4]@2 [e4,g4] ~ [e4,g4]@4 ~, f4@3 ~@5", V: "g4@2 ~ g4@2 a4 ~ [d4,f4]@8 ~, e4@3 ~@5",
  W: "a4@2 ~ a4@3 ~ [f4,a4]@2 [e4,g4] ~ [e4,g4]@4 ~, f4@3 ~@5", X: "g4@3 a4@2 g4 ~ [d4,f4]@9, e4@5 ~@11",
  Y: "~@2 f4 e4", Z: "d4 ~", AA: "~@5 e4 ~@2, a3 e4 c4@2, ~@2 c4@4 a3@7 ~@3",
})).s("gm_electric_guitar_clean").gain(0.43)

// bass · electric bass finger · "Bass Pedals"
const bass_2 = note(`<
  ~@9 A B C D A B C E ~@16 F@2 C G C H I G A F@2 C G C J@2 G A ~@8 A B C D A B C E ~@16 F@2 C G C H I G A F@2 C G C K I
  G A L M C G M H I N O L M@2 G M I@2 G P
>`.pickRestart({
  A: "d2", B: "c2", C: "bb1", D: "f1@7 ~", E: "f1@13 ~@3", F: "[~ bb1@31]/2", G: "f1", H: "g1@15 ~", I: "g1", J: "g1/2",
  K: "~ g1@15", L: "~ bb1@15", M: "bb1@15 ~", N: "f1@15 ~", O: "d2@15 ~", P: "d1@15 ~",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · synth brass 1 · "synth Brass"
const synth_brass_1 = note(`<
  ~@9 A B C@2 D@2 C@2 E ~@15 F@8 G H@4 I@5 ~@8 A B J K L@2 C@2 ~@16 F@8 G H@4 I@5 F@8 G H@4 I@5
>`.pickRestart({
  A: "d4 [c4,f4], a3@15 ~", B: "[g3,c4,e4]", C: "[[bb3,d4]@8 a3@5 [e3,g3]@3, f3@25 ~@7, ~ c4]/2",
  D: "[[f3,d4] f4 [g3,e4]@2, a3 ~, ~ c4@3]/2", E: "[f3,a3,d4] ~@15",
  F: "[[bb3,d4,bb4,d5]@7 ~ [c4,e4,e5]@8 [bb3,d4,bb4,d5]@24 [e4,e5]@8 [a3,a4]@16 [e4,e5]@8 [bb3,d4]@8 [e3,g3,bb3,d4]@32 ~@12 e5@3 ~, [f3,f4]@78 ~@2 e4@47 ~, ~@7 c5@9 ~@24 [c4,c5]@32 [bb4,d5]@40 ~@8 c5@8, ~@40 g4@15 ~ [e3,a3,c4,a4]@8]/8", // Bb C Bb E A E Bb Em7b5 …
  G: "[f4,a4,d5], [f3,a3,d4]@7 ~", // Dm
  H: "[[bb3,d4,bb4] [c4,e4,c5,e5] [bb3,d4,bb4,d5]@3 [c4,e4,e5] [a3,c4,a4]@2, f3, f4@5 [f4,c5]@3]/4", // Bb C Bb C Am F5
  I: "[[c4,e4,e5]@8 [bb3,d4]@8 ~@24 c5@3 bb4@4 ~ [c4,c5]@16 [f3,d4,f4]@15 ~, f4 [e3,e4]@3 ~, ~ [bb4,d5]@4 ~@5, ~@16 [g3,bb3,d4,g4]@32 [a3,a4]@31 ~]/5", // C Bb C Dm E Bb Gm A
  J: "[f3,bb3,d4]", K: "[a3,f4]@5 [g3,e4]@3, c4", L: "[d4 f4 [g3,e4]@2, [f3,a3] ~, ~ c4@3]/2",
})).s("gm_synth_brass_1").gain(0.36)

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

// drums · snare
const snare = s("sd").struct("<~@9 A@8 ~@16 B@8 C B@9 ~@8 A@8 ~@16 B@7 D C B@7 D C B@8 E B@7 C ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@7 x ~@2 x", E: "~@4 x ~@2 x ~@4 x ~@3",
})).gain(0.6)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A B@4 C@3 D C@3 E C F G H C B C I D E J K ~@8 L ~@8 L ~@7 M N O P Q@3 C@2 R C@4 S C T U V C G W N P X ~@8 L ~@8 L
  ~@8 Y ~@9
>`.pickRestart({
  A: "~@12 x!4", B: "~@7 x ~@3 x ~@2 x ~", C: "x ~@6 x ~@3 x ~@2 x ~", D: "x ~@6 x ~ x ~ x ~@2 x ~",
  E: "~@2 x ~@4 x ~@3 x ~@2 x ~", F: "~@7 x ~@3 x ~@4", G: "x ~@6 x ~@3 x ~@2 x!2", H: "x ~ x ~@4 x ~ x ~@2 x ~ x ~",
  I: "~@7 x ~@3 x ~@2 x!2", J: "x ~ x ~@4 x ~@3 x!2 ~ x!2", K: "x ~ x ~@6 x!2 ~@4 x", L: "~@14 x!2", M: "~@7 x",
  N: "x ~ x ~@4 x ~@3 x ~@2 x ~", O: "x ~ x ~@4 x ~@3 x ~@3 x", P: "x ~ x ~@4 x ~@3 x ~@2 x!2", Q: "x ~@10 x ~@2 x ~",
  R: "~@11 x ~@2 x!2", S: "x ~@6 x ~@3 x ~@4", T: "x ~@6 x ~ x ~@2 x ~@3", U: "x ~ x ~@8 x ~@2 x ~",
  V: "x ~ x ~@4 x ~@3 x ~@4", W: "x ~@6 x", X: "x ~@3 x ~@2 x", Y: "~@11 x!3 ~ x",
})).gain(0.53)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct(`<
  ~@10 A@3 ~@2 A@5 B C ~ A ~@2 D A@3 B ~@30 E ~ A@2 ~@3 A@2 ~@4 F ~ G A ~ H ~@2 I ~@36
>`.pickRestart({
  A: "~ x ~@6", B: "x", C: "~@5 x ~@10", D: "x!2 ~@6", E: "~@15 x", F: "~@2 x ~@10 x ~@2", G: "x ~@8 x ~@4 x ~",
  H: "~@11 x ~@4", I: "~@7 x ~@8",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@17 A B C D C@5 E C@6 ~@18 C F B C@4 G H C@2 I J@2 K L M C@15 ~@36>".pickRestart({
  A: "~ x!7", B: "x ~ x!6", C: "x!8", D: "x!5 ~ x!2", E: "x!3 ~ x ~ x!2", F: "x ~ x ~ x ~ x!2", G: "x!5 ~ x ~",
  H: "~@2 x ~ x ~ x!3 ~@3 x ~ x ~", I: "x!7 ~", J: "x ~ x!3 ~ x ~", K: "x!2 ~ x", L: "x!4 ~ x!3", M: "~@2 x ~ x!4",
})).gain(0.53)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct("<~@18 A ~ B ~@5 C ~@25 D A ~@4 B ~@3 E F@2 G H I ~@51>".pickRestart({
  A: "~ x ~@6", B: "~@5 x ~@2", C: "~@3 x ~ x ~@2", D: "~ x ~ x ~ x ~@2", E: "~@7 x", F: "~ x ~@3 x ~ x",
  G: "~ x ~ x!3 ~ x", H: "~ x", I: "~ x ~ x ~@4",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A B@3 C@3 B C@2 B@2 D E D B F B@5 G D H ~@8 I ~@8 J ~@7 K B L E D M N O B G@3 M G M@2 P Q G R S T G U V ~@8 W ~@8
  X ~@8 Y ~@9
>`.pickRestart({
  A: "~@7 x ~ x!3 ~@4", B: "~@5 x ~@6 x ~@3", C: "~@5 x ~@10", D: "~@3 x ~ x ~ x ~@4 x ~@3", E: "~@3 x ~ x ~@6 x ~@3",
  F: "~@5 x ~ x ~@2 x!3 ~@3", G: "~@5 x ~ x ~@4 x ~@3", H: "~@3 x ~ x ~ x!3 ~ x!4 ~", I: "~@11 x!3 ~@2",
// … 54 more lines

More by Genesis