Strudelify
Brothers in Arms cover art

1985 · Brothers In Arms

Brothers in Arms

Dire Straits

KeyG minorTempo73 bpm
0:00/0:00
// Brothers in Arms — Dire Straits
// 73 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERBAS"
const bass = note(`<
  ~@21 A B C D E F G H E I J K L M N O P Q R S T U V M W X Y Z AA AB AC AD AE AF AG AH AI ~ AJ AK AL AM AN AO AP AQ AR@2
  J M AS AT AS AU N AV AS AW AS AD AS AU AG AX AY AZ AY BA AS AB AG BB N AZ BC ~
>`.pickRestart({
  A: "eb1@8 f1@5 ~ f1 ~", B: "f1@3 c2 f2@2 f1@2", C: "bb1@5 ~ bb1@6 f1@4", D: "bb1@2 a1 f1",
  E: "g1@4 ~@2 g1@2 d2@5 ~ a1@2", F: "d1 ~ d1@5 a1 d2 ~ d2@6", G: "eb1@5 ~ bb1@2 eb2@4 eb1@4",
  H: "f1@2 bb1 c2 f2@6 c2@2 f1@4", I: "d1 ~ d1@5 a1 d2 ~ d2@4 d1@2", J: "eb1@5 ~ eb1@2 c2@5 ~ c2@2",
  K: "f1@6 bb1 c2 f2@2 f1@3 ~ f1@2", L: "g1@5 ~ f1@2 eb1@5 ~ eb1@2", M: "f1@6 bb1 c2 f2@2 f1@4 gb1@2",
  N: "g1@4 ~@2 g1 f1 eb1@5 ~ eb1@2", O: "c2@5 ~ c2@2 eb1@5 ~ eb1@2", P: "g1@3 f1 eb1@3 d1", Q: "c1@3 d1",
  R: "g1@13 ~@3", S: "~@6 f1 gb1", T: "g1@5 ~ g1@2 bb1@4 d2@4", U: "f1@5 ~ f1@2 bb1@4 d2@4",
  V: "eb2@7 bb1 eb1 ~ eb1@3 ~ eb1@2", W: "g1 ~ bb1 d2", X: "f1@5 ~ f1@2 bb1@5 ~ bb1@2", Y: "eb2@8 bb1@5 ~ bb1@2",
  Z: "eb2@7 bb1 eb1 ~ eb1@4 f1@2", AA: "g1@5 ~ f1@2 eb1@8", AB: "c2@2 ~ c2 eb2@2 eb1@2", AC: "g1@5 ~ f1@2 eb1@6 bb1@2",
  AD: "c2@5 ~ c2@4 bb1@2 a1@2 f1@2", AE: "g1@5 ~ g1 f1 eb1@4 ~@2 eb1@2", AF: "c2@2 ~ c2 eb2 eb1 f1@2",
  AG: "g1@4 ~@2 g1@2 eb1@5 ~ eb1@2", AH: "c2", AI: "g1@7 ~", AJ: "eb1@8 f1@7 ~", AK: "f1 ~ f1@4 c2@2 f2@2 f1@4 gb1@2",
  AL: "bb1@5 ~ bb1@2 bb1@6 f1@2", AM: "bb1@5 ~ bb1@2 a1@4 f1@4", AN: "g1@4 ~@2 g1@2 d2@6 ~ a1",
  AO: "d1 ~ d1@4 a1@2 d2@4 d1@4", AP: "eb1@4 ~@2 eb1 ~ eb1@5 ~ eb1@2", AQ: "f1@2 bb1 c2 f2@6 f1 bb1 c2@2 f1@2",
  AR: "[g1@5 ~ g1@2 d2@2 a1@2 d1@6 a1@2 d2@2 a1@2 d1@5 ~@2 d1]/2", AS: "g1@6 f1@2 eb1@5 ~ eb1@2",
  AT: "f1@2 bb1 c2 f2@2 f1@6 ~@2 f1@2", AU: "c2@2 ~ c2 eb1@3 f1", AV: "c2 d2@2 c2@2 bb1 a1 f1",
  AW: "c2@2 ~ c2 eb2@2 f1@2", AX: "c2@6 d2@4 c2@2 bb1@2 a1 f1", AY: "g1@5 ~ f1@2 eb1@4 ~@2 eb1@2",
  AZ: "c2@5 ~ c2@2 eb1@4 f1@4", BA: "c2@6 d2@4 c2@2 bb1 a1 f1@2", BB: "c2@3 bb1@2 a1@2 f1, bb1 ~@15", BC: "g1",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@68 A B C D@2 E@2 F@2 G@2 H@2 I J K L M@2 N@4 O@4 P ~>".pickRestart({
  A: "~@15 [d2,eb2,e2,f2,g2,ab2,a2,b2,c3]", B: "[bb2,db3,d3,eb3,e3,f3,gb3,g3,ab3,a3] ~@15, [eb4,g4]",
  C: "bb3@8 a3@7 ~, f4", D: "[d4@8 eb4@8 ~@8 a3@6 ~ [b2,c3,db3], bb3@3 ~, ~@8 f4@7 ~]/2",
  E: "[[eb3,gb3,g3,ab3,a3,db4] bb3 ~@14 c4@8 ~@4 f4 eb4 d4 c4, g4 ~, d4@2 eb4@5 ~]/2", // Ebm7b5
  F: "[d4@8 eb4@19 ~ [f4,g4] f4 eb4 c4, g4@13 ~@3, db4 ~@31]/2", G: "[d4@8 eb4@15 ~ [bb3,eb4]@4 [c4,f4]@4, g4@3 ~]/2",
  H: "[d4@8 eb4@22 [g3,bb3] [d4,g4,bb4], g4@15 ~]/2", // Gm
  I: "[d5,f5]@5 d5 [d5,f5]!6 d5 [bb4,c5] c5 [g4,bb4], [bb4,db5] ~@15", J: "bb4 bb4@11 [g4,c5] bb4 g4 f4, g4@11 ~@5",
  K: "g4@2 bb4 [g4,bb4]!2 [eb4,g4]@9 [d4,f4]@2, bb4 ~@15", // Gm Eb Dm
  L: "eb4@8 ~@2 [eb4,g4] [bb4,c5] eb5 [c5,d5] bb4 [f4,g4], c4@3 ~", // Eb Bbsus2 Csus2 Fsus2
  M: "[[g4,d5] g4 f4 g4 ~ d4@4 [eb4,g4]@18 ~ [f4,g4] f4 eb4 c4, bb4@2 ~@2 f4@5 ~@23]/2", // G5 Eb Fsus2
  N: "[~@8 eb4@15 ~ [bb3,eb4] ~ [bb3,eb4]@2 c4 bb3 c4 ~ d4@8 eb4@20 [c4,f4]@4, d4 ~@7, ~ bb3@15 ~@15 bb3@28 ~@5]/4", // Eb5 F5
  O: "[d4@8 eb4@24 d4@8 eb4@16 d4 c4 bb3@2 f3@2 g3 f3, g4@3 ~]/4", P: "g3",
})).s("gm_drawbar_organ").gain(0.2).pan(0.6)

