Strudelify

What If a Day

Thomas Campion

KeyG majorTempo115 bpm
0:00/0:00
// What If a Day — Thomas Campion
// 115 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 7 "Basson" named as a bass, played on electric bass finger (its bassoon patch is not one)
// note: duplicate parts dropped: ch 11 "Flute" flute (copy of ch 1 "Trumpet" trumpet)
// note: Full arrangement: all 58 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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 · trumpet
const trumpet = note("<A@4 B@3 C@6 D E F G H I J K L M N O P Q R S@8 T@2 U@3 V@7 W@4 X@5 Y>".pickRestart({
  A: "[~@22 e5@6 d#5@3 e5@3 [d#5,f#5]@6 e5@3 f#5@3 [e5,g5]@6 f#5@3 e5@3 [d#5,f#5]@12 [e5,g5]@6 f#5@3 g5@3 [d5,f#5,a5]@6 g5@3 a5@3 [d5,g5,c6]@2]/4", // D#m Em D#m Em D Csus2
  B: "[~ b5@3 a5@3 g5@3 [d5,f#5,a5]@6 a5@4 a5 ~ [d#5,a5]@6 [e5,g5]@6 [e5,f#5]@6 [d5,f#5]@6 e5@12 e5@12 ~ e5, ~@8 e5@3 ~@25]/3", // D D#dim Em Esus2 D
  C: "[~@5 d#5@3 e5@3 [d#5,f#5]@6 e5@3 f#5@3 [e5,g5]@6 f#5@3 e5@3 [d#5,f#5]@12 [e5,g5]@6 f#5@3 g5@3 [d5,f#5,a5]@6 g5@3 a5@3 [d5,g5,c6]@3 b5@3 a5@3 g5@3 [d5,f#5,a5]@6 a5@4 a5 ~ [d#5,a5]@6 [e5,g5]@6 [e5,f#5]@6 [d5,f#5]@6 e5@12 e5@12 ~, ~@89 e5@6 ~@49]/6", // D#m Em D#m Em D Csus2 D D#dim …
  D: "b5@3 b5 a5@2 f#5@2, d5!2", E: "g5@2 f#5 e5 [d5,f#5]@4, b4 ~", F: "b5@3 c6 [g5,d6]@2 [g5,e6]@2, d5 ~",
  G: "g5 f#5 [g5,b5]@2, c6 ~", H: "b5@3 b5 [c5,a5]@2 [d#5,f#5]@2, g5 ~", I: "g5@2 f#5 e5 [d#5,f#5]@4",
  J: "b5@3 c6 d6@2 e6@2, e5", K: "[e5,a5,c6] [d#5,f#5,b5]", L: "g5@3 a5 [d#5,b5]@4, e5 ~", M: "f#5@3 g5 [c#5,a5]@4",
  N: "e5@3 f#5 [b4,g5]@2 [c5,f#5] e5, c5 ~", O: "e5@6 d#5@6 ~ e5@11", P: "~ [b4,e5,g5]@9 a5@3 [b4,d#5,f#5,b5]@11",
  Q: "~ [a4,d5,f#5]@9 g5@3 [a4,c#5,e5,a5]@11", R: "~ [c5,e5]@9 f#5@3 [b4,d5,g5]@6 [c5,f#5]@3 e5@2",
  S: "[~ e5@6 d#5@6 ~ e5@12 e5@6 d#5@3 e5@3 [d#5,f#5]@6 e5@3 f#5@3 [e5,g5]@6 f#5@3 e5@3 [d#5,f#5]@12 [e5,g5]@6 f#5@3 g5@3 [d5,f#5,a5]@6 g5@3 a5@3 [d5,g5,c6]@3 b5@3 a5@3 g5@3 [d5,f#5,a5]@6 e5@5 a5 [d#5,a5]@6 [e5,g5]@6 [e5,f#5]@6 [d5,f#5]@6 e5@12 ~ e5@12 e5@6 d#5@3 e5@3 [d#5,f#5]@6 e5@3, ~@29 a5 ~@18]/8", // D#m Em D#m Em D Csus2 D D#dim …
  T: "[f#5 [e5,g5]@2 f#5 e5 [d#5,f#5]@4 [e5,g5]@2 f#5 g5 [d5,f#5,a5]@2 g5]/2", // Em D#m Em D
  U: "[a5@3 [d5,g5,c6]@3 b5@3 a5@3 g5@3 [d5,f#5,a5]@6 e5@5 a5 [d#5,a5]@6 [e5,g5]@6 [e5,f#5]@6 [d5,f#5]@6 e5@12 ~ e5@8, ~@21 a5@4 ~@47]/3", // Csus2 D D#dim Em Esus2 D
  V: "[~@4 b5@9 b5@3 a5@6 f#5@6 g5@6 f#5@3 e5@3 [d5,f#5]@12 b5@9 c6@3 [g5,d6]@6 [g5,e6]@6 g5@6 f#5@6 [g5,b5]@12 b5@9 b5@3 [c5,a5]@6 [d#5,f#5]@6 g5@6 f#5@3 e5@3 [d#5,f#5]@12 b5@9 c6@3 d6@6 e6@2, ~ d5@3 d5@3 b4@3 ~@3 d5@3 ~@3 c6@3 ~@3 g5@3 ~@9 e5@5]/7", // D G5 C G F D#m
  W: "[~@4 [e5,a5,c6]@12 ~ [d#5,f#5,b5]@12 g5@9 a5@3 [d#5,b5]@12 f#5@9 g5@3 [c#5,a5]@12 e5@9 f#5@3 [b4,g5]@6 [c5,f#5], ~@29 e5@12 ~@36 c5@12 ~@7]/4", // Am B G#m F#m Em Cdim
  X: "[~@2 e5@3 e5@6 ~ d#5@6 e5@12 [b4,e5,g5]@9 ~ a5@3 [b4,d#5,f#5,b5]@12 ~ [a4,d5,f#5]@9 g5@3 [a4,c#5,e5,a5]@12 ~ [c5,e5]@9 f#5@3 [b4,d5,g5]@6 ~ [c5,f#5,f#6]@3 [e5,e6]@3 [e5,e6]@6 [d#5,d#6]@8]/5", // Em B D A C G Cdim E …
  Y: "~ e5@18 ~@5, e6@3 ~",
})).s("gm_trumpet").gain(0.53).pan(0.7)

