Strudelify

This Is My Song

Petula Clark

KeyF majorTempo58 bpm
0:00/0:00
// This Is My Song — Petula Clark
// 58 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 6/4 at bar 18, 4/4 at bar 20, 6/4 at bar 50, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 51 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(58/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 · "This Is M"
const piano = note("<A@7 B@6 C@4 D E F G H I J K L M N O D P@2 Q D E F G H I J K L M N O D E R@4>".pickRestart({
  A: "[~@12 f3@4 ~@4 bb3@4 c2@4 c2@4 [c1,c2,f3,bb3]@4 ~ c2@4 ~@16 c2@4 c2@7 ~@17 c2@4 [e3,ab3]@15 ~@14 c4@6 ~ [c3,a3,c4]@11 c3@2 [c3,a3,c4]@14 [d3,a3,d4]@14 [d3,a3,d4]@14 ~@14 d3@14 f3@14 ~@5 bb3@9 ~@9 d4@5 ~@9 [d4,f4]@5 ~@51 d4@4 [f2,g3,a3,c4]@14 f3@3, ~@12 c1@20 ~@5 c1@24 [c1,f3]@29 ~@35 f1@28 ~@55 [g1,d4]@27 ~ c2@28 c2@23 c2@32 ~@17, ~@12 c2@12 ~@17 c2@4 e3@4 c2@8 ~@11 c2@16 ~@5 [c1,c2]@34 ~@118 bb3@10 ~@13 c4@14 c4@13 ~ d4@23 ~@21, ~@12 bb3@8 ~@4 [e3,bb3]@9 ~@4 e3@8 c4@16 ~@147 bb3@19 ~@9 d4@9 ~@5 [c4,e4]@14 e4@27 ~@15 e3@13 ~@17, ~@16 f3@9 ~@12 bb3@16 [e3,bb3]@8 [d3,bb3]@14 [d3,bb3]@15 ~@15 [e3,ab3,d4]@19 ~ g3 ~@54 [e3,a3,c4]@28 ~@14 f3@13 ~ f3@14 ~@23 e3@9 e3@8 ~@2 ab3@18 ab3@9 ~@17]/7", // Fsus4 E F D5 Dm F F5 G5 …
  B: "[~@7 c4@4 c3@14 ~@14 d3@14 ~@37 [e3,e4]@5 ~@14 [f3,bb3]@14 [e3,bb3]@14 [f3,bb3]@13 g3@14 ~@5 c4@9 [f3,bb3]@14 [e3,bb3]@14 ~@9 f3@5 ~@9 c4@5 a2@9 ~@5 c4@9 c4@5 [bb1,bb2,a3,d4]@14 [g1,g2,f3,bb3,d4]@12, ~@2 a3@9 [f1,a3,c4]@28 e3@2 ~@12 d3@14 f1@28 ~@4 g1@24 [c1,c2]@27 [c1,c2,bb3]@28 [c1,c2]@28 f1@28 [a1,f3]@29 ~@25, ~@11 f2@23 f2@28 f2@14 f2@19 g2@9 g2@19 ~@83 g3@5 f2@24 ~@8 a2@19 ~@26, ~@11 f3@19 f3@9 [a3,d4]@28 ~@97 g3@15 ~@27 c4@19 a3@10 ~@53, ~@25 c3@14 f3@19 f3@9 [e3,a3,c4]@14 [d3,a3,d4]@14 [d3,d4]@29 ~@82 a3@14 [f3,g3]@14 [c4,f4]@14 [f4,c5]@15 ~@25]/6", // E Bb5 Edim Bb5 Edim Bbmaj7 Gm7 F …
  C: "[~@2 [c4,e4]@9 ~@16 d4@3 a3@9 ~@4 eb2@5 ~@5 c4@4 ~@5 d4@5 ~@4 d2@5 ~@5 d4@4 [a3,c4]@5 ~@18 f3@4 ~@24 c4@5 e4@14 ~@25 g5@9 ~@3, ~@2 [c2,g3]@28 [f1,f2,c4]@14 ~@4 eb2@10 ~@13 [gb3,c4]@14 ~@5 g3@23 ~@9 bb3@19 [c1,bb3,c4]@48 ~@3, ~@2 c3@14 d4@9 e4@5 ~@11 c4@12 ~@14 d4@14 ~@9 bb3@9 f3@5 bb3@9 ~@5 a3@24 ~@28 c5@19 ~@3, ~@11 c4@19 ~@9 a3@5 ~@13 [d2,gb3]@14 ~@5 d2@9 g2@9 g2@18 ~@15 d4@15 ~@13 [e4,g4]@34 ~@3, ~@11 e4@9 c3@10 ~@13 [eb1,g3]@14 d1@28 g1@28 [c1,c2,e3,g3]@29 ~@50]/4", // C Am C5 F5 Gbdim C7 D Em …
  D: "[a3,c4,f4]@2 [a3,c4,f4]!3 [f1,f2,a3,c4,f4] [a3,c4,f4]!5 [c2,a3,c4,f4], [f1,f2]@5 ~ c2@3 c2@2 ~", // F
  E: "[a3,c4,e4]@2 [a3,c4,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [f1,f2,a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,d4,e4]@2, [f1,f2]@5 ~ c2@3 [c1,c2]@3", // Am Fmaj7 Am F C
  F: "[a3,c4,d4]@2 [a3,c4,d4]!2 [a3,c4,d4]@2 [a3,c4,d4]@2 [a3,c4,d4]@2 [f1,f2,a3,c4,d4]@2 [a3,d4]@2 [a3,d4]!2 [a3,d4]@2 [gb3,a3,d4]@2 [gb3,a3,d4]@2 [gb1,gb2,gb3,a3,d4]@2, [f1,f2]@5 ~ gb1@5 ~, ~@6 gb2@3 gb2@2 ~", // D7 Dm7 D5 D F
  G: "[g3,bb3,d4]@2 [g3,bb3,d4] [bb3,d4] [a3,bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2 [f3,bb3,d4]@2 e3@2 e3@2 [c2,e3,bb3,d4]@2 [e3,bb3,d4]@2 [e3,bb3,d4]@2 [e3,bb3,d4]@2, [g1,g2]@3 [bb3,d4] ~@2, ~@6 g3@10 g3@9 ~@11 [c1,c2]@12, ~@12 a3@13 ~@23", // Gm Bb Bbmaj7 Bb C7 Em7b5 G Bb …
  H: "bb3@2 [e3,bb3,c4]!2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2, [g1,g2,d4]@25 ~@23, e3 ~@23 [c1,c2]@24", // C7 G5 C
  I: "[f3,bb3,d4]@4 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@4 [f3,bb3,d4]@4 [f3,bb3,d4]@4 [f3,bb3,d4]@3 ~ [f3,bb3,d4]@4 [f3,bb3,d4]@4 [f3,bb3,d4]@4 [f3,bb3,d4]@4 [f3,bb3,d4]@4 [f3,bb3,d4]@4, [g1,g2]@23 ~@25", // Bb G
  J: "[e3,bb3,c4]!6 [e3,ab3,c4]!6, ~ c1, ~@2 c2!2", // C7 Eaug
  K: "[e3,a3,c4]@2 [e3,a3,c4]!2 [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [f2,e3,a3,c4]@2 f3@2 [c2,f3]@2 [c1,c2,f3,a3,d4]@2 f3@2 ~@2 a3@2, f1@2 ~ [c1,c2,d4], f2@5 ~ [a3,d4]@2 ~ a3@2 ~, ~@5 f3", // Am Fmaj7 F5 Dm7 Csus2 D5
  L: "f3@3 ~ f3@4 ~@8 c4@4 [a1,a2,g3,c4]@4 ~@4 f3@4 f3@4 f3@4 f3@4 [ab1,ab2,f3]@4, a1@5 ~ [ab1,ab2]@5 ~, a2@2 c4@2 ~@2 b3@3 b3@3, c4 f3@2 ~@3, ~ g3@2 [a2,g3]@2 ~@7", // Am7 Db Ab A7
  M: "f3@2 f3@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [g1,g2,f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]!2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2, [g1,g2]@5 ~ [g1,g2]@6, bb3 ~@5", // Bb Gm7 Bb G
  N: "[e3,bb3,c4]!2 bb3 [d3,f3,bb3]!2 [c1,c2,d3,f3,bb3] [e3,g3,c4]!3 [e3,ab3]!2 [e3,ab3,c4], [c1,c2]@5 ~ [c1,c2]@6, ~@2 [e3,c4]@4 ~@3 c4@2 ~", // C7 Bb C E Eaug C
  O: "a3 [f3,a3,c4]!3 [f3,c4] [f3,g3,c4] [f3,a3,c4]!4 [c1,c2,f3,a3,c4]!2, [f1,f2]@3 [c1,c2]@2 ~, ~@2 a3 ~@3", // F F5 Fsus2 F C
  P: "[[a3,c4,e4]@2 [a3,c4,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [f1,f2,a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 d4@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 f3@2 f3@2 [f3,bb3,d4]@2 [e3,bb3]@4 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2 [e3,bb3,c4]@2, [f1,f2]@5 ~ c2@3 [c1,c2]@9 [c1,c2]@3 [c1,c2]@3, ~@11 [a3,e4]@7 ~@6, ~@11 c4@4 [bb3,d4] c4@2 d4@6, ~@2 [g1,g2] ~]/2", // Am Fmaj7 Am Bb Edim C7 F C …
  Q: "[a3,c4]@4 [a3,c4]@4 [a3,c4,f4]@4 [a3,c4,f4]@4 [a3,c4,f4]@4 [a3,c4,f4]@4 [a3,c4,f4]@4 [a3,c4,f4]@4 [c1,c2,a3,c4,f4]@4 [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [c1,c2,a3,c4,f4]@3 ~, [f1,f2]@20 [f1,f2]@16 [c1,c2]@7 ~@5, f4 ~@2 c2 ~@2", // Am F C
  R: "[f3@4 f3@2 f3@2 ~@2 g1@2 ~@18 c4@6 a3@6 ~@15 [a3,a4]@3 ~@23 f1@3 ~@10, g1@5 ~ [c2,f3,bb3,d4]@12 [f1,c4]@12 [f3,g4,a4]@13 ~@5, [bb3,d4]@12 [bb3,d4]@12 ~@48 f4@30 [f3,f4]@19 ~@27 g3@24 ~@20, ~@16 f3@8 ~@60 a3@24 [g3,g4]@13 ~@15 [c4,f4]@36 ~@20, ~@96 [e3,e4]@25 ~@35 a3@16 ~@20]/4", // A Bb F5 F Bb F G F5 …
})).s("gm_piano").gain(0.28)

