Strudelify

Come Rain or Come Shine

Johnny Mercer

KeyD majorTempo59 bpm
0:00/0:00
// Come Rain or Come Shine — Johnny Mercer
// 59 bpm, 4/4, key D 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: duplicate parts dropped: ch 8 "Strings 4" tremolo strings (copy of ch 9 "Strings 5" tremolo strings, 0.281 beats late)
// note: Full arrangement: all 58 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(59/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 · acoustic bass · "Bass"
const bass = note("<~@12 A@8 B@4 C D E F G H I J K L M N O P Q@2 R S T U@2 V W X Y Z@3 AA AB AC AD@2 ~>".pickRestart({
  A: "[~@25 g2@16 ~ f2@9 e2@8 d2@17 c2@13 d2@3 a#1@17 e2@17 a1@16 d#2@15 d2@15 ~@2 d2@16 d#2@15 ~ d#2@15 ~ f2@4 ~@30]/8",
  B: "[~@14 a1@2 f#3@2 ~ d3@2 a2@3 f#2@2 a1@3 d2@16 ~@2 d2@10 b1@3 c2@3 c#2@16 c2@16 b1@11 f#2@2 b2@2 f#2 ~ a2@8 b2@4 f#2@4]/4",
  C: "a#1@12 a#2@4 a2@9 a1@7", D: "~ g#1@16 d2@15", E: "d#2@17 g#2@8 g2@7", F: "~ f#2@15 ~ f#2@7 a2@4 c#2@4",
  G: "f#2@12 ~ c#3@4 c3@7 c2@4 f#2@4", H: "b1@4 b2@3 f#2", I: "b1@2 b2 f2", J: "e2@15 ~ e2@15 ~",
  K: "e2@3 b2 d2@2 c#2@2", L: "~ b1@15 e2@11 f#2@2 ~ g2@2", M: "g#2@16 ~ g2@8 f#2@7",
  N: "~ b1@8 b1@4 ~ b1@2 f2@13 ~ f2@2", O: "~ e2@15 a1@10 ~ a1 ~@2 a1@2", P: "~ d2@8 a2@8 f#2@8 d2@3 a2@2 f#2@2",
  Q: "[~ c#2@7 ~@2 c#2@8 f#2@7 ~ f#2@3 c#2@2 c2@3 b1@8 c#2@8 d2@8 f#2@6]/2", R: "~@2 g2@9 d2@8 b1@8 d2@3 e2@2",
  S: "f#2@3 g#2@8 f#2@9 d2@7 b1@3 d2@2", T: "~ d2@3 d#2@7 ~ d#2@5 g2@3 g#2@7 ~ g#2@4",
  U: "[~ g2@3 f#2@8 c#2@8 f#1@9 f#2@2 g#2@3 f#2@3 g2@7 ~ g2@8 f#2@5 g#2@2 ~ f#2@3]/2",
  V: "g#2@2 f#2@3 ~ b1@6 ~ b1@6 f#2@3 b2@5 a2@2 f#2@3", W: "~@3 f#2@2 b1@7 ~ b1@6 ~@3 b1@2 b2@2 ~ a2@2 f#2@3",
  X: "c2@3 b1@2 e2@8 ~ e2@5 b1@2 ~ e1@7 b1@3", Y: "~@3 b1@3 e1@8 e2@5 b1@3 e1@8 e2@2",
  Z: "[d2@2 ~ c#2@3 b1@17 e2@15 f#2@4 g#2@19 g2@10 f#2@9 b1@6 f#2@3 b2@5 d2@2]/3",
  AA: "~ f#2@3 b1 ~ b1@2 ~ b1@2 ~ b1 ~@2 b1@3 e2@5 b1@3 d2@3 f#3@3",
  AB: "g3@3 g#3@3 f#3@2 e3@3 d#3@3 d3@2 b2@3 ~ b1@6 f#2@2 b2@4", AC: "~@2 d2@3 f#2@5 d2@4 b2@5 f#2@3 e2@5 b2@3 e3@2",
  AD: "[b2@3 d3@3 b2@3 g#2@3 e2@2 d2@3 c#2@3 ~ c2@3 b1@19 ~@21]/2",
})).s("gm_acoustic_bass").gain(0.22)

