Strudelify

Don't Rain on My Parade

Barbra Streisand

KeyB minorTempo160 bpm
0:00/0:00
// Don't Rain on My Parade — Barbra Streisand
// 160 bpm, 4/4, key B 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 (4/4 at bar 1, 2/4 at bar 59, 4/4 at bar 60, 2/4 at bar 62, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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.

// other · timpani
const timpani = note(`<
  A@8 B C D ~ A@4 B C D ~@11 E@6 F G ~@8 A@4 B C D ~@15 H ~ I J@4 ~@13 K L M N ~ O P Q@4 R S T U V W X
>`.pickRestart({
  A: "a2 ~@2 a2 ~@2 a2 ~", B: "b2 ~@2 b2 ~@2 b2 ~", C: "e2 ~@2 e2 ~@2 e2 ~", D: "a2 ~@7",
  E: "a2@2 ~@7 a2@2 ~@7 a2@2 ~@4", F: "~@3 f#2@2 ~@7 f#2@2 ~@4 f#2@2 ~@4", G: "f#2 ~@11", H: "~@5 e2 ~@6", I: "~@11 e2",
  J: "[~@5 f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~@6 a2@3 ~@3 a2@4 ~@4 a2@4 ~@3 a2@4 ~@4 a2@5 ~@6 a2@5 ~@11, ~@4 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@63]/4",
  K: "~@19 a2 ~@4", L: "~@2 a2 ~@5 a2 ~@3 a2 ~@5 a2 ~@5", M: "~ a2 ~@5 a#2 ~@5 a#2 ~@4 a#2 ~@3 a#2 ~",
  N: "~@4 a#2 ~@5 a#2 ~@13", O: "~@9 b2 ~@2 b2 c#3@2 b2 c#3 ~@2 c#3@2 b2 ~ b2, ~@11 c#3@2 ~@5 b2@2 ~@2 c#3@2",
  P: "~@2 b2@2 ~ b2 c#3@2 b2 ~ c#3 ~ c#3 ~ b2 c#3@2 b2 ~ b2 ~@2 b2 ~, ~ c#3@2 ~ c#3@2 ~@5 b2@2 ~@5 c#3@2 ~ c#3@2 ~",
  Q: "[c#3 b2@2 c#3 ~@2 c#3 b2@2 c#3 b2@2 c#3 b2@2 c#3 b2 c#3@2 b2@2 c#3 ~ c#3@2 ~ c#3@2 b2@2 ~ b2@2 c#3@2 b2 c#3 ~@2 c#3@2 b2@2 ~ b2@2 ~ b2@2 c#3@2 ~@2 b2@2 c#3@2 ~ c#3@2 b2@2 c#3@2 ~ c#3@2 ~ c#3@2 ~ c#3@2 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3, ~@22 b2@2 ~ b2@2 ~@3 c#3@2 ~@6 b2@2 ~@3 c#3@2 ~ c#3@2 ~@3 b2@2 ~@4 b2@2 ~@5 b2@2 ~ b2@2 ~ b2@2 ~@24, ~@26 c#3 ~@21]/4",
  R: "b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2",
  S: "c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~",
  T: "b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~",
  U: "c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~",
  V: "b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3",
  W: "~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2 ~ c#3 b2 c#3 ~ b2 c#3 ~ b2 c#3 b2 ~ c#3 b2", X: "~ c#3 b2 ~@21",
})).s("gm_timpani").gain(0.4)

// other · timpani · soft notes
const timpani_soft = note("<~@68 A@4 ~@23 B ~@10>".pickRestart({
  A: "[~@11 f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~@20, ~@13 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@4 e2@2 ~@21]/4",
  B: "~@2 b2 ~@9",
})).s("gm_timpani").gain(0.15)

