Strudelify

Somewhere In The Night

Barry Manilow

KeyG minorTempo80 bpm
0:00/0:00
// Somewhere In The Night — Barry Manilow
// 80 bpm, 4/4, key G minor. 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 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · fretless bass
const bass = note(`<
  ~@4 A B C D E F G H I J D K L M N D O L M N D P Q R S T U V W ~@2 X@2 N D Y Z D AA AB J AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU@2
>`.pickRestart({
  A: "bb2@4 bb2@3 f2", B: "bb2@7 f2", C: "d3@13 ~ d3@2", D: "g2@5 ~ g2@2 f2@5 ~ f2@2", E: "c2@4 bb1@3 bb1",
  F: "a1@5 ~ a1@2 d2@5 ~ d2@2", G: "g2@5 ~ g2@2 f2@5 ~ f2 ~", H: "e2@13 ~ e2@2", I: "eb2@5 ~ d2@4 g1 a1 bb1 ~ g1 ~",
  J: "d2@6 e2@4 gb2@3 ~ gb2@2", K: "eb2@5 ~ eb2@2 f2 ~ f2@4 f2 ~", L: "bb1@5 ~ bb1 ~ bb1@5 ~ bb1 ~",
  M: "eb2@5 ~ eb2@2 f2@4 eb2@4", N: "d2@5 ~ d2 ~ d2@5 ~ d2 ~", O: "eb2@5 ~ eb2@2 f2 ~ f2@3 ~ f2@2",
  P: "eb2@5 ~ eb2 ~ eb2@5 ~ eb2 ~", Q: "eb2@2 bb1 c2 eb2 ~ eb2@4 bb1 c2 eb2 ~ eb2 ~", R: "f2@3 ~ f2 ~ f2@4 g2@2 a2@3 ~",
  S: "bb2@5 ~ bb1@2 c2@4 d2@3 ~", T: "eb2@4 eb2@3 ~ eb2@3 ~ eb2@4", U: "bb2@3 ~ bb2 ~ bb2 ~ bb2@4 bb2 ~ bb2 ~",
  V: "f2!2", W: "bb2", X: "bb2@5 ~ bb2 ~ bb2@5 ~ f2 ~", Y: "c2@6 c2@2 bb2@5 ~ bb2@2", Z: "a2@5 ~ a2@2 d2@5 ~ d2@2",
  AA: "e2@14 e2 ~", AB: "eb2@5 ~ d2@4 g1@2 bb1 ~ g1 ~", AC: "g2@3 g2 f2@3 f2", AD: "eb2@5 ~ eb2@2 g2@2 g1@4 ~@2",
  AE: "c2@6 ~@2 c2 ~ c2 ~ c2 ~ c2@2", AF: "f2@5 ~ f2@2 g2@4 f2@4", AG: "e2@5 ~ e2 ~ e2@5 ~ e2 g2",
  AH: "a2@5 ~ a2@2 g2@5 ~ g2@2", AI: "f2@5 ~ f2 ~ f2@6 f2 ~", AJ: "f2@2 c2 d2 f2 ~ f2@4 c2 d2 f2 ~ f2@2",
  AK: "g2!2 a2 b2", AL: "c3@4 c3@2 c2@2 d2@4 e2@3 ~", AM: "f2 ~@2 f2@4 ~", AN: "c3@2 b2@2 a2@2 b2 c3", AO: "g2@7 ~",
  AP: "a2@5 ~ a2 ~ a2@5 ~ a2 g2", AQ: "e2@5 ~ e2 ~ e2@5 ~ e2 ~", AR: "d2@2 ~ e2@2 f2@2 ~ gb2@2 ~ d2@2 gb2@2 ~",
  AS: "g2@2 g2 g2@4 ~", AT: "c3@5 ~ g2 ~ c3 ~@2 g2 ~ c3 ~ g2", AU: "[~ c3@19 c2 ~@11]/2",
})).s("gm_fretless_bass").gain(0.3)

