Strudelify

He Knows You Know

Marillion

KeyA majorTempo79 bpm
0:00/0:00
// He Knows You Know — Marillion
// 79 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 101 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(79/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.

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A@2 B@10 C D@16 E@3 F ~@31 G H I J G H I J G H I J G H I J G H I J ~@17
>`.pickRestart({
  A: "[~@28 a3@6 c4@3 a2@3 e3@3 b3@3 a2@3 e3@3 c4@3 a2@3 e3@3 d4@3 a2@3 e3@3 e4@6 a3@5 ~ f4@3 a2@3 e3@2 ~ e4@3 a2@2]/2",
  B: "[~ e3@3 d4@3 a2@3 e3@3 c4@3 a2@3 e3@3 b3@6 a3@6 c4@3 a2@3 e3@3 b3@3 a2@3 e3@3 c4@3 a2@3 e3@3 d4@3 a2@3 e3@3 e4@6 a3@5 ~ f4@3 a2@3 e3@2 ~ e4@3 a2@2]/2",
  C: "~ e3@3 d4@3 a2@3 e3@3 c4@3 a2@3 e3@3 b3@6 a3@6 c4@3 e3@3 a3@2 ~ b3@3 e3@2",
  D: "[~ a3@3 c4@3 e3@3 a3@3 d4@3 e3@3 a3@3 e4 ~@5 a3@5 ~ c4@3 e3@3 a3@3 b3@3 e3@3 a3@3 c4@3 e3@3 a3@2 ~ e4@9 c4@2 ~@4 a3@5 ~ c4@3 e3@3 a3@3 b3@3 e3@3 a3@3 c4@3 e3@3 a3@2 ~ g4@8 ~ c4@2 ~@4 a3@6 c4@3 e3@3 a3@3 b3@3 e3@3 a3@2 ~ a4@3 e4@3 a3@2 ~ a4@3 e4@3 a3@2 ~ a4@2 ~ e4 ~@2 a3@6 c4@3 e3@3 a3@2 ~ b3@3 e3@2]/4",
  E: "[~ a3@3 c4@3 e3@3 a3@3 d4@3 e3@3 a3@3 e4 ~@5 a3@5 ~ c4@3 e3@3 a3@3 b3@3 e3@3 a3@3 c4@3 e3@3 a3@2 ~ e4@9 c4@2 ~@4 a3@5 ~ c4@3 e3@3 a3@3 b3@3 e3@3 a3@3 c4@3 e3@3 a3@2 ~ g4@8 ~ c4@2 ~@4 a3@7 c4@3 e3@4 a3@3 b3@3]/3",
  F: "e3@4 a3@2 ~ a4@5 ~@36", G: "a3@6 c4@3 e3@3 a3@2 ~ b3@3 e3@3 a3@3 c4@3 e3@3 a3@3 d4@3 e3@3 a3@3 e4 ~@5",
  H: "a3@5 ~ c4@3 e3@3 a3@3 b3@3 e3@3 a3@3 c4@3 e3@3 a3@2 ~ e4@9 c4@2 ~@4",
  I: "a3@5 ~ c4@3 e3@3 a3@3 b3@3 e3@3 a3@3 c4@3 e3@3 a3@2 ~ g4@8 ~ c4@2 ~@4",
  J: "a3@6 c4@3 e3@3 a3@3 b3@3 e3@3 a3@2 ~ a4@3 e4@3 a3@2 ~ a4@3 e4@3 a3@2 ~ a4@2 ~ e4 ~@2",
})).s("gm_electric_guitar_muted").gain(0.48)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@4 A@24 B@7 C@8 D E F G H E F G I E F G I E F G I E F G I E F G I E F G I E F G I E F G I E F G I ~@12 E F G I ~
>`.pickRestart({
  A: "[~@7 [e4,a4,c5]@12 [d4,g4,b4]@12 [d4,f#4,a4]@12 [e4,g4,b4]@12 [e4,a4,c5]@12 [d4,g4,b4]@12 [d4,f#4,a4]@12 [e4,g4,b4]@5]/8", // Am G D Em Am G D Em
  B: "[~@28 [e4,a4,c5]@48 [d4,g4,b4]@48 [d4,f#4,a4]@48 [e4,g4,b4]@27 ~@42 [e4,a4,e5]@11 ~@2 [e4,a4,e5]@12 ~@2 [e4,a4,e5]@12 ~@2 [e4,a4,e5]@11 ~@3 [e4,a4,e5]@13 [e4,a4,e5]@12 ~@2 [e4,a4,e5]@12 ~, ~@227 [e4,a4,e5]@10 ~@45 a1@53 ~, ~@19 a2@9]/7", // Am G D Em A5
  C: "[~ [e4,a4,d5]@11 ~@2 [e4,a4,d5]@12 ~@2 [e4,a4,c#5]@12 ~@2 [e4,a4,c#5]@12 ~@2 [g4,b4,d5]@11 ~@2 [g4,b4,d5]@13 ~ [g4,b4,d5]@13 ~ [g4,b4,d5]@10 ~@4 [d5,g5]@11 ~@2 [a4,d5,g5]@13 ~ [a4,d5,f#5]@13 ~ [a4,d5,f#5]@11 ~@3 [g#4,b4,e5]@11 ~@2 [g#4,b4,e5]@13 ~ [g#4,b4,e5]@12 ~@2 [g#4,b4,e5]@10 ~@4 [e4,a4,d5]@12 ~ [e4,a4,d5]@13 ~ [e4,a4,c#5]@12 ~@2 [e4,a4,c#5]@12 ~@15 [g4,b4,d5]@13 ~ [g4,b4,d5]@13 ~ [g4,b4,d5]@12 ~ [a4,d5,g5]@11 ~@3 [a4,d5,g5]@13 ~ [a4,d5,f#5]@13 [a4,d5,f#5]@11 ~@2, ~ [a1,a2]@55 [g1,g2]@55 [d1,d2]@55 e1@55 [a1,a2]@55 [g4,b4,d5]@12 ~@42 [d1,d2]@54, ~@111 [g4,a4]@4 ~@50 e2@55 ~@56 g1@55 ~@53, ~@277 g2@54 ~@53]/8", // Dsus2 A G G5 Dsus4 D E Dsus2 …
  D: "[g#4,b4,e5]@10 ~@2 [g#4,b4,e5]@10 ~@2 [g#4,b4,e5]@10 ~@2 [g#4,b4,e5]@11 ~, [e1,e2]@47 ~", E: "[e4,a4,c5]",
  F: "[d4,g4,b4]", G: "[d4,f#4,a4]", H: "[e4,g4,b4] ~", I: "[e4,g4,b4]",
})).s("gm_synth_strings_1").gain(0.56)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D A B C E ~ F G H I J K L M N O@2 I J O@2 I J K L M N P@2 ~@10 Q R S@2 T U V@3 U V@3 U V@3 U V@3 W X Y@2 W Z
  AA@2 W X AA@2 W X Y@2 W Z AA@2 AB AC AD AE AB AC AD AE AB AC AD AE U V@3 AF
