Strudelify

The Buffalo Hunt

Barry John

KeyE♭ majorTempo115 bpm
0:00/0:00
// The Buffalo Hunt — Barry John
// 115 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 7 "TRUMPET" named as a brass, played on trumpet (its harmonica patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 74 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE X AF AG AH AI AJ AK AL AM AN ~@7 AO@2 AP AQ AR@2 AS
  AT AU AV@3 AW@2 AX@2 ~@10
>`.pickRestart({
  A: "d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~, g1@11 ~ d2@12 b2@8",
  B: "d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~, g1@11 ~ e2@12 b2@7 ~",
  C: "d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~, g1@11 ~ gb2@12 b2@8",
  D: "d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4@2 g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~ d5 ~ g4 ~ gb4 ~ g4 ~, g1@11 ~ e2@12 b2@7 ~",
  E: "g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5@2 b4 ~ c5 ~, c2@11 ~ g2@12 e3@8",
  F: "g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~, c2@11 ~ a2@12 e3@8",
  G: "g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5@2 g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~, c2@11 ~ b2@12 e3@8",
  H: "g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5 ~ g5 ~ c5 ~ b4 ~ c5@2, c2@5 ~ g2@6 e3@4",
  I: "c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4@2 f4 ~, f2@11 ~ c3@12 a3@8",
  J: "c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4@2 f4 ~, f2@11 ~ d3@12 a3@8",
  K: "c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~, f2@11 ~ e3@12 a3@8",
  L: "c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~ c5 ~ f4 ~ e4 ~ f4 ~, f2@11 ~ c3@12 a3@7 ~",
  M: "f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~, bb2@11 ~ f3@11 ~ d4@8",
  N: "f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~, bb2@5 ~ g3@6 d4@4",
  O: "f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4@2 f5 ~ bb4 ~ a4 ~ bb4 ~, bb2@11 ~ a3@12 d4@8",
  P: "f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4 ~ f5 ~ bb4 ~ a4 ~ bb4@2, bb2@11 ~ f3@11 ~ d4@6 ~@2",
  Q: "bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~@3 bb5 ~ eb5 ~ d5 ~@3, eb2@11 ~ bb2@12 g3@8",
  R: "bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~, eb2@11 ~ c3@12 g3@8",
  S: "bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5@2 eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~, eb2@11 ~ bb2@12 g3@8",
  T: "bb5 ~ eb5 ~ d5 ~ eb5 ~ bb5 ~ eb5 ~ d5 ~ eb5 ~@9 g3@7 ~, eb2@11 ~ c3@12 ~@8, ~@8 bb5@7 ~",
  U: "[f3,g3,bb3]@10 ~@2 [g3,bb3]@19 ~, ~@3 f3@4 ~", V: "[eb3,g3,c4]@5 ~ [eb3,g3,c4]@9 ~",
  W: "[eb3,ab3,c4]@9 ~@3 [eb3,ab3,c4]@19 ~", X: "[f3,ab3,d4]@5 ~ [f3,ab3,d4]@9 ~", Y: "[eb3,ab3,c4]@11 ~ [ab3,c4]@19 ~",
  Z: "[f3,g3,bb3]@5 ~ [f3,g3,bb3]@9 ~", AA: "[f3,ab3,c4]@11 ~ [f3,ab3,c4]@19 ~",
  AB: "[f3,ab3,d4]@10 ~@2 [f3,ab3,d4]@19 ~", AC: "[f3,g3,bb3]@10 ~@2 [f3,g3,bb3]@19 ~",
  AD: "[eb3,g3,c4]@10 ~@2 [eb3,g3,c4]@19 ~", AE: "[eb3,ab3,c4]@5 ~ [ab3,c4]@9 ~, ~@12 eb3@15 ~@5",
  AF: "[eb3,ab3,c4]@11 ~ [ab3,c4]@18 ~@2, ~@12 eb3@15 ~@5", AG: "[g3,bb3]@5 ~ [f3,g3,bb3]@9 ~",
  AH: "[f3,c4]@5 ~ [f3,d4]@8 ~@2", AI: "[g3,eb4]@11 ~ [bb3,eb4]@19 ~", AJ: "[eb3,ab3,c4]@5 ~ [eb3,c4]@10, ~@3 ab3@4 ~",
  AK: "[g3,bb3]@5 ~ g3@9 ~", AL: "[f2,c4]@6 [bb2,d4]@9 ~", AM: "g3@8 f3@7 ~ g3@16, eb4@31 ~", AN: "[eb2,g3], f3@7 ~",
  AO: "[~@5 eb4@7 eb5@15 ~ g4@12 eb4@21 ~@3]/2", AP: "~ c5@2 ab5@4 ~", AQ: "~@3 d5@8 f5@15 ~@6",
  AR: "[~@3 eb5@7 ~ eb6@16 eb5@12 bb5@20 ~@5]/2", AS: "~@2 c5@8 bb5@17 ~@5", AT: "~@2 f5@8 g5@15 ~@7",
  AU: "~@2 bb4@8 eb5@15 ~@7", AV: "[~@9 eb5@13 ~@3 eb5@12 ~@12 eb6@8 ab6@7 db6@8 f6@13 ~@11, ~@37 f5@50 ~@9]/3",
  AW: "[bb4@8 [eb4,eb5]@16 bb5@15 ~ eb5@13 ~@2 [eb4,eb5]@9]/2", // Eb
  AX: "[~@15 [eb5,eb6]@8 [ab5,ab6]@7 ~ [db5,db6]@8 [f5,f6]@14 ~@11, ~@3 f4@51 ~@10, ~@3 f5@17 ~@44]/2", // Eb Ab Db F
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@16 A ~@7 B ~@8 C D E ~ F G H ~@16 I@2 ~@2 J@2 ~ K@2 L@8 ~>".pickRestart({
  A: "~@22 eb5 ~@7 eb5 ~", B: "~@12 eb3@19 ~", C: "f3@5 ~@11", D: "ab3@10 ~@2 ab3@19 ~", E: "bb3@11 ~ g3@15 ~@5",
  F: "[eb2,bb2,eb3]@9 ~@3 [eb2,bb2,eb3,bb3]@19 ~", G: "[f3,ab3]@5 ~ [f3,ab3]@10", H: "[eb2,bb2]@15 ~",
  I: "[~@25 bb5@15 ~@24]/2", J: "[bb3@8 ~@16 bb4@15 ~ eb4@12 ~@12]/2",
  K: "[~@31 [g3,eb4]@14 ~@2 [g3,eb4]@7 ~ [g3,eb4]@7 ~ eb4, ~@31 g3]/2", // Cm
  L: "[~@14 [g3,eb4]@7 ~ g3@234, ~@22 eb4@63 ~@171]/8", // Cm
})).s("gm_string_ensemble_1").gain(0.25)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K L M N O N P Q R S T N U N V W X Y@2 Z ~ AA@8 AB AC@8 AD@4 AE@2 ~@11
>`.pickRestart({
  A: "~@26 g3@5 ~, [g1,d2,g2], ~@20 b3@11 ~", B: "[~@59 g3@5, d4, ~@13 e3@51, ~@24 b3@29 b3@11, ~ [g2,gb3]]/2",
  C: "[~@24 g2@8 ~@27 c4@5, e4@53 e4@11, ~ d4@15, ~ d3@3, ~ [c2,g2,c3]]/2", // C5
  D: "[~@59 c4@5, g4, ~@3 a3@13, ~@24 e4@29 e4@11, ~@32 [c3,b3]@31 ~]/2", // Cmaj7
  E: "[~@59 f3@5, a4@32 [f1,c2,f2]@21 a3@11, ~ g4@15, ~ g3@3, ~@3 c3@5]/2", // F5
  F: "[~@59 f3@5, c4, ~@3 d3@13, ~@24 a3@29 a3@11, ~ [f2,e3]]/2", // Fmaj7
  G: "[~@24 f2@8 ~@27 bb3@5, d4@53 d4@11, ~ c4@15, ~ c3@3, ~ [bb1,f2,bb2]]/2", // Bb5
  H: "[~@29 bb3@3, f4, ~@3 g3@13, ~@24 d4@29 d4@11, ~ [bb2,a3]]/2", // Bbmaj7
  I: "[~@59 eb4@5, g4@32 [eb1,bb1,eb2]@21 g4@11, ~ f4@15, ~ f3@3, ~@3 bb2@5]/2", // Eb5
  J: "[~@59 eb4@5, bb4@53 g4@11, ~@3 bb3@13, ~@3 eb3@5, ~ [eb2,bb2]]/2", K: "bb4@31 ~",
  L: "[eb2,bb2]@12 [eb2,bb2]@12 [eb2,bb2]@7 ~", M: "[c2,g2]@12 [c2,g2]@12 [c2,g2]@7 ~",
  N: "eb3@3 eb3@3 [ab2,eb3]@2, ab2@3 ~, ~@3 c4@5", O: "~@24 bb2@7 ~, ab3@31 ~, bb2@3 ~, ~@12 f3@19 ~",
  P: "~@24 bb2@7 ~, eb2, bb2@3 ~, ~@12 [f3,g3]@19 ~", Q: "c3@12 c3@12 [f2,c3]@7 ~, f2@3 ~, ~@12 ab3@19 ~",
  R: "~@24 f2@7 ~, [bb2,ab3]@31 ~, ~@12 f3@19 ~", S: "[eb2,bb2]@3 [eb2,bb2]@3 [eb2,bb2]@2",
  T: "[c2,g2]@3 [c2,g2]@3 [c2,g2]@2", U: "~@3 bb2, ab3, bb2@3 ~, ~@12 f3@19 ~",
  V: "bb2@3 bb2@3 bb2@2, eb2, ~@12 g3@19 ~", W: "~@3 bb2@3 bb2@2, [f2,c3], ~@3 ab3@5", X: "bb2@3 g3@5, eb2",
  Y: "[ab2@12 ab2@11 ab2@8 eb3@13 eb3@12 ~@8, eb3@31 g3@33]/2", Z: "ab3@12 ab3@19 ~, f3@31 ~, ~@3 bb2@3 ~@2",
  AA: "[bb2@12 ~@11 bb3@8 g2@12 ~@12 g3@8 bb2@12 ~@12 bb3@8 g2@11 ~@12 g3@7 ~ bb2@12 ~@12 bb3@8 g2@12 ~@12 g3@7 bb2@12 ~@12 bb3@7 ~ g2@12 ~@12 g3@8 [eb2,bb2]@3, eb2@31 c2@32 eb2@31 ~ c2@31 eb2@31 ~ c2@31 eb2@31 ~ c2@32 ~@3, ~@12 g3@19 ~@12 [g2,eb3]@20 ~@12 g3@19 ~@12 [g2,eb3]@19 ~@13 g3@20 ~@12 [g2,eb3]@20 ~@11 [bb2,g3]@19 ~@13 [g2,eb3]@20 ~@3]/8", // Eb5 Cm Eb Cm
  AB: "~@9 [eb2,bb2]@11 [eb2,bb2]@8 [c2,g2]@4", // Eb5 C5
  AC: "[~@8 [c2,g2]@12 [c2,g2]@8 eb3@12 eb3@11 [ab2,eb3]@8 ~@12 f3@20 eb3@11 ~ eb3@12 [ab2,eb3]@8 bb2@12 bb2@11 ~ bb2@8 ~@23 bb2@8 bb2@12 bb2@12 ~@31 eb2@15, ~@28 ab2@23 ~@9 bb2@23 ~@8 ab2@23 ~@9 eb2@32 [f2,c3]@31 eb2@32 eb2@23 ~@15, ~@40 c4@20 ab3@32 ~@11 c4@21 ~@11 g3@19 ~@12 ab3@20 ~@12 g3@32 g3@20 ~@6]/8", // C5 Ab5 F5
  AD: "[~@7 eb2, ~ eb2@55 ~@32 eb2@16 bb3@16 ~@8, ~@37 f3@59 f3@24 ~@8, ~@23 bb2@7 ~@2, ~@25 g3@5 ~@2]/4",
  AE: "[~@35 f3@22 ~@7, eb2@27 ~@5, ~@12 db2@15 ~@5, ~@27 ab2@27 ~@10, ~@31 db3@23 ~@10]/2",
})).s("gm_piano").gain(0.35)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<~@35 A ~ B C D E ~ F ~ G ~@6 H ~@2 I J@2 K@2 L@2 ~ M@6 ~@6>".pickRestart({
  A: "~@3 bb2@3 bb2@2", B: "~@3 eb3", C: "~@24 bb2@7 ~", D: "[eb2,bb2]@3 [eb2,bb2]@5", E: "~@12 bb2@19 ~",
  F: "~@11 bb2@19 ~@2", G: "~@5 bb2@10 ~", H: "~@19 bb2@8 ~@5", I: "~@3 bb2@6 ~@7",
  J: "[~@9 bb2@6 ~@6 bb3@8 ~@3, ~@15 bb2@14 ~@3, ~@17 f3@12 ~@3]/2",
  K: "[~@33 db3@24 ~@7, ~@25 db2@31 ~@8, ~@29 ab2@28 ~@7]/2", L: "[~@8 f4@47 ~@9, ~ db4@55 ~@8]/2",
  M: "[~@63 [eb2,bb2]@16 [eb2,bb2]@7 [eb2,bb2]@8 [eb2,bb2]@16 [eb2,bb2]@8 [eb2,bb2]@63 ~@11, ~@31 db4@64 ~@97, ~@39 f4@64 ~@89]/6", // Eb5
})).s("gm_piano").gain(0.2)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC V AD AE AF AG AH AI AJ@2 AK AL AM AN AO AP AQ@2 AR AS@8
  AT@4 AU@3 AV@8 ~@4