// chords · harpsichord · "Harpsichord/Organ"
const harpsichord = note("<A@4 B@6 C@3 D E F G H I J K L M N O P Q R S@8 T@2 U V@6 W@7 X@2 ~@4>".pickRestart({
  A: "[~@22 [g2,b2,e5]@6 d#5@3 e5@3 [b2,d#3,f#5]@6 e5@3 f#5@3 [b2,e5,g5]@6 f#5@3 e5@3 [b2,b4,d#5,f#5]@12 [b4,e5,g5]@6 f#5@3 g5@3 [d5,f#5,a5]@6 g5@3 a5@3 [g2,d5,g5,c6]@2, ~@11 e2@6 b1@6 e2@6 ~@6 e3@6 d3@6 ~]/4", // Em B Em B Em D Gsus4
  B: "[~ b5@3 a5@3 g5@3 [d3,d5,f#5,a5]@6 a5@4 a5 ~ [d#5,a5]@6 [e5,g5]@6 [b2,e5,f#5]@6 [b2,d5,f#5]@6 e5@12 e5@12 ~ [g3,b3]@6 ~@6 [b3,d#4]@6 ~@6 [b3,e4]@6 ~@6 [b2,b3,d#4]@12 [b3,e4]@6 ~@6 [d4,f#4]@6 ~@6 [g2,d4,g4], ~@16 [c3,e5]@6 b2@12 ~@12 e3@25 e3@12 b2@12 e2@12 ~@12 e3@12 d3@12 ~]/6", // D D#dim Em Bsus4 Bm G B E5 …
  C: "[~@11 [d3,d4,f#4]@6 [c3,e4]@6 d#4@6 e4@6 [b2,e4]@6 [b2,d4]@6 [e2,e4]@25, ~@23 b2@12 ~@37]/3", // D C E5 Bm E
  D: "b4@3 b4 [f#3,a4]@2 [d3,f#4]@2, [g3,d4] d4", E: "g4@2 f#4 e4 [d3,d4,f#4]@4, [e3,b3] ~",
  F: "b4@3 c5 [b2,g4,d5]@2 [c3,g4,e5]@2, [g3,d4] ~", G: "[a2,g4] [d3,f#4] g2 f#2, c5 [g3,b4]",
  H: "[e2,g3]@2 [a2,c4] [b2,d#4]", I: "e3@2 b2 a2, ~ d#4", J: "[g#2,e4]", K: "a2 f#2 [b2,d#4,f#4]@2, [e4,a4] ~",
  L: "g4@3 a4 [b2,d#4,b4]@4, [e3,e4] ~", M: "f#4@3 g4 [a2,c#4,a4]@4, d3 ~",
  N: "e4@3 f#4 [g2,b3,g4]@2 [c4,f#4] e4, [c3,c4]@2 ~ a2", O: "e4@6 d#4@6 c3@6 ~ b2@3 a2@2, [b2,f#3] [a3,e4]",
  P: "~ [b3,e4,g4]@9 a4@3 [b1,b2,b3,d#4,f#4,b4]@11, ~ [e2,e3]@12 ~@11", // Em B E
  Q: "~ [a3,d4,f#4]@9 g4@3 [a1,a2,a3,c#4,e4,a4]@11, ~ [d2,d3]@12 ~@11", // D A D
  R: "~ [c4,e4]@9 f#4@3 [g1,g2,b3,d4,g4]@6 [c4,f#4]@3 e4@2, ~ [c2,c3]@12 ~@6 [a1,a2]@5, ~ g3@6 ~@17", // C G Cdim C A
  S: "[~ [b1,b2,f#3,b3,e4]@6 [b1,b2,f#3,b3,d#4]@6 ~ [e2,g3,b3,e4]@12 [g2,b2,e4]@6 d#4@3 e4@3 [b2,d#3,f#4]@6 e4@3 f#4@3 [b3,e4,g4]@6 f#4@3 e4@3 [b2,b3,d#4,f#4]@12 [b3,e4,g4]@6 f#4@3 g4@3 [d4,f#4,a4]@6 g4@3 a4@3 [d4,g4,c5]@3 b4@3 a4@3 g4@3 [d3,d4,f#4,a4]@6 [c3,e4]@5 a4 [d#4,a4]@6 [e4,g4]@6 [b2,e3,f#4]@6 [b2,d4,f#4]@6 e4@12 ~ e4@12 [g3,b3]@6 ~@6 [b3,d#4]@6 ~@3, ~@26 e2@12 b1@12 e2@12 ~@12 e3@12 d3@12 g2@12 ~@6 a4@4 ~@2 b2@12 ~@12 e3@25 e3@12 b2@9]/8", // Bsus4 B Em B Em B Em D …
  T: "[~ [b3,e4]@2 ~@2 [b2,b3,d#4]@4 [b3,e4]@2 ~@2 [d4,f#4]@2 ~, ~ e2@4 ~@4 e3@4 d3@3]/2", // E5 B E5 D
  U: "~ [d4,g4] ~@3 [d3,d4,f#4]@2 [c3,e4], ~ g2@4 ~@3", // G5 D C
  V: "[~@3 [d#4,a4]@6 [e4,g4]@6 [b2,e3,f#4]@6 [b2,d4,f#4]@6 e4@12 ~ e4@12 [g3,d4]@12 f#3@6 d3@6 [e3,b3]@12 [d3,d4]@12 [g3,d4]@12 [b2,g4]@6 [c3,g4]@6 [a2,g4]@6 [d3,f#4]@6 g2@6 f#2@2, ~@3 b2@12 ~@12 e3@25 ~@12 d4@12 ~@60 g4@8]/6", // D#dim Em Bsus4 Bm G5 E5 D G5 …
  W: "[~@4 b4@9 b4@3 [a2,c4,a4]@6 [b2,d#4,f#4]@6 g4@6 f#4@3 e4@3 b2@6 a2@6 b4@9 c5@3 d5@6 e5@6 a2@6 ~ f#2@6 [b2,d#4,f#4,b4]@12 g4@9 a4@3 [b2,d#4,b4]@12 f#4@9 g4@3 [a2,c#4,a4]@12 e4@9 f#4@3 [g2,b3,g4]@6 [a2,c4,f#4], ~@4 [e2,g4]@12 ~@12 e3@12 [d#4,f#4]@12 [g#2,e4]@24 [e4,a4,c5]@12 ~@13 [e3,e4]@12 ~@12 d3@12 ~@12 [c3,c4]@12 ~@7]/7", // Am B A G F#dim Em D#m C#m …
  X: "[~@2 e4@3 e4@6 ~ d#4@6 c3@6 b2@3 a2@3 ~@18, ~@5 [b2,f#3]@12 ~ [a3,e4]@12 ~@18]/2", // B5 A5
})).s("gm_harpsichord").gain(0.56).pan(0.3)