// chords · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@12 A B C@6 ~@38>".pickRestart({
  A: "~@25 [a#3,d4,g4]@7", B: "~@2 [a#3,d4,g4]@4 ~ d4 ~@2 [a#3,d4,f4]@7 ~@2 [d4,e4]@6 ~@2 [f3,a3,e4]@5, ~@18 a#3@7 ~@7",
  C: "[~@4 f3@5 a3 ~@2 [f3,a3,d4]@7 ~ [f3,a3,d4]@7 ~@2 [a#3,d4]@7 ~ [a#3,d4]@6 ~@3 [a#3,d4,g4]@7 ~ [a#3,d4,g4]@8 ~ [g3,c#4,f4]@7 [g3,c#4,f4,a#4]@6 ~@2 [g3,c#4,f4,a4]@7 ~ g3@7 ~ [b3,e4]@7 ~ [b3,e4]@5 ~@3 [b3,e4]@7 ~ [b3,e4]@6 ~@2 [c4,d#4]@6 ~@3 [c4,d#4]@4 ~@3 [d#3,c4,d#4]@7 ~@2 [d#3,g3,c4,d#4]@6 ~ [d#3,a3,d4,g4]@7 ~@27, ~@3 [a3,e4]@5 ~@21 [e3,g3]@14 e3@19 ~@23 [c#4,f4,a4]@8 ~ f3@12 ~ f3@17 ~@2 [d#3,g3]@12 ~ g3@10 ~@43, ~@46 g3@16 a#4@7 ~@123]/6", // Dm A# Gm Gm7b5 C#aug E5 Cm D#maj7 …
})).s("gm_electric_guitar_jazz").gain(0.07)

// chords · french horn · "Horn"
const french_horn = note("<~@13 A@3 B@4 ~@12 C D E F G@2 ~@3 H I J K L ~@3 M@3 N O@3 ~@2>".pickRestart({
  A: "[~@27 [c4,e4]@17 ~@16 [g3,d4]@33 ~@3]/3", // C G5
  B: "[~@14 a#3@15 ~ [f3,a3]@29 ~@3 [c4,d#4,g4]@21 ~ b3@2 c4@2 d4@2 d#4@2 f4@2 g4@7 ~@27, ~@13 e4@16 b3@29 ~@70]/4", // F Cm
  C: "~@2 b3 c#4", D: "~ a3@15 ~ d4@15, d4 g#3", E: "f#4@9 f4@7 ~@9 a#3@7, b3@25 ~@7, ~ e4",
  F: "~ d#3@15 ~@5 [a3,c4,d#4,g4]@11, [a3,d4]@17 ~@15", // Am7b5 D5
  G: "[[g#3,d4,f#4]@16 ~ f4@15 ~ e4@9 ~@22, b3 ~, ~@16 g3@16 f#3@25 ~@7, ~@17 c#4@33 ~@14]/2", // G#m7b5
  H: "~@30 [g#3,b3,d4,f#4] ~", I: "~ [g#3,b3,d4,f#4] ~@2 [g#3,a#3,c#4,f4]@7 ~@21", J: "~@14 f#4 ~",
  K: "g#4 ~ f#4 ~@2 c#5@6 ~@2 c#5@4 ~@4 c5 b4 a4 f#4@7 ~", L: "f#4 ~ g4 ~@2 g#4@3 ~@24",
  M: "[~@7 d#4@16 ~ f#4@17 ~ d#4@19 g3@10 ~ a#3@8 ~ d4@12 ~ [d#3,a3,d4]@2, ~@6 a3@17 g#3@37 ~ c#4@19 ~@16, ~@23 d4@18 b3@30 f#3@9 [d#3,a3]@12 ~@4]/3", // D D#dim
  N: "~ [d#3,a3,d4]@16 ~ d4@8 [e3,g#3,d4]@6, ~@17 [e3,g#3]@8 ~@7", // D E7 E
  O: "[~@3 d4@15 ~@2 [d#3,d4]@9 ~@2 b3@2 ~ [b2,b3]@2 ~ [b2,b3]@2 ~ [b2,b3] ~ b2 b3@2 ~ b3@2 [d3,d4]@3 [e3,e4] ~ e3 [f#3,f#4]@7 ~ [f#3,f#4]@5 ~@3 e3 [d3,d4,e4] ~ b3@2 b2 b3 ~@2 b3@2 ~ a3@2 ~ f#3@2 ~@2 d#3@6 ~, ~@2 [e3,g#3]@14 ~@3 a3@9 ~@3 b2 ~@13 b2@2 ~@7 e4 ~@7 [e3,e4] ~@7 f4@2 b2@2 ~@4 b2@3 a2@2 ~ f#2@2 ~@2 d#2@6 ~@2]/3", // D#maj7 B D E F# Dsus2 E
})).s("gm_french_horn").gain(0.19).pan(0.2)

