Strudelify

World

New Order

KeyD minorTempo127 bpm
0:00/0:00
// World — New Order
// 127 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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
const bass = note(`<
  A B C D@2 B C D@2 B C D@2 B C D@2 B C D@2 B C D@2 B C D E F E F E F E F D B G H D B G H I B G F I B G F D B C D@2 B C
  D@2 B G H D B G H I B G F I B G F J ~@3 A B G F D B G F I B G F D B G F K L@7 M ~ A B G H D B G H I B G H D B G H I B
  G H D B G H I B G F D B G F I B G F D B G F I B G F N
>`.pickRestart({
  A: "~@6 d1 ~", B: "~@2 d1@2 ~@2 d1@2 ~ d1@2 ~ f1@2 ~@2", C: "~@2 f1@2 ~@2 f1@2 ~ f1@2 ~ d1@2 ~@2",
  D: "~@2 d1@2 ~@2 d1@2 ~ d1@2 ~ d1@2 ~@2", E: "~@2 d1@2 ~@2 d1@2 ~ d1@2 ~ bb1@2 ~@2",
  F: "~@2 bb1@2 ~@2 bb1@2 a1 bb1 a1 bb1 d1@2 ~@2", G: "~@2 f1@2 ~@2 f1@2 ~ f1@2 ~ bb1@2 ~@2",
  H: "~@2 bb1@2 ~@2 bb1@2 ~ bb1@2 ~ d1@2 ~@2", I: "~@2 d1@2 ~@2 d1@2 d2!2 a1!2 d1@2 ~@2",
  J: "~@2 d1@2 ~@2 d1@2 ~ d1@2 ~@5", K: "~@2 d1@2 ~@2 d1@2 d2!2 a1!2 bb1@2 ~@2",
  L: "~@2 bb1@2 ~@2 bb1@2 ~ bb1@2 ~ bb1@2 ~@2", M: "~@2 bb1@2 ~@2 bb1@2 ~ bb1@2 ~ d2@2 ~@2", N: "~ d1 ~ d1 ~@4",
})).s("gm_synth_bass_1").gain(0.36)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@4 A B C D E B C D E B C D E B C D E B C D E B C D F ~ F ~ F ~ F ~ F ~@2 G H ~@2 G I B C D E B C D E B C D E B C D F
  ~@2 G H ~@2 G I B C D E B C D F ~@3 J ~ K ~ J ~ K ~ J ~ K ~ J ~ K ~ L ~@3 M N O N P Q ~@3 G H ~@2 G H ~@2 G H ~@2 G H
  ~@2 G H ~@2 G I B C D E B C D E B C D E B C D E B C D F
>`.pickRestart({
  A: "~@3 d3", B: "~ [d3,d4]@3 ~@4", C: "~ [f3,f4,a4,c5]@3 ~@2 [bb2,bb3,d4,f4]@2", D: "~ [bb2,bb3,d4,f4]@3 ~@4",
  E: "~ [d3,f4,a4,d5]@4 ~ d3@2", F: "~ [d3,f4,a4,d5]@4 ~@3", G: "~@7 [d4,f4,a4]", H: "~ [d4,f4,a4]@2 ~@5",
  I: "~ [d4,f4,a4]@2 ~@3 d3@2", J: "~@3 [d3,d4,f4,a4]", K: "~@3 [d3,f4,a4,c5]", L: "~@2 [a3,d4,f4,a4] [f3,bb3,d4,f4]",
  M: "~@3 [f3,bb3,d4]", N: "~ [bb3,d4,f4] ~ [bb3,d4,g4,a4]", O: "~ [bb3,d4,f4,a4]@2 ~ [bb3,d4,f4]@2 [f3,bb3,d4]@2",
  P: "~@2 [bb3,d4,f4,a4]@4 ~@2 [bb3,d4,f4]@4 [d6,d7] ~ [d6,d7] ~", Q: "[d6,d7] ~ [d6,d7] ~@13",
})).s("gm_lead_2_sawtooth").gain(0.22)

// chords · piano
const piano = note(`<
  ~@16 A B C D E ~@7 F G F H F G F H I@8 ~@2 J K J L M N O ~@7 I@8 P Q R Q R Q R Q S ~@19 T U V U W U W X Y ~ I@8 Z@8
  AA@8 AB@7 AC@8 AD@6
