Strudelify

Memory

Barry Manilow

KeyB♭ minorTempo82 bpm
0:00/0:00
// Memory — Barry Manilow
// 82 bpm, 12/8, key A# minor. 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 (12/8 at bar 1, 6/8 at bar 9, 12/8 at bar 10, 6/8 at bar 17, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/6)

// 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
const string_ensemble_1 = note(`<
  ~@8 A@4 B@4 C@2 D E F G H I J K L M N O P Q@5 R@3 ~@2 S T ~@4 U V W X Y Z AA@6
>`.pickRestart({
  A: "[~@6 bb3@3 bb3@2 f3 d4@6 [g2,bb3]@12 bb3@6 eb4@3 bb3@3 [d3,a3]@6, ~ bb2@2 ~@2 bb2@2 ~]/4", // Gm D5
  B: "[d3 c3@2 g2@2 f2@2 bb2]/4", C: "[d3,a3,d4,f4,a4]", D: "[d3,a3,d4,f4,a4]@2 [bb2,bb3,d4,f4] [c3,c4,e4,g4]",
  E: "[f3,c4,f4,a4]", F: "[d3,f5]!2 [g3,d4,g4,b4,f5]@2, [d4,f4,a4] ~", G: "[c3,e5]!2 [f3,c4,f4,a4,e5]@2, [c4,e4,g4] ~",
  H: "[f3,f4]@2 [d3,d4] [c3,c4] [b2,b3]@2 [g2,b3]@2", I: "c4@3 g3@5 ~@4, c3", J: "bb3@3 bb3@4 a3 bb3 c4 bb3 g3",
  K: "bb3@3 bb3@4 a3 bb3 c4 bb3 f3", L: "g3@3 g3@4 eb3 f3 g3 f3 eb3", M: "d3@9 d3@2 f3",
  N: "f3@6 c3@4 d3@2 eb3@3 f3@3 g3@3 a3@3", O: "bb3 a3 g3 f3@6 d3@2 bb2", P: "f3@6 f3@12 g3@5 a3",
  Q: "[bb3 bb4 [c4,c5] [d4,d5] [eb4,eb5] [f4,f5] [gb3,bb4,db5,gb5]@3 [gb3,bb4,db5,gb5]@4 [f3,f4,f5] [gb3,gb4,gb5] [ab3,ab4,ab5] [gb3,gb4,gb5] [eb3,eb4,eb5] [gb3,bb4,eb5,gb5]@3 [gb3,bb4,eb5,gb5]@4 [f3,f4,f5] [gb3,gb4,gb5] [ab3,ab4,ab5] [gb3,gb4,gb5] [db3,db4,db5] [eb3,gb4,b4,eb5]@3 [eb3,gb4,b4,eb5]@4 [b2,b3,b4] [db3,db4,db5] [eb3,eb4,eb5] [db3,db4,db5] [b2,b3,b4] [bb2,db4,f4,bb4]@9 [bb2,db4,f4,bb4]@2 [db3,f4,bb4,db5] [eb4,gb4,db5]@3 ab4@2 [gb4,bb4], ~ bb3@5 ~@48 b2@6, ~@19 eb4]/5", // C D Eb F Gb F Gb Ab …
  R: "[[ab4,b4]@3 [ab4,db5]@3 [b4,eb5]@3 [b4,f5]@3 [gb3,gb4,gb5]@2 [f3,f4,f5]@2 [eb3,eb4,eb5]@2 [db3,gb4,bb4,db5]@12 [bb2,eb4,gb4,bb4]@4 [gb2,bb3,eb4,gb4]@2 [db3,f4,ab4,db5]@18 [eb2,eb4]@4 [f2,f4]@2 [gb2,bb3,db4,gb4]@12, [eb3,gb4] [gb3,ab4] ~@10]/3", // Abm Db5 B Bdim Gb F Eb Gb …
  S: "~@2 gb3 ab3", T: "db3",
  U: "[db3,f4,ab4,db5]@6 [db3,f4,ab4,db5]@8 [c3,c4,c5]@2 [db3,db4,db5]@2 [eb3,eb4,eb5]@2 [db3,db4,db5]@3 [bb2,bb3,bb4]", // Db C Db Eb Db Bb
  V: "[db3,f4,bb4,db5]@3 [db3,f4,bb4,db5]@4 [c3,c4,c5] [db3,db4,db5] [eb3,eb4,eb5] [db3,db4,db5] [ab2,ab3,ab4]", // Bbm C Db Eb Db Ab
  W: "[bb2,db4,gb4,bb4]@6 [bb2,db4,gb4,bb4]@8 [gb2,gb3,gb4]@2 [ab2,ab3,ab4]@2 [bb2,bb3,bb4]@4 [ab2,ab3,ab4] [gb2,gb3,gb4]", // Gb Ab Bb Ab Gb
  X: "[f2,ab3,c4,f4]@9 [f2,ab3,c4,f4]@2 [ab2,c4,f4,ab4]", // Fm
  Y: "[bb3,db4,ab4]@6 eb4@4 [db4,f4]@2 [eb4,gb4]@3 [eb4,ab4]@3 [gb4,bb4]@3 [gb4,c5]@3, gb2@2 [bb2,db4] [db3,eb4], ~ bb3 ~@2", // Bbm7 Db Ebm Ab5 Gb Gbdim Bbm Dbsus2
  Z: "[db3,db4,db5] [c3,c4,c5] [bb2,bb3,bb4] [ab2,db4,f4,ab4]@6 [f2,bb3,db4,f4]@2 [db2,f3,bb3,db4]", // Db C Bb Db Bbm
  AA: "[~ [ab2,c4,eb4,ab4]@21 [bb2,bb3]@5 [db3,db4]@2 [db2,db3,db4]@107 ~@8]/6", // Ab Bb Db
})).s("gm_string_ensemble_1").gain(0.29).pan(0.4)

