Strudelify
Land of Confusion cover art

1986 · Invisible Touch

Land of Confusion

Genesis

KeyB majorTempo115 bpm
0:00/0:00
// Land of Confusion — Genesis
// 115 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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 · synth bass 1 · "Bass"
const bass = note(`<
  ~ A@3 B C@2 D@2 E@2 C@4 D@2 E@2 C@2 F G H I J K L M N O P Q R O P S A@3 B C@2 D@2 E@2 C@2 F G H I J K L M N O P Q R O
  P S A@3 B T@2 U T@2 V W X T@2 U T@2 V W X Y@2 Z@2 AA@2 AB@2 AC AD AE C@2 D@2 E@2 C@2 F G H I J K L M N O P Q R O P S N
  O P Q R O P S A@3 AF AG
>`.pickRestart({
  A: "~@2 g#1!2 d#2@2 g#1@2 g#2@2 g#1@2 d#2@2 g#1@2", B: "~@2 g#1!2 d#2@2 g#1@2 g#2@2 g#1@2 d#2 ~ g#1 ~",
  C: "d#1!2 ~@2 d#1!3 ~ d#1!3 ~@3 d#1 ~", D: "g#1!2 ~@2 g#1!3 ~ g#1!3 ~@3 g#1 ~", E: "b0!2 ~@2 b0!3 ~ b0!3 ~@3 b0 ~",
  F: "c#1 ~ c#1 ~ c#1 ~ d#1@2 ~@2 d#1 ~@2 d#1!3", G: "f#1@2 f#1 ~ f#1 ~ g#1@2 ~ g#1@2 ~ g#1!4",
  H: "c#1 ~ c#1 ~ c#1 ~ d#1@2 ~@2 d#1 ~ d#1!3 ~", I: "f#1 ~ f#1 ~ f#1@4 ~ c#1@2 ~ c#1@2 ~@2",
  J: "c#1 ~ c#1 c#1@2 ~ d#1@2 ~@2 d#1 ~ d#1!4", K: "f#1 ~ f#1 ~ f#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1!3 ~",
  L: "c#1@2 ~ c#1!2 ~ d#1 ~@3 d#1 ~ d#1!3 ~", M: "f#1 ~ f#1!2 ~ f#1 ~@2 c#1 ~@2 c#1!3 ~@2",
  N: "~@2 d#1 ~ f#1@2 ~ d#1 f#1@2 b0@2 ~@4", O: "~@2 c#1 ~ f1@2 ~ c#1 f1@2 g#0@2 ~@4",
  P: "~@2 d#1@2 f#1@2 ~ d#1 f#1 ~ b0@2 ~@4", Q: "~@2 c#1@2 f1@2 ~ c#1 f1@2 g#0@2 ~@4",
  R: "~@2 d#1@2 f#1@2 ~ d#1 f#1@2 b0@2 ~@4", S: "~@2 c#1 ~ f1@2 ~ c#1 f1@2 c#1@2 ~@4",
  T: "c1@2 ~@2 c2@2 ~@2 g1@2 a#1 ~ c2@2 ~@2", U: "c1@2 ~@2 c2@2 ~@2 g1@2 a#1 ~ c2 ~ g1 ~",
  V: "c1@2 ~@2 c2 ~@3 g1@2 a#1 ~ c2 ~@3", W: "d#2 d2", X: "c2@8 f2@7 ~", Y: "[g#1@23 ~ g#1@6 ~@2]/2", Z: "[b0@31 ~]/2",
  AA: "[b0@29 ~@3]/2", AB: "b0 c#1", AC: "b0@8 c#1@7 ~", AD: "b0@8 c#1@4 c#1 ~ c#1 ~", AE: "c#1@2 d#1@9 ~ d#1@2 ~@2",
  AF: "~@2 g#1!2 d#2@2 g#1@2 g#2@2 g#1@2 d#2@2 [g#1,c#2] ~, ~@12 c#2 ~@3", AG: "c#2@2 d#2@10 d#1@3 ~",
})).s("gm_synth_bass_1").gain(0.41)

