Strudelify
Mandy cover art

Barry Manilow II

Mandy

Barry Manilow

KeyF majorTempo105 bpm
0:00/0:00
// Mandy — Barry Manilow
// 105 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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 · "Ac Piano"
const piano = note(`<
  ~ A@4 B@2 C@2 D@2 E@2 F G H I J@2 K@2 L@3 M@4 N@5 O@4 P@4 Q R S T U@6 V W@4 X@4 Y Z@7 AA AB AC@4 AD@5 AE@3 AF AG@3 AH
  AI AJ AK AL AM AN AO AP AQ@2 AR@5
>`.pickRestart({
  A: "[~@26 d4 ~@3 f4@2, d4@10 bb3@14 bb2@5 eb4@3, bb2@6 f3 bb3 bb2@5 d4 f3 d4@2 f3@2 c4@13, ~ f3@2 c4@6 f3@2 c4@5 bb2@6 f3 a3@9, ~@2 bb3@3 f4@13 a3@3 d4@4 f3@2 [f3,d4]@5]/4", // Dm
  B: "[~@10 [d4,bb4] ~@3 [f4,d5]@2, f4@8 eb2 eb3@2 [d4,bb4]@2 [eb4,c5]@3, eb2@2 g3 [bb3,g4]@13, ~ bb2@15, ~@2 eb3@3 g3 eb4 g3@9]/2", // Gm Dm Gm Cm Eb
  C: "[~@3 f4, d5@5 eb4 g4 eb5 f2 g3 bb3 eb4@5, f4@3 [bb3,g4,eb5] c4@12, f2 f3@7, ~ c3@15]/2", // Eb
  D: "[~@7 f4 [a3,c4,d4,f4]@4 ~@3 f2, f3@17 ~@15, bb2@8 f4@4 g4@5 ~@15, [bb3,d4,f4]@6 g4@2 [bb3,d4,d5]@9 ~@7 [a3,c4,d4,f4]@8, ~ g4 bb4@5 bb2@9]/2", // Dm7 Bb Dm7
  E: "[~@7 f4 [a3,c4,d4,f4]@4 ~@3 bb2, bb2@12 [f3,g4]@5 ~@15, [bb3,d4,f4]@8 [bb3,d4,d5]@9 ~@7 [bb3,d4,f4]@8, f3@4 bb4@13 ~@15, ~ g4@2 [f3,g4] f4@3 bb2@8 ~]/2", // Dm7 Fsus2 Bb Fsus2
  F: "g3@3 ~@4 c5 g3@4 ~@2 [c3,g4]@2, eb5, c3@2 g4 g3, [c4,eb4,g4]@5 d5@11, ~@3 d5 g3@4 [c4,eb4,c5]@8", // C5 Cm
  G: "~@2 g3!2, [bb2,eb5], [g3,c4,eb4,g4] [c4,eb4,g4], ~ d5@7, ~@3 c5@5", // Eb5 Cm
  H: "~@4 g3@2 ~ g2, ab2@2 [c4,eb4,g4,c5] g3, [g3,c4,eb4,g4]@7 d5@9, eb5@3 eb5@5, ~@3 f5@13", // Cm
  I: "g3@3 ~@9 [g4,bb4]@2 [f2,g4,bb4]@2, eb5@4 eb4 [f4,c5]@3, f2@7 d5@9, f4@5 c5 bb3@10, [bb3,eb4]@3 d5 g3@12", // Gm Gm7 F5 Eb5
  J: "[~@6 f4 f3 ~@7 f3, bb2@5 f3 g4 f4@5 f4@4, f4@3 g4 [d4,d5]@4 a3@2 a3@4 [f2,a3]@2, bb3@2 g4@2 [bb3,bb4]@13 ~ f3@8 f3@4 ~@2, ~ f3@2 c4@5 [bb2,c4,d4]@8]/2", // D F Bb
  K: "[~@7 [bb3,d4], [bb2,d4]@5 f4 f3@3 c4@4 f3@3, f4@6 g4@2 [f3,c5] d5@3 g4@2 f4@8 a3@10, ~ f3@2 c4@4 a3@3 f3@2 f4@4, ~ g4 [bb3,bb4]@6 bb2@8]/2", // Bb F5 Bb
  L: "[g3@2 ~@5 c5 ~@6 [c3,g4]@2 ~@14 bb2@2 g3@2 ~@12 [g2,g4]@2, eb5@6 c4 g3 [c4,d5] eb5@3 g3@2 c4 eb5 c4 f5@3 [g3,c5] eb4 c4@2, c3@3 g4 [d4,c5]@4 bb2@5 eb4@3 ab2@8, eb4@3 d5 c4@2 d5@10 g4@2 g3@2 d5@12 eb4@6 eb5@10, c4@2 g3@8 eb4@6 eb4@4 c4@2 [g4,c5]@10 g4@2 g3@2 c4@2 g4 d5@9]/3", // C5 G Csus2 C5 D7 C5
  M: "[g3 ~@5 eb4@2 g3@2 ~@4 f2@2 ~@8 f4@2 ~@4 a2@2 ~@16 f4@2 ~@10 f4@2 [c4,f4]@2, [f2,f4]@2 bb3 eb5@4 c5@6 f4 [f3,d5] c5@4 c5@3 c5 c5@5 c4 f3@3, [eb4,eb5]@2 c5@2 bb3 [g3,f5]@3 bb2@8 [g2,bb3,d4,g4]@4 [eb2,bb3,eb4,g4]@4 f2@8, bb3@2 g3@6 [eb4,f4]@8 f3@2 bb4@14 ~@2 bb4@6 g3@5 g3@3 c4@2 f3@2 g3@12, ~@2 d5@6 f2@4 [bb3,d5]@4 [bb3,d4,f4]@4 f3@4 [bb3,d4]@8 g3@4 [g3,d5]@5 ~ bb4@6 [f3,a3]@2 f4@4 a3@10]/4", // F5 F Dm Eb G7 Gm Eb Ebsus2 …
  N: "[~@14 f2@2 ~@8 f4@2 ~@4 a2@2 ~@8 c5@2 ~@4 d4@2 f3 ~@11 f4@2 [c4,f4]@2 ~@10 d5@4 c5@2, f2@12 [g3,bb3,d5]@4 bb2@14 c5@6 [g3,d5]@3 d5@2 ~@5 c5@18 [f2,g3,bb3,eb4]@15 ~, [eb4,f4]@3 [bb3,d5] [eb4,f4]@4 d4@2 f3 bb3@2 [f3,f4]@3 [g2,d4]@4 g3@2 [g3,d5]@2 c4@5 f3@3 eb5@2 eb5@5 ~, bb3@4 eb5@12 [f3,bb3,f4]@2 bb4@14 g3@2 bb4@7 ~ bb4@6 a3@2 [f3,f4]@2 a3@2 f4@2 c3@9 ~@7 [f4,c5]@7 ~, [g3,eb5]@2 d5@2 g3@6 c5@4 c5@14 [bb3,d4,d5]@4 bb3@6 [bb3,c5]@2 [eb2,bb3,eb4]@8 f2@12 a3@5 ~ d5@4 d5@4 ~@6]/5", // F5 Gm G5 Eb Ebsus2 Bb Ebsus2 F …
  O: "[~@16 bb3@4 ~@2 f4@2 ~@6 bb3@2 ~@4 [bb3,eb4]@2 g3@4 ~@14 f5@7 ~, [bb2,d4]@12 bb3@2 f4@8 ~@2 [eb2,g3,d4]@9 ~@5 eb4@6 bb3@4 [f2,f4]@15 ~, bb3@10 f3@6 [g2,d4]@9 ~@7 f2@14 eb4@17 ~, f3@4 f3@2 c4@11 ~@3 bb3@5 ~@7 [f3,d4]@6 bb3@4 g3@21 ~, ~ bb4@31]/4", // Eb5 Bb Ebmaj7 F G5 Dm
  P: "[~@8 [a3,c4,d4,f4]@4 ~@4 f5 ~@7 [a3,c4,d4,f4]@4 ~@3 bb2, f3@7 [bb2,f5]@9 bb2@7 f5@9, [bb2,f5]@12 g5@5 ~@13 [f2,d5]@2 [bb3,d4,f4]@8 [bb3,d4,f4,d6]@6 bb2@16 ~@2, [bb3,d4,f4]@6 g5@2 [bb3,d4,f4,d6]@9 ~@7 [a3,c4,d4,f4]@8 f3@4 bb5@13 ~@15, ~@2 g5@2 bb5@13 ~@14 eb5@2 ~ g5@4 [f3,g5]@6 [f3,g5]@5 ~@7 [bb3,d4,f4]@8]/4", // Dm7 Bb5 Dm Bb Dm7 Fsus2 Bb
  Q: "g3@3 ~@4 c6 g3@4 ~@2 [c3,g5]@2, eb6, c3@3 g3, [c4,eb4,g4]@3 d6@5, ~@3 d6 g3@4 [c4,eb4,g4,c6]@8", // C5 Cm
  R: "eb6 ~@7 g3@4 g3@4, [bb2,g5], [g3,c4,eb4,g4] [c4,eb4,g4], ~@3 [f5,d6]@13, ~@3 [eb5,c6]@5", // Eb Cm Dm Cm
  S: "~@4 g3@2 ~ [g2,g5], ab2@2 [c4,eb4,g4,c6] g3, [g3,c4,eb4,g4]@7 d6@9, eb6@3 eb6@5, ~@3 f6@13", // G Cm
  T: "g3@3 ~@11 [f2,bb4,g5]@2, eb6@4 eb4 [f4,c6] [g4,bb5]@2, f2@3 [bb3,d6]@5, f4 g3@3, [bb3,eb4]@3 f6@13", // Gm7 F5 Gm Bb Eb5
  U: "[~@14 f3@2 ~@44 [bb3,d4]@4 g3@2 ~@5 c6 ~@6 c3@2 ~@14 bb2@2, bb2@10 f3@2 f4@8 a3@6 f3@2 [f2,a3]@4 [bb2,d4]@8 f3@2 f4@10 f3@2 a3@2 f4@2 f3@6 c4@2 g3@2 c4@2 [g4,d6]@10 [g4,eb6]@2 g3@2 c4@4 [g3,d6]@3 c6 c4@4, f5@4 [d4,d6]@3 f5@8 [f3,d5] f5@3 g5 d6@2 f3@2 bb2@8 c3@4 [d4,c6]@2 c4 [g3,g5] c4 f6@7, bb3 f3 [bb3,bb5]@6 [bb2,c4,d4]@8 f4@3 c4@3 g5 f5@14 eb4@3 bb2@5 eb4@3, ~@2 g5@4 c4@6 g5@4 a3@2 f3@6 f4@7 eb5@2 ~ [f3,g5]@2 [bb3,bb5]@10 a3@4 c4@14 eb4@3 eb6@13 eb4@6 [g4,eb6]@10]/6", // Bb F Bb G5 Cm G5 D Dm …
  V: "g3 ~@6 [g2,f5], ab2@4 [g3,c6] eb4 c4@2, eb4@2 c4 [g4,d6]@5, g4 g3 eb6@6, [c4,eb6] f6@7", // G7 C5 G5 Cm
  W: "[g3 ~@5 eb4@2 g3@2 ~@4 f2@2 ~@14 a2@2 ~@4 d6@2 c6 ~@9 f3 ~@11 f5@2 [c4,f5]@2, [f2,f4]@4 bb3@2 eb6@8 c6@12 f5@2 [f3,d6]@2 c6@8 ~ c6@6 g3 c6@6 [g3,f5]@2 a3@2 c4@2 f3@2 f4@4, [eb4,eb6]@2 c6@2 bb3 [g3,f6]@3 bb2@8 [g2,bb3,d4,g4]@4 [eb2,bb3,eb4,g4]@4 f2@8, bb3 g3@3 [eb4,f4]@4 f3 bb5@7 ~ bb5@3 g3@2 d6@2 [a3,c4] a5@7, ~@2 d6@6 f2@4 [bb3,d6]@4 [bb3,d4,f4]@4 f3@4 [bb3,d4,f4]@8 g3@4 g3@3 d6@2 ~ bb5@6 f4@2 f3 g5@13]/4", // F5 F Dm G7 Eb G7 Gm Eb …
  X: "[~@14 f2@2 ~@14 a2@2 ~@6 bb3@2 ~@2 bb5@2 ~@2 d4@2 f3 ~@11 f5@2 [c4,f5]@2, f2@6 [g3,bb3,d6]@2 d4@2 f3 bb3 f4@2 [bb3,d4,d6] c6@3 [g3,d6]@2 [eb2,bb3,eb4]@4 f2@5 f3 a3@2, [eb4,f4]@3 [bb3,d6] [eb4,f4]@4 [f3,bb3,f4] bb5@7 g3 bb5@3 g3@2 [g3,bb5]@2 c4@4 c3@4, bb3@4 eb6@12 bb2@16 [g2,d4]@9 ~@7 a3@2 f3@2 a3@2 f4@10, [g3,eb6] d6 g3@3 c6@2 c6@6 [f3,f5]@3 bb3@3 c6@2 ~@2 c6@2 c6@7]/4", // F5 Gm Bb G5 Eb5 Ebsus2 Bb Ebsus2 …
  Y: "~@5 d6@2 c6, [f2,g3,bb3,eb4]@15 ~, eb6@2 eb6@5 ~, ~@2 d6@4 d6@3 c6@5 ~@2, ~@8 f4@7 ~", // Eb
  Z: "[bb5@2 ~@2 bb3@2 ~@8 g2@2 ~@14 d3@2 ~@14 bb4@2 eb4@2 ~@10 g3@4 g3@4 ~@2 bb3@2 ~@14 [bb3,eb4,f4]@2 ~@4 f2@3 ~@3 c6@2 ~@10 [c3,d6]@2, g2@10 [a3,a4]@2 [bb3,bb4]@4 ~@2 c4@10 f4@4 g4@2 d4@4 bb4@6 g4@4 g4@4 g4@12 eb4@8 [bb3,eb4,f4]@12 f2@4 [bb3,eb4,f4]@7 ~@7 c6@2 [g4,c5,eb5,g5] c6@7, d4@6 [d4,g4]@10 [f4,a4]@4 d4@2 a4@10 bb4@4 g4@6 d4@6 ~@2 eb4@6 [bb3,eb4]@8 f2@14 f2@2 [g4,bb4,eb5,f5]@15 ~ [g4,c5,eb5,g5]@7 d6@5 [g4,c5,eb5,g5]@4, bb3@2 g3@4 bb3@2 g3@8 d3@6 f4@4 d4@6 eb3@16 [c3,bb4]@16 bb3@4 g3@8 g3@19 ~ c3@14 ~@2, ~ bb5@48 ~ bb5@6]/7", // Bbsus4 Csus2 A Bb Bbsus4 Cm G5 F …
  AA: "d6@2 eb6@2 d6 ~ c6@2 [g4,c5,eb5]@4 ~@2 bb2@2, bb2@7 ~, [g4,c5,eb5,g5] [g5,c6], ~@5 [d6,eb6]@11, ~@3 [g4,c5,eb5]", // Cm C5 Ebmaj7 Cm
  AB: "~@7 c6 [g4,c5,eb5,g5]@4 ~@2 [g2,f5]@2, ab2@3 [g4,c5,eb5,g5], [g4,c5,eb5,g5] c6, d6@3 d6@5, ~@3 eb6@13", // Cm G7 Cm
  AC: "[~@10 f6@2 d6@2 ~@16 a2@2 ~@10 bb5@2 ~@4 f3 ~@11 f5@2 [c4,f5]@2, f2@15 ~ bb2@12 [f3,d6]@2 c6@8 c6@8 c6@6 [g3,f5]@2 a3@2 c4@2 f3@2 f4@4, [g4,bb4,eb5,f5]@6 eb6@2 [g4,bb4,eb5,f5]@7 ~ [bb3,d4,f4]@4 f3@4 [bb3,d4,f4]@8 [g2,bb3,d4,g4]@8 [eb2,bb3,eb4,g4]@8 f2@16, eb6@4 c6@7 ~@3 c6@12 f5@6 g3@4 [g3,d6]@4 g3@5 g3@3 f4@2 f3 g5@13, ~@2 d6@9 ~@5 f3@2 bb5@14 ~@2 bb5@7 ~@3 bb5@4 [a3,c4]@2 a5@14]/4", // F5 Dm G7 Eb Bb Gm Eb G5 …
  AD: "[~@14 f2@2 ~@14 a2@2 ~@6 bb3@2 ~@6 d4@2 f3 ~@11 f5@2 [c4,f5]@2 ~@12 d6@2 d6@2, f2@12 [g3,bb3,d6]@4 bb2@12 [bb3,d4,d6]@2 c6@6 [g3,d6]@4 [eb2,bb3,eb4]@8 f2@4 [a3,f5]@2 f4@4 f3@2 a3@4 [f2,g3,bb3,eb4]@15 ~, [eb4,f4]@3 [bb3,d6] [eb4,f4]@4 d4@2 f3 bb3 f4@4 bb3@3 c6@2 bb5@3 a3 a5@3 c3@4 eb6@2 eb6@5 ~, bb3@4 eb6@12 [f3,bb3,f4]@2 bb5@14 g3@2 bb5@6 g3@4 [g3,d6]@4 c4@2 f3 g5@14 ~@7 f4@7 ~, [g3,eb6]@2 d6@2 g3@6 c6@4 c6@12 [f3,f5]@6 [g2,d4]@9 ~@5 c6@19 ~ d6@4 d6@4 c6@4 ~@2]/5", // F5 Gm Bb G5 Eb5 Dm Eb Ebsus2 …
  AE: "[c6@2 ~@12 b2@2 ~@16 g3 ~@11 g5@2 [d4,g5]@2, c3@6 [g3,e6] d6@4 d6@4 d6@3 [a3,g5] b3 d4 g3 g4@2, [c4,e4,g4]!2 [a2,c4,e4,a4] [f2,c4,f4,a4] g2@2, g3@4 g3@6 g5@6 a3@4 [a3,e6]@4 a3@5 a3@3 g4@2 g3 a5@13, ~@2 c6@14 ~@2 c6@7 ~ c6@6 [b3,d4]@2 b5@14]/3", // G5 C A7 C Am F A5 Bm
  AF: "~@7 [g2,f5,d6], g2@3 [a3,c4,g5,e6], [f4,g4]@3 [c4,g5,e6] [f4,g4]@4, c4 [a5,f6]@3, [a3,a5,f6] [g5,e6] a3@3 [f5,d6]@2 ~", // G7 Am7 Fsus2 C Fsus2 Dm C Dm
  AG: "[c6@2 ~@12 b2@2 ~@6 c4@2 ~@6 e4@2 g3 ~@11 g5@2 [d4,g5]@2, c3@6 [c4,e4,e6] d6@3 [a3,e6]@2 [f2,c4,f4]@4 g2@5 g3 b3@2, e4@4 g4@4 c4@3 d6@2 ~@2 d6@2 d6@7, g4@2 g3 c4@2 [g3,g5]@3 [a2,e4]@4 a3@2 a3@2 d4@4 d3@4, [g3,c4]@2 [e5,c6]@14 a3@2 c6@7 ~ c6@6 b3@2 g3@2 b3@2 g4@10]/3", // G5 C A5 F5 G A5 C5 C
  AH: "~@8 g4@6 e6 f6, [g2,a3,c4,f4,f6]@15 ~", AI: "g3@2 ~@5 b2, [c3,g6], [c4,e4,g4]!2, ~ g3@2 g3",
  AJ: "a3@4 a3@4 a3@5 a3@3, [a2,c4,e4,a4] [f2,c4,f4,a4]", // Am F
  AK: "g3 ~@13 d4@2, g2@3 g4, g4@4 d4 g3@3, d4 a3@3, b3 g3@2 b3@5",
  AL: "a3@2 ~@5 g2, g2@7 ~, [f4,g4]!2, c4@3 c4@3 ~@2, ~ a3@2 [a3,c4]", // Fsus2 Am
  AM: "g3@2 ~@5 b2, c3, e4@5 g3@3, g4@3 c4@3 [c4,e4]@2, c4 g3 g4@2", // C
  AN: "a3@2 ~ c4 a3@2 ~ e4, [a2,e4]@9 ~@7, c4@3 ~@3 a3@2, ~ a3 [f2,c4,f4]@2", // A5 F5
  AO: "g3 ~@13 d4@2, g2@3 b3, d4@5 g3@3, b3!2 d3@2, ~ g3@2 g4@5", AP: "~@8 g4@7 ~, [g2,a3,c4,f4]@15 ~",
  AQ: "[g3@2 ~@7 g3 [g3,e4] ~@3 g4@2, c3 [c3,b3], c4@5 c4@3 ~@8, e4@3 e4@4 e4@3 ~@3 f4@3, ~@2 g3@4 g3@3 ~@2 [g3,e4]@5]/2", // C Cmaj7 C
  AR: "[~@21 [e4,c5]@2 ~@7 [g4,e5]@5 ~@2 c5@42 ~, f3@16 g2@7 [e4,c5]@5 [f4,d5]@8 ~@44, g4@12 c4@23 ~ [g3,e4]@42 ~@2, ~@2 a3@4 a4@29 ~@45, ~@4 c4@6 a3@25 c3@43 ~@2]/5", // C Dm C
})).s("gm_piano").gain(0.4)

