Strudelify

One More Dance in Blue

Howard Carpendale

KeyC majorTempo116 bpm
0:00/0:00
// One More Dance in Blue — Howard Carpendale
// 116 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 139 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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 · synth bass 1 · "SYNBASS 1"
const bass = note(`<
  A@2 B@2 A@2 C@2 D E F G H I J K L M F N O P Q G R S F G T U V G W X Y Z L AA Y Z H AB AC AD L AE Q G L AF Q G L U Q G
  L U F AG L AH F N L AI F K AJ X AK AL AM AN AO AL AM AP AQ AR AK AS AT AU AV AW AX AY AZ BA L M F BB L BC F N BD BE BF
  N L AE F G BG BH BI AS AV BJ AV BK BL BM BN BH AV AS AN BO AK BP AN BQ BR BS L U F N BT ~@6
>`.pickRestart({
  A: "[c2@7 e2]/2", B: "[f2@27 ~ e2@4]/2", C: "[f2@7 e2]/2", D: "c2@2 ~ c2 ~ c2 g1@2 c2@3 ~@5",
  E: "~@2 c2 c2@2 ~ c2!2 e2@3 c2@3 e2 ~", F: "f2@2 ~ f2 ~ f2 c2@2 f2@2 ~@6",
  G: "~@2 f2!2 ~@2 f2!2 a2@2 f2 a#2@2 f2 c3@2", H: "c2@2 ~ c2@2 c2 g1@2 c2@2 ~@6", I: "~@2 c2 c2@3 g1@2 c2@3 e2@3 c2@2",
  J: "f2@2 ~ f2@2 f2 c2@2 f2@3 ~@5", K: "~@2 f2 f2@2 ~ f2!2 a2@2 f2 a#2@2 f2 c3@2", L: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@6",
  M: "~@2 c2 c2@2 ~ c2@2 e2@4 c2@4", N: "~@2 f2!2 ~@2 f2!2 a2@2 f2 a#2@2 f2 c3 f2", O: "c2@2 ~ c2 ~ c2 g1@2 c2!2 ~@6",
  P: "~@2 c2 c2@5 e2@3 c2@3 e2 ~", Q: "f2@2 ~ f2 ~ f2 c2@2 f2@3 ~@5", R: "c2@2 ~ c2 ~ c2 g1@2 c2@3 c2@3 ~@2",
  S: "~@2 c2 c2@2 ~ c2@2 e2@3 c2@3 e2@2", T: "c2@2 ~ c2 ~ c2 g1@2 c2 ~@7", U: "~@2 c2 c2@2 ~ c2@2 e2@4 c2@2 e2@2",
  V: "f2 ~@2 f2 ~ f2 c2@2 f2@2 ~@6", W: "g2 ~@2 g2 ~ g2 d2@2 g2@2 ~@4 g1!2",
  X: "g2@2 ~ g2 ~ g2 d2@2 g2@2 ~@2 g1@2 a1@2", Y: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@4 e2@2",
  Z: "f2@2 ~ f2 ~ f2 c2@2 a2@2 f2 a#2@2 f2 c3@2", AA: "c2@2 ~ c2 ~ c2 g1@2 c2@3 e2@3 g1@2",
  AB: "c2@2 ~ c2 ~ c2 g1@2 c2 ~@2 e2 ~ e2 c2@2", AC: "g2@2 ~ g2 ~ g2 d2@2 g2@2 ~@6",
  AD: "g2@2 ~ g2 ~ g2 d2@2 g2@2 g1@2 a1@2 g1@2", AE: "~@2 c2!2 ~@2 c2@2 e2@4 c2@4", AF: "~@2 c2!2 ~@4 e2@3 c2@3 e2@2",
  AG: "~@2 f2!2 ~@2 f2!2 a2@2 f2 a#2@2 f2 c3 ~", AH: "~@2 c2!2 ~@2 c2!2 e2@4 c2@2 e2@2",
  AI: "~@2 c2!2 ~@2 g1@2 e2@4 c2@2 e2@2", AJ: "g2@2 ~ g2 ~ g2 d2@2 g2@2 ~@2 g1@4",
  AK: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@2 e2@2 c2@2", AL: "f2 ~@2 f2 ~ f2 c2@2 f2@2 ~@2 a2 a#2 c3@2",
  AM: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@4 g1@2", AN: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@2 e2@2 g1@2",
  AO: "c2@2 ~ c2 ~ c2@2 ~ c2@2 ~ c2 e2@2 c2@2", AP: "c2@2 ~ c2 ~ c2 ~@2 c2@2 ~@2 e2@2 c2@2",
  AQ: "g2 ~@2 g2 ~ g2 d2@2 g2@2 ~@2 g1 a1 c2@2", AR: "g2@2 ~ g2 ~ g2 g1@2 g2@2 ~@2 g1@2 a1@2",
  AS: "f2@2 ~ f2 ~ f2 c2@2 f2 ~@3 a2 a#2 c3@2", AT: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@2 g1@2 a1@2",
  AU: "c2@2 ~ c2 ~ c2 g1@2 e2@4 c2@2 g1@2", AV: "c2@2 ~ c2 ~ c2 g1@2 c2@2 ~@2 e2@4",
  AW: "f2@2 ~ f2 ~ f2 c2@2 f2@2 ~@2 a2 ~ c3@2", AX: "c2@2 ~ c2 ~ c2 g1@2 a1@2 c2@2 ~@2 a1@2",
  AY: "c2@2 ~ c2 ~ c2 g1@2 c2 ~ e2@2 f2@2 f#2@2", AZ: "g2@2 ~ g2 ~ g2 d2@2 g2@2 g1@3 ~ g1@2",
  BA: "g2 ~@2 g2 ~ g2 d2@2 g2@2 g1@2 a1@4", BB: "~@2 f2!2 ~@3 f2 a2@2 f2 a#2@2 f2 c3@2",
  BC: "~@2 c2!2 ~@2 c2@2 e2@4 c2@2 e2@2", BD: "c2 ~@2 c2 ~ c2 g1@2 c2@2 ~@6", BE: "~@2 c2!2 ~@2 c2@2 e2@4 g1@2 e2@2",
  BF: "f2@2 ~ f2 ~@2 c2@2 f2@3 ~@5, ~@5 f2@3 ~@8", BG: "g2@2 ~ g2 ~ g2 d2@2 g2 ~@3 g1@4",
  BH: "g2@2 ~ g2 ~ g2 d2@2 g2@2 g1 ~ g1@2 a1@2", BI: "c2@2 ~ c2 ~ c2 g1@2 c2@4 e2@2 c2@2",
  BJ: "c2@2 ~ c2 ~ c2 g1@2 c2 ~ e2 ~ f2 f#2 g2@2", BK: "f2@2 ~ f2 ~ f2 c2@2 f2 ~ a2@2 a#2@2 c3@2",
  BL: "c2@2 ~ c2 ~ c2 g1@2 c2 ~@5 g1@2", BM: "c2@2 ~ c2 ~ c2 g1@2 c2@2 e2@2 f2@2 f#2@2",
  BN: "g2@2 ~ g2 ~ g2 d2@2 g2 ~ g1@3 ~ g1@2", BO: "c2@2 ~ c2 ~ c2 e2 ~@3 g1@2 a1@4",
  BP: "f2@2 ~ f2 ~ f2 c2@2 f2 ~@3 a2 a#2 c3 f2", BQ: "c2@2 ~ c2 ~ c2 e2@2 c2@2 e2@2 f2@2 f#2@2",
  BR: "g2@2 ~ g2 ~ g2 d2@2 g2@2 g1@2 ~@2 g1@2", BS: "g2@2 ~ g2 ~ g2 g1@2 g2@2 g1 ~ g1@2 a1@2", BT: "c2",
})).s("gm_synth_bass_1").gain(0.4)