// chords · synth brass 2 · "Synth"
const synth_brass_2 = note(`<
  ~ A@2 B@2 ~@24 C D C D C D C D E F G@2 ~@16 C D C D C D C D E F G@2 ~@43 C D C D C D C D C D C D C D C D E F G H I
>`.pickRestart({
  A: "[g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~", // G#
  B: "[g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~", // G#m
  C: "[d#4,f#4,a#4]!8 [d#4,f#4,b4]!8", D: "[c#4,g#4] [c#4,f4,g#4]!7 [a#3,c#4,f4,g#4]!8", E: "[c4,d#4,g#4]!16",
  F: "[c4,d#4,g#4]!15 d#4", G: "[b3,d#4,g#4]!16",
  H: "[b3,d#4,g#4]!12 [b3,c#4,d#4,f4,g#4] [b3,d#4,g#4] [b3,d#4,f4,g#4] [b3,d#4,g#4], ~@7 c#4", // G#m C#7 G#m Fm7b5 G#m
  I: "[c#4,f4]@2 [d#4,f#4,a#4]@10 ~ [d#4,f#4,a#4]@2 ~, g#4 ~@15", // C# D#m
})).s("gm_synth_brass_2").gain(0.41)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~ A B A C D E F G H I J I J E F G H I J ~ K ~@3 K ~@2 L ~@8 A B A C J E F G H I J ~ K ~@3 K ~@2 L ~@8 A B A C M N O N
  P Q R S M N O N P Q R S T@2 ~@7 U V ~ E F G H I J ~ K ~@3 K ~@2 L ~@16 A B A W X
>`.pickRestart({
  A: "~ g#2 d#3 g#2 g#3 g#2 d#3 g#2", B: "~@2 g#2@2 d#3@2 g#2@2 g#3@2 g#2@2 d#3@2 g#2 ~",
  C: "~@2 g#2@2 d#3@2 g#2@2 g#3@2 g#2@2 [d#3,g#3]@2 [g#2,d#3,g#3] ~", D: "[d#3,g#3] [d#3,a#3] ~@6",
  E: "~@12 [f#3,c#4,a#4] ~ [f#3,c#4,a#4] ~", F: "[f#3,c#4,a#4] [g#3,d#4,c5] ~@6", G: "~@12 [g#3,d#4]@2 [g#3,d#4] ~",
  H: "[g#3,d#4] [c#4,f4] ~@6", I: "~@12 [g#3,c#4] ~ [g#3,c#4] ~", J: "[g#3,c#4] [a#3,d#4] ~@6",
  K: "~@10 [a#3,d#4] ~ [a#3,d#4]@2 ~@2", L: "~@11 c#4@2 ~ c#4@2, ~@5 g#3@3",
  M: "~@2 [d#4,g4] ~ [d#4,g4]@2 [d4,f4]@2 [d4,f4]@2 [c4,d#4]@2 [c4,d#4]@2 ~@2", N: "~@2 [g3,c4] ~ [g3,c4] ~@3",
  O: "~@2 [d#4,g4]@2 [d#4,g4]@2 [d4,f4] ~ [d4,f4]@2 [c4,d#4] ~ [c4,d#4]@2 ~@2", // D# Dm Cm
  P: "~@2 [d#4,g4]@2 [d#4,g4]@2 [d4,f4] ~ [d4,f4]@2 [c4,d#4]@2 [c4,d#4]@2 ~@2", // D# Dm Cm
  Q: "~@2 [d4,f4] ~ [d4,f4]@2 [c4,d#4] ~ [c4,d#4]@2 [c4,d#4] ~ [c4,d#4]@2 ~@2", // Dm Cm
  R: "~@2 [d#4,g4] ~ [d#4,g4]@2 [d4,f4] ~ [d4,f4]@2 [c4,d#4] ~ [c4,d#4]@2 ~@2", // D# Dm Cm
  S: "~@2 [c4,d#4] ~ [c4,d#4] ~ [c4,d#4] ~ [d4,f4]@3 ~ [d4,f4]@2 ~@2", T: "[[g#3,c4,d#4]@23 ~ [g#3,c4,d#4]@6 ~@2]/2",
  U: "~@12 [g#4,c#5] ~ [g#4,c#5] ~", V: "[g#4,c#5]@2 [a#4,d#5]@9 ~ [a#4,d#5]@2 ~@2",
  W: "~@2 g#2@2 d#3@2 g#2@2 g#3@2 g#2@2 [d#3,g#3,g#4,c#5] ~ [g#2,d#3,g#3,g#4,c#5] ~", // C#sus2 G#sus4
  X: "[g#4,c#5] [a#4,d#5]@5 [a#4,d#5] ~", // C#5 D#5
})).s("gm_overdriven_guitar").gain(0.46)

// chords · pad warm · "Pad"
const pad_warm = note(`<
  ~ A@2 B@2 C@2 D@2 E@4 F@4 G@2 H@2 I J@2 K@2 L@2 M N O P Q R O R S T@2 U@2 F@4 G@2 H@2 I J@2 K@2 L@2 M N O P Q R O R S
  T@2 U@2 ~@22 V W X Y ~ F@4 G@2 H@2 I J@2 K@2 L@2 M N O P Q R O R S N O P Q R O R S T@2 Z@2 AA