// chords · overdriven guitar
const overdriven_guitar = note("<~@47 A B C D E F G H I H ~ J K ~@5>".pickRestart({
  A: "~@4 [g3,c4,e4] ~@7 [g3,c4,e4] ~@3", B: "~@4 [f3,a3,c4,e4] ~@7 [f3,g3,b3,d4] ~@3",
  C: "~@4 [g3,b3,d4,e4] ~@7 [g3,b3,d4,e4] ~@3", D: "~@4 [a3,c4,e4] ~@7 [g3,b3,e4] ~@3",
  E: "~@4 [f3,a3,c4] ~@7 [f3,a3,c4] ~@3", F: "f3@2 c3 d3 f3 ~ f3@4 c3 d3 f3 ~ f3 ~", G: "~@4 [g3,d4] ~@7 [g3,d4] ~@3",
  H: "~@4 [g3,e4] ~@7 [g3,e4] ~@3", I: "~@4 [f3,c4] ~@11", J: "~@4 [e3,a3] ~@7 [e3,a3] ~@3",
  K: "~@4 [g3,b3] ~@7 [g3,b3] ~@3", // G
})).s("gm_overdriven_guitar").gain(0.42).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@47 A B C ~@2 D E F G H ~ I J ~@5>".pickRestart({
  A: "[g3,c4,e4]@4 [g3,c4,e4]@3 [g3,c4,e4] [c4,e4] ~ [g3,c4,e4]@4 ~@2", // C
  B: "[f3,a3,c4,e4]@3 ~ [f3,a3,c4,e4]@2 ~ [a3,c4,e4] [g3,b3,d4]@7 ~, ~@7 f3@8 ~", C: "[g3,b3,d4,e4]@7 ~@9",
  D: "~@4 [f3,a3,c4] ~@7 [f3,a3,c4] ~@3", E: "~@4 [g3,b3,d4] ~@7 [g3,b3,d4] ~@3",
  F: "~@4 [g3,c4,e4] ~@7 [g3,bb3,c4,e4] ~@3", G: "~@4 [a3,c4] ~@11", H: "~@4 [b3,e4] ~@7 [a3,e4] ~@3",
  I: "~@4 [a3,c4] ~@7 [a3,c4] ~@3", J: "~@4 [b3,d4] ~@7 [b3,d4] ~@3",
})).s("gm_electric_guitar_clean").gain(0.36).pan(0.6)