// bass · fretless bass · "El Bass"
const bass = note(`<
  ~@16 A B@2 C D E F G H I J K L I J M N ~ O P Q R S T U V W X Y Z S Z AA V T G H I J K L I J M N AB AC AD E AE AF AG AH
  AI AJ I J K L I J M N AK AL AM AN AK AL AO AP AK AL AM AN AK AL AO AP ~@3 AQ@4
>`.pickRestart({
  A: "f2@11 ~ f3@2 g3@2", B: "[bb2@6 g3 f3, ~@24 f3 ~@7]/2", C: "bb2", D: "bb1@7 d2", E: "c2", F: "bb1", G: "ab1@7 g1",
  H: "f1@8 f2@7 ~", I: "bb1@6 bb2 a2", J: "g2 eb2", K: "f2@14 f1 ~", L: "f1@3 f2", M: "f2@7 f2", N: "f1@15 ~",
  O: "~ eb1", P: "f1", Q: "f2@8 f3@7 ~", R: "~@14 bb1 ~, bb2", S: "bb1@4 g2@3 f2", T: "bb1@14 bb1 ~", U: "bb1@3 d2",
  V: "c2@13 ~ c2@2", W: "bb1@13 ~ bb1@2", X: "ab1@13 ~ g1@2", Y: "f1@7 ~ f2@8", Z: "bb1@13 ~ bb1 ~",
  AA: "bb1@7 ~ bb1@4 d2@3 ~", AB: "g1@13 ~ g2@2", AC: "d2@6 c2 d2", AD: "eb2@7 d2", AE: "f2@13 ~ f2@2",
  AF: "f1@14 g1 ~", AG: "c2@7 c3", AH: "bb2@13 ~ bb2@2", AI: "ab2@11 ~ ab2@2 g2@2", AJ: "f2@6 c2@2 f1@7 ~",
  AK: "c2@6 c3 b2", AL: "a2 f2", AM: "g2@14 g1 ~", AN: "g1@3 g2", AO: "g2@7 g2", AP: "g1@15 ~", AQ: "[g1@19 c1@44 ~]/4",
})).s("gm_fretless_bass").gain(0.5)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@23 A B C D E B F G H I ~@4 J K L M N O P Q R S J M T O U V W X Y Z F AA H B AB AC AD AE AF AG N AH@2 AI W X Y Z F AA
  H B AJ AK AL AM AN AO AP AQ AJ AK AL AM AN AR AP AQ AS ~@2 AT@4