>`.pickRestart({
  A: "[g#3,c4,d#4]/2", B: "[g#3,b3,d#4]/2", C: "[d#3,g3,a#3]/2", D: "[d#3,g#3,c4]/2",
  E: "[[c#3,f3,g#3]@31 ~ d#3@30 ~@2, ~@31 [f#3,a#3]@31 ~@2]/4", F: "[[d#3,g3,a#3]@31 [d#3,g#3,c4]@32 ~]/4",
  G: "[c#3,f3,g#3]/2", H: "[[d#3,f#3,a#3]@31 ~]/2", I: "[c#3,f3,g#3]@3 [d#3,f#3,a#3]@5",
  J: "[[d#3,f#3,a#3,c#4]@6 [g#3,c4,d#4]@9 [c#3,f3,g#3]@7 [d#3,f#3,a#3]@10]/2", // D#m7 G# C# D#m
  K: "[[d#3,f#3,a#3,c#4]@6 ~@2 [c#3,f3,g#3,c#4]@7 ~ g#3@5 ~ [d#3,f#3,a#3]@10, ~@15 [c#3,f3]@6 ~@11]/2", // D#m7 C# D#m C#
  L: "[[d#3,f#3,a#3,c#4]@6 [g#3,c4,d#4]@9 [c#3,f3,g#3]@6 [d#3,f#3,a#3]@11]/2", // D#m7 G# C# D#m
  M: "[d#3,f#3,a#3,c#4]@7 [c#3,f3,g#3]@6 ~@3", N: "[d#3,f#3,a#3]@7 ~ [f#3,b3]@6 ~@2, ~ d#3",
  O: "[c#3,f3,g#3] [a#2,c#3,f3,g#3]", P: "[d#3,f#3,a#3]@7 [d#3,f#3,b3]@9", Q: "[c#3,f3,g#3] [a#2,f3,g#3]",
  R: "[d#3,f#3,a#3] [d#3,f#3,b3]", S: "[c#3,f3,g#3]@4 [a#2,c#3,f3,g#3]@3 ~", T: "[[d#3,g#3,c4,d#4]@15 ~]/2",
  U: "[[d#3,g#3,b3,d#4]@13 ~@3]/2", V: "[f#3,b3,d#4]@7 [g#3,c#4,f4]@9", W: "[b3,d#4,f#4] [g#3,c#4,f4]",
  X: "[f#3,b3,d#4] [g#3,c#4,f4]", Y: "[b3,d#4,f#4]@7 [g#3,c#4,f4]@6 ~@3", Z: "[[d#3,g#3,b3,d#4]@13 ~ [c#4,f4,g#4]@2]/2",
  AA: "~@2 [d#4,f#4,a#4]@13 ~", // D#m
})).s("gm_pad_warm").gain(0.41)

// chords · piano · "CP-70"
const piano = note(`<
  ~@13 A@2 B C@2 D A E F G F H F G F I J K J L J K J M N O P@2 Q A B C@2 D A E F G F H F G F I J K J L J K J M N O P@2
  R@2 S@2 T@2 U@2 R@2 S@2 T@2 U@2 V@2 W X W Y W X W Z AA Q A B C@2 D A E F G F H F G F I J K J L J K J M J K J L J K J M
  N O AB@2 AC