// chords · piano
const piano = note("<~ A@8 B@2 C@6 D@7 E@8 F@6 G@3 ~ H@6 I@4 J@6 K@7>".pickRestart({
  A: "[[f4,d5]@2 ~@6 c4@2 ~@6 eb4@2 ~ gb4 [gb4,eb5] ~@14 d4 ~@27 g4, bb3@4 f4@2 eb4 d4 c5@6 f4 g4@7 d5@9 f2@13 f4@10 g3@4 eb4 f4 g4 c4 eb4@2, d4@4 d5@7 d4@5 eb3@7 bb4@8 c4@8 d4@7 a3 c4 d4@2 bb3 c4 g3 bb3@11, ~@2 [f4,d5] g4@3 c5 bb4@5 e4@4 gb4@2 eb4@6 f4@8 [bb2,d4] f3 a3@2 d4 f3 a3 bb2@10 a3@15, ~@3 eb5@5 [bb3,e4]@2 c4@6 bb3@5 [gb4,eb5]@3 [bb2,d4]@2 c4 d4 [bb2,bb3] f3 bb3@10 f4 f3 a3 c4@2 f3@11 c4 d4@7]/8", // Dm Ebm Dm Bb Bbdim Ebm Bb
  B: "[~@11 g4 ~@3 g4, g4@4 ab4@2 a4@2 bb4 bb3 d4@2 g4 bb3 d4@2, ~ g3@15, ~ c4@7, ~@3 eb4@13]/2",
  C: "[~@8 bb3@3 d3@5 c3@3 ~@5 g4@2 ~@2 [f4,a4]@2 ~@2 g4@2 bb4@2 [f4,bb4,eb5] [f4,bb4]@2 ~ bb2@3 bb2 bb2@4, d4@8 eb3@16 d4@2 [g4,d5]@2 d4@6 d5@3 eb5@11, bb3@6 [g4,bb4]@15 [d3,gb3,a3]@13 g4@14, ~@2 d5@6 g3@3 [f3,bb3]@15 bb4@4 a4@9 [f4,bb4,c5,d5]@9, ~@2 bb4@2 [a4,c5]@7 e3@5 [d3,gb3]@3 [c3,e3,g3]@11 [f4,d5]@2 eb4@16]/6", // F Ebsus2 Bb5 G5 Gm D Bb5 Bb …
  D: "[~@11 d3 ~@14 bb4@2 [f3,bb4,eb5] bb4@3 ~@8 eb4@4 [a4,c5]@4 [d3,d4,f4,a4,c5]@8, eb3@14 c5@6 f3@2 [a4,f5]@7 f3@3 [bb4,d5]@2 bb3@2 a3@16 ~@4, ~ [g4,bb4]@6 [f4,a4]@2 g5@4 g4@3 [c4,f4]@6 [f3,eb4]@6, ~@2 d5@4 [f4,a4,c5]@2 d3@2 [f4,a4,c5,d5]@2 d3@6 [g4,bb4,d5]@2 f2@6 d5@3 eb5@11 [eb3,g4,bb4,d5]@16, ~@2 f3@5 d5 [g2,g3]@3 [f4,d5] eb3@4 c5@3 bb3@8 ~]/7", // Ebsus2 Am Dm7 Dm Bb Gm F F5 …
  E: "[d4@4 ~@11 eb4 [eb2,eb3,g3,bb3]@3 [g3,bb3]@3 ~@2 c4@4 c4@2 f4@2 ~@8 g4 ~ eb2@2 eb2@2 ~@2 [bb2,f4,bb4,d5]@16, [g3,bb4]@7 d4@4 [g3,eb4] f2@6 c3@5 eb2@8 ~, g4@8 [eb3,bb3,g4]@8 [eb4,g4]@6 g4@10 [bb2,bb3,d4,f4]@8 [eb2,bb4] [g4,eb5]@16 ~@7, ~@4 [f3,f4,a4]@15 [eb2,eb3]@11 [a2,a3,c4]@10 f5@16 ~@8, ~@4 d4@6 c4 d4 c4@10 bb3@2 [a3,f4]@4 [g2,g3,eb4]@10 d3@16 ~@10]/8", // Eb Gm Bb Gm Cm Eb Bb Eb5 …
  F: "[[f4,d5]@2 ~@6 c4@2 ~@6 eb4@2 ~ gb4 [gb4,eb5] ~@19 [d2,d3]@8, bb3@4 f4@2 eb4 d4 c5@6 f4@7 [gb4,eb5]@11 [bb1,bb2]@16, d4@4 d5@7 d4@5 [eb3,bb3]@7 bb4@16 ~@9, ~@2 [f4,d5] g4@3 c5 bb4@5 e4@4 gb4@2 eb4@6 [bb1,bb2]@7 f2@8 f2@9, ~@3 eb5@5 [bb3,e4]@2 c4@5 g4@7 d5@16 ~@10]/6", // Dm Ebm D Ebm Bb Eb5 Dm Bb …
  G: "[~ [c2,eb4]@2, g2@7 d4@16 ~, d4@3 c4@8 ~, ~ a3@4 ~, ~@5 bb3@16 ~@3]/3", // Cm
  H: "[~@8 bb3@3 d3@5 c3@3 ~@5 [g3,bb3,d4]@4 [g3,bb3]@4 [g3,bb3]@4 g3@3 [c2,e3,g3,c4]@9, d4@8 eb3@11 g3@2 [d3,gb3,a3]@11 c4@4 [g2,bb3,d4]@12, bb3@6 [g4,bb4]@5 e3@5 [d3,gb3]@3 [c3,e3]@9 [f2,f4]@16 ~@4, ~@2 d5@6 g3@3 f3@13 g2@4 d4@4 [eb2,eb4]@16, ~@2 bb4@2 [a4,c5]@7 bb3@13 g4@16 ~@8]/6", // Gm C D Gm D C F Eb …
  I: "[f3@8 b3@8 ~@3 [e5,g5,b5] ~@3 [g3,b3,e4] e4@8 a2@6 ~@2 g2@6 ~@2 f2@6 f2@2 f2@6 f2@2, [f2,a3,c4]@12 [g3,b3]@11 g2 [c4,f4,a4]@8, e4 g4 c5@2, ~@4 [g2,f3,d4]@12 [e4,a4]@3 a2@13, ~@2 g3@2 [b3,e4] [e5,g5,b5]@5 [e4,g4,b4]@6]/4", // Em F G F G7 A5 E5 Em
  J: "[~@2 f2 ~@3 f2 ~@3 [g4,b4]@4 g4@4 [g4,c5,e5]@4 g4@2 [f2,a3,c4]@3 ~@16 g2 g2@4, f2@3 d2@8 d2@32 ~@11 [f2,a3,f4]@22 [b2,g3,c4,e4]@2 c3@2 g2@4 g3@12, ~ c2@4 c2@9 [b4,d5]@13 c4@5 c2@16, ~ [f4,a4,c5]@2 [f4,a4]@8 [bb4,c5,e5]@5 c3 b3@7, ~@3 f2@3 c5 f2@16 ~ g4@10 [b2,g3,e4]@2 a2@12]/6", // G C F Cmaj7 Bm F C7 Em
  K: "[~@22 e2@2 e2@2 ~@22 g2@4 g2@2 ~@18 [c2,c3]@3 ~@6 [c2,c3]@19 ~@12, a2@8 a2@27 e2@19 g2@16 g2@4 ~ g2@4 g2@20 ~@13, ~@4 [e4,a4,c5]@8 [a4,c5]@28 gb2@3 d2@32 ~@37, ~@12 e4@8 [e3,e4,g4,b4]@8 [e3,e4,g4,b4]@17 gb2@32 ~@35, ~@16 e2@6 ~@4 e2@4 e2@2 d2@5 f2@27 [c2,c3]@8 ~@5 [c2,c3]@4 ~@31]/7", // C Am Em C
})).s("gm_piano").gain(0.36).pan(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@15 A@2 B C D@3 E F G@2 H I J K L ~@4 M N O P ~ Q R@2 S T U V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK@3
>`.pickRestart({
  A: "[~@7 [bb3,c4,d4,f4]@9]/2", B: "g4@2 f4 eb4", C: "f4@4 c5@10 a4 f4",
  D: "[d5@22 ~@2 [f3,bb3] ~ [f3,bb3]@4 bb3@6 bb3 c4 d4 eb4 f4@4 f4 g4 a4 [bb4,c5]]/3", E: "bb4 g5 f5 eb5",
  F: "f5@3 c6@11 a5@2", G: "[d6@24 c6@7 ~]/2", H: "[g4,bb4,eb5]@15 ~", I: "f5@2 eb5 f5, [a4,c5]",
  J: "~@4 ab4@3 bb4, [bb4,d5,f5]@15 ~", K: "ab5@2 g5@9 ~ g5 f5 eb5@2, [bb4,eb5]@3 ~", L: "f5",
  M: "bb3 c4 d4@2, [c3,d3,f3]", N: "d4", O: "a4", P: "[bb3,d4]@13 ~@3", Q: "~ g4 ab4 a4",
  R: "[bb4@8 g4@12 d5@4 c5@4 bb4@3 ~]/2", S: "~@8 [d3,f3] ~ [d3,f3] ~ [d3,f3] ~ [d3,f3] [f3,bb3]",
  T: "[gb3,a3]@3 g3@2 a3@3, ~@3 c4@5", U: "[g3,bb3]@8 [f3,a3]@7 ~, d4",
  V: "[~@2 g3 [ab3,a3] b3 db4 [d4,eb4] [e4,f4] [gb4,g4] [ab4,a4] [bb4,b4] [c5,db5] [d5,eb5] [e5,f5] g5@16 ~@2, eb3@3 ~@5, [bb3,c4]@4 bb3@9 ~@19, ~@5 c4@8 ~ gb5 ~@17]/2", // Amaj7 Ebmaj7 Fmaj7 Gmaj7 Amaj7 Bmaj7 Dbmaj7 Ebmaj7 …
  W: "e5@2 d5 a4", X: "~ d6@3, g4", Y: "a5 g5", Z: "f5@7 ~", AA: "[a5,c6]", AB: "b5@2 c6 b5, d6",
  AC: "~@8 bb5@7 ~, [c6,e6]@15 ~", AD: "g5@3 f5@5, c6@15 ~", AE: "e5@4 d5@4 c5@5 ~@3, g5@13 ~@3", AF: "[a4,c5,f5]",
  AG: "c6@2 b5 c6, a5", AH: "[g5,b5]", AI: "f6@2 ~ e6@2 d6@2 ~ c6@2 ~ a5@2 [c6,e6]@2 ~", AJ: "d6@8 d6@2 e6@2 f6@2 g6 ~",
  AK: "[[c6,e6,g6]@3 ~]/3", // C
})).s("gm_string_ensemble_1").gain(0.42).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@15 A@7 B@4 C D E F G H I J K L M@3 N@2 O@2 P Q R S@2 T@2 U V W X@2 Y Z AA AB@2 AC AD AE@3
>`.pickRestart({
  A: "[~@7 [f3,c4,f4]@9 [eb3,g3,bb3]@4 f3@4 d3@8 [g3,bb3]@4 [f3,a3]@4 [eb3,g3]@4 [f3,eb4]@3 [bb2,bb3,c4,d4]@9, ~@14 d4@27 ~@7 d4@40 ~@24, ~@14 bb3@17 ~@9 [a3,c4]@24 ~@8 d3@6 ~@2 bb3@12 ~@20]/7", // F5 Eb Gm F Eb F7 Bb Am
  B: "[[eb3,g3,bb3,d4] ~@3 [g3,bb3] [f3,a3] [eb3,g3,bb3]@2, ~ [f3,a3,c4]@3 ~@4, ~@16 d4@47 ~, ~@16 d3@31 ~@17]/4", // Ebmaj7 Gm F Eb F
  C: "[eb3,g3,bb3]", D: "f3@2 [eb3,g3] f3, [a3,c4]", E: "~@8 [bb2,ab3]@7 ~, [f3,bb3,d4]@15 ~", F: "[eb3,g3,eb4]@15 ~",
  G: "[bb2,f3,d4]", H: "[c3,f3]@2 [eb3,g3] ~, f2@15 ~", I: "f3", J: "e3", K: "eb3@3 c3", L: "bb2@7 ~",
  M: "[bb2@16 c4@16 [f3,g3,bb3,d4]@13 ~@3, f3@2 ~, a3@29 ~@19, ~@16 d3@29 ~@3]/3", // Gm7
  N: "[c3@4 [a2,c4]@2 ab3 a3, [g3,eb4]@3 [d3,d4], c4@13 ~@3 a3@7 ~@9]/2", O: "[g2 e2, [g3,bb3]]/2",
  P: "~@8 bb3 ~ bb3 ~ bb3 ~ d4 g4", Q: "gb4@3 e4@2 gb4@3", R: "bb4 a4", S: "[~@7 [g3,c4,e4]@9, g4]/2",
  T: "[[f3,a3,e4]@8 ~@8 e3@15 ~, c4@7 ~ [g3,b3,d4]@23 ~]/2", U: "[a3,c4] [e3,g3,b3], e4", V: "[f3,a3,c4]@15 ~",
  W: "[f3,a3,c4]", X: "[[g3,b3]@7 ~ [f3,a3,c4]@4 b3@2 ~@2 [c4,e4]@14 ~@2, d4 ~, ~@6 g3@9 ~]/2", Y: "g4@3 f4@5, a3@15 ~",
  Z: "c4 b3 a3 g3, e4", AA: "~@8 f4@7 ~, [g3,d4]@15 ~", AB: "[c4@8 b3@4 c4@4 [g3,b3,d4]@15 ~, e3@31 ~, a3 ~]/2",
  AC: "[a3,d4,f4] ~@2 [a3,d4,f4] ~ [a3,d4,f4] ~@2 [a3,d4,gb4]@2 ~ [a3,d4,gb4]@2 [a3,d4,gb4] ~@2", AD: "[b3,d4,f4]@7 ~",
  AE: "[[g3,c4,e4]@3 ~]/3", // C
})).s("gm_string_ensemble_2").gain(0.36).pan(0.8)

