Strudelify
Brothers in Arms cover art

Money For Nothing

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 32-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: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERBAS"
const bass = note(`<
  ~@21 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 Z AA AB AC AD AE AF AG AH AI AJ AK ~ AL AM AN AO AP AQ AR AS
  AT@2 AU X AV AW AX AY AZ BA BB BC AX AF BD BE AI BF BG BH BI BJ BK AD BL BM BN BO BP ~
>`.pickRestart({
  A: "eb1@16 f1@11 ~ f1@2 ~@2", B: "f1@3 c2 f2@2 f1@2", C: "bb1@11 ~ bb1@12 f1@8", D: "bb1@15 ~ a1@8 f1@7 ~",
  E: "g1@9 ~@3 g1@4 d2@11 ~ a1@4", F: "d1 ~@3 d1@10 a1@2 d2@2 ~@2 d2@12", G: "eb1@5 ~ bb1@2 eb2@4 eb1@4",
  H: "f1@2 bb1 c2 f2@6 c2@2 f1@4", I: "g1@9 ~@3 g1@4 d2@12 a1@4", J: "d1 ~ d1@5 a1 d2 ~ d2@4 d1@2",
  K: "eb1@11 ~ eb1@4 c2@9 ~@3 c2@4", L: "f1@6 bb1 c2 f2@2 f1@3 ~ f1@2", M: "g1@9 ~@3 f1@4 eb1@10 ~@2 eb1@4",
  N: "f1@11 ~ bb1@2 c2@2 f2@4 f1@7 ~ gb1@4", O: "g1@8 ~@4 g1@2 f1@2 eb1@9 ~@3 eb1@4",
  P: "c2@9 ~@3 c2@4 eb1@9 ~@3 eb1@4", Q: "g1@3 f1 eb1@3 d1", R: "c1@3 d1", S: "g1@13 ~@3", T: "~@6 f1 gb1",
  U: "g1@5 ~ g1@2 bb1@4 d2@4", V: "f1@9 ~@3 f1@4 bb1@8 d2@8", W: "eb2@7 bb1 eb1 ~ eb1@3 ~ eb1@2",
  X: "f1@11 ~ bb1@2 c2@2 f2@4 f1@8 gb1@4", Y: "g1@9 ~@7 bb1@8 d2@8", Z: "f1@9 ~@3 f1@4 bb1@10 ~@2 bb1@4",
  AA: "eb2@8 bb1@5 ~ bb1@2", AB: "eb2@7 bb1 eb1 ~ eb1@4 f1@2", AC: "g1@5 ~ f1@2 eb1@8", AD: "c2@9 ~@3 c2@4 eb2@8 eb1@8",
  AE: "g1@9 ~@3 f1@4 eb1@12 bb1@4", AF: "c2@9 ~@3 c2@8 bb1@4 a1@4 f1@4", AG: "g1@10 ~@2 g1@2 f1@2 eb1@9 ~@3 eb1@4",
  AH: "c2@9 ~@3 c2@4 eb2@4 eb1@4 f1@7 ~", AI: "g1@9 ~@3 g1@4 eb1@9 ~@3 eb1@4", AJ: "c2@31 ~", AK: "g1@7 ~",
  AL: "eb1@16 f1@15 ~", AM: "f1@2 ~@2 f1@7 ~ c2@4 f2@4 f1@8 gb1@4", AN: "bb1@9 ~@3 bb1@3 ~ bb1@11 ~ f1@4",
  AO: "bb1@10 ~@2 bb1@4 a1@8 f1@7 ~", AP: "g1@9 ~@3 g1@4 d2@12 ~@2 a1@2", AQ: "d1 ~ d1@4 a1@2 d2@4 d1@4",
  AR: "eb1@9 ~@3 eb1@2 ~@2 eb1@9 ~@3 eb1@4", AS: "f1@2 bb1 c2 f2@6 f1 bb1 c2@2 f1@2",
  AT: "[g1@9 ~@3 g1@4 d2@4 a1@4 d1@12 a1@4 d2@4 a1@4 d1@11 ~@3 d1@2]/2", AU: "eb1@10 ~@2 eb1@4 c2@9 ~@3 c2@4",
  AV: "g1@6 f1@2 eb1@5 ~ eb1@2", AW: "f1@2 bb1 c2 f2@2 f1@6 ~@2 f1@2", AX: "g1@12 f1@4 eb1@9 ~@3 eb1@4",
  AY: "c2@2 ~ c2 eb1@3 f1", AZ: "g1@9 ~@3 g1@2 f1@2 eb1@10 ~@2 eb1@4", BA: "c2 d2@2 c2@2 bb1 a1 f1",
  BB: "g1@11 ~ f1@4 eb1@9 ~@3 eb1@4", BC: "c2@9 ~@3 c2@4 eb2@8 f1@7 ~", BD: "g1@11 ~ f1@4 eb1@8 ~@4 eb1@4",
  BE: "c2@9 ~@3 c2@4 eb1@11 ~ f1@4", BF: "c2@6 d2@4 c2@2 bb1@2 a1 f1", BG: "g1@9 ~@3 f1@4 eb1@9 ~@3 eb1@4",
  BH: "c2@10 ~@2 c2@3 ~ eb1@8 f1@8", BI: "g1@10 ~@2 f1@4 eb1@9 ~@3 eb1@4", BJ: "c2@6 d2@4 c2@2 bb1 a1 f1@2",
  BK: "g1@5 ~ f1@2 eb1@4 ~@2 eb1@2", BL: "g1@8 ~@4 g1@4 eb1@9 ~@3 eb1@4", BM: "c2@3 bb1@2 a1@2 f1, bb1 ~@31",
  BN: "g1@9 ~@3 g1@2 f1@2 eb1@9 ~@3 eb1@4", BO: "c2@9 ~@3 c2@4 eb1@8 f1@7 ~", BP: "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@6 N@4 O ~>".pickRestart({
  A: "~@29 [d2,f2] [eb2,e2] [ab2,bb2,c3,db3,d3,e3], ~@29 g2@2 ~, ~@15 [a2,b2]", // Dm Emaj7 Bbm7b5 Asus2
  B: "[eb3,f3,gb3,g3,ab3,a3] ~@31, [eb4,g4]", C: "bb3@15 ~ a3@14 ~@2, f4",
  D: "[d4@16 eb4@16 ~@16 a3@12 ~@2 db3 eb3, bb3@24 ~@7 [b2,c3], ~@32 f4@29 ~@3]/2", // Cmaj7
  E: "[[gb3,db4] [ab3,a3,bb3] ~@30 c4@16 ~@8 f4@2 eb4@2 d4@2 c4@2, g4 ~, d4@2 eb4@5 ~, g3 ~@31]/2", // Gb5
  F: "[d4@8 eb4@19 ~ g4 f4 eb4 c4, g4@51 ~@5 f4 ~@7, db4 ~@63]/2", G: "[d4@8 eb4@15 ~ [bb3,eb4]@4 [c4,f4]@4, g4@3 ~]/2",
  H: "[d4@16 eb4@44 ~@2 g4 [bb4,db5], g4@30 [g3,bb3] ~, ~@61 d4@2 ~]/2", // Bbm Gm
  I: "[d5,f5]@10 d5 ~ [d5,f5] d5 [d5,f5] f5 d5 [d5,f5] f5 [d5,f5] d5 f5 d5 f5 ~ c5@2 ~ c5 bb4 ~ g4, bb4 ~@23 d5@2 ~ bb4@2 ~@3", // Dm
  J: "bb4 ~ bb4@21 ~ c5@2 bb4@2 g4@2 f4@2, ~ g4@21 ~ g4@2 ~@7",
  K: "bb4@3 bb4 ~ bb4 [g4,bb4] g4 ~ g4 ~ eb4@17 ~ d4@3, g4@5 ~@3 bb4@2 g4@18 f4@4", // Gm
  L: "eb4@17 ~@3 eb4 [g4,bb4] c5 eb5@2 d5@2 ~ bb4 g4 f4 g4, c4@24 ~@3 c5@2 ~@3", // Gm
  M: "[[bb4,d5]@2 g4@2 f4@2 g4@2 ~ d4@10 [eb4,g4]@37 g4@2 f4@2 eb4@2 ~@18 eb4@29 ~@3 [bb3,eb4] ~@3 [bb3,eb4]@4 c4@2 bb3@2 c4@2 ~@2 d4@16 eb4@40 [c4,f4]@8, ~@8 f4@11 ~@37 f4 ~@5 c4@2 ~@2 bb3@30 ~@30 bb3@56 ~@10, ~@63 d4@17 ~@112]/6", // Bb Eb Eb5 F5
  N: "[d4@8 eb4@24 d4@8 eb4@16 d4 c4 bb3@2 f3@2 g3 f3, g4@3 ~]/4", O: "g3",
})).s("gm_drawbar_organ").gain(0.2).pan(0.6)

// chords · drawbar organ · "ORGAN 1" · soft notes
const drawbar_organ_soft = note("<~@68 A ~@3 B@2 ~@2 C ~@20>".pickRestart({
  A: "~@30 gb2 ~", B: "[~@28 [db2,eb2] [d2,ab2] bb2 [e3,f3]@2 ~@31, ~@14 [e2,f2,gb2] d3 ~@16, ~@29 [g2,a2]@2 ~@33]/2",
  C: "~@23 eb4 ~@8",
})).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@4 H ~ I J K L M N ~@2 O P ~@2 Q R S@2 T B ~@2 U V W V X Y ~ Z AA AB AC AD AE@2 AF AG ~@2
  AH ~ AI AJ AK@2 AL@4 ~@2 AM AN AO AP AQ AR@3 AS@3 AT ~ AU@3 AV@2 AW@3 AX AY@3 ~
>`.pickRestart({
  A: "~@13 d4 c4 bb3", B: "c4@17 ~@15", C: "~@12 d4 c4 a3@2", D: "c4 d4@5 ~@10", E: "~@6 d4 a3@7 ~@2",
  F: "[~@16 bb3@2 eb4@12 c4@17 ~@13 bb3@2 a3@2]/2",
  G: "[bb3@10 ~@2 bb3 ~ a3@2 g3@2 f3@2 g3@45 ~@3 bb3@2 ~@2 a3 ~ g3@2 f3@3 ~ g3@8 bb3@4 d4@2 c4@26 bb3@2 a3@2 f3@4]/4",
  H: "g3", I: "~@24 [d4,g4]@4 [c4,f4] ~@3", J: "[c4,f4]@2 [a3,d4]@7 ~@23", K: "d4 eb4", L: "f4@15 ~@17",
  M: "~@12 f4 e4 d4 e4", N: "a3@11 ~@21", O: "~@12 g4 f4 e4 f4", P: "d4@8 d4 ~@23", Q: "~@16 bb3 ~ eb4@9 ~ d4@4",
  R: "c4@17 ~@11 d4@3 ~", S: "[g4@12 f4@4 d4@2 c4@2 bb3@2 g3@14 f3@2 bb3@2 a3@4 f3@8 g3@7 ~ a3@4]/2",
  T: "bb3@10 a3@2 g3@2 f3@2 g3@11 ~ bb3@2 d4@2", U: "~@12 g2@2 bb2@2 d3 ~@3 g3 ~@3 bb3 ~@3 d4@4", V: "c4@15 ~@17",
  W: "~@3 a3 bb3 a3 g3 bb3", X: "~@3 eb4 d4 c4 bb3 d4", Y: "c4@7 ~@9", Z: "[eb3,bb3]@29 ~@3",
  AA: "~@8 g3@2 bb3@2 d4@2 f4@13 ~ f4@2 eb4 ~", AB: "eb4@23 ~@9", AC: "g4@5 ~ f4 d4 f4 g4@5 g4 a4",
  AD: "g4@12 f4@3 ~ f4@2 eb4@6 d4@3 ~ c4@3 ~", 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: "~@20 [c4,f4] ~@3 [c4,f4]@2 [d4,g4]@4 g4 ~",
  AI: "d4@16 eb4@15 ~", AJ: "f4@17 ~@15", AK: "[~@14 a4@7 g4 f4 g4 f4@6 d4 c4]/2",
  AL: "[d4@12 g3@2 bb3@2 d4@2 f4@3 ~ g4@12 f4@2 eb4@2 d4@4 c4@17 ~ d4@14 ~@18 a4@8 g4@4 f4@2 g4@15 ~@7, db4 ~@127]/4",
  AM: "g4@15 ~", AN: "~ d4", AO: "d4 ~@11 c4@2 ~@2 bb3@2 eb4@10 d4@4",
  AP: "c4@17 ~@5 c4@2 d4@2 f4@2 d4@3 ~, ~@22 d4 ~@9", AQ: "g4@5 f4 d4 bb3 g3 f3 g3@4 bb3 [a3,bb3]",
  AR: "[f3 g3@10 ~ [g3,eb4] bb3 d4 f4@23 ~@4 d4 f4 d4 c4 bb3 [f3,g3]]/3", AS: "[g3@6 bb3 d4 c4@12 bb3 a3 f3@2 g3@24]/3",
  AT: "g3 ~@31", AU: "[~@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",
  AV: "[g4@10 d4@2 f4@2 g4@12 d4@2 f4@2 g4@6 f4@3 ~ eb4@2 d4@2 c4@6 bb3@2 a3@4 f3@2 g3@2 c4 ~ d4@2]/2",
  AW: "[c4@2 bb3@16 a3@2 f3@2 g3@31 ~@3 [g3,eb4]@2 bb3@2 d4@2 f4@14 d4@2 c4@2 f4@16]/3", // Cm
  AX: "~@4 eb4 ~@3 eb4@2 d4@2 c4@2 bb3@4 a3@6 f3@8", AY: "[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 I@2 G J K L M N O P@2 Q R S G T U V W@2 O X O Y Z AA AB AC AD@2 AE@2 AF@2 AG@2 AH AI AJ ~
  AK AL Z AM AN ~@23
>`.pickRestart({
  A: "[g2,g3]@15 ~ [eb2,eb3]@16", B: "[f2,f3]", C: "[g2@23 f2, g3@121 ~@71]/6", D: "[eb2 f2@3]/2", E: "[bb2@3 a2]/2",
  F: "[g2 f2@2 d3]/2", G: "eb3", H: "bb2@15 ~ a2@15 ~, f3", I: "[g2@15 ~ f2@31 ~ d3@15 ~]/2",
  J: "bb2@16 a2@15 ~, f3@31 ~", K: "g2@14 ~@2 eb2@15 ~", L: "f2", M: "g2@16 eb2@15 ~", N: "c3 eb2", O: "g2 eb2",
  P: "[c3@23 ~ d3@31 ~ bb2@8]/2", Q: "g2 f2", R: "g2", S: "f2 bb2", T: "f3@15 ~ f2@12 gb2@4", U: "g2@31 ~", V: "~ bb2",
  W: "[~@32 eb2@29 ~@3, eb3]/2", X: "c3@16 eb3@15 ~", Y: "c3@31 ~", Z: "g2 eb3", AA: "c3@2 eb2 f2",
  AB: "g2@15 ~ eb3@16", AC: "c3@29 ~@3", AD: "[d4@15 ~ c4@16 bb3@16 [c3,a3]@16, g2, d3@47 ~@17]/2",
  AE: "[eb2@15 ~ f2@48]/2", AF: "[bb2@48 a2@15 ~]/2", AG: "[g2 d3@3]/2", AH: "eb3@15 ~ eb2@16", AI: "f2@31 ~",
  AJ: "g2 ~", AK: "eb3@20 [c3,eb3] ~@11", AL: "~@4 f3@20 f2@7 ~", AM: "f3@5 f2@3", AN: "g2@7 ~@9",
})).s("gm_string_ensemble_1").gain(0.28)

// other · harmonica
const harmonica = note(`<
  A@4 B C@3 D E@3 F G H@6 ~ I@2 J B K@2 L M N@2 L F O P@5 ~@20 Q@2 J B R@2 S M T@2 U@2 V W@4 ~@21
>`.pickRestart({
  A: "[~@11 d4@2 ~@3 d4@5 eb4@6 f4@4 g4@17 f4@47 d4@16 eb4@16 ~]/4", B: "f4@11 g4@3 a4@2",
  C: "[bb4@16 a4@32 d4@6 eb4@5 f4@4 g4@33]/3", D: "f4@22 g4@5 a4@4 ~",
  E: "[bb4@15 a4@28 d4@4 ~ d4@5 eb4@5 ~ f4@4 g4@33]/3", F: "f4@16 c4@6 d4@5 eb4@4 ~",
  G: "d4@11 ~ c4@4 bb3@2 eb4@10 d4@4", H: "[c4@31 bb3@12 ~ a3@4 g3@114 ~@30]/6", I: "[g4@16 f4@28 d4@11 f4@9]/2",
  J: "d4 eb4", K: "[bb4@16 a4@28 d4@3 ~ d4@6 eb4@5 f4@4 ~]/2", L: "g4", M: "f4@6 g4 a4",
  N: "[bb4@16 a4@29 ~@3 d4@6 eb4@5 ~ f4@4]/2", O: "d4@11 c4@4 bb3@2 ~ eb4@10 d4@4",
  P: "[c4@24 bb3@7 a3@4 bb3@9 a3@4 g3@89 ~@23]/5", Q: "[[g4,bb4]@15 [f4,a4]@48 ~]/2",
  R: "[[g4,bb4]@15 ~ f4@30 ~ [d4,f4]@16 ~, ~@15 a4@32 ~@17]/2", S: "[eb4,g4]",
  T: "[[g4,bb4]@15 a4@20 ~ d4@27 ~, ~@15 f4@48 ~]/2", U: "[[eb4,g4]@31 f4@17 f4@6 g4@6 a4@4]/2", V: "[g4,bb4]",
  W: "[f4@20 d4@6 c4@5 d4@16 ~ bb3@42 a3@5 g3@17 ~@16]/4",
})).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 D@4 E@2 F@6 G@2 H@4 I@2 J@2 K@2 L@2 M@6 N@2 O@3 P@8 Q R@3 S T@4 U@2 V W X@2 Y Z AA@2 AB@6 AC@6 AD@2 AE@2
  AF@2 AG@4 AH@2
>`.pickRestart({
  A: "[[g3,bb3,eb4]@16 [a3,c4]@48 d4@16 eb4@16 d4@15 ~ [a3,c4]@15 ~, ~ f4@7, ~@64 bb3@47 ~@17]/4", // Eb Am
  B: "[[g3,bb3]@15 ~ [f3,a3]@46 ~@2, d4]/2", C: "[[g3,eb4]@31 ~@17 a3@14 ~@2, bb3@3 ~, ~ [f3,c4]]/2",
  D: "[[g3,bb3]@16 [f3,a3]@45 ~@2 bb3@17 ~@16 bb3@16 a3@15 ~, d4@63 [g3,eb4]@32 ~ f4@31 ~, ~@80 c4@47 ~]/4", // Gm F Cm
  E: "[d4@8 eb4@8 ~@8 a3@7 ~, bb3@23 ~@9, g3@15 ~ [f3,c4]@16]/2", // F5
  F: "[d4@16 ~@16 c4@15 ~@16 d4@17 ~@48 bb3@53 ~@11, g3@179 ~@13, bb3@32 ~@15 bb3@49 c4@32 ~@64, ~@16 eb4@47 ~@17 eb4@40 d4@60 ~@12]/6",
  G: "[[g3,bb3,eb4]@15 ~ [a3,c4,f4]@47 ~]/2", // Eb F
  H: "[d4@15 eb4@16 d4@16 ~ [a3,c4]@15 ~ [g3,bb3]@14 ~@2 [f3,a3]@46 ~@2, f3@31 ~@33, bb3@46 ~@17 d4@64 ~]/4", // Am Gm F
  I: "[[g3,eb4]@16 ~@8 a3@7 ~, bb3@3 ~, ~ [c4,f4]]/2", J: "[[g3,bb3]@15 [f3,a3]@46 ~@3, d4@63 ~]/2",
  K: "[bb3@16 ~@16 bb3@15 ~ a3@15 ~, [g3,eb4]@32 f4@31 ~, ~@16 c4@47 ~]/2", // Cm
  L: "[[bb3,d4]@16 eb4@15 ~@16 a3@14 ~@3, g3@31 ~ [c4,f4]@30 ~@2, ~@16 bb3@31 ~@17]/2", // Bb F5
  M: "[d4@16 ~@16 c4@16 ~@16 d4@16 ~@16 c4@23 ~@9 bb3@46 ~ [f3,a3,c4]@16 ~, g3@29 ~@3, bb3@2 ~ bb3@3 ~@6, ~@16 eb4@47 ~@17 eb4@39 d4@56 ~@17]/6", // F
  N: "[[g3,bb3,d4]@31 ~ a3@13 ~@2 [bb3,d4]@16 ~, ~@31 c4@16 ~@17, ~@16 f4@15 ~]/2", // Gm Bb
  O: "[[g3,eb4]@31 ~@16 a3@15 ~@2 [g3,bb3]@30 ~@2, bb3@47 ~@49, ~@31 [c4,f4]@32 d4@32 ~]/3", // Cm Gm F5
  P: "[[a3,c4]@16 d4@16 eb4@63 d4@16 ~@17 c4@15 ~@16 d4@16 ~@17 c4@31 ~ d4@16 eb4@16, f3@15 ~ g3@112, ~@16 bb3@112 ~@15 bb3@49 ~@32 bb3@32, ~@112 eb4@47 ~@17 eb4@47 ~@33]/8", // Am
  Q: "c4@16 bb3@7 ~ [a3,c4,f4]@8", // F
  R: "[d4@15 ~@17 c4@23 ~@8 bb3@17 [a3,c4]@16, g3@5 ~, bb3 ~@2, ~@15 eb4@40 d4@25 ~@16]/3", // Am
  S: "[g3,bb3]@15 ~ [f3,a3]@14 ~@2", // Gm F
  T: "[[g3,bb3,eb4]@15 ~ [a3,c4]@47 ~ d4@13 ~@2 eb4@15 ~@2 d4@16 [a3,c4,f4]@15 ~, ~@8 f4@47 ~@9, ~@32 bb3@23 ~@9]/4", // Eb Am F
  U: "[[g3,bb3]@8 [f3,a3]@23 ~, d4@63 ~]/2", V: "[g3,bb3,eb4]@31 ~", W: "bb3@8 a3@7 ~, [c4,f4]@31 ~",
  X: "[[g3,bb3]@15 ~ a3@46 ~@2, d4@31 ~, ~@15 f3@46 ~@3]/2", Y: "bb3@16 c4@15 ~, [g3,eb4]@15 ~",
  Z: "bb3@15 ~ a3@14 ~@2, [c4,f4]@31 ~", // F5
  AA: "[d4@15 ~ eb4@15 ~@17 a3@14 ~@2, [g3,bb3]@31 bb3@14 ~@19, ~@16 [c4,f4]@15 ~]/2", // Gm F5
  AB: "[d4@16 ~@16 c4@15 ~@17 d4@16 ~@16 c4@31 d4@17 ~@16 c4@16 bb3@7 ~ [a3,c4,f4]@6 ~@2, g3@91 ~@5, bb3@32 ~@15 bb3@48 ~@32 bb3@33 ~@32, ~@16 eb4@48 ~@16 eb4@47 ~@17 eb4@39 ~@9]/6", // F
  AC: "[d4@16 ~@16 c4@32 d4@16 ~@16 c4@16 ~@16 d4@16 ~@16 c4@31 ~, g3@95 ~, bb3@32 ~@32 bb3@33 ~@15 bb3@48 ~@32, ~@16 eb4@48 ~@16 eb4@48 ~@16 eb4@47 ~]/6",
  AD: "[d4@15 ~@17 c4@16 bb3@7 ~ [a3,c4,f4]@7 ~, g3@27 ~@5, bb3@31 ~@33, ~@15 eb4@39 ~@10]/2", // F
  AE: "[[bb3,d4]@16 bb3@16 c4@31 ~, g3@31 ~, ~ eb4@3]/2", // Bb
  AF: "[d4@8 ~@8 c4@8 bb3@7 ~, g3@31 ~, bb3 ~, ~@16 eb4@47 ~]/2",
  AG: "[d4@16 ~@15 c4@32 ~ d4@16 ~@16 c4@14 ~@2 [g3,bb3,eb4]@7 ~ [a3,c4,f4]@5 ~@3, g3@55 ~@9, bb3 ~ bb3 ~, ~@8 eb4@24 ~@8 eb4@15 ~@9]/4", // Eb F
  AH: "[[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@2 B@8 C@4 ~@14 D@6 E@7 F@8 G H ~>".pickRestart({
  A: "[[d4,bb4]@31 ~ a4@15 bb4@17, g3@29 ~@2 f3@28 ~@5, ~@31 c4@16 d4@14 ~@3]/2", // Gm
  B: "[eb4@8 ~@4 bb5@4 [eb5,eb6]@4 [d5,d6]@4 [c5,c6]@4 bb5@4 eb5@31 ~@33 c5@15 ~@17 d5@16 ~@15 c5@31 ~@2 d5@16 ~@16 c5@16 [eb4,g4,bb4]@8 [f4,a4,c5]@8, ~@11 bb4@4 ~@13 bb4@69 ~@14 bb4@49 ~@96, ~@16 g4@103 ~@9, ~@32 g5@3 ~@45 eb5@48 ~@16 eb5@47 ~@17 eb5@32 ~@16]/8", // Eb D C Eb F
  C: "[d5@16 ~@16 c5@32 ~@32 bb4@15 [f4,a4]@16 ~, g4@55 ~@9, bb4 ~@3, ~@16 eb5@47 ~@65]/4", // F
  D: "[d5@16 ~@16 c5@16 ~@16 d5@15 ~@17 c5@32 d5@15 ~@17 c5@15 [g4,eb5]@8 ~ [f4,a4,c5]@7 ~, g4@29 ~@3, ~@16 eb5@48 ~@15 eb5@49 ~@15 eb5@30 ~@19, ~@48 bb4@48 ~@32 bb4@32 ~@15 bb4@5 ~@12]/6", // Cm F
  E: "[d5@16 ~@15 c5@32 ~ d5@16 ~@16 c5@15 ~@17 d5@16 ~@15 c5@32 d5@17 eb5@16, g4@190 ~ [g4,bb4]@33, bb4@31 ~@33 bb4@32 ~@15 bb4@48 ~@65, ~@16 eb5@48 ~@16 eb5@48 ~@16 eb5@47 ~@33]/7", // Gm
  F: "[c5@15 ~ [g4,bb4]@6 ~@2 [f4,a4,c5]@7 ~@32 c5@33 d5@16 ~@16 c5@16 ~@16 d5@15 ~@16 c5@32 d5@16 eb5@16 c5, ~@16 eb5@8 ~@7 bb4@31 ~@34 bb4@32 ~@16 bb4@48 ~@31 bb4@32 ~, ~@31 d5@17 eb5@49 ~@15 eb5@49 ~@14 eb5@48 ~@33, ~ g4@7]/8", // Gm F
  G: "~@16 [g4,bb4,eb5]@7 ~ [f4,a4,c5]@7 ~", H: "[g4,bb4,d5]",
})).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: "[~@30 g3@9 ~@25]/2", B: "d5 ~", C: "bb4", D: "d5 c5", E: "[eb4,g4]@7 ~@25",
})).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!2 ~@2 x ~@3 x ~@3 x ~ x ~ x ~@3 x ~@3 x ~@3 x ~@3",
  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",
// … 6 more lines

More by Dire Straits