>`.pickRestart({
  A: "~@4 a#2 ~ d#3@2 ~@4 a#2 ~ d#3@2, d#2!2, ~@2 d#3@3 a#2@3 ~@2 d#3@3 a#2@3",
  B: "~@4 d#3 ~ g#3@2 ~@4 d#3 ~ g#3@2, g#2!2, ~@2 g#3@3 d#3@3 ~@2 g#3@3 d#3@3",
  C: "[~@4 d#3 ~ g#3@2 ~@4 d#3 ~@3 c#2@2 ~@2 g#2 ~ c#3@2 ~@4 g#2 ~ c#3@2, g#2@8 g#2@10 ~@3 g#2@3 c#2@8, ~@2 g#3@3 d#3@3 ~@2 g#3@3 d#3@5 c#3@4 ~@4 c#3@4 ~@2, ~@14 g#3@4 ~@11 g#2@3]/2",
  D: "~@4 g#2 ~ c#3@2 ~@4 g#2 ~ c#3@2, c#2!2, ~@2 c#3@3 g#2@3 ~@2 c#3@3 g#2@3",
  E: "~@4 a#2 ~ d#3@2 ~@4 a#2@2 d#3 ~, d#2@8 d#2@7 ~, ~@2 d#3@3 a#2@3 ~@2 d#3@4 ~@2",
  F: "[c#3,f3,g#3]@3 [d#3,f#3,a#3]@5", G: "[d#3,f#3,a#3,c#4]@3 [g#3,c4,d#4]@5", H: "[d#3,f#3,a#3,c#4]@3 [f3,g#3,c#4]@5",
  I: "[d#3,f#3,a#3,c#4]@3 [c#3,f3,g#3,c#4]@4 ~", J: "[d#3,f#3,a#3] [d#3,f#3,b3]", K: "[c#3,f3,g#3] [a#2,f3,g#3]",
  L: "[c#3,f3,g#3] [a#2,c#3,f3,g#3]", M: "[c#3,f3,g#3]@8 [a#2,c#3,f3,g#3]@7 ~", N: "[d#3,g#3,c4,d#4]@3 ~",
  O: "~@3 [d#3,g#3,c4,d#4]", P: "[[d#3,g#3,b3,d#4]@28 [d#3,g#3,b3,d#4] ~@3]/2",
  Q: "d#2@2 d#3 ~ a#2!2 d#3 ~@5 a#2 ~ d#3@2, ~ d#2, ~@10 d#3@3 a#2@3", R: "[c4,d#4,g4]/2", S: "[[f4,a4], c4@15 ~]/2",
  T: "[c4,d#4,g#4]/2", U: "[[a#3,d#4,g4]@24 [c4,f4,a4]@7 ~]/2", V: "[[g#3,c4,d#4]@31 ~]/2",
  W: "~@3 f#5 ~@3 c#5, b4@8 ~@3 d#5@5, ~@3 c#5@5 f5@8", X: "~@3 f#5 f5@2 c#5@2, b4 ~, ~@3 c#5@5 ~@8",
  Y: "~@6 f#5@2 ~@4 c#5@3 ~, b4 ~, ~@3 c#5@5 f5@7 ~",
  Z: "~@6 f#5@2 ~@4 [f3,g#3,c#4,c#5]@2 [f3,g#3,c#4] ~, b4 ~, ~@3 c#5@5 f5@7 ~", // C#
  AA: "[f3,g#3,c#4] ~ [f#3,a#3,d#4]@9 ~ [f#3,a#3,d#4]@2 ~@2", // C# D#m
  AB: "[[d#3,g#3,b3,d#4]@28 [d#3,g#3,b3,c#4,d#4,f4,g#4] ~ [c#4,f4,g#4] ~]/2", // G#m C#7 C#
  AC: "[c#4,f4]@2 [d#4,f#4,a#4]@10 ~ d#4 ~@2, g#4 ~@11 [f#4,a#4]@2 ~@2", // C# D#m F#
})).s("gm_piano").gain(0.46)

// chords · sitar
const sitar = note("<~@87 A B A C A B A C ~@38>".pickRestart({
  A: "~@3 f#5 ~@3 c#5, b4@8 ~@3 d#5@5, ~@3 c#5@5 f5@8", B: "~@3 f#5 f5@2 c#5@2, b4 ~, ~@3 c#5@5 ~@8",
  C: "~@6 f#5@2 ~@4 c#5@3 ~, b4 ~, ~@3 c#5@5 f5@7 ~",
})).s("gm_sitar").gain(0.26)

// other · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@89 A B C D@2 E F ~@37>".pickRestart({
  A: "b4@2 ~ c#5@2 ~ f#5 ~ f5@2 ~ d#5@2 ~ c#5@2", B: "b4@2 ~ c#5@2 ~ f#5 ~ f5@2 ~@2 c#5@2 ~@2",
  C: "[b3,b4]@2 ~ [c#4,c#5]@2 ~ f#5@2 [f4,f5]@2 ~ [d#4,d#5]@2 ~ c#5 ~, ~@6 f#4 ~@6 c#4@2 ~", // B C# F D#
  D: "[[b3,b4]@2 ~ c#5@2 [f#4,f#5]@2 ~ [f4,f5]@3 ~ [c#4,c#5]@2 ~@2 b4 ~@2 c#4@2 [f#4,f#5]@3 [f4,f5]@2 ~ d#4@2 [c#4,c#5]@3, ~@2 c#4@3 ~@10 b3@3 c#5@2 ~@6 d#5@3 ~@3]/2", // B F# F C# F# F C#
  E: "[b3,b4]@2 ~ [c#4,c#5]@2 [f#4,f#5]@2 ~ [f4,f5]@2 ~@2 [g#4,c#5] ~ [g#4,c#5] ~", // B C# F# F C#5
  F: "[g#4,c#5]@2 [a#4,d#5]@9 ~ [a#4,d#5]@2 ~@2", // C#5 D#5
})).s("gm_string_ensemble_2").gain(0.51)

// other · epiano2 · "lead"
const epiano2 = note(`<
  ~@5 A B C D E F G H I J K D L M G N O P Q R S T U ~ V W X Y Z AA AB W AC ~@3 I AD AE AF AG AH G AI AJ P AK R AL AM AN
  ~ V W V AO AP AA AB W AQ AR@2 ~@8 AS AT AU AV AW AX AY AZ BA BB BC BD ~@8 A BE AE D AG BF BG BH BI P BJ BK BL BM BN ~
  V BO AB BP BQ AA BR BS AB BO AB BT Z BU AB BV BW BX@2 ~@2