>`.pickRestart({
  A: "d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5 ~ d6@2 g5 ~ gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5 ~",
  B: "d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5@2 d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5 ~",
  C: "d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5@2 d6@2 g5@2 gb5@2 g5 ~",
  D: "d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5 ~ d6@2 g5@2 gb5@2 g5 ~ d6@2 g5 ~ gb5@2 g5 ~",
  E: "g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6 ~ g6@2 c6@2 b5@2 c6@2",
  F: "g6@2 c6 ~ b5@2 c6@2 g6@2 c6 ~ b5@2 c6@2 g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6 ~",
  G: "g6@2 c6 ~ b5@2 c6@2 g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6@2",
  H: "g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6@2 g6@2 c6@2 b5@2 c6 ~",
  I: "c6@2 f5 ~ e5@2 f5@2 c6@2 ~ f5 e5@2 f5@2 c6@2 f5 ~ e5 ~ f5@2 c6@2 f5@2 e5@2 f5 ~",
  J: "c6@2 f5@2 e5@2 f5@2 c6@2 f5@2 e5@2 f5 ~ c6@2 f5@2 e5@2 f5 ~ c6@2 f5@2 e5@2 f5 ~",
  K: "c6@2 f5@2 e5@2 f5 ~ c6@2 f5@2 e5@2 f5 ~ c6@2 f5@2 e5@2 f5 ~ c6@2 f5@2 e5@2 f5 ~",
  L: "c6@2 f5@2 e5 ~ f5 ~ c6@2 f5@2 e5@2 f5@2 c6@2 f5 ~ e5@2 f5@2 c6@2 f5 ~ e5@2 f5 ~",
  M: "f6@2 bb5@2 ~@2 bb5 ~ f6@2 bb5 ~ a5@2 bb5 ~ f6@2 bb5@2 a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~, ~@5 a5@2 ~@25",
  N: "f6@2 bb5 ~ a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~",
  O: "f6@2 bb5@2 a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~ f6@2 bb5@2 a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~",
  P: "f6@2 bb5@2 a5 ~ bb5 ~ f6@2 bb5 ~ a5 ~ bb5 ~ f6@2 bb5@2 a5@2 bb5@2 f6@2 bb5 ~ a5@2 bb5 ~",
  Q: "bb6@2 eb6@2 d6@2 eb6 ~ bb6@2 eb6@2 d6@2 eb6@2 bb6@2 eb6@2 d6@2 eb6@2 bb6@2 eb6@2 d6@2 eb6@2",
  R: "bb6@2 eb6 ~ d6@2 eb6@2 bb6@2 eb6@2 d6@2 eb6@2 bb6@2 eb6 ~ d6@2 eb6@2 bb6@2 eb6@2 d6@2 eb6@2",
  S: "bb6@2 eb6@2 d6@2 eb6 ~ bb6@2 eb6@2 d6@2 eb6 ~ bb6@2 eb6 ~ d6 ~ eb6 ~ bb6@2 eb6@2 d6@2 eb6@2",
  T: "~ bb6, bb6!2 ~@2, ~ eb6@2 eb6@2 eb6@2 eb6@9, ~ d6@2 d6@5",
  U: "bb3@20 ~@8 eb4@3 ~, [f3,g3]@31 ~, eb4@7 ~, ~@20 bb3@11 ~", V: "[c4,eb4]@12 [g3,c4,eb4]@19 ~, g4@31 ~",
  W: "~@7 eb5, [ab4,c5], eb5@7 ~, ~@5 f5@3", X: "[d4,f4,bb4]@31 ~", Y: "~@7 ab4, [eb4,c5], ab4@7 ~, ~@5 bb4@3",
  Z: "eb4@12 [bb3,eb4]@19 ~, [g4,bb4]", AA: "f4@20 ~@8 eb4@3 ~, [c4,ab4]@31 ~, ~@20 f4@11 ~", AB: "[bb3,d4,f4]@31 ~",
  AC: "bb3@5 ~@2 eb4, [f3,g3], eb4@7 ~, ~@5 bb3@3", AD: "~@28 eb5@3 ~, [ab4,c5], eb5@7 ~, ~@20 f5@11 ~",
  AE: "[d4,f4,bb4]", AF: "~@7 eb5, [eb4,ab4,c5], ~@5 d5@3", AG: "[f4,g4,bb4,eb5]@12 [bb4,eb5,bb5]@19 ~",
  AH: "~@7 [eb4,eb5], [ab4,c5,g5], ~@5 [f4,f5]@3", AI: "~@16 g4@15 ~, [eb4,bb4,eb5]@31 ~, g4 ~, ~@8 f4@23 ~",
  AJ: "[~@27 eb4@4 ~@13 bb4@20, c4@31 eb4@33, ~@5 d4@3 ~@8]/2", AK: "~@7 eb4, [c4,g4]@31 ~, ~@12 d4@19 ~, ~@5 f4@3",
  AL: "~ g3, eb4, ~ f3@3", AM: "~@27 bb4@4 ~, ~@4 bb3@15 f4@4 g4@8 ~, ~@6 g3@25 ~, ~@8 d4@23 ~, ~@12 eb4@19 ~",
  AN: "~@27 bb5@4 ~, ~@3 bb4@16 f5@4 g5@8 ~, ~@5 g4@26 ~, ~@7 d5@24 ~, ~@11 eb5@20 ~",
  AO: "~@27 bb4@4 ~, ~@3 bb3@28 ~, ~@5 g3@26 ~, ~@7 d4@12 f4@12 ~, ~@11 eb4@12 g4@8 ~",
  AP: "~@26 bb5@3 ~@3, ~@3 bb4@27 ~@2, ~@4 g4@14 f5@4 g5@7 ~@3, ~@6 d5@23 ~@3, ~@10 eb5@19 ~@3",
  AQ: "[~@28 eb5@2 ~@27 bb5@5 ~@2, ~ bb3@8 bb4@4 d5@2 g5@6 eb5@4 f5@2 g5@4 ~, ~@2 g3@13 ~@4 d5@12 ~, ~@3 d4@12 ~@3 g4@13 ~, ~@5 eb4@10 ~@2 bb4@14 ~]/2",
  AR: "~@13 c6@15 ~@4, ~ eb5@4 f5@6 d6@17 ~@4, ~@3 bb4@25 ~@4, ~@7 eb5@21 ~@4, ~@9 g5@19 ~@4",
  AS: "[~@25 bb5@4 eb4@8 ~@19 eb4@4 ~ c4@11 [g3,c4,eb4]@20 [eb4,ab4,c5]@2 ~@25 [eb4,eb5]@4 ~@16 f5@15 ~@28 [eb4,eb5]@4 ~ [f4,g4,bb4,eb5]@12 [bb4,eb5,bb5]@19 ~ c5@7 ~@20 [eb4,eb5]@4 [eb4,g4,bb4,eb5]@3 ~@3, ~ bb4@16 f5@12 g3 ~@7 eb4@19 ~@4 g4@31 ~@9 c5@23 ~@32 eb4@20 [d4,d5]@11 ~@33 [ab4,g5]@31 ~@6, ~@3 g4@18 g5@8 ~@16 eb5@15 ~@32 eb5@27 ~@13 d5@23 ~@9 eb5@18 ~@44 c5@23 ~@7, ~@5 d5@23 ~ f3@31 ~@52 [f4,f5]@12 [bb3,d4,f4,bb4]@31 [c4,ab4,c5]@31 ~@52 [f4,f5]@11 ~@7, ~@9 eb5@19 ~ bb3@19 bb3@12 eb4@12 ~@36 ab5@16 ~@47 eb6@15 ~@48 bb5@15 ~@7]/8", // Cm Ab Eb Eb5 Eb D Abmaj7 F …
  AT: "[~@42 eb5@15 ~@16 eb5@16 ~@24 eb6@8 ab6@7, ~@2 f5@55 ~@32 eb5@31 ~@8, ~@10 g5@47 bb5@63 ~@8, ~@34 bb4@23 ~@44 f5@20 ~@7]/4",
  AU: "[~@40 [eb4,eb5]@15 ~@17 [eb4,eb5]@15 ~ [eb4,eb5]@8, ~ db6@55 ~@40, ~@8 f6@47 ~@41, ~@32 [bb3,bb4]@23 ~ [bb4,bb5]@31 ~@9]/3", // Eb Bb
  AV: "[~@15 eb6@7 ~@41 [g3,bb3,eb4]@16 [g3,bb3,eb4]@7 ~ [g3,eb4]@7 [g3,bb3,eb4]@16 [g3,bb3,eb4]@8 [g3,bb3]@63 ~@75, ~@3 [f4,f5]@16 ~@12 [db5,db6]@23 eb6@64 ~@138, ~@15 eb5@4 ~@4 [ab5,ab6]@30 bb5@64 ~@139, ~@39 [f5,f6]@13 g5@34 bb3@8 ~@24 eb4@138, ~@51 eb5@4 [f5,f6]@64 ~@137]/8", // Eb Cm Eb Gm F Db Ab F
})).s("gm_piano").gain(0.35)

// other · oboe
const oboe = note("<~@40 A B C D E F ~ G ~@26>".pickRestart({
  A: "~@4 bb4 ~ g4@2 d5@4 eb5@7 ~ f5@3 g5@4 bb5@2 ~@3", B: "~@3 bb4 ~ g4 ~ d5@4 eb5@8 f5@4 g5@4 bb5@2 ~@3",
  C: "~@3 bb4 ~ g4@2 d5@4 eb5@7 ~ f5@4 g5@4 bb5@2 ~@3", D: "~@3 bb4 ~ g4@2 d5@4 eb5@8 f5@4 g5@3 bb5@2 ~@4",
  E: "~@2 bb4 ~ g4@2 d5@3 ~ eb5@17 ~@5", F: "~@2 bb4 ~ g4@2 d5@4 eb5@7 ~ f5@4 g5@3 bb5@3 ~@4",
  G: "~ bb4 ~ g4@2 d5@4 eb5@7 ~ f5@4 g5@4 bb5@4 ~@3",
})).s("gm_oboe").gain(0.35).pan(0.6)

// chords · trombone · "ORCH.HIT"
const trombone = note("<~@40 A@2 B@7 C@7 ~@7 D@5 ~@6>".pickRestart({
  A: "[[eb2,g3,bb3]@30 ~@2 g2@30 ~ [eb2,f3,g3,bb3], f3@27 ~@4 c2@30 ~@3, ~@31 eb3@23 ~@10]/2", // Eb
  B: "[~@31 [c2,g3,c4]@30 ~@2 eb2@31 [c2,eb3,c4]@31 ~ [eb2,g3]@31 [c2,c4]@31 ~ [eb2,g3,bb3]@31 ~ [c2,eb3]@3, ~@31 eb3@27 ~@4 [g3,bb3]@32 g3@27 ~@4 bb3@32 ~@67, ~@62 f3@26 ~@37 f3@28 ~@4 [eb3,g3]@28 ~@4 f3@27 ~@4 [g3,c4]@4]/7", // C5 Cm Eb C Eb Cm Gm Eb …
  C: "[~@28 [ab2,eb3,c4]@32 [bb2,ab3]@31 ~ ab2@31 [eb2,bb3]@32 [f2,c3,ab3]@11 ~ [bb2,d4]@18 ~@2 eb2@30 ~@7, ~@28 bb3@28 ~@4 f3@29 ~@2 [eb3,c4]@31 ~ [f3,g3]@28 ~@73, ~@60 d4@26 ~@5 bb3@28 ~@47 ab3@20 [g3,bb3,eb4]@30 ~@8]/7", // Ab Bb7 Eb5 Fm Bb Cm Fsus2 Eb
  D: "[~@30 [eb2,bb2,g3]@14 ~@2 [eb2,bb2,g3]@6 ~@2 [eb2,bb2,g3]@6 ~@2 [eb2,bb2,g3]@14 ~ [eb2,bb2,g3]@6 ~@2 [eb2,bb2,g3]@63 ~@12]/5", // Eb
})).s("gm_trombone").gain(0.17).pan(0.4)

// other · clarinet
const clarinet = note("<~@48 A@2 B C D@2 E F ~@4 G@4 ~@10>".pickRestart({
  A: "[~@5 eb4@8 eb5@16 g4@11 eb4@20 ~@4]/2", B: "~ c5@2 ab5@4 ~", C: "~@4 d5@8 f5@15 ~@5",
  D: "[~@3 eb5@8 eb6@16 eb5@12 bb5@19 ~@6]/2", E: "~ c5@4 bb5@8 ~@3", F: "~@2 f5@8 g5@15 ~@7",
  G: "[bb3@8 eb4@16 bb4@15 ~ eb4@15 ~ eb4@11 f4@49 ~@12]/4",
})).s("gm_clarinet").gain(0.3).pan(0.4)

// chords · piano · "TIMPANI"
const piano_3 = note("<~@55 A@7 B@4 ~@8>".pickRestart({
  A: "[~@42 bb4@47 ~@48 f5@15 ~ eb3@3 ~@12 bb4@48 db3@3 ab3@5, ~@26 eb3@63 db3@40 db5@23 ~@12 g4@52 ~@8, ~@30 bb3@59 ~@4 ab3@59 ~@4 bb3@60 ~@8, ~@34 f4@55 ~@8 db4@55 ~@72, ~@38 g4@51 ~@12 f4@51 ~@8 f4@56 ~@8]/7",
  B: "[~@39 f5@14 eb6 ~ eb5@64 ~@9, db4@53 ~@75, ~@3 f4@49 ~@2 bb5@2 ~@72, ~@31 db5@21 ~@2 [f5,ab5]@64 ~@10]/4", // Fm
})).s("gm_piano").gain(0.31)

stack(string_ensemble_1, string_ensemble_1_soft, piano, piano_soft, piano_2, oboe, trombone, clarinet, piano_3)

More by Barry John