// bass · acoustic bass
const bass = note(`<
  A@3 B A@3 B C D E F A@3 B G H I J K L M N O P Q R S T U V U W X Y Z AA AB AC AD AE AB AF ~ AG A@3 B C D E F AH@3 AI@3
  AJ AK AL@2 AM AN AO ~ AP@7 ~ AQ@3 AR AS AT@3 AU@2 AV AW AX AY AZ@2 ~@6 BA@2 BB@2 BC@3 BD
>`.pickRestart({
  A: "e2 ~@2 f2 ~@2 f#2 ~", B: "g2 ~@2 f#2 ~@2 f2 ~", C: "b1 ~@2 b1 ~@2 g#1 ~", D: "e1 ~@2 e1 ~@2 e1 ~",
  E: "a1 ~@5 f#2 e2", F: "~@4 b1 ~ e2 ~", G: "e2 ~@2 b2 ~@2 g#2 ~", H: "f#2 ~@2 g#2 ~@2 f#2 ~", I: "e2 ~@7",
  J: "~@2 a2", K: "d2@2 ~ d2@2 ~ f#2@2 ~ f#2@2 ~", L: "e2@2 ~ e2@2 ~ b2@2 ~ b2@2 ~",
  M: "d2@4 ~@2 d2@5 ~ e2@5 ~ f#2@5 ~", N: "d2@4 ~@2 a2@5 ~ f2@5 ~ d2@5 ~", O: "e2@5 ~ f#2@5 ~ g#2@5 ~ g#2@6",
  P: "c#2 ~@11", Q: "f2 ~@7 b1 ~@3", R: "d2 ~@7 f2 ~@3", S: "e2 ~@7 e2 ~@3", T: "b1 ~@7 f#2 ~@3",
  U: "e2@7 ~@2 f2@7 ~@2 f#2@4 ~@2", V: "g2@7 ~@2 f#2@6 ~@3 f2@4 ~@2", W: "g2@7 ~@2 f#2@7 ~@2 f2@4 ~@2",
  X: "f#2@7 ~@2 g2@7 ~@2 g#2@4 ~@2", Y: "a2@7 ~@2 g#2@7 ~@2 g2@6", Z: "~ f#2@2 ~ c#2 ~ f#2 ~",
  AA: "f#2@5 ~ c#2@5 ~ f#2@5 ~ e2@5 ~", AB: "d#2@4 ~ d#2 d2@3 ~@2 d2", AC: "c#2@6 ~@4 c#2@2 b1@6 ~@4 b1 ~",
  AD: "b1@4 ~ b1 e2@4 ~ e2", AE: "a1@4 ~ a1 e2@5 ~", AF: "c#2@6 ~@4 c#2@2 b1@5 ~ b1@4 g#2 ~", AG: "c#2 ~@4 b1@4 e2 ~@2",
  AH: "[f2@5 ~@3 c2@5 ~@4 f2@4 ~@2 f2@5 ~@3 c2@5 ~@4 f2@4 ~ f2@5 ~@6 f2@5 ~@3 c2@5 ~@3]/3",
  AI: "[f2@4 ~@2 f2@5 ~@3 c2@5 ~@3 f2@4 ~ f2@5 ~@6 g2@5 ~@2 d2@5 ~@3 g2@4 ~ g2@5 ~@3 d2@5 ~]/3",
  AJ: "~ g2@4 ~ g2@5 ~@5 g2@5 ~@3", AK: "d2@5 ~@2 g2@3 ~@2 g2@5 ~@2 d2@5",
  AL: "[~@2 g2@3 ~@2 g2@5 ~@4 a2@4 ~@3 e2@4 ~@3 a2@3 ~@2 a2@4 ~@2 e2@4 ~@3]/2", AM: "a2@3 ~@2 a2@4 ~@5 a2@4 ~@3 e2@3",
  AN: "~@3 a2@3 ~ a2@4 ~@3 e2@4 ~@3 a2@3", AO: "~ e3@4 ~@19",
  AP: "[~@10 e2@18 ~@6 e2@20 ~@4 e2@22 ~@2 e2@24 ~@6 a2@4 ~@2 a2@5 ~@3 a2@5 ~@2 a2@7 ~ a2@9 ~@2 a2@7 ~@9]/7",
  AQ: "[~@23 d2@8 ~@2 d2@5 ~@2 d2@3 f#2@8 ~@2 f#2@6 ~ d2@3 e2@8 ~]/3", AR: "~ f#2@6 ~ g2@3 g#2@8 ~@2 a2@3",
  AS: "b1@3 ~ c#2@3 d2@8 ~@2 d2@5 ~@2", AT: "[d2@3 b1@9 ~ a1@9 ~ b1@8 ~@2 c#2@10 d2@9 ~ b1@10 e2@9]/3",
  AU: "[~ f#2@8 ~@2 g#2@8 ~@2 e2@10 c#2 ~@16]/2", AV: "f2 ~@16 d2 ~@6", AW: "~@10 e2 ~@13", AX: "~@2 b1 ~@16 e2@5",
  AY: "~@2 f2@5 ~ f#2@3 ~ e2@5 ~ f2@5 ~", AZ: "[~ f#2@3 ~@3 f2@5 ~ f#2@3 ~@2 g2@3 ~ g#2@5 ~ g2@5 ~ f#2@3 ~@11]/2",
  BA: "[~@2 b2@5 ~ f#2@5 ~ b2@7 ~@2 f#2@2 ~@2 g#2@2 ~@2 a2@2 ~@2 b2@5 ~@2 f#2@5 ~]/2",
  BB: "[b2@7 ~ f#2@2 ~@3 g#2@2 ~@2 a2@2 ~@2 b2@5 ~ f#2@5 ~@2 b2@7 ~ f#2@2 ~@2 g#2@2]/2",
  BC: "[~@3 a2@2 ~@2 b2@5 ~ f#2@5 ~ b2@7 ~@2 f#2@2 ~@2 g#2@2 ~@2 a2@2 ~@2 b2@32]/3", BD: "~ b1 ~@10",
})).s("gm_acoustic_bass").gain(0.45)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A B A B A B A C D E ~ F ~ F ~ G H I ~ J K L M@2 ~@5 F ~ F ~ G ~ N@2 ~@5 O ~@2 P@3 Q R S T U ~@8 V ~ W@2 X ~ Y@7 ~
  Z@3 AA@6 AB ~@5 AC AD AE@5 AF@8