// chords · french horn · "Horn" · soft notes
const french_horn_soft = note("<~@14 A ~ B@2 ~@14 C ~@22 D ~@2>".pickRestart({
  A: "~@12 [f3,d4]@17 ~@3", B: "[~@14 [g3,c#4]@15 d4@31 ~@4]/2", C: "~@2 f3 g#3", D: "~@5 f3@2 ~@25",
})).s("gm_french_horn").gain(0.11).pan(0.2)

// chords · string ensemble 2 · "Strings 1"
const string_ensemble_2 = note("<A B@5 C@6 D@2 ~@4 E@7 F G H I J@2 K@2 L M N O@3 P Q@4 R S@2 T@2 U@7 ~@2>".pickRestart({
  A: "~@16 d4@3 ~ [d2,c4]@5 ~ g2 ~ c4@4, ~@19 [f#3,f4]@6 f#2@2 [g#2,f#3,f4]@5", // D7 F#maj7 C#
  B: "[~@3 [g2,e4]@6 ~ [f2,a3,d4]@7 [e2,d3,a3,d4]@7 ~ d3@7 ~ d3@7 [d2,f#3,a3,e4]@3 [c2,e3,d4]@14 ~ d#3@15 ~@17 [a1,g3,d4]@18 ~@16 f#2@2 ~@2 g#2@17 ~ g#4@14, ~@2 [f3,b3]@7 d#3@8 ~@7 d4@17 ~@2 g3@30 [a#1,f3]@17 ~@18 [d2,e3]@18 g2@2 ~@17 [c#2,e3,b3]@15, ~@25 [a1,g3]@16 ~@16 b1@17 d3@35 f#3@37 ~@14, ~@58 c4@33 ~@18 [c#4,e4]@18 d#4@33, ~@127 c4@19 ~@14]/5", // C Dm Dsus2 D C Dsus4 Fdim A#5 …
  C: "[~@4 [f#2,e3,a#3,e4,g4]@18 ~ a#3@15 ~ [f#2,b3]@16 [b1,c#4]@17 b3@8 ~ a3@8 ~@16 c5@16 ~@16 a#4@17 ~@2 f#3@22 ~ [g#2,f#3,g#3,b3]@5 [a2,g3,a3,c4]@2 ~ a#2@5, ~@22 f#4@67 c#5@17 ~@15 b4@17 ~@16 b4@23 ~@15, ~@22 b1@17 ~@33 f#2@17 [e2,f#3]@33 [a2,g3,c#4]@33 e4@22 ~@9 [g#3,a#3,d#4]@6, ~@23 [f#3,d4]@66 ~ g#3@32 ~@33 [d2,c4]@25 ~@12]/6", // Edim B5 Bsus2 G#m7 Am7 Esus2 A7 G#sus2 …
  D: "[~@2 [a#2,g3]@6 ~ [a2,c4]@7 ~@10 g2@16 ~@22, ~ [a#3,c#4]@7 [f#3,a3]@8 [f3,g#3]@8 g3@34 ~@6, ~@17 [g#2,c4]@8 d3@35 ~@4, ~@25 a#3@31 ~@8]/2", // D# Am A#m F#m Fm G#
  E: "[~@30 [f4,a4,d#5,g5]@7 [e4,g#4,d5,f#5]@7 [d#4,g4,c#5,f5]@8 [c4,e4,f#4,a#4]@8 ~ [b3,d#4,f#4]@8 [a#3,d4,e4,g#4]@8 [a3,d#4,g4]@16 ~@33 g#3@16 ~ g3@15 ~ [f#3,a3]@32 ~ [a#3,c4]@15 ~ d4@16, ~@60 a4@9 ~@8 c#4@32 ~ b3@33 ~@15 d3@33 ~@33, ~@93 [d3,e4,f#4]@33 e3@33 ~@32 g3@16 [f#3,a3]@17, ~@94 f#3@33 ~@15 a#3@17 ~@65]/7", // F7 E7 D#7 C7 B A#7 Am7b5 F#m …
  F: "~ f#4@19 g#3@4 e4@4 d4@4, f#3, d4@19 ~@13", G: "c#4@4 d#4@4 c#4@4 g#4@4 [c4,f4]@9 [b3,e4]@7",
  H: "~ [a#3,g#4]@15 [a3,d4,a4]@16, d#4 ~", I: "[g#3,c#4,f#4,a#4]@15 ~ [g3,c4,d5]@16, ~@15 a4@17",
  J: "[g#4@16 g4@15 f#4@17 f4@16, [a3,d#4,d#5]]/2", // Adim
  K: "[[f#4,b4]@16 [f4,c5]@16 e4@16 [a3,f4]@8 ~ e4@7, d4@7 ~, g#3@6 ~ [g#3,c#4], ~ b4]/2", // B5 F5 Dm C#5
  L: "~@17 g#3@14 ~, [b3,f#4]@31 ~, f#3@17 ~@15, ~ d4@31", M: "f#4@8 f4@8 ~ g3@8 [f#3,a#4]@7, b4@25 ~@7, g#3 e4",
  N: "~ [a3,d5]@15 ~ [a3,g4]@15, [b2,d#4,a4] [f3,d#4,c5]", // D5 A7 B7 F7
  O: "[[e3,g#3,d4,f#4,b4]@16 ~ [f4,b4]@15 ~@34 d#4@15 [e3,g3,a#3,d4]@15, ~@16 [a2,g3]@16 [d3,f#3,e4,a4]@33 [e3,g#3]@16 ~@15, ~@17 c#4@32 b3@33 ~@14]/3", // E7 Fdim Em7b5 A7 D E
  P: "~@2 [d3,f#3,a3,c#4]@12 ~ [f#3,a3,d4]@17, ~@15 d3@14 ~@3", // Dmaj7 D
  Q: "[~@3 [d4,d5]@15 ~ [c#4,c#5]@5 d5@11 b4@32 [c#4,f4,a#4]@17 [c4,e4,a4]@16 a#3@24 f#4@3 g#4, ~@2 [g4,b4]@16 g#4@81 ~@29, ~@19 f#4@49 ~@32 f#4@22 ~@6, ~@6 d4@11 ~@8 d#4@7]/4", // D C# A#m Am G
  R: "~@2 f#4@3 [f4,b4,e5]@16 [e4,a#4,d#5]@11", // E D#
  S: "[~@21 g5@17 f#5@15 f5@11, ~@5 [a4,c#5]@59, ~@5 g#5@16 ~@43, ~@3 d#4@29]/2", // A
  T: "[~@22 f5@15 e5@16 ~ [g4,c#5,e5]@10, ~@5 [g#4,d5]@49 ~@10, ~@5 f#5@16 ~@32 b5@11, ~@3 b4@24 ~@5]/2", // C#dim G#dim
  U: "[~@6 [b3,f#4,a4,a5,d6]@17 ~ c#5@17 ~ [d#5,f#6]@18 ~ [g3,f4,b4,c#5,e5,g5,g6]@10 ~ g#6@8 [b2,d#5,a5,d6,b6]@34 [e4,g#4,d5,f#5,b5]@25 [d4,f#4,b4,e5]@8 a4 [b3,a4,b5]@24 a3 [b2,a3]@8 ~ d5@34 ~@8, ~@5 f#5@36 [g#3,g#4,b4,f#5,b5,d#6]@20 c#6@19 ~@67 d5@26 ~@8 [g#3,d4,f#4]@35 ~@8, ~@6 d5@36 ~@18 e6@21 ~@100 g#4@31 ~@12, ~@23 [e3,d4,g#4,b5,e6]@19 ~@29 [f#3,e4,a#4,c#5,e5,f#5,g#5]@9 ~@92 [d4,b4]@10 ~@42]/7", // Bm7 D#m C#m7b5 B7 E7 Bm B7 G#m7 …
})).s("gm_string_ensemble_2").gain(0.3).pan(0.4)