// bass · acoustic bass
const bass = note(`<
  A@6 B@4 C D@2 E@4 F G H I J K I L M N O P F G I Q F G H I J K I L M N O P F G R@2 S@2
>`.pickRestart({
  A: "[~@12 c2@18 ~@2 c2@3 ~@2 c2@20 g2@4 c2@27 ~ c2@35 ~ f2@23 c2@4 f2@22 ~@2 c2@4 f2@23 c2@4 ~ g2@21 ~@2 g2@4 ~ c2@23 g2@5 c3@24]/6",
  B: "[~@4 c2@13 ~ c3@13 f2@23 ~ c2@4 f2@22 ~ c2@4 ~ f2@23 c3@3 c2@2 f2@13 ~ a2@9 ab2@4 ~ g2@22 ~ c2@4 ~ g2@21]/4",
  C: "~@2 g2@4 c3@22 ~@2 g2@4 c2@13 ~", D: "[c2@13 ~ f2@27 ~ a1@27 ~ bb1@14 g1@12]/2",
  E: "[~@2 c2@28 f2@13 eb2@14 d2@22 ~@2 gb2@4 g2@21 ~@2 g1@4 ~ c2@27 ~ c2@51]/4", F: "f2@18 ~@2 f2@3 ~ c3@11 ~ c2@12",
  G: "f2@19 ~ f2@4 c3@11 ~ c2@11 ~", H: "f2@16 e2@4 f2@3 ~ gb2@19 ~ d2@4", I: "g2@19 ~ g2@4 c2@10 ~@2 c2@12",
  J: "g2@19 ~ g2@3 ~ c2@11 ~ c2@12", K: "g2@19 ~ g2@4 c2@11 ~ c2@12", L: "f2@19 ~ f2@4 c2@11 ~ c2@8 bb1@3 ~",
  M: "a1@20 a2@3 ~ ab2@18 ~@2 ab2@3 ~, g1 ~@23", N: "g2@19 ~ d2@4 g2@12 g2@11 ~", O: "c2@19 ~ g2@4 c2@19 ~ c2@3 ~",
  P: "f2@19 ~ c2@4 f2@20 c2@3 ~", Q: "f2@19 ~ f2@3 ~ c3@11 ~ c2@7 ~ c2@3 ~", R: "[g2@19 ~ g1@4 c2@47 ~ f2@22 ~@2]/2",
  S: "[c3@2 ~@4 f2@2 ~@4 c3@2 ~@4 c2@3 ~@3 f2@48 ~@24]/2",
})).s("gm_acoustic_bass").gain(0.32)

