Strudelify
Sowing the Seeds of Love cover art

The Seeds Of Love

Sowing the Seeds of Love

Tears for Fears

KeyC majorTempo87 bpm
0:00/0:00
// Sowing the Seeds of Love — Tears for Fears
// 87 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 12, 4/4 at bar 13, 2/4 at bar 28, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 124 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(87/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
const bass = note(`<
  ~ A B C@2 D B C@3 E F G H F G H I J@2 K I J@3 L M N O P N O Q R S T U V U V U V W X Y@2 Z ~@4 AA AB AA AB AA AB AA AB
  AA AB AA AB AC AD F G H F G H AE AF AG AH AE AF AG AI AJ AK@2 AL AM AN AO AL AM AN AO AL AM AN AO AN@2 AP AM AQ AR F G
  H F G H F G H AS AT AU N O P N O P N O AV R AW AX
>`.pickRestart({
  A: "~@4 g2!4", B: "f2!4 d#2!4", C: "d2!4 d#2!4", D: "d2!4 g2!4", E: "a2!8", F: "c2!4 b1!4", G: "a1!4 g1!4",
  H: "f1!4 g#1!2 g1!2", I: "g2!4 f2!4", J: "d#2!4 d2!4", K: "d#2@3 d#2@3 d#2@3 d#2@3 d2@3 d2@3 ~@2 d2@3 ~",
  L: "d#2!4 a2!4", M: "a2!4 c2!4", N: "b1!4 a1!4", O: "g1!4 f1!4", P: "g#1!2 g1!2 c2!4",
  Q: "g#1@3 g#1@3 g1@3 g1@3 g1@5 ~ g1@5 ~", R: "g#1@5 ~ g1@4 ~@2 g1@4 ~@2 g1@4 ~@2", S: "g#1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~",
  T: "f1@9 ~@2 f1!2 ~@2 f1@4 ~@2 f1 ~@2", U: "d#1@9 ~@2 d#1!2 ~@2 d#1@7 ~@2", V: "f1@9 ~@2 f1!2 ~@2 f1@7 ~@2",
  W: "d#1@8 ~@3 d#1!2 ~@2 d#1@6 ~@3", X: "f2@3 ~@8 f2 d#2@2 ~@10", Y: "f2@3 ~@8 f2 d#2@3 ~@8 d#2",
  Z: "f2@3 ~@8 f2 d#2@2 ~@9 d#2", AA: "f2 ~ f2 ~ f2 ~ f2 ~", AB: "d#2 ~ d#2 ~ d#2 ~ d#2 ~", AC: "d#2 ~ d#2 ~ d2 ~ d2 ~",
  AD: "d2 ~ d2 ~ d2 ~ d2 ~", AE: "a1@6 ~@5 a1 e2@3 d2@2 ~ c2@3 a1@3", AF: "d2@6 ~@8 c2 d2@3 c2@3 d2 ~@2",
  AG: "a1@6 ~@5 a1 e2@3 d2@3 c2@3 a1@3", AH: "d2@5 ~@9 c2 d2@3 c2@3 d2 ~@2", AI: "d2@5 ~@8 c2 ~ d2@3 c2@3 d2 ~@2",
  AJ: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2", AK: "[d2 ~@2 d2 ~@2 d2@18]/2", AL: "g2 ~@2 g2 ~@2 g2@5 ~ f2 ~@2 f2 ~@2 f2@4 ~@2",
  AM: "d#2 ~@2 d#2 ~@2 d#2@5 ~ d2 ~@2 d2 ~@2 d2@5 ~", AN: "d#2 ~@2 d#2 ~@2 d#2@6 d2 ~@2 d2 ~@2 d2@5 ~",
  AO: "d#2 ~@2 d#2 ~@2 d#2@6 d2 ~@2 d2 ~@2 d2@4 ~@2", AP: "d#2 ~@2 d#2 ~@2 d#2@6 d2 ~@2 d2 ~@2 d2@6",
  AQ: "d#2 ~@2 d#2 ~@2 d#2@6 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2",
  AR: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2", AS: "g1@4 ~@2 g1@4 ~@2 g#1@5 ~ g1@4 ~@2",
  AT: "g1@2 ~ g1@2 ~ g#1@2 ~ g1@2 ~", AU: "g1@5 ~ g1@6 c2@3 c2@3 c2@3 c2@3",
  AV: "g#1@3 g#1@3 g1@3 g1@3 g1@4 ~@2 g1@4 ~@2", AW: "g#1@4 ~@2 g1@4 ~@2 g1@5 ~ g1@5 ~", AX: "c2@3 ~",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · epiano2
const epiano2 = note(`<
  ~ A B C@2 D B C@3 E F G H F G H I J@2 K I J@3 L M N O P N O Q R S T U T U T U T U ~@4 T V T V W X W X W X W X W X W X
  Y Z ~@35 F G H F G H F G H ~@2 AA N O P N O P N O AB ~@2 AC
>`.pickRestart({
  A: "~@6 [d4,g4,a#4]@2 ~ [d4,g4,a#4]@2 ~", B: "[d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d#4,g4,a#4]@2 ~ [d#4,g4,a#4]@2 ~",
  C: "[f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~ [d#4,g4,a#4]@2 ~ [d#4,g4,a#4]@2 ~", // F D#
  D: "[f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~ [d4,g4,a#4]@2 ~ [d4,g4,a#4]@2 ~", // F Gm
  E: "[d4,f4,a4,c5]@4 ~@2 [d4,f4,a4,c5]@4 ~@2 [d4,f4,a4,c5]@5 ~ [d4,f4,a4,c5]@5 ~", // Dm7
  F: "[c5,e5,g5]@2 ~ [c5,e5,g5]@2 ~ [b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~", // C Em
  G: "[a4,c5,e5]@2 ~ [a4,c5,e5]@2 ~ [a4,c5,e5,g5]@2 ~ [a4,c5,e5,g5]@2 ~", // Am Am7
  H: "[f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~ [d#4,g#4,c5]@2 ~ [g4,b4,d5]@2 ~", // F G# G
  I: "[d4,g4,a#4]@2 ~ [d4,g4,a#4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~", // Gm Dm
  J: "[d#4,g4,a#4]@2 ~ [d#4,g4,a#4]@2 ~ [f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~", // D# F
  K: "[d#4,g4,a#4]@2 ~ [d#4,g4,a#4]@2 ~ [f4,a4,c5]@2 ~@2 [f4,a4,c5]@2", // D# F
  L: "[d#4,g4,a#4]@2 ~ [d#4,g4,a#4]@2 ~ [d4,f4,a4,c5]@2 ~ [d4,f4,a4,c5]@2 ~", // D# Dm7
  M: "[d4,f4,a4,c5]@5 ~ [d4,f4,a4,c5]@5 ~ [c5,e5,g5]@4 ~@2 [c5,e5,g5]@4 ~@2", // Dm7 C
  N: "[b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~ [a4,c5,e5]@2 ~ [a4,c5,e5]@2 ~", // Em Am
  O: "[a4,c5,e5,g5]@2 ~ [a4,c5,e5,g5]@2 ~ [f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~", // Am7 F
  P: "[d#4,g#4,c5]@2 ~ [g4,b4,d5]@2 ~ [c5,e5,g5]@2 ~ [c5,e5,g5]@2 ~", // G# G C
  Q: "[d#4,g#4,c5]@2 ~ [g4,b4,d5]@2 ~ [g4,b4,d5]@3 ~@3", R: "[c5,d#5]@3 ~@3 [g4,b4,d5]@4 ~@14, g#4@5 ~@19",
  S: "[g#4,c5,d#5]@2 ~ [g4,b4,d5]@2 ~@7", T: "[f4,a4,c5,e5] ~@5", U: "[d#4,g4,a#4] ~@5", V: "[g4,a#4,c5,d#5] ~@5",
  W: "[c4,f4]@2 ~ [c4,f4]@2 ~ [c4,f4]@2 ~ [c4,f4]@2 ~", X: "[a#3,d#4]@2 ~ [a#3,d#4]@2 ~ [a#3,d#4]@2 ~ [a#3,d#4]@2 ~",
  Y: "[a#3,d#4]@2 ~ [a#3,d#4]@2 ~ [a3,d4]@2 ~ [a3,d4]@2 ~", Z: "[a3,d4]@2 ~ [a3,d4]@2 ~ [a3,d4]@2 ~ [a3,d4]@2 ~",
  AA: "~@6 [c5,e5,g5]@2 ~ [c5,e5,g5]@2 ~", AB: "[d#4,g#4,c5]@2 ~ [g4,b4,d5]@2 ~@7", AC: "[c5,e5,g5]@3 ~",
})).s("gm_epiano2").gain(0.35).pan(0.7)

// chords · church organ
const church_organ = note("<~@11 A@6 ~@9 B@7 ~@32 A@6 ~@29 A@9 ~@2 C@6 D@4 ~@2 E>".pickRestart({
  A: "[c4@2 b3@2 a3@2 g3@2 [f3,a3]@2 [d#3,g#3] [g3,b3,d4], e4@2 ~, g4@4 c4@7 ~]/3", // F G#5 G
  B: "[~@2 c4@2 b3@2 a3@2 g3@2 [f3,a3]@2 [d#3,g#3] [g3,b3,d4] c4@2 b3@2 a3@2 g3@2 [f3,a3]@2 [d#3,g#3] [g3,b3,d4] ~@2, ~ e4@4 ~@2 e4@4 ~@3, ~@2 g4@4 c4@7 ~ g4@4 c4@7 ~@3]/7", // F G#5 G F G#5 G
  C: "[~@2 c4@2 b3@2 a3@2 g3@2 [f3,a3]@2 [d#3,g#3] [g3,b3,d4] c4@2 b3@2 a3@2 g3@2 [f3,a3]@2, ~ e4@4 ~@2 e4@4 ~, ~@2 g4@4 c4@7 ~ g4@4 c4@6]/6", // F G#5 G F
  D: "[[d#3,g#3] [g3,b3,d4] c4@2 b3@2 a3@2 g3@2 [f3,a3]@2 [d#3,g#3] [g3,b3,d4] ~@2, ~ e4@4 ~@3, ~@2 g4@4 c4@7 ~@3]/4", // G#5 G F G#5 G
  E: "[c5,e5,g5]@3 ~", // C
})).s("gm_church_organ").gain(0.25)

// chords · drawbar organ
const drawbar_organ = note("<~@71 A B C D E D F D ~@3 G@8 H I@7 J@2 ~@24>".pickRestart({
  A: "~@5 c5 b4 a4, [a3,e4], a4@7 ~", B: "e5@3 d5@5, d4, f#4@11 ~",
  C: "~@3 [a4,e5]@4 ~ [a4,d5]@3 ~ [a4,e5]@4 [a4,d5]@4 ~ [a4,e5]@2 ~, a3", D: "[d4,a4,d5,f#5]", E: "[a3,a4,c5,e5]",
  F: "[a4,c5,e5]@14 ~ [a4,c5,e5]@4 [a4,c5,e5]@3 ~@2, a3", G: "~@3 [d4,g4]", H: "g4 f4, d4", I: "[d#4,g4] [d4,f4]",
  J: "[[d#4,g4] [d4,f4]@3]/2", // D# Dm
})).s("gm_drawbar_organ").gain(0.2)

// chords · rock organ
const rock_organ = note(`<
  ~@17 A B C@2 A D@3 E@2 ~@16 F G@2 F H I H J K L M L M L M L M L M L ~@19 N@17 ~@25
>`.pickRestart({
  A: "[d4,g4,a#4] [f4,a4]", B: "[d#4,g4,a#4] [d4,f4,a4]", C: "~ [f4,a4,c5], [d#4,g4] ~, ~ a#4@6 ~@5",
  D: "[d#4,g4,a#4] [f4,a4,c5]", E: "[[d#4,g4,a#4] [f4,a4,c5]@2 ~]/2", F: "~ f5 c5 f5 d#5 c5 [a#4,d#5]@2",
  G: "~@3 f5@3 c5 ~@2 f5@3 d#5@3 c5@3 [a#4,d#5]@6", H: "[f4,a4,c5,e5]", I: "[d#4,g4,a#4,c5,d#5]",
  J: "[d#4,g4,a#4,d#5], c5@11 ~", K: "[f4,a4,c5]", L: "[d#4,g4]", M: "[f4,a4]", N: "~ [d6,g6] ~@2",
})).s("gm_rock_organ").gain(0.3).pan(0.3)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@17 A B@2 C A B@3 D E F G ~ F G ~@33 H@2 ~ H@2 ~@4 I J K L M N O P Q ~@17 R@2 ~ R@2 ~ R@2 ~@4 S T ~ S T ~ S T ~@4
>`.pickRestart({
  A: "~ [d4,g4,a#4] ~ [d4,f4,a4]", B: "~ [d#4,g4,a#4] ~ [f4,a4,c5]", C: "~@3 [d#4,g4,a#4]@3 ~@4 [f4,a4,c5]@2",
  D: "~ [d#4,g4,a#4] [d4,f4,a4,c5]!2", E: "[d4,f4,a4,c5]!2 ~@2",
  F: "[a3,c4] ~ [b3,d4] [c4,e4] ~ [d4,f4] [e4,g4] ~ [f4,a4] [e4,g4]@9 [a3,c4] ~ [b3,d4] [c4,e4] ~ [d4,f4]", // Am Bm C Dm Em F Em Am …
  G: "[e4,g4] ~ [f4,a4] [e4,g4]@9 ~@12", // Em F Em
  H: "[~@12 [a3,c4] ~ [b3,d4] [c4,e4] ~ [d4,f4] [e4,g4] ~ [f4,a4] [e4,g4]@9 [a3,c4] ~ [b3,d4] [c4,e4] ~ [d4,f4] [e4,g4] ~ [f4,a4] [e4,g4]@9]/2", // Am Bm C Dm Em F Em Am …
  I: "~@14 c4 d4@3 c5@6", J: "a3@6 ~@5 a3 e4@3 d4@2 ~ c4@3 a3@3", K: "d4@6 ~@8 c4 d4@3 c4@6",
  L: "a3@6 ~@5 a3 e4@3 d4@3 c4@3 a3@3", M: "d4@5 ~@9 c4 d4@3 c5@6",
  N: "~@3 [d4,f#4,a4] ~@5 [d4,f#4,a4] ~@5 [d4,f#4,g#4] ~@5 [d4,f#4,g#4] ~@2", // D G#m7b5
  O: "~@3 [d4,g4] ~@5 [d4,g4] ~@2 [d4,f#4]@6 ~@6", P: "f#4@3 g4@3 a4@3 g4@3 f#4@3 d4@3 b3 [b3,d4] ~ a3@3", Q: "g3 ~",
  R: "[~@12 [a3,c4] [b3,d4] ~ [c4,e4] [d4,f4] ~ [e4,g4] [f4,a4] ~ [e4,g4]@9 [a3,c4] [b3,d4] ~ [c4,e4] [d4,f4] ~ [e4,g4] [f4,a4] ~ [e4,g4]@9]/2", // Am Bm C Dm Em F Em Am …
  S: "[a3,c4] [b3,d4] ~ [c4,e4] [d4,f4] ~ [e4,g4] [f4,a4] ~ [e4,g4]@9 [a3,c4] [b3,d4] ~ [c4,e4] [d4,f4] ~", // Am Bm C Dm Em F Em Am …
  T: "[e4,g4] [f4,a4] ~ [e4,g4]@9 ~@12", // Em F Em
})).s("gm_distortion_guitar").gain(0.35)

// other · french horn
const french_horn = note("<~@32 A B@2 ~@8 C@2 D C ~@8 E F G ~@7 H I J ~@41 K@3 ~@8 L@3 M>".pickRestart({
  A: "~@12 [g2,g3] ~ [g2,g3] ~@2 [g2,g3] [g2,g3]@5 ~", B: "~@12 [g2,g3] ~ [g2,g3] ~@2 [g2,g3] [g2,g3]@4 ~@2",
  C: "~@3 [a3,c4] ~ a3@2 ~@17, ~@5 c4 ~@18", D: "~@3 [a3,c4] ~ [a3,c4]@2 ~@17",
  E: "f4 ~ g4 ~ a4 ~ a#4 ~ a4 ~ a#4 ~ c5 ~ a#4 ~ a4 ~ a#4 ~ a4 ~ g4 ~",
  F: "a4 ~ g4 ~ f4 ~ g4 ~ f4 ~ d#4 ~ f4 ~ d#4 ~ d4 ~ d#4 ~ d4 ~ c4 ~", G: "f3 ~@3",
  H: "~@8 g4 c5 ~ d5 e5@3 c5 ~@2 c5@6", I: "~@8 g4 c5 ~ d5 e5 ~ d5 c5 ~ d5 c5@5 ~",
  J: "~@2 c5 d5 ~ e5 f5 ~ e5 d5 ~ e5 ~@12", K: "[g2,g3]!2 ~@2 [g2,g3] ~ [g2,g3]@4 ~@14",
  L: "~@12 [g2,g3]!2 ~@2 [g2,g3] ~ [g2,g3]@4 ~@2", M: "[g2,c3]@3 ~",
})).s("gm_french_horn").gain(0.45).pan(0.3)

// other · trumpet · Fsus2
const trumpet = note("<~@67 [~@11 e5 [f5,g5] ~ c6!2 ~ d6 e6 ~ c6 g5 ~ f5] [e5@5 ~@19] ~@55>")
  .s("gm_trumpet").gain(0.35).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@35 A B A C A D E F ~@6 G H ~@2 I ~ J K L ~@3 M N O P ~@14 Q@3 R S T@2 R S T@2 R S T@6 U@2 ~@23 V
>`.pickRestart({
  A: "[f5,c6]", B: "d6@3 d#6@2 ~ d6@3 c6@6 a#5@9, g5", C: "d6@3 d#6@3 d6@3 c6@6 a#5@8 ~, g5",
  D: "a#6@3 a6@3 f6@3 a#6@6 a6@6 g6@2 f6, [g5,d6]", E: "g6 a6@3, [f5,c6]", F: "a#6 c7@3, [g5,d6]", G: "[c5,f5]@23 ~",
  H: "[e5,g5] ~ [d5,f5] ~ [e5,g5]@2 [d5,f5] ~ [e5,g5] ~ [d5,f5]@2 [c5,f5]@11 ~", I: "g5 ~ c6 ~ g5@2 [c5,f5]@18",
  J: "g5 ~ c6@2 g5@2 [c5,f5]@18", K: "~@12 [e5,g5] ~ [d5,f5] ~ [e5,g5]@2 [d5,f5] ~ [e5,g5] ~ [d5,f5]@2", L: "[c5,f5]",
  M: "g5 ~ c6@2 g5@2 [c5,f5]@17 ~", N: "[c5,f5]!24", O: "~@3 c5!6 c#5!6 d5!6 d#5!3", P: "d#5!3 e5!6 f5!6 f#5!6 g5!3",
  Q: "[a4@11 ~ g#4@11 ~ g4@11 ~ f#4@36, d4]/3", R: "[g3,d4]@11 ~ [f3,c4]@11 ~", S: "[d#3,a#3]@11 ~ [d3,a3]@11 ~",
  T: "[d#3,g3]@11 ~ [d3,a3]@11 ~", U: "[[d#3,g3]@11 ~ [d3,a3]@36]/2", V: "[g3,c4,d4,e4]@3 ~",
})).s("gm_string_ensemble_1").gain(0.27).pan(0.3)

// bass · cello
const bass_2 = note("<~@51 A B C D E F A F A F A F ~@61>".pickRestart({
  A: "f2@2 f2 ~@3 f2@2", B: "d#2@3 ~@3 d#2@4 ~@14", C: "f2@3 f2@2 ~@4 f2@3",
  D: "d#2@3 ~@3 d#2@3 ~@3 d#3 ~ c#3 ~ c3 ~ a#2 ~ g#2 ~ g2 ~", E: "f2@3 f2 ~@5 f2@3", F: "d#2 ~ d#2 ~@5",
})).s("gm_cello").gain(0.45).pan(0.7)

// other · oboe
const oboe = note("<~@35 A B C D E F G H ~@16 I J ~@63>".pickRestart({
  A: "c5@21 a#4 ~ a4", B: "g4@21 a4 ~ a#4", C: "a4@21 g4 ~ f4", D: "g4@11 ~", E: "c4@2 f4@3 c4 f4 a4",
  F: "a#4@3 a4@3 f4@3 a#4@6 a4@6 g4 ~ f4", G: "g4 a4@3", H: "a#4 c5@3", I: "c4@9 a3 ~ g3 f3@9 g3 ~ a3",
  J: "a#3@3 a3 ~ f3 d#3@16 ~@2",
})).s("gm_oboe").gain(0.35)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C@18 D C@5 E C@20 ~@3 F C@4 G C@3 H I C J K L C@15 M N C@7 O C@9 P C@7 Q C R S T C@7 U Q U V W
>`.pickRestart({
  A: "~@11 x!2 ~@7 x!2 ~@2", B: "~@5 x!2 ~@11 x ~@5", C: "~ x ~ x", D: "~@3 x ~@6 x ~", E: "~@5 x!2 ~ x!2 ~@8 x ~@5",
  F: "~@14 x!2 ~@4 x!2 ~@2", G: "x ~@5 x ~@7 x!2 ~@8", H: "x ~@7 x ~@5 x!2 ~@4 x!2 ~@2", I: "~@6 x ~@8 x ~ x ~@2 x ~@3",
  J: "~@2 x ~@2 x!2 ~", K: "x ~@4 x!2 ~", L: "x ~@5 x ~@2 x ~ x ~@12", M: "~@3 x ~@19 x", N: "x ~@7 x!2 ~@7 x!2 ~@5",
  O: "~@6 x ~@10 x!2 ~@5", P: "~@9 x!2 ~ x!2 ~ x ~@2 x!2 ~ x ~@2", Q: "~ x!3", R: "x!4", S: "~@2 x ~@2 x ~@2",
  T: "x ~@5 x ~ x!2 ~@8 x ~@5", U: "x!2 ~ x", V: "~@3 x ~@8 x ~@5 x ~ x!2 ~@2", W: "x",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@51 A@9 B ~@29 A@9 ~ A@5 B A@3 ~@2 C A@5 C A@2 B ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@5 A ~@49 B ~@3 C D ~@3 E ~@5 F ~@38 G ~@10 H ~ I ~>".pickRestart({
  A: "~@3 x ~@4", B: "~ x ~@2 x ~ x ~", C: "~@3 x ~@7 x!2 ~@5 x ~@5", D: "~@2 x ~@4 x", E: "~@14 x!2 ~@2 x ~@2 x ~@2",
  F: "~@11 x!2 ~@11", G: "~ x ~@6", H: "~@5 x ~@2", I: "~@22 x!2",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B ~@8 C ~@31 C ~@7 D ~@4 E C ~@5 F G H ~@2 I ~@2 J ~@9 K L ~@7 M ~@15 I ~ N I O P ~@5 F ~@2 Q ~ R S ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "x ~@7 x!2 ~@14", C: "~@7 x", D: "~@11 x!2 ~@5 x ~@5", E: "~ x ~", F: "~@20 x!2 ~@2",
  G: "~@3 x ~@4 x!2 ~@2 x ~@8 x ~@2", H: "~ x ~@6", I: "~@8 x!2 ~@14", J: "~@9 x ~ x ~@12", K: "~@3 x ~@4",
  L: "~@3 x ~@8 x ~@7 x!2 ~@2", M: "~@14 x!2 ~@4 x!2 ~@2", N: "~@5 x ~ x", O: "~@15 x ~@4 x!2 ~@2", P: "~@3 x ~ x",
  Q: "~ x ~ x ~@4", R: "~@3 x ~@4 x!2 ~@14", S: "x ~@7 x ~@6 x ~ x ~@2 x!2 ~@2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A ~@4 B ~@14 C D ~@2 E ~@3 F@2 ~@19 G ~@6 H I ~@34 E J K L@2 M L@2 M ~@5 N L@2 N L@2 N L@2 ~@4
>`.pickRestart({
// … 96 more lines

More by Tears for Fears