// other · string ensemble 2 · "Strings 2"
const string_ensemble_2_2 = note("<A B@8 ~@49>".pickRestart({
  A: "a4@3 b4@4 d5@4 f5@18 ~@2 d6",
  B: "[~@2 e5@4 d5@3 f5@4 d6@4 e5@4 d5@4 d6@15 b5@3 a5@66 a4@18 a#4@19 b4@18 c5@19 c#5@16 b4@16 c#5@17 b4@16 ~@8]/8",
})).s("gm_string_ensemble_2").gain(0.36)

// other · string ensemble 1 · "Strings 3"
const string_ensemble_1 = note("<~@32 A B@2 C D E F@2 G@3 H@2 I ~@12>".pickRestart({
  A: "~@8 e5@3 ~ f5 e5 d5 c#5 d5@4 b5@6 ~ b4@2 c#5@3", B: "[f#5@16 g#5@11 b5@2 f#6@2 e6@2 d#6@25 ~ d#6@2 e6@3, d5 ~]/2",
  C: "f#6@26 ~ b5@2 d6@2 ~", D: "f6 f#6@6 ~ f6 f#6@4 ~@3 f6 ~ d6@2 b5@12, ~@17 e6@2 ~@13",
  E: "~ c#6@7 ~ c#6@4 ~ c#6@3 b5@5 ~ b5@2 f#6@7",
  F: "[~ b5@8 ~ b5@3 ~@2 b5@3 a#5@4 ~ a#5@3 f#6@5 a#5@3 a5@5 g#5@3 g5@5 f#5@9 ~@2 a5@2 a#5@2 c#6@2, ~@57 e5@2 ~@5]/2",
  G: "[b5@2 g5@9 ~@2 a5@2 ~ b5@2 ~ c#6@5 d6@11 g#5@7 ~ g#5@4 ~ g#5@3 f#6@8 b6@8 f6@8 ~ f6@4 ~ f6@3 e6@4 ~ e6@2 ~ e6@4]/3",
  H: "[~ e6@2 ~ d#6@25 f#5@2 g#5@3 f#5 ~@2 c#6@7 ~ c#6@6 ~@3 b5 ~ a5 f#5@6 ~, ~@37 c6 ~@7 c6 ~@7 c6@2 ~@9]/2",
  I: "f#5@2 ~ g#5 ~@28",
})).s("gm_string_ensemble_1").gain(0.09).pan(0.6)