>`.pickRestart({
  A: "~@6 d#3 ~ d#3 ~ d#3 d#3@3 c#3@2", B: "d#3@4 f3@3 d#3@2 c#3 a#2@3 ~@3", C: "~@6 f#3@2 g#3 ~ g#3 ~ g#3@2 f#3 ~",
  D: "g#3@3 ~ a#3@2 ~ g#3@2 f#3 d#3@3 ~@3", E: "~@6 g#3 ~ g#3 ~ f#3 ~@2 f#3 f3@2", F: "d#3@2 ~@2 d#3@2 ~ d#3 ~@8",
  G: "~@6 a#2 c#3 d#3 ~ d#3@4 ~@2", H: "c#3 ~ d#3 ~ c#3 ~ d#3@3 ~@7", I: "~@6 a#2@2 c#3 ~ d#3 ~ d#3 ~ c#3 ~",
  J: "d#3@3 ~ f3@2 ~ d#3@2 c#3 a#2@3 ~@3", K: "~@6 f#3@2 g#3 ~ g#3 ~ g#3@2 f#3@2",
  L: "~@6 g#3 ~ g#3@2 f#3 ~ f#3@2 f3 ~", M: "d#3@2 ~ d#3@2 ~ d#3@2 ~@8", N: "c#3 ~ d#3 ~ c#3 ~ d#3@2 ~@6 d#3@2",
  O: "c#3 ~ c#3 ~ c#3 ~ d#3 ~ d#3@4 ~@4", P: "f#3 ~ f#3 ~ f#3 ~ g#3 ~ g#3@3 ~ f#3 ~ g#3 ~",
  Q: "a#3@2 g#3@2 d#3@2 f#3@4 d#3@5 ~", R: "~@6 d#3@2 g#3@3 ~ g#3@3 ~", S: "f#3@2 f3 d#3 ~@2 d#3@3 c#3 a#2 ~@5",
  T: "~@4 g#3 ~ g#3 ~ g#3 ~ g#3 ~ f#3 ~ g#3 ~", U: "a#3@2 g#3 ~ d#3 ~ f#3@3 ~ d#3@2 d#3@4", V: "~@3 d#3 f#3@2 f3 d#3",
  W: "c#3 f3 a#2 c#3", X: "~@6 d#3@2 f#3@3 ~ f3@2 d#3 ~", Y: "c#3@4 f3@3 ~ f3@3 ~ a#2@3 ~",
  Z: "~@8 a#3@2 ~ g#3@3 f#3@2", AA: "f3@4 c#3@4 a#2@4 c#3@3 ~", AB: "~@6 d#3@2 f#3@3 f3@3 d#3@2", AC: "d#3@3 ~",
  AD: "d#3@2 ~@2 f3@2 ~ d#3@2 c#3 a#2@4 ~@2", AE: "~@6 f#3@2 g#3 ~ g#3 ~ g#3 ~ f#3 ~",
  AF: "g#3@3 ~ a#3@3 g#3@2 f#3 d#3@3 ~@3", AG: "~@6 g#3 ~ g#3 ~ f#3 ~ f#3 ~ f3 ~", AH: "d#3@2 ~@2 d#3@2 ~ d#3@2 ~@7",
  AI: "c#3@2 ~ d#3@2 ~ c#3 ~ f#3@2 ~ d#3@2 ~ d#3 ~", AJ: "c#3 ~ c#3 ~ c#3 ~ d#3@5 ~ d#3 ~ d#3@2",
  AK: "a#3@2 g#3@2 d#3 ~ f#3@3 ~ d#3@4 ~@2", AL: "f#3@2 f3 d#3@2 ~ d#3@3 c#3 a#2 ~@5",
  AM: "~@2 d#3@2 f#3 ~ g#3 ~ g#3@4 f#3 ~ g#3 ~", AN: "a#3@2 g#3@2 d#3 ~ f#3@4 d#3@4 ~@2", AO: "c#3@4 f3@4 f3@4 a#2@3 ~",
  AP: "~@4 a#3@2 g#3 f#3", AQ: "d#3@11 ~@5", AR: "[~@12 g#3@2 ~ g#3@2 f#3 d#3@3 ~@11]/2",
  AS: "~@2 c3 ~ c3 ~ c3@2 f3@3 f3@3 f3@2", AT: "~ d#3 c3@4 ~@10", AU: "~@10 c3 ~ d#3 ~ f3@2",
  AV: "g3@2 c3 d#3@2 f3 ~@2", AW: "~@6 c3 d#3", AX: "g3@3 ~ f3 ~ f3@3 ~ d#3@5 ~",
  AY: "f3@3 ~ f3@2 d#3 ~ d#3@4 ~@2 d#3@2", AZ: "g3@2 ~ g3@2 ~ f3 ~ f3@4 d#3@4", BA: "~@4 c3 ~ c3@2 f3@3 ~ f3@4",
  BB: "d#3 d3 c3@14", BC: "~@8 c3@2 ~ c3@2 ~ c3@2", BD: "b2", BE: "d#3@3 ~ f3@2 ~ d#3@2 c#3 a#2@4 ~@2",
  BF: "d#3@2 ~ d#3@2 ~ d#3@3 c#3 a#2@2 ~@4", BG: "~@6 a#2 c#3 d#3 a#2 c#3 d#3 ~ a#2 c#3 d#3",
  BH: "c#3 d#3 c#3@2 c#3@2 ~ d#3@3 ~@4 d#3 ~", BI: "c#3 ~ c#3 ~ c#3 ~ d#3 ~ d#3@4 ~@2 d#3 ~",
  BJ: "a#3 g#3 d#3 f#3@2 d#3@2 ~", BK: "~@6 d#3 ~ g#3@3 ~ g#3@3 ~", BL: "f#3@2 f3 d#3 ~@2 d#3@3 c#3 a#2@2 ~@4",
  BM: "~@2 g#3 ~ g#3 ~ g#3 ~ g#3@4 f#3@2 g#3@2", BN: "a#3 g#3 d#3 f#3@2 d#3 ~@2", BO: "c#3@4 f3@4 a#2@4 c#3@3 ~",
  BP: "c#3@4 f3@3 ~ f3@4 a#2@3 ~", BQ: "~@8 a#3@3 g#3@3 f#3@2", BR: "~@6 c#3@2 f#3@3 f3@3 d#3@2",
  BS: "c#3@3 ~ f3@4 a#2@4 c#3@3 ~", BT: "c#3@3 ~ f3@3 f3@4 a#2@4 ~", BU: "f3@4 c#3@3 ~ a#2@4 c#3@3 ~",
  BV: "c#3@4 f3@3 ~ f3@4 a#2 ~@3", BW: "d#3", BX: "[~@12 g#3@2 ~ g#3@2 f#3 d#3@10 ~@4]/2",
})).s("gm_epiano2").gain(0.8)

// drums · rim
const rim = s("rim").struct(`<
  A B@3 C B@7 C B@7 C B@7 C B@7 C B@3 C B@7 C B@7 C B@7 C B@3 C ~@27 B@7 C B@7 C B@7 C B@7 C B@3 C D
>`.pickRestart({
  A: "~@8 x ~@2 x ~@2 x ~", B: "~ x ~ x", C: "~@4 x ~@3 x ~@2 x ~@2 x ~", D: "x ~@2 x",
})).gain(0.32)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@69 A B A@2 B A B C A B A@2 B A B C ~@48>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@3 x!2 ~ x", C: "x ~@12 x!2 ~",
})).gain(0.32)

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

// … 24 more lines

More by Genesis