>`.pickRestart({
  A: "ab2@7 g2", B: "[f2,g3,bb3,eb4]", C: "bb2@7 a2, [f3,bb3,d4]", D: "[g2,d4] eb2, [g3,bb3]", E: "[f2,f3,a3,c4]",
  F: "[bb2,f3,bb3,d4]", G: "[g2,bb3,d4,a4] [eb2,eb4,g4]", H: "[f2,a3,c4,f4]", I: "[f2,g3,bb3,eb4]@15 ~",
  J: "[bb2,bb3,d4,f4]", K: "[bb2,a3,c4,f4]", L: "[bb2,g3,bb3,d4,f4]", M: "[a3,c4] [bb3,d4], [bb2,f4]",
  N: "[c3,g3,c4,eb4]", O: "[bb2,g3,c4,eb4]", P: "ab2@7 g2, [g3,c4,eb4]", Q: "~ g4, [f2,g3,bb3]",
  R: "c4 bb3, [bb2,d4,f4]", S: "~@7 f2, [bb2,a3,c4,f4]", T: "[c3,c4,eb4,g4]", U: "[ab2,g3,c4,eb4]",
  V: "[f2,bb3,eb4,g4]", W: "[bb3,f4,bb4,d5]", X: "[g3,d4,g4,bb4] [eb3,eb4,g4,bb4]", Y: "[f3,f4,a4,c5]",
  Z: "eb5@3 f5, [f3,g4,bb4]", AA: "[g2,d4,a4] [eb2,eb4,g4], bb3", AB: "[g4,g5,bb5,d6]", AC: "[d4,f5,a5]",
  AD: "[eb4,d5,g5,bb5]", AE: "[c4,eb5,c6]", AF: "[f4,f5,bb5]", AG: "bb5 a5, [f4,f5]",
  AH: "[[bb2,d4,eb4] [ab2,c4,eb4], g3]/2", AI: "[f2,bb3,eb4,f4]", AJ: "[c4,g4,c5,e5]",
  AK: "[a3,e4,a4,c5] [f3,f4,a4,c5]", AL: "[g3,g4,b4,d5]", AM: "f5@3 g5, [g3,a4,c5]", AN: "[c3,g3,c4,e4]",
  AO: "[a2,c4,e4,b4] [f2,f4,a4]", AP: "[g2,b3,d4,g4]", AQ: "[g2,a3,c4,f4]", AR: "[a2,b4] [f2,f4,a4]",
  AS: "c2 ~, c3 ~@3", AT: "[[f3,a3]@19 [c2,e3]@44 ~, [g2,c4]]/4",
})).s("gm_string_ensemble_1").gain(0.28)

// other · flute
const flute = note("<~@61 A B C D E@2 ~@30 F G@4>".pickRestart({
  A: "g4@5 a4 bb4@2", B: "a4@5 bb4 c5@2", C: "bb4@5 c5@2 d5", D: "d5@5 ~ eb5@4 c5@4 bb4@2", E: "[c5@7 ~]/2",
  F: "~@6 e4 a3", G: "[c4@19 g4@43 ~@2]/4",
})).s("gm_flute").gain(0.22)

// other · string ensemble 1 · "End Hi St"
const string_ensemble_1_2 = note("<~@87 A@2 B C D E F G ~@4 H@3>".pickRestart({
  A: "[f6@3 e6@4 d6@3 c6@2 d6@2 e6@2]/2", B: "d6", C: "c6", D: "f6@3 e6@5", E: "d6 c6 d6 e6", F: "[b5,g6]",
  G: "g5 a5!2 b5!2 c6!2 d6", H: "[~@5 c7@42 ~]/3",
})).s("gm_string_ensemble_1").gain(0.23)

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A B@5 A B ~@4 B@15 C A B@2 A B A@2 B@5 A B D B@2 A@2 B@2 A B A@2 B A B@2 A B A@2 E A B@2 A B A@2 E B ~@6
>`.pickRestart({
  A: "x ~@6 x", B: "x", C: "x ~@3 x ~@2 x", D: "x ~@2 x ~@4", E: "x ~ x ~@4 x",
})).gain(0.58)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@28 A@2 ~@11 A ~ A ~@3 A ~@3 A ~@3 A ~ A ~@3 A ~ A ~@2 A ~@2 A ~@3 A ~ A ~@5 A ~ A ~@5 A ~ A ~@10
>`.pickRestart({
  A: "~@7 x",
})).gain(0.39)

// drums · rim
const rim = s("rim").struct("<~@37 [~ x]!15 ~@50>").gain(0.58)

// drums · snare
const snare = s("sd").struct("<~@25 A@3 B A@3 ~@20 C A@6 B A@10 B A@6 B A@7 B A@7 B A ~@7>".pickRestart({
  A: "~ x", B: "~@3 x!2 ~@3", C: "~ x ~@2",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@31 A ~@24 A ~@9 A ~@7 A ~@7 A ~@7 A ~@11>".pickRestart({
  A: "~@3 x ~@4",
})).gain(0.39)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@24 A ~@3 A ~@2 A ~@20 B ~@3 A ~@2 A ~@6 A ~@3 A ~@3 A ~@2 A ~@4 A ~@2 A@2 ~@3 A ~@2 A@2 ~@7
>`.pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<A ~@24 B A C D E C D ~ F@3 ~ E A G@2 H G H@2 I G@5 A ~@50>".pickRestart({
  A: "x!4", B: "~@2 x!2", C: "x!2", D: "x!2 ~@2", E: "~ x!3", F: "~ x", G: "x ~ x!2", H: "x!3 ~", I: "~ x!2 ~",
})).gain(0.45)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@27 A ~@2 A ~@8 B@2 C D C ~ C D@5 ~@51>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4", C: "~@3 x", D: "~ x ~@2",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@24 A ~@3 B ~@2 B ~@20 C ~@3 B ~@2 B ~@6 B ~@3 B ~@3 B ~@2 B ~@4 B ~@2 B@2 ~@3 B ~@2 B@2 ~@7
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@5 x ~@2", C: "~ x",
})).gain(0.58)