>`.pickRestart({
  A: "~@6 a4@2 ~@6 [c#5,f5,a5] [a2,a3,a4,c#5,f5,a5,c#6]@2 ~@7, ~@5 e4@2 ~@17", B: "[a2,a3,a4,c#5,e5,a5,c#6,e6] ~@11",
  C: "[b2,b3,b4,d5,f#5,b5,d6,f#6] ~@11", // Bm
  D: "~@6 b4@2 ~@6 [f#5,a5] [b2,b3,b4,d5,f#5,a5,c#6,e6]@2 ~@7, ~@5 f#4@2 ~@7 [b5,d6]@2 ~@8", // F#m Bm7 Bm
  E: "[a2,a3,a4,c#5,e5,a5] ~@11", F: "[a6,c#7,e7] ~@11", G: "[b6,d7,f#7] ~@11", H: "~@15 [b6,d7,e7]@2 ~@7",
  I: "[c#6,e6,a6] ~@11", J: "[f#5,b5,d6] [b5,d6,f#6]", K: "[d5,e5,g5,b5] [e5,g5,b5,d6]", L: "[d5,f#5,a5] [f#5,a5,d6]",
  M: "[[a5,d6,f6]@6 e6@3 f6@2 [a5,c#6,f#6]@4 ~@9, ~@6 [a5,d6]@5 ~@13]/2", N: "[~ [f#3,f#4,f#5,a#5,c#6,e6]@11]/2",
  O: "~@22 [g#5,c6,d#6,f#6] ~", P: "~@6 [e5,a5,c#6,e6]@3 [f5,a5,c#6,f6]@5 ~ [f5,a5,c#6,f6]@3 [f#5,a5,c#6,f#6]@3 ~@3",
  Q: "[g5,a5,c#6,g6]@5 ~ [g5,a5,c#6,g6]@3 [f#5,a5,c#6,f#6]@5 ~ [f#5,a5,c#6,f#6]@3 [f5,a5,c#6,f6]@3 ~@3", // A7 F#m Faug
  R: "[a5,c#6,e6]@3 [d5,f#5,b5]@3 [c#5,e5,g#5]@2", S: "[a4,b4,d5,f#5]@3 [f#5,a5,b5,d6]@3 [g#5,b5,d6,e6]@2",
  T: "~ [a5,c#6,e6,g6]@2 [c#5,f5,a5,c#6] [f5,a5,c#6,f6] [c#5,f5,a5,c#6] [c#5,f#5,a5,b5]@2", U: "[a4,c#5,e5,a5]@7 ~",
  V: "~@16 [a4,c#5,e5,g#5,b5] ~@7", // Amaj7
  W: "[~@14 [c#6,e6,g#6]@5 ~@2 [b5,d6,f#6]@6 [c#6,e6,g#6]@2 ~@2 [c#6,e6,g#6]@5 ~@2 [b5,d6,f#6]@6 ~ [c#6,e6,g#6]@2 ~]/2", // C#m Bm C#m Bm C#m
  X: "~ [c#6,e6,g#6]@2 ~@21", // C#m
  Y: "[~@10 [d5,f#5,a5]@22 ~@2 [c#5,e5,g#5]@22 ~@2 [d5,f#5,a5]@22 ~@2 [c#5,e5,g#5,b5]@24 [b4,d5,f#5,a5]@53 ~@9]/7", // D C#m D C#m7 Bm7
  Z: "[~@23 [f#5,b5,d6]@20 [b5,d6,f#6]@9 ~ [b5,d6,g6]@3 [a5,c#6,f#6]@3 ~ [f#5,b5,d6]@3 [e5,b5,d6,g6]@6 ~ [a5,c#6,f#6]@2]/3", // Bm G F#m Bm Em7 F#m
  AA: "[~ [f#5,g5,b5,d6]@9 ~ d6@10 c#6@10 [d5,f#5,a5]@20 [f#5,a5,b5,d6]@9 ~ [b5,d6,g6]@3 [a5,c#6,f#6]@3 ~ [f#5,b5,d6]@3 [b5,d6,g6]@6 ~ [a5,c#6,f#6]@3 [f#5,a5,b5,d6]@6 ~ [f#5,a5,b5,d6]@12 ~ [f#5,a5,b5,d6]@10 [f#5,a5,c#6]@22 ~ [e5,g#5,b5]@3 ~ [f#5,a5,c#6]@3 [g#5,b5,d6]@3, ~@11 [e5,g5,b5]@20 ~@113]/6", // Gmaj7 D Bm7 G F#m Bm G F#m …
  AB: "[a5,c#6,e6]@3 ~ [b5,d6,f#6]@3 [d6,f6,g#6]@4 ~@13", AC: "~@19 [a2,a3,a4,c#5,e5,a5,c#6,e6,a6]@2 ~@3",
  AD: "~@5 [a2,a3,a4,c#5,e5,a5,c#6,e6,a6] ~@6", // A
  AE: "[~@4 [f#3,f#4,a4,b4,e5,a5,b5,e6]@2 ~@3 [g#5,b5,c#6,d#6,f#6]@2 ~@23 [c#6,f#6,g6,a#6,b6]@2 ~@23 [c#6,e6,g#6,b6]@2 ~@25 [e6,f#6,g6,a6,b6]@3 ~@31, ~@9 [c#3,c#4,g#4]@25 [d#3,d#4,f#4]@25 [e3,e4,g#4]@26 ~ [e3,e4,a4]@34]/5", // F#m7 G#m7 F# C#m7 Em C#5 D#m E …
  AF: "[~ [b2,f#3,f#4]@84 [b2,b3] ~@10, ~ [b1,b4,d#5,f#5,b5]@85 ~@10]/8", // B5 B
})).s("gm_string_ensemble_1").gain(0.35)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~ A ~ A ~ A ~ A ~ B ~@28 C D E F C G ~ H ~@8 I ~ J ~ K ~ L ~@27 M@4 ~@14
>`.pickRestart({
  A: "~@3 c#4@2 ~@19, ~ a3 ~@10", B: "~@3 d4@2 ~@19, ~ b3 ~@10", C: "[d#5,f#5] [d5,f5,g#5], b4",
  D: "[c#5,e5] [c5,d#5,f#5], a4", E: "[b4,d5,e5,g#5]", F: "[e4,g#4,a4,c#5]@9 ~ [a4,c#5,e5]@14",
  G: "[a4,c#5,e5]@4 [c5,d#5,f#5]@3 ~", H: "[c#3,e3,g#3,c#4]@5 [d3,f#3,a3,b3,d4]@4 ~@3", I: "[f4,a4,c5,e5,g5] ~@23",
  J: "~@8 [f4,a4,c5,e5,g5] ~@15", K: "~@14 [g4,b4,d5,f#5,a5] ~@9", L: "~@16 [g4,b4,d5,f#5,a5] ~@7",
  M: "[~@19 [a6,c#7,e7]@33 ~@3 [a#6,d7,f7]@32 ~@9]/4", // A A#
})).s("gm_string_ensemble_1").gain(0.2)

