Strudelify
Picture This cover art

Parallel Lines

Picture This

Blondie

KeyA minorTempo128 bpm
0:00/0:00
// Picture This — Blondie
// 128 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 9 "Guitar 3" electric guitar jazz (copy of ch 8 "Viola" viola)
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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(`<
  A B A B A B@2 C D E F G B A B A B@2 C D H I G B A B A B A J G B A B A B A K L M L M L M N O L M L M L M P Q P Q P Q@3
  R@2 S@2 T G B A B A B@2 C L M L M L M N O L M L M L M N U V@2
>`.pickRestart({
  A: "c3@5 ~ c3@2 g2@2 c3@2 e2@3 ~", B: "f2@5 ~ f2@2 a2@2 b2@2 c3@3 ~", C: "g#2@5 ~ g#2@2 g#2@3 ~ d#2@3 ~",
  D: "g#2@5 ~ g#2@2 g#2@2 g2@2 f2@2 d#2@2", E: "c2@5 ~ c2@2 c2@3 ~ g2@3 ~", F: "[c2,c3] ~@2 c2 e2 f2 f#2 g2",
  G: "c2@5 ~ c2 ~ g1 ~ c2@2 e1@3 ~", H: "c2@5 ~ g2 ~ c3@3 ~@3 g2@2", I: "c2 ~@2 c2 e2 f2 f#2 g2",
  J: "g2@3 ~ d3@2 d3@2 e3@2 e3@2 d3@3 ~", K: "c3@2 c3@2 a#2@2 a#2@2 a2@2 a2@2 g2@3 ~", L: "f2@5 ~ f2@2 d2@3 ~ c2@3 ~",
  M: "g2@5 ~ g2@2 e2@3 ~ d2@3 ~", N: "a2!8", O: "a2!7 c3", P: "a2@5 ~ a2@2 e2@2 a2@2 c#2@3 ~",
  Q: "d2@5 ~ d2@2 d2@2 f#2@2 a2@3 ~", R: "f2@5 ~ f2@2 f2@3 ~ c2@3 ~", S: "g2@5 ~ g2@2 g2@3 ~ d2@3 ~", T: "a2@13 ~@3",
  U: "a2!7 e2", V: "[a1@31 ~]/2",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · piano
const piano = note(`<
  A B C B D E F G H D I J K A B J K F L M D ~ D N D O C F P Q P R A O S T P U ~@27 A K C N C K E V ~@18
>`.pickRestart({
  A: "[g3,c4,e4]@9 ~ [c4,e4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~, c3@15 ~, g4@5 ~@3", B: "[a3,c4,f4]@10 a3@2 c4 ~@3, a4@7 ~",
  C: "~@4 e4@3 ~ [a3,c4,f4] ~ [g3,c4,e4]@5 ~, ~@2 g3@5 ~@9", D: "[g3,c4,e4]@10 g3@2 c4 ~@3, g4@7 ~",
  E: "~@3 f4@3 ~@2, ~ a3@5 ~@2, ~ c4@2 ~", F: "~@6 f4 ~, f2@7 ~, c4@9 ~ c4@4 ~@2, ~@2 f4@9 ~@5, ~@2 a4 a3@4 ~",
  G: "~@4 g#4@3 ~ [g#3,c#4,f4] ~ [g#3,c4,d#4]@5 ~, ~@2 c4@5 ~@9", // C# G#
  H: "~@4 [g#3,c4,d#4]@3 ~ [g#3,c#4,f4] ~ [g#3,c4,d#4] ~@5", I: "[c3,g3,c4,g4] ~@3",
  J: "~@4 [g3,c4,e4]@3 ~ [a3,c4,f4] ~ [g3,c4,e4] ~@5", K: "~@4 [a3,c4,f4]@3 ~ [a#3,d4,f4] ~ [a3,c4,f4] ~@5",
  L: "~@2 d#4@8 ~@4 c5 ~, ~ g#2@7, ~@2 [g#4,c5]@9 d#4@5, ~@5 c4@3, ~@13 g#4@3", // G#
  M: "[c4,d#4,g#4]@10 c4@2 d#4 ~@3, c5@7 ~", N: "~@4 f4@3 ~ [a#3,d4,f4] ~ [a3,c4,f4]@5 ~, ~@2 a3@5 ~@9",
  O: "~@2 c4@8 ~@4 a4 ~, ~ f2@7, ~@2 [f4,a4]@9 c4@5, ~@5 a3@3, ~@13 f4@3", // F
  P: "~@6 e4 ~, c3@7 ~, c4@9 ~ c4@4 ~@2, ~@2 e4@9 ~@5, ~@2 g4 g3@4 ~",
  Q: "~@14 g4 ~, ~ g2@7, ~@3 b3@5 b4@8, ~@4 d4@7 ~ d4@4, ~@3 g4@2 b3@3",
  R: "~@14 f4 ~, ~ f2@7, ~@3 a3@5 a4@8, ~@4 c4@7 ~ c4@4, ~@3 f4@2 a3@3",
  S: "~@2 c4@8 ~@4 g4 ~, ~ c3@7, ~@2 [e4,g4]@9 c4@5, ~@5 g3@3, ~@13 e4@3", // Em
  T: "[a3,c4,f4]@9 ~ [c4,f4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~, f2@15 ~, a4@5 ~@3", U: "~@3 e4@3 ~@2, ~ g3@5 ~@2, ~ c4@2 ~",
  V: "[c4,d#4,g#4]@9 ~ [d#4,g#4] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~, g#2@15 ~, c5@5 ~@3", // G# G#5 G#
})).s("gm_piano").gain(0.48).pan(0)

// chords · rock organ · "Piano"
const rock_organ = note(`<
  ~@38 A B A C D E F G A B D B A B H I J K J L I L M N O P F ~@8 A B Q E Q R S T D C Q R Q E F U ~@2
>`.pickRestart({
  A: "[f5,a5,c6] ~@2 [c5,f5,a5,c6]@4 ~", B: "[d5,g5]@10 ~@4 g5 d5, b4, b5@9 ~ b5@2 d5@2 ~@2, ~@11 g5@2 b5@2 ~",
  C: "[b4,d5,g5,b5]@5 g2 [b4,d5,g5,b5] ~", D: "~@3 a5@4 ~, ~ a4@6 ~, ~@2 c5@5 ~", E: "~@3 b5@4 ~, ~ b4@6 ~, ~@2 d5@5 ~",
  F: "[a4,c5]@10 ~@4 c5 a4, e4, e5@9 ~ e5@2 a4@2 ~@2, ~@11 c5@2 e5@2 ~", G: "[e4,a4,c5,e5]@15 ~", H: "[e4,a4,c#5,e5]",
  I: "[d5,f#5]@10 ~@4 f#5 d5, a4, a5@9 ~ a5@2 d5@2 ~@2, ~@11 f#5@2 a5@2 ~", // D
  J: "e4 ~@5 a5@7 ~@3, c#5@13 ~@3, ~ e4@6 ~, ~@4 e5@9 ~@3",
  K: "[a4,d5,f#5]@9 ~ [a4,f#5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~, a5@5 ~@3", L: "[a4,d5,f#5,a5]",
  M: "[a4,c5,f5]@9 ~ [a4,f5] ~ [a4,c5,f5,a5] ~ [a4,c5,f5,a5] ~, a5@5 ~@3", // F Dm F
  N: "[c5,f5]@10 ~@4 f5 c5, a4, a5@9 ~ a5@2 c5@2 ~@2, ~@11 f5@2 a5@2 ~", // F5
  O: "b4 ~@5 d6@7 ~@3, g5@13 ~@3, ~ b4@6 ~, ~@4 b5@9 ~@3", P: "[b4,d5,g5,b5]", Q: "[a4,c5,f5,a5]@15 ~",
  R: "[b4,d5,g5,b5]@15 ~", S: "~@3 e5@4 ~, ~ e4@6 ~, ~@2 a4@5 ~", T: "[e4,a4,c5,e5]@5 a2 [e4,a4,c5,e5] ~",
  U: "[c5,e5,a5] ~@2 [a4,c5,e5,a5]@4 ~", // Am
})).s("gm_rock_organ").gain(0.32).pan(0)

// chords · rock organ · "Piano" · soft notes
const rock_organ_soft = note(`<
  ~@38 A ~ A ~ B C ~@2 A ~ B ~ A ~@4 D ~@4 E ~@12 A ~@2 C ~@2 F ~ B ~@4 C ~ G H@2
>`.pickRestart({
  A: "c5 ~@7", B: "~@5 f5@9 ~@2", C: "~@5 g5@9 ~@2", D: "~@10 d5 ~@5", E: "~@10 c5 ~@5", F: "~@5 c5@9 ~@2", G: "a4 ~@7",
  H: "[c5@31 ~]/2",
})).s("gm_rock_organ").gain(0.24).pan(0)

// chords · electric guitar muted · "Guitar 1"
const electric_guitar_muted = note(`<
  A B A C D E@2 F G D ~ H C I J I K C F L H ~ A C M B N B A O P Q M B I E N P R S T U R S V@2 W X R S W X Y Z AA Z AB AC
  AD AC AE AF AG AH Y A J D C N B@2 AI W S R AJ W AJ V AK R S R S T U V AL AM@2
>`.pickRestart({
  A: "~@2 [g3,c4,e4,g4] ~@3 [g3,c4,e4,g4] ~@3 [g3,c4,e4,g4] ~@3 [g3,c4,e4,g4] ~", // C
  B: "~@2 [a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~@3 [a3,f4] ~@3 a3 ~", // F Dm
  C: "~@2 [a3,c4,f4,a4] ~@3 [a3,c4,f4] ~@3 [a3,c4,a4] ~ f2 ~ [a3,c4,f4] ~", // F Am F
  D: "~@2 c3 g3 [c4,e4,g4]@2 c3@2 [c4,e4,g4] ~ c3 ~ [c4,e4,g4] ~@3", // C
  E: "~@2 [a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~", // F
  F: "~@2 g#2 ~ [c4,g#4] ~ g#2 ~ [c4,g#4] ~ g#2 ~ c4 ~ g#4 ~", // Fm
  G: "~@2 [c4,d#4,g#4,c5] ~@3 [c4,d#4,g#4] ~@3 [c4,d#4,c5] ~ g#2 ~ [c4,d#4,g#4] ~", // G# Cm G#
  H: "~@2 [e3,c4] ~@3 [e3,c4] ~@3 [e3,c4] ~@3 [e3,c4] ~", // C
  I: "~@2 [g3,c4,e4,g4] ~@3 [g3,c4,e4] ~@3 [g3,c4,g4] ~ c3 ~ [g3,c4,e4] ~", // C C5 C
  J: "~@2 f2 ~ [a3,f4] ~ f2 ~ [a3,f4] ~ f2 ~ a3 ~ f4 ~", K: "~@2 [f3,c4]@2 ~@2 [f3,c4]@2 ~@4 [f3,c4] ~@3",
  L: "~@2 [c4,d#4,g#4,c5] ~@3 [c4,d#4,g#4,c5] ~@3 [c4,g#4] ~@3 c4 ~", // G# Fm
  M: "~@2 c3 ~ [g3,e4] ~ c3 ~ [g3,e4] ~ c3 ~ g3 ~ e4 ~", N: "~@2 [g3,c4,e4,g4] ~@3 [g3,c4,e4,g4] ~@3 [g3,e4] ~@3 g3 ~",
  O: "~@2 g2 ~ [b3,g4] ~ g2 ~ [b3,g4] ~ g2 ~ b3 ~ g4 ~", P: "~@2 [e3,c4]@2 ~@2 [e3,c4]@2 ~@4 [e3,c4] ~@3",
  Q: "~@2 [f3,c4] ~@3 [f3,c4] ~@3 [f3,c4] ~@3 [f3,c4] ~", R: "~@2 [f3,c4]@2 ~@4 [f3,c4]@7 ~, f2@5 ~ f2@9 ~",
  S: "~@2 d3@2 ~@4 d3@7 ~, g2@4 ~@2 g2@9 ~", T: "~@2 [f3,b3,c4] ~@3 f2@2 [f3,c4]@6 ~@2",
  U: "~@2 [g2,c#3,d3] ~@3 g2@2 d3@6 ~@2", V: "a2@2 e3 ~@7 e3@2 ~@2 e3@2, ~@6 a2@5 ~ a2@4, ~@4 a3@3 ~",
  W: "f2 ~ [f3,c4] ~@3 f2@2 ~@2 f2@2 c4 ~ c4 ~, ~@2 [f3,c4] f3", // F5
  X: "g2@2 d3 ~@7 d3@2 ~@2 d3@2, ~@6 g2@5 ~ g2@4, ~@4 g3@3 ~",
  Y: "a2@2 [e3,a3] ~ [a2,e3,a3]@2 a2 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  Z: "~@2 [d3,a3] ~ [d3,a3]@2 d2@2 ~@5 a3!2 ~, d2@5 ~@3 [d3,a3]@4 d3@3 ~, ~@5 d2@2 ~", // D5
  AA: "~@2 a3 ~ e3@2 ~@2 a3 ~@2 a3 ~@2 a3 e3, a2@9 e3@2 ~ e3@2 ~@2, ~@10 a2@2 ~ a2@2 ~",
  AB: "~@4 e3@2 a2@3 ~ a2 ~ a2 ~ e3@2, a2@6 [e3,a3]@7 ~@3", // A5
  AC: "d2@2 [d3,a3,d4] ~@3 d2@2 [d3,a3,d4]@2 ~@2 d3 ~ [d3,a3,d4]@2, ~@5 d2@2 ~", // D5
  AD: "~@2 [d3,a3,d4] ~ [d3,a3,d4]@2 ~@2 [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~, d2@5 ~ d2@10", // D5
  AE: "g3 ~@6 c#4 ~@4 f3@2 [c4,f4]@2, f3@4 f2@5 ~ f2@4 ~@2, ~@2 c4@4 f3@5 ~@5", // F5
  AF: "f2@2 [f3,c4,f4] ~@3 f2@2 [f3,c4,f4]@2 ~@2 f3 ~ [f3,c4,f4]@2, ~@5 f2@2 ~", // F5
  AG: "a2 ~ d3@4 ~ d#3 ~@2 g2 ~ g2@2 [d3,g3]@2, g2@4 ~@2 g2@3 ~@7", // G5
  AH: "g2@2 d3 ~ d3@2 g2 ~ g2 ~ g2 ~@2 d3!2 ~, ~@4 g2 ~@3 d3@4 g2@2 ~@2",
  AI: "~@2 [g#3,d#4] ~@3 [g#3,d#4] ~@3 [g#3,d#4] ~@3 [g#3,d#4] ~", // G#5
  AJ: "g2 ~ [g2,d3] ~@3 g2@2 ~@2 g2 ~ [g2,d3] ~ d3 ~, ~@2 d3 ~", AK: "~@2 [a2,d#3,e3] ~@3 a2@2 e3@6 ~@2",
  AL: "~@2 e3@2 ~@4 e3@7 ~, a2@4 ~@2 a2@9 ~", AM: "[[a2,e3,a3]@31 ~]/2",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.3)

// chords · rock organ · "Organ"
const rock_organ_2 = note(`<
  A B C D E B F G@2 H I J F A B J K@2 L@2 E I J B H B H D C M C F H D E K E@2 ~@27 J K J B A D@2 N ~@18
>`.pickRestart({
  A: "[g4,c5,e5,g5]@10 c3@2 [g4,c5] ~@3, ~@6 e5 ~", B: "[a4,c5,f5,a5]@10 f2@2 [a4,c5] ~@3, ~@6 f5 ~",
  C: "[c5,e5]@10 ~@4 e5 ~, g5@15 ~, ~@5 g4@2 ~, ~@3 c5", D: "[a4,f5]@10 a4 ~ f5 ~ [a4,f5] ~", E: "[g4,c5,e5,g5]@13 ~@3",
  F: "[c5,f5]@10 ~@4 f5 ~, a5@15 ~, ~@5 a4@2 ~, ~@3 c5", G: "[c5,d#5,g#5,c6]@10 g#2@2 [c5,d#5] ~@3, ~@6 g#5 ~",
  H: "~@2 [g4,c5]@8 ~@2 c5@3 ~, ~@2 e5@13 ~, ~@10 g4@5 ~", I: "[g4,c5,e5,g5] ~@3", J: "[g4,e5]@10 g4 ~ e5 ~ [g4,e5] ~",
  K: "~@2 [a4,c5]@8 ~@2 c5@3 ~, ~@2 f5@13 ~, ~@10 a4@5 ~", L: "[d#5,g#5]@10 ~@4 g#5 ~, c6@15 ~, ~@5 c5@2 ~, ~@3 d#5",
  M: "[b4,g5]@10 b4 ~ g5 ~ [b4,g5] ~", N: "[c5,g#5]@10 c5 ~ g#5 ~ [c5,g#5] ~",
})).s("gm_rock_organ").gain(0.32).pan(0.8)

// chords · rock organ · "Organ" · soft notes
const rock_organ_soft_2 = note("<~@3 A ~@7 B ~@3 B ~@6 B ~@4 A ~ C ~@3 A ~@31 B ~ B ~@2 A@2 D ~@18>".pickRestart({
  A: "~@10 f5 ~ a4 ~@3", B: "~@10 e5 ~ g4 ~@3", C: "~@10 g5 ~ b4 ~@3", D: "~@10 g#5 ~ c5 ~@3",
})).s("gm_rock_organ").gain(0.16).pan(0.8)

// chords · overdriven guitar · "Guitar 2"
const overdriven_guitar = note(`<
  A B A B A B C D E F G A B A B A B C D E F G A B A B A B ~@2 A B A B A B ~@22 H I J K L M N A B A B A B ~@20
>`.pickRestart({
  A: "~@2 c4@4 c4 ~ e4@2 d4@2 c4@2 a3@2, c3 ~@3, ~ [e3,g3]@4 ~@11", // Em
  B: "~ f4@2 f4 g4 f4 d4 a3, f3 ~@3, ~ [a3,c4]@4 ~@11", // Am
  C: "~@2 f4@4 f4@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [a3,c4,g4]@3 ~, f3 ~@3, ~ [a3,c4]@4 ~@11", // F Am7 Am
  D: "[c4,d#4,g#4]@3 ~@3 g#3@2 g#3@3 ~ [d#2,c4,d#4,g#4]@3 ~, g#3@3 ~@5, ~@4 [c4,d#4,g#4]@7 ~@5", // G#
  E: "[g#3,c4,d#4,g#4]@5 ~ [g#3,d#4]@2 [g#3,g#4]@2 [g3,g4]@2 [f3,f4]@2 [d#3,d#4]@2", F: "~@2 [e4,g4]@5 ~, c4@15 ~",
  G: "[c4,g4,c5] ~@2 [c3,c4] [e3,e4] [f3,f4] [f#3,f#4] [g3,g4]", H: "~@4 a4 e4 d4 e4",
  I: "a4@3 ~ e4@3 ~ d4@3 ~ d4@2 e4@2", J: "~@4 a4@2 e4@2 d4@2 e4@2 a4@3 ~", K: "~@4 a4@2 e4@2 d4@2 e4@2 [d4,a4]@3 ~",
  L: "~@4 b4@2 g4@2 d4@2 g4@2 b4@3 ~", M: "~@4 b4@2 g4@2 d4@2 g4@2 d4@3 ~", N: "[a2,a3,a4]@13 ~@3",
})).s("gm_overdriven_guitar").gain(0.29).pan(1)

// chords · viola
const viola = note("<~@52 A B@4 C@2 D E@2 F@2 G ~@26>".pickRestart({
  A: "~@2 [a4,a5] e4 [c#4,a4,c#5] e4 [c#4,a4,c#5] e4", // A F#m
  B: "[[c#4,a4,c#5]@2 e4@2 [c#4,a4,c#5]@2 e4@2 ~ d4 e4@2 c#4 d4 e4@6 [a4,a5]@2 e4@2 [c#4,a4,c#5]@2 e4@2 [c#4,a4,c#5]@2 e4@2, ~@4 c#4 ~@11]/2", // F#m A F#m
  C: "[[c#4,a4,c#5]@2 e4@2 [c#4,a4,c#5]@2 e4@2 ~ d4 e4@2 c#4 d4 ~@3 [d4,f#4]@11 [a3,d4,f#4]@2 ~@2, ~@4 c#4 ~@2 e4@3 ~@6, ~@4 a3@3 ~]/2", // F#m D
  D: "~ [d4,f#4]@10 ~ [a3,d4,f#4]@3 ~, a3@5 ~@3", E: "[a3,c4,f4]@3 ~@2 [c4,f4]@6 ~ [a3,c4,f4]@3 ~, ~@2 a3@3 ~@3",
  F: "~ [d4,g4]@10 ~ [b3,d4,g4]@3 ~, b3@5 ~@3", G: "[c4,e4,a4]@13 ~@3",
})).s("gm_viola").gain(0.44).pan(0.1)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@45 [~@3 x] ~@42 [~@12 x!4] ~@2>").gain(0.46)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@45 [~@3 x ~@2 x ~] ~@42 [~@8 x!2 ~@6] ~@2>").gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~@5 B ~@8 A ~ B ~@2 A ~@6 C D ~@6 C E ~@2 F@2 G@2 ~@5 G F E ~ F G ~ G F@2 G ~@2 F ~@9 H ~@2 F ~ G ~@2 G ~@2 F ~ G
  ~@5
>`.pickRestart({
  A: "~@7 x", B: "~@9 x ~ x ~@4", C: "~@5 x ~@2", D: "~@5 x!2 ~", E: "~@2 x ~@3 x!2", F: "~@3 x ~@4", G: "~@15 x",
  H: "~ x!3",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@45 x ~@42 [~@4 x!2 ~@10] ~@2>").gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  A ~@6 B ~@3 A ~@6 B ~@3 A ~@7 A ~@7 A ~@7 A ~@5 A ~@12 A ~@7 A ~@7 A ~@7 A ~
>`.pickRestart({
  A: "x", B: "~@7 x",
// … 18 more lines

More by Blondie