Strudelify
Money For Nothing (Full Length Version) cover art

Down Under

Money For Nothing (Full Length Version)

Dire Straits

KeyG minorTempo134 bpm
0:00/0:00
// Money For Nothing (Full Length Version) — Dire Straits
// 134 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 269 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar.
setcpm(134/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 · lead 2 sawtooth · "Synth"
const lead_2_sawtooth = note("<~@66 A@2 B ~@25 C ~@17 C ~@17 C ~@25 C ~@112>".pickRestart({
  A: "~@4 [g4,d5,f5] ~@7 [g4,d5,f5] ~@3", B: "~@4 [g4,f5] ~@7 [g4,d5,f5] ~@3, ~@2 d5 ~@5", C: "[g3,d4,g4]",
})).s("gm_lead_2_sawtooth").gain(0.8)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@61 A B A C A D A E F B A C F D A E F B A C F D A G H I J K A L M N O P F B A C F Q A G R I J K A L M N O S F B A C F
  D A E R I J K A L M N O S F B A C F Q A E F B A C F Q A G R I J K A L M N O S F B A C F Q A E F B A C F Q A T F B A C
  F Q A E F B A C F Q A T F B A C F Q A E F B A C F Q A T F B A C F Q A E F B A C F Q A T F B A C F Q A E F B A C F Q A
  T F B A C F Q A E F B A C F Q A T F B A C F Q A E F B A C F Q ~@2
>`.pickRestart({
  A: "g1@4 ~@2 g1 ~ g1@4 ~@2 g1 ~", B: "g1@4 ~@2 g1 ~ c2@2 bb1 ~ f1@2 gb1@2", C: "bb1@4 ~@2 bb1@2 c2@3 ~ c2@2 d2 ~",
  D: "g1@4 ~@2 g1 ~ c2@2 bb1 ~ a1@2 ab1@2", E: "f1@4 g1@3 ~ g2@2 f2@2 d2@2 c2@2", F: "g1@4 ~@2 g1 ~ g1@4 ~@2 f1 ~",
  G: "f1@4 g1@3 ~ bb1@2 g1@2 bb1@2 d2@2", H: "eb2@5 ~ eb2 ~ eb2@4 g2@2 ~@2", I: "bb1@5 ~ bb1@2 d2@2 bb1@2 d2@2 f2@2",
  J: "eb2@5 ~ eb2 ~ g2@2 ~@2 eb2@4", K: "f2@4 d2@2 c2@2 f1@3 ~ f1@2 gb1 ~", L: "g1@4 ~@2 g1 ~ f1@2 g1@2 bb1@2 g1 ~",
  M: "c2@2 ~ c2 e1 g1 c2@2", N: "d2@5 ~ d2@2 gb1@2 a1@2 d2@3 ~", O: "e2@5 ~ e2 ~ e2@7 ~", P: "e2@5 ~ e2 ~ e2@4 gb1@3 ~",
  Q: "g1@4 ~@2 g1 ~ d2@2 c2 ~ bb1@2 a1@2", R: "eb2@5 ~ eb2 ~ g2@2 ~@2 g2@2 ~@2", S: "e2@5 ~ b1 ~ e2@4 gb1@3 ~",
  T: "f1@4 g1@3 ~ d2@2 d2 ~ d2@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · pad warm · "Synth"
const pad_warm = note(`<
  ~ A@8 ~@68 B@3 C B@3 D E@3 F@3 G H I@2 J@3 K J@3 K E@3 F@3 G H I@2 J@3 K J@3 K E@3 F@3 G H I@2 J@3 K J@3 K J@3 K J@3 K
  E@3 F@3 G H I@2 L@7 K M@8 L@7 K N@7 K L@7 K N@7 K L@7 K L@7 K L@7 K L@7 K L@7 K N@7 K L@7 K O@6 ~@2
>`.pickRestart({
  A: "[~ [g3,bb3,d4,g4]@15]/8", B: "[g4,d5,f5]/3", C: "c5@15 ~", D: "c5@8 d5@7 ~",
  E: "[[g4,eb5] [f4,d5] [g4,eb5], bb4]/3", F: "[[a4,c5] [g4,d5]@2, f5]/3", G: "[e4,g4,c5]", H: "[gb4,a4,d5]",
  I: "[ab4,b4,e5]/2", J: "[[g4,d5,f5]@47 ~]/3", K: "c5 d5", L: "[g4@3 g5 [g4,f5]@3, d5, f5@4 ~@3]/7",
  M: "[[d5,f5]@7 [c5,e5] [d5,f5]@8, g4]/8", N: "[g4,d5,f5]/7", O: "[g4,d5,f5]/6",
})).s("gm_pad_warm").gain(0.8).pan(0.4)

// other · synth brass 1 · "Brass"
const synth_brass_1 = note(`<
  ~@69 A B C D E F G H I J K L M N O P Q R S T U V W X Y@2 Z AA AB AC Z AD AE AF Q R S T U V W X Y@2 ~ AG ~@2 AH ~@7 U V
  ~@3 AI AJ@2 AK AL AM AN AO@2 AP AQ AR AS AT@2 AU H Q R S T U V W X Y@2 ~@7 AV AW AX AY AZ BA BB BC BD BE ~ BF ~ BG ~
  BH ~ BE ~ BF ~ BI ~ BJ ~ BE ~ BF ~ BG ~ BH ~@8 BK ~@64
>`.pickRestart({
  A: "bb4!2 bb4@4 f4@2 g4 f4 d4 ~@5", B: "bb4@2 g4 ~ g4@2 c4@2 d4@2 d4 ~@5",
  C: "~@2 d4@2 bb4@2 d4@2 bb4 ~ bb4 ~ bb4@2 d4 ~", D: "f4@4 g4@3 ~ g4@2 bb4@3 ~@3",
  E: "~@2 c5@2 g4@4 d4@2 g4 ~@3 bb4@2", F: "~@2 bb4 ~ bb4@2 g4@2 bb4 ~ bb4@2 ~@4",
  G: "bb4 ~ bb4@3 ~ bb4 ~ bb4@2 g4 ~ g4 ~ g4@2", H: "f4@4 g4 ~ g4@5 ~@5", I: "~@4 c5 g4@3 f4@2 g4@2 ~@2 bb4@2",
  J: "~@2 bb4 ~ bb4@2 g4@2 bb4 ~ bb4 ~@5", K: "~@4 c5 g4!2 d4 ~@4 d4@4", L: "f4@4 g4@4 bb4@5 ~@3",
  M: "bb4@2 bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~", N: "~@2 bb4@3 ~ g4@2 bb4@2 g4@3 ~@3", O: "~@4 f4 g4!2 f4",
  P: "bb4 a4 g4 bb4@2 g4@2 ~", Q: "~@2 bb4 ~ bb4 ~ bb4 ~ bb4@4 bb4@4", R: "c5@2 bb4@2 d5@4 c5@2 bb4 ~@5",
  S: "~@4 bb4@2 g4@2 bb4 ~ bb4@2 bb4@2 bb4 ~", T: "c5 bb4 c5 bb4 c5 bb4 c5 d5", U: "~@2 d5@2 c5@2 bb4@2 d5@4 g4@3 ~",
  V: "~@2 bb4 ~ bb4@2 g4@2 bb4@2 g4 ~@5", W: "~@2 g4 ~ g4 ~ g4 ~ g4@3 ~ g4@3 ~", X: "a4@4 a4@3 ~ a4@3 ~ a4@3 ~",
  Y: "[b4@23 ~@9]/2", Z: "~@2 bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~",
  AA: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~@3", AB: "~@3 bb4 f4 g4 ~@2", AC: "f4@2 g4@4 bb4@2 g4 ~@7",
  AD: "bb4 ~ bb4 ~ bb4 ~ bb4 ~@3 bb4@2 g4@2 f4 ~", AE: "~@2 bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4@2 d4 ~",
  AF: "bb4@2 g4@2 c5@2 g4@5 ~@5", AG: "~@8 bb4@2 d4@2 d4@2 c4 ~", AH: "bb4 ~@7", AI: "~@2 e4!2 e4@3 ~ e4!2 ~@6",
  AJ: "[~@2 g4 ~ bb4@2 g4@2 bb4@2 bb4 ~@3 bb4@4 g4@2 bb4@2 d4@6 ~@4]/2", AK: "~@2 g4@2 bb4 d4 d4@2 d4@4 ~@2 d4@2",
  AL: "f4@4 g4@4 g4@4 bb4@3 ~", AM: "~ d4!2 ~ d4 ~ d4 ~ d4 ~ d4@3 ~@3",
  AN: "bb4@2 bb4@2 bb4@2 g4 ~ bb4@2 f4@2 f4@2 g4 ~", AO: "[a4@7 ~@5 f4@2 d4@6 ~@12]/2",
  AP: "bb4@2 g4 ~ g4@3 ~@3 bb4@2 g4 ~@3", AQ: "~@2 bb4@2 g4 ~ g4@2 g4@2 bb4 ~@5",
  AR: "~@4 bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ d4@2", AS: "f4@4 g4@3 ~@5 bb4 ~ bb4 ~",
  AT: "[bb4 ~ bb4 ~ bb4@2 f4@2 g4 ~@5 bb4@4 g4 ~ g4@2 d4 ~ f4@2 g4 ~@5]/2",
  AU: "~@2 bb4@2 g4@2 d4@2 g4@2 d4 ~ d4@2 d4@2", AV: "~@4 g4 d4 d4@3 ~@3 f4 g4 g4@2", AW: "~@4 g4 d4 d4@3 ~@7",
  AX: "g4 d4 d4@2 d4 ~ d4 ~@9", AY: "~@2 d4@2 f4@2 d4@2 f4!2 ~ f4@3 d4@2", AZ: "f4@3 ~ f4@4 d4@3 ~@5",
  BA: "bb4 bb4@7 f4@2 g4 ~@3 bb4@2", BB: "~@2 bb4 ~ bb4@2 g4@2 bb4@2 g4@2 ~@4",
  BC: "bb4 ~ bb4 ~ bb4 ~ g4 ~ bb4@2 g4@2 g4@2 g4@2", BD: "f4 ~ d4 d4@4 ~", BE: "~@2 f4 ~ f4@2 d4@2 f4@2 d4@2 ~@4",
  BF: "f4@3 ~ g4 ~ g4@6 ~@4", BG: "bb4 ~ bb4@4 g4 ~ g4 ~ g4 ~@5", BH: "a4@2 f4 d4@3 ~@2",
  BI: "bb4 ~ bb4@3 ~ bb4@2 a4@2 g4 ~@5", BJ: "bb4@2 ~@2 g4 ~ g4@6 ~@4", BK: "bb4 g4 g4@2 ~@2 bb4 g4 g4@3 ~@5",
})).s("gm_synth_brass_1").gain(0.8).pan(0.4)

// bass · synth bass 2 · "SynthBass"
const bass_2 = note(`<
  ~@22 A@2 B@2 ~ C ~@10 D E F ~@27 E G ~@2 E G ~@2 E G ~@4 E G ~@14 H G ~@12 E G E I J G E K L ~@9 E ~@6 H M G E I J G
  ~@12 E ~@5 E K L ~@9 E I J G ~@9 H N G ~@5 H N G ~@5 H O ~@6 H O ~@8 G ~ P J G E G ~@3 P J G ~@5 P J G ~@4 E G ~@3 H N
  G ~@5 H N G ~@5 H L
>`.pickRestart({
  A: "[~@15 g3@2 ~@6 g3 ~@8, ~@17 g2@12 ~@3]/2", B: "[~@13 g3@2 g2@5 g3@5 ~@7]/2", C: "~ g3@3 g2@6 g3@6",
  D: "g3@2 ~@6 g3 ~@7, ~@3 g2@9 ~@4", E: "~@7 g3", F: "~@6 g3 ~@9, ~ g2@10 ~@5", G: "g2 ~@3", H: "~@7 f3",
  I: "g2@2 ~@5 bb3", J: "bb2@2 ~ c4 c3@2 ~ g3", K: "g2@2 ~@5 f3", L: "f2@2 ~ g3 g2@2 ~@2", M: "f2@2 ~@5 g3",
  N: "f2@2 ~ g3 g2@2 ~ g3", O: "f2 ~@3", P: "~@7 bb3",
})).s("gm_synth_bass_2").gain(0.72).pan(0.3)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@47 A@2 B ~@3 C D E F G H I J C D E F G H I J C D E F G H I J C D E F G H I J K L M N G H O P Q@2 C D E F G H I J K L
  M N G H O P Q@2 C D E F G H I J K L M N G H O P Q@2 C D E F G H I J C D E F G H I J K L M N G H O P Q@2 C D E F G H I
  J C D E F G H I J C D E F G H I J C D E F G H I J C D E F G H I J C D E F G H I J C D E F G H I J C D E F G H I J C D
  E F R S I J T U@2 F G H I V W X E F Y H I J C D E F G H I J C D E F G H I J C D E F G H ~@2
>`.pickRestart({
  A: "[~@12 [g2,d3]@8 [f2,c3]@4 [g2,d3] ~@3 [g2,d3]@4]/2", B: "[f2,c3] ~@15",
  C: "[g3,d4] ~@3 [g3,d4]@4 d4@2 c4@2 d4@2 f4@2, ~@2 g3!2", D: "[g3,f4]@4 d4@2 c4@2 c4@2 bb3@2 d3@2 g3 ~, ~ g3!2 ~",
  E: "[d3,g3] ~@3 [d3,g3]@4 g3@2 bb3@2 d3 ~ d3 ~, ~@2 d3 ~", F: "[f3,bb3]@4 [g3,c4] ~@3 [g3,c4]@4 [f3,bb3]@2 g3 ~",
  G: "[g3,d4] ~@3 [g3,d4]@4 d4@2 c4@2 d4@2 d4@2, ~@2 g3!2", H: "d4@2 g4@2 c4@2 d4@2 c4@2 bb3@2 g3 ~ g3 ~, g3!3 ~",
  I: "[d3,g3] ~@3 g3@6 bb3@2 g3@2 d3 ~, ~ d3@2 ~", J: "[c3,f3]@4 [d3,g3] ~@3 [d3,g3]@8", K: "[eb3,bb3]",
  L: "[bb2,f3]@5 [bb2,f3]@2 [bb2,f3]", M: "[eb3,bb3]!5 [d3,bb3] [eb3,bb3]!2",
  N: "[f3,c4] [f3,c4]@2 [f3,c4]@2 [f3,c4]@2 [f3,c4]", O: "[c3,g3]@5 [c3,g3]@2 [c3,g3]",
  P: "[d3,a3]@5 [d3,a3]@2 [d3,a3]", Q: "[[e3,b3]@31 ~]/2", R: "~@2 [g3,f4]@2 [g3,f4]!2 ~ [g3,f4]",
  S: "~ [g3,f4]@2 c4@2 bb3 g3 f3", T: "[g4,d5] [g3,d4]@3",
  U: "[[d3,g3]@2 [g3,d4] [g3,d4]@4 [d3,g3]@3 [g3,d4] [g3,d4]@5]/2", V: "[c3,f3]@4 [d3,g3] ~@3 g3 ~ b3@2 c4@2 b3@2",
  W: "d4@6 c4 d4", X: "f4 ~ f4 d4 c4@2 d4@2 g4@2 f4@5 ~", Y: "d4@4 g4 ~@5 [d4,g4]@2 ~@4",
})).s("gm_overdriven_guitar").gain(0.8).pan(0.7)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  ~@89 A@2 ~@11 B ~@4 A@2 ~@3 C ~@7 D ~@4 A@2 ~@3 C ~@20 A@2 ~@3 C ~@40 E F G H I@2 J@2 ~@24 K L M ~@3 N O P Q ~@2 R ~@3
  S T ~@3 U V ~@17