// chords · epiano2
const epiano2 = note("<A B C ~@14 D E F G H I J K L M N O P Q R S D E F G H I J K L M N O P Q T@2 ~@2>".pickRestart({
  A: "~@12 [bb4,d5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,e5]@2 ~@2 [bb4,e5] ~@3 f5@2 ~@3 [bb4,e5] ~@3 [bb4,e5] ~@3 [bb4,c5,e5] ~@2, ~@12 f5@2 ~@18 bb4 ~@15", // Bb Bbdim C7
  B: "~ [bb4,c5,e5] ~@3 [bb4,c5,e5] ~@3 [bb4,c5,e5] ~@3 [bb4,d5] ~@4 [bb4,d5] ~@4 [bb4,d5] ~@3 [bb4,d5] ~@4 [bb4,d5] ~@4 [bb4,d5] ~@3 [d4,ab4,d5] ~@4 [e4,ab4,d5] ~", // C7 Bb Ddim E7
  C: "~@4 [e4,ab4] ~@4 [e4,ab4,d5]@2 ~@4 [e4,d5]@2 ~@5 [ab4,d5] ~@25, ~@4 d5@2 ~@9 ab4 ~@6 e4@2 ~@24", // E E7 Abdim
  D: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,b4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  E: "[e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3", // Am
  F: "[d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@3", // D5
  G: "[d4,a4,bb4] ~@3 [d4,a4,bb4] ~@3 [d4,a4,bb4] ~@3 [d4,g4,bb4] ~@3 [d4,g4,bb4] ~@3 [d4,f4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3", // Bbmaj7 Gm Bb Edim
  H: "[g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3", // C7
  I: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3", // Bb Edim
  J: "[e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4,c5] ~@3 [e4,bb4,c5] ~@3 [e4,bb4,c5] ~@3 [e4,ab4,c5] ~@3 [e4,ab4,c5] ~@3 [e4,ab4,c5] ~@3 [e4,ab4,c5] ~@3 [e4,ab4,c5] ~@3 [e4,ab4,c5] ~@3", // Edim C7 Eaug
  K: "[e4,a4,c5] ~@3 [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // Am F
  L: "[g4,a4,c5] ~@3 [g4,a4,c5] ~@3 [g4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,b4] ~@3 [f4,b4] ~@3 [f4,b4] ~@3 [f4,b4] ~@3 [f4,b4] ~@3 [f4,b4] ~@3", // Am7 F Fdim
  M: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3", // Bb
  N: "[e4,g4,bb4] ~@3 [e4,g4,bb4] ~@3 [e4,g4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [e4,c5] ~@3 [e4,c5] ~@3 [e4,c5] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3 [e4,bb4] ~@3", // Edim Bb C Edim
  O: "[c4,a4] ~@3 [c4,g4,a4] ~@3 [c4,g4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,g4,a4] ~@3 [c4,g4,a4] ~@3 [c4,g4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3", // F Am7 F Am7 F
  P: "[g4,a4,c5] ~@3 [g4,a4,c5] ~@3 [g4,a4,c5] ~@3 [f4,a4,b4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // Am7 F
  Q: "[e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3", // Am
  R: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,c5] ~@3 [d4,f4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // Bb Dm7 C
  S: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  T: "[[f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5]@47 ~@25]/2", // Bb
})).s("gm_epiano2").gain(0.19)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A@6 B@7 C@4 D E F G H I J@2 K L M N D E O@2 P Q R S T U V W K L M N D E X@2 Y@2
>`.pickRestart({
  A: "[~@12 bb3@4 gb3@4 g3@4 c4@8 d4@4 ~ c4@16 bb3@4 c4@4 bb3@13 ~ bb3@14 ab3@13 ~@3 ab3@18 ~@2 c3@27 d3@27 ~ e3@14 d3@13 ~@29 c2@27 ~ [c2,e3]@24, ~@125 [f2,a3]@55 [f2,a3]@28 bb3@80, ~@26 [g2,f3]@7 ~@3]/6", // C F G7
  B: "[~@4 [c2,e3,ab3]@27 [f2,c3,a3]@28 c3@13 ~ d3@9 e3@4 ~ [f2,d3]@28 e3@13 ~ d3@14 [g2,f3]@27 ~ e3@13 ~ f3@13 [c2,g2,e3]@27 ~ [c2,g2,e3,ab3]@27 ~ [f2,c3,a3]@28 ~@14 f4@14 [c4,e4]@8 ~@6 [g2,bb3]@12, ~@59 a3@55 ~@29 bb3@84 ~@83 f3@26, ~@59 f2@26 ~@30 [f2,a3]@27 ~@29 [c2,g2]@27 ~@84 [a2,f3,c4]@27 ~ bb2@13 ~@13, ~@319 d4@17]/7", // Caug F Dm G7 C F C Gm …
  C: "[~@2 [c3,e3,bb3]@28 [f2,a3]@13 [eb2,g3]@12 ~@2 [d2,gb3,c4]@28 g3@12 ~@2 f3@13 ~ e3@14 f3@8 ~ gb3@5 [c2,g3,c4]@50 ~, ~@2 c4@55 bb3 ~@27 [g2,bb3]@26 ~@2 [g2,bb3]@79, ~@113 c2@27 ~ d4 ~@50]/4", // C7 F Eb D7 C5 Gm
  D: "[c4,a4,f5]", E: "[c4,a4,e5]@47 ~", F: "[c4,a4,d5]@23 ~ [d4,a4,d5]@23 ~", G: "f4@23 ~ e4@24, [bb3,bb4]",
  H: "[bb3,bb4]@36 [d4,d5]@4 [e4,e5]@4 [f4,f5]@3 ~, ~@40 d4 ~@7", // Bb D E F
  I: "d4@12 [bb3,bb4]@12 [f3,f4]@11 ~ [e3,c5]@4 [f3,d5]@4 [g3,e5]@4, d5@3 ~", // Bb F C Dm C
  J: "[e3@24 ab3@23 ~ a3@36 e4@2 f4@2 a4@2 c5@2 e5@2 f5@2, c5@7 ~]/2", K: "g5 f5 e5 c5", L: "bb3@23 ~ d4@24, bb4",
  M: "[e4,c5]@3 [d4,bb4]@3 ~@5 bb4, ~@13 [e4,c5]@11", N: "[c4,a4]@18 e4 f4 g4 a4 c5 ~",
  O: "[[bb3,d5]@23 ~@13 e4@12 [a3,f4]@35 ~ c4@2 e4@2 f4@2 g4@2 a4@2 c5@2, f4@35 ~@61, ~@2 c5@5 ~, ~ bb3 ~@2]/2", // Bb Dm
  P: "f5@36 e5@3 ~ f5@4 g5@3 ~, [c4,a4]@47 ~", Q: "e5@36 d5@3 ~ e5@4 f5@4, [c4,a4]@47 ~",
  R: "[d4,a4,d5]@20 c5@3 ~ [d4,a4]@12 [a3,d4]@8 a4@4, ~@6 d5@5 ~", // D5
  S: "bb3@12 ~@6 gb4 g4 a4 bb4 c5 bb4, d4@23 ~, bb4@3 ~, ~@24 e3@23 ~", T: "e5@36 d5@3 ~ e5@4 f5@4, [bb3,e4]@47 ~",
  U: "d5@36 c5@3 ~ d5@4 e5@3 ~, [bb3,d4]@47 ~", V: "e3@2 ~ d5, c4, c5@3 ~, ~@24 ab3@23 ~",
  W: "e3@23 ~ d3@12 e4@2 f4@2 g4@2 a4@2 c5@2 e5@2, [a3,c5]@37 ~@11", // Am
  X: "[[g3,f4,bb4,d5]@24 [c3,d4,f4,bb4]@47 ~ [f2,a3,f5]@23 ~]/2", // Gm7 Bb F
  Y: "[~ c3@2 ~@3 [f2,c3,f5]@2 ~@4 [f2,c3,g5]@2 ~@4 [f2,c3,a5]@2 ~@5 [f2,c3,a3]@49 ~@22, e5@2 ~@22 c6@49 ~@23]/2", // F5 Fsus2 F
})).s("gm_string_ensemble_1").gain(0.25)

// chords · french horn
const french_horn = note("<A@3 ~@14 B C D E F G H I J K L M B C ~@2 B C D E F G H I J K L M B C N@2 O@2>".pickRestart({
  A: "[~@12 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@4 [bb3,e4]@7 ~ [bb3,d4]@3 ~@2 [bb3,e4]@16 [bb3,d4] ~@3 [bb3,c4]@2 ~@2 [bb3,d4]@12 ~@2 [bb3,d4]@13 ~ [ab3,d4]@15 ~ [ab3,d4]@18 ~@21]/3", // Bb Bbdim Bb Bbdim Bb Bbsus2 Bb Abdim
  B: "c4@12 c5@3 ~ a4@4 g4@4 a4@21 ~@3", C: "~@4 c4@8 c5@3 ~ a4@3 ~ g4@4 a4@22 ~@2",
  D: "~@4 c4@4 d4@4 d4@14 ~@2 d4@4 c4@3 ~ d4@12", E: "~@4 a3@4 bb3@4 g4@3 ~ f4@4 g4@4 e4@18 ~@6",
  F: "~@8 c4@4 c5@12 g4@11 ~ gb4@3 ~ a4@3 ~ g4@4", G: "d4 ~",
  H: "~@4 [bb3,e4] ~@3 [bb3,e4] ~@3 [bb3,e4]@10 ~@6 [ab3,e4] ~@3 [ab3,e4] ~@3 [ab3,e4]@10 ~@2", // Bbdim Dbm
  I: "~@4 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@3 [a3,e4] ~@3 [a3,e4] ~@3 d4@12 c4@11 ~, ~@24 a3@23 ~", // A5
  J: "c4@23 ~ b3@24", K: "bb3 a4 g4 f4", L: "e4@12 d4@11 ~ c4@12 bb3@12", M: "~@4 a3@32 c4@11 ~",
  N: "[d4@24 g3@47 ~ [c3,a3,f4]@23 ~]/2", O: "[~ [a3,e4]@2 ~@3 [a3,f4]@3 ~@4 [a3,g4]@2 ~@3 c4@2 ~@5 [c4,c5]@49 ~@22]/2",
})).s("gm_french_horn").gain(0.19)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<A B C D E F G H I J K L ~@39>".pickRestart({
  A: "~@12 d5!4 bb4!4 d5!4 e5!8 f5!4 ~ e5!11", B: "e5!5 d5!4 e5!4 d5 ~ d5!7 ~ c5!4 d5!2 ~ d5!6 ~ c5!4 d5 ~ d5!4 ~",
  C: "d5!3 ~ c5!4 ~ d5!2 ~ d5 ~ d5!2 ~ d5 ~ d5!2 ~ c5 ~ c5!2 ~ c5 ~@20",
  D: "~@13 g5!3 ~ g5 f5!4 e5!2 ~ e5!2 f5!4 ~ d5!4 c5!2 ~ c5!6 ~ c5!2",
  E: "c5!2 ~@19 g5!4 f5 ~ f5!3 e5!4 ~ f5!4 d5!2 ~ d5!2 bb4!4",
  F: "~ bb4!6 ~ bb4!7 ~ bb4!6 ~ bb4 g4!5 ~ g4!6 ~ g4!7 ~ g4!3",
  G: "g4!3 ~ ab4!6 ~ ab4!6 ~ ab4!7 ~ ab4!5 a4 ~ a4!6 ~ a4!6 ~ a4", H: "a4!6 ~ a4!4 ~@33 g5!4",
  I: "f5 ~ f5!3 e5!3 ~ e5 f5!4 d5!2 ~ d5!2 c5!4 ~ c5!6 ~ c5!2 ~@15",
  J: "~@3 g5 ~ g5!3 f5!3 ~ f5 e5!4 f5 ~ f5!3 d5!4 ~ bb4!6 ~ bb4!6 ~ bb4!6 ~",
  K: "bb4!6 g4 ~ g4!6 ~ g4!6 ~ g4!6 ~ g4!5 ab4!2 ~ ab4!6 ~ ab4!4",
  L: "ab4!2 ~ ab4!6 ~ ab4!4 a4!3 ~ a4!6 ~ a4!6 ~ a4!6 ~ a4!3 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.22)

// other · timpani
const timpani = note("<~@15 A B C ~@2 D E@2 F G H I J K L M N O C ~@2 D E@2 F G H I J K L M P Q R S>".pickRestart({
  A: "~@17 c3 ~@30", B: "~@11 c2!2 ~ c2!2 ~ c2 ~@2 c2!2 ~ c2!3 ~ c2!3 ~ c2!4 ~ c2!4 ~ c2!7", C: "~ f2 ~@46",
  D: "~@39 c2!3 ~ c2!5", E: "g2 ~@23 c2 ~@11 c2 ~@11", F: "g2 ~@23 c2 ~@19 c2 ~@3", G: "f2 ~@36 c2!11",
  H: "~ [g2,a2] ~@22 ab2 ~@23", I: "g2 ~@23 g2 ~@12 g2 ~@10", J: "~ c2 ~@23 c3 ~@22",
  K: "f2 ~@23 c2 ~@11 c2 ~ c2!7 ~ c2!2", L: "~ f2 ~@22 f2 ~@11 c3 ~@11", M: "f2 ~@23 c3 ~@23",
  N: "g2 ~@23 c3 ~@11 c2 ~@11", O: "f2 ~@23 c2 ~@11 c3 ~ c3!9 ~", P: "g2 ~@19 g2 ~@3 c2 ~@12 c2 ~ c2!4 ~ c2!4",
  Q: "c2 ~ c2!7 ~ c2!12 ~ c2 ~ f2 ~@21 f2", R: "~@6 c2 ~@5 f2 ~@5 c2 ~@5 f2 ~ f2!2 ~ f2!6 ~ f2 ~ f2!4 ~ f2 ~ f2!3",
  S: "f2!2 ~ f2!9 ~ f2!4 ~ f2!5 ~ f2 ~@23",
})).s("gm_timpani").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A B C ~@8 D E F G H ~ I J I@3 J I@3 J I@3 J I@3 J I@3 J I@3 J I@3 J@2 K L ~
>`.pickRestart({
  A: "~@12 x ~@7 x ~@11 x ~@4 x ~@10", B: "~@9 x ~@3 x ~@27 x ~@6", C: "~@9 x ~@19 x ~@18", D: "~@7 x",
  E: "~@11 x ~@6 x ~@5", F: "~@2 x ~@27 x ~@12 x ~@4", G: "~@9 x ~@23 x ~@3 x ~@10", H: "~@17 x ~@13 x ~@13 x ~@2",
  I: "x ~@4 x!2 ~@4 x", J: "x ~@4 x!2 ~@5", K: "~ x", L: "x!5 ~@3",
})).gain(0.29)