// chords · church organ · "Harpsichord/Organ"
const church_organ = note("<~@53 A@4 B>".pickRestart({
  A: "[~@6 [b3,e4,g4]@9 ~ a4@3 [b1,b2,b3,d#4,f#4,b4]@12 ~ [a3,d4,f#4]@9 g4@3 [a1,a2,a3,c#4,e4,a4]@12 ~ [c4,e4]@9 f#4@3 [g1,g2,b3,d4,g4]@6 ~ [c4,f#4]@3 e4@3 [b1,b2,f#3,b3,e4]@6 [b1,b2,f#3,b3,d#4]@8, ~@6 [e2,e3]@12 ~@14 [d2,d3]@12 ~@13 [c2,c3]@12 ~@7 [a1,a2]@6 ~@14, ~@19 g3@2 ~@11]/4", // Em B D A C G Cdim Bsus4 …
  B: "~ [e2,g3,b3,e4]@18 ~@5", // Em
})).s("gm_church_organ").gain(0.72).pan(0.3)

// other · clarinet
const clarinet = note("<A@4 B@6 C@3 D E F G D E F G H I J K L M N O@5 P@3 Q@2 R S T@8 U@4 V@5 W>".pickRestart({
  A: "[~@22 e4@6 d#4@3 e4@3 f#4@6 e4@3 f#4@3 g4@6 f#4@3 e4@3 f#4@12 g4@6 f#4@3 g4@3 a4@6 g4@3 a4@3 c5@2]/4",
  B: "[~ b4@3 a4@3 g4@3 a4@6 a4@4 a4 ~ a4@6 g4@6 f#4@6 f#4@6 e4@12 e4@12 ~ e4@6 d#4@3 e4@3 f#4@6 e4@3 f#4@3 g4@6 f#4@3 e4@3 f#4@12 g4@6 f#4@3 g4@3 a4@6 g4@3 a4@3 c5]/6",
  C: "[~@2 b4@3 a4@3 g4@3 a4@6 a4@4 a4 ~ a4@6 g4@6 f#4@6 f#4@6 e4@12 e4@12 ~]/3", D: "b4@3 b4 a4@2 f#4@2",
  E: "g4@2 f#4 e4 f#4@4", F: "b4@3 c5 d5@2 e5@2", G: "c5 b4", H: "g4@3 a4 b4@4", I: "f#4@3 g4 a4@4",
  J: "e4@3 f#4 g4@2 f#4 e4", K: "e4 d#4 e4@2", L: "~ g4@9 a4@3 b4@11", M: "~ f#4@9 g4@3 a4@11",
  N: "~ e4@9 f#4@3 g4@6 f#4@3 e4@2",
  O: "[~ e4@6 d#4@6 ~ e4@12 e4@6 d#4@3 e4@3 f#4@6 e4@3 f#4@3 g4@6 f#4@3 e4@3 f#4@12 g4@6 f#4@3 g4@3 a4@6 g4@3 a4@3 c5@3 b4@3 a4@3 g4@3 a4@6 a4@4]/5",
  P: "[~ a4 a4@6 g4@6 f#4@6 f#4@6 e4@12 ~ e4@12 e4@6 d#4@3 e4@3 f#4@6 e4@3]/3",
  Q: "[f#4 g4@2 f#4 e4 f#4@4 g4@2 f#4 g4 a4@2 g4]/2", R: "a4 c5 b4 a4 g4 a4@2 a4", S: "~@2 a4 a4@6 g4@6 f#4@6 f#4@3",
  T: "[~@3 e4@12 ~ e4@12 b4@9 b4@3 a4@6 f#4@6 g4@6 f#4@3 e4@3 f#4@12 b4@9 c5@3 d5@6 e5@6 c5@12 b4@12 b4@9 b4@3 a4@6 f#4@6 g4@6 f#4@3 e4@3 f#4@12 b4@9 c5@3 d5@6 e5@2]/8",
  U: "[~@4 c5@12 ~ b4@12 g4@9 a4@3 b4@12 f#4@9 g4@3 a4@12 e4@9 f#4@3 g4@6 f#4]/4",
  V: "[~@2 e4@3 e4@6 ~ d#4@6 e4@12 g4@9 ~ a4@3 b4@12 ~ f#4@9 g4@3 a4@12 ~ e4@9 f#4@3 g4@6 ~ f#4@3 e4@3 e4@6 d#4@8]/5",
  W: "~ e4@18 ~@5",
})).s("gm_clarinet").gain(0.32).pan(0.8)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@6 A@7 ~@4 B C D E ~@4 F G H I@2 ~@5 J K@2 L@4 ~@3 M@7 N@5 O>".pickRestart({
  A: "[~@23 e5@6 d#5@3 e5@3 [d#4,f#5]@6 e5@3 f#5@3 [e4,g5]@6 f#5@3 e5@3 [d#4,f#5]@12 [e4,g5]@6 f#5@3 g5@3 [f#4,d5,a5]@6 g5@3 a5@3 [g4,d5,c6]@3 b5@3 a5@3 g5@3 [f#4,d5,a5]@6 a5@4 a5 ~ [d#5,a5]@6 [e4,g5]@6 [e4,f#5]@6 [d4,f#5]@6 e5@12 e5@12 ~, ~@113 e5@6 ~@49]/7", // D#m Em D#m Em D Gsus4 D D#dim …
  B: "b5@3 b5 [c5,a5]@2 [d#4,f#5]@2, g4 ~", C: "g5@2 f#5 e5 [d#4,f#5]@4", D: "b5@3 c6 d6@2 e6@2, e5",
  E: "[e4,a4,c6] [d#3,f#4,b5]", F: "~ [e4,b4,g5]@9 a5@3 [d#4,b4,f#5,b5]@11",
  G: "~ [d4,a4,f#5]@9 g5@3 [c#4,a4,e5,a5]@11", H: "~ [c4,e5]@9 f#5@3 [d4,b4,g5]@6 [c5,f#5]@3 e5@2",
  I: "[~ e5@6 d#5@6 ~ e5@12 ~@22]/2", J: "~ e5@2 d#5 e5 [d#4,f#5]@2 e5",
  K: "[f#5 [e4,g5]@2 f#5 e5 [d#4,f#5]@4 [e4,g5]@2 f#5 g5 [f#4,d5,a5]@2 g5]/2", // Em D#m Em D
  L: "[a5@3 [g4,d5,c6]@3 b5@3 a5@3 g5@3 [f#4,d5,a5]@6 e5@5 a5 [d#5,a5]@6 [e4,g5]@6 [e4,f#5]@6 [d4,f#5]@6 e5@12 ~ e5@12 ~@20, ~@21 a5@4 ~@71]/4", // Gsus4 D D#dim Em Esus2 D
  M: "[~@4 b5@9 b5@3 [c5,a5]@6 [d#4,f#5]@6 g5@6 f#5@3 e5@3 [d#4,f#5]@12 b5@9 c6@3 d6@6 e6@6 [a4,e5,c6]@12 ~ [f#4,d#5,b5]@12 g5@9 a5@3 [d#5,b5]@12 f#5@9 g5@3 [c#5,a5]@12 e5@9 f#5@3 [b4,g5]@6 [c4,f#5], ~@4 g4@12 ~@36 e5@24 ~@25 e4@12 ~@36 c4@12 ~@7]/7", // F D#m Am B G#m F#m Em Cdim
  N: "[~@2 e5@3 e5@6 ~ d#5@6 e5@12 ~ e4@9 a5@3 [d#4,b4,f#5,b5]@12 ~ [d4,a4,f#5]@9 g5@3 [c#4,a4,e5,a5]@12 ~ [c4,e5]@9 f#5@3 [d4,b4,g5]@6 ~ [c5,f#5]@3 e5@3 e5@6 d#5@8, ~@10 [b4,g5]@3 ~@27]/5", // B D A C G Cdim Em
  O: "~ e5@18 ~@5",
})).s("gm_string_ensemble_1").gain(0.43).pan(0.4)