// chords · drawbar organ · "ORGAN 1" · soft notes
const drawbar_organ_soft = note(`<
  ~@68
  [~@15 gb2]
  ~@3
  [~@14 [db2,d2,eb2,e2,f2,gb2,g2] [ab2,a2,bb2,d3,e3]]
  [f3 ~@15]
  ~@2
  [~@11 eb4 ~@4]
  ~@20
>`).s("gm_drawbar_organ").gain(0.12).pan(0.6)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~ A B ~@2 C D ~@2 E ~@3 F@2 G@2 H@2 I ~ J K L M N O ~@2 P Q ~@2 R S T@2 U B ~@2 V B W B X Y ~ Z AA AB AC AD AE@2 AF AG
  ~@2 AH ~ L M AI@2 AJ@4 ~@2 AK AL AM AN AO AP@3 AQ@3 AR ~ AS@3 AT@2 AU@3 AV AW@3 ~
>`.pickRestart({
  A: "~@13 d4 c4 bb3", B: "c4 ~", C: "~@12 d4 c4 a3@2", D: "c4 d4@5 ~@10", E: "~@6 d4 a3@7 ~@2",
  F: "[~@8 bb3 eb4@6 c4@8 ~@7 bb3 a3]/2", G: "[bb3@5 ~ bb3 a3 g3 f3 g3@22]/2",
  H: "[~@2 bb3 ~ a3 g3 f3@2 g3@4 bb3@2 d4 c4@13 bb3 a3 f3@2]/2", I: "g3", J: "~@12 [d4,g4]@2 [c4,f4] ~",
  K: "[c4,f4] [a3,d4]@4 ~@11", L: "d4 eb4", M: "f4 ~", N: "~@12 f4 e4 d4 e4", O: "a3@5 ~@11", P: "~@12 g4 f4 e4 f4",
  Q: "d4@4 d4 ~@11", R: "~@8 bb3 eb4@5 d4@2", S: "c4@8 ~@6 d4 ~",
  T: "[g4@6 f4@2 d4 c4 bb3 g3@7 f3 bb3 a3@2 f3@4 g3@4 a3@2]/2", U: "bb3@5 a3 g3 f3 g3@6 bb3 d4",
  V: "~@6 g2 bb2 d3 ~ g3 ~ bb3 ~ d4@2", W: "~@3 a3 bb3 a3 g3 bb3", X: "~@3 eb4 d4 c4 bb3 d4", Y: "c4@7 ~@9",
  Z: "[eb3,bb3]@15 ~", AA: "~@4 g3 bb3 d4 f4@6 ~ f4 eb4", AB: "eb4@3 ~", AC: "g4@5 ~ f4 d4 f4 g4@5 g4 a4",
  AD: "g4@6 f4 ~ f4 eb4@3 d4 ~ c4 ~", AE: "[d4 f4 d4@4 c4 d4 f4 g4 f4 d4 c4 bb3@2 g3@13 f3@2 g3 bb3]/2",
  AF: "~ bb3 a3 g3 f3 g3@4 ~@5 g3 d4, g3@3 ~@13", AG: "c4@13 ~@3", AH: "~@10 [c4,f4] ~ [c4,f4] [d4,g4]@2 g4",
  AI: "[~@14 a4@7 g4 f4 g4 f4@6 d4 c4]/2",
  AJ: "[d4@6 g3 ~ d4 f4 ~ g4@6 f4 eb4 d4@2 c4@9 d4@7 ~@9 a4@4 g4@2 f4 g4@7 ~@4, db4 ~@6 bb3@2 ~@55]/4", AK: "g4@15 ~",
  AL: "~ d4", AM: "d4 ~@5 c4 ~ bb3 eb4@5 d4@2", AN: "c4@8 ~@3 [c4,d4] d4 f4 d4 ~",
  AO: "g4@5 f4 d4 bb3 g3 f3 g3@4 bb3 [a3,bb3]", AP: "[f3 g3@10 ~ [g3,eb4] bb3 d4 f4@23 ~@4 d4 f4 d4 c4 bb3 [f3,g3]]/3",
  AQ: "[g3@6 bb3 d4 c4@12 bb3 a3 f3@2 g3@24]/3", AR: "g3 ~@15",
  AS: "[~@10 g3 bb3 d4 f4 g4 c5@7 bb4 [a4,bb4] f4 g4@8 bb3 d4 f4 c5 bb4 g4 f4 bb4@5 a4 f4@2]/3", // Bbmaj7
  AT: "[g4@5 d4 f4 g4@6 d4 f4 g4@3 f4 ~ eb4 d4 c4@3 bb3 a3@2 f3 g3 c4 d4]/2",
  AU: "[c4 bb3@8 a3 f3 g3@16 ~ [g3,eb4] bb3 d4 f4@7 d4 c4 f4@8]/3", AV: "~@2 eb4 ~ eb4 d4 c4 bb3@2 a3@3 f3@4",
  AW: "[g3@26 ~ g3 bb3 d4 f4@13 ~@5]/3",
})).s("gm_distortion_guitar").gain(0.32).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@13 A B C@6 D@2 E@2 F@2 G H F@2 G H I J K L K M@2 N O P G Q O R S@2 K T K U V W V X Y@2 D@2 E@2 Z@2 AA J AB ~ AC AD V
  AE AB ~@23
>`.pickRestart({
  A: "[g2,g3] [eb2,eb3]", B: "[f2,f3]", C: "[g2@23 f2, g3@61 ~@35]/6", D: "[eb2 f2@3]/2", E: "[bb2@3 a2]/2",
  F: "[g2 f2@2 d3]/2", G: "eb3", H: "bb2 a2, f3", I: "g2@7 ~ eb2@8", J: "f2", K: "g2 eb2", L: "c3 eb2",
  M: "[c3@3 d3@4 bb2]/2", N: "g2 f2", O: "g2", P: "f2 bb2", Q: "f3@4 f2@3 gb2", R: "~ bb2", S: "[~@8 eb2@7 ~, eb3]/2",
  T: "c3 eb3", U: "c3", V: "g2 eb3", W: "c3@2 eb2 f2", X: "c3@15 ~", Y: "[d4 c4 bb3 [c3,a3], g2, d3@3 ~]/2",
  Z: "[g2 d3@3]/2", AA: "eb3 eb2", AB: "g2 ~", AC: "eb3@10 [c3,eb3] ~@5", AD: "~ f3@5 f2@2", AE: "f3@5 f2@3",
})).s("gm_string_ensemble_1").gain(0.28)