// chords · tremolo strings
const tremolo_strings = note("<~@12 A@4 B@2 ~@12 A@4 C@2 ~@18 D@2 E@2 F@8 ~@27 G@5 H@8>".pickRestart({
  A: "[[a6,c#7,e7]@47 ~]/2", B: "[[b6,d7,f#7]@13 ~@3]/2", C: "[b6,d7,f#7]/2", D: "[f4,a4,c5,e5,g5]/2",
  E: "[~ [f4,a4,c5,e5,g5]@5]/2", // Fmaj7
  F: "[~@14 [g4,b4,d5,f#5,a5]@45 ~@5 [g4,b4,d5,f#5,a5]@43 ~@5 [a4,c#5,e5,g#5,b5]@41 ~@5 [a4,c#5,e5,g#5,b5]@34]/8", // Gmaj7 Amaj7
  G: "[~@34 [g6,a#6]@25 g#6@26 ~ [f#6,g6,a6]@34, ~@9 c#6@77 ~@34, ~@3 f#6@17 ~@20, ~@9 [g#5,b5,d#6]@32 ~@18 e6@61, ~@17 b6@43]/5", // Gm F#m G#m
  H: "[~ [b5,d#6,f#6,b6]@85 ~@10]/8", // B
})).s("gm_tremolo_strings").gain(0.2)