// other · tenor sax
const tenor_sax = note("<~@44 A@3 B C D E@3 ~@86>".pickRestart({
  A: "[c5@21 ~ g4@2 f4 ~ e4 c4!3 ~ c4@3 a3@3 ~@4 g3 a3 c4 ~ e4 c4 ~]/3", B: "g4 ~ g4@9 ~ f4 e4 c4 ~",
  C: "c4@2 a3 c4 ~@2 g3 a3", D: "c4 a3 ~@4 g3 a3",
  E: "[c4 ~ e4@16 ~@2 d4 ~ a3 ~ g3 ~ e3 ~ d3@2 c3@4 ~@14, ~@21 c4@2 ~@25]/3",
})).s("gm_tenor_sax").gain(0.45)

// other · tenor sax · soft notes · D#sus2
const tenor_sax_soft = note("<~@46 [~@12 d4 ~@3] [a4 ~@15] ~@3 [~@6 [d#4,f4] ~@9] ~@87>").s("gm_tenor_sax").gain(0.2)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@34 A B A ~ C D C ~ E F ~@26 A B A ~ A B ~@2 G F A B ~@2 A B C ~ F E ~@18 A D H ~ I B H ~ F J A D H ~ A D H ~ F@2 A@2
  K D L ~@6
>`.pickRestart({
  A: "~@11 [g5,c6] ~ [g5,c6]!3", B: "~@13 [f5,c6]!3", C: "~@13 [g5,c6]!3", D: "~@11 [f5,c6] ~ [f5,c6]!3",
  E: "~@13 [g5,d6]!3", F: "~@11 [g5,d6] ~ [g5,d6]!3", G: "~@10 [g5,d6] ~@2 [g5,d6]!3", H: "~@11 [g5,c6] ~ [g5,c6] ~@2",
  I: "~@11 [g5,c6] ~ g5 [g5,c6]!2", J: "[g5,d6] ~@9 [g5,d6]!2 ~ [g5,d6]!2 ~", K: "~@11 [f5,c6] ~ [f5,c6] [g5,c6]!2",
  L: "[g5,c6] ~@15", // C5
})).s("gm_brass_section").gain(0.4)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A@8 B@2 C@2 B@2 C@2 D@8 E@2 C@2 B@2 C@2 F@2 G@2 H@8 I@8 J@8 B@2 C@2 B@2 C@2 F@2 K@8 L@2 M@5 N@5 O@8 B@2 C@2 E@2 C@2
  F@2 P@8 Q@2 R@6 S@8 T ~@6
>`.pickRestart({
  A: "[[e3,g3]@31 ~ a3@32 [e3,g3]@32 [f3,a3]@32, c4, ~@31 f3@32 ~@65]/8", B: "[e3,g3]/2", C: "[f3,a3]/2",
  D: "[[e3,g3] [f3,a3] [e3,g3] [f3,a3], c4]/8", E: "[g3, e3@15 ~]/2", F: "[g3,b3,d4]/2",
  G: "[[g3,e4]@16 [a3,f4]@15 ~, c4@31 ~]/2", H: "[e4@48 [a3,f4]@16 e4@33 [b3,d4]@31, c4@97 ~@31, g3@47 ~@17 g3@63 ~]/8",
  I: "[[g3,e4]@32 [a3,f4]@31 ~ [g3,e4]@32 [a3,f4]@30 ~@2, c4@63 ~]/8", // C Dm C Dm
  J: "[g3@32 ~ a3@31 [e3,g3]@32 [f3,a3]@31 ~, c4, e3@31 ~ f3@31 ~@65]/8", // Em F
  K: "[[g3,e4] [a3,f4] [g3,e4]@3 [a3,f4] [g3,e4]@2, c4]/8", L: "[[b3,d4]@31 ~]/2",
  M: "[[g3,e4]@17 g3 f4@14 g3@15 ~@3 g3@29 ~, c4, ~@17 a3@15 e4@48]/5", // C
  N: "[[a3,f4]@15 ~ e4@32 [b3,d4]@32, c4@3 ~@2, ~@16 g3@63 ~]/5", // Dm Bm
  O: "[[e3,g3] [f3,a3] g3 [f3,a3], c4, ~@64 e3@31 ~@33]/8", // Em F
  P: "[[g3,e4]@15 ~ [a3,f4]@16 [g3,e4]@48 [a3,f4]@16 [g3,e4]@32, c4]/8", Q: "[b3,d4]/2",
  R: "[[g3,e4] [a3,f4] [g3,e4]@3 [a3,f4], c4]/6", S: "[e4 [b3,d4] e4 [a3,f4], g3@95 ~@33, ~ c4]/8",
  T: "e4@13 ~@3, g3@5 ~@3",
})).s("gm_synth_strings_1").gain(0.2)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B C D E F G H I J K J L J M@2 N O P J Q R S T U V W J S X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM J AN J AN J
  AO H AP AQ AR J AS J AT J AU AV AW AX AY AZ BA BB BC D BD J BE AX BF BG BH BI BJ BK BL J BM J BN BO BP BQ BR BS BT BU
  BV BW BX BY BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX CY CZ AV DA DB DC DD DE DF DG
  DH ~@6