// other · harmonica
const harmonica = note(`<
  A B@2 C D E@2 F D G@2 F H I J K@5 ~ L@2 C D M@2 F N O@2 F H I P Q@4 ~@20 R@2 C D S@2 T N U@2 T V W X Y@2 Z ~@21
>`.pickRestart({
  A: "~@6 d4 ~ d4@3 eb4@3 f4@2", B: "[g4 f4@3]/2", C: "d4 eb4", D: "f4@11 g4@3 a4@2",
  E: "[bb4@8 a4@16 d4@3 eb4@2 f4@2 ~]/2", F: "g4", G: "[bb4@8 a4@14 d4@2 d4@3 eb4@2 f4@2 ~]/2",
  H: "f4@8 c4@3 d4@3 eb4@2", I: "d4@6 c4@2 bb3 eb4@5 d4@2", J: "c4", K: "[bb3@6 a3@2 g3@57 ~@15]/5",
  L: "[g4@8 f4@14 d4@5 f4@4 ~]/2", M: "[bb4@8 a4@14 d4 ~ d4@3 eb4@3 f4@2]/2", N: "f4@6 g4 a4",
  O: "[bb4@8 a4@14 ~@2 d4@3 eb4@3 f4@2]/2", P: "c4@3 bb3", Q: "[a3 bb3@2 a3 g3@22 ~@6]/4", R: "[[g4,bb4] [f4,a4]@3]/2",
  S: "[[g4,bb4] [f4,a4]@2 [d4,f4]]/2", T: "[eb4,g4]", U: "[[g4,bb4]@4 a4@5 d4@7, ~ f4@3]/2", V: "f4@8 f4@3 g4@3 a4@2",
  W: "[g4,bb4]", X: "f4@10 d4@3 c4@3", Y: "[d4@8 bb3@21 a3@3]/2", Z: "g3@9 ~@7",
})).s("gm_harmonica").gain(0.36).pan(0.7)