// drums · snare
const snare = s("sd").struct("<[~ x] [~ x ~@5 x ~@19 x ~@20] ~@15 [~ x ~ x]!30 [~ x ~@2] ~@3>").gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<~@2 A B C D E F G H I J K L M ~@36>".pickRestart({
  A: "~@7 x", B: "~@4 x ~@6 x ~@6 x ~@5", C: "~ x ~@6 x ~@6 x ~@6 x ~", D: "~@5 x ~@6 x ~@6 x ~@4",
  E: "~@4 x ~@13 x ~@12 x ~@16", F: "~@11 x ~@13 x ~@13 x ~@8", G: "~@19 x ~@13 x ~@13 x", H: "~@27 x ~@13 x ~@6",
  I: "~@3 x ~@6 x ~@13", J: "x ~@6 x ~@4", K: "~ x ~@4", L: "~ x ~", M: "~@23 x ~@24",
})).gain(0.19)

// drums · crash
const crash = s("cr").struct("<A B ~@15 C ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C ~ D E F ~>".pickRestart({
  A: "~ x ~@2", B: "~@13 x ~@34", C: "x", D: "x!2", E: "~ x", F: "x!5 ~@3",
})).gain(0.19)

// drums · ride
const ride = s("rd").struct(`<
  A B C ~@3 D ~ E F G H I J K L M N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N O R ~@3
>`.pickRestart({
  A: "~@16 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@2",
  B: "~ x ~@3 x ~@3 x ~@8 x ~@4 x ~@3 x ~@4 x ~@4 x ~@3 x ~@6", C: "~@4 x ~@4 x ~@12 x ~@6 x ~@18", D: "~@15 x",
  E: "~@5 x ~@42", F: "~@13 x ~@34", G: "~@17 x ~@6", H: "~@14 x ~@18 x ~@3 x ~@4 x ~@5", I: "~@17 x ~@4 x ~@13 x ~@11",
  J: "~@2 x ~@22 x ~@4 x ~@12 x ~@4", K: "~@9 x ~@27 x ~@10", L: "~@3 x ~@13 x ~@13 x ~@13 x ~@2",
  M: "~@11 x ~@12 x ~@11 x ~@11", N: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~",
  O: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", P: "x!12", Q: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
  R: "~ x!5 ~@6",
})).gain(0.19)

stack(
  piano, bass, epiano2, string_ensemble_1, french_horn, acoustic_guitar_steel, timpani, kick, snare, hihat, crash, ride
)

More by Petula Clark