// chords · epiano2
const epiano2 = note("<~@11 A B C D E ~@26 A ~@4 F G H I J ~@13>".pickRestart({
  A: "~ [bb4,d5] [a4,c5] [g4,bb4]", B: "[bb2,eb3,g3]@5 ~ [bb2,d3,f3]@8 ~@2",
  C: "[c3,d3,gb3]@2 ~ [bb2,d3,g3] ~ [d3,gb3,a3]@2 ~", D: "[d3,g3,bb3]@7 ~ [f3,a3]@5 ~@3",
  E: "[eb3,g3,bb3,d4]@6 ~@2 [eb3,g3,bb3] ~ [eb3,g3,bb3]@4 ~@2", // Ebmaj7 Eb
  F: "[e3,g3,c4]@4 [e3,g3,c4]@3 [e3,g3,c4] [e3,g3] ~ [e3,g3,c4]@4 ~@2", G: "[f3,a3,c4]@6 ~@2 [f3,g3,b3,d4]@5 ~@3",
  H: "[e3,g3,b3,d4]@5 ~@3", I: "[e3,a3,c4]@7 ~ [e3,g3,b3]@6 ~@2", J: "[c3,f3,a3]@7 ~",
})).s("gm_epiano2").gain(0.36)

// other · french horn
const french_horn = note("<~@15 A@2 B ~@2 A@2 B ~@2 C D E F G H I ~@20 J K L M N H O P Q R S@3>".pickRestart({
  A: "[~@7 c4@3 bb3@2 a3@2 bb3@2]/2", B: "g3@4 f3@3 ~", C: "~@6 d4 eb4",
  D: "[g3,eb4]@6 bb3 c4 [g3,eb4] ~ bb3 c4 eb4 ~ eb4 ~", E: "f4@2 eb4 f4", F: "[d4,f4]@7 ~", G: "eb4@15 ~", H: "d4",
  I: "c4 ~", J: "a3@7 ~", K: "b3@3 c4@3 d4@2", L: "e4@7 ~", M: "~@6 f4@9 ~", N: "e4@2 d4@2 c4@2 b3 c4", O: "~ e4 g4 a4",
  P: "b4@15 ~", Q: "a4@2 ~ g4@2 f4@2 ~ e4@2 ~ a4@2 e4@2 ~", R: "f4", S: "[[e4,g4]@3 ~]/3",
})).s("gm_french_horn").gain(0.42)