>`.pickRestart({
  A: "~@14 a1@3 ~@3 a1@3 ~", B: "~@5 a1@3 ~@12 a1@3 ~", C: "~@14 a1@3 ~@7", D: "~@11 a1@3 ~@10",
  E: "~@11 a1@3 a1@2 ~ a1@2 ~@5", F: "~@14 a1@2 ~ a1@2 ~@5", G: "~@28 a1@3 ~@3 a1@5 ~@9",
  H: "~@3 a2@5 g2@2 e2@2 c3@4 a2@4 g2@3 e2@3 c2@2 a1@5 ~ a1@14",
  I: "~ e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@5 ~ d2@2 ~ e2@3 a1@4 ~@2 a1@14",
  J: "~ e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@3 a2@3 d2@2 ~ e2@3 a1@20",
  K: "~@2 e1@3 a1@3 ~@3 a1@12 ~@5 a1@20, ~@23 e2@8 ~@17",
  L: "~ e1@3 a1@6 e2@6 ~@3 g2@3 e2@3 ~@3 a1@5 ~ a1@14, ~@16 a2@5 ~@27",
  M: "~ e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@5 ~ d2@2 ~ e2@3 a1@5 ~ a1@14",
  N: "~ e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@3 a2@3 d2@3 e2@3 a1@20",
  O: "[~@2 e1@3 a1@3 ~@3 a1@12 ~@5 a1@9 ~@3 a1@6 e2@5 a2@4 ~ e2@2 a2@2 ~ c3@3 a2@2 ~ g2@2 ~ e2@3 c2@3 a1@5 ~ a1@14, ~@23 e2@8 ~@65]/2",
  P: "[~@2 e1@3 a1@3 ~@3 a1@12 ~@5 a1@14 ~@6 e2@7 ~ a1@25 ~@15, ~@23 e2@9 ~@10 a1@13 a2@27 ~@14]/2",
  Q: "~@19 b2@5 e3@5 d3@2 b2@3 a2@2 g2@3 f#2@3 e2@3 d2@2 ~",
  R: "a1@4 ~@3 a1@6 a2@6 e2@3 ~ a1@4 ~@2 a1@4 ~@2 a1@6 e2@3 a2@4",
  S: "~ a1@4 ~@2 a1@6 a2@6 e2@3 ~ a1@4 ~@2 a1@4 ~@2 a1@6 e2@3 a2@4",
  T: "a1@4 ~@2 a1@5 ~ a2@5 e2@3 ~ a1@6 e2@6 a1@4 ~@11", U: "a1@2 a1@2 a2 e2 a1 a1@2 b1@2 c2@2 e2 a2 e2",
  V: "a1!2 a1@2 a2 e2 a1 a1@2 b1@2 c2@2 e2 a2 e2", W: "a1@5 ~ a1@14 ~ e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@5 ~ d2@2 ~ e2@3",
  X: "a1@4 ~@2 a1@15 e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@3 a2@3 d2@2 ~ e2@3",
  Y: "[a1@21 ~ e1@3 a1@3 ~@3 a1@12 ~@5 a1@20 ~ e1@3 a1@6 e2@6 ~@3 g2@3 e2@3 ~@3, ~@43 e2@8 ~@33 a2@5 ~@7]/2",
  Z: "a1@5 ~ a1@15 e1@3 a1 ~@2 a1@4 ~@2 a1@2 ~ a2@3 a2@3 d2@3 e2@3",
  AA: "[a1@21 ~ e1@3 a1@3 ~@3 a1@12 ~@5 a1@9 ~@3 a1@6 e2@6 a2@4 e2@2 a2@2 ~ c3@3 a2@2 ~ g2@2 ~ e2@3 c2@3, ~@43 e2@8 ~@45]/2",
  AB: "a1@4 ~@2 a1@5 ~ a2@5 ~ e2@3 a1@2 ~@4 a1@3 ~@3 a1@5 e2@3 ~ a2@2 ~@4",
  AC: "a1@2 ~@4 a1@5 a2@5 ~ e2@2 ~@2 a1@2 ~@4 a1@4 ~@2 a1@3 ~@2 e2@3 a2@4 ~@3",
  AD: "a1@3 ~@3 a1@4 ~@2 a2@6 e2@3 a1@2 ~@4 a1@3 ~@2 a1@5 ~ e2@3 a2@3 ~@4",
  AE: "a1!2 ~@4 a1@5 ~ a2@5 d2@3 ~ e2@2 ~@4 e2@3 ~@2 e2@4 ~@2 e2@2 ~ e2@3 ~@4", AF: "a1 ~@3",
})).s("gm_electric_bass_finger").gain(0.64)

// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note("<A@8 B ~@92>".pickRestart({
  A: "[~@14 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 ~@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 ~@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1@3 a1@3 a1@3 ~@3 a1@3 a1@3 a1]/8",
  B: "~@2 a1@3 a1@3 a1@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@32 A B@2 C@2 D@2 E@2 F@2 G ~@57>".pickRestart({
  A: "~@37 [e4,a4,e5]@10 ~", // A5
  B: "[~@2 [e4,a4,e5]@11 ~@2 [e4,a4,e5]@12 ~@2 [e4,a4]@12 ~@2 [e4,a4,e5]@11 ~@2 [e4,a4,e5]@13 ~ [e4,a4,e5]@12 ~@2 [e4,a4,e5]@12, ~@7 e5@3 ~@14]/2", // A5
  C: "[~@2 [e4,a4,d5]@11 ~@2 [e4,a4]@12 ~ [e4,a4,c#5]@12 ~@2 [e4,a4,c#5]@12 ~@2 [g4,b4,d5]@11 ~@2 [g4,b4,d5]@13 ~@2 [g4,b4,d5]@12, ~@7 d5@6 ~@35]/2", // Dsus2 A5 A G
  D: "[~@2 [g4,b4,d5]@10 ~@4 [g4,a4]@4 a4@6 ~@2 [a4,d5,g5]@13 ~@2 [a4,d5,f#5]@13 ~ [a4,d5,f#5]@11 ~@3 [g#4,b4,e5]@11 ~@2 [g#4,b4,e5]@12, ~@15 d5@11 ~@70, ~@16 g5@11 ~@69]/2", // G Gsus2 Dsus4 D E
  E: "[~@2 [g#4,b4,e5]@12 ~@2 [g#4,b4,e5]@10 ~@4 [e4,a4,d5]@12 ~ [e4,a4,d5]@13 ~ [e4,a4,c#5]@13 ~ [e4,a4,c#5]@12 ~@2 d5@11, ~@7 [g4,b4]]/2", // E Dsus2 A G
  F: "[~@2 [g4,b4,d5]@13 ~ [g4,b4,d5]@13 ~ [g4,b4,d5]@12 ~@2 [a4,d5,g5]@11 ~ [a4,d5,g5]@13 ~ [a4,d5,f#5]@13 ~ [a4,d5]@11 ~, ~@83 f#5@11 ~@2]/2", // G Dsus4 D D5
  G: "~ [g#4,b4,e5]@10 ~@2 [g#4,b4,e5]@10 ~ [g#4,b4,e5]@10 ~@2 [g#4,b4,e5]@11 ~", // E
})).s("gm_pad_warm").gain(0.48)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@44 A B C D ~@44 A E F G ~@5>".pickRestart({
  A: "[a4,c5,e5]", B: "~ [g4,b4,d5]@45 ~@2", C: "[f#4,a4,d5]@47 ~", D: "~ [g4,b4,e5]@45 ~@2", E: "[g4,b4,d5]",
  F: "[f#4,a4,d5]", G: "[g#4,b4,e5]",
})).s("gm_pad_sweep").gain(0.64)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@48 A B C D E F C D G H I J K H I J ~@20 L M N O P M N O P Q N O R@2 S T U
>`.pickRestart({
  A: "~ c4@2 ~@3 [c4,e4,a4]@3 ~@3 [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,e4,a4]@3 ~@2 [c4,e4,a4]@4 ~@2 [c4,e4,a4]@5 ~@2 [c4,e4,a4] ~ [c4,e4,a4]@3 ~@4, [e4,a4] ~@23", // Am A5
  B: "[b3,d4,g4]@3 ~@2 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@2 ~ [b3,d4,g4] ~@2 [b3,d4,g4]@2 ~@2 [b3,d4,g4]@4 ~ [b3,d4,g4]@4 ~@2 [b3,d4,g4]@5 ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~ [b3,d4,g4] ~@3", // G
  C: "[d4,f#4,a4]@3 ~@3 [d4,f#4,a4]@3 ~@3 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@4 ~@2 [d4,f#4,a4]@4 ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4]@2 ~@2", // D
  D: "[e4,b4]@3 ~@3 [e4,g4,b4]@4 ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4]@3 ~@3 [e4,g4,b4]@4 ~ [e4,g4,b4]@4 ~@2 [g4,b4] e4@2 ~ [e4,g4,b4] ~ [e4,g4,b4] ~@3, g4 ~@47", // E5 Em G Em
  E: "~ c4@2 ~@3 [c4,e4,a4]@3 ~@3 [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,e4,a4]@3 ~@2 [c4,e4,a4]@4 ~@2 [c4,e4,a4]@5 ~@2 [c4,e4,a4] ~ [c4,e4,a4]@3 ~@4, [c4,e4,a4] ~@23", // Am
  F: "[b3,d4,g4]@3 ~@2 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@2 ~ [b3,d4,g4] ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]@4 ~ [b3,d4,g4]@4 ~@2 [b3,d4,g4]@5 ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~ [b3,d4,g4] ~@3", // G
  G: "[c4,e4,a4] ~@5 c5 e5@9, e5@17 ~@31", H: "d5@17 ~ c5@3 b4@27", I: "a4@6 g4 a4@9", J: "g5@17 ~ e5@3 a5@27",
  K: "e5@17 ~ c5@3 e5@27",
  L: "[a4,c5,e5]@3 ~@3 [a4,c5,e5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@2 ~@4 [a4,c5,e5]@2 ~@3 [a4,c5,e5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5]@2 ~@5", // Am
  M: "[g4,b4,d5]@2 ~@4 [g4,b4,d5]@3 ~@3 [g4,b4,d5] ~@2 [g4,b4,d5] ~ [b4,d5] g4 ~@2 [g4,b4,d5]@2 ~@4 g4@3 ~@2 [g4,b4,d5]@3 ~@3 [g4,b4,d5] ~@2 [g4,b4,d5]@2 ~@5, ~@26 [b4,d5]@3 ~@19", // G Bm G Bm
  N: "[f#4,a4,d5]@3 ~@3 [f#4,a4,d5]@3 ~@3 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5]@2 ~@3 [f#4,a4,d5]@2 ~@4 [f#4,a4,d5]@2 ~@3 [f#4,a4,d5] ~@2 [f#4,a4,d5]@2 ~@5", // D
  O: "[g#4,b4,e5]@3 ~@3 [g#4,b4,e5]@2 ~@4 [g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@3 [g#4,b4,e5]@2 ~@3 [g#4,b4,e5]@2 ~@4 [g#4,b4,e5] ~@4 [g#4,b4] e5 ~@2 [g#4,b4,e5]@2 ~@5", // E G#m E
  P: "[a4,c5,e5]@2 ~@4 [a4,c5,e5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@2 ~@4 [a4,c5,e5]@2 ~@3 [a4,c5,e5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5]@2 ~@5", // Am
  Q: "[g4,b4,d5]@2 ~@4 [g4,b4,d5]@3 ~@3 [g4,b4,d5]@2 ~ [g4,b4,d5] ~ [b4,d5] g4 ~@2 [g4,b4,d5]@2 ~@4 g4@3 ~@2 [g4,b4,d5]@3 ~@3 [g4,b4,d5] ~@2 [g4,b4,d5]@2 ~@5, ~@26 [b4,d5]@3 ~@19", // G Bm G Bm
  R: "[~ c4@2 ~@3 [c4,e4,a4]@3 ~@3 [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,e4,a4]@3 ~@2 [c4,e4,a4]@4 ~@2 [c4,e4,a4]@5 ~ a4 [c4,e4] ~ [c4,e4,a4]@3 ~@4 [b3,d4]@3 ~@2 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@2 ~ [b3,d4,g4] ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@4 ~@2 [b3,d4,g4]@4 ~@2 [b3,d4,g4]@5 ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~ [b3,d4,g4] ~@3, [e4,a4,c5,e5]@2 ~@45 g4@3 ~@46]/2", // Am C Am Bm G Am
  S: "[d4,f#4,a4]@3 ~@3 a4@3 ~@3 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@4 ~@2 [d4,f#4,a4]@4 ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4]@2 ~@2, ~@5 [d4,f#4]@3 ~@40", // D
  T: "[e4,b4]@3 ~@3 [e4,g4]@4 ~@2 [e4,g4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4]@3 ~@3 [e4,g4]@4 ~ [e4,g4,b4]@4 ~@2 [e4,g4,b4] ~@2 b4 [e4,g4] ~ [e4,g4,b4] ~@3, g4 ~@4 b4@4 ~@2 b4@2 ~@13 b4@4 ~@18", // E5 Em
  U: "[c4,e4,a4] ~@15", // Am
})).s("gm_distortion_guitar").gain(0.56)