// chords · piano
const piano = note(`<
  A B C D E F G H I@5 J@3 K L M N O P Q R S T D E F U V W@5 X@3 Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM@3 ~@3
>`.pickRestart({
  A: "bb2 f3 d4@2 f3 d4 bb2 f3 d4@2 f3 d4",
  B: "~@2 f3@2 ~@4 f3@2 d4@2 ~@2 [f3,a4]@2 bb4@2 ~@2 f3@2 bb4 g4, bb2!2, bb4@3 bb4@4 ~@2 c5@2 ~, ~@2 d4@2 ~@4 d4@2 ~ d4", // F
  C: "~@2 d3@2 ~@4 d3@2 bb3@2 ~@2 [d3,a4]@2 bb4@2 c5@2 [d3,bb4]@2 ~ f4, g2!2, [d4,bb4]@3 [d4,bb4]@4 ~@5, ~@2 bb3@2 ~@4 bb3@2 ~ bb3", // D5 Gm
  D: "~ bb2 ~@2 bb2 g3 ~ [bb2,eb4] f4 g4 [bb2,f4] [g3,eb4], eb2!2, [bb3,g4]@3 [bb3,g4]@4 ~@5, ~ g3 ~@2 g3 ~", // Eb5 Bb5 Cm Eb
  E: "~ a2 d3 ~ a3 ~@2 a2 d3 f3 ~ f4, d2!2, d4@5 d4@4 d4@2 ~, f3@3 f3@6 ~ a3@2",
  F: "~@2 g2@2 c3@2 eb3@2 ~@2 d4@2 eb4@3 [g3,f4]@3 g4@3 a4@3, c2 ~, g3@2 g3 c3@3, f4@3 c4@2 ~ c4@3 [bb3,c4,eb4]@3", // G7 Cm7
  G: "bb4 [d3,a4] [f3,g4] g3 ~@3 d3 f3 ~ d4 bb3, g2!2, d4 f4@2 ~, ~@3 d4@2 d4@4 ~@3, ~@4 bb3@2 ~@3 g3@3", // D5 Fsus2
  H: "~ c3 eb3 f3 ~ c4 ~ c3 g3 g3@2 a3, f4@2 ~, f2!2, a3!2 eb3",
  I: "[~@2 f2@2 ~@4 f3@2 d4@2 ~@2 f3@2 ~@4 f3@2 d4@2 ~@2 [f3,a4]@2 bb4@2 c5@2 [f3,bb4]@2 [d4,g4]@2 ~@2 d3@2 ~@4 d3@2 bb3@2 ~@2 [d3,a4]@2 bb4@2 c5@2 [d3,bb4]@2 ~ f4 ~@2 bb2@2 ~@4 bb2@2 g3@2 ~@2 [bb2,eb4]@2 f4@2 g4@2 ~ f4 [g3,eb4]@2 ~@2 a2@2 d3@2 ~@2 a3@2 ~@4 a2@2 d3@2 f3@2 ~@2 f4@2 ~@2 g2@2 [c3,c4]@2 eb3@2 ~@2 d4@2, bb1@6 ~@2 d4@2 ~@4 d4@2 ~@2 [d4,bb4]@3 [d4,bb4]@4 ~@7 g3@2 ~@4 g3@2 bb2 ~ f3@3 f3@6 ~ a3@2 g3@4 g3@2, bb3@4 ~@2 bb4@3 bb4@4 ~@7 bb3@2 ~@4 bb3@2 ~ bb3 [bb3,g4]@3 [bb3,g4]@4 ~@5 d4@5 d4@4 d4@2 ~ f4@2 ~ c4@2 ~, ~ d3@2 bb2@3 bb2@3 g2@3 g2@3 eb2@3 eb2@3 d2@3 d2@3 c2@3]/5", // F Bb5 G5 D5 Gm Eb5 Cm C …
  J: "[eb4@3 [g3,f4]@3 g4@3 a4@3 bb4@2 [d3,a4]@2 [f3,g4]@2 g3@2 ~@6 d3@2 f3@2 ~@2 d4@2 bb3@2 ~@2 c3@2 eb3@2 [f3,a3]@2 ~@2 c4@2 ~@2 c3@2 ~@2 g3@4 a3@2 ~@2 f2@2 d3@4 bb1@2 c2@2, c3@2 g2@2 g2@2 f2@2 f2@2 bb1 ~, c4@3 [bb3,c4,eb4]@3 d4@5 d4@4 ~@11 eb3@4 ~@6, ~@3 f4@2 ~@2 f4@2 ~@3, ~@10 bb3@2 ~@3 g3@3 [a3,f4]@3 ~ a3@5 ~@3 bb3@4 ~@2]/3", // G7 D5 Fsus2 F Cm7 Dm
  K: "~ a2 d3 ~ a2 d3 ~ bb2 eb3 ~ bb2 eb3, [d2,a3,d4,f4,a4] [d2,d4,f4,a4,d5] [eb2,d4,f4,a4] [eb2,c4,eb4,g4]", // Dm Cm
  L: "~ a2 d3 ~ a2 d3 ~ bb2 eb3 ~ bb2 [eb3,c4,eb4,g4], [d2,a3,d4,f4,a4]@3 [d2,d4,f4,a4,d5]@3 [d4,f4,a4]@4 ~@2, ~@2 eb2!2", // Cm Dm
  M: "~ a2 ~@2 f3 a3 ~ f2 d3 ~ g2 [e3,bb3,bb4], d2@2 [bb1,d4,f4,bb4,d5] c2, [a3,d4,f4,a4]@3 [d4,f4,a4,d5]@3 ~@3 [c4,e4,g4,c5]@2 ~, ~ d3 ~@4", // Edim Bb Dm C
  N: "~ c3 ~@2 c3 a3 ~ c3 ~@2 f2 e2, f2@2 f2 ~, [c4,f4,a4,c5] [c4,f4,a4,c5]@2 ~, ~ a3 ~@2 a3@2", // F
  O: "~ a2 d3 a3 d4 c4 f4 d3 f3 ~ g4 f4, d2 [g2,b3], [a3,f4]@3 [f3,f4]@3 ~ a4@3 ~@2, ~@3 g3", // G Dm F
  P: "~ g2 c3 g3 c4 bb3 e4 c3 f3 a3@2 [a3,c4,d4,f4], c2 f2, [b3,e4] [e3,e4] a3 ~, ~@7 g4@4 ~", // Dm7 E5 E
  Q: "~@3 d3@3 ~@4 a4@2 ~@3 d3@3 f3@3 g3@3, d2 g2, [c4,d4,f4,a4]@5 ~ [b3,d4,f4,a4]@3 [b3,d4,f4,g4,b4]@3, ~ f3 ~@2", // Dm7 Bm7b5 G7
  R: "~ g2 e3@2 ~ g2 e3@2, [c4,e4], c2!2, [g4,c5] g4@3", // C C5
  S: "~ f3 ~@2 f3 d4 ~ [f3,a4] bb4 c5 [f3,bb4] [d4,g4], bb2!2, bb4@3 bb4@4 ~@5, ~ d4 ~@2 d4 ~", // F Bb5 G5
  T: "~ d3 ~@2 d3 bb3 ~ [d3,a4] bb4 c5 [d3,bb4] [bb3,f4], g2!2, [d4,bb4]@3 [d4,bb4]@4 ~@5, ~ bb3 ~@2 bb3 ~", // D5 Gm Bb5 Gm
  U: "bb4 [d3,a4] [f3,g4] g3 ~@3 d3 f3 d4@2 bb3, g2!2, d4@5 d4@4 ~@3, ~ f4@2 ~, ~@4 bb3@2 ~@3 g3@3", // D5 Fsus2
  V: "~@2 c3@2 eb3@2 [f3,a3]@2 ~@2 c4@2 ~@2 c3@2 ~@2 g3@5 a3, f2!2, [a3,f4] f4@2 ~, ~@4 a3@5 ~@3, ~@2 eb3", // F Dm
  W: "[~ f2 [eb3,c4,c5] [f3,d4,d5] [gb3,eb4,eb5] [ab3,f4,f5] ~ db3 ~@2 f3 bb3 ~ [db3,f4,f5] [gb4,gb5] [ab4,ab5] [f3,gb4,gb5] [bb3,eb4,eb5] ~ bb2 ~@2 bb2 eb3 ~ [bb2,f4,f5] [gb4,gb5] [ab4,ab5] [bb3,gb4,gb5] [eb3,db4,db5] ~ gb2 ~@2 gb2 eb3 ~ [gb2,b3,b4] [db4,db5] [eb4,eb5] [gb2,db4,db5] [b1,b3,b4] ~ f2 bb2 db3 f3 ~@2 f2 bb2 db3 ~ [db4,f4,bb4,db5] ~ eb2 ab2 b2 ~ bb4, bb1@3 ~@3 gb2@6 gb2@6 eb2@6 eb2@6 b1@6 b1@5 ~ bb1@6 bb1@6 [ab1,ab3,b3,eb4,gb4]@6, [d3,bb3]@2 ~@4 [gb4,bb4,db5,gb5]@3 [gb4,bb4,db5,gb5]@4 ~@5 [gb4,bb4,eb5,gb5]@3 [gb4,bb4,eb5,gb5]@4 ~@5 [eb4,gb4,b4,eb5]@3 [eb4,gb4,b4,eb5]@4 ~@5 [db4,f4,bb4]@9 ~ f3@2 ~@4 eb3@2, ~@8 bb3@2 ~@4 bb3@2 ~@4 eb3@2 ~@4 eb3@2 ~@4 eb3@2 ~@4 eb3@2 ~@2 bb3@5 bb3@4 [bb3,db4,f4,bb4]@2 ~ db5@3 ab4@2 ~]/5", // Cm Dm Ebm Db Gb Ab Gbmaj7 Eb5 …
  X: "[b4@3 [eb3,db5]@3 eb5@3 f5@3 [gb4,gb5]@2 [bb2,f4,f5]@2 [db3,eb4,eb5]@2 eb3@2 gb3@4 ~@2 bb2@2 db3@2 [eb4,gb4,bb4]@4 [bb3,eb4,gb4]@2 ~@2 ab2@2 b2@2 db3@2 f3@2 ab3@2 ~@2 ab2@2 ~@2 [eb3,eb4]@4 [f3,f4]@2 ~@2 db3@2 ~@4 db3@2 bb3@2, ab2 eb2 eb2 db2 db2 [gb2,gb3,db4,gb4], [eb4,gb4,ab4]@3 [gb3,gb4,ab4,b4]@3 ~@3 [eb4,gb4,bb4,db5]@6 eb3@3 [db4,f4,ab4,db5]@9 ~@3 bb3@2 bb3@3 ~, ~@13 b2@2 ~@3]/3", // Eb7 Gb Bb5 Dbsus2 Ebm Eb F Gb5 …
  Y: "~ f2 db3 ~ f2 db3 ~ gb2 eb3 ~ gb2 eb3, [bb1,bb3,db4,f4] [bb1,db4,f4,bb4] [b1,bb3,db4,f4] [b1,ab3,b3,eb4]", // Bbm Abm
  Z: "~ f2 db3 ~ f2 [db3,db4,f4,bb4] ~ gb2 eb3 ~ gb2 [eb3,ab3,b3,eb4], [bb3,db4,f4]@5 ~@4 [ab3,b3,eb4]@2 ~, bb1!2 [b1,bb3,db4,f4] b1", // Bbm Abm Bbm Abm Bbm
  AA: "~@2 f2@2 bb2@2 db3@2 f3@4 ~@2 db3@2 ~@6 [c4,eb4,ab4] gb4, bb1@2 gb2 ab2, [bb3,db4,f4]@3 [db4,f4,bb4]@3 [db4,gb4,bb4]@5 ~, ~@2 eb3", // Ab Bbm Gb
  AB: "~ ab2 ~@2 ab2 f3 ~ bb2 ~@2 db2 [b1,db4], db2@3 db2@2 ~, [db4,f4,ab4] [db4,f4,ab4]@2 ~, ~ f3 ~@2 f3@2", // Bsus2 Db
  AC: "~@2 f2@2 ~@4 f2@2 db3@2 ~@2 bb2@2 db3@2 eb3@2 ~ f4 eb4 db4, bb1 eb2, [f3,ab3,db4]@2 [f3,ab3,db4]@2 [gb3,bb3,db4]@3 ~, ~ db3 ~@3 gb3", // Db Gb
  AD: "~ eb3 ~@2 eb3 gb3 c4 ab2 db3 ~ db2 [b1,f3,ab3,bb3,db4], ab2@3 db2@2 ~, [ab3,c4]@3 [ab3,c4]@3 ab3@5 ~, ~@2 gb3@2 ~@2 f3@3 f3@2 ~, ~@7 [c4,eb4]@4 ~", // Db7 Ab Cm
  AE: "~ bb2 [db3,ab3,bb3,db4,f4]@2 ~ bb2 eb3 g3, bb1 eb2, [ab3,bb3,db4,f4] ~ [g3,bb3,db4,f4] [bb3,db4,eb4,g4]", // Bbm7 Gm7b5 Eb7
  AF: "~ eb3 eb4 ~@2 eb3 gb3@2, [ab3,c4], ab2!2, [eb4,ab4] gb3 ~@2, ~@3 eb4@5", // Ab Ab5
  AG: "~@2 ab2@2 ~@4 ab2@2 f3@2 ~@2 [ab2,c4,c5]@2 [db4,db5]@2 [eb4,eb5]@2 [ab2,db4,db5]@2 ~ [bb3,bb4], db2!2, [db4,f4,ab4,db5]@3 [db4,f4,ab4,db5]@4 ~@5, ~@2 f3@2 ~@4 f3@2 ~ f3", // Ab Db Eb Db5 Bb Db
  AH: "~ f2 ~@2 f2 db3 ~ [f2,c4,c5] [db3,db4,db5] [eb4,eb5] [db4,db5] [ab3,ab4], bb1!2, [db4,f4,bb4,db5]@3 [db4,f4,bb4,db5]@4 ~@5, ~@2 db3@2 ~@5 f3@3", // F5 Db Eb Db Ab Bbm
  AI: "~@2 db3@2 ~@4 bb3@2 db3@2 ~@2 [bb3,db4,gb4]@2 [gb3,ab4]@2 ~@4 ab4 gb4, gb2@2 gb2!2, [bb3,db4,gb4,bb4]@3 [db4,gb4,bb4]@4 ~@2 [db4,gb4,bb4]@2 ~, ~ gb3 ~@3 db3", // Gb Gbsus2 Gb
  AJ: "~ c3 eb3 f3 ~@3 c3 eb3 [ab3,c4,f4]@2 ab4, [c4,f4]@3 ~, f2!2, ab3@4 ab3@5 f3@3", // Fm F5
  AK: "~@2 bb2@2 db3@2 eb3@2 ~@2 f4@2 gb4@3 [db3,ab4]@3 [eb3,bb4]@3 [gb3,c5]@3, [eb2,bb3,db4] eb2, ab4@3 eb4@2 ~@4 [db4,eb4,gb4]@3, ~@4 gb3@2 [bb3,db4,eb4]@3 ~@3", // Db5 Eb5 Gbdim Eb7 Ebm7 Eb7
  AL: "db5 [f2,c5] [bb2,bb4] db3 f3 ab3 ~ f2 bb2 f4 ~ ab3, [db4,f4]@3 db3, bb1!2, ~ ab4@2 ~", // F5 Bb Db
  AM: "[~@3 eb3@2 ~@12 eb3@2 ~@3 [bb3,bb4]@5 [db4,db5]@2 [db5,f5,ab5,db6]@25 ~@18, ~ ab2@14 ab2@15 ~@42, ~ [bb3,db4,eb4,ab4]@6 [bb3,db4,eb4,ab4]@15 ~@50, ~@5 gb3@9 ~@5 gb3@10 ~@43]/3", // Bb Db Bbm7
})).s("gm_piano").gain(0.4)