// other · trombone
const trombone = note("<~@26 A B C D E F ~@20 G H I J K L M N O P Q@3>".pickRestart({
  A: "eb3@6 bb2 c3 eb3 ~ bb2 c3 eb3 ~ eb3 ~", B: "f3@2 g3 a3", C: "bb3@7 ~", D: "[g3,bb3]@15 ~", E: "bb3",
  F: "f3@11 ~@5", G: "f2", H: "g2@3 a2@3 b2@2", I: "c3@7 ~", J: "f3@2 ~@4 f3@4 a3 ~ g3 ~ f3 ~",
  K: "c3@2 b2@2 a2@2 b2 c3", L: "g2@15 ~", M: "a2", N: "e3@15 ~", O: "d3@2 ~ e3@2 f3@2 ~ gb3@2 ~ d3@2 gb3@2 ~", P: "g3",
  Q: "[c3@3 ~]/3",
})).s("gm_trombone").gain(0.42)

// other · oboe · Amaj7
const oboe = note("<~@39 [~@4 eb4@2 f4@2 g4@7 [ab4,a4]] [c5, bb4 ~@15] [bb4 g4] ~@23>").s("gm_oboe").gain(0.36)

// chords · brass section
const brass_section = note("<~@52 A B C D E F ~ G H ~ I@3>".pickRestart({
  A: "[a4,c5]", B: "[g4,b4]@3 [a4,c5]@3 [b4,d5]@2", C: "[c5,e5]@7 ~", D: "c5@7 ~@3 a5 ~ g5 ~ f5 ~",
  E: "e5@2 d5@2 c5@2 d5 e5", F: "f5@15 ~", G: "~@10 e5 ~ a5 ~ b5 ~", H: "c6", I: "[g5@17 c6@19 ~@12, e5@3 ~]/3",
})).s("gm_brass_section").gain(0.48).pan(0.4)