>`.pickRestart({
  A: "~@5 c4 [c5,e5] c4", B: "[c5,e5] c4 [c5,f5]!2 c4 [c5,f5]@2 c4", C: "[c5,f5] c4 [c5,g5]!2 d4 c4 [d4,f4] c4",
  D: "[d4,f4] c4 [d4,g4]!2 c4 [e4,g4]@2 c4", E: "[e4,g4] c4 [f4,a4]!2 [e4,g4] [d4,f4] ~@2", F: "~@3 [a3,d4]",
  G: "~ [a3,c4]@2 ~ [c4,d4]@2 ~@2", H: "~ [a3,c4]@2 ~ [a3,c4]@2 ~@2",
  I: "[~@6 d2@3 [d3,f3,a3]@2 ~ [d3,f3,a3]@2 ~ [f3,a3,c4] [f3,a3,c4] [f3,a3,c4]@3 [f3,a3,c4] ~ bb2@3 [f3,bb3,c4]@2 ~ [f3,bb3,c4]@2 ~@2, ~@14 f2@3 ~@4 [f3,bb3,c4]@3 ~@8]/4", // Dm F Fsus4
  J: "[a4,d5] [g4,c5] [a4,d5] [g4,c5] ~@2 [a4,d5]@2", K: "~ [a4,c5]@2 ~ [a4,d5]@2 ~@2",
  L: "a3 [d4,a4,d5]@2 ~ [d4,a4,c5]@2 ~@2", M: "[a4,d5] [g4,c5] [a4,d5] [g4,c5] ~ a3 [d4,a4,d5]@2",
  N: "a3 [d4,a4,c5]@2 a3 [d4,a4,d5]@2 ~@2", O: "[a4,d5] [g4,c5] [a4,d5] [g4,c5] ~@4", P: "~@3 [a4,d5]",
  Q: "~ [a4,d5]@2 ~ [a4,d5]@2 ~ g4", R: "[a4,d5] [g4,c5] [a4,d5] [g4,c5] f4 g4 [a4,d5]@2",
  S: "[a4,d5] [g4,c5] [a4,d5] [g4,c5] f4 g4 ~@2", T: "~@3 [bb1,bb2,f3,bb3,d4]",
  U: "~ [bb2,f3,bb3,d4,f4] ~ [bb2,f3,bb3,d4,g4,a4]", // Bb Bbmaj7
  V: "~ [bb2,f3,bb3,d4,f4,a4]@2 ~ [d1,bb1,d2,f3,bb3,d4,f4]@2 [d1,bb1,bb2,f3,bb3,d4]@2", // Bbmaj7 Bb
  W: "~ [bb2,f3,bb3,d4,f4,a4]@2 ~ [d1,d2,f3,bb3,d4,f4]@2 [d1,bb1,bb2,f3,bb3,d4]@2", // Bbmaj7 Bb
  X: "~@2 [bb2,f3,bb3,d4,f4]@2 ~@2 [bb2,f3,bb3,d4,g4,a4]!2", // Bb Bbmaj7
  Y: "~ [bb2,f3,bb3,d4,f4,a4]@2 ~ [d1,d2,f3,bb3,d4,f4]@2 d2 ~", // Bbmaj7 Bb
  Z: "[~@6 d2@3 [d3,f3,a3]@2 ~ [d3,f3,a3]@2 ~ [f3,a3,c4] [f3,a3,c4] [f3,a3,c4]@3 [f3,a3,c4] ~ bb2@3 [f3,bb3,c4]@2 ~ [f3,bb3,c4]@2 ~ [d3,f3,a3] ~ [d3,f3,a3]@3 ~@2 d2@3 [d3,f3,a3]@2 ~ [d3,f3,a3]@2 ~ [f3,a3,c4] [f3,a3,c4] [f3,a3,c4]@3 [f3,a3,c4] ~ bb2@3 [f3,bb3,c4]@2 ~ [f3,bb3,c4]@2 ~ [d3,f3,a3], ~@14 f2@3 ~@4 [f3,bb3,c4]@3 ~@6 d2@3 ~@13 f2@3 ~@4 [f3,bb3,c4]@3 ~@6 d2@2]/8", // Dm F Fsus4 Dm F Fsus4 Dm Fsus4
  AA: "[~ [d3,f3,a3]@3 ~@2 d2@3 [d3,f3,a3]@2 ~ [d3,f3,a3]@2 ~ [f3,a3,c4] [f3,a3,c4] [f3,a3,c4]@3 [f3,a3,c4] ~ bb2@3 [f3,bb3,c4]@2 ~ [f3,bb3,c4]@2 ~ [d3,f3,a3] ~ [d3,f3,a3]@3 ~@2 d2@3 [d3,f3,a3]@2 ~ [d3,f3,a3]@2 ~ [f3,a3,c4] [f3,a3,c4] [f3,a3,c4]@3 [f3,a3,c4] ~ bb2@3 [f3,bb3,c4]@2 ~ [f3,bb3,c4]@2 ~ [d3,f3,a3], ~@14 f2@3 ~@4 [f3,bb3,c4]@3 ~@6 d2@3 ~@13 f2@3 ~@4 [f3,bb3,c4]@3 ~@6 d2@2]/8", // Dm F Fsus4 Dm F Fsus4 Dm Fsus4
  AB: "[~ [d3,f3,a3]@3 ~@3 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~ g2 [a3,d4,f4]!2 ~@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~@3 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~ g2 [a3,d4,f4]!2, ~@6 c2@3 d2@3 d2@2 f2@3 f2@4 ~ f2@3 e2@3 e2@2 d2@8 c2@3 d2@3 d2@2 f2@3 f2@4 ~ f2@2]/7", // Dm Am Dm C Dm Am Dm
  AC: "[~@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~@3 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~ g2 [a3,d4,f4]!2 ~@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~@3 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~ g2 [a3,d4,f4]!2, ~ e2@3 e2@2 d2@8 c2@3 d2@3 d2@2 f2@3 f2@4 ~ f2@3 e2@3 e2@2 d2@8 c2@3 d2@3 d2@2 f2@3 f2@4 ~ f2@2]/8", // C Dm Am Dm C Dm Am Dm
  AD: "[~@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~@3 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~ g2 [a3,d4,f4]!2 ~@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [d4,f4,a4] ~ [d4,f4,a4]@3 ~@4, ~ e2@3 e2@2 d2@8 c2@3 d2@3 d2@2 f2@3 f2@4 ~ f2@3 e2@3 e2@2 d2@8 ~@2]/6", // C Dm Am Dm C Dm
})).s("gm_piano").gain(0.29).pan(0.6)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@28 A B C@2 A B C@2 ~@115>".pickRestart({
  A: "~@6 a4 ~", B: "~ a4 ~@2 a4 ~@2 g4", C: "[a4 g4 a4 g4 f4 g4 a4@3 a4@3 a4@2 ~@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.6)

// chords · lead 4 chiff · Bb G5 Bb G5
const lead_4_chiff = note(`<
  ~@29
  [~@8 a4 bb4 a4 [bb4,d5] [g4,d5] ~@3]
  ~
  [~@10 [g4,d5] ~@5]
  ~
  [~@11 [bb4,d5] [g4,d5] ~@3]
  ~@117
