Strudelify

Woman From Tokyo

Deep Purple

KeyE majorTempo125 bpm
0:00/0:00
// Woman From Tokyo — Deep Purple
// 125 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 16-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): guitar program 29, guitar program 28.
setcpm(125/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.

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B@3 A C@3 D E F G H E F G I J@2 K@2 L M N O E F G H E F G I P@2 Q R S@4 T F G U V F G I W@2 X Y Z@2 AA@2 Z@2 AA@2
  AB@2 ~@4 AC F G H E F G AD AC F G H E F G AD AC F G AE
>`.pickRestart({
  A: "~@4 [e2,e3]@4 [e2,e3,a3]@2 [e2,e3,g#3]@2 [e2,b2,e3] ~ [e2,e3,a3]@2, ~@2 a3 ~@5", // E A5 E E5 A5
  B: "[~@2 [g#2,e3,g#3]@3 ~ [e2,b2,e3]@6 ~ c#3 [a1,b2,d3]@32 ~@2, ~@6 [b1,b2] ~@17]/3", // C#m E5 Bm7 B
  C: "[~@2 [g#2,e3,g#3]@3 ~ [e2,g2,e3]@2 ~ [f2,g#2,f3]@2 ~ [f#2,a2,f#3]@2 ~ [g2,b2,g3]@31 ~@2]/3", D: "b1",
  E: "~@2 [e2,e3]@2 [e2,e3,a3] [e2,e3,g#3] [e2,b2,e3] [e2,e3,a3], ~@2 a3 ~@5", // E A5 E E5 A5
  F: "~@2 [g#2,e3,g#3]@3 ~ [e2,b2,e3]@6 [e2,b2] [f#2,c#3] [g2,e3] ~", // C#m E5 F#5 C
  G: "e2@2 [e2,e3]@2 [e2,e3,a3] [e2,e3,g#3] [e2,b2,e3] [e2,e3,a3], ~@2 a3 ~@5", H: "~ [g#2,e3,g#3]@7",
  I: "~@2 [g#2,e3,g#3]@6 ~@2 e2@2 f2 ~ f#2 ~", // C#m
  J: "[g2@4 [g3,b3,d4]@9 ~ [a3,c4,f4]@10 ~@2 g4@2 d4@2 [d4,g4]@2, ~@13 g3@3]/2", // G F G5
  K: "[~@4 [g3,d4,g4,b4]@4 ~@4 g3@2 [f2,a3,c4,f4]@5 ~ [f2,a3,c4,e4] ~ [f2,a3,c4,d4]@5 ~@5]/2", // G F Fmaj7 Dm7
  L: "~@4 [d4,g4]@7 b3 ~@2 [a3,c4,f4]@2, ~@4 b3@5 ~@7", M: "~@2 [a3,c4,f4]@3 ~ [f3,a3,c4]@9 ~",
  N: "~@2 [d4,g4]@4 b3 [a3,c4,f4], ~@2 b3@3 ~@3", O: "~@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@5 ~",
  P: "[g2@4 [a3,b3,d4,g4]@8 ~@2 [a3,c4,f4]@8 ~ g3 [a3,c4,f4] g3 [a3,c4,f4]@4 g3@2]/2", // G F
  Q: "g2@4 [b3,d4,g4]@7 ~@3 [b3,d4,g4]@2", R: "~@2 [b3,d4,g4]@2 ~@2 f3@9 ~",
  S: "[[d3,g3,b3]@4 [d4,g4]@8 ~@2 [g2,f3,g3]@4 [f3,g3,a3,d4]@11 ~ g3@2 d4@2 f4@2 ~@8 d4@2 b3@4 ~@2 b4@12, ~@2 b3@2 ~@11 b3@8 g3@9, ~@18 g4@5 ~@2 d4@7, ~@25 b3@2 ~@5]/4", // G G5 G7 Dm
  T: "[b2,e3,g#3]@2 [e2,e3]@2 [e2,e3,a3] [e2,e3,g#3] [e2,b2,e3] [e2,e3,a3], ~@2 a3 ~@5", // E A5 E E5 A5
  U: "~@2 [g#2,e3,g#3]@10 [e2,b2] [f#2,c#3] [g2,e3] ~", // C#m E5 F#5 C
  V: "[e2,b2]@2 [e2,e3]@2 [e2,e3,a3] [e2,e3,g#3] [e2,b2,e3] [e2,e3,a3], ~@2 a3 ~@5", // E5 E A5 E E5 A5
  W: "[b2@4 [f#3,b3] ~@3 b2@4 [f#3,b3]@2 a2@5 ~ [e3,a3]@2 ~@2 a2@4 [e3,a3]@2 ~@2, g2 ~@31]/2", // B5 A5
  X: "e2@2 [b2,e3] ~ [b2,d3] [b2,e3] ~@2", Y: "e2@4 [b2,e3]@3 ~ e2@4 d3@2 e3@2, ~@3 b2",
  Z: "[b2@4 [f#3,b3] ~@3 b2@4 [f#3,b3]@2 a2@5 ~ [e3,a3]@2 ~@2 a2@4 [e3,a3]@2 ~@2]/2", // B5 A5
  AA: "e2@2 [e3,g#3] ~ e2@2 [e3,g#3] ~", // E
  AB: "[b2@4 [f#3,b3] ~@3 b2@4 [f#3,b3]@2 a2@6 [e3,a3]@2 ~@6 [e3,a3]@2 ~@2, a#2 ~@13 a#2 ~@9 a2@6 ~@2]/2", // B5 A5
  AC: "[b2,e3,g#3]@3 ~ [e2,e3]@4 [e2,e3,a3]@2 [e2,e3,g#3]@2 [e2,b2,e3]@2 [e2,e3,a3]@2, ~@2 a3 ~@5", // E A5 E E5 A5
  AD: "~ [g#2,e3,g#3]@5 ~@2", AE: "~ [g#2,e3,g#3]@6 ~",
})).s("gm_overdriven_guitar").gain(0.42).pan(0.9)

// bass · electric bass finger
const bass = note(`<
  ~@8 A B C@2 D B C@2 E F@8 B C@2 D B C@2 E F@8 B G C H B I C J K L M@2 K L M@2 K L M@2 K L N@3 O B C@2 D B C@2 E B C@2
  D B C@2 E B C@2 P
>`.pickRestart({
  A: "~@7 e2, e1", B: "e1@2 e1@2 e2@3 e2 e1 ~ e1@2 e2@3 ~", C: "e1 ~ e1@2 e2@4 e1 ~ e1@2 e2@3 e2",
  D: "e1@2 e1@2 e2@4 g#1 ~ g#1 ~ a1 ~ g#1@2", E: "e1@2 e1@2 e2@4 e1 ~ e1@2 f1@2 f#1@2",
  F: "g1@4 d2 ~ d2 ~ d2@2 e2@2 f2@2 g2@2", G: "e1 ~ e1@2 e2@4 b1 ~ b1 ~ d2@2 e2@2",
  H: "e1 ~ e1@2 a1@2 ~ a1 b1 ~ b1@2 d2@2 e2@2", I: "e1 ~ e1@2 e2@4 a1 ~ a1@2 b1@2 e2@2",
  J: "e1@2 e1@2 e2@4 a1 ~ a1@2 a#1@2 a1@2", K: "b1!2 b2 b1!3 b2 b1", L: "a1!2 a2 a1!3 a2 a1", M: "e1!2 e2 e1!3 e2 e1",
  N: "c2!2 c3 c2@2 c2 c3 c2", O: "c2@2 c2@2 c3@2 c2@4 c2@2 c3@2 c2 ~", P: "e1@2 e1@2 e2@4 g#1 ~ g#1 ~ a1 ~@3",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · rock organ
const rock_organ = note(`<
  ~@2 A@2 ~@2 B@2 ~ C D E F C D E F G@2 H I J K@2 L C D E F C D E F M@2 N O P Q R@2 C D E F C D E F S T U V W X Y Z W X
  AA AB W X AC@4 AD D E F C D E F C D E F C D E F C D E AE
>`.pickRestart({
  A: "[~@6 d5@9 ~@3 f#5@10 [a4,b4,c5,d5,e5,f5] [c4,d4,e4,f4,g4] [e3,f3,g3,a3,b3] [g2,a2,b2,c3,d3], ~ [d2,a4]@6 ~, ~@6 c#5 ~@9 d5@11 ~@5]/2", // Dm7 C Em G D5
  B: "[~@4 d4@2 [g5,b5]@6 g4@2 [f5,a5]@2 f#4@2 [e5,g#5]@2 ~ [d#5,g5]@3 e4@2 [d5,f#5]@2 d#4@2 [c#5,f5]@2, ~ g2@7, ~@6 g#5 ~@13 f4@2 ~@10]/2", // G F E D# D C#
  C: "~@4 [e5,g#5,c#6]@2 ~@2 [e5,g#5,c#6]@2 [e5,g#5,b5,c6] ~ [e5,g#5] ~ [e5,g#5,c#6]@2", // C#m E C#m
  D: "~@2 [e5,g#5,b5]@3 ~ [e5,g#5]@7 ~@3", // E
  E: "~@4 [e5,g#5,c#6]@2 ~@2 [g#5,c#6] ~ [e5,b5]@2 g#5 ~ [e5,g#5,c#6]@2, ~@8 e5@2 g#5 ~@5", // C#m C#5 E5 C#m
  F: "~@2 [e5,g#5,b5]@10 [g5,a5] [g4,a4,b4,c5,d5,e5,f5] [a3,b3,c4,d4,e4,f4] [c3,d3,f3,g3]", // E Gsus2 G7 Dm7 Csus4
  G: "[~@4 [b4,d5,g5]@9 ~ [a4,c5,f5]@7 ~ [a4,c5,f5] ~@3 [a4,c5,f5]@2 ~@2 [a4,c5,f5]@2]/2", // G F
  H: "~@4 [d5,g5]@8 b4 ~ [a4,c5,f5]@2, ~@2 b4@3 ~@3", I: "~@2 [a4,c5,f5]@3 ~ [c5,f5,a5]@10",
  J: "~@4 [b4,d5,g5]@8 f4 ~ [a4,c5,f5]@2", // G F
  K: "[f4 ~ [a4,c5,f5]@4 f4@2 [a4,c5,e5]@2 f4@2 f5@2 e5@4 ~@2 [b4,g5]@3 ~@3 [g5,c6,d6,f6]@2 ~@2 [c6,d6,f6]@2, ~@12 [a4,c5]@5 ~ d5@5 ~@7 g5 ~]/2", // F Am Em Gsus4 Dm7 Am
  L: "[a5,c6,f6]@2 ~ [a5,c6,e6]@2 [a5,c6,d#6]@2 ~ [a5,d6]@4 a#5@2 a5@2, ~@4 c6 ~@3", // F Am Adim D5
  M: "[g2@4 [b4,d5,g5]@8 ~@2 [a4,c5,f5]@9 ~ [a4,c5,f5] ~ [a4,c5,f5]@5 ~]/2", N: "g2@2 [g5,b5,d6]@4 ~ [g5,b5,d6]",
  O: "~@2 f5@8 f5 e5 f5 e5 d5 c5, ~ [a5,c6]@7", P: "g2@4 [g5,b5,d6]@8 [d5,g5,b5] ~ [b5,d6] ~, d5 ~@13 g5@2",
  Q: "~@2 [a4,c5]@5 ~ [a4,c5] ~ [a4,c5,f5] ~ [a4,g5] ~ a5@2, ~ f4@7, ~ f5@3 ~@2 c5@2, ~@14 a4 ~", // Am F A7
  R: "[[b4,d5,g5]@4 g4@8 g5@4 g5@2 a#5@2 g5@2 a#5@2 g5@2 a#5@2 a5 g5 f5 ~, ~@3 [b4,d5]@5, ~@12 f5@8 f#5 ~@3 f#5 ~@7]/2", // G Bm
  S: "[f#4,b4] ~ [d#4,f#4,b4] ~ [e4,g#4,b4]@3 ~ [d#4,f#4,b4]@5 ~ [c#4,e4,a4]@2, d#4@2 ~@12 g#4 ~", // B5 B E B A
  T: "~@2 [c#4,e4,a4] ~ [d4,f#4,a4]@3 ~ [c#4,e4,a4]@8, ~@8 g#4 ~@7", // A D A
  U: "[e3,b3] ~ b3@2 [e4,a4,c#5]@3 ~ [e4,g#4,b4]@6 [e3,b3]@2, ~@2 e3 ~@13", // E5 A E E5
  V: "~@2 [e3,b3]@2 [e4,a4,c#5]@3 ~ [e4,g#4,b4]@6 ~@2", // E5 A E
  W: "[d#4,f#4,b4]@2 ~@2 [e4,g#4,b4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,b4] ~ [c#4,e4,a4]@2, ~@8 a#4 ~@5 a#4 ~", // B E B A
  X: "~@2 [c#4,e4,a4] ~ [d4,f#4,a4]@3 ~ [c#4,e4,a4]@7 ~, ~@8 [f4,g#4] ~@7", // A D A Fm
  Y: "[d4,e4,g#4,b4]@2 ~@2 [d4,e4,g#4,b4]@5 ~ [d4,e4,g#4,b4] ~ [d4,e4,g#4,b4]@2 ~@2", // E7
  Z: "[d4,e4,g#4,b4] ~@5 [d4,e4,g#4,b4]@3 ~ [d4,e4,g#4] ~ [d4,e4,b4] ~ [d4,e4,g#4,b4]@2, ~@6 g#4 ~", // E7
  AA: "[e4,g#4,b4,d5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@2 [e4,g#4,b4,d5]@5 ~ [b4,d5,e5]@2, ~@14 g#5 ~", // E7
  AB: "~@2 [b4,d5,e5,g#5]@3 ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5]@5 ~@3", // E7
  AC: "[~@56 e5@4 [a6,a#6,b6] [d6,e6,f6,f#6,g6,g#6] [d4,e4,f4,g4,a4,b4,c5] [b2,c3,d3,e3,f3,g3,a3,b3,c4], [c4,e4,g4]@15 ~, ~@8 a#4@7 ~, ~@12 c5@3 ~]/4", // Dm7 Bm7b5 C
  AD: "[g2,a2] ~@3 [e5,g#5,c#6]@2 ~@2 [e5,g#5,c#6]@2 [e5,g#5,b5,c6] ~ [e5,g#5] ~ [e5,g#5,c#6]@2", // Gsus2 C#m E C#m
  AE: "~ [e5,g#5,b5]@5 ~@2", // E
})).s("gm_rock_organ").gain(0.3).pan(0.2)

// chords · rock organ · soft notes
const rock_organ_soft = note(`<
  ~@6 A ~@4 B C ~@2 B C ~@2 D ~ D ~@5 B C ~@2 B C ~@7 E ~@2 B C ~@2 B C ~@4 F ~@2 G F ~ H ~ F ~@4 I J ~ B C ~@2 B C ~@2
  B C ~@2 B C ~@2 B ~
>`.pickRestart({
  A: "~@6 a#5 ~@9", B: "~@15 d6", C: "~@12 g#5 ~@2 [b2,e3]", D: "~@4 f5 ~@11", E: "f#5 ~@15", F: "a#4 ~@15",
  G: "~@10 b4 ~@5", H: "~@14 g5 ~", I: "~@13 [e5,f5,g5,a5,a#5,b5,c6] d5 ~", J: "f2 ~@15",
})).s("gm_rock_organ").gain(0.1).pan(0.2)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  A ~@3 A ~@4 A ~@2 B A ~@2 B ~@8 A ~@2 B A ~@2 B ~@11 B ~@3 B ~@21 B A ~@2 B ~@3 B A ~@2 B ~@3 B
>`.pickRestart({
  A: "e2@3 ~@13", B: "~@5 g#2@5 ~@6",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.8)

// chords · piano
const piano = note("<~@48 A B@2 C D E@2 F@4 G H E@2 I J K L M ~@7 N O P Q R S T U V W X@2>".pickRestart({
  A: "~@8 [b6,c7] [c6,d6,e6,f6,g6,a6] [c5,d5,e5,f5,g5,a5,b5] [c4,d4,e4,f4,g4,a4,b4] [d3,e3,f3,g3,a3,b3] [d2,e2,f2,g2,a2,b2,c3] [e1,f1,g1,a1,b1,c2] [g0,a0,b0,c1,d1]", // Cmaj7 Dm7 Cmaj7 Em7 Dm7 Cmaj7 G
  B: "[[b3,b4,d#5,f#5,b5]@2 [b3,b4,b5]@2 [b3,b4,b5]@4 [b3,b4,d#5,f#5,a#5,b5]@4 [b3,b4,d#5,f#5,b5] ~ [a3,a4,c#5,e5,a5]@4 [a3,a4,a5]@2 [a3,a4,a5]@4 [a3,a4,c#5,e5,a5]@4 [a3,a4,d5,f#5,a5] ~ [c#5,e5,a5] ~, a#5 ~@3, ~ [d#5,f#5]@3 ~@5 [c#5,e5]@3 ~@3 [a3,a4], ~ [e5,g#5]@2 ~@2 [d5,f#5]@2 ~]/2", // B Bmaj7 B A D A D#m C#m …
  C: "~@2 [b4,e5,a#5,b5]!6", // E
  D: "[b4,e5,a#5,b5]!2 e5 ~@4 [b3,e4,b4], ~@2 [a#5,b5]@3 [e4,b4] [d4,a4,d5]@2, ~@2 b4 e5 [g4,g5]@4, ~@3 a5@5, ~@3 a4 d5 e5@3", // E E5 Bmaj7 E5 D5 G
  E: "[[b3,b4,d#5,f#5,b5]@2 [b3,b4,b5]@2 [b3,b4,b5]@4 [b3,b4,d#5,f#5,a#5,b5]@4 [b3,b4,d#5,f#5,b5] ~ [a3,a4,c#5,e5,a5]@4 [a3,a4,a5]@2 [a3,a4,a5]@4 [a3,a4,c#5,e5,a5]@4 [a3,a4,d5,f#5,a5] ~ [a4,c#5,e5,a5] [e4,e5], a#5 ~@3, ~ [d#5,f#5]@3 ~@5 [c#5,e5]@3 ~@3 a3, ~ [e5,g#5]@2 ~@2 [d5,f#5]@2 ~]/2", // B Bmaj7 B A D A E D#m …
  F: "[e5 ~ e5@2 e5@2 e5@2 [e5,b5,e6]@2 [e5,e6]@2 [e5,e6]@2 [e5,e6]@2 [e5,b5,e6] [e5,e6] ~ [e5,e6] [e5,b5,e6]!2 ~ e5 e5@2 e5@2 ~@4 [b3,b4,d#5,f#5,b5]@2 [b3,b4,b5]@2 [b3,b4,b5]@4 [b3,b4,d#5,f#5,a#5,b5]@4 [b3,b4,d#5,f#5,b5] ~ [a3,a4,c#5,e5,a5]@4 [a3,a4,a5]@2 [a3,a4,a5]@4 [a3,a4,c#5,e5,a5]@4 [a3,a4,d5,f#5,a5] ~ [a4,c#5,e5,a5] [e4,e5], g5@7 g5@5 a5@2 e5 [d4,d5] a#5 [d#5,f#5] [e5,g#5]@4 ~@3 [c#5,e5]@3 ~@4, e6@4 a5@8 a5@11 e6@22 ~@19, ~@4 e6@4 ~@2 b5@6 ~ b5@2 a#5@7 g5@18 ~@8 [d5,f#5]@8 ~@4, ~@23 b5@5 e4@16 ~@18 a3@2]/4", // E5 E E5 E E5 B Bmaj7 B …
  G: "[a#5,b5,e6]@2 [e5,e6]@2 [e5,e6] e5 e5@2 [e5,e6]@2 [e5,e6] e5 e5@2 [e5,a#5,b5,e6]@2, e5 ~ [a#5,b5]@4 e4@5 e6 e4@4, ~@2 a5@3 a5@3, ~@5 g5@6 g5@5, ~@5 e6@3 [a#5,b5]@6 ~@2", // E Bmaj7
  H: "[e5,a5,e6] [e5,g5,e6] [e4,e5] ~ [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e4,e5] ~ [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e4,e5] ~", // A5 Em E A5 Em E A5 Em …
  I: "[c4,e4,a#5] g4 ~@4 [e4,g4,c5]@5 ~@5", J: "[g4,c5,e5] ~@2 [c5,e5,g5]@3 ~@2",
  K: "[e5,g5,c6]@3 ~@3 [g5,c6,e6]@8 ~@2", // C
  L: "[g5,c6,e6]@3 ~ [g5,c6,e6]@3 ~ [c6,e6,g6]@3 ~ [g6,a6,b6,c7] [f5,g5,a5,b5,c6,d6,e6,f6] [f4,g4,a4,b4,c5,d5,e5] [e3,f3,g3,a3,b3,c4,d4,e4]", // C Cmaj7 Fmaj7 Em7
  M: "[c3,d3] ~@15", // Csus2
  N: "[e5,b5,e6] ~ [e5,b5,e6] ~ [e5,b5,e6]@2 ~@2 [e5,g5,e6]@2 [e5,e6] ~ [e5,g5,e6]@2 [e5,e6] ~, ~@8 f#5 ~@3 f#5 ~@3", // E5 Em E Em E
  O: "[e5,g#5,a5,e6] ~ [e5,g5,e6]@3 ~ [e5,e6]@4 [e5,b5,e6] ~ [e5,b5,e6] ~ [e5,b5,e6] ~", // Amaj7 Em E E5
  P: "[e5,b5,e6] ~ [e5,b5,e6] ~ [e5,b5,e6]@2 ~@2 [e5,a5,e6]@2 [e5,g5,e6]@2 [e5,e6] ~ [e5,g5,e6] ~, ~@8 g#5 ~@7", // E5 A5 Em E Em
  Q: "[e5,a5,e6]@2 [e5,g5,e6] ~ [e5,a5,e6]@2 [e5,g5,e6] ~ [e5,a#5,b5,e6] ~ [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e5,e6] ~", // A5 Em A5 Em E A5 Em E
  R: "[e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e5,e6] ~ [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e5,e6] ~ [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6]", // E A5 Em E A5 Em E A5 …
  S: "~@2 [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e5,e6] ~ [e5,a#5,b5,e6] ~ [e5,a5,e6] [e5,g5,e6] [e5,a#5,e6]!2 [e5,b5,e6]!2", // E A5 Em E A5 Em Edim E5
  T: "[e5,b5,e6] ~ [e5,b5,e6] ~ [e5,b5,e6] ~ [e5,b5,e6] ~ [e5,a5,e6] ~ [e5,a5,e6] ~ [e5,b5,e6] ~@2 [b5,g6,a6]", // E5 A5 E5 Em
  U: "~ [b5,g6] ~ [b5,e6] [b5,a6] ~ [b5,g6] ~ [b5,e6] ~ [e6,a#6,b6] ~ [e6,a#6,b6] ~ [e6,a#6,b6] ~", // Em E5 B7 Em E5 E
  V: "[e6,a#6,b6] ~ [e6,a#6,b6] ~ [e6,a6,b6] ~ [e6,b6] ~ [e6,a6] ~ [e6,g6] ~ e6 ~ [b5,e6] ~", // E Esus4 E5 A5 Em E5
  W: "[b5,e6]@2 [b5,d6] ~ [b5,e6] ~ [b5,e6] ~ [b5,d6] ~ [b5,e6] [b5,d6] b5 ~ [a5,e6,b6] ~", // E5 Bm E5 Bm E5 Bm Asus2
  X: "[[b5,g6] ~ [b5,a6] ~ [b5,g6] ~ [b5,e6] [b5,g6] [b5,e6] [b5,d6]!2 ~ d#6 e6 ~ e6@2 ~ d6@2 b5 ~ d#6 e6@2 ~ d6@2 ~@4, ~@12 b5@2 b5@3 ~@5 b5@4 e6 ~@5]/2", // Em B7 Em E5 Em E5 Bm
})).s("gm_piano").gain(0.38)

// other · electric guitar muted
const electric_guitar_muted_2 = note("<~@28 A B ~@12 C@2 D E@4 F ~@2 G ~ H I J ~ H K@2 ~@2 L M N O ~@20>".pickRestart({
  A: "~@2 e5@4 d5@2 b4 ~ b4@2 ~ g4@2 ~, ~@2 d#5 ~@9 a4@2 ~@2", B: "[a#4,b4] ~ b4@11 ~@3", C: "[~@5 d5 e5@10]/2",
  D: "~@2 a5@3 g5@2 ~ e5 g5 e5 d5@2 b4 ~@2", E: "[e5 ~ e5@22 ~@2 e5@24 b4@3 a4 g4 ~ b4 a4 g4 ~ b4 a4 g4 ~]/4",
  F: "b4@3 b4 a4 g4@2 ~ b4 a4 g4 ~ [g#4,a4]@2 ~@2", G: "~@4 d3@3 ~ e3@4 d3@2 e3@2", H: "~@5 a3@3",
  I: "g#3@2 e3@2 ~@4 d3@2 e3@3 ~@3", J: "~@2 d3@4 e3@5 ~@5",
  K: "[g#3@2 e3@2 ~@4 d3@2 e3@4 ~ e3@5 d3@3 ~ e3@3 ~ e3@3 ~]/2", L: "~@2 g4 ~ a#4 ~ g4 ~ g4@6 g4 ~",
  M: "[g#4,a4]@2 g4@2 a#4 ~ b4 ~ c5@6 g4!2", N: "c5 ~ a#4 ~ c5 ~ a#4 ~ c5@4 ~@4",
  O: "[d#5,e5]@2 d#5 e5@2 d#5 e5 ~ e5@6 ~@2, ~@8 d#5 ~@7", // Emaj7
})).s("gm_electric_guitar_muted").gain(0.27).pan(0.2)

// other · electric guitar muted · soft notes
const electric_guitar_muted_3 = note("<~@42 A ~ B C ~@2 D E@2 ~@12 F G H ~@21>".pickRestart({
  A: "~@12 d#5 ~@3", B: "~@2 g#5 ~@12 d#5", C: "~@2 d#5 ~@13", D: "~@2 a#4 ~@5 a#4 ~@3 a#4 ~@3",
  E: "[a#4 ~@2 a#4 ~@4 a#4 ~@5 e4@4 ~@14]/2", F: "~@8 a4 ~@7", G: "~@2 f#4@2 a4 ~ a#4 ~ b4 ~@7", H: "~@4 b4 ~@11",
})).s("gm_electric_guitar_muted").gain(0.13).pan(0.2)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B C D E B C D F B C D G B C H I B J B C D K B L B@3 M B C D N B@3 C D B@2 G B@17 G B J B O B K B P D K B Q B@3 R
  B J B O
>`.pickRestart({
  A: "x!2 ~ x ~ x!8 ~@3", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "x!2 ~ x", E: "~@4 x ~@5 x!4 ~@2",
  F: "~@8 x ~@5 x!2", G: "~@4 x ~@7 x!3 ~", H: "x ~@3 x ~@7 x ~@2 x", I: "x ~@5 x ~@5 x!4",
  J: "~@4 x ~@2 x!2 ~@3 x ~@3", K: "~@4 x ~@7 x ~ x!2", L: "~ x ~@2", M: "~@4 x ~@5 x!5 ~", N: "~@8 x!4 ~@4",
  O: "~@2 x!4 ~@10", P: "~@4 x ~@7 x!4", Q: "~@2 x!3 ~ x ~@9", R: "x!3 ~ x!3 ~ x!3 ~@5",
})).gain(0.42)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@3 B ~@3 C ~@7 D ~@7 E ~@3 F ~@3 G ~@29 H ~@7 I ~@3 I ~@4>".pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@3 x", D: "~@5 x ~@2", E: "~@13 x!2 ~", F: "~@8 x ~@6 x", G: "~@4 x ~ x ~@5 x!4",
  H: "~@14 x!2", I: "~@12 x!4",
})).gain(0.33)

// drums · hihat
const hihat = s("hh").struct("<A B C D E B C D ~@36 B@3 F@2 ~@14 G@3 H ~@20>".pickRestart({
  A: "x!5 ~@2 x!2 ~@2 x!2 ~ x ~", B: "x!8", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~", D: "x!5 ~ x!4 ~@2 x ~ x ~",
  E: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~ x ~", F: "x!7 ~", G: "x ~ x!3 ~ x!2", H: "x ~ x!4 ~@2",
})).gain(0.28)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  [~@6 x ~@3 x ~@4 x]
  [~@3 x ~@3 x ~@3 x ~@3 x]
  [~@15 x]!2
  [~@2 x ~@3 x ~@3 x ~@4 x]
  [~@3 x ~@3 x ~@3 x ~@3 x]
  [~@15 x]!2
  ~@79
>`).gain(0.19)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@3 B ~@19 C ~@7 D ~@29 E ~@7 F ~@7 G>".pickRestart({
  A: "~@13 x ~@2", B: "~@7 x", C: "~@12 x!2 ~@2", D: "x!2 ~@6", E: "~@10 x!4 ~@2", F: "~@10 x!2 ~@4", G: "~@10 x!3 ~@3",
})).gain(0.37)

// … 35 more lines

More by Deep Purple