// bass · acoustic bass
const bass = note(`<
  ~@8 A@4 B C@3 D@2 E F G H G I J K L M N O P Q R S T U V W X Y@2 Z AA AB AC AB AD AE AF AG AH AI AJ AK@2 ~@4
>`.pickRestart({
  A: "[~ bb2@2 g2@2 eb2@2 d2]/4", B: "f2 d2 c2@2", C: "[g2 c3 g2@4 f2@4 bb2@2]/3", D: "d2 eb2", E: "d2@2 bb1 c2",
  F: "f2@9 ~ f2 e2", G: "d2 g2", H: "c2 f2", I: "c2", J: "bb2", K: "g2", L: "eb2", M: "d2", N: "c2 c3", O: "g2!2",
  P: "f2!2", Q: "bb1@6 gb2@5 gb2", R: "gb2@6 eb2@5 eb2", S: "eb2@5 bb1 b1@5 b1", T: "b1@3 b1@3 bb1@5 f1", U: "bb1 ab1",
  V: "ab2@6 eb2@5 eb2", W: "eb2@6 db2@5 db2", X: "db2 gb2", Y: "bb1 b1", Z: "bb1@2 gb2 ab2", AA: "db2!2", AB: "bb1 eb2",
  AC: "ab2@6 db2@4 db2 b1", AD: "ab2!2", AE: "db2", AF: "bb2@5 f2 bb2@5 f2", AG: "gb2@5 gb2 gb2@6", AH: "f2",
  AI: "eb2 bb2", AJ: "bb1@5 bb1 bb1@6", AK: "[~ ab1@11 ab1@2 ~ ab1@15 ~@18]/2",
})).s("gm_acoustic_bass").gain(0.5).pan(0.3)

