Strudelify

Farewell and End Title

Barry John

KeyG majorTempo65 bpm
0:00/0:00
// Farewell and End Title — Barry John
// 64.8 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 137 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(64.8/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 · "A.PIANO 1"
const piano = note(`<
  A@4 B C@5 D E@5 F G@8 H@3 I J@8 K L@2 M N O P@3 Q@6 R S T U V U W U X Y Z Y AA AB Z U X Y AC AD AA AE AF Y AA AG AH
  AI@3 AJ@3 AK@3 AL@3 AM@3 AN@3 AO@3 AP@3 AQ@3 AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG AZ BH AV AW BI@2 BJ@8 ~
>`.pickRestart({
  A: "[~@28 c2@93 ~@7]/4", B: "[c3,g3]@25 [c3,g3]@7",
  C: "[~@2 [a2,e3]@25 [a2,e3]@8 [c3,g3]@25 [c3,g3]@8 ~ [a2,e3]@33 [d2,a2]@25 [d2,a2]@9 [b1,f#2]@24]/5", // A5 C5 A5 D5 B5
  D: "~ [b1,f#2]@8 [d2,a2]@23", // B5 D5
  E: "[~@2 a2@8 [b1,f#2]@33 ~@18 g#3@16 ~@17 g#3@16 ~ [d2,a2] ~@3 [d2,a2]@2 ~@6 [d2,a2] ~@2 [d2,a2] ~ a2@2 ~@14 [d2,a2] ~@3 [d2,a2] ~@7 [d2,a2] ~@2 [d2,a2], ~ d2@8 ~@35 [e2,b2]@33 ~ [e2,b2]@33 ~@17 d2 ~@31, ~@53 f#3@25 ~@8 f#3@25 d3@33 d3@16]/5", // B5 D5 E5
  F: "~ [d2,a2]@2 ~@14 [c3,f3]@15, ~ f2", // D5 F5
  G: "[~@18 a#2@32 ~@2 f3@30 ~@2 [f2,a#2]@34 ~@9 c#4@25 ~@8 f#3@25 ~@9 c#4@25 ~@8 f#3@25 [a2,e3]@4, ~@16 a#1@34 ~ c3@31 ~@36 a2@33 ~ d2@33 ~@4 e3@29 ~@5 a2@29 ~@4, ~@17 f2@33 f2@32 a#1@35 ~@5 e3@29 ~@5 a2@29 a2@33 ~ d2@33 ~@4]/8", // A#5 A5
  H: "[[a2,e3]@8 ~ [a2,e3]@8 [a2,e3]@13 [a2,e3]@4 [a2,e3]@8 [a2,e3]@9 [a2,e3]@12 d#2@8 d#2@8 d#2@8 d#2@9, ~@21 a#2@11]/3", // A5
  I: "c2@9 c2@8 c2@8 c2@7, [g2,c3]", // C5
  J: "[~@2 g#2@8 g#2@8 g#2@8 g#2@8 ~ a#2@8 a#2@8 a#2@8 a#2@9 ~@26 a#2@8 ~@25 g2@8 ~@25 d#3@8 ~@26 f3@8 ~@17 f2@8 f2@9 [f2,c3]@8 [f2,c3]@4 [f2,c3]@8, ~@2 [d#3,g#3]@33 f3@33 d#2@33 ~ c2@33 ~@17 g#3@17 ~@16 a#3@16 ~@55, ~@72 a#2@21 ~@13 g2@21 ~@8 g#2@33 ~ a#2@33 a#2@34 ~@20, ~@77 g3@25 ~@17 c3@17 ~@8 b3@25 ~@8 d4@24 ~@9 d4@25 ~@21, ~@85 d#3@17 ~@8 e3@25 ~@5 d#3@20 ~@13 f3@21 ~@12 f3@30 ~@20]/8", // F5 G#5
  K: "~ [f2,c3]@8 [f2,c3]@4 [f2,c3] ~ [f2,c3] ~ [f2,c3] ~@8 [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  L: "[[f2,c3] ~ [f2,c3]@2 ~@10 [f2,c3]@8 ~ [f2,c3]@4 [f2,c3]@8 [f2,c3]@8 [f2,c3]@4 ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~@7 [f2,c3] ~@2 [f2,c3]]/2", // F5
  M: "~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~@11 f2@8 ~ f2@6, ~@17 [c3,f3]@15", N: "~ f2@8 ~ f2@8 b1@8 b1@6, ~@9 [f#2,b2]@7",
  O: "~@3 b1@8 b1@8 f#2@8 ~ f#2@4, ~@19 [c#3,f#3]@13", // F#5
  P: "[~@4 f#2@9 f#2@8 a#1@8 a#1@8 a#1@9 a#1@8 f2@9 f2@8 f2@8 f2@8 ~ [b1,f#2,b2]@8, ~@7 [f2,a#2]@11 [c3,f3]@11 ~@3]/3", // B5 A#5 F5
  Q: "[b1@8 b1@8 ~ b1@8 f#2@8 ~ f#2@8 f#2@8 f#2@8 ~ a#1@8 a#1@8 a#1@9 a#1@8 f2@9 f2@8 f2@8 f2@8 ~ b1@8 b1@8 b1@8 b1@8 ~ f2@8 f2@8 ~ f2@8 f2@8, ~@25 [c#3,f#3]@33 ~ [f2,a#2]@33 [c3,f3]@33 ~ [f#2,b2]@33 [c3,f3]@33]/6", // F#5 A#5 F5 B5 F5
  R: "b1!4, [f#2,b2]", S: "d#2!4, a#2", T: "c2!4, [g2,c3]", U: "~@3 a#2, d#2, ~ a#2@5 ~@2, ~ g3@3, ~ d#3",
  V: "~@3 g2, c2, ~ g2@5 ~@2, ~ e3@3, ~ c3", W: "~ d#3, d#2, ~ a#2@7, ~ g3@3",
  X: "~@7 d#3, c2, ~ g2@7, ~@2 d#3@5 ~, ~@5 d3@3", Y: "~@3 d#3, g#2, ~ d#3@5 ~@2, ~ c4@3, ~ g#3",
  Z: "~@7 a#2, a#2@3 c3, ~ g#3@7, ~ d4@3, ~@5 d3@3", AA: "~@7 a#2, d#2, ~ a#2@6 ~, ~ g3@3, ~@5 d#3@3",
  AB: "~@3 c3, f2, ~ c3@5 ~@2, ~ g#3@3, ~ f3", AC: "~@7 a#2, a#2@3 c3, ~ g#3@7, ~ d4@3, ~@21 d3@11",
  AD: "~@24 d#3@7 ~, g#2@31 ~, ~ d#3@5 ~@2, ~@8 c4@23 ~, ~@16 g#3@15 ~", AE: "~ a#2, f2 ~, ~ c3@3 ~@4, ~ g#3@3",
  AF: "~@29 a#2@3, d#2, ~ a#2@6 ~, ~ g3@3, ~@5 d#3@3", AG: "~@17 a#2@15, f2 ~, ~ c3@3 ~@4, ~@9 g#3@23",
  AH: "~@9 d#4@23, ~ d#3@31, ~@5 a#3@27",
  AI: "[~@9 f#3@16 ~@8 f#3@16 ~@19 b3@4 ~@20 g3@3 ~, ~ d2@24 d2@24 ~@3 d3@20 ~@4 g2@19 ~, ~@4 a2@20 ~@5 a2@20 g2@24 c2@23, ~@57 b3@5 b3@3 a3@8 ~@8 e3@5 a3@9 ~, ~@60 d4@12 ~@12 g3@5 e3@7]/3",
  AJ: "[~@20 b3@3 ~@22 a3@4 ~@19 g3@4 ~@20 e4@4, ~ g2@23 ~ d2@24 c2@24 ~@11 e4@5 c4@7, ~@4 d3@19 ~@5 a2@20 ~@4 g2@20 ~ a2@23, ~@9 b3@5 b3@3 a3@7 ~@9 f#3@5 b3@10 ~@13 g3@4 e3@8 ~@3 e3@20, ~@12 d4@11 ~@14 a3@4 f#3@8 ~@8 e3@5 a3@10 ~@9 c4@5 f#4@10]/3",
  AK: "[~@21 a3@4 ~@19 a3@4 ~@9 b3@4 ~@7 b3@4 ~@21 g3@3, ~ d2@24 d2@24 ~@13 b3@3 a3@8 ~@8 e3@6 a3@9, ~@4 a2@20 ~@5 a2@20 g2@24 c2@23, ~@9 f#3@6 b3@10 ~@12 a3@4 f#3@8 ~@3 d3@20 ~@5 g2@19, ~@13 a3@4 f#3@8 ~@8 f#3@6 b3@10 ~@12 d4@12 ~@12 g3@4 e3@7]/3",
  AL: "[~@9 b3@4 ~@8 b3@4 ~@20 a3@4 ~@20 g3@4 ~@20 e4@3, ~ g2@24 d2@24 c2@24 ~@12 e4@4 c4@7, ~@5 d3@20 ~@4 a2@20 ~@3 g2@20 ~ a2@23, ~@13 d4@12 ~@12 a3@4 f#3@8 ~@8 e3@6 a3@10 ~@8 c4@6 f#4@9, ~@15 b3@2 a3@8 ~@8 f#3@5 b3@10 ~@13 g3@4 e3@8 ~@4 e3@19]/3",
  AM: "[~@21 a3@4 ~@20 a3@4 ~@16 a3@8 ~@16 d3@7, ~ d2@24 d2@24 ~@27 d2@20, ~@5 a2@20 ~@4 a2@19 ~@5 a2@20 ~@8 a2@15, ~@9 f#3@6 b3@10 ~@12 a3@4 f#3@8 ~@8 e3@16 ~@11 f#3@12, ~@13 a3@4 f#3@8 ~@8 f#3@6 b3@10 ~@11 c4@12 ~@24]/3",
  AN: "[~@17 g3@8 ~@16 g3@8 ~@16 a3@8 ~@16 e3@7, ~@4 g2@20 ~@5 g2@20 a2@24 e2@23, ~@9 d3@16 ~@8 d3@16 ~@4 e3@20 ~@4 b2@19, ~@13 b3@12 ~@12 b3@12 ~@8 c4@16 ~@8 g3@15]/3",
  AO: "[~@17 f#3@8 ~@20 f#3@4 ~@8 b3@4 ~@8 b3@4 ~@20 g3@3, ~ b2@24 d2@24 ~@14 b3@2 a3@8 ~@8 e3@5 a3@10, ~@5 a3@20 ~@4 a2@20 g2@24 c2@23, ~@9 d4@16 ~@8 f#3@8 e3@8 ~@4 d3@20 ~@4 g2@19, ~@37 a3@12 ~@12 d4@12 ~@12 g3@4 e3@7]/3",
  AP: "[~@9 b3@4 ~@8 b3@3 ~@21 a3@4 ~@20 g3@4 ~@19 d4@4, ~ g2@23 ~ d2@24 c2@23 ~@13 e4@4 c4@7, ~@5 d3@19 ~@5 a2@20 ~@4 g2@19 ~ a2@23, ~@13 d4@12 ~@12 a3@4 f#3@8 ~@8 e3@6 a3@9 ~@9 c4@6 f#4@9, ~@15 b3@2 a3@7 ~@9 f#3@6 b3@10 ~@12 g3@4 e3@7 ~@5 e3@19]/3",
  AQ: "[~@9 b3@4 ~@8 b3@4 ~@8 d4@15 ~@9 b3@4 ~@8 b3@3 ~@9 d4@15, ~ g2@24 ~@24 g2@23 ~@24, ~@5 d3@20 b2@23 ~@5 d3@19 ~ b2@23, ~@13 d4@12 ~@36 d4@11 ~@24, ~@15 b3@2 a3@8 ~@4 f#3@19 ~@15 b3@2 a3@7 ~@5 f#3@19]/3",
  AR: "~@9 f#3@4 ~@4 e3@15, ~ d2@31, ~@5 a2@27, ~@13 a3@19, ~@15 f#3@17",
  AS: "~@9 f#3@4 ~@4 e3@15, ~ d2@31, ~@5 a2@27, ~@13 a3@19, ~@7 f#3@9", AT: "~@5 a2@27, ~ d2@31",
  AU: "~@5 c#3@27, ~ f#2@31", AV: "~@9 b2@23, ~ b1@31, ~@5 f#2@27", AW: "~@9 a2@23, ~ a1@31, ~@5 e2@27",
  AX: "~@9 [d3,f#3,a3]@23, ~ d2@31, ~@5 a2@27", AY: "~@9 [f#3,a3,c#4]@23, ~ f#2@31, ~@5 c#3@27",
  AZ: "~@9 [d#3,f#3,b3]@23, ~ b1@31, ~@5 f#2@27", BA: "~@9 [e3,a3,c#4]@23, ~ a1@31, ~@5 e2@27",
  BB: "~@17 f#3@15, ~ d2@31, ~@9 a2@23", BC: "~@17 c#4@15, ~ f#2@31, ~@9 c#3@23",
  BD: "~@17 d#4@15, ~ b1@31, ~@9 c#4@23", BE: "~@17 d#4@15, ~ a1@31, ~@9 c#4@23", BF: "~@9 f#3@23, ~ d2@31, ~@5 a2@27",
  BG: "~@9 [f#3,a3]@23, ~ f#2@31, ~@5 c#3@27", BH: "~@9 [c#3,e3,a3]@23, ~ a1@31, ~@5 e2@27",
  BI: "~@9 d#3@23, ~ b1@31, ~@5 f#2@27", BJ: "[~ b1@255, ~ b2@184 ~@71]/8",
})).s("gm_piano").gain(0.25)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  ~@2 A B C D@2 E F@2 G H@8 I@4 J@2 K@3 L M@7 N O@2 P Q R@8 S@3 T U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM
  AN AO AP AQ AR AS@7 AT@6 AU@3 AV@3 AW@6 AX@3 AY@2 AZ BA BB BC BD@2 BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT
  BU@3 ~@4