// other · string ensemble 1 · "Strings"
const string_ensemble_1_2 = note("<A@5 B@8 C D E F G H I J K L M N O P Q R@6 S@6 T@8 U@5 V@4 W>".pickRestart({
  A: "[~@11 [e2,e3]@6 [b1,b2]@6 [e1,e2]@6 [b1,b2,b3]@6 [e2,e3]@6 [d2,d3]@6 [g1,g2]@6 [d2,d3]@3 [c2,c3]@3 [b1,b2], ~@11 [g2,b3]@3 ~@3 b3@3 ~@3 b3@3 ~@9 b3@3 ~@22]/5", // E B E B E D G D …
  B: "[~@10 [b1,b2]@6 [b1,b2]@6 [e2,e3]@25 [e2,e3]@12 [b1,b2]@12 [e1,e2]@12 [b1,b2,b3]@12 [e2,e3]@12 [d2,d3]@12 [g1,g2]@12 [d2,d3]@6 [c2,c3]@6 [b1,b2]@12 [b1,b2]@6 [b1,b2]@6 [e2,e3]@25, ~@47 [g2,b3]@6 ~@6 b3@6 ~@6 b3@6 ~@18 b3@6 ~@91]/8", // B E B E B E D G …
  C: "[g2,g3]@2 [f#2,f#3] [d2,d3]", D: "[e2,e3] [d2,d3]", E: "[g2,g3]@2 [b1,b2] [c2,c3]",
  F: "[a1,a2] [d2,d3] [g1,g2] [f#1,f#2]", G: "[e1,e2]@2 [a1,a2] [b1,b2]", H: "[e2,e3]@2 [b1,b2] [a1,a2]",
  I: "[g#1,g#2]", J: "[a1,a2] [f#1,f#2] [b1,b2]@2", K: "[e2,e3] [b1,b2]", L: "[d2,d3] [a1,a2]",
  M: "[c2,c3]@2 [g1,g2] [a1,a2]", N: "[b1,b2,f#3]@12 ~ c3@6 [b1,b2]@3 [a1,a2]@2, ~ a3, ~@2 c2 ~",
  O: "~ [e1,e2,e3]@12 [b0,b1,b2]@11", P: "~ [d1,d2,d3]@12 [a0,a1,a2]@11",
  Q: "~ [c1,c2,c3]@12 [g0,g1,g2]@6 [a0,a1,a2]@5, ~ g3@6 ~@17", // C G A
  R: "[~ [b0,b1,b2,f#3,b3]@6 [b0,b1,b2,f#3,b3]@6 ~ [e2,b2,b3]@12 [e2,e3]@12 [b1,b2]@12 [e1,e2]@12 [b1,b2,b3]@12 [e2,e3]@12 [d2,d3]@12 [g1,g2]@12 [d2,d3]@6 [c2,c3]@6 [b1,b2]@12 [b1,b2]@6 [b1,b2]@4, ~@13 [e1,g2]@12 ~ [g2,b3]@6 ~@6 b3@6 ~@6 b3@6 ~@18 b3@6 ~@64]/6", // B5 E5 E B E B E D …
  S: "[~@2 [e2,e3]@25 [e2,e3]@12 [b1,b2]@12 [e1,e2]@12 [b1,b2,b3]@12 [e2,e3]@12 [d2,d3]@12 [g1,g2]@12 [d2,d3]@6 [c2,c3]@6 [b1,b2]@12 [b1,b2]@6 [b1,b2]@3, ~@9 [g2,b3]@2 ~@2 b3@2 ~@2 b3@2 ~@6 b3@2 ~@21]/6", // E B E B E D G D …
  T: "[~@3 [e2,e3]@25 [g2,g3]@12 [f#2,f#3]@6 [d2,d3]@6 [e2,e3]@12 [d2,d3]@12 [g2,g3]@12 [b1,b2]@6 [c2,c3]@6 [a1,a2]@6 [d2,d3]@6 [g1,g2]@6 [f#1,f#2]@6 [e1,e2]@12 [a1,a2]@6 [b1,b2]@6 [e2,e3]@12 [b1,b2]@6 [a1,a2]@6 [g#1,g#2]@20]/8", // E G F# D E D G B …
  U: "[~@4 [a1,a2]@6 ~ f#2@6 [b1,b2]@12 [e2,e3]@12 [b1,b2]@12 [d2,d3]@12 [a1,a2]@12 [c2,c3]@12 [g1,g2]@6 [a1,a2]@6 [b1,b2,f#3]@12 ~ [c2,c3,a3]@6, ~@5 f#1@3 ~@52]/5", // A B E B D A C G …
  V: "[[b1,b2]@3 [a1,a2]@3 ~ [e2,e3]@12 [b0,b1,b2]@12 ~ [d2,d3]@12 [a0,a1,a2]@12 ~ [c1,c2,c3]@12 [g0,g1,g2]@6 ~ [a1,a2]@6 [b0,b1,b2,f#3,b3]@6 [b0,b1,b2,f#3,b3]@8, ~@6 e1@12 ~@13 d1@12 ~@14 g3@6 ~@12 a0@6 ~@15]/4", // B A E B D A C G …
  W: "~ e4@18 ~@5, e1@3 ~",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.6)

// bass · electric bass finger · "Basson"
const bass = note("<A@5 B@8 C D E F G H I J K L M N O P Q R S@5 T@6 U@8 V@5 W@4 X>".pickRestart({
  A: "[~@11 [e3,e4]@6 [b2,b3]@6 [e2,e3]@6 [b2,b3]@6 [e3,e4]@6 [d3,d4]@6 [g2,g3]@6 [d3,d4]@3 [c3,c4]@3 [b2,b3]]/5", // E B E B E D G D …
  B: "[~@10 [b2,b3]@6 [b2,b3]@6 [e3,e4]@25 [e3,e4]@12 [b2,b3]@12 [e2,e3]@12 [b2,b3]@12 [e3,e4]@12 [d3,d4]@12 [g2,g3]@12 [d3,d4]@6 [c3,c4]@6 [b2,b3]@12 [b2,b3]@6 [b2,b3]@6 [e3,e4]@25]/8", // B E B E B E D G …
  C: "[g3,g4]@2 [f#3,f#4] [d3,d4]", D: "[e3,e4] [d3,d4]", E: "[g3,g4]@2 [b2,b3] [c3,c4]",
  F: "[a2,a3] [d3,d4] [g2,g3] [f#2,f#3]", G: "[e2,e3]@2 [a2,a3] [b2,b3]", H: "[e3,e4]@2 [b2,b3] [a2,a3]",
  I: "[g#2,g#3]", J: "[a2,a3] [f#2,f#3] [b2,b3]@2", K: "[e3,e4] [b2,b3]", L: "[d3,d4] [a2,a3]",
  M: "[c3,c4]@2 [g2,g3] [a2,a3]", N: "[b2,b3]@12 [c3,c4]@6 ~ [b2,b3]@3 [a2,a3]@2", O: "~ [e2,e3]@12 [b1,b2]@11",
  P: "~ [d2,d3]@12 [a1,a2]@11", Q: "~ [c2,c3,c4]@12 [g1,g2,g3]@6 [a1,a2,a3]@5",
  R: "~ [b1,b2,b3]@6 [b1,b2,b3]@6 [e2,e3,g3,g4]@11", // B Em
  S: "[~ [e3,e4]@6 [b2,b3]@6 [e2,e3]@6 [b2,b3]@6 [e3,e4]@6 [d3,d4]@6 [g2,g3]@6 [d3,d4]@3 [c3,c4]@3 [b2,b3]@6 [b2,b3]@3 [b2,b3]@2]/5", // E B E B E D G D …
  T: "[~@2 [e3,e4]@25 [e3,e4]@12 [b2,b3]@12 [e2,e3]@12 [b2,b3]@12 [e3,e4]@12 [d3,d4]@12 [g2,g3]@12 [d3,d4]@6 [c3,c4]@6 [b2,b3]@12 [b2,b3]@6 [b2,b3]@3]/6", // E B E B E D G D …
  U: "[~@3 [e3,e4]@25 [g3,g4]@12 [f#3,f#4]@6 [d3,d4]@6 [e3,e4]@12 [d3,d4]@12 [g3,g4]@12 [b2,b3]@6 [c3,c4]@6 [a2,a3]@6 [d3,d4]@6 [g2,g3]@6 [f#2,f#3]@6 [e2,e3]@12 [a2,a3]@6 [b2,b3]@6 [e3,e4]@12 [b2,b3]@6 [a2,a3]@6 [g#2,g#3]@20]/8", // E G F# D E D G B …
  V: "[~@4 [a2,a3]@6 [f#2,f#3]@6 ~ [b2,b3]@12 [e3,e4]@12 [b2,b3]@12 [d3,d4]@12 [a2,a3]@12 [c3,c4]@12 [g2,g3]@6 [a2,a3]@6 [b2,b3]@12 ~ [c3,c4]@6]/5", // A F# B E B D A C …
  W: "[[b2,b3]@3 [a2,a3]@3 [e2,e3]@12 ~ [b0,b1]@12 [d1,d2]@12 ~ [a0,a1]@12 ~ [c1,c2]@12 [g0,g1,g2]@6 [a0,a1,a2]@6 ~ [b0,b1,b2]@6 [b0,b1,b2]@8, ~@14 c3@3 ~@7]/4", // B A E B D A C G …
  X: "[e1,e2]@3 ~", // E
})).s("gm_electric_bass_finger").gain(0.41).pan(0.7)

// other · timpani · "Timpini"
const timpani = note("<~@5 A@2 ~@4 B@2 C D E F G H I J K L M N O P Q R@6 S@6 T@8 U@5 V@4 W>".pickRestart({
  A: "[~@22 [e2,e3]@12 ~ [e2,e3]@12 ~]/2", B: "[~@23 e2@13 e2@12, ~@23 e3@25]/2", C: "g2@2 f#2 d3", D: "e3 d3",
  E: "g2@2 b2 c3", F: "a2 d3 g2 f#2", G: "e2@2 a2 b2", H: "e3@2 b2 a2", I: "g#2", J: "a2 f#2 b2@2", K: "e3 b2",
  L: "d3 a2", M: "c3@2 g2 a2", N: "[b2,f#3]@12 ~ [a2,c3]@6 b2@3 a2@2", O: "~ [e2,e3]@12 [b1,b2]@11",
  P: "~ [d2,d3]@12 [a1,a2]@11", Q: "~ [c2,c3]@12 [g1,g2]@6 [a1,a2]@5",
  R: "[~ [b1,b2]@6 [b1,b2]@6 ~ [e2,b2]@12 e3@12 b2@12 e2@12 b2@12 e3@12 d3@12 g2@12 d3@6 c3@6 b2@12 b2@6 b2@4]/6", // B E5
  S: "[~@2 e2@12 ~ e2@12 e3@12 b2@12 e2@12 b2@12 e3@12 d3@12 g2@12 d3@6 c3@6 b2@12 b2@6 b2@3, ~@2 e3@25 g2@6 ~@111]/6",
  T: "[~@3 e2@12 ~ e2@12 g2@12 f#2@6 d3@6 e3@12 d3@12 g2@12 b2@6 c3@6 a2@6 d3@6 g2@6 f#2@6 e2@12 a2@6 b2@6 e3@12 b2@6 a2@6 g#2@20, ~@3 e3@25 ~@164]/8",
  U: "[~@4 a2@6 ~ f#2@6 b2@12 e3@12 b2@12 d3@12 a2@12 c3@12 g2@6 a2@6 [b2,f#3]@12 ~ [a2,c3]@6]/5", // B5 Am
  V: "[b2@3 a2@3 [e2,e3]@12 ~ [b1,b2]@12 ~ [d2,d3]@12 [a1,a2]@12 ~ [c2,c3]@12 [g1,g2]@6 ~ [a1,a2]@6 [b1,b2]@6 [b1,b2]@8]/4", // E B D A C G A B
  W: "[e1,g2]@3 ~", // Em
})).s("gm_timpani").gain(0.56).pan(0.6)

// other · tubular bells · "Tubular Bell"
const tubular_bells = note("<~@53 A@4 B>".pickRestart({
  A: "[~@7 g5@9 a5@3 b5@12 ~ f#5@9 g5@3 a5@12 ~ e5@9 f#5@3 g5@6 ~ f#5@3 e5@3 e5@6 d#5@8]/4", B: "~ e5@18 ~@5",
})).s("gm_tubular_bells").gain(0.72).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@57 x>").gain(0.8).pan(0.6)

// drums · crash
const crash = s("cr").struct("<~@57 [~ x ~@22]>").gain(0.8).pan(0.6)

// drums · ride
const ride = s("rd").struct("<~@5 A B ~@4 C D ~@7 D ~@3 E ~@3 F ~@5 G ~@5 H ~@7 I ~@3 J ~@4 F>".pickRestart({
  A: "~@11 x", B: "~@5 x ~@6", C: "~@23 x", D: "~ x", E: "x", F: "~ x ~@22", G: "~@2 x ~@12 x ~@8",
  H: "~@3 x ~@12 x ~@7", I: "~@17 x ~@6", J: "~@5 x ~@18",
})).gain(0.48).pan(0.6)

stack(
  trumpet, harpsichord, church_organ, clarinet, string_ensemble_1, string_ensemble_1_2, bass, timpani, tubular_bells,
  kick, crash, ride
)

More by Thomas Campion