// bass · acoustic bass · soft notes
const bass_soft = note("<A@2 B C D E B F G ~@50>".pickRestart({
  A: "bb2!2", B: "g2!2", C: "eb2!2", D: "d2", E: "c2 c3", F: "f2!2", G: "bb1 ~",
})).s("gm_acoustic_bass").gain(0.25).pan(0.3)

// chords · tremolo strings
const tremolo_strings = note("<~@31 A@8 B@2 C D E F B G H I J K L M N@3 ~@3>".pickRestart({
  A: "[~ [gb3,gb4,bb4,db5,gb5]@2 [eb3,eb4,gb4,bb4,eb5]@2 [b3,eb4,gb4,b4]@2 [bb3,db4,f4,bb4]@2 [ab3,b3,eb4,ab4]@2 [eb4,gb4,bb4,eb5]@2 [db4,f4,ab4,db5]@2 [bb3,db4,gb4]]/8", // Gb Ebm B Bbm Abm Ebm Db Gb
  B: "[bb2,f3,bb3,db4,f4]", C: "[bb2,f3,bb3,db4,f4]@2 [gb2,gb3,bb3,db4] [ab2,ab3,c4,eb4]", D: "[db3,ab3,db4,f4]",
  E: "[bb2,bb3,db4,f4] [eb2,eb3,bb3,eb4,gb4]", F: "[ab2,ab3,c4,eb4] [db3,ab3,db4,f4]", G: "[ab2,ab3,c4,eb4,ab4]",
  H: "[db3,db4,f4,ab4,db5]", I: "[bb2,db4,f4,bb4,db5]", J: "[gb2,gb3,db4,gb4,bb4]", K: "[f2,f3,c4,f4,ab4]",
  L: "[eb2,eb3,eb4,gb4,bb4]", M: "[bb2,db4,f4,db5]", N: "[~ [ab2,ab3,c4,eb4,ab4]@28 [db3,db4,f4,ab4,db5]@25 ~@18]/3",
})).s("gm_tremolo_strings").gain(0.17).pan(0.4)