>`.pickRestart({
  A: "~@5 e4@10 ~, ~@6 d4@25 ~", B: "~@3 e5@5, ~@7 d5@25",
  C: "~@25 [e4,g4]@7, [e4,g4]@25 ~@7, ~ c4@24 ~@7, ~@9 e5@23, ~@17 g5@15", // Em
  D: "[~@27 [c4,e4,a4]@8 ~@25 [e4,g4]@4, ~@2 [c4,e4,a4]@25 ~@8 [e4,g4]@25 ~@4, ~@10 e5@25 ~@9 e5@20, ~@18 a5@17 ~@29]/2", // Am Em Am Em
  E: "~@11 a5@5, ~@5 [c4,e4,a4]@27, ~@13 e5@19", // Am
  F: "[~@31 [d3,f#3,a3]@9 ~@16 [b4,b5]@8, ~@6 [d3,f#3,a3]@25 ~@9 [d3,f#3,b3]@24, ~@14 f#5@25 ~@25, ~@22 [a4,a5]@17 ~@9 [f#4,f#5]@16]/2", // D B D Bm A F#
  G: "~ [d3,f#3,b3]@8 ~@16 [a4,a5]@7, ~@9 [d3,f#3,a3]@23, ~@17 [f#4,f#5]@15", // Bm A D F#
  H: "[~@2 [d3,f#3,a3]@8 ~@17 [b4,b5]@17 ~@4 b5@4 ~@9 d6@16 ~@5 b5@4 ~@8 d6@16 ~ [d4,e4,f4,a4]@33 [d4,e4,f4,a4]@29 ~@21 f4@13 g4@3 ~@10 a4@25 ~@8 d4@3, ~@10 [d3,f#3,b3]@34 [e3,g#3,b3]@33 b3@33 ~@68 a3@12 a3@18 ~@2 f3@34 ~@5 c4@7, ~@18 [f#4,f#5]@25 ~@10 b5@25 e3@33 ~@71 c4@26 ~@3 [a#3,d4]@34 a3@11, ~@57 e6@21 ~@8 b5@25 ~@75 d4@22 ~@4 g4@33 ~@11, ~@90 e6@21 ~@145]/8", // D B Dm Bm E F# A#
  I: "[~@17 g4@3 ~@10 a4@23 ~@31 a4@4 f#4@8 ~@17 b4@8 ~@7, ~ a3@20 [f3,a#3,d4]@33 ~@9 a4@21 ~@4 a4@16 a4@17 ~@7, ~@5 f4@15 ~@2 g4@31 ~@10 [e4,c#5]@25 d4@33 ~@7, ~@71 b4@16 ~@9 f#4@25 ~@7]/4", // A# C#m
  J: "[~@22 a4@4 ~ f#4@8 ~@17 b4@8 ~@4, ~@2 c#5@25 ~@8 f#4@25 ~@4, ~@2 a4@20 ~@5 d4@33 ~@4, ~@10 b4@17 a4@16 a4@17 ~@4]/2",
  K: "[[c#4,e4]@8 e4@8 ~@14 e4@4 e4@8 [c#4,e4]@9 e4@12 ~@29 f4@4, ~@21 g3@11, ~@21 d#3@4 d#3@7, ~@67 a#3@29, ~@79 d4@17]/3", // C#m
  L: "c4@5 ~@8 g3@19, e4, g3@13 ~@19, ~@5 c4@27",
  M: "[~@30 f4@4 ~ [a#3,d4,f4]@33 ~@5 d#4@8 ~@16 f5@4 ~ c5@4 ~@8 [c4,e4,g4]@21 ~@29 [f4,f5]@4 ~ [a#4,d5,f5,a#5]@50 ~@5, ~@6 b3@29 ~@105 [b3,b4]@29 ~@55, ~@8 d#4@27 ~@46 d#4@21 ~@4 c5@29 ~@9 [f4,f5]@12 [g4,g5]@13 ~@55, ~@10 f4@12 g4@12 ~@38 [g4,a#4]@29 ~ g4@12 ~@27 [d#4,d#5]@27 ~@56, ~@14 g#4@20 ~@51 d5@17 e5@33 ~@13 [g#4,g#5]@21 ~@55]/7", // A# C F A# B F G Gm …
  N: "~@3 [g3,g#3,c4]@5", O: "[~ [g3,g#3,c4]@8 [g3,g#3,c4]@4 [g3,g#3,c4]@30 ~@3 [g3,g#3,c4]@18]/2",
  P: "~@3 [g3,g#3,c4]@9 [g3,g#3,c4]@4 [g3,g#3,c4]@16", Q: "~@29 g#4@3, ~@17 [g#3,c4]@15, ~@21 g4@11",
  R: "[~@31 g#4@20 ~@13 a#4@21 ~@12 c5@21 ~@13 [g#4,g#5]@20 ~ f#4@4 ~@9 [g#4,g#5]@20 ~@13 [a#4,a#5]@20 ~ a#4@4 ~@8 [c5,c6]@21 [g#3,c4,f4]@4, ~@18 [f#3,b3,d#4]@33 [a#3,c#4,f#4]@33 ~ [a#3,d4,f4]@34 ~@4 [g4,g5]@28 ~@5 [f#4,f#5]@29 a#4@13 ~@25 [a#4,a#5]@29 ~@4, ~@22 f#4@29 ~@5 g#4@29 ~@4 a#4@29 [g#3,c4,f4]@33 ~ [f#3,b3,d#4]@33 [a#3,c#4,f#4]@33 ~ [a#3,d4,f4]@33 ~@4, ~@95 [g#4,g#5]@14 ~@19]/8", // G# A# C Fm B F# A# G …
  S: "[~@21 c4@8 ~@13 g#3@20 ~ c4@4 ~@21 c4@8, c5@29 ~@38 c5@29, c4@21 ~@9 [d#3,f#3,b3]@33 ~@4 c4@20 ~@9, ~@9 [a#4,a#5]@21 ~@4 a#3@29 [g#3,f4]@33, ~@75 [a#4,a#5]@20 ~]/3", // B A# C# A#
  T: "~@3 g#3@5, [d#3,f#3,b3], ~ a#3@7", // B
  U: "[~@7 f4 c4 ~@2 g3@5, g3@8 g3@3 ~@5, d#3@9 ~@3 d#3@52, ~@5 a#3@11 d4@16 e4@32, ~@9 c4@7]/2",
  V: "~ d#4@2 ~@4 f5, ~ [g4,a#4]@7, ~@3 d#4@5, ~ d5", W: "c5 c5@2 [c5,e5,g5]@5, g4, e5@3 ~@5", X: "~ a#3@3, ~ g3@7",
  Y: "~ a#3@3, ~@4 g3@27 ~", Z: "a#3@5 ~@2 d#4, [f3,g3], d#4@7 ~, ~@21 a#3@11",
  AA: "[c4,d#4]@12 ~ g3@19, g4, ~@12 [c4,d#4]@19 ~", AB: "~@7 d#5, [g#4,c5], d#5@7 ~, ~@5 f5@3", AC: "[d4,f4,a#4]",
  AD: "~@28 g#4@3 ~, [d#4,c5], g#4@7 ~, ~@5 a#4@3", AE: "~@3 [g3,a#3,d#4]@5, [f4,g4,a#4]",
  AF: "f4@5 ~@2 d#4, [c4,g#4], ~@5 f4@3", AG: "[a#3,d4,f4]", AH: "~@7 d#4, [f3,g3], d#4@5 a#3@3, a#3 d#6, ~@3 d#5@5",
  AI: "[c4,d#4]@12 ~ [g3,c4,d#4]@19, g4", AJ: "~@7 d#5, [g#4,c5], d#5@21 f5@11, ~@3 c6@5, ~ g#6",
  AK: "~@17 f6@15, [d4,f4,a#4], ~@3 d6@5", AL: "[d#4,g#4,c5]@8 ~@4 d#5@4 d#6 ~@4 d5@6 ~ d#5 ~@3",
  AM: "[a#4,d#5]@12 ~ [a#4,d#5,a#5]@19, [f4,g4]", AN: "~ c5@17 ~@11 [d#4,d#5]@3, [g#4,g5], ~@21 [f4,f5]@11",
  AO: "~@17 g5@15, [d#4,g4,a#4,d#5], ~ f5@3", AP: "~@29 d#5@3, c5, ~@5 d5@3", AQ: "~@3 a#5@5, d#5",
  AR: "~@7 d#5, g5, ~@5 f5@3",
  AS: "[~@17 g4@14 ~@66 d5@6 ~@18 d6@6 ~@18 d5@6 ~@21 b5@4 ~ [c5,e5]@8 ~@11 b5@4 ~ [c5,e5]@8 ~@11 b5@4, ~ d#5@30 ~ f#4@47 ~ b5@23 ~@2 c6@23 b5@8 ~ b5@14 ~@73, ~@12 f4@19 d4@48 ~@2 d6@22 ~@29 c6@19 ~@73, ~@33 a4@46 g5@24 ~ g5@23 ~ g5@23 ~ [f#5,a5]@25 g5@24 g5@23, ~@73 d5@24 ~@6 e5@24 d5@17 ~@7 d5@25 ~@9 [c5,e5]@16 ~@8 [c5,e5]@15]/7", // C F#m C
  AT: "[~@21 a5@2 ~@18 d4@7 ~@17 d4@6 ~@18 d5@6 ~@18 d4@6 ~@22 b4@4 [c4,e4]@8 ~@12 b4@4 e4@8 ~@12 b4@3, f#5@23 c5@24 ~ [g4,b4]@23 e4@24 d4@3 ~@3 c5@19 ~@72, ~ e6@23 ~@95 d4@25 ~@9 [c4,e4]@16 [c4,g4]@23, ~ a5@20 ~@3 f#5@26 ~@23 c5@22 ~@2 b4@8 b4@15 ~ a4@23 ~@48, ~@9 d6@15 ~ [a5,d6]@23 ~ d5@22 ~ g4@23 ~ g4@24 f#4@24 ~ g4@24 ~@8 e4@15]/6", // C G C C5 D5
  AU: "[~@21 a4@3 ~@17 d4@8 ~@19 b4@4 ~ a4@11 ~@8 c5@4, ~ [f#4,e5]@23 [c4,f#4]@25 [c4,e4]@24 [d4,f#4]@23, ~ a4@20 ~@4 a4@23 ~@9 a4@16 ~@11 a4@12, ~@9 d5@15 ~@2 d5@23 ~@40 b4@7]/3", // F#7 Cdim C D
  AV: "[~@41 d5@8 ~@20 b5@4 ~@20 e5@3, ~ [g4,c5]@24 [g4,b4]@24 [a4,c5,e5]@24 [b4,d5,g5,a5]@23, ~ d4@20 d4@28 ~@12 d6@12 ~@23, ~@9 [b4,d5]@16 ~@32 e6@16 ~@23, ~@65 c6@8 ~@8 b5@15]/3", // C5 G Am G Bm
  AW: "[~@21 e5@4 ~@16 [d4,d5]@7 ~@17 [d4,d5]@6 ~@18 [d5,d6]@6 ~@2 b5@2 ~@14 [d4,d5]@8 ~@20 b4@4 ~@20 b4@4 ~@8 d5@15, ~ [d5,f#5,a5]@24 [c5,f#5,a5]@23 d5@16 ~@7 c5@24 b4@2 ~@4 [c5,c6]@19 ~ [a4,d5,f#5]@24 [e4,g4]@23 ~ [e4,g4,b4]@23, ~@9 b5@16 ~@8 b5@16 [g5,b5,d6]@22 ~ [e5,g5]@23 ~ [d5,g5]@2 ~@47 b4@20 ~@27, ~@73 c6@22 ~@10 b5@15 ~@2 a5@23 ~@8 d5@15 ~@24]/6", // D F#dim C D Em G Em G5
  AX: "[~ [g4,b4]@24 [f#4,b4]@22 ~@2 [b5,d6]@23 ~@2 d6@22, ~ d5@46 d5@25 d5@24, ~@48 g5@24 ~ b5@23]/3", // G B5 Bm
  AY: "~ [d3,f#3,a3]@31", AZ: "~@9 e3@8 [d3,f#3]@15", BA: "~@17 a3@15, ~@9 f#3@23", BB: "~@17 b3@15, ~@9 [d#3,f#3]@23",
  BC: "~@17 [a3,c#4]@15, ~@9 [e3,b3]@23", BD: "[~@17 [f#4,f#5]@18 ~@14 [a4,a5]@15, ~@9 [e4,e5]@24 ~@8 [f#4,f#5]@23]/2",
  BE: "~@9 f#4@2 ~@6 [b4,b5]@15, ~@9 f#5@23", BF: "~@17 [c#5,c#6]@15, ~@9 [b4,b5]@23", BG: "~ [d4,f#4,a4]@31",
  BH: "~ [c#4,f#4,a4]@31", BI: "~ [d#4,f#4,b4]@31", BJ: "~ [e4,a4,c#5]@31",
  BK: "~@9 [f#4,a4]@8 [f#4,a4,d5,f#5]@15, ~@9 [a3,d4]@23", BL: "~@9 c#5@8 [c#5,f#5,a5,c#6]@15, ~@9 [c#4,f#4,a4]@23",
  BM: "~@9 [f#5,b5]@8 [d#5,f#5,b5,d#6]@15, ~@9 [c#5,c#6]@23", BN: "~@9 [a5,c#6]@8 [d#5,a5,c#6,d#6]@15, ~@9 [c#5,e5]@23",
  BO: "~@9 c#4@3 ~@5 d#4@15, ~@9 [d#3,f#3,b3]@23", BP: "~@17 d#4@8 ~@7, ~@9 [e3,a3,c#4]@23", BQ: "~ [f#3,b3,d#4]@31",
  BR: "~ [f#3,d#4]@31", BS: "~ b3@14 ~@17", BT: "~ b4@12 ~@4 f#4@15, ~@13 c#5@19, ~@15 b4@17",
  BU: "[~@25 f#5@64 ~@7, ~ g#4@64 ~@31, ~@13 a#4@64 ~@19, ~@17 b4@30 ~@49]/3",
})).s("gm_piano").gain(0.3)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<~@2 A B C ~ D@2 E@2 ~@3 F@2 ~@8 G H@3 ~@73 I ~@4 J ~@21 K L@3 M@3 ~@3>".pickRestart({
  A: "~@2 g3@29 ~", B: "~@3 g4@29", C: "~@25 c4@7", D: "[~@7 c4@2 ~@7, ~@3 c4@25 ~@36, ~@20 g5@17 ~@27]/2",
  E: "[~@14 f#4@25 ~@25]/2", F: "[~@13 g#3@33 ~@18]/2", G: "~@2 e4@25 ~@5",
  H: "[~@28 [a3,c#4,e4]@4 a3@8 [a3,c#4]@8 ~ [a3,c#4,e4]@13 [a3,c#4]@4 [a3,c#4]@8 a3@9 [a3,c#4]@12 ~, ~@7 a4@16 ~]/3", // A
  I: "~@9 b4@15 ~@8", J: "~ f#5@3", K: "~ b3@31",
  L: "[~@25 b3@40 ~@14 b4@2 ~@15, ~@13 f#3@52 ~@31, ~@15 b3@10 ~@71, ~@17 d#4@48 ~@31]/3",
  M: "[~@15 b4@2 b4@64 ~@15, ~ d#5@64 ~@31, ~@13 c#5@64 ~@19]/3",
})).s("gm_piano").gain(0.2)

// other · french horn · "FR.HORN"
const french_horn = note("<~@27 A B ~@24 C D C E F G ~@49 H I J K ~@4 L M N@2 ~@4 N O ~@2 P@2 ~@7>".pickRestart({
  A: "~@3 a#3@7 d#3@4 d4@13 f4@5", B: "e4@4 c4@9 g3@19", C: "~ a#3@2 d#3 d4@3 f4", D: "e4 c4@2 ~@5",
  E: "e4@4 c4@8 g4@17 ~@3", F: "~@3 g3@4 ~ a#3@19 ~@5", G: "~@4 g3@4 a#3@19 ~@5", H: "~@9 e3@8 f#3@15",
  I: "~@9 f#3@8 a3@15", J: "~@8 f#3@8 ~ b3@15", K: "~@9 b3@8 c#4@14 ~", L: "~@9 a2@8 f#3@15", M: "~@9 c#3@8 c#4@15",
  N: "~@9 c#4@8 d#4@15", O: "~@9 c#4@7 d#4@15 ~", P: "[~ b3@12 f#3@2 b3@2 d#4@7 ~ b3@34 ~@5]/2",
})).s("gm_french_horn").gain(0.29).pan(0.3)

// chords · brass section · "BRASS 1"
const brass_section = note("<~@14 A B C ~@19 D E@2 F@2 ~@96>".pickRestart({
  A: "~@15 [d2,a2,f3,a3,d4]@16 ~", B: "[d2,a2,f3,a3,d4] ~@3 [d2,a2,f3,a3,d4]@4", C: "~ [d2,a2,f3,a3,d4]@3 ~@28",
  D: "~@3 [g3,g#3,c4]@5", E: "[[g3,g#3,c4]@7 ~@2 [g3,g#3,c4]@3 ~ [g3,g#3,c4]@27 ~@6 [g3,g#3,c4]@18]/2",
  F: "[~@3 [g3,g#3,c4]@8 ~ [g3,g#3,c4]@3 ~ [g3,g#3,c4]@27 ~@21]/2", // G#maj7
})).s("gm_brass_section").gain(0.25).pan(0.7)

// other · trumpet
const trumpet = note("<~@75 A B C D ~@50 E F G@2 ~@4>".pickRestart({
  A: "c5@5 d5@2 d#5", B: "d#5@6 a#5@9 ~", C: "g5@20 ~ f5@8 d#5@3", D: "~ d#5@24 ~@7",
  E: "b4@12 ~ c#5@2 b4@2 f#4@12 ~@3", F: "~ g#4@11 ~ a#4@2 b4@2 b4@8 f#5@7", G: "[~ d#5@12 c#5@2 b4 ~ b4@40 ~@7]/2",
})).s("gm_trumpet").gain(0.11).pan(0.4)

// other · oboe
const oboe = note("<~@8 A@7 ~@122>".pickRestart({
  A: "[~@14 f#4@8 a4@18 ~@8 f#4@8 b4@16 ~@9 f#4@8 a4@17 ~@8 f#4@8 b4@17 ~@5 b4@3 ~@2 b4@4 e5@4 d5@15 ~@6 b4@3 ~ b4@4 e5@4 d5@14 ~@20]/7",
})).s("gm_oboe").gain(0.22).pan(0.6)

// chords · trombone
const trombone = note(`<
  ~@4 A B@5 C D@4 ~ E@4 F@5 ~ G@2 H I J@7 ~@3 K L@8 ~@4 M N O P M@2 Q R S T S U V W X Y Z AA AB AC AD AE AF AG AH AI
  ~@27 AJ AK ~@18 AL@2 ~@9
