Strudelify

Julia

Chris Rea

KeyE majorTempo132 bpm
0:00/0:00
// Julia — Chris Rea
// 132 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GTHARMONIC.
setcpm(132/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 · "FINGERDBAS"
const bass = note(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B A B A B C D E F C D E F A B A B A B A B A B A B A B A B G H I J A B A B A
  B A B A B A B A B A B K L M N F L M N F L M N F L M N F A B A B A B A B C D E F C D E F A B A B A B A B A B A B A B A
  B G H I O
>`.pickRestart({
  A: "e1@3 ~ e1@2 e1@3 ~ e1@2 e1@3 ~ e1@2 e1@3 ~ e1@2", B: "a1@3 ~ a1@2 a1@3 ~ a1@2 b1@3 ~ b1@2 b1@3 ~ b1@2",
  C: "g#1@3 ~ g#1@2 g#1@3 ~ g#1@2 g#1@3 ~ g#1@2 g#1@3 ~ g#1@2",
  D: "a1@3 ~ a1@2 a1@3 ~ a1@2 g#1@3 ~ g#1@2 g#1@3 ~ g#1@2",
  E: "f#1@3 ~ f#1@2 f#1@3 ~ f#1@2 f#1@3 ~ f#1@2 f#1@3 ~ f#1@2", F: "b1@3 ~ b1@2 b1@3 ~ b1@2 b1@3 ~ b1@2 b1@3 ~ b1@2",
  G: "e1@3 ~ e1@3 ~ e1@3 ~ e1@11 ~", H: "e1@3 ~ e1@3 ~ e1@3 ~ e1@10 ~@2",
  I: "e1@3 ~ e1@3 ~ e1@3 ~ e1@3 ~ e1@3 ~ e1@3 ~", J: "e1", K: "e1@23 ~", L: "e1 ~ e1 ~ e1 ~ e1@5 ~",
  M: "e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@5 ~ g#1@5 ~", N: "a1@3 ~ a1@2 a1@3 ~ a1@2 a1@3 ~ a1@2 a1@3 ~ a1@2", O: "e1 ~",
})).s("gm_electric_bass_finger").gain(0.5)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B A B A B C D@2 E C D@2 E A B A B A B A B A B A B A B A B F G H I A B A B A
  B A B A B A B A B A B J K@2 L M@3 N O K@2 L M@3 N O P Q R S T U R S C V@2 E C V@2 E A B A B A B A B A B A B A B A B F
  G H W
>`.pickRestart({
  A: "g#4@2 g#4 g#4@2 f#4 f#4@2 g#4!2 ~ f#4", B: "a4@2 a4 a4@2 f#4 f#4@2 f#4 f#4@2 f#4",
  C: "[d#4,g#4]@2 [d#4,g#4] [d#4,g#4]@2 [d#4,g#4] [d#4,g#4]@2 [d#4,g#4] [d#4,g#4]@2 [d#4,g#4]", // G#5
  D: "[[e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4] [e4,a4]@2 ~ [c#4,f#4]@2 [c#4,f#4] [c#4,f#4]@2 [c#4,f#4] [c#4,f#4]@2 [c#4,f#4] [c#4,f#4]@2 [c#4,f#4], ~@11 [e4,a4]@3 ~@10]/2", // A5 F#5 A5
  E: "[b3,f#4]@2 [b3,f#4] [b3,f#4]@2 [b3,f#4] [b3,f#4]@2 [b3,f#4] [b3,f#4]@2 [b3,f#4]", // B5
  F: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [e4,g#4]@10 ~@2, ~@11 b3@10 ~@3", // E
  G: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~@2 g#4@10 ~, ~@11 b3@10 ~@3, ~@6 e4@5 ~", // E
  H: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // E
  I: "[b3,e4,g#4]@11 ~", J: "e4", K: "[~ g#4@17 ~@6 g#4@21 ~@3, [b3,e4]@18 ~@4 b3@23 ~@3, ~@23 e4@22 ~@3]/2",
  L: "d#4@2 d#4 d#4@2 e4 e4@2 e4!2 ~ e4",
  M: "[g#4@4 g#4@2 g#4@4 f#4@2 f#4@4 f#4@2 f#4@4 f#4 [e4,g#4]@21 ~@4 g#4@23 ~, ~@22 b3@21 ~@3 b3@25 ~, ~@47 e4@25]/3", // E
  N: "d#4@2 d#4 d#4@2 c#4 c#4@2 c#4!2 ~ c#4", O: "g#4@2 g#4 g#4@2 f#4 f#4@2 f#4 f#4@2 ~", P: "e2@17 ~@7",
  Q: "~@4 [f#3,a3] ~@5 [d#3,f#3]@6 [d#3,f#3]@2 ~@6", R: "e2@4 ~ g2 g#2 b2 e3 ~@3",
  S: "~@4 [f#3,a3] ~@5 [d#3,f#3]@6 [d#3,f#3] ~@7", T: "e2@2 e3 ~@2 g2 g#2@2 e3 ~@3",
  U: "~@4 [f#3,a3]@2 ~@4 [d#3,f#3]@5 ~ [d#3,f#3]@2 ~@6", // F#m D#m
  V: "[[e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4] [d#4,g#4]@2 [d#4,g#4] [d#4,g#4]@2 ~ [c#4,f#4]@2 [c#4,f#4] [c#4,f#4]@2 [c#4,f#4] [c#4,f#4]@2 [c#4,f#4] [c#4,f#4]@2 [c#4,f#4], ~@11 [d#4,g#4]@3 ~@10]/2", // A5 G#5 F#5 G#5
  W: "[b3,e4]@7 ~@5, g#4 ~", // E5
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.2)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@9 A B A C A B A B A B A C A B A B A B A C A B A B D E F G D H I J A B A C A B A B A B A C A B A B K@4 L B A C A B A
  B A B A C A B A B A ~@16 A B A C A B A B D M F G D M I J A B A C A B A B A B A C A B A B N@4
>`.pickRestart({
  A: "[e4,g#4,b4]@23 ~", B: "[e4,a4,c#5]@11 ~ [f#4,b4,d#5]@11 ~", C: "[e4,a4,c#5]@12 [f#4,b4,d#5]@11 ~",
  D: "[g#4,b4,d#5]@11 ~", E: "[a4,c#5,e5]@23 ~", F: "[c#5,f#5]@23 ~, a4@7 ~", G: "e5@12 d#5@11 ~, [b4,f#5]@23 ~",
  H: "[c#5,e5,a5]@11 ~", I: "[c#5,f#5,a5]@23 ~", J: "e5 d#5, [f#5,b5]", K: "[b4,e5,b5]/4", L: "[e4,g#4]@23 ~, b4 ~@23",
  M: "a4@11 ~ g#4@12, [c#5,e5]@23 ~", N: "[[b4,e5,b5]@43 ~@5]/4",
})).s("gm_rock_organ").gain(0.22).pan(0.4)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@24 A@8 B@8 C@8 D@8 E@5 F@7 D@8 G@5 H@8 I@8 J@4 K@8 C@8 D@8 L@5>".pickRestart({
  A: "[~@23 [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]]/8", // E A B E A B E A …
  B: "[~@11 [f#3,b3,d#4]@11 ~ [g#3,b3,d#4]@24 [a3,c#4,e4]@24 [a3,c#4,f#4]@24 e4@12 d#4@12 [g#3,b3,d#4]@24 [a3,c#4,e4]@24 [a3,c#4,f#4]@24 [f#3,b3,e4], ~@95 [f#3,b3]@24 ~@73]/8", // B G#m A F#m G#m A F#m Esus2 …
  C: "[~@11 d#4@12 [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]]/8", // E A B E A B E A …
  D: "[~@11 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]]/8", // B E A B E A B E …
  E: "[~@11 [f#3,b3,d#4]@11 ~ [b3,e4]@96 [g#3,b3,e4]]/5", // B E5 E
  F: "[~@23 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]]/7", // A B E A B E A B …
  G: "[~@11 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,g#3,b3]@48 [e3,a3,c#4]@24 [f#3,b3,d#4]]/5", // B E A B
  H: "[~@23 [e3,g#3,b3]@48 [e3,a3,c#4]@24 [f#3,b3,d#4]@21 ~@3 [e3,g#3,b3]@48 [e3,a3,c#4]@24 [f#3,b3,d#4]]/8", // E A B E A B
  I: "[~@23 [e3,g#3,b3]@48 [e3,a3,c#4]@24 [f#3,b3,d#4]@21 ~@3 [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]]/8", // E A B E A B E A
  J: "[~@11 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]@12 [f#3,b3,d#4]@11 ~ [g#3,b3,e4]@24 [e3,a3,c#4]]/4", // B E A B E A
  K: "[~@11 [f#3,b3,d#4]@11 ~ [g#3,b3,d#4]@24 a3@12 g#3@12 [a3,c#4,f#4]@24 e4@12 d#4@12 [g#3,b3,d#4]@24 a3@12 g#3@12 [a3,c#4,f#4]@24 [f#3,b3,e4], ~@47 [c#4,e4]@24 ~@24 [f#3,b3]@24 ~@24 [c#4,e4]@24 ~@25]/8", // B G#m F#m G#m F#m Esus2 C#m B5 …
  L: "[~@11 [f#3,b3,d#4]@11 ~ [b3,e4]@80 ~@17]/5", // B E5
})).s("gm_synth_strings_1").gain(0.13)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@61 A B C D E F@2 G H I@3 J K L M N ~@52>".pickRestart({
  A: "e4@6 e4@4 e4@6 e4@2 e4@4 e4 ~", B: "e4 ~ f#4@2 e4@2 f#4@2 e4@2 c#4@2 e4@6 f#4@6", C: "g#4", D: "a4",
  E: "b4@4 g#4@5 e4@10 c#4@5", F: "[b3@6 c#4@3 b3@9 ~ a3@2 b3@8 ~ b3@5 ~ d#4@2 f#4@2 d#4@2 f#4@2 d#4@2 f#4@2]/2",
  G: "[e4,g#4]@4 [d#4,f#4]@4 [c#4,e4]@4 [b3,d#4]@4 [a3,c#4]@4 [g#3,b3]@3 ~", // E D#m C#m B A G#m
  H: "b3 c#4 b3 g#3 b3 g#3 f#4 d#4 f#4 d#4 f#4 d#4",
  I: "[g#4@4 b4@2 g#4@3 ~ b4@8 b4@3 ~ [d#5,f#5]@8 [c#5,e5]@2 ~@2 [c#5,e5]@8 [b4,d#5]@2 ~@2 [b4,d#5]@8 [a4,c#5]@2 ~@2 [a4,c#5]@7 ~ [a4,c#5]@4 ~@2]/3", // D#m C#m B A
  J: "[g#4,b4]@11 ~", K: "[g#4,b4]@4 ~@2 [g4,a#4]@3 ~ [f#4,a4]@10 ~@4",
  L: "[d#5,f#5] ~ [c#5,e5] ~ [b4,d#5] ~ [a4,c#5] ~", M: "[g#4,b4] ~ [f#4,a4] ~ [e4,g#4] ~ [d#4,f#4] ~",
  N: "[g#3,e4]@23 ~", // C#m
})).s("gm_distortion_guitar").gain(0.52)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@86 A B C D A B C D E F G H E F G I J K L M N K L M ~@8 E F G H E F G O ~@4
>`.pickRestart({
  A: "[e5,g#5]@3 ~ [e5,g#5]@3 ~ [e5,g#5]@3 ~ [e5,g#5]@11 ~", // E
  B: "[e5,g#5]@3 ~ [f#5,a5]@3 ~ [e5,g#5]@3 ~ [d#5,f#5]@5 ~ [c#5,e5]@5 ~", C: "[b4,d#5]@8 ~ [a4,c#5]@2 ~ [a4,c#5]@9 ~@3",
  D: "[e5,g#5]@8 ~ [d#5,f#5]@2 ~ [d#5,f#5]@9 ~@3", E: "[g#4,b4]",
  F: "[a4,c#5]@3 [b4,d#5]@2 [c#5,e5] [b4,d#5]@5 [a4,c#5]", G: "[g#4,b4]@23 ~",
  H: "[a4,c#5]@6 [b4,d#5]@4 [c#5,e5] ~ [c#5,e5]@6 [b4,d#5]@4 [a4,c#5]@2", // A B C#m B A
  I: "[a4,c#5]@6 [b4,d#5]@4 [c#5,e5] ~ [c#5,e5]@6 [c#5,e5]@4 [b4,d#5]@2", J: "[b4,d#5] ~@3", K: "[a4,c#5] [g#4,b4]",
  L: "[f#4,a4]", M: "[c#5,e5] [b4,d#5]", N: "[b4,d#5]",
  O: "[a4,c#5]@6 [b4,d#5]@4 [c#5,e5] ~ [b4,d#5]@5 ~ [b4,d#5]@4 [b4,d#5]@2", // A B C#m B
})).s("gm_string_ensemble_1").gain(0.22).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note(`<
  ~@33 A@8 ~@16 B C D E ~@17 F G H I F G J I F G K I F G L I ~@8 A@8 ~@16 B C D M
>`.pickRestart({
  A: "[[b3,d#4]@20 ~@4 e4@20 ~@4 e4@20 ~@4 e4@12 d#4@11 ~, g#3@22 ~ [a3,c#4]@20 ~@3 f#3@21 ~@3 f#3@25 ~, ~@47 [a3,c#4]@20 ~@4 b3@24 ~]/4", // B A
  B: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [e4,g#4]@10 ~@2, ~@11 b3@10 ~@3", // E
  C: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~@2 g#4@10 ~, ~@11 b3@10 ~@3, ~@6 e4@5 ~", // E
  D: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // E
  E: "[b3,e4,g#4]@11 ~", F: "[b3,e4,g#4]@3 ~ [e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@11 ~, ~ b3 ~@6",
  G: "[b3,e4,g#4]@3 ~ [c#4,e4,a4]@3 ~ [b3,e4,g#4]@3 ~ [b3,d#4,f#4]@5 ~ [g#3,c#4,e4]@5 ~", // E A E B C#m
  H: "[f#3,b3,d#4]@9 ~ [a3,c#4]@2 [a3,c#4]@10 ~@2, ~@9 e3@2 ~ e3@8 ~@4", // B A
  I: "[b3,e4,g#4]@9 ~ [d#4,f#4]@2 [b3,d#4,f#4]@10 ~@2, ~@9 b3@2 ~@13", // E D#m B
  J: "[f#3,b3,d#4]@9 ~ [a3,c#4]@2 [e3,a3,c#4]@7 ~@5, ~@9 e3@2 ~@13", // B A
  K: "[f#3,b3,d#4]@9 ~ [a3,c#4]@2 [e3,a3,c#4]@9 ~@3, ~@9 e3@2 ~@13", // B A
  L: "[f#3,b3,d#4]@9 ~ [a3,c#4]@2 [e3,a3,c#4]@8 ~@4, ~@9 e3@2 ~@13", M: "[b3,e4]@7 ~@5, g#4 ~",
})).s("gm_electric_guitar_clean").gain(0.44).pan(0.6)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@9 A B C B C B C B A B C B C B C B A B C B C B C B D E F G D E F G A B C B C B C B A B C B C B C B H@2 I J A B C B C
  B C B A B C B C B C B K ~@2 L M ~@6 L M ~@4 N O N O N O N O D E F G D E F G A B C B C B C B A B C B C B C B H@2 I P
>`.pickRestart({
  A: "b3@3 ~ b3@2 b3@4 a3@2 a3@4 b3@2 b3@2 ~@2 a3 ~", B: "c#4@2 c#4 c#4@2 c#4 d#4@2 d#4 d#4@2 c#4",
  C: "b3@3 ~ b3@2 b3@4 a3@2 a3@4 b3@2 b3@2 ~@2 a3@2", D: "b3@23 ~", E: "c#4 b3", F: "a3@11 ~", G: "a3@12 b3@11 ~",
  H: "[g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@11 ~", // E
  I: "[g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~", // E
  J: "[g#3,b3,e4]@7 ~", K: "b3@7 ~", L: "c#4@3 ~ c#4@2 c#4@4 c#4@2 c#4@4 c#4@2 c#4@2 ~@2 c#4@2",
  M: "d#4@2 d#4 d#4@2 d#4 d#4@2 d#4 d#4@2 d#4",
  N: "[b3,g#4]@2 [b3,g#4] [b3,g#4]@2 [a3,f#4] [a3,f#4]@2 [b3,g#4]!2 ~ [a3,f#4]", // E D E D
  O: "[c#4,a4]@2 [c#4,a4] [c#4,a4]@2 [c#4,f#4] [d#4,f#4]@2 [d#4,f#4] [d#4,f#4]@2 [c#4,f#4]", P: "[g#3,b3,e4]@7 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.6)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B A B A B C D E F C D E F A B A B A B A B A B A B A B A B ~@5 G ~@6 H I J K
  L M N O ~@25 C P E F C P E F A B A B A B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "[e3,b3]@2 ~@2 b3@2 [e3,c#4]@2 ~@2 c#4 ~ [e3,b3]@2 ~@2 [e3,b3]@2 [e3,c#4]@2 ~@2 c#4 ~", // E5 C#m E5 C#m
  B: "[a3,e4]@2 ~@2 [a3,e4] ~ [a3,e4]@2 ~@2 [a3,e4]@2 [b3,f#4]@2 ~@2 [b3,f#4] ~ [b3,f#4]@2 ~@2 e4@2", // A5 B5
  C: "d#3@2 d#3 d#3@2 d#3 d#3@2 d#3 d#3@2 d#3", D: "e3@2 e3 e3@2 e3 e3@2 e3 e3@2 ~",
  E: "c#3@2 f#3 c#3@2 c#3 c#3@2 c#3 c#3@2 c#3", F: "b2@2 b2 b2@2 b2 b2@2 b2 b2@2 b2",
  G: "c#4 b3 c#4 b3 c#4 g#3 b3 g#3 b3 g#3@2 ~", H: "e4@2 b3@2 g#3@2 b3@2 e4@2 b3@2 e4@3 ~ g#3 ~ b3@4 e4@2",
  I: "a3@2 c#4@2 e4@2 c#4@2 ~@2 a3 ~ f#4@2 f4 ~ d#4@2 b3@2 d#4 ~ f#4 ~",
  J: "e4@2 b3@2 g#3 ~ b3 ~@5 e4@2 ~@2 e4@2 b3@2 g#3@2 b3@2",
  K: "a3@2 c#4 ~ e4 ~ c#4@2 a3@2 c#4 ~ b3@2 d#4 ~ f#4@2 d#4@2 b3@2 d#4 ~",
  L: "e4@3 ~ e4@2 b3@2 g#3@2 b3 ~ g#3@3 ~ b3@2 e4@2 b3@2 g#3 ~",
  M: "a3@2 c#4@2 e4 ~ c#4@4 a3 ~ b3@2 ~@2 b3 ~ d#4@2 f#4@2 d#4 ~",
  N: "e4@3 ~ b3@2 g#3 ~ b3@2 e4@2 b3@3 ~ g#3 ~ g#3@2 b3@2 e4@2", O: "a3 c#4 e4 c#4 a3 c#4 b3 ~ d#4 f#4 d#4 b3",
  P: "e3@2 e3 e3@2 e3 d#3@2 d#3 d#3@2 ~",
})).s("gm_electric_guitar_muted").gain(0.27).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@9 [x!4]!48 [x!2]!3 x [x!4]!65 [x!2]!3 x>").gain(0.54)

// drums · snare
const snare = s("sd").struct("<~@9 [~ x ~ x]!51 ~ [~ x ~ x]!68 ~>").gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B@4 C D E F B@3 G B@3 H B@3 I B@3 G B@7 G B@7 J B@16 D@2 E K B@7 L B@7 J B D M B@2 D N B@2 D N B@2 D N B O B@3 J B@3
  J B@7 P B@7 J Q B@2 J B@3 R D@2 E S
>`.pickRestart({
  A: "~@9 x ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x ~ x!3 ~ x ~@5", D: "x!4 ~@2", E: "x!6", F: "x ~@7 x!2 ~ x",
  G: "x ~ x!2 ~ x!2 ~ x ~ x!2", H: "x ~ x!2 ~ x!2 ~ x ~ x ~", I: "x ~ x!2 ~ x ~ x ~ x ~ x", J: "x ~ x!2 ~ x!2 ~ x!4",
  K: "x ~ x", L: "x ~ x!2 ~ x!7", M: "x ~@3 x ~ x ~@2 x ~@2", N: "x ~ x ~ x ~ x ~@2 x ~@2", O: "x ~ x!2 ~ x!2 ~@3 x!2",
  P: "x ~ x!2 ~ x!2 ~ x ~@2 x", Q: "~@2 x ~@2 x!2 ~ x!2 ~ x", R: "x ~ x!2 ~@2 x ~ x!4", S: "x",
})).gain(0.36)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@21 A ~@2 B ~@2 A ~@5 A ~@4 C B ~ D ~@6 A ~@7 E D@2 F B D C ~ B ~@2 G E B ~@4 B@2 D ~ B@2 ~@6 G ~@22 A@2 ~ G B ~@4 B
  ~@3 B ~ H C ~ D I B
>`.pickRestart({
  A: "~@5 x ~@6", B: "~ x ~@4", C: "~@2 x ~@2 x ~@6", D: "~@2 x ~@2 x ~@2 x ~@3", E: "~ x ~@2 x ~",
  F: "x ~@4 x ~@2 x ~@2 x", G: "~@2 x", H: "~@2 x ~@8 x", I: "~@2 x ~@2 x ~@2 x ~@2 x",
})).gain(0.18)

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

More by Chris Rea