// chords · pizzicato strings · A
const pizzicato_strings = note("<[[a4,c#5,e5,a5,c#6,e6] ~@11] ~@9 [~@6 f#2 e2] [~@4 b1 ~ e2 ~] ~@94>")
  .s("gm_pizzicato_strings").gain(0.45).pan(0.3)

// chords · marimba
const marimba = note("<A B A B A B A B C D E ~ A ~ A ~ C ~ E ~@87>".pickRestart({
  A: "[a5,c#6,e6] ~@11", B: "~@15 [f5,a5,c#6]@2 ~@7", C: "[b5,d6,f#6] ~@11", D: "~@15 [f#5,a5,c#6,e6]@2 ~@7",
  E: "[c#5,e5,a5] ~@11", // A
})).s("gm_marimba").gain(0.45).pan(0.7)

// chords · marimba · soft notes · F#m7
const marimba_soft = note("<~@17 [~@15 [f#5,a5,c#6,e6]@2 ~@7] ~@88>").s("gm_marimba").gain(0.25).pan(0.7)

// other · glockenspiel
const glockenspiel = note("<~ A ~ A ~ A ~ A ~ B ~@16 C D E F ~@56 G H I ~@17>".pickRestart({
  A: "~@5 e4 a4 ~@17", B: "~@5 f#4 b4 ~@17", C: "f6 ~@7 a5 ~@3", D: "b5 ~@7 f6 ~@3", E: "e6 ~@11", F: "b5 ~@11",
  G: "f6 ~@16 b5 ~@6", H: "~@10 g#6 ~@13", I: "~@2 a6 ~@21",
})).s("gm_glockenspiel").gain(0.2)

// other · glockenspiel · soft notes
const glockenspiel_soft = note("<~ A ~ A ~ A ~ A ~ B ~@96>".pickRestart({
  A: "~@2 a3 c#4 ~@20", B: "~@2 b3 d4 ~@20",
})).s("gm_glockenspiel").gain(0.15)