>`.pickRestart({
  A: "~ [g3,c4]@24 ~ c3@6, e4, c3@24 ~ [g3,c4]@7, ~ g4@31", // C5
  B: "[~@2 [a2,e3,c4,e4,a4]@24 ~ [a2,e3,c4,e4,a4]@8 ~ [c3,c4]@23 ~ [c3,g3,c4,e4,g4]@8 ~ [a2,e3,c4,e4,a4]@30 ~@3 [d2,a2,d3,f#3,a3]@23 ~@2 [d2,a2,d3,f#3,a3]@8 ~ [b1,f#2,d3,b3]@24, ~@35 [g3,e4,g4]@24 ~@76 f#3@24 ~]/5", // Am C Am D Bm C
  C: "~ [b1,f#2,d3,f#3,b3]@8 [d2,a2,d3,f#3,a3]@23", // Bm D
  D: "[~@2 [d2,a2,d3,f#3]@8 [b1,f#2,d3,f#3,b3]@33 ~ [e2,b2,e3,g#3,b3]@32 ~@2 [e2,b2,e3,b3]@32 ~@18, ~ a3@8 ~@68 g#3@31 ~@20]/4", // D Bm E E5
  E: "[~@18 [c3,f3,a3]@33 [f3,a#3,d4]@33 ~ [c3,f3,a3]@33 [a#3,d4]@10]/4", // F A# F A#
  F: "[~@22 [e3,a3,c#4]@33 ~ [f#3,a3,d4]@33 [e3,c#4]@33 ~ [f#3,d4]@31 ~@6, ~@89 a3@66 ~@5]/5", // A D C#m D
  G: "[~@31 [a#2,d#3,g3]@33]/2", H: "[g2,c3,e3]", I: "~ [g#2,d#3,g#3]@15",
  J: "[~@3 [a#2,d3,f3]@33 [a#2,d#3,g3]@33 ~ [g2,c3,e3]@32 ~ [g#2,d#3,g#3]@33 ~ [a#2,d3,f3]@60 ~@27]/7", // A# D# C G#5 A#
  K: "~@17 [f3,g#3,c4]@15", // Fm
  L: "[~@18 [f#3,b3,d#4]@29 ~@4 [a#3,c#4,f#4]@30 ~@3 [a#3,d4,f4]@30 ~@5 [g#3,c4,f4]@28 ~@4 [b3,d#4,f#4]@28 ~@6 [a#3,c#4,f#4]@30 ~@4 [a#3,d4,f4]@30 ~@7]/8", // B F# A# Fm B F# A#
  M: "[d#3,g3,a#3]@31 ~", N: "[e3,g3,c4]@7 ~", O: "[d#3,g3,a#3]@15 ~", P: "[e3,g3]@27 ~@5", Q: "[f3,g3,a#3]",
  R: "[d#3,g3,c4]@24 [d#3,g3,c4]@7 ~", S: "[g#3,c4,d#4]@31 ~", T: "[f3,g#3,d4]@25 ~@7",
  U: "[f3,g3,a#3]@23 ~ [f3,g3,a#3]@8", V: "[f3,g#3,c4]@31 ~", W: "[f3,g#3,d4]@31 ~", X: "[f3,g3,a#3]@31 ~",
  Y: "[d#3,g3,c4]@11 ~ [d#3,g3,c4]@4", Z: "~ [g#3,d#4]@31, c4@31 ~", AA: "~ [f3,g#3,d4]@28 ~@3",
  AB: "~ [g#3,c4,d#4]@31", AC: "~ [f3,g3]@21 ~@2 [f3,g3,a#3]@8, a#3@21 ~@11",
  AD: "~ [f3,c4]@15 [f3,g#3,d4]@15 ~, g#3@15 ~@17", AE: "~ [f3,g3,a#3]@29 ~@2", AF: "~ [g#3,c4,d#4]@28 ~@3",
  AG: "~ [f3,g3,a#3]@20 ~@3 [f3,g3,a#3]@7 ~", AH: "~ c4@15 ~ [f3,g#3,d4]@15, [f3,g#3]@15 ~@17",
  AI: "~ [f3,a#3]@31, g3@31 ~", AJ: "~ [d3,f#3,a3]@28 ~@3", AK: "~ [d3,f#3,a3]@27 ~@4", AL: "~ [f#3,b3,d#4]@28 ~@3",
})).s("gm_trombone").gain(0.19).pan(0.4)

// other · flute
const flute = note("<~@33 A@3 ~@13 B@2 C@2 ~@39 D@2 E@2 ~@5 F@2 ~@34>".pickRestart({
  A: "[~@11 b4@2 d#5@3 f5@4 g#5@8 g5@8 f5@4 ~ a#5@42 ~@13]/3", B: "[c5@8 ~ a#5@52 ~@3]/2", C: "[~@3 c5@8 a#5@49 ~@4]/2",
  D: "[~@9 d4@8 e4@7 a4@12 b4@4 a4@11 ~ a4@4 b4@5 c5@3]/2", E: "[~ d5@8 d5@11 d4@4 ~ b4@16 ~@23]/2",
  F: "[~@13 b4@4 b4@8 d5@12 b4@4 b4@8 d5@12 ~@3]/2",
})).s("gm_flute").gain(0.2).pan(0.6)

// other · clarinet
const clarinet = note("<~@31 A B@4 ~@4 C@3 D E ~@92>".pickRestart({
  A: "~@9 a#4@8 d#4@4 d5@11", B: "[~@2 f5@4 e5@4 c5@8 g4@18 ~@7 b4@2 d#5@2 ~ f5@4 g#5@8 g5@9 f5@3 ~ a#5@42 ~@13]/4",
  C: "[~@21 g4@8 g#4@19 ~@6 f#4@8 ~ g#4@19 ~@6 g#4@8]/3", D: "a#4@18 ~@7 a#4@7", E: "~ c5@18 ~@13",
})).s("gm_clarinet").gain(0.16).pan(0.4)

// other · orchestral harp · "HARP"
const orchestral_harp = note(`<
  ~@24 A@2 ~@53 B C D E F G H I J K L M N O ~@2 P Q R S T U V@2 W X Y Z AA ~@29
