Strudelify

Damned If I Do

Alan Parsons

KeyB♭ majorTempo132 bpm
0:00/0:00
// Damned If I Do — Alan Parsons
// 132 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 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 program 25.
setcpm(132/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 · piano
const piano = note("<~@9 A B@3 ~@102>".pickRestart({
  A: "[g3,bb3,d5,a5]@2 bb5 ~ bb5@2 f5@6 g5@2 d5@2, d4@5 ~ d4@2, ~ d5@2 ~", // Gm
  B: "[~@2 [a4,d5]@4 d4 ~ a4@2 g4@2 ~@2 c4@2 d4@2 c4@2 bb3@2 a3@6 ~@2 [a3,c4]@16 ~@2, ~@2 d4@2 ~@4 d5@17 ~@23, ~@6 f4@7 ~ f3@9 ~]/3", // D5 Am
})).s("gm_piano").gain(0.25)

// bass · fretless bass
const bass = note(`<
  ~ A@2 B C D E F@2 G H I H J K L@2 M@2 L N O@2 P Q R O K S J K L@2 M@2 L N O@2 P Q R O K S R O K S T U V W V U X@2 O@2
  Q@2 O@2 Y Z J K L@2 M@2 L N O@2 P Q R O K S J K L@2 M@2 L N O@2 P Q R O K S AA O AB O AB AC K M@3 AD AE@4 AF@3
>`.pickRestart({
  A: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~", B: "g1@3 ~ g1@3 ~ g1@2 ~@2 g1@3 ~", C: "g1@3 ~ g1@2 ~@2 g1@3 ~ f2@2 g2@2",
  D: "g1@3 ~ g1@2 ~@2 g1@3 ~ g1@2 ~@2", E: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~",
  F: "[g1@2 ~@2 g1@3 ~ c2@2 d2@2 f2@2 g2@15 ~@3]/2", G: "g1@2 d2 ~ g2 ~ d2 ~ f2@2 g2 ~ d2@2 ~@2",
  H: "g1 ~ d2 ~ g2 ~ d2 ~ f2 ~ g2 ~ d2@2 ~@2", I: "g1@2 d2 ~ g2 ~ d2 ~ f2 ~ g2 ~ d2@2 ~@2",
  J: "g1@2 d2@2 g2@2 d2@2 f2 ~ g2 ~ d2@2 ~@2", K: "g1 d2 g2 d2 f2 g2 d2 ~", L: "c2 ~ g2@2 c3@2 g2@2 bb2@2 c3@2 g2@3 ~",
  M: "g1@2 d2@2 g2@2 d2@2 f2@2 g2@2 d2@3 ~", N: "c2 g2 c3 g2 bb2 c3 f2 g2", O: "eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2@3 ~",
  P: "d2@3 ~ d2@4 d2@3 ~ d2@3 ~", Q: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", R: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 ~@2",
  S: "g1 ~ d2@2 g2@2 d2@2 f2@2 g2@2 d2@2 ~@2", T: "g1@4 g2@4 g1@4 g2@3 ~", U: "g1@2 g2@2 g1@2 f2 g2", V: "g1 g2 g1 g2",
  W: "g1@2 g2@2 f2 g2 c2 d2", X: "[g1@4 g2@4 c2@2 d2@2 f2@2 g2@15 ~@3]/2", Y: "d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  Z: "d2 ~@9 f2 ~ f2@2 g2@2", AA: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 c2 d2", AB: "c2@3 ~ c2@3 ~ c2@3 ~ c2 ~ c2 d2",
  AC: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", AD: "g1 d2 g2 d2 f2 g2 d2@2",
  AE: "[g1 d2 g2 d2 f2 g2 d2 g1@2 d2 g2 d2 f2 g2 d2@2]/2", AF: "[g1 d2 g2 d2 f2 g2 d2 g1@2 d2 g2 d2 f2 g2 d2 g1@9]/3",
})).s("gm_fretless_bass").gain(0.44)

// chords · epiano1
const epiano1 = note(`<
  ~ A B C@2 D E F@2 G@3 ~ H@6 I@2 J@2 K@2 L@2 M@2 H@6 I@2 N@2 K@2 L@2 O@4 P@3 B C@2 D E F@2 ~@8 H@6 I@2 Q@2 K@2 L@2 R@2
  H@6 I@2 S@2 K@2 L@2 T@2 U V W@3 X Y@4 Z B C@2 D E F@2
>`.pickRestart({
  A: "[g2,d4] g3 [g2,c4] g3, bb4@7 ~ a4@8", B: "[d4,bb4] ~ [e4,c5] ~ [c4,a4] ~@3 g2@4 g3@4, g2@4 g3@2 [bb3,g4]@7 ~@3",
  C: "[[g2,d4,bb4]@4 [g3,bb4]@4 [c4,a4] ~ [d4,bb4] ~ [e4,c5] ~@3 g2@4 g3@3 ~ g2@2 ~@2 f3@2 g3@2, ~@4 d4 ~@3 g2@4 g3@2 a4@18, ~@7 c4@8 ~]/2", // Gm F Gm C
  D: "[g2,d4]@4 g3@3 ~ g2@4 g3@3 ~, bb4@7 ~ a4@8, ~@4 c4@3 ~", // G5
  E: "[d4,bb4] ~ [e4,c5] ~ [c4,a4] ~@3 g2@3 ~ g3@3 ~, g2@2 g3 [bb3,g4]@5", // Gm C F Eb
  F: "[[g2,d4,bb4]@4 [g3,bb4]@4 [c4,a4] ~ [d4,bb4] ~ [e4,c5] ~ [f4,d5]@16 ~@2, ~@4 d4 ~@3 g2@4 g3@11 ~@9]/2", // Gm F Gm C Dm
  G: "[a5 bb5@2 f5@3 g5 d5@2 a4@2 ~ a4 g4 ~ c4 d4 c4 bb3 a3@3 f3@2, ~@28 f4@9 ~@11]/3",
  H: "[d4@10 ~@2 g4 ~ f4 d4 c4@11 ~@2 a3 ~ c4 ~@11 g4 a4 bb4 c5 d5, bb3@16 eb4@15 ~ d4@14 ~@2, g3@26 ~@6 g3@19 ~@3 g3@35 ~@7, ~@11 d4@2 bb4@17 bb3@15 ~@3]/6",
  I: "[eb4@11 bb3 c4 d4 eb4 f4, g3@7 ~, eb5@21 ~@11, c4@19 ~@13]/2",
  J: "[a3@8 c4@7 ~ d4@8 c4@7 ~, g4@29 ~@3, d4@5 ~@27]/2",
  K: "[[c4,gb4] [bb3,g4] [c4,gb4] bb3, ~@2 d3@5 ~, ~@4 d4@3 ~, ~@12 g4@3 ~]/2", // Cdim Eb Cdim
  L: "[~@4 g3@3 ~ [eb3,bb3]@7 ~, [d4,eb4,g4]@15 ~]/2", // Eb5 Ebmaj7
  M: "[~@3 bb4@2 g4 a4 f4@2 g4 d4 f4 g4 d4 f4 bb3, g3@31 ~, bb3@7 ~, d4@9 ~@7]/2",
  N: "[a3@8 c4@7 ~ d4@8 c4@7 ~, g4@29 ~@3, d4@5 ~@11 a3@4 ~@4 g3@5 ~@3]/2",
  O: "[~@3 bb4@2 g4 a4 f4@2 g4 d4 f4 g4 d4 f4 bb3 ~@4 g3@3 ~ [eb3,bb3]@7 ~, g3@33 ~@31, bb3@7 ~@9, d4@9 ~@7 [d4,eb4,g4]@15 ~]/4", // Eb5 Ebmaj7
  P: "[~@3 bb4@2 g4 a4 f4@2 g4 d4 f4 g4 d4 f4 bb3 [g2,d4]@2 g3@2 [g2,c4]@2 g3@2, g3@11 ~@5, bb3@7 ~@5, d4@18 ~@14 bb4@7 ~ a4@8]/3", // G5 C5
  Q: "[a3@8 c4@7 ~ [a3,d4]@8 c4@7 ~, g4@29 ~@3, d4@5 ~@19 g3@5 ~@3]/2", // D5
  R: "[~@3 bb4@2 g4 a4 f4@2 g4 d4 f4 g4 d4 f4 bb3, g3, bb3@7 ~, d4@9 ~@7]/2",
  S: "[d4@5 ~@3 c4@7 ~ d4@8 c4@7 ~, g4@29 ~@3, ~@16 a3@4 ~@4 g3@5 ~@3]/2",
  T: "[~@3 bb4@2 g4 a4 f4 g4 f4 g4 d4 g4 f4 eb4 d4, [g3,bb3]@29 ~@3, d4@5 ~@3]/2", // Gm
  U: "~@2 eb5 ~ d5 g4 ~ g4, [g3,eb4]@13 ~@3, [c3,c4]@11 ~@5, g4@3 g4@2 ~ [c4,c5]@2", // Cm C
  V: "~@3 g4@3 bb4 g4, [g3,eb4]@15 ~, bb3@12 ~@2 bb3 ~, ~@2 bb4@3 ~@3", // Cm
  W: "[~@2 g4@2 eb5@2 g4@2 d5@2 g4@2 [c4,c5]@2 g4@2 bb3@3 ~ bb3@5 ~@3 c5@4 ~@4 eb5@2 g4 ~ d5@2 g4@2 c5@2 g4@2, [g3,eb4]@14 ~@2 g3@15 ~ g3@14 ~@2, c4@10 ~@4 eb4@33 ~, ~@16 bb4@12 bb3 ~@3 c4@12 ~@2 c4 ~]/3", // C Cm
  X: "~@2 g4 ~ bb4@2 ~@2 g4@4 [bb3,bb4]@2 [eb4,g4] ~, [g3,eb4]@7 ~, bb3@5 ~@3", // Bb Eb Cm
  Y: "[d4@2 ~ bb5@2 g5 a5 ~ g5 d5 f5 ~ d4 ~ d4 c5 [d4,d5] bb4 c5 a4 bb4 g4 a4 f4 g4 d4 f4 d4 c4 bb3 a3 bb3, g3@15 ~, bb3@55 ~@9, ~@4 d4@5 ~@3 d4@10 c5@4 d5@4 ~@6 d4@12 ~@16]/4", // D
  Z: "[g2,d4]@5 ~@3 [g2,c4]@4 g3@4, g3@3 ~, bb4@7 ~ a4@8", // G5 C5
})).s("gm_epiano1").gain(0.33).pan(0.4)

// chords · bandoneon
const bandoneon = note("<~@21 A B C D E F@3 ~@8 A B C G@5 H@3 ~@41 I J K@5 ~@19>".pickRestart({
  A: "[g3,d4]@4 [g3,c4]@3 [g3,c4]", B: "[g3,d4] [g3,d4]@2 [g3,c4]@4 [g3,bb3]",
  C: "[a3,c4]@2 [a3,c4] [g3,bb3] [g3,bb3]@3 ~", D: "[a3,c4]@2 [a3,c4]@4 [g3,bb3]@7 ~@3",
  E: "[bb3,d4]@2 [a3,c4]@2 [g3,bb3]@2 [g3,bb3]@7 ~@3", // Bb Am Gm
  F: "[[c4,eb4] [bb3,d4] [a3,c4] [bb3,d4]@2 [a3,c4] [g3,bb3] [a3,c4]@2 [g3,bb3]@9 ~@6]/3", // Cm Bb Am Bb Am Gm Am Gm
  G: "[[a3,c4]@2 [a3,c4]@4 [g3,bb3]@6 ~@2 [bb3,d4]@4 [a3,c4]@2 [g3,bb3]@2 [g3,bb3]@4 [g3,bb3]@2 [g3,bb3]@2 [c4,eb4]@4 [bb3,d4]@2 [a3,c4]@2 [bb3,d4]@4 [a3,c4]@2 [g3,bb3]@2 [a3,c4]@4 [g3,bb3]@17 ~@7 [bb3,d4]@2 [bb3,d4]@2 [g3,bb3]@2]/5", // Am Gm Bb Am Gm Cm Bb Am …
  H: "[[bb3,d4] [a3,c4] [g3,bb3] [g3,bb3]@2 [g3,bb3]!2 [c4,eb4]@2 [bb3,d4] [a3,c4] [bb3,d4]@2 [a3,c4] [g3,bb3] [a3,c4]@2 [g3,bb3]@7]/3", // Bb Am Gm Cm Bb Am Bb Am …
  I: "[g3,d4] [g3,c4]", J: "[g3,d4]@2 [g3,d4] [g3,c4]@3 ~ [g3,bb3]",
  K: "[[c4,d4]!3 [bb3,d4]@2 [bb3,c4]@2 [a3,c4]@2 [a3,c4] [gb3,bb3] [a3,c4] [g3,bb3]@2 [g3,bb3] [bb3,d4]@2 [a3,c4] [g3,bb3] [g3,bb3]@3 ~ [c4,eb4]@2 [bb3,d4] [a3,c4] [bb3,d4]@2 [a3,c4] [g3,bb3] [a3,c4]@2 [g3,bb3]@7]/5", // Csus2 Bb Bbsus2 Am Gb Am Gm Bb …
})).s("gm_bandoneon").gain(0.09).pan(0.8)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~ A@4 B@4 ~@40 A@4 B@4 ~@8 C@2 D E F@2 G H I J K L M N O@2 P@2 ~@24 A@4 B@4
>`.pickRestart({
  A: "[[d3,g3]@7 ~]/2", B: "[[d3,g3]@29 ~@3]/2", C: "[c4@2 bb3 c4@3 g3 g3@6 ~@2 f4]/2",
  D: "g4@2 g4 ~ g4@2 f4@2 g4 ~ g4@2 g4@2 f4@2", E: "g4@2 bb4@9 ~@3 c5 bb4", F: "[a4@4 g4@2 d5@6 g4@2 f5@15 ~ bb4@2]/2",
  G: "~ d4@2 ~ bb3@2 g3@2 eb4@2 d4@2 c4@2 g3@2, g4 ~@7", H: "c3@13 ~@3", I: "eb3 f3 g3 bb3 d4 b3 c4 d4",
  J: "eb4 f4 g4 a4 bb4 c5 d5 bb4", K: "d5@3 ~ d5@4 c5@3 [c5,d5] bb4@4", L: "a4@2 bb4@2 c5@2 a4@2 bb4 a4 g4 gb4 g4@4",
  M: "bb4 a4 [g4,bb4] d5 [c5,eb5] d5 [c5,eb5] [c5,f5], g4@4 ~@2 g4 ~@9", // Gm Cm F5
  N: "[eb5,g5]@2 f5@2 [eb5,g5]@2 [eb5,a5]@2 [g5,bb5]@2 [gb5,a5]@2 [g5,bb5]@2 [a5,c6] ~", // Eb Ebdim Gm Gbm Gm Am
  O: "[[ab5,c6]@6 ~ bb5@2 g5 d5 bb4 a4 g4 d4 bb3]/2", P: "[g3@29 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.44)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@4 B@2 C@2 D@5 ~@3 E@2 F@5 ~ G ~@2 H@3 ~@2 E@2 I@5 ~ G ~@2 J@2 ~@2 K@5 B@2 C@2 ~@8 L@2 ~@2 E@2 F@5 ~ G ~@2 H@3 ~@2
  E@2 M@5 ~ G ~@2 J@2 N O P O P Q@8 R@2 S@2 ~
>`.pickRestart({
  A: "[~@15 bb3@21 ~@10 d3@17 ~, ~@7 g2@11 ~@14]/4", B: "[~@15 d3@16 ~]/2", C: "[~@7 d3@8 ~]/2",
  D: "[~@15 [g3,d4]@2 ~@3 f4 ~@9 d3@6 ~@10 d3@8 ~@10 c4 ~@15, ~@31 c3@6 ~@3]/5", E: "[~@15 bb3@3 ~@14, ~@7 d3@3 ~@6]/2",
  F: "[~@14 g3@4 ~@13 g3@4 ~@13 g3@12 ~@4 g3@14 ~@2, ~@47 eb3@12 ~@4 eb3@13 ~@4, ~@6 a3 ~@3]/5", G: "~@2 d3 ~",
  H: "[bb3@4 ~@11 d4@4 ~@11 g3@5 ~@13]/3", I: "[~@14 g3@4 ~@13 g3@4 ~@13 a3@8 ~@7 eb3@13 ~@4, ~@47 eb3@12 ~@21]/5",
  J: "[bb3@4 ~@11 d4@4 ~@13]/2", K: "[bb3@4 ~@11 d4@4 ~@12 bb3@21 ~@10 d3@17 ~, ~@15 g2@11 ~@14]/5",
  L: "[~@14 g3@5 ~@13]/2", M: "[~@14 g3@4 ~@13 g3@4 ~@13 g3@12 ~@3 eb3@13 ~@4, ~@47 eb3@12 ~@21, ~@6 bb3 ~@3]/5",
  N: "~@2 c4 eb4 g4 eb4 g4 eb4, ~@2 g3@13 ~", O: "~@2 eb4 g4 bb4 g4 bb4 g4, ~ bb3@7",
  P: "~@2 c4 eb4 g4 eb4 g4 eb4, ~ g3@7",
  Q: "[~@3 eb4@3 g4@2 bb4@4 ~@4 d4@3 ~@12 bb3@3 ~@6 d3 ~@6 d3@8 ~ d3 ~@5 bb3@5 ~@5 d3 ~@6 bb3@21 ~@10 d3@5 ~@13, ~@2 bb3@4 ~@9 g3@7 ~@24 g2@13 ~@69, ~@46 [g3,bb3]@5 ~@77, ~@47 d4@3 ~@78]/8", // Gm
  R: "[~@15 d3@5 ~@12]/2", S: "[~@14 d3@5 ~@13]/2",
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@9 A@2 B@2 ~@8 C@2 D@3 E F@2 ~@8 C@2 G@3 E H I J K H@2 ~@6 L@2 M@8 N@4 O@4 P@4 Q@4 ~ R@3 S@4 T@2 U@3 V W@2 X@6 Y@4
  Z@4 AA@4
>`.pickRestart({
  A: "[~@10 gb6!2 f6!2 e6!2 eb6!2 d6!2 db6!2 c6!2 b5!2 bb5!2 a5!2 ab5!2, g6@15 ~]/2",
  B: "[~@10 gb6!2 f6!2 e6!2 eb6!2 d6!2 db6!2 c6!2 b5!2 bb5!2 a5!2 ab5 ~, g6@31 ~]/2", C: "[bb3@2 a3 g3, eb3]/2",
  D: "[gb3@8 g3@8 gb3@8 ~@8 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 d3, d3@29 ~@19, ~@8 g3@7 ~]/3",
  E: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~", F: "g2/2",
  G: "[gb3@8 g3@8 gb3@8 ~@8 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 d3, d3@29 ~@19, ~@12 g3@11 ~]/3",
  H: "[g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~", // G
  I: "[g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [a2,a3] [bb2,bb3]", // G A Bb
  J: "[c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] [d3,d4]", // C D
  K: "[eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~", // Eb
  L: "[~@30 [g4,a4,bb4] [c5,d5,eb5,f5], ~@7 g3@9]/2", // Gm Dm7
  M: "[~@4 [d5,d6]@4 [c5,c6]@4 [d5,d6]@4 [a3,d4]@8 ~@4 [d5,d6]@4 [c5,c6]@4 [d5,d6] ~@3 [g3,bb3,g4]@8 [a4,a5]@3 bb4 bb5 ~@3 [g3,bb3]@8 ~@4 [d5,d6]@4 [c5,c6]@4 [d5,d6]@4 [a3,d4]@8 ~@4 [a5,a6]@2 [g5,g6] ~ [g5,g6]@15 ~ [gb4,gb6]@4 ~@12, g4@16 ~@3 [bb4,bb5]@5 gb4@3 g4@29 ~@8, eb3@29 ~@3 d3@31 ~ eb3@32 [d3,a3]@19 ~@13, g5@13 ~@3 [g5,g6]@8 g3@8 [a3,gb4]@8 ~@8 [a3,c4]@8 ~@8 [a3,d4]@9 ~@7 [bb5,bb6]@8 g3@8 ~@15 gb5@3 ~@14, [a3,d4]@8 [g3,c4]@8 ~@8 c4@16 ~@14 g5@11 ~@7 [g3,c4]@8 ~@8 c4@27 ~@13]/8", // D C D D5 D C D Gm …
  N: "[[g4,bb4]@11 ~ a4@4 bb3@16 c5@8 a4@8 bb4@8 c5@8, d4@31 ~ [c4,eb4]@32, ~@11 c4@4 ~ g4@47 ~]/4", // Gm Cm
  O: "[[bb3,d4]@2 [c4,a4]@2 [d4,bb4,d5]@2 [c4,c5] bb3 eb5@3 f5 eb5@4, g4@63 ~, ~@28 bb4@35 ~, ~@32 c4@29 ~@3]/4", // Bb F Gm C
  P: "[[a4,d5]@8 [g4,c5]@8 [a4,d5]@8 g4@5 ~@3 gb4@8 [g4,bb4]@8 [gb4,c5]@8 [g4,bb4]@8, eb4@32 d4@31 ~, ~ g5 ~@2, ~@24 c5@17 ~@23]/4", // D5 C5 D5 Gm Gbdim Gm
  Q: "[~@2 [g4,bb4]@2 [g4,bb4]@2 [f4,a4]@2 [g4,bb4]@7 ~@3 c5@2 [a4,c5]@2 [g4,bb4]@2 [f4,a4]@7 ~ [g4,bb4]@32, eb4 ~, ~@18 a4 ~@12 d4@32 ~]/4", // Gm F Gm Am Gm F Gm
  R: "[~@10 [a3,a4]@2 [bb3,bb4]@2 [c4,c5]@10 [bb3,bb4]@2 [c4,c5]@2 [d4,d5]@15 ~ [c4,c5]@2 [bb3,bb4]@2]/3", // A Bb C Bb C D C Bb
  S: "[[g3,g4]@9 ~@3 [a3,a4]!3 a4 a4 ~@7 [f3,f4]@2 [g3,g4]@2 [d3,d4]@2 [c3,c4]@24 ~@2 [bb2,c3,bb3,c4] c4@2 ~@5, ~@15 a3@2 ~@40 c3 ~@6]/4", // G A F G D C Bbsus2
  T: "[[a3,d4,d5]@2 [c4,c5] [d4,d5] [a3,d4]@2 ~ [d4,d5], eb3, ~@8 g3@8 [g4,g5]@13 ~@3, ~@3 g3]/2", // D5 C D D5 D G
  U: "[[c4,c5]@4 [d4,d5]@2 ~@2 [g3,bb3]@7 ~@5 bb4@2 g4@10 c3 ~ c3 ~ c3 ~ [bb3,bb4]@2 c3 ~ c3 ~ [c3,g3,g4] ~ c3 d3, d3@30 ~@8 c3 ~@9, gb3@8 ~@7 [a3,a4]@4 bb3@18 ~@4 [a3,a4]@3 ~@4, ~@6 bb4@9 ~ c4@8 ~@24, ~@8 gb3@3 g3@8 ~@5]/3", // C D Gm Bb C5 A
  V: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ bb4@2 [a3,a4]@2 eb3 ~, ~@6 [c4,c5]@3 bb3@2 ~@5, ~@10 eb3 ~ eb3 ~@3", // A C
  W: "[g2@31 ~]/2",
  X: "[~@4 eb5@2 g4@2 d5@2 g4@2 c5@2 g4 ~@5 g4 ~ c5@4 bb4@2 a4@2 g4@3 ~ g4@2 eb5@2 g4@2 d5@2 g4@2 c5@2 g4@2 ~@4 g4 ~ c5@4 bb4@2 a4@2 g4@2 ~@6 bb5@4 a5@2 g5@2 ~@8 c6@4 bb5@2 a5@4, [g3,eb4], bb3@23 ~]/6", // Cm
  Y: "[~@29 d5 c5 bb4 g4@32, [bb3,d4], g5@31 ~@33]/4", Z: "[d5@15 c5]/4", AA: "[d5@63 ~]/4",
})).s("gm_string_ensemble_1").gain(0.38)

// other · electric guitar muted
const electric_guitar_muted = note("<~@49 A@6 B@2 ~@50 A@6 B@2>".pickRestart({
  A: "g2 ~ g2 ~ g2!5 ~ g2 ~ g2 ~ g2 ~", B: "[g2 ~ g2 ~ g2!5 ~ g2 ~ g2 ~ g2@14 ~@4]/2",
})).s("gm_electric_guitar_muted").gain(0.29)

// other · trumpet
const trumpet = note("<~ A B C@2 D B E@2 ~@40 A B C@2 D B E@2 F@2 G H F I J K ~@42 A B C@2 D B E@2>".pickRestart({
  A: "bb4@6 ~@2 a4@5 ~@3", B: "bb4 ~ c5 ~ a4 ~ g4@7 ~@3", C: "[bb4@2 ~@2 bb4@2 ~@2 a4 ~ bb4 ~ c5 ~ a4@15 ~@3]/2",
  D: "bb4@3 ~ a4@3 ~", E: "[bb4@2 ~@2 bb4@3 ~ a4 ~ bb4 ~ c5 ~ d5@17 ~]/2", F: "d4@4 c4@3 ~", G: "c4@8 bb3@7 ~",
  H: "c4@4 bb3@3 ~", I: "d4@8 c4@5 ~@3", J: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~, [c4,a4]@15 ~",
  K: "[c4,gb4,a4] ~@7", // Gbdim
})).s("gm_trumpet").gain(0.29).pan(0.7)

// other · trumpet
const trumpet_2 = note("<~ A B C@2 D B E@2 ~@40 A B C@2 D B E@2 F G H I F G J K ~@42 A B C@2 D B L@2>".pickRestart({
  A: "bb4@7 ~ a4@5 ~@3", B: "bb4 ~ c5 ~ a4 ~ g4@7 ~@3", C: "[bb4@2 ~@2 bb4@3 ~ a4@2 bb4 ~ c5 ~ a4@15 ~@3]/2",
  D: "bb4@7 ~ a4@6 ~@2", E: "[bb4@3 ~ bb4@3 ~ a4 ~ bb4 ~ c5 ~ d5@15 ~@3]/2", F: "[a3,d4] [g3,c4]",
  G: "[a3,d4]@4 [g3,c4]@3 ~", H: "[gb3,c4] [g3,bb3]", I: "[gb3,c4]@8 g3@7 ~, ~@8 bb3@5 ~@3", J: "[g3,c4]",
  K: "[gb3,c4]@3 ~@13", L: "[bb4@3 ~ bb4@3 ~ a4 ~ bb4 ~ c5 ~ d5@17 ~]/2",
})).s("gm_trumpet").gain(0.29).pan(0.2)

// other · trombone
const trombone = note("<~ A B C@2 D E F@2 ~@40 A B C@2 D E F@2 G@2 H@2 I@2 J K ~@42 A B C@2 D E F@2>".pickRestart({
  A: "g4@6 ~@2 f4@5 ~@3", B: "d4 ~ e4 ~ c4 ~ d4@8 ~@2", C: "[g4@3 ~ g4@2 ~@2 f4 ~ g4 ~ e4 ~ f4@15 ~@3]/2",
  D: "g4@3 ~ f4@3 ~", E: "d4 ~ e4 ~ c4 ~ d4@7 ~@3", F: "[g4@3 ~ g4@3 ~ f4 ~ g4 ~ e4 ~ f4@17 ~]/2", G: "[eb3@15 ~]/2",
  H: "[d3@29 ~@3]/2", I: "[eb3@31 ~]/2", J: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", K: "d3 ~@7",
})).s("gm_trombone").gain(0.25)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A@4 B@2 C@2 D@8 E@6 F G H I J@3 K@6 L@3 F G H I M@3 I N@6 O@2 P@2 ~@8 Q@7 L@3 F G H I J@3 K@6 R@3 F G H I M@3 S T U T
  V W@8 X@2 C@2 ~
>`.pickRestart({
  A: "[~@4 [bb3,d4,g4]@5 ~@3 [d4,g4]@4, ~@15 g3@21 ~@11 [d3,g3,bb3]@17, ~@15 [g2,d3]@14 ~@17 g2@18]/4", // Gm G5 Gm G5
  B: "[~ [d4,g4], ~@7 [g2,d3]@9, ~@15 [g3,bb3]@16 ~]/2", C: "[~@8 [d4,g4]@7 ~, ~@7 g2@8 ~, ~@15 [d3,g3,bb3]@15 ~@2]/2",
  D: "[~@16 d4@2 ~@2 [g3,bb3,bb4,d5]@2 ~@4 [g3,bb3,f4,bb4,d5] ~@5 g4@4 [g3,bb3,d4,f4,bb4,d5]@2 ~@4 [g3,bb3,d4,f4,bb4,d5] ~@4 d4 ~@4 [g3,bb3,d4,f4,bb4,d5]@2 ~@4 [g3,bb3,d4,f4,bb4,d5] ~@9 [f3,a3,c4,a4,c5] ~@5 [f3,a3,c4,a4,c5] ~@5 g4@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@4 [g3,c4], ~@14 [g2,d3]@12 ~@4 g2@12 ~@4 g2@12 ~@3 f2@12 ~@5 g2@11 ~@5 g2@10 ~@24, ~@14 g3@2 g4@12 ~@3 [g3,bb3]@3 ~@13 [g3,bb3]@3 ~@13 [f3,a3,c4]@3 ~@13 [g3,bb3,d4]@3 ~@13 g3@5 ~@11 [g3,c4]@4 ~@13, ~@15 bb3@2 ~@14 d3@11 ~@5 d3@12 ~@4 c3@11 ~@4 d3@6 ~@10 d3@6 ~@10 c3@8 ~@8 c3@2, ~@32 d4 ~@15 g4@11 ~@5 f4@12 ~@19 bb3@3 ~@30]/8", // Gm Gm7 F Gm G5 Gm Eb Cm …
  E: "[[eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 [bb3,d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 g4@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 d5@6 ~@2 [g4,c5]@8, ~@14 g2@7 ~@9 [g2,d3]@6 ~@10 c3@6 ~@10 c3@8 ~@10 eb4@15 ~, ~@15 [d3,g3]@6 ~@10 g3@5 ~@11 [g3,c4]@3 ~@12 g3@4 ~@13 g4@6 ~@11, ~@31 bb3@3 ~@29 [c4,eb4]@3 ~@13 a4@9 ~@8]/6", // Eb Cm Gm G5 Gm Eb Cm C5 …
  F: "[a4,d5]@4 [eb4,g4,c5]@3 ~", G: "[gb4,c5] [g4,bb4], d4@3 ~", H: "[gb4,c5] [g4,bb4], d4@11 ~@5",
  I: "~ bb4, eb3@13 ~@3, ~@2 bb3@11 ~@3, ~ eb4@3, ~@3 g4@5",
  J: "[~@8 bb4@4 ~@4 [d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@4 [g3,bb3,d4], eb3@8 ~@6 g2@7 ~@9 [g2,d3]@7 ~@11, ~@2 bb3@4 g4@6 ~@3 [g3,bb3]@4 ~@12 [g3,bb3]@4 ~@13, ~@4 eb4@8 ~@3 d3@6 ~@25 d3@2]/3", // G5 Gm G5 Gm G5 Gm
  K: "[g4@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 [eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 [bb3,d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@4 [g3,c4], ~@14 g2@10 ~@38 g2@7 ~@9 [g2,d3]@6 ~@12, ~@14 d3@6 ~@10 c3@8 ~@8 c3@7 ~@10 [d3,g3]@6 ~@25 c3@2, ~@15 g3@5 ~@11 [g3,c4]@4 ~@12 [g3,c4]@4 ~@28 g3@5 ~@12, ~@15 bb3@3 ~@61 bb3@3 ~@14]/6", // Gm G5 Gm Eb Cm Eb Cm Gm …
  L: "[[eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 g4@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 d5@6 ~@2 [g4,c5]@8, ~@14 c3@8 ~@10 eb4@15 ~, ~@14 g3@4 ~@13 g4@6 ~@11, ~@15 [c4,eb4]@3 ~@13 a4@9 ~@8]/3", // Eb Cm C5 Cm
  M: "[~@8 bb4@4 ~@4 [d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5, eb3@8 ~@6 g2@7 ~@9 [g2,d3]@7 ~@11, ~@2 bb3@4 g4@6 ~@3 [g3,bb3]@4 ~@12 [g3,bb3]@4 ~@13, ~@4 eb4@8 ~@3 d3@6 ~@27]/3", // G5 Gm G5 Gm G5 Gm
  N: "[~@8 bb4@4 ~@4 [d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [bb3,d4,g4]@20 ~@12 [d4,g4]@16, eb3@8 ~@6 g2@7 ~@9 [g2,d3]@7 ~@10 [g2,d3,g3]@5 ~@26 g2@18, ~@2 bb3@4 g4@6 ~@3 [g3,bb3]@4 ~@12 [g3,bb3]@4 ~@44 bb3@16 ~, ~@4 eb4@8 ~@3 d3@6 ~@58 [d3,g3]@5 ~@12]/6", // G5 Gm G5 Gm G5 Gm G5
  O: "[~ [d4,g4], ~@7 g2@9, ~@14 d3@5 ~@13, ~@15 bb3@16 ~, ~@15 g3@5 ~@12]/2", // G5
  P: "[~@8 [d4,g4]@7 ~, ~@7 g2@8 ~, ~@15 bb3@15 ~@2, ~@15 [d3,g3]@5 ~@12]/2", // G5
  Q: "[~@10 [a3,c4,f4]@2 [a3,c4,f4]@2 ~@2 g4@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 [eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 [bb3,d4,g4]@3 ~ [g3,bb3,d4,g4]@2 ~@4 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@4 [g3,c4], ~@14 d3@6 ~@10 g2@10 ~@38 g2@7 ~@9 [g2,d3]@6 ~@12, ~@15 [g3,bb3,d4]@3 ~@12 d3@6 ~@10 c3@8 ~@8 c3@7 ~@10 [d3,g3]@6 ~@25 c3@2, ~@31 g3@5 ~@11 [g3,c4]@4 ~@12 [g3,c4]@4 ~@28 g3@5 ~@12, ~@31 bb3@3 ~@61 bb3@3 ~@14]/7", // F Gm G5 Gm Eb Cm Eb Cm …
  R: "[[eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 g4@3 ~ [g3,c4,eb4,g4] ~@5 [g3,c4,eb4,g4] ~@5 d5@6 ~@2 [g4,c5]@8, ~@14 c3@8 ~@10 eb4@15 ~, ~@14 g3@4 ~@13 g4@6 ~@11, ~@15 [c4,eb4]@3 ~@13 bb4@9 ~@8]/3", // Eb Cm C5 Cm
  S: "~@3 c4 eb4 c4 eb4 c4, c3@11 ~@5, ~ eb3@5 ~@2, ~@4 g3@9 ~@3", T: "~ g3 ~ eb4 g4 eb4 g4 eb4, eb3@3 ~, ~ bb3@3",
  U: "~@3 c4 eb4 c4 eb4 c4, c3 ~, ~ eb3@3 ~@4, ~ g3@2 ~", V: "~ eb3 ~ c4 eb4 c4 eb4 c4, c3 ~, ~ g3@3",
  W: "[~@2 g3@2 bb3@2 eb4@2 g4@4 ~@4 g4@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [bb3,d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [d4,g4]@3 ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@5 [bb3,d4,g4]@20 ~@12 [d4,g4]@16, eb3@9 ~@5 [g2,d3]@8 ~@8 g2@6 ~@9 g2@7 ~@10 g2@7 ~@10 [g2,d3]@3 ~@28 g2@18, ~@14 g3@5 ~@12 d3@6 ~@9 d3@6 ~@11 d3@6 ~@42 [d3,g3,bb3]@17, ~@15 [bb3,d4]@3 ~@13 g3@4 ~@12 [g3,bb3]@4 ~@12 [g3,bb3]@4 ~@12 g3@21 ~@28]/8", // Gm G5 Gm G5 Gm G5 Gm Bb …
  X: "[~ [d4,g4], ~@14 d3@7 ~@11, ~@14 g2@5 ~@13, ~@15 [g3,bb3]@16 ~]/2", // G5 Gm
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@3 B A@2 C D A@3 B A@3 B A@3 B A@7 B A@3 B A@3 B A@7 B A@3 B A@3 B A@2 C ~ A@6 ~ E A@3 B A@3 B A@7 B A@3 B A@3 B
  A@7 B A@4 E ~ A@3 B A@3 B A@2 C ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~@2", C: "x ~@3 x ~@2 x", D: "~@5 x ~@2", E: "x",
// … 45 more lines

More by Alan Parsons