// chords · tremolo strings · "Strings 5" · D#m B7
const tremolo_strings = note("<~@55 [~@12 [d#3,f#3,d4,f#4] ~@3, ~@24 [b2,a3] ~@7] ~@2>")
  .s("gm_tremolo_strings").gain(0.42).pan(0.4)

// chords · brass section · "Brass 1"
const brass_section = note("<~@36 A B C@2 D E F G H I J K L ~@2 M N O@3 ~@2>".pickRestart({
  A: "~@27 g4 ~@2 g4 ~", B: "~ [d4,f#4]@7 ~ [d4,f#4]@5 ~ f#4 ~ [d4,f#4]@4 ~@2 [d4,f#4]@3 ~@5 [d4,f#4], ~@7 d4 ~@8",
  C: "[~@2 g#4@7 ~ [c#4,g#4]@4 ~ g#4@3 [e4,g4]@5 [e4,g4]@2 ~@6 g4@2 ~ [d4,f#4]@5 g#4@2 ~ [e4,g4]@3 ~@2 [d4,f#4]@12 ~@5, ~ c#4@7 ~@7 c#4 ~@15 e4 ~@7 e4 ~@24]/2", // C#5 Em D Em D
  D: "~@7 b3 [g3,g4] ~@2 [g3,g4]@4 [a3,c#4,a4] [g3,b3,g4]@3 [g#3,c#4,g#4]@5 [b3,b4]@8, ~@5 b3@2 ~@9", // G A G C#5 B
  E: "~@3 [b3,d4,g#4,b4]@8 [b3,d4,g#4,b4]@5 ~ b3@2 [b3,d4,g#4,b4]@5 ~ [b3,d4,g#4,b4]@4 ~@3, ~@16 [d4,g#4,b4]@3 ~@13", // G#dim
  F: "~@9 [a#3,c#4,g#4,a#4]@3 [a#3,c#4,g#4,a#4]@4 ~ [a#3,c#4,g#4,a#4]@3 [a3,c4,g#4,a4]@5 [a3,c4,g#4,a4]@5 ~ g#4", // A#m7 Am
  G: "~ [g4,a4] ~@2 [d#4,f#4]@7 ~ [d#4,f#4]@5 ~ [d#4,f#4]@2 [d#4,f#4]@6 ~@6, ~ e4@3 ~@28", // Gsus2 D#m
  H: "~@5 [f3,b3,c#4]@16 [e3,a#3,c4]@10 ~", // C#7 C7
  I: "[e3,a#3,c4] ~@2 a#3 ~@2 d#3@8 ~@13 [b3,d#4]@3 [b3,d#4]@2, ~@2 [e3,c4]@2 ~ [a3,b3]@8 ~@19", // C7 B C Asus2
  J: "~@11 [b3,d#4]@2 [b3,d#4]@2 ~@9 d#4@2 ~ e4@2 [d4,e4]@2 ~, ~@24 b3 ~@2 c#4 ~@4", // B Dsus2
  K: "[c#4,d#4] ~@2 [b3,c#4] ~@2 [g#3,d4]@7 ~ [g#3,d4]@2 ~@11 [g#3,d4]@2 ~ [g#3,d4]@2", // C#sus2 Bsus2 G#dim
  L: "~@11 [g#3,d4]@2 ~ [g#3,d4]@2 ~@16", M: "~@22 d#4@2 ~ d#4@2 ~@5",
  N: "~@4 d#4@2 d#4@2 ~ d#4 ~@2 d4 ~@2 e4 ~ e4 f#4@5 ~@3 f#4@5 ~, ~@26 e4 ~@5",
  O: "[~@4 d4@2 b3 ~ b3 ~@2 b3 ~@2 d4@6 a3@33 ~ g#3@33 ~@9, ~@3 f4@2 ~@91, ~@4 e4 ~@91]/3",
})).s("gm_brass_section").gain(0.5)