>`.pickRestart({
  A: "[~@28 [e3,a3,c#4,e4]@13 ~@23, ~@27 a2@12 ~@25]/2", B: "~ d2@3 a2@4 f#3@6 ~@10 d2@4 a2@4",
  C: "~ f#3@8 ~@7 g2@4 ~ d3@4 b3@5 ~@2", D: "~@4 c2@2 g2@2 e3@3 ~@5", E: "~ g2@3 d3@3 ~ b3@7 ~@10 d2@3 ~ a2@3",
  F: "f#3@6 ~@11 c2@3 g2@4 e3@7 ~", G: "~@8 a2@4 e3@4 ~ c4@6 ~@9", H: "d2@3 ~ a2@4 f#3@6 ~@11 d2@3 ~ a2@3",
  I: "~ f#3@7 ~@8 g2@4 ~ d3@4 b3@7", J: "~@9 c2@2 ~@2 g2@4 e3@9 ~@6", K: "~ g2@3 d3@3 ~@2 b3@7 ~@9 d2@4 a2@3",
  L: "~ f#3@7 ~@9 c2@3 ~ g2@4 e3@7", M: "~@8 a2@4 e3@3 ~ c4@6 ~@10", N: "~ d2@3 a2@4 ~ f#3@15 d2@5 c3@3",
  O: "~ f#3@12 ~@19", P: "~@17 a2@3 ~ e3@3 ~ c4@4 ~@3", Q: "~@9 e2@4 b2@3 g3@9 ~@7",
  R: "~ b2@4 a3@4 b3@5 ~@11 d2@4 ~@3", S: "~ d3@9 ~@7 g2@3 ~ d3@3 ~ b3@6 ~", T: "~@9 c2@3 g2@4 ~ e3@7 ~@8",
  U: "~ g2@3 ~ d3@4 b3@14 ~@2 d2@4 a2@3", V: "[~ f#3@5 ~@11 c2@4 g2@4 g3@11 ~@5 a2@3 e3@4 c4@9 ~@7]/2",
  W: "~ g2@4 d3@4 b3@8 ~@8 b2@3 f#3@4", X: "d4@6 ~@10 g2@4 ~ d3@4 b3@7", Y: "~@9 b2@3 f#3@4 d4@12 ~@4",
  Z: "~ d2@4 a2@4 f#3@5 ~@18", AA: "d2@4 ~ a2@4 f#3@5 ~@18",
})).s("gm_orchestral_harp").gain(0.19).pan(0.3)

// … 53 more lines

More by Barry John