>`).s("gm_lead_4_chiff").gain(0.06).pan(0.2)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@28 A B A C A B A C ~ D E F G D E F H I J K J L J M N ~@8 D E F G D E F H O P O P O P O Q ~@3 R ~ S ~ R ~ S ~ R ~ S ~
  R ~ S ~ T U V U W X Y X Z ~@2 D E F G D E F G D E F G D E F G D E F G D E F AA AB AC AD AE AB AC AD AE AB AC AD AE AB
  AC AD AE AB AC AD AF
>`.pickRestart({
  A: "~@3 [a3,d4]", B: "~ [a3,c4]@2 ~ [a3,d4]@2 ~@2", C: "~ [c4,f4]@2 ~ [c4,f4]@2 ~@2",
  D: "~ [d3,f3,a3]@2 ~ [d3,f3,a3]@2 ~ [d3,f3,a3]", E: "[d3,f3,a3]!2 [d3,f3,a3]@3 [f3,bb3,c4] [f3,bb3,c4]@2",
  F: "~ [f3,bb3,c4]@2 ~ [f3,bb3,c4]@2 ~ [d3,f3,a3]", G: "~ [d3,f3,a3]@3 ~@4", H: "~@2 [d3,f3,a3]@6 ~@4 [a4,d5]@3 ~",
  I: "~@2 [a4,d5]@3 ~@3 [a4,d5]@3 ~@3 g4@2", J: "[a4,d5]@2 [g4,c5]@2 [a4,d5]@2 [g4,c5]@2 f4@2 g4@2 [a4,d5]@3 ~",
  K: "~@2 [g4,d5]@3 ~@3 [a4,d5]@3 ~@3 g4@2", L: "~@2 [a4,d5]@3 ~@3 [a4,c5]@3 ~@3 g4@2",
  M: "~@2 [g4,c5]@3 ~@3 [a4,d5]@3 ~@3 g4@2", N: "[a4,d5] [g4,c5] [a4,d5] [g4,c5] f4 g4 ~@2",
  O: "~@2 [a4,d5]@3 ~@3 [a4,d5]@3 ~@5", P: "[a4,d5]@2 ~@2 [a4,d5]@4 ~@4 [a4,d5]@3 ~", Q: "[a4,d5] ~ [a4,d5]@2 ~@4",
  R: "~@3 [d3,d4,f4,a4]", S: "~@3 [d3,f4,a4,c5]", T: "~@3 a3", U: "~ c4 ~ c4", V: "~ c4@2 ~ a3@2 a3@2",
  W: "~ c4@2 ~ a3@2 [a3,bb3,d4]@2", X: "~ [bb3,c4,f4] ~ [bb3,c4,g4,a4]",
  Y: "~ [bb3,c4,f4,a4]@2 ~ [a3,bb3,f4]@2 [a3,bb3,d4]@2", Z: "~ [bb3,c4,f4,a4]@2 ~ [a3,bb3,f4]@2 ~@2",
  AA: "~ [d3,f3,a3]@3 ~@3 [a3,c4,e4]", AB: "~ [a3,c4,e4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [d4,f4,a4]",
  AC: "~ [d4,f4,a4]@3 ~@2 [bb3,d4,f4]!2", AD: "~@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [d4,f4,a4]",
  AE: "~ [d4,f4,a4]@3 ~@3 [a3,c4,e4]", AF: "~ [d4,f4,a4]@3 ~@4",
})).s("gm_string_ensemble_1").gain(0.19).pan(0.4)