// bass · contrabass
const bass_2 = note("<~@12 A B@3 ~@4 C D C E ~@7 F@5 G@3 ~@2 H I ~@4 J K L M N K O@2 ~@4>".pickRestart({
  A: "f3 d3 c3@2", B: "[g2 c3 g2@4 f2@4 bb2@2]/3", C: "d2 g2", D: "c2 f2", E: "c2",
  F: "[~@6 gb2@2 gb2 gb2@9 eb2@2 eb2 eb2@9 b1@2 b1 b1@9 bb1@9 bb1@2 bb1 ab2@6]/5",
  G: "[ab2@3 ab2@3 eb2@2 eb2 eb2@9 db2@2 db2 db2@9 gb2@6]/3", H: "~@2 gb2 ab2", I: "db2", J: "db2@2 db2 db2@9",
  K: "bb1@2 bb1 bb1@9", L: "gb1@2 gb1 gb1@9", M: "f1@9 f1@2 f1", N: "eb2@2 eb2!2", O: "[~ ab1@4 ab1@2 ab1@22 ~@19]/2",
})).s("gm_contrabass").gain(0.4).pan(0.7)

// other · flute
const flute = note("<~@8 A@5 B@3 C ~@7 D E F G H I J K ~@7 L M N O P Q R S T U V W X Y Z@2 ~@4>".pickRestart({
  A: "[~@12 bb5@6 bb5@8 a5@2 bb5@2 c6@2 bb5@2 g5@2 bb5@6 bb5@8 a5@2 bb5@2 c6@2 bb5@3 f5 g5@6 g5@8 eb5@2 f5@2 g5@3 f5 eb5@2 d5@18 d5@4 f5@2 f5@4 c5@2 c5@4 d5@2]/5",
  B: "[eb5@3 f5@3 g5@3 a5@3 bb5@2 a5@2 g5@2 f5@12 ~@2 d5@2 bb4@2 f5@6 f5@12 ~@8 bb4@2 c5@2 d5@2 c5@2 bb4@2]/3",
  C: "a4 ~@3", D: "bb5@3 bb5@4 a5 bb5 c6 bb5 g5", E: "bb5@3 bb5@4 a5 bb5 c6 bb5 f5", F: "g5@3 g5@4 eb5 f5 g5 f5 eb5",
  G: "d5@9 d5@2 f5", H: "f5@6 c5@4 d5@2 eb5@3 f5@3 g5@3 a5@3", I: "bb5 a5 g5 f5@6 d5@2 bb4", J: "f5@6 f5@12 g5@5 a5",
  K: "bb5 ~", L: "f5 bb5 f5 eb5", M: "f5@5 bb5 f5@3 eb5@2 eb5", N: "f5@6 bb5@6 bb5@10 ab5 gb5",
  O: "ab5@3 ab5@6 ~@2 db6", P: "db6@6 db6@6 db6@9 f6 eb6 db6", Q: "c6@3 c6@3 c6 eb6@4 db6", R: "f6!3 g6",
  S: "ab6@2 eb6 eb6@3 ~@2", T: "db6@6 db6@8 c6@2 db6@2 eb6@2 db6@3 bb5", U: "db6@3 db6@4 c6 db6 eb6 db6 ab5",
  V: "bb5@6 bb5@8 gb5@2 ab5@2 bb5@4 ab5 gb5", W: "f5@9 f5@2 ab5", X: "ab5@6 eb5@4 f5@2 gb5@3 ab5@3 bb5@3 c6@3",
  Y: "db6 c6 bb5 ab5@6 f5 ~ ab4", Z: "[~ ab5@6 ab5@15 bb4@5 db5@2 db5@13 ~@6]/2",
})).s("gm_flute").gain(0.4)