>`.pickRestart({
  A: "~@11 c4 ~ c4 g3 a3", B: "c4 ~@2 c4 ~ c4 ~@10", C: "~@14 g3 a3", D: "c4 ~@2 c4 ~ c4 a3 ~ c4 ~ c4 ~@5",
  E: "~@10 g3 a3 ~ c4 ~ a3", F: "c4 ~@2 c4 ~ c4 g3 a3 c4 ~ c4 ~@5", G: "~@10 g3 a3 ~ c4 ~@2",
  H: "c4 ~ c4!2 ~ c4 a3 g3 c4 ~ c4 ~@5", I: "~ g3 a3 c4 ~@3 c4 ~ c4 g3 a3 c4 ~ a3 g3",
  J: "c4 ~@2 c4 ~ c4 a3 g3 c4 ~ c4 ~@5", K: "~@2 g3 a3 ~ c4 ~ c4 ~ c4 ~ g3 c4 g3 a3 ~",
  L: "~@5 g3 a3 c4 ~ c4 a3 g3 c4 ~ a3 g3",
  M: "[~@3 a3 ~ c4 ~ c4 ~ c4 a3 ~ c4!2 a3 ~ c4 ~@2 c4 ~ c4 a3 g3 c4 ~ c4 ~@5, ~@2 g3@9 g3@4 g3@5 ~@12]/2",
  N: "~ g3 a3 c4 ~ a3 ~ c4 ~ c4 a3 g3 c4@2 g3 a3", O: "~ c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~@5",
  P: "~ g3 a3 c4 ~ c4 ~@3 g3 a3 c4 ~ c4 a3 g3", Q: "~ g3 a3 c4 ~@4 c4 g3 a3 c4 ~ c4 a3 g3",
  R: "d#4 d4 c4 g3 ~ [a3,c4] ~ c4 ~ c4 ~ a3 ~@4", S: "~ g3 a3 c4 ~@5 g3 a3 c4 ~ c4 a3 g3",
  T: "c4 ~ c4 ~ c4 a3 ~ c4 ~ c4 ~@6", U: "~ g3 a3 c4 ~ c4 a3 g3 ~@5 g3 a3 c4", V: "~ c4 a3 g3 c4 ~ a3 c4 ~ c4 ~@6",
  W: "~ g3 a3 c4 ~ c4 a3 g3 c4 ~@2 c4 ~ c4 a3 g3", X: "c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~@6",
  Y: "~ g3 a3 c4 ~ c4 a3 ~ c4 ~ c4 ~ [a3,c#4] g3 a3 c4", Z: "~@3 g3 ~@2 g3!2 ~ g3 ~@6",
  AA: "~@2 g3 ~ g3 a3 ~@3 g3 a3 c4 ~ c4 a3 g3", AB: "c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~@4 g3 a3",
  AC: "~@2 c4 ~ c4 g3 a3 c4 ~ c4 ~@3 e4 d4 ~", AD: "c4 ~@3 c4 a3 g3 c4 ~ c4 ~@3 g3 a3 c4",
  AE: "~ c4 [a3,c4] ~ c4 ~ a3 ~ c4!2 a3 g3 c4 a3 g3 c4", AF: "~ c4 ~@2 c4 ~ a3 c4 ~ c4 ~@4 g3 a3",
  AG: "~ c4 ~@2 [b3,c4] ~ a3 c4 ~@6 g3 a3", AH: "c4 ~@2 c4 ~ c4 a3 g3 c4 ~ c4 ~ c4 ~@3",
  AI: "c4!2 a3 g3 c4 a3 g3 c4 ~@5 g3 a3 ~", AJ: "c4 ~ a3 ~ a3 g3 ~ a3 ~ g3 ~@4 g3 a3",
  AK: "~@5 g3 a3 c4 d4 d#4 e4 ~@2 g3 a3 c4", AL: "~ c4 a3 ~ c4 ~ a3 ~ c4 ~ c4 ~@5",
  AM: "~@2 g3 a3 ~ c4 ~ c4 ~ c4 a3 g3 c4 ~ g3 a3", AN: "~ g3 a3 c4 ~ c4 a3 g3 c4 ~ c4 ~ a3 g3 a3 ~",
  AO: "~ g3 a3 c4 ~ c4 a3 g3 c4 ~ c4 ~ d4 ~ e4 ~", AP: "~ g3 a3 c4 ~ c4 a3 g3 c4 ~ c4 ~ a3 g3 e3 g3",
  AQ: "a3 c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~@5", AR: "~@3 g3 a3 c4 ~ c4 ~ c4 a3 g3 c4 d4 e4 ~",
  AS: "~ g3 a3 c4 ~ c4 a3 g3 c4 ~ c4 ~@3 a3 g3", AT: "~@2 g3 a3 ~ a3 ~ c4 ~ c4 a3 g3 c4 ~ a3 g3",
  AU: "~@2 g3 a3 c4!2 ~ c4 ~ c4 a3 g3 c4@2 a3 g3", AV: "c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~ c4 ~ c4 a3 g3",
  AW: "c4 ~ c4 ~@7 g3 a3 ~ c4 ~ c4", AX: "~ c4 a3 g3 c4 ~ a3 c4 ~ c4 ~ c4 ~@4",
  AY: "~@2 g3 a3 ~ c4 ~ c4 ~ c4 a3 g3 c4@2 [a3,c4] g3", AZ: "c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~ c4 ~@4",
  BA: "~@2 g3 a3 ~ c4 ~ c4 ~ c4 a3 g3 c4 ~ g3 ~", BB: "g3 ~@2 g3 ~ g3 ~ g3 a3 g3 ~@6",
  BC: "~@2 g3!2 ~ g3 ~ g3 a3 c4 d4 d#4 e4 d4 c4 a3", BD: "~@5 g3 a3 c4 ~ c4 a3 ~ c4@2 g3 a3",
  BE: "~@5 g3 a3 c4 d4 d#4 e4 [c4,d4] ~ [a3,c4] ~ c4", BF: "~@5 g3 a3 c4 d4 ~ d#4 ~ e4 ~ d4 c4",
  BG: "d4 c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~@5", BH: "~@2 g3 ~ g3 a3 ~ c4 ~ c4 a3 g3 c4@2 a3 ~",
  BI: "g3 ~ g3 ~@2 g3 ~ g3 ~ g3 ~@6", BJ: "~@2 g3 ~ g3 a3 c4 d4 d#4 e4 ~@3 g3 a3 ~",
  BK: "c4 ~@2 c4 ~ c4 [a3,c#4] g3 c4 ~ c4 ~@5", BL: "~@2 g3 a3 ~ c4 ~ d4 ~ d4 e4 d4 c4 a3 g3@2",
  BM: "~@5 g3 a3 c4 ~ d4 ~ e4 ~ d4 c4 a3", BN: "~@2 g3 a3 ~ c4 ~ d4 ~ e4 d4 c4 ~ a3 ~ g3",
  BO: "~@2 c4 ~ c4 a3 g3 c4 ~ c4 ~@3 g3 a3 c4", BP: "~@5 g3 a3 c4 ~ c4 a3 g3 c4 a3 g3 ~",
  BQ: "g3 ~ g3 ~ g3 g4 ~ g4 ~ g3 ~@6", BR: "~ g3 a3 c4 d4 e4 ~@3 g3 a3 c4 d4 e4 c4 a3",
  BS: "c4 ~@2 c4 ~ c4 a3 g3 c4!2 ~ c4 ~@4", BT: "~@2 g3 a3 c4 d4 ~@4 e4 d4 c4 a3 g3 ~",
  BU: "c4 ~@2 c4 ~ c4 a3 g3 c4 ~ c4 ~@3 g3 a3", BV: "~ c4 ~@7 [g3,b3] ~@3 g3 [a3,b3] [g3,c4]",
  BW: "~ [g3,c4] a3 ~ [g3,c4] ~ a3 g3 ~ a3 ~ [g3,c4] ~@4", BX: "~@2 e3 g3 a3 [g3,c4] ~@3 c4 a3 ~ [g3,c4]@2 a3 g3",
  BY: "~ [g3,c4] ~ [g3,c4] ~ [g3,c4] a3 ~ c4 ~ c4 ~@5", BZ: "~ g3 a3 c4 d4 e4 ~@4 g3 a3 ~ c4 ~ c4",
  CA: "~ c4 a3 g3 c4 ~ a3 g3 c4 ~ c4 ~@5", CB: "~ [g3,c4] a3 ~ [g3,c4] ~ a3 [g3,c4] ~ [g3,c4] a3 ~ c4 g3 a3 c4",
  CC: "~ [g3,c4] ~@2 c4 ~ a3 c4 ~ c4 ~@6", CD: "~ g3 a3 c4 d4 d#4 d4 c4 ~@4 g3 a3 ~ [g3,c4]",
  CE: "~ [g3,c4] a3 ~ [g3,c4] ~ a3 ~ [g3,c4]!2 ~@6", CF: "~ g3 a3 [g3,c4] ~ [g3,c4] a3 g3 [g3,c4]@2 a3 c4 ~ c4 a3 g3",
  CG: "[g3,c4] ~ [g3,c4] ~ c4 a3 g3 [g3,c4] ~ [g3,c4] ~@6", CH: "~ g3 a3 c4 d4 d#4 e4 ~@3 g3 a3 c4 a3 g3 [f3,g3,b3,c4]",
  CI: "~ g3 ~ g3 ~ g3 ~@4 g3!2 a3 c4 ~@2", CJ: "~@2 g3!2 ~ g3 ~@3 g3 a3 c4 d4 e4 c4 a3",
  CK: "c4 ~ g3 [g3,c4] ~ [g3,c4] a3 ~ [g3,c4] ~ [g3,c4] ~@3 g3 a3", CL: "~@3 c4 ~ c4 a3 g3 c4!2 a3 g3 ~@4",
  CM: "~@3 [g3,c4] ~ [g3,c4] a3 g3 [g3,c4] ~ [g3,c4] ~@2 a3 g3 ~", CN: "~@3 c4 ~ c4 a3 g3 a3 c4 ~@3 c4 d4 e4",
  CO: "c4 ~@2 c4 ~ c4 a3 g3 [g3,c4] ~ [g3,c4] ~@5", CP: "~ g3 a3 c4 ~ c4 a3 g3 c4 g3 a3 c4 a3 g3 e3 ~",
  CQ: "~@3 [g3,c4] ~ [g3,c4] a3 ~ [g3,c4] ~ [g3,c4] ~@5", CR: "~@2 g3 ~ g3 a3 [g3,c4]!2 ~ [g3,c4] a3 g3 c4 a3 g3 a3",
  CS: "g3 ~ g3 ~@2 a3 ~ g3 ~ g3 ~@6", CT: "~ g3 a3 c4 d4 d#4 ~ e4 ~ d4 ~ c4 ~ a3 g3 ~",
  CU: "c4 ~ [g3,c4] ~ [g3,c4] a3 g3 [g3,c4] ~ c4 ~@3 [g3,c4] a3 g3", // C5
  CV: "~@2 g3 ~ g3 a3 ~ [g3,c4] ~ c4 a3 g3 c4 ~ a3 g3", CW: "~@4 [g3,c4] ~ a3 [g3,c4] ~ [g3,c4] ~@6",
  CX: "~@5 g3 a3 c4 d4 ~@2 c4 ~ a3 g3 ~",
  CY: "[g3,c4] ~ [g3,c4] ~ [g3,c4] a3 ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] a3 g3", // C5
  CZ: "~@2 c4 ~ c4 a3 ~ c4 ~@5 g3 a3 ~", DA: "c4 ~@8 g3 a3 c4 d4 e4 d4 c4", DB: "d4 ~ g3 ~ g3 ~@2 g3 ~ g3 ~@4 g3 a3",
  DC: "d4 ~ c4 ~ a3 ~ g3 a3 ~ g3 ~@4 g3 a3", DD: "c4 ~ c4 ~ c4 a3 g3 [g3,c4] ~ [g3,c4] ~@4 g3 a3",
  DE: "~@2 [g3,c4] ~ [g3,c4] a3 g3 [g3,c4] ~ [g3,c4] ~@4 g3 a3", DF: "c4 ~ c4 ~ c4 a3 g3 c4 ~ c4 ~@2 d#4 ~ g3 a3",
  DG: "c4 d4 ~ c4 ~@5 g3 a3 c4 d4 c4 a3 g3", DH: "c4 ~@15",
})).s("gm_electric_guitar_clean").gain(0.3)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note(`<
  ~@36 A B ~@2 A C ~@30 A D ~@2 A E ~@4 A F ~@2 A C ~@22 A C ~@2 A C ~@4 A C ~@2 A C ~@13