// other · timpani
const timpani = note("<~@61 [~@8 g2!8] [g2 ~@5 g2 ~ c3 ~@2 g2 ~ c3 ~ g2] [~ c3!15] [c3!5 ~@11]>")
  .s("gm_timpani").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@12 A@2 B C D B@9 E@5 F ~@3 G@7 H A@2 B I J E K@5 L H A M K@2 N H O P ~>".pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~@2 x", C: "x ~@2 x!3 ~ x", D: "~@3 x!2 ~@2 x", E: "x ~ x!3 ~ x!2", F: "x ~ x!3 ~@3",
  G: "x ~@2 x!2 ~@3", H: "x", I: "x ~@2 x ~ x ~@2", J: "x ~ x ~ x!4", K: "x ~@3 x ~@2 x!2 ~@3 x ~ x ~",
  L: "x ~@3 x ~@2 x!2 ~@3 x ~@3", M: "x ~ x ~ x ~ x!2", N: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
  O: "x ~@5 x ~ x ~@2 x ~ x ~ x", P: "~ x ~@14",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<~@14 [~ x ~ x]!12 ~@9 [~@3 x]!7 ~@3 [~ x ~ x] ~@19>").gain(0.42)

// drums · snare
const snare = s("sd").struct("<~@10 A ~ B@2 ~@12 B@5 C ~@11 B@2 ~ D B@7 C ~@2 E B@2 ~@5>".pickRestart({
  A: "~@3 x ~@4", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@3 x ~ x ~@3 x!2", E: "~@4 x ~@7 x!3 ~",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<A ~@11 B@14 C@5 D ~@3 E@7 ~ B@3 E ~@18>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "x!8", D: "x!4 ~@4", E: "~ x ~@2",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@25 [~@7 x] ~@29 [~ x ~@2] ~@9>").gain(0.42)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@13 B ~@16 A ~@3 C ~@4 D ~@3 E ~@9>".pickRestart({
  A: "~@6 x!2", B: "~@11 x!2 ~@3", C: "~@6 x!2 ~@8", D: "~@13 x!2 ~", E: "~@2 x!2 ~@7 x ~ x!2 ~",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@25 A ~@16 A ~@8 B ~@3 C ~@9>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "~@5 x!2 ~",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@46 A ~@5 B ~ C D E ~@3 B@2 F G ~>".pickRestart({
  A: "~@5 x ~@2", B: "x", C: "~@12 x!4", D: "x ~@2 x ~@4", E: "x ~@3 x ~@3 x!5 ~@3", F: "x ~@5 x ~ x ~@2 x ~ x ~ x",
  G: "~ x ~@14",
})).gain(0.42)

// drums · ride bell
const ride_bell = s("rd").struct("<~@32 [~@7 x] [x ~@2 x!2 ~@2 x] [x ~@7 x!8] x ~@29>").gain(0.42)

stack(
  bass, overdriven_guitar, electric_guitar_clean, piano, string_ensemble_1, string_ensemble_2, epiano2, french_horn,
  trombone, oboe, brass_section, timpani, kick, rim, snare, hihat, low_tom, mid_tom, high_tom, crash, ride_bell
)

More by Barry Manilow