// chords · french horn
const french_horn = note("<~@15 A B@2 C D E F G H ~@2 I J ~@3 K@3 L@2 ~@2 M ~@3 N O P ~@14>".pickRestart({
  A: "~@7 g4 a4 bb4 a4 g4", B: "[f4,a4] [a4,d5] [f4,a4] [eb4,g4]", C: "[f4,a4]@3 [a4,d5]@3 [a4,d5]@3 c5@2 bb4, ~@3 g4",
  D: "[f4,c5]@3 [f4,c5]@8 ~", E: "f4@3 f4@3 f4 a4@3 g4 f4", F: "e4@3 e4@3 e4 g4@4 f4",
  G: "[f4,a4]@5 [f4,a4] [f4,a4]@3 [f4,g4]@3", H: "[e4,g4]@4 c4 e4 g4@2", I: "~ [bb3,eb4]", J: "[a3,d4]@3 ~",
  K: "[~@9 [gb3,bb3] [bb3,db4]@8 ~@2 [gb3,bb3]!3 [bb3,eb4]@7 ~@3 [gb3,b3] ~ [gb3,b3]]/3", // Gb Bbm Gb Eb5 B5
  L: "[[b3,eb4]@2 [f3,bb3]@3 ~@3]/2", M: "~@7 bb3 db4 gb4 ab4 bb4", N: "~@4 bb3 c4 db4@2 f4@2 f4 ab4", O: "f4 gb4",
  P: "eb4 f4",
})).s("gm_french_horn").gain(0.4).pan(0.6)