// chords · brass section · "Brass 1"
const brass_section_2 = note("<~@36 A B@3 C D E@2 F G H I J K ~ L M N@3 ~@2>".pickRestart({
  A: "~@27 [b4,d5]@2 ~ b4@2, ~@30 e5 ~", // Bm
  B: "[~ [a4,c#5]@8 [a4,c#5]@5 a4 c#5 ~ [a4,b4,d5]@4 ~@2 [a4,d5]@3 ~@5 [b4,d5] ~@2 [b4,d#5]@7 ~ [b4,d#5]@4 ~ d#5@3 [a#4,d5]@5 [a#4,d5]@3 ~@5 d5@2 ~ [a4,c#5]@5 [b4,d5]@2 ~ [a#4,d5]@3 ~@3 a4@11 ~@5, ~@23 b4 ~@7 a4@2 ~@14 b4 ~@15 a#4 ~@15 d5@12 ~@5]/3", // A Bm7 D5 Bm B A# A Bm …
  C: "~@7 b4 d5@2 ~ [b4,d5]@4 c#5 [b4,d5]@3 [c#5,e5]@5 [d5,f#5]@5 e5 ~@2, ~@15 e5@2 ~@15", // Bm C#m D
  D: "f#5 ~@2 [d5,g#5]@8 [d5,g#5]@5 ~ g#5@2 [d5,g#5]@5 ~ [d5,g#5]@4 ~@3, ~@8 d5 ~@7", // Ddim
  E: "[~@9 [c#5,g#5]@3 [c#5,g#5]@4 ~ [c#5,g#5]@2 ~ [c5,g#5]@4 ~ [c5,g#5]@4 ~@2 g#5@2 [a4,a5] ~@2 [a#4,f#5]@7 ~ [a#4,f#5]@5 ~ [a#4,f#5]@2 f#5@8 ~@4, ~@52 a#4@5 ~@7]/2", // C#5 Fm A D#m
  F: "~@5 [e4,g4]@16 [d#4,f#4]@10 ~", G: "d#4@2 ~ g4 ~ [d#4,g#4]@8 ~@14 [g4,b4]@3 [g4,d5]@2, f#4 ~ d4@2 ~@28",
  H: "~@11 [f#4,b4]@2 [f#4,b4]@3 ~@8 d5@2 ~ [g#4,e5]@2 [a4,f5]@3, ~@24 f#4 ~@7", // B5 C#m Dm
  I: "[g#4,e5]@2 ~ f4@3 [f#4,b4]@5 f#4 ~@2 [f#4,b4]@3 ~@10 [f4,b4]@3 [f4,b4]@2, ~@3 d5 ~@28", // C#m B5 Fdim
  J: "~@11 [e4,b4]@2 ~ [e4,b4]@3 ~@7 [b3,b4]@2 ~ b3@2 ~ [b3,b4]@2, ~@27 b4 ~@4", // E5 B
  K: "[d4,d5]@3 [c#4,c#5]@3 [b3,b4]@7 ~@19", L: "~@22 d5@2 ~ [a4,d5]@3 ~@4, ~@22 a4 ~@9",
  M: "~@4 [a4,d5]@2 ~ [a4,d5]@2 a4@2 ~ d5 ~@2 e5 ~@2 f#5@6 ~@2 f#5@6, ~@9 d5 ~@8 e5 ~@7 e5 ~@5", // D5
  N: "[~@3 [e5,f5] d5@2 b4 ~ b4 ~@2 b4@2 ~ d5@5 ~ [d4,f#4]@32 ~@2 f#4@33 ~@9, ~@53 d4@32 ~@11]/3", // Fmaj7 D
})).s("gm_brass_section").gain(0.57).pan(0.3)