// chords · string ensemble 2 · "SLWSTRING"
const string_ensemble_2 = note(`<
  ~ A@4 B@2 C@2 B@2 D@2 E@2 F@6 G@2 H@2 B@2 I@2 B@2 D@2 J@2 K@6 L M I@2 L N@8 O P@3 Q R@4 B@2 S T B@2 U T V T W@6 X@6
  Y@2 Z@2 AA@2 AB@4 AC@2
>`.pickRestart({
  A: "[[g3,bb3,eb4] [a3,c4]@3 d4 eb4 d4 [a3,c4], ~ f4@7, ~@32 bb3@23 ~@9]/4", B: "[[g3,bb3]@8 [f3,a3]@23 ~, d4]/2",
  C: "[[g3,eb4]@16 ~@8 a3@7 ~, bb3@3 ~, ~ [f3,c4]]/2", D: "[bb3@8 ~@8 bb3@8 a3@7 ~, [g3,eb4] f4, ~ c4@3]/2",
  E: "[d4@8 eb4@8 ~@8 a3@7 ~, bb3@23 ~@9, g3@15 ~ [f3,c4]@16]/2", // F5
  F: "[d4@4 ~@4 c4@4 ~@4 d4@4 ~@12 bb3@13 ~@3, g3@15 ~, bb3@2 ~ bb3@3 c4@2 ~@4, ~@4 eb4@12 ~@4 eb4@10 d4@15 ~@3]/6",
  G: "[[g3,bb3,eb4] [a3,c4,f4]@3]/2", H: "[d4 eb4 d4 [a3,c4], f3@31 ~, bb3@23 ~@9]/2",
  I: "[[g3,eb4]@16 ~@8 a3@7 ~, bb3@3 ~, ~ [c4,f4]]/2", // Cm F5
  J: "[[bb3,d4]@8 eb4@8 ~@8 a3@7 ~, g3@15 ~ [c4,f4]@15 ~, ~@8 bb3@15 ~@9]/2", // Bb F5
  K: "[d4@8 ~@8 c4@8 ~@8 d4@8 ~@8 c4@12 ~@4 bb3@23 ~ [f3,a3,c4]@8, g3@29 ~@3, bb3@2 ~ bb3@3 ~@6, ~@2 eb4@6 ~@2 eb4@5 d4@7 ~@2]/6", // F
  L: "[g3,bb3,d4]@15 ~", M: "[a3,c4] [bb3,d4], f4@15 ~",
  N: "[[a3,c4]@8 d4@8 eb4@31 ~ d4@8 ~@8 c4@7 ~@9 d4@8 ~@8 c4@16 d4@8 eb4@8, f3@15 ~ g3@112, ~@8 bb3@56 ~@7 bb3@25 ~@16 bb3@16, ~@7 eb4@3 ~ eb4@3 ~@2]/8", // Am
  O: "c4@2 bb3 [a3,c4,f4]", P: "[d4@2 ~@2 c4@3 ~ bb3@2 [a3,c4]@2, g3@5 ~, bb3 ~@2, ~@2 eb4@5 d4@3 ~@2]/3",
  Q: "[g3,bb3]@8 [f3,a3]@7 ~", // Gm F
  R: "[[g3,bb3,eb4]@8 [a3,c4]@24 d4@7 ~ eb4@7 ~ d4@8 [a3,c4,f4]@8, ~@8 f4@47 ~@9, ~@32 bb3@23 ~@9]/4", // Eb Am F
  S: "[g3,bb3,eb4]@15 ~", T: "bb3@8 a3@7 ~, [c4,f4]", U: "bb3@8 c4@7 ~, [g3,eb4]@15 ~", V: "d4 eb4, [g3,bb3]",
  W: "[d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@4 d4@2 ~@2 c4@2 bb3 [a3,c4,f4], g3@91 ~@5, bb3@2 ~ bb3@3 ~@2 bb3@2 ~@2, ~@2 eb4@6 ~@2 eb4@6 ~@2 eb4@5 ~]/6", // F
  X: "[d4 ~ c4@2 d4 ~ c4 ~ d4 ~ c4@2, g3@95 ~, bb3@2 ~@2 bb3@2 ~ bb3@3 ~@2, ~ eb4@3 ~ eb4@3 ~ eb4@3]/6",
  Y: "[d4@2 ~@2 c4@2 bb3 [a3,c4,f4], g3@27 ~@5, bb3 ~, ~@2 eb4@5 ~]/2", Z: "[[bb3,d4] bb3 c4@2, g3@31 ~, ~ eb4@3]/2",
  AA: "[d4@8 ~@8 c4@8 bb3@7 ~, g3@31 ~, bb3 ~, ~ eb4@3]/2",
  AB: "[d4@8 ~@8 c4@16 d4@8 ~@8 c4@7 ~ [g3,bb3,eb4]@3 ~ [a3,c4,f4]@2 ~@2, g3@55 ~@9, bb3 ~ bb3 ~, ~@8 eb4@24 ~@8 eb4@15 ~@9]/4", // Eb F
  AC: "[[bb3,d4,g4]@9 ~@7]/2", // Gm
})).s("gm_string_ensemble_2").gain(0.24).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~@45 A B C@8 D@4 ~@14 E@6 F@6 G@2 H@8 I ~>".pickRestart({
  A: "[d4,bb4], g3@7 ~", B: "[c4,a4] [d4,bb4], f3@7 ~",
  C: "[eb4@2 ~ [bb4,bb5] [eb5,eb6] [d5,d6] [c5,c6] bb5 eb5@8 ~@8 c5@4 ~@4 d5@4 ~@4 c5@8 d5@4 ~@4 c5@4 [eb4,g4,bb4]@2 [f4,a4,c5]@2, ~@7 bb4@17 ~@4 bb4@12 ~@24, ~@16 g4@103 ~@9, ~@16 g5 ~@23 eb5@24 ~@8 eb5@24 ~@8 eb5@16 ~@8]/8", // Bb Eb D C Eb F
  D: "[d5 ~ c5@2 ~@2 bb4 [f4,a4], g4@55 ~@9, bb4 ~@3, ~@8 eb5@23 ~@33]/4", // F
  E: "[d5@8 ~@8 c5@8 ~@8 d5@8 ~@8 c5@16 d5@8 ~@8 c5@7 ~ [g4,bb4,eb5]@4 [f4,a4,c5]@4, g4@29 ~@3, ~@8 eb5@24 ~@8 eb5@24 ~@8 eb5@15 ~@9, ~@3 bb4@3 ~@2 bb4@2 ~@2]/6", // Eb F
  F: "[d5 ~ c5@2 d5 ~ c5 ~ d5 ~ c5@2, g4@95 ~, bb4@2 ~@2 bb4@2 ~ bb4@3 ~@2, ~ eb5@3 ~ eb5@3 ~ eb5@3]/6",
  G: "[d5@8 ~@8 c5@7 ~ [g4,bb4,eb5]@4 [f4,a4,c5]@4, g4@23 ~@9, bb4 ~, ~@8 eb5@15 ~@9]/2", // Eb F
  H: "[d5@8 ~@8 c5@16 d5@8 ~@8 c5@8 ~@8 d5@8 ~@8 c5@16 d5@8 ~@8 c5@7 ~ [g4,bb4,eb5]@4 [f4,a4,c5]@4, g4@119 ~@9, bb4@2 ~@2 bb4@2 ~ bb4@3 ~@2 bb4@2 ~@2, ~@8 eb5@24 ~@8 eb5@24 ~@8 eb5@24 ~@8 eb5@15 ~@9]/8", // Eb F
  I: "[g4,bb4,d5]", // Gm
})).s("gm_string_ensemble_1").gain(0.16).pan(0.6)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@46 A@2 ~ B ~@3 C ~@3 D ~ E ~@13 C ~@23>".pickRestart({
  A: "[~@15 g3@4 ~@13]/2", B: "d5 ~", C: "bb4", D: "d5 c5", E: "[eb4,g4] ~@3",
})).s("gm_string_ensemble_1").gain(0.12).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@21 A@7 B A@3 B A B A@3 C ~@2 A@3 B A@3 B A@7 C ~@2 A@3 B A@7 B A B A@3 B A@3 B A B A@3 B A B A@4 B A C ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x ~@2 x", C: "x",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<~@21 A@17 ~@3 A@15 ~@3 A@17 B A@3 C A@3 D A@3 E A@3 F A@2 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@2 x!2 ~@2", C: "~@4 x ~@4 x ~@2 x ~@3", D: "~ x ~@2 x ~@5 x ~ x!2 ~@2",
  E: "~@4 x ~@4 x ~@2 x ~ x ~", F: "~@2 x ~@2 x!2 ~",
})).gain(0.3)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@73 [~@3 x]!22 ~@2>").gain(0.4)

// drums · claves
const claves = s("clave:2").struct("<~@74 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2>".pickRestart({
  A: "~@7 x",
})).gain(1.7)

stack(
  bass, drawbar_organ, drawbar_organ_soft, distortion_guitar, string_ensemble_1, harmonica, string_ensemble_2,
  string_ensemble_1_2, string_ensemble_1_soft, kick, rim, hihat, tambourine, claves
)

More by Dire Straits