// other · timpani
const timpani = note("<~@46 [~@18 eb2!6] [db3 ~@23] ~@11>").s("gm_timpani").gain(0.41).pan(0.6)

// other · pad poly
const pad_poly = note("<~@54 A B C D@2>".pickRestart({
  A: "~@5 db6@4 ~ ab5@2 b5@4 bb5@2 ab5@4 f5@2", B: "gb5@4 ~ eb5@2 f5@4 db5@2 eb5@4 c5@2 db5@4 ~",
  C: "ab4@2 ab4@6 db6@4 ab5@2 b5@4 bb5@2 ~ ab5@3",
  D: "[~ f5@2 gb5@4 eb5@2 f5@4 db5@2 ~ eb5@4 c5@2 ~ db5@5 db4@3 db4@9 ~@8]/2",
})).s("gm_pad_poly").gain(0.4).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@31 [~ x] [x ~@5 x ~@4 x]!6 [x!2] ~@20>").gain(0.35).pan(0.3)

// drums · rim
const rim = s("rim").struct("<~@31 [~@3 x] [~ x ~@2] ~@3 [~@3 x] [~ x ~ x] [~ x ~@2] ~@20>").gain(0.4).pan(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@31 [~@3 x] [~ x ~ x]!4 [x!4 ~@2 x ~] [~ x ~ x] [~ x ~@2] ~@20>").gain(0.35).pan(0.3)

// drums · crash
const crash = s("cr").struct("<~@8 x ~@37 [~@12 x!12] x ~@6 [~@5 x ~@18] ~@4>").gain(0.4).pan(0.3)

// drums · ride
const ride = s("rd").struct("<~@56 [~ x ~] ~@2>").gain(0.4).pan(0.3)

stack(
  string_ensemble_1, piano, bass, bass_soft, tremolo_strings, bass_2, flute, french_horn, timpani, pad_poly, kick, rim,
  hihat, crash, ride
)

More by Barry Manilow