// chords · orchestral harp
const orchestral_harp = note("<~@72 A@3 ~@28 B@2 C>".pickRestart({
  A: "[~@12 a4@29 ~@5 a4@5 ~@4 [a3,a4,b4]@8 ~@9, ~@9 [b2,d3,b3]@32 ~@3 [b2,d3,b3]@6 ~@3 [b2,d3]@9 ~@10, ~@10 d4@31 ~@4 f#4@5 ~@22, ~@11 [f#3,a3,f#4]@31 ~@3 [f#3,a3,d4]@7 ~@2 [f#3,d4,f#4]@9 ~@9]/3", // Asus2 Bm F#m D
  B: "[~@16 f#5@3 ~@7 d#4 c#4 a#3 g#3 [e3,f#3] d#3 ~ b2@2 ~@3 [f#3,g#3] a#3 b3 [c#4,d#4] e4 [f#4,g#4] a#4 [b4,c#5] d#5 [e5,f#5], ~@19 e5@2 c#5@2 a#4@2 e4@2 ~ b3@2 ~@2 c#3@2 ~ c#3@2 e3@2 ~@9, ~@10 d#5 b4 [f#4,g#4] ~@5 d#3 ~@5]/2", // Esus2 F#sus2 C#sus2 F#sus2 Bsus2 Esus2 F#sus2
  C: "g#5 a#5 b5 ~@21",
})).s("gm_orchestral_harp").gain(0.45)

// other · flute
const flute = note(`<
  A B A B A B A B C D E ~ A ~ A ~ C F E ~@26 G H ~@8 I@2 ~ J ~ K ~ L ~ M ~ N ~ O@7 ~@23 P@8
>`.pickRestart({
  A: "e6 ~@7", B: "~@14 a5 c#6@2 ~@7", C: "d6 ~@7", D: "~@14 d6 e6@2 ~@7", E: "a5 ~@7", F: "~@15 e6@2 ~@7",
  G: "~@16 d6@2 e6 ~@5", H: "e6 ~@11", I: "[~@21 c5@6 c6@2 ~@19]/2", J: "~@3 c5@5 c6@2 ~@14", K: "~@6 d5@5 d6@2 ~@11",
  L: "~@7 d5@5 d6@2 ~@10", M: "~@5 e5@4 e6@2 ~@13", N: "~ e6@2 ~@21",
  O: "[~@10 d6@22 ~@2 e6@22 ~@2 f#6@22 ~@2 g#6@22 ~@2 a6@53 ~@9]/7", P: "[~ b6@85 ~@10]/8",
})).s("gm_flute").gain(0.45)