>`.pickRestart({
  A: "~@14 e5 ~", B: "f5 ~@3 e5 ~@3 c5@6 ~@2", C: "f5 ~@3 e5 ~@3 c5 ~@7", D: "f5@2 ~@2 e5 ~@3 c5@5 ~@3",
  E: "f5 ~@3 e5 ~@3 c5@4 ~@4", F: "f5 ~@3 e5 ~@3 c5@3 ~@5",
})).s("gm_glockenspiel").gain(0.35)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@7 A B@2 C@2 D@2 E@2 B@2 F@2 G@2 H@2 B@2 I@2 J@2 K@2 L@2 M N O P M N Q R S@2 T@2 U@2 B@2 V@2 G@2 W@2 X@2 Y@2 B@2 Z@2
  AA@2 C@2 AB AC M AD Q AE AF AD AG P AH@2 AI AJ Q AE M AD AK AE AL ~ B@2 AM@2 AN@2 AO@2 AP@2 I@2 AQ@2 AR@2 AS@2 AT N Q
  AE AU@2 AV@2 AW@2 AX AJ AY@2 M N AZ@2 BA@2 BB@2 BC@2 AT ~@6
>`.pickRestart({
  A: "~@13 [a4,c5,f5]@3", B: "[[g4,c5,e5]@27 ~ [g4,c5,e5]@3 ~]/2", C: "[[a4,c5,f5]@27 ~ [a4,c5,f5]@3 ~]/2",
  D: "[g4@17 ~@5 e5@5 ~ [g4,c5,e5]@4, [c5,e5]@20 c5@7 ~@5, ~@18 g4@9 ~@5]/2", E: "[[a4,c5,f5]@28 ~ [a4,c5,f5]@2 ~]/2",
  F: "[[a4,c5]@14 ~@4 f5@10 ~ [a4,c5,f5]@2 ~, f5@4 c5@3 ~, ~@14 a4@13 ~@5]/2", // Am F
  G: "[[g4,c5,e5]@26 ~@2 [g4,c5,e5]@3 ~]/2", H: "[[a4,c5]@24 ~@2 c5@3 [a4,c5,f5]@3, f5@13 ~@3, ~@6 a4 ~]/2",
  I: "[[a4,c5,f5]@25 ~ [a4,c5,f5]@2 ~ [a4,c5,f5]@2 ~]/2", // F
  J: "[[g4,c5]@18 c4@2 ~@8 [g4,c5]@3 ~, e5@22 c5@5 ~@5, ~@10 g4@3 ~@3, ~@3 e5]/2", K: "[[a4,c5,f5]@7 ~]/2",
  L: "[[b4,d5]@11 ~@2 g5@2 ~, g5@12 d5@3 ~, ~@11 b4@4 ~]/2", M: "[g4,c5,e5]@15 ~", N: "[a4,c5,f5]@15 ~",
  O: "[c5,e5]@7 e6, g4@7 ~@9", P: "f6@2 e6@2 c6@3 ~", Q: "[g4,c5,e5]@7 e6", R: "f6@4 e6@4 ~@2 d6 ~@5, ~@8 c6@7 ~",
  S: "[[d5,g5,b5]@7 ~]/2", T: "[[c5,e5,g5]@23 ~@3 [g4,c5,e5]@2 ~ [g4,c5,e5]@2 ~]/2",
  U: "[[a4,c5]@18 ~@4 f5@5 ~ [a4,c5,f5]@3 ~, f5@20 c5@7 ~@5, ~@18 a4@9 ~@5]/2", // Am F
  V: "[c5@14 ~@4 f5@11 ~@3, f5@16 c5@13 ~@3, a4@13 ~ a4@15 ~@3]/2", W: "[[a4,c5,f5]@26 ~@2 [a4,c5,f5]@3 ~]/2",
  X: "[[g4,c5]@9 ~@5 c5@2, e5@20 c5@7 ~@5, ~@18 g4@13 ~, ~@11 e5@5]/2", // C5
  Y: "[[a4,c5]@26 ~@2 c5@2 f5 ~, f5@7 ~, ~@26 a4@5 ~]/2", Z: "[[a4,c5]@13 ~@2 f5, f5@7 c5, ~@26 a4@5 ~]/2",
  AA: "[[g4,c5]@13 ~ c5 e5, e5@7 ~, ~@26 g4@5 ~]/2", AB: "[b4,d5,g5]@7 ~", AC: "[g4,b4,d5]@13 ~@3",
  AD: "[a4,c5,f5]@7 ~", AE: "f6 e6 c6@2", AF: "[g4,e5]@13 ~@3, c5@15 ~", AG: "~@7 e6, [g4,c5,e5]",
  AH: "[[g4,b4,d5]@27 ~@5]/2", AI: "[g4,c5,e5]@3 ~", AJ: "[a4,c5,f5]@13 ~@3", AK: "[g4,c5,e5]@13 ~ e6@2",
  AL: "[b4,d5], g4 ~", AM: "[c5@17 ~@9 f5@5 ~, f5@22 c5@9 ~, a4@15 ~@3 a4@13 ~]/2",
  AN: "[[c5,e5]@18 g4@2 ~@4 c5@6 g4 ~, g4@17 ~@3 e5@12, ~@22 g4@7 ~@3]/2", // C
  AO: "[[c5,f5]@9 ~@5 f5@2, a4@12 ~@10 a4@9 ~, ~@24 c5@7 ~]/2", AP: "[[g4,c5]@25 ~@3 c5@2 e5@2, e5@7 ~, ~@26 g4@5 ~]/2",
  AQ: "[[c5,e5]@13 ~ c5 e5, g4@24 ~@2 g4@5 ~]/2", AR: "[f5@15 ~, c5@13 ~@3, a4@3 ~]/2",
  AS: "[[b4,d5,g5]@14 ~@2 [g4,b4]@13 ~@3, ~@15 d5@13 ~@4]/2", AT: "[g4,c5,e5]@7 ~",
  AU: "[[g4,c5,e5]@7 ~ [a4,c5,f5]@7 ~, ~@7 g4@7 ~@2]/2", // C F
  AV: "[~@14 e6@2 f6@4 e6@4 c6@5 ~@3, [c5,e5]@7 ~, g4@19 ~@13]/2", AW: "[[g4,b4,d5]@7 ~]/2", AX: "[g4,c5,e5]@13 ~@3",
  AY: "[~@14 e6@2 f6@4 e6@4 c6@5 ~@3, [g4,c5,e5]@7 ~]/2", AZ: "[~@7 e6 f6@2 e6@2 c6@3 ~, [g4,c5,e5]@7 ~]/2",
  BA: "[[g4,b4,d5]@5 ~@3]/2", // G
  BB: "[c5@10 ~@4 e5@11 ~ [g4,c5,e5]@2 ~ [g4,c5,e5]@2 ~, e5@7 ~@9, g4@9 ~ g4@15 ~@7, ~@12 c5@13 ~@7]/2", // C
  BC: "[c5@18 ~@10 [a4,c5]@3 ~, f5@20 c5@7 ~@5, a4@16 ~@2 a4@9 ~@5, ~@22 f5@9 ~]/2", // Am
})).s("gm_epiano2").gain(0.35)

// drums · kick
const kick = s("bd").struct("<[x!4]!30 [x ~ x!2] [x!4]!101 x ~@6>").gain(0.45)

// … 99 more lines

More by Howard Carpendale