// other · muted trumpet · "Trumpet"
const muted_trumpet = note("<~@2 A B@2 ~@2 C@2 D E@2 F@2 ~@9 G H I ~ J K ~@26 L@2 M>".pickRestart({
  A: "~@17 d5@5 ~@4 d5@5 ~", B: "[~@2 f5@2 d5@3 ~@3 c5@2 a4@4 ~@3 a4@6 ~@2 g4@2 a4@11 g4@2 a4 g4 ~ f#4@5 a3@13 ~]/2",
  C: "[~@13 f4@2 f#4 b4 ~@2 d5 ~ e5@13 d5@2 b4 ~ f#4 ~@2 e4@19 d4@2 e4@2]/2", D: "~ f#4@2 ~ g#3@14 ~@5 b4 ~@2 c#5 d5@5",
  E: "[~@2 c#5 d5@2 b4 ~@2 g4 ~@2 f#4@2 e4 ~@2 a4@8 ~@2 a4 b4@2 d5 ~ b4@2 d5 a4 d5@2 ~ b4@4 ~@17 c5@2 d#5 c5@2]/2",
  F: "[[a#4,d#5] ~ d#5@2 a#4@3 ~@2 b4@2 d5@2 b4@3 a4 d5@2 ~ d4@3 ~@3 g4@12 ~@26]/2", G: "~@24 f#4@4 b4 ~@3",
  H: "~ f4@2 ~ e4@6 e4 ~@2 d4 ~ e4 ~ d4@7 ~@2 d4 ~@2 b3 ~@2", I: "d4@3 ~@5", J: "~@20 f#4 ~@4 f#4 ~@4 f#4 ~",
  K: "f#3 ~@2 f#4 ~@3 f#4 ~@11 f#4 ~ e4 ~ g4 ~ f#4@4 ~@3",
  L: "[~@31 b4@2 ~ d5 f#5@2 ~@2 f#5@2 g5 ~ g#5@2 ~@2 b5@6 ~@2 f#5@3 ~ e5@2 ~@3, ~@29 f5 ~@2]/2",
  M: "a4@3 g#4@2 ~@2 b4 d5 ~ f#5 ~ e5@2 f5 e5 d5 ~ b4 ~ a4 ~ b4@7 ~@3",
})).s("gm_muted_trumpet").gain(0.17).pan(0.9)

// chords · orchestral harp · "Harp"
const orchestral_harp = note("<~ A B C@2 ~ D@4 ~@2 E ~@6 F G H ~@36>".pickRestart({
  A: "~@24 f#4 [g4,a4] [b4,d5] e5 d6@4", B: "~@13 d5@3",
  C: "[~@3 d5@7 a4@8 f4@8 ~ d4@16 ~@2 [f#4,a4]@8 ~@11, ~@43 c#4@10 ~@11, ~@22 e4 ~@9]/2", // F#m
  D: "[~@23 c#5@16 b4@17 a#4@17 b4@8 ~@9 c#5@15 ~@23, ~@43 e4@9 ~@12, ~@87 f#4@17 ~@24, ~@88 g#4@17 ~@23, ~@89 b4@16 ~@23]/4",
  E: "~@19 [d3,e3] [f3,g3] [a3,b3] [c4,d4,e4] [f4,g4,a4] b4 ~ g5 ~@5", F: "~@20 d5 ~@8 f#5 ~@2",
  G: "~@14 [g5,b5] d6@2 ~@2 d4 ~@2 d#6@2 a#4 ~@2 d5 ~ [f#5,a5,c#6] e6@2, ~@21 a#5@2 ~@9, ~@22 f#4 ~@9", H: "a5 ~@31",
})).s("gm_orchestral_harp").gain(0.16).pan(0.4)

// chords · orchestral harp · "Harp" · soft notes · G
const orchestral_harp_soft = note("<~ [~@22 d4@2 e4 ~@7] ~@10 [~@17 [g2,a2,b2] c3 ~@13] ~@7 [~@22 g5 ~@9] ~@37>")
  .s("gm_orchestral_harp").gain(0.06).pan(0.4)