// chords · pad warm
const pad_warm = note("<~@36 A@8 ~@16 A@16 ~@30 A@40 B@5>".pickRestart({
  A: "[~@3 [d3,f3,a3]@4 [f3,a3,c4]@4 [d3,f3,bb3]@4 [d3,f3,a3]@4 [d3,f3,a3]@4 [f3,a3,c4]@4 [d3,f3,bb3]@4 [d3,f3,a3]]/8", // Dm F Bb Dm F Bb Dm
  B: "[~@3 [d3,f3,a3]@4 [f3,a3,c4]@4 [d3,f3,bb3]@4 [d3,f3,a3]@4 ~]/5", // Dm F Bb Dm
})).s("gm_pad_warm").gain(0.06)

// other · taiko drum
const taiko_drum = note("<~@76 A B@51 C D E B@5 C D E B@5 C D E B@3 F>".pickRestart({
  A: "~@12 db8 ~@2 db8", B: "d7 ~ c6!2 d7 db8 ~@2 d7 ~ c6 ~ db8 ~@2 db8",
  C: "d7 ~ c6!2 d7 db8 ~@2 d7 ~ c6 ~ db8 d7 c6!2", D: "db8 d7 c6!2 db8 d7 c6!2 db8 d7 c6!2 db8 d7 c6!2",
  E: "db8 d7 c6!2 db8 d7 c6!2 db8 d7 c6!2 db8 ~@2 db8", F: "d7 ~ c6!2 d7 db8 ~@10",
})).s("gm_taiko_drum").gain(0.12)

// chords · distortion guitar
const distortion_guitar = note("<~@76 A@8 B@8 C@5 ~@54>".pickRestart({
  A: "[~@16 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@6 d5@2, ~@12 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4, ~@7 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 ~]/8",
  B: "[a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@6 d5@2, ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4, ~@5 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 ~]/8",
  C: "[a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@8 a4@2 ~@2 d5@3 a4 ~@2 d5@4 ~@2, ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 a4@4 ~@2 a4@5 ~ a4@4 ~@4, ~@5 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@4 d5@2 d5@2 ~@7]/5",
})).s("gm_distortion_guitar").gain(0.1)

// other · alto sax
const alto_sax = note("<~@82 A@14 ~@55>".pickRestart({
  A: "[~ a5 a5@2 g5@2 f5@4 ~@6]/2",
})).s("gm_alto_sax").gain(0.05)