// chords · trumpet
const trumpet = note(`<
  A ~ A ~ A ~ A ~ B ~ C D A ~ A ~ B ~ C ~ E@2 F@2 G H ~@4 A ~ A ~ B ~ I J K ~@2 L M N ~ O A ~ A ~ B ~@2 P ~@2 Q ~ R ~ S
  ~ T ~ U V W ~ X@7 ~ Y@2 Z AA@2 AB@4 AC@8 AD@7 AE@6
>`.pickRestart({
  A: "[a4,c#5,e5] ~@11", B: "[b4,d5,f#5] ~@11",
  C: "~@3 [a4,c#5,e5]@2 ~@4 [a#4,d5,f5]@3 [b4,d#5,f#5]@2 ~@4 [c5,e5,g5]@3 [c#5,f5,g#5]@2 ~", // A A# B C C#
  D: "~@3 [c#5,f5,g#5]@2 ~@4 [c#5,f5,g#5]@3 [c5,e5,g5]@2 ~@4 [b4,d#5,f#5]@2 ~@4", // C# C B
  E: "[~@16 [f#4,b4,d5]@2 [g4,c#5,e5]@4 [a4,d5,f#5]@11 ~@15]/2", // Bm C#dim D
  F: "[~@16 [f#4,b4,d5]@2 [g4,c#5,e5]@4 [a4,d5,f5]@11 ~@15]/2", G: "~@8 [a4,c#5,e5] [b4,d5,f5]@2 [c5,d#5,f#5]",
  H: "[c#5,e5,g5] ~@11", I: "~@2 [a#4,c#5,f#5]@3 ~ [g#4,c#5,e5]@2 [f#4,b4,d#5] [e4,a#4,c#5]@2 [d#4,g#4,b4]",
  J: "[c#4,f#4,a#4]@3 ~ [c#5,e5,g#5]@3 ~@3 [g#4,b4,e5]@2 [a#4,c#5,f#5]@4 [b4,d#5,g#5]@2 [c#5,e5,a#5]@4 [d#5,f#5,b5]@2", // F# C#m E F# G#m A#dim B
  K: "[f#5,a#5,c#6] ~@7", // F#
  L: "~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] [b4,d5,f#5] [c#5,e5,g#5] [d5,f#5,a5] [e5,g#5,b5] [f#5,a5,c#6] [g5,a#5,d6]", // A Bm C#m D E F#m Gm
  M: "[f#5,b5] ~@5, d#6 ~@3", N: "~@22 [c5,d#5,g#5] ~", O: "~@16 [f#4,a4,b4]@2 [b4,d5,e5] ~@5",
  P: "[a4,c#5,e5]@8 ~ [a4,c#5,f5]@8 ~ [a4,c#5,f#5]@3 ~@3", Q: "~@3 [a4,c5,e5]@2 ~@19", R: "~@4 [a4,c5,e5] ~@7",
  S: "~@11 [b4,d5,f#5]@2 ~@11", T: "~@6 [b4,d5,f#5] ~@5", U: "~@9 [c#5,e5,g#5]@2 ~@13",
  V: "~@7 [c#5,e5,g#5]@2 ~@5 [c#5,e5,g#5]@2 ~@2 [c#5,e5,g#5] ~@2 [c#5,e5,g#5] ~ [c#5,e5,g#5]", // C#m
  W: "~ [c#5,e5,g#5]@2 ~@21", // C#m
  X: "[~@10 [d4,f#4,a4]@23 ~ [c#4,e4,g#4]@23 ~ [d4,f#4,a4]@23 ~ [e4,g#4,b4]@24 ~@6 [f#4,a4,b4]@5 ~ [a4,b4,d5]@5 ~@3 [b4,d5,f#5]@5 ~@2 [d5,f#5,a5]@7 ~ [f#5,a5,b5]@9 ~@2 [a5,b5]@8 ~@8, ~@76 d6@5 ~@3]/7", // D C#m D E B7 Bm7 Bm D …
  Y: "[~@23 [d4,f#4,a4]@4 ~@21]/2", Z: "~@5 [b4,d5,g5]@3 [a4,c#5,f#5]@3 ~ [f#4,b4,d5]@3 [b4,d5,g5]@6 ~ [a4,c#5,f#5]@2",
  AA: "[~ [f#4,b4,d5]@8 ~@2 [f#4,b4,d5]@3 ~@4 [f#4,b4,d5]@3 [f#4,b4,c#5]@10 ~@17]/2", // Bm F#sus4
  AB: "[~@8 [f#4,b4,d5]@3 ~@2 [b4,d5,g5]@3 [a4,c#5,f#5]@3 ~ [f#4,b4,d5]@3 [d5,g5]@6 ~ [a4,c#5,f#5]@3 [f#4,b4,d5]@7 [f#4,b4,d5]@13 [f#4,d5]@10 ~@23 [e4,g#4]@3 ~ [f#4,a4,c#5]@3 [g#4,b4,d5]@3, ~@23 b4@10 ~@20 b4@33 b4@7 ~@3]/4", // Bm G F#m Bm G5 F#m Bm D …
  AC: "[[a4,c#5,e5]@3 ~ [d5,f#5]@3 [d5,f5,g#5]@4 ~@80 [a4,c#5,e5] ~@35 [a#4,d5,f5] ~@35 [c#5,e5,a5]@2 ~@13 [c#5,e5,a5]@2 ~@12, ~ b4@47]/8", // A D Ddim A A# A
  AD: "[~@4 [a4,e5]@2 ~@3 [g#4,f#5]@5 ~@20 [a#4,f#5,b5]@5 ~@20 [c#5,e5,b5]@5 ~@22 [f#5,a5,b5]@5 ~@31 [f#4,b4,d#5]@6 [g4,b4,d#5]@6 [g#4,d#5]@7 ~@2 [a4,d#5]@2 ~@2 [g#4,d#5]@2 ~@2 [g4,d#5]@2 ~@2 [f#4,d#5]@5 ~@2 [g4,b4,d#5]@6, ~@4 b4@5 b4@113 ~@12 b4@9 b4@4 b4@4 b4@4 b4@7 ~@6]/7", // A5 G#7 Bmaj7 C#m7 B7 B Gaug G#5 …
  AE: "[[g#4,b4,d#5]@8 [a4,d#5]@2 ~@3 [g#4,d#5]@2 ~@2 [g4,d#5]@2 ~@2 [b4,d#5,f#5]@6 [d#5,g5]@5 ~@2 [b4,d#5,g#5]@8 [d#5,a5]@2 ~@2 [d#5,g#5]@2 ~@3 [d#5,g5]@2 ~@2 [b4,d#5,f#5]@6 [b4,d#5,g5]@6 [d#5,g#5]@7 ~@2 [d#5,a5]@2 ~@2 [d#5,g#5]@2 ~@2 [d#5,g5]@2 ~@2 [b4,d#5,f#5]@36 ~@20, ~@8 b4@5 b4@4 b4@4 ~@6 b4@7 ~@8 b4@4 b4@5 b4@4 ~@12 b4@9 b4@4 b4@4 b4@4 ~@56]/6", // G#m Adim G#5 Cm B D# G#m D#dim …
})).s("gm_trumpet").gain(0.64)