// other · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~ A@3 B@4 C@5 ~@88>".pickRestart({
  A: "[~@28 a7@24 e7@10 c8@8 a7@6 ~ e7@22 f7@4 e7@3 c7@3 b6@3 ~ c7@5 a6@3 g6@3 a6@20]/3",
  B: "[~@3 b6@4 ~@3 b6@3 a6@3 g6@2 ~ a6@3 e6@2 ~ d6@3 e6@47 ~ b5@48 a5@47 ~ b5@20, ~@7 c7@5 ~@180]/4",
  C: "[~@29 [a4,e5]@47 [g4,b4,d5]@47 ~ [f#4,a4,d5]@47 ~ [g4,b4,e5]@44 ~@24, ~@28 c5@46 ~@50 g#4 ~@115]/5", // A5 G D Em
})).s("gm_drawbar_organ").gain(0.64)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@13 A@2 B A@3 B A@3 B A@3 B A@3 B ~@32 C@2 D C@3 D C@3 D C@3 D C@3 D ~@18
>`.pickRestart({
  A: "~@7 x ~@40", B: "~@5 x ~@18", C: "~@9 x ~@6", D: "~@5 x ~@2",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@12 A B@18 C ~@12 D@3 E F@7 G F@7 G H@19 G F@11 G F@3 G ~>".pickRestart({
  A: "~@5 x", B: "~@2 x ~@2 x", C: "~@8 x ~@12 x ~@2", D: "~@13 x ~@29 x ~@4", E: "~@13 x ~@34", F: "~@2 x ~@4 x",
  G: "~@2 x!2 ~@4", H: "~ x ~ x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@9 A B ~ C ~@30 D ~@11 E ~@7 E ~@19 E ~@11 E ~@3 E ~>".pickRestart({
  A: "~@9 x ~@6", B: "~@21 x ~ x!2 ~@3 x ~@4 x ~@14", C: "~ x ~@4", D: "~@14 x!2", E: "~@41 x!3 ~ x ~@2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12
  [~@28 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]
  [~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]!18
  [~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@2]
  [x ~@3 x ~@2 x ~@40]
  ~@31
  [x!16]!19
  ~@18
>`).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A B ~ C ~@30 D ~@3 E ~@7 F ~@7 G ~@19 G ~@11 G ~@3 G ~>".pickRestart({
  A: "~@20 x!2 ~@3 x!2 ~@21", B: "~@9 x ~ x!2 ~@2 x ~ x!2 ~@29", C: "~@7 x!2 ~@8 x!2 ~@5 x!2 ~@22",
  D: "~@10 x ~ x!2 ~@2", E: "~@22 x ~@5 x ~@4 x ~@14", F: "~@29 x!2 ~ x!2 ~@2 x!4 ~@8",
  G: "~@29 x!2 ~ x!2 ~ x ~ x!3 ~@8",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@12 A B@18 C ~@16 D E F G D E F H D E F G I J K H L@19 H I J K G I J K G I J K H I J K H ~