// other · oboe
const oboe = note("<~@14 A@3 ~@41>".pickRestart({
  A: "[~@8 a4@4 d5@4 e5@4 f5@4 a5@3 ~@2 a#4@33 a4@19 ~@15]/3",
})).s("gm_oboe").gain(0.09).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@34 A B C D E F G@2 H@2 I@3 J K L ~ M E N O L ~@2>".pickRestart({
  A: "~@17 x ~@14", B: "~ x ~@15 x ~@9 x ~@4", C: "~ x ~@14 x ~@15", D: "~ x ~@15 x ~@14", E: "~ x ~@16 x ~@13",
  F: "~ x ~@7 x ~@6", G: "~@3 x ~@15 x ~@12", H: "~ x ~@3 x ~@2", I: "~@5 x ~@15 x ~@10", J: "~@6 x ~@12 x ~@2 x ~@9",
  K: "~@3 x ~@7 x ~@4", L: "~@3 x ~@12", M: "~ x", N: "~@3 x ~@16 x ~@11", O: "~@5 x ~@16 x ~@9",
})).gain(0.42)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@35 A@2 B C D E F G H I J K ~ K ~@2 L ~@2 M ~@3>".pickRestart({
  A: "~@7 x ~@8", B: "~@15 x ~@15 x", C: "~@15 x ~@16", D: "~ x", E: "x!2", F: "x ~@16 x ~@14", G: "~@17 x ~@14",
  H: "~@9 x ~@6", I: "~ x ~@7 x ~@6", J: "~@19 x ~@12", K: "~@3 x ~@28", L: "~@15 x", M: "~@2 x ~@16 x ~@12",
})).gain(0.18)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A B C D E F G H I J K L M N O P M N Q R M N S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN ~@2
>`.pickRestart({
  A: "~@25 x ~@6", B: "~@2 x ~@7 x ~@7 x ~@5 x ~@2 x ~@4", C: "~@3 x ~@8 x ~@7 x ~@2 x ~@4 x ~@3",
  D: "~@5 x ~@7 x ~@8 x ~@7 x ~", E: "~@6 x ~@4 x ~@2 x ~@6 x ~@2 x ~@4 x ~@2", F: "~@6 x ~@7 x ~@7 x ~@4 x ~@2 x ~",
  G: "~@3 x ~@3 x ~@3 x ~@3 x", H: "~@5 x ~@4 x ~@2 x ~@7 x ~@4 x ~@2 x ~@2",
  I: "~@6 x ~@4 x ~@2 x ~@7 x ~@2 x ~ x ~@2 x ~", J: "~@3 x ~@12", K: "~@7 x ~@7 x ~@7 x ~@7 x",
  L: "~@7 x ~@5 x ~ x ~@7 x ~@5 x ~@2", M: "x ~@7 x ~@4 x ~@2 x ~@7 x ~@2 x ~ x ~@2", N: "x!2 ~@2",
  O: "~@9 x ~@7 x ~@7 x ~@6", P: "~ x ~@7 x ~@4 x ~@2 x ~@6 x ~@4 x ~@2", Q: "~ x!3",
  R: "x ~@7 x ~@4 x ~@2 x ~@7 x ~@4 x ~@2", S: "~@9 x ~@6 x ~@7 x ~@7", T: "~ x ~@7 x ~@4 x ~ x ~@7 x ~@5 x ~",
  U: "x ~@8 x ~@4 x ~ x ~@7 x ~@2 x ~@2 x ~", V: "~ x ~@7 x ~@22", W: "~@5 x ~@3 x ~@3 x ~@2",
  X: "~@2 x ~@7 x ~@4 x ~@2 x ~@7 x ~@5", Y: "x ~ x ~@8 x ~@4 x ~@2 x ~@7 x ~@2 x ~", Z: "x ~@2 x ~@7 x ~@20",
  AA: "~@3 x ~ x ~ x", AB: "~@2 x ~@3 x ~@2 x!2 ~@3 x ~", AC: "~@2 x ~@2 x ~@7 x ~@4 x ~@2 x ~@7 x ~@2",
  AD: "x ~ x ~@2 x ~@7 x ~@18", AE: "~@13 x ~@7 x ~@7 x ~@2", AF: "~@6 x ~@7 x ~@4 x ~ x ~@8 x ~",
  AG: "~@3 x ~ x ~@8 x ~@4 x ~@2 x ~@7 x ~", AH: "x ~@2 x ~@2 x ~@8 x ~@16", AI: "~@20 x ~@8 x ~@2",
  AJ: "~@7 x ~@8 x ~@8 x ~@4 x ~", AK: "~ x ~@7 x ~@5 x ~@2 x ~@7 x ~@5", AL: "x ~@2 x ~@7 x ~@2 x ~ x ~@2 x ~@8 x ~@3",
  AM: "~@15 x", AN: "~@6 x ~@8 x ~@16",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct("<~@34 A B C D E F G H I J K L K M@2 ~@2 N O P Q R ~@2>".pickRestart({
  A: "~@25 x ~@4 x ~", B: "~@8 x ~@16 x ~@4 x ~", C: "~@9 x ~@14 x ~@5 x ~", D: "~@9 x ~@15 x ~@6",
  E: "~@10 x ~@15 x ~@4 x", F: "~@5 x ~@7 x ~@2", G: "~@11 x ~@15 x ~@4", H: "~@11 x ~@16 x ~@3",
  I: "~ x ~@10 x ~@15 x ~@3", J: "~@2 x ~@9 x ~@16 x ~@2", K: "~@13 x ~@15 x ~@2", L: "~@3 x ~@9 x ~@15 x ~@2",
// … 52 more lines

More by Johnny Mercer