// chords · alto sax
const alto_sax = note("<~@20 A@2 B@2 C D ~@12 E F G H E I ~@62>".pickRestart({
  A: "[~@4 [d4,f#4]@2 [c#4,e4]@4 [b3,d4]@2 ~@4 [b3,d4]@2 [c#4,e4]@4 [d4,f#4]@11 ~ [d4,f#4]@2 ~@4 [b3,e4]@2 ~@6]/2", // D C#m Bm C#m D E5
  B: "[~@2 [d4,f#4] [c#4,e4]@2 [b3,d4] ~@2 [b3,d4] [c#4,e4]@2 [d4,f4]@6 ~@7]/2", // D C#m Bm C#m Dm
  C: "~@2 [a3,f#4] ~@2 [b3,g4] ~@2 [a3,e4] [b3,f4]@2 [c4,f#4]", D: "[c#4,g4] ~@11", E: "f#4@4 ~ f#4 f4@4 ~ e4",
  F: "~@2 f#4 ~@2 e4 d#4@4 ~ d4", G: "~@2 e4 ~@2 d4 c#4@2 ~ d4 ~@2", H: "c#4@5 e4@6 ~",
  I: "~@2 f#4 ~@2 e4 f#4@3 [a3,d#4]@2 [d#4,f#4]", // Adim D#m
})).s("gm_alto_sax").gain(0.45).pan(0.3)

// other · french horn
const french_horn = note(`<
  A@3 B A@3 B C D E ~ A@3 B C D F ~@11 G H G H I J K L M ~@2 N ~@4 A@3 B C D O@2 ~ P@2 ~ Q ~ R ~ S ~ T ~ U ~ V@7 ~@2 W@4
  X Y@2 Z@2 ~@2 AA AB AC@2 AD AE@5 AF@2 AG@2 AH@4
>`.pickRestart({
  A: "e3 ~@2 f3 ~@2 f#3 ~", B: "g3 ~@2 f#3 ~@2 f3 ~", C: "a3 ~@2 b3 ~@2 g#3 ~", D: "f#3 ~@2 g#3 ~@2 f#3 ~", E: "e3 ~@7",
  F: "e3@3 ~@15 g#3@3 a3 ~@2", G: "e4@2 ~@7 f4@2 ~@7 f#4@2 ~@4", H: "g4@2 ~@7 f#4@2 ~@7 f4@2 ~@4",
  I: "f#4@2 ~@7 g4@2 ~@7 g#4@2 ~@4", J: "a4@2 ~@7 g#4@2 ~@7 g4@2 ~@4", K: "~@2 f#4@3 ~ e4@2 d#4 c#4@2 b3",
  L: "a#3@3 ~ g#4@3 ~@3 e4@2 f#4@4 g#4@2 a#4@4 b4@2", M: "c#5 ~@7", N: "~@2 g#4 ~@2 f#4@6 ~",
// … 150 more lines

More by Barbra Streisand