// drums · open hat
const open_hat = s("oh").struct("<~@51 [~@7 x] ~@50>").gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  ~@25 A ~@3 A ~@2 A ~@19 A@2 ~@3 A ~@3 A ~@3 A@3 ~@2 A@2 ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A ~@2 A@2 ~@6
>`.pickRestart({
  A: "x",
})).gain(0.58)

// drums · ride
const ride = s("rd").struct(`<
  ~@16 A B ~@15 B ~@2 C B ~@7 B ~@7 D E F G D H I J D E@3 D K D E@2 K D E F G D H I J D E F G D H I L D E F G D H I L
  ~@7
>`.pickRestart({
  A: "~@10 x!6", B: "x", C: "~ x", D: "~ x!3", E: "x!4", F: "x ~ x!2", G: "x!2 ~@2", H: "x ~ x!3 ~ x ~",
  I: "x ~ x ~@4 x", J: "x!3 ~", K: "~ x ~@2", L: "~ x!2 ~",
})).gain(0.45)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@16 A ~@38 B ~@17 B ~@7 B ~@7 B ~@12>".pickRestart({
  A: "x!10 ~@6", B: "~ x ~@2",
})).gain(0.19)

// drums · tambourine
const tambourine = s("tb").struct("<~@61 [~ x]!34 ~@7>").gain(0.58)

stack(
  piano, bass, string_ensemble_1, flute, string_ensemble_1_2, kick, kick_soft, rim, snare, snare_soft, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, crash, ride, ride_soft, tambourine
)

More by Barry Manilow