>`.pickRestart({
  A: "[~ [g3,d4]@14 ~]/2", B: "bb3@2 [e3,a3]@2 ~@2 [f3,bb3]@2 [e3,a3]@2 [d3,g3]@5 ~",
  C: "~@2 [a3,d4] ~@3 [a3,d4]@6 [a3,d4]@3 ~", D: "~@10 [f3,bb3]@2 [d3,g3]@3 ~",
  E: "[c4,f4]@4 [c4,f4] ~ [c4,f4] ~@3 f4 ~@3 c4 ~", F: "~@2 [c4,f4] ~@3 f4@4 [c4,f4]@2 ~@2 c4 ~", G: "~@3 d4@2 g4 ~ g3",
  H: "~@2 c4@2 d4@2 [g3,c4]@5 ~@5", I: "[~@10 g3@15 ~ c4 ~ bb3@2 ~@2]/2",
  J: "[[f3,bb3]@2 [d3,g3] ~@3 d3 ~ [f3,bb3]@4 d3@2 [f3,bb3]@6 ~@2 [d3,g3]@9 ~]/2", K: "~@4 d4 c4 d4 f4, ~@2 g3!2",
  L: "f4@2 ~ c4!2 bb3 d3 ~, ~@2 g3 ~", M: "[d3,g3] ~@7 g3@2 bb3@2 d3 ~ d3 ~, ~@2 d3 ~",
  N: "~@2 [f3,bb3] [e3,a3] [f3,bb3] [e3,a3] d3@2", O: "~ d3", P: "g3 ~@3 [g3,d4]@4 d4@2 c4@2 d4@2 f4@2, ~@2 g3!2",
  Q: "g3@4 d4@2 c4@2 c4@2 bb3@2 d3@2 g3 ~, ~ g3 ~@2", R: "g3 ~@3 d4@4 d4@2 c4@2 d4@2 d4@2, ~@2 g3!2",
  S: "f4@7 ~ f4@7 ~", T: "d4@3 ~ f4@4 ~@4 g3@2 bb3 ~", U: "~@2 f4 ~ d4@2 ~@10", V: "~@2 f4 d4 c4@2 bb3@2 g3@7 ~",
})).s("gm_electric_guitar_muted").gain(0.8).pan(0.2)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@42 A@8 ~@219>".pickRestart({
  A: "[g4,bb4,d5]/8", // Gm
})).s("gm_string_ensemble_1").gain(0.42).pan(0.3)

// other · synth strings 1 · "Strings"
const synth_strings_1 = note("<~ A@8 ~@7 B@8 ~@3 C@8 ~@2 D@8 ~@224>".pickRestart({
  A: "[~ g1@15]/8", B: "[~ ab1@15]/8", C: "eb1/8", D: "g1/8",
})).s("gm_synth_strings_1").gain(0.33).pan(0.7)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@7 A@4 B@5 C@6 ~@5 D@7 ~@3 E@8 ~ F@7 ~@216>".pickRestart({
  A: "[~@9 [d5,g5,bb5]@55]/4", B: "[~@3 [d5,g5,d6]@37, ~ bb5@15]/5", C: "[~@9 [f5,ab5]@77 ~@10]/6",
  D: "[~@12 g5@91 ~@9, ~@8 [eb5,bb5]@95 ~@9]/7", E: "[~@89 c6@39, ~@3 bb5@41 ~@20, ~@7 [d5,g5]@121]/8",
  F: "[~@67 g6@45, bb5, ~@27 d6@85]/7",
})).s("gm_string_ensemble_2").gain(0.26).pan(0.8)

// other · lead 8 bass lead · "Synth"
const lead_8_bass_lead = note("<~@9 A B@2 ~@4 C@4 ~@6 D@3 E@2 ~@6 F@2 G H I@3 J K@2 L@2 M@4 ~@216>".pickRestart({
  A: "~@3 g4@8 a4@2 ~ bb4@2", B: "[c5@15 ~]/2",
  C: "[~@8 d5@14 c5@2 f5@2 ~ d5@14 c5@2 ~ f5@2 c5 d5@12 ~@5, ~@27 c5 ~@36]/4",
  D: "[~@8 d5@16 eb5@3 ~ c5@10 d5 eb5@3 d5@3 eb5@3]/3", E: "[~ d5@6 d5 eb5@3 c5@19 ~@2]/2",
  F: "[~@6 g4@2 a4@2 bb4@2 c5@13 ~ bb4@2 a4@2 g4@2]/2", G: "d5@11 c5@2 bb4@2 a4", H: "bb4 a4 ~ c5@12 ~, ~ g4 ~@6",
  I: "[bb4@3 a4@7 g4@3 f4@2 g4@2 a4@2 f4@2 g4@20 ~@7]/3", J: "~@5 c5 f5 ~ d5@8", K: "[c5 f5 d5@18 ~@10 c5 f5]/2",
  L: "[d5@6 ~ c5 f5 d5@18 ~@5]/2", M: "[~@3 g5 a5 bb5 c6@17 d6 f6 ~ g6@8 a6 bb6 c7@28]/4",
})).s("gm_lead_8_bass_lead").gain(0.72).pan(0.7)

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

// drums · rim
const rim = s("rim").struct("<[~@2 x!2] [x!2 ~@2] ~@267>").gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@40 A B C B D E F G H I J K L ~@7 M ~@33 N ~@17 M ~@17 O ~@25 M ~@112>".pickRestart({
  A: "~ x", B: "~@4 x!2 ~@2", C: "~@2 x!2 ~@4", D: "~@9 x!3 ~@2 x!2", E: "~ x!3 ~@12", F: "x!2 ~ x!2 ~ x!8 ~@2",
  G: "x ~@2 x!2 ~@11", H: "x!2 ~ x!3 ~ x!2 ~@2 x!3 ~ x", I: "x!3 ~@5 x ~@2 x ~@2 x ~", J: "~@2 x ~@6 x ~@6",
  K: "~@5 x ~@2 x!3 ~@5", L: "x ~@2 x ~@12", M: "~ x ~ x!3 ~@2", N: "~@2 x!4 ~@2", O: "~@4 x ~ x ~ x!3 ~@5",
})).gain(0.8)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@60 A ~ B ~ B ~ B ~@5 B ~@3 C ~@3 B ~@4 B ~@2 B ~ B ~@5 B ~@7 B ~@3 B ~@3 A ~@3 B ~@3 D ~ B ~ B ~ B ~@5 B ~ B ~@3 B
  ~@3 B ~@7 B ~ B ~@3 A ~@3 E ~@3 F ~ B ~ B ~@3 B ~ B ~ B ~@5 B ~ B ~@5 B ~ B ~ B ~ E ~@3 B ~@3 A ~ B ~@62
>`.pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@5 x ~@2", D: "~@3 x ~@3 x", E: "~@5 x ~ x", F: "~@3 x ~@2 x ~",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A@2 B C ~@6 D ~@9 E ~@32 F G ~@17 E ~@17 H ~@25 E ~@112>".pickRestart({
// … 19 more lines

More by Dire Straits