// chords · drawbar organ
const drawbar_organ = note("<~@88 A B C D E B C D F ~@17 G H I J K H I J K H I J K H I J L M@19 N>".pickRestart({
  A: "~@6 [a4,d5] [d5,f5]", B: "[a4,d5] ~@2 [a4,d5] [f5,a5] [a4,d5] [c5,e5] [d5,f5]",
  C: "[c5,e5] ~@2 [c5,e5] [f5,a5] [c5,e5] [bb4,d5] [f5,a5]", // C F C Bb F
  D: "[bb4,d5] ~@2 [bb4,d5] [f5,a5] [bb4,d5] [f4,a4] [a4,d5]", E: "[f4,a4] [a4,d5]!2 [d5,f5] [d5,f5]@2 [a4,d5] [d5,f5]",
  F: "[f4,a4] [d4,f4] [f4,a4] [a4,d5] [a4,d5]@2 ~@2", G: "~@6 [a4,d5] [a4,d5,f5]",
  H: "[a4,d5] a4 d5 [a4,d5] [d5,f5,a5] [a4,d5] [c5,d5,e5] [a4,d5,f5]", // D5 Dm D5 C Dm
  I: "[c5,d5,e5] a4 d5 [a4,c5,e5] [d5,f5,a5] [a4,c5,e5] [bb4,d5] [a4,f5,a5]", // C Am Dm Am Bb Dm
  J: "[bb4,d5] a4 d5 [a4,bb4,d5] [d5,f5,a5] [a4,bb4,d5] [f4,a4,d5] [a4,d5]", // Bb Bbmaj7 Dm Bbmaj7 Dm D5
  K: "[f4,a4,d5] [a4,d5]!2 [a4,d5,f5] ~ a4 [a4,d5] [a4,d5,f5], ~@2 [d5,f5] ~", // Dm D5 Dm D5 Dm
  L: "[f4,a4,d5] [a4,d5]!2 [a4,d5,f5] ~ a4 d5 a4, ~@2 [d5,f5] ~", M: "d5 a4 d5 a4 d5 a4 d5 a4", N: "d5 a4 d5 a4 ~@4",
})).s("gm_drawbar_organ").gain(0.25)

// other · timpani
const timpani = note(`<
  ~@83
  [~@14 c5 ~]
  [c5!2 ~ c5!2 ~ c5!2 ~ c5!2 ~ c5 ~@3]
  ~@2
  [~@14 c5 ~]
  [c5!2 ~ c5!2 ~ c5!2 ~ c5!2 ~ c5 ~@3]
  ~@62
>`).s("gm_timpani").gain(0.14).pan(1)

// drums · kick
const kick = s("bd").struct("<A B@43 C B@7 C B@7 C B@15 C B@11 C B@16 ~ A B@7 C B@7 C B@15 C B@7 C B@3 D>".pickRestart({
  A: "~@3 x", B: "~@3 x ~@2 x ~@5 x ~@3", C: "~@3 x ~@2 x ~@3 x!3 ~@3", D: "~@3 x ~@2 x ~@9",
})).gain(0.4)

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

// drums · hihat
const hihat = s("hh").struct("<[~@12 x!3 ~] [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!149 [x!3 ~ x!3 ~@9]>").gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@36 A ~@23 A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 B ~@9 A ~@7 A ~@7 A ~@7 A ~@7 A ~@12
>`.pickRestart({
  A: "~@3 x", B: "~@2 x!2",
})).gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct(`<
  [~@7 x]
  [~ x ~ x ~ x ~ x]!103
  [~@2 x ~@3 x ~@3 x ~ x!4]
  [x!16]
  [x!12 ~@2 x ~]
  [~ x ~ x ~ x ~ x]!43
  [~ x ~ x ~@4]
>`).gain(0.3)

// drums · bongos
const bongos = s("bongo:4").struct("<~@77 [~@4 x!3 ~ x ~@7]!4 ~@70>").gain(0.78)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct(`<
  ~@104
  [~@12 x!2 ~@2]
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]
  [x!2 ~@2 x!2 ~@2 x!2 ~@6]
  ~@44
>`).gain(0.39)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[~@7 x] [~ x ~ x ~ x ~ x]!149 [~ x ~ x ~@4]>").gain(1.51)

// … 11 more lines

More by New Order