>`.pickRestart({
  A: "~@17 x ~@6", B: "~@11 x ~@5 x ~@6", C: "~@22 x ~@12 x ~@12",
  D: "~ x ~@5 x ~@4 x ~@4 x ~@3 x ~@4 x ~@5 x ~@5 x ~@2 x ~@6",
  E: "x ~@5 x ~@5 x ~@4 x ~@2 x ~@5 x ~@5 x ~@5 x ~@3 x ~@5",
  F: "~ x ~@4 x ~@5 x ~@4 x ~@3 x ~@5 x ~@5 x ~@5 x ~ x ~@6", G: "x ~@5 x ~@5 x ~@5 x ~ x ~@6 x ~@4 x ~@5 x ~@2 x ~@6",
  H: "x ~@6 x ~@4 x ~@2 x ~@3 x ~@28", I: "~ x ~@4 x ~@5 x ~@4 x ~@3 x ~@4 x ~@5 x ~@5 x ~@2 x ~@6",
  J: "x ~@5 x ~@4 x ~@5 x ~@2 x ~@5 x ~@5 x ~@5 x ~@2 x ~@6", K: "x ~@5 x ~@5 x ~@4 x ~@3 x ~@5 x ~@5 x ~@5 x ~ x ~@6",
  L: "~ x ~@5 x",
})).gain(0.72)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@12 [~@23 x] [~@5 x ~@17 x]!18 [~@5 x ~@18] x ~@31 [~@3 x ~ x ~@2]!19 ~@18>")
  .gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@9 A B ~ C ~@30 D ~@11 E ~@7 E ~@19 E ~@11 E ~@3 E ~>".pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~ x!2 ~ x ~@39", C: "~@3 x ~@9 x ~@2 x ~@5 x ~@25", D: "~@24 x ~@4 x ~@3 x ~@14",
  E: "~@24 x!3 ~@21",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~@44 A B C D E F G H E F G I E F G H J K G I ~@19 I J K G H J K G H J K G I J K G I ~
>`.pickRestart({
  A: "x ~@6 x ~@5 x ~@5 x ~@2 x ~@5 x ~@5 x ~@5 x ~@2 x ~@4",
  B: "~ x ~@5 x ~@5 x ~@5 x ~@2 x ~@4 x ~@5 x ~@6 x ~@2 x ~@4",
  C: "~@2 x ~@4 x ~@5 x ~@5 x ~@3 x ~@4 x ~@5 x ~@5 x ~@2 x ~@4", D: "~ x ~@5 x ~@5 x ~@4 x ~@2 x ~@5 x ~@5 x ~@14",
  E: "~ x ~@5 x ~@4 x ~@4 x ~@3 x ~@5 x ~@4 x ~@5 x ~@2 x ~@6",
// … 19 more lines

More by Marillion