Strudelify
What Is This Thing Called Love? cover art

In The Wee Small Hours

What Is This Thing Called Love?

Sinatra

KeyA majorTempo65 bpm
0:00/0:00
// What Is This Thing Called Love? — Sinatra
// 65 bpm, 4/4, key A 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: Full arrangement: all 41 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · "A.PIANO 2"
const piano = note("<A B C D E@2 F G@8 H I J@8 K L M ~@2 N O P Q R ~@6>".pickRestart({
  A: "e4@35 ~ f4@9 ~@3, [a3,c4]@23 ~", B: "f#4@23 ~ g4@23 ~, [a3,c4]@15 ~", C: "d4@18 d#4@5 ~, [a#2,g#3,c4]@23 ~",
  D: "[c4,e4]@20 ~@4 [c4,d4,f4]@23 ~, [a#2,g#3]@47 ~", // C Dm7 A#7
  E: "[~@18 [e4,e5,e6]@17 ~ [e4,e5,e6]@19 ~@5 [e4,e5,e6]@21 ~@15]/2", // E
  F: "[a2,e3,g3,c#4]@11 ~ [a2,e3,g3,c#4]@9 ~@3 [a2,e3,g3,c#4]@10 ~@2 [c3,e3,g3,a#3]@11 ~", // A7 C7
  G: "[[a2,e3,g3,c#4]@10 ~@2 [a2,e3,g3,c#4]@10 ~ [a2,e3,g3,c#4]@10 ~@2 [a2,e3,g3,c#4]@9 ~@3 [d3,f3,a3]@9 ~@3 [d3,f3,a3]@11 ~ [d3,f3,a3]@8 ~@3 [d3,f3,b3]@10 ~@2 [d3,f3,c4]@9 ~@3 [d3,f3,b3]@11 ~ [d3,f3,a#3]@11 ~ [d3,f3]@9 ~@3 [e3,g#3,d4,e4]@10 ~ [e3,g#3,d4,e4]@10 ~@3 [e3,g#3]@7 ~@4 [e3,g#3,d4,e4]@10 ~@2 [e3,g#3,d4,e4]@9 ~@3 [e3,g#3,d4,e4]@10 ~ [e3,g#3,d4,e4]@9 ~@3 [e3,g#3,d4,e4]@7 ~@5 [a2,e3,a3,c#4,e4]@10 ~@2 [a2,e3,a3,c#4,e4]@10 ~@2 [a2,e4]@10 ~ [a2,f#3,a3,c#4,e4]@11 ~@2 c#4@9 ~@2 [a2,f#3,a3,c#4,e4]@10 ~@2 [a2,e3,a3,b3,c#4]@10 ~@2 [a2,e3,a3,b3,c#4]@10 ~@2 [a2,e3,g3,c#4]@10 ~@2 a2@9 ~@2 [a2,e3,g3,c#4]@10 ~@2 [c3,e3,g3,a#3]@11 ~ [a2,e3,g3,c#4]@6, ~@129 a3@8 ~@28 [d4,e4]@8 ~@86 [e3,a3,c#4]@10 ~@14 [a2,g#3,a3,e4]@10 ~@49 [e3,g3,c#4]@9 ~@33]/8", // A7 Dm Bdim Dm7 Bdim A# Dm E7 …
  H: "~@5 [a2,e3,g3,c#4]@10 ~@2 [a2,e3,g3,c#4]@10 ~@2 [a2,d#3,g3,c#4]@9 ~@3 [d3,f3,a3]@7", // A7 Dm
  I: "~@5 [d3,f3,a3]@11 ~@2 [d3,f3,a3]@9 ~@3 [d3,f3,b3]@10 ~@2 [d3,f3,c4]@6", // Dm Bdim Dm7
  J: "[~@6 [d3,f3,b3]@11 ~@2 [d3,f3]@9 ~@2 [d3,f3,a3]@9 ~@4 [e3,g#3,d4,e4]@10 ~@2 [e3,g#3,d4,e4]@10 ~@3 [e3,g#3]@7 ~@4 [e3,g#3,d4,e4]@10 ~@3 [e3,g#3,d4,e4]@9 ~@3 [e3,g#3,d4,e4]@10 ~@2 [e3,g#3,d4,e4]@9 ~@3 [e3,g#3,d4]@8 ~@4 [a2,e3,a3,c#4,e4]@11 ~ [a2,e3,a3,c#4,e4]@11 ~@2 [a2,e4]@11 ~ [a2,f#3,a3,c#4,e4]@12 [a2,g#3,a3,c#4,e4]@11 ~ [a2,f#3,a3,c#4,e4]@11 ~ [a2,e3,a3,c#4,e4]@11 ~ [a2,e3,a3,c4]@11 ~@14 [f#4,a4]@6 [c5,g5,a5]@20 ~@35 [a4,d5]@23 ~@13 [e4,b4]@11 ~@2 [d4,b4]@10 ~@2 [d4,b4]@12, ~@18 a#3@11 ~@38 [d4,e4]@9 ~@52 e4@5 ~@31 [e3,a3,c#4]@10 ~@64 d4@48 c4@48 ~ g3@45 ~@4, ~@149 f#4@18 ~@25, ~@298 [g#4,d#5]@11 ~@75, ~@299 c5@35 ~@50]/8", // Bdim Dm E7 E E7 A A5 F#m7 …
  K: "~@12 [e4,b4]@10 ~@2 [d4,b4]@10 ~@3 [d4,b4]@10 ~, g3@47 ~", L: "~ [f3,c4,d4,a4]@44 ~@3", M: "~ [b3,d#4,a4,d5]@23",
  N: "~@3 [a2,e3,g3,c#4]@11 ~ [a2,e3,g3,c#4]@10 ~@2 [a2,e3,g3,c#4]@10 ~@2 [c3,e3,g3,a#3]@9", // A7 C7
  O: "~@4 [a2,e3,g3,c#4]@10 ~@2 [a2,e3,g3,c#4]@11 ~ [a2,e3,g3,c#4]@10 ~@2 [a2,e3,g3,c#4]@8", // A7
  P: "~@4 [d3,f3,a3]@10 ~@2 [d3,f3,a3]@11 ~@2 [d3,f3,a3]@9 ~@3 [d3,f3,b3]@7", // Dm Bdim
  Q: "~@5 [d3,f3,c4]@10 ~@2 [d3,f3,b3]@11 ~@2 [d3,f3,a#3]@11 ~ [d3,f3,a3]@6", // Dm7 Bdim A# Dm
  R: "~@6 [b2,g#3,d4,f4]@10 ~@2 [b2,g#3,d4,f4]@11 ~@2 [e3,g#3,d4,e4]@9 ~@8", // Bdim E7
})).s("gm_piano").gain(0.33).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<A B C D ~@2 E@5 F@6 G@8 H I J K@2 L M N O P ~@6>".pickRestart({
  A: "a1@17 ~ a1@2 ~@4 a1@21 ~@3", B: "a1@7 ~ a1@7 ~", C: "a#1@7 ~ a#1@7 ~", D: "a#1@21 ~@3 a#1@22 ~@2",
  E: "[a1@22 ~@2 a1@12 c2@4 b1@4 a#1@3 a1@14 ~@10 a1@16 ~@8 d2@17 ~@6 a2@17 ~@7 d2@18 ~@6 d2@19 ~@5 b1@18 ~@5 b1@17 ~@6 e2@4]/5",
  F: "[~@20 e1@19 ~@5 a1@18 ~@5 a1@17 ~@7 a1@19 ~@5 a1@19 ~@5 a1@19 ~@4 a1@11 ~ c2@4 b1@4 a#1@3 a1@20 ~@4 a1@24 d2@23 ~ a2@16 ~@9 d2@6]/6",
  G: "[~@6 a2@12 d2@16 ~@9 b1@18 ~@6 b1@18 ~@6 e2@15 ~@10 e1@20 ~@4 a1@19 ~@5 a1@18 ~@7 a1@18 ~@6 a1@19 ~@6 d2@11 ~ d2@10 ~@2 d2@22 ~@2 d2@23 ~@2 d2@11 ~ d2@12 g1@12 b1@12 d2@11 ~@2 d2@12]/8",
  H: "g1@12 g2@12 g1@11 ~ g1@7 g2@4 ~", I: "~ f1@12 c2@12 c2@12 f2@11", J: "~ b1@9 ~@3 b1@12 ~ f2@12 f1@10",
  K: "[~ e1@26 ~@21]/2", L: "~@2 a1@23 ~@2 a1@12 c2@9", M: "~@4 a1@16 ~@8 a1@19 ~", N: "~@4 d2@17 ~@8 a2@19",
  O: "~@5 d2@21 ~@4 d2@18", P: "~@3 b1@10 ~@2 e2@6 ~@3",
})).s("gm_acoustic_bass").gain(0.33)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<A B C D E F G@7 H@8 I@3 ~@2 J K L ~ M@5 ~ N O@4>".pickRestart({
  A: "e4@3 f4", B: "f#4 g4", C: "~@3 d#4", D: "e4@6 f4@5 ~", E: "~@6 e4@2 ~@4 e4@9 ~@3 e4@2 ~@4 e4@9 ~@3 e4@4 ~@2",
  F: "e4@2 ~@4 e4@9 ~@3 e4@3 ~@3 e4@21 ~@3", G: "[g4@94 ~ d4@94 ~ d4@94 e4@52]/7",
  H: "[~@19 c#4@24 g4@94 d4@97 ~ d4@97 e4@52]/8", I: "[~@21 c#4@12 c4@12 ~ f#4@23 ~ g4@24 g#4@25 a4@25]/3",
  J: "~@27 f6!2 ~ f6 ~@2 g6!2 ~ g6 f6 ~ f6!2 ~ f6 g6 ~ g6!2 ~",
  K: "g6 a6 ~ a6!2 ~ a6 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6 ~ a6!2 ~ a6!2 ~ a6!2",
  L: "~ a6 ~@46", M: "[~@2 e5@98 d4@96 ~@2 f4@25 e4@6 ~@11]/5", N: "~@14 e4@13 f#4@12 g#4@9",
  O: "[~@4 a4@12 c4@13 d4@12 e4@12 f4@12 ~ d4@52 e4@59 ~@15]/4",
})).s("gm_string_ensemble_1").gain(0.27).pan(0.7)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@2
  [d4@3 ~]
  ~@23
  [~ f6!2 ~ f6!2 ~ f6!2 ~ f6!2 ~ f6!2 ~ f6!2 ~ f6!2 ~ f6 ~ f6!2 ~@5 g6 ~@16]
  ~@14
>`).s("gm_string_ensemble_1").gain(0.16).pan(0.7)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<A@2 B@2 C D E@3 F@8 G@8 H I J K L M@5 ~ N@5>".pickRestart({
  A: "[c4@23 ~]/2", B: "[c4@95 ~]/2", C: "~@6 b3@2 ~@4 b3@11 ~ d4@2 ~@4 d4@10 ~@2 d4@4 ~@2",
  D: "d4@2 ~@4 d4@8 ~@4 d4@2 ~@4 d4@23 ~", E: "[e4@95 a3@35 b3@12 c4@2]/3",
  F: "[~@10 b3@12 a#3@11 a3@12 g#3@95 c#4@71 b3@23 e4@94 ~ a3@37 b3@12 c4@6]/8",
  G: "[~@6 b3@12 a#3@12 a3@12 g#3@98 c#4@73 e4@24 ~ e4@48 d#4@24 ~ d4@24 e4@24 d4@25]/8", H: "e4 b3",
  I: "~@20 a5 ~@3 a5!2 ~@2 a5 ~ a5 c6 ~ c6!2 ~ c6 a5 ~ a5!2 ~ a5 c6 ~ c6!2 ~",
  J: "c6 d6 ~ d6!2 ~ d6 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6 ~ d6!2 ~ d6!2 ~ d6!2",
  K: "~ d6 ~@6 d6 ~ d6!2 ~ d6 b5 ~ b5!2 ~ b5 a#5 ~ a#5!2 ~ a#5 g#5 ~ g#5!2 ~ g#5 f5!2 ~ f5!2 ~ e5!3 ~ e5 d5!2 ~ d5!2",
  L: "b4@5 ~@19", M: "[~@2 g4@98 a3@37 b3@12 c4@12 b3@12 a#3@12 ~ a3@12 d4@23 ~ d4@5 ~@13]/5",
  N: "[~@7 c#4@25 a3@25 b3@25 ~ [b3,c#4]@29 ~@8]/5", // Bsus2
})).s("gm_string_ensemble_1").gain(0.3).pan(0.6)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft_2 = note("<~@26 [~ a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5 ~@2 a5 ~@4 a5 ~@20] ~@14>")
  .s("gm_string_ensemble_1").gain(0.18).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_3 = note("<A@2 B@2 C D E@4 ~ F@7 ~ G@7 H I J K L@5 ~ M@5>".pickRestart({
  A: "a3/2", B: "[g#3@31 ~]/2", C: "~@3 a3 ~@2 a3@6 a#3 ~@2 a#3@4 ~@2 a#3@3", D: "a3@3 ~@3 a3@8 ~@4 a3@6 g#3@22 ~@2",
  E: "[c#4@28 c4@4 b3@4 a#3@3 b3@4 c4@4 c#4@47 ~ f3@95 ~@2]/4",
  F: "[~@44 a3@94 c#4@28 c4@4 b3@4 a#3@3 b3@4 c4@4 c#4@48 f3@98 ~@5]/7",
  G: "[~@44 a3@98 c4@46 ~@2 c4@22 ~@2 c4@25 b3@73 g3@21 ~@3]/7",
  H: "~@17 d5 ~@6 d5!2 ~ d5!2 ~ d5 f5 ~ f5!2 ~ f5 d5 ~ d5!2 ~ d5 f5 ~ f5!2 ~",
  I: "f5 g5 ~ g5!2 ~ g5 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5!2 ~ g5 ~ g5!2 ~ g5!2 ~ g5!2",
  J: "~ g5 ~@6 a#5 ~ a#5!2 ~ a#5 g#5 ~ g#5!2 ~ g#5 f5 ~ f5!2 ~ f5 e5 ~ e5!2 ~ e5 d5!2 ~ d5!2 ~ b4!3 ~ b4 a#4!2 ~ a#4!2",
  K: "g#4@3 ~@13", L: "[~@3 c#4@28 c4@4 b3@4 a#3@4 b3@4 c4@4 c#4@49 f3@98 g#3@23 ~ g#3@7 ~@11]/5",
  M: "[~@14 b3@50 d3@50 g3@52 a3@57 ~@17]/5",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.4)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft_3 = note("<~@26 [~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5 ~@2 d5!2 ~ d5 ~@25] ~@14>")
  .s("gm_string_ensemble_1").gain(0.18).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_4 = note("<A B C@2 D E F G@6 H@8 I@3 J K L M N O P@5 ~ Q@5>".pickRestart({
  A: "e3@3 f3", B: "f#3@23 ~ g3@24", C: "[a#2@72 d3@23 ~]/2", D: "~@6 c#3 ~@5 c#3@12 c3@2 ~@4 c3@10 ~@2 c3@6",
  E: "b2@3 ~@3 b2@9 ~@3 b2@6 a#2@22 ~@2", F: "a2@28 a#2@4 b2@4 c3@3 b2@4 a#2@4 ~",
  G: "[a2@47 d3@94 e3@35 b2@12 ~ e3@46 ~ e3@22 ~ e3@12 f#3@12 g#3@5]/6",
  H: "[~@7 f#3@12 e3@23 a2@28 a#2@4 b2@4 c3@3 b2@4 a#2@4 a2@36 d#3@12 d3@97 ~ e3@36 b2@13 e3@47 ~ e3@23 ~ e3@12 ~ f#3@12 g#3@3]/8",
  I: "[~@9 f#3@12 e3@24 ~ d3@48 f#3@50]/3", J: "~@17 d3@6 f#3@6 e3@6 c#3@6 ~ d3@6",
  K: "f#3@4 e3@4 c#3@4 d3@5 ~ e4@6 b3@23 ~",
  L: "~@13 f4 ~@3 f4 ~@6 f4!2 ~@4 f4 g4 ~ g4!2 ~ g4 f4 ~ f4!2 ~ f4 e4 ~ e4!2 ~",
  M: "e4 d#4 ~ d#4!2 ~ d#4 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4!2 ~ d#4 ~ d#4!2 ~ d#4!2 ~ d#4!2",
  N: "~ d#4 ~@6 f5 ~ f5!2 ~ f5 e5 ~ e5!2 ~ e5 d5 ~ d5!2 ~ d5 b4 ~ b4!2 ~ b4 a#4!2 ~ a#4!2 ~ g#4!3 ~ g#4 f4!2 ~ f4!2",
  O: "e4 ~@5", P: "[~@2 a2@29 a#2@4 b2@4 c3@4 b2@4 a#2@4 a2@49 d3@98 b2@24 e3@6 ~@12]/5",
  Q: "[~@14 a2@50 f2@50 a2@51 ~ a2@58 ~@16]/5",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.4)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft_4 = note(`<
  ~@26
  [~ f4!2 ~ f4!2 ~ f4!2 ~ f4!2 ~@2 f4 ~ f4 ~@2 f4!2 ~ f4 ~@4 f4!2 ~@19]
  ~@14
>`).s("gm_string_ensemble_1").gain(0.18).pan(0.4)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@16 A@4 B@3 ~@18>".pickRestart({
  A: "[~@4 e6@3 d6@3 a5@3 f5@3 ~ e6@18 d6@6 e6@3 d6@3 a5@3 f5@3 e6@18 d6@6 a5@6 d5@5 ~ g#5@29 a5@4 b5@4 c6@4 b5@4 a5@4 g#5@45 ~@9]/4",
  B: "[~@7 b5@3 a5@3 e5@3 c#5@3 ~ b5@18 a5@6 b5@3 a5@3 e5@3 c#5@3 b4@3 a4@3 e4@3 c#4@3 b3@6 c#4@6 e4@6 d5@6 ~ c5@48 ~@3]/3",
})).s("gm_string_ensemble_2").gain(0.54).pan(0.3)

// other · clarinet
const clarinet = note("<A B C D E@2 F@2 G H I@2 J K@6 ~@2 L@5 ~ M ~@4 N@2 O P@4 Q@2>".pickRestart({
  A: "~@12 b5@3 a5@3 e5@3 c5@2 ~ b5@17 ~ a5@3 ~@3", B: "b5@3 a5@3 e5@2 ~ c5@3 b5@18 a5@6 e5@6 c5@6",
  C: "~@12 g5@3 f5@3 c5@3 g#4 ~@2 g5@17 ~ f5@3 ~@3", D: "g5@3 f5@3 c5@3 g#4 ~@2 g5@18 f5@6 c5@6 g#4@2 ~@4",
  E: "[e5@59 ~@37]/2", F: "[e4@22 ~@2 e4@4 f4@4 f#4@4 g4@3 f#4@4 f4@4 e4@45 ~@4]/2",
  G: "~@11 e5@3 d5@2 a4@3 f4@2 ~@2 e5@17 d5@3 ~@3 e5@2", H: "~ d5@3 a4@3 f4@2 ~ e5@17 ~ d5@5 a4@6 d4@7 ~@2",
  I: "[~@25 a4@4 b4@4 c5@4 b4@3 a4@4 g#4@39 ~@13]/2", J: "~@8 b4@3 a4@3 e4@3 c#4@2 ~ b4@17 a4@3 ~@3 b4@3 a4@2",
  K: "[~ e4@3 c#4@3 b4@6 e5@4 ~@2 c#5@19 ~@5 [c#4,e4]@23 c#4@4 c4@4 b3@4 a#3@4 b3@3 c4@4 ~ e4@35 d#4@12 ~@25 a3@12 b3@12 c4@12 b3@12 a#3@12 a3@12 ~ d4@51 ~@2, ~@66 e4@9 ~@3 e4@9 ~@2 c#4@43 ~@5 d4@37 ~@114]/6", // C#m
  L: "[~@21 c#4@12 ~ c4@11 ~ f#4@24 g4@24 g#4@24 ~ a4@24 b4@95 ~@2]/5", M: "~ d5@15",
  N: "[~@16 e5@3 d5@3 a4@3 f4@3 ~ e5@17 ~ d5@3 ~@3 e5@3 d5@3 a4@3 f4@2 ~ e5@18 ~ d5@6 a4@6]/2",
  O: "d4@3 ~@3 f4@18 e4@3 ~@3 e4@6 ~ g5@3 e5@3 c5@3 a4@2",
  P: "[~ g4@3 e4@3 d4@5 e4@6 ~ g4@6 c5@7 e5@29 ~@13 b5@3 a5@3 e5@3 c#5@2 ~@2 b5@18 ~ a5@3 ~@3 e5@3 d5@3 a4@3 f4@2 ~@2 e5@18 d5@6 ~ a4@5 f4@5 ~ e4@2 f4@2 e4 f4 e4 ~ f4 e4 f4 e4 f4 [e4,f4] ~ e4 f4 e4 f4 [e4,f4] ~ e4 f4 e4 f4 e4 f4 e4 f4 e4 f4]/4", // Fmaj7
  Q: "[e4 f4 e4 f4 e4 f4 e4 f4 e4 ~ f4 e4 f4 e4 f4 ~ [e4,f4] ~ e4 ~ e4 ~ f4 e4@58 ~@15, ~@19 f4@2 ~@75]/2", // Fmaj7
})).s("gm_clarinet").gain(0.33).pan(0.6)

// other · flute
const flute = note("<~@34 A B@2 ~ C@2 ~>".pickRestart({
  A: "~@37 c5@6 g4@5", B: "[~ d4@5 ~ c4@6 d4@12 g4@6 ~ c5@30 ~@34]/2", C: "[~@38 d4 ~@5 d4@27 ~@25]/2",
})).s("gm_flute").gain(0.27)

// chords · clarinet
const clarinet_2 = note("<~@34 A B@2 ~ C@2 ~>".pickRestart({
  A: "~@37 [d4,g#4]@6 [g#3,d4]@5", // Ddim G#dim
  B: "[~ e3@6 a#2@6 c3@6 e3@6 ~ g#3@6 ~ [g#3,d4]@30 ~@33, ~ g#3@24 d4@7 [a#2,g4]@30 ~@34, ~@7 a#1@12 e2@14 ~@63]/2", // G#dim D#
  C: "[~@37 [e3,a3]@2 ~@5 [e3,a3,b3]@26 ~@26, ~@37 b3 ~@58]/2", // A5 Esus4
})).s("gm_clarinet").gain(0.27).pan(0.3)

// chords · celesta
const celesta = note("<~@28 A B ~@8 C@3>".pickRestart({
  A: "~@8 [f6,a#6,d7]@6 [e6,g#6,b6]@6 [d6,f6,a#6]@6 [b5,e6,g#6]@6 [a#5,d6,f6]@5 ~ [g#5,b5]@5 [f5,a#5,d6]@5, ~@37 e6@6 ~@5", // A# E A# E A# G#m A#
  B: "[e5,g#5,b5]@13 ~@35", // E
  C: "[~@18 a5@3 g5@3 ~ d5@3 b4@3 a5@16 g5@3 ~ d5@3 b4@3 a5@3 g5@3 d5@3 ~ b4@2 ~@5 a5@51 ~@19, ~@70 a4@51 ~@23, ~@71 c#5@51 ~@22, ~@24 e5@17 ~@7]/3",
})).s("gm_celesta").gain(0.27).pan(0.7)

// other · orchestral harp · "HARP" · Gsus2 Dsus2 Fsus2 Cmaj7
const orchestral_harp = note("<~@26 [~@37 c4 d4 ~ e4 f4 [g4,a4] b4 c5 [d5,e5] [f5,g5] a5] [[b5,c6] d6@3 ~@44] ~@13>")
  .s("gm_orchestral_harp").gain(0.27)

// drums · snare
const snare = s("sd").struct("<A@4 B C A D E F G H I J K L M N J O P Q F R S T U V ~@2 W X Y Z AA ~@6>".pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~ x!2 ~ x", C: "x!2 ~ x!2 ~@3", D: "~@11 x ~@23 x ~@12", E: "~@11 x ~@22 x ~@13",
  F: "~@5 x ~@11 x ~@6", G: "~@3 x ~@7 x ~@4", H: "~ x ~@2 x ~", I: "~@8 x ~@22 x ~@16", J: "~@7 x ~@23 x ~@16",
  K: "~ x ~@3 x ~@2", L: "~@5 x ~@23 x ~@18", M: "~@5 x ~@24 x ~@17", N: "~@6 x ~@24 x ~@16", O: "~@7 x ~@24 x ~@15",
  P: "~@8 x ~@24 x ~@14", Q: "~@9 x ~@24 x ~@13", R: "~@10 x ~@24 x ~@12", S: "~@11 x ~@24 x ~@11",
  T: "~@12 x ~@24 x ~@10", U: "~@13 x ~@23 x ~@10", V: "~@13 x ~@24 x ~@9", W: "~@5 x ~@7 x ~@2", X: "~@2 x ~@2 x",
  Y: "~@17 x ~@23 x ~@6", Z: "~@17 x ~@24 x ~@5", AA: "~@3 x ~@4",
})).gain(0.27)

// drums · hihat
const hihat = s("hh").struct("<A B C A ~@2 A D E F G H I J K L K M N H G O P Q R B S T U ~ V W X Y Z ~@6>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x", D: "x ~@16 x ~@5 x ~@23 x", E: "~@23 x ~@22 x ~", F: "~@16 x ~@5 x ~@22 x ~@2",
  G: "~@7 x ~@7 x", H: "~@7 x ~@2 x ~@11 x ~", I: "~@20 x ~@22 x ~@4", J: "~@13 x ~@5 x ~@23 x ~@4", K: "~@3 x ~@3 x",
  L: "~@11 x ~@5 x ~@23 x ~@6", M: "~@12 x ~@5 x ~@24 x ~@4", N: "~@19 x ~@24 x ~@3", O: "~@15 x ~@5 x ~@24 x ~",
  P: "~@22 x ~@24 x", Q: "~@17 x ~@5 x ~@23 x", R: "~ x", S: "~ x ~@23 x ~@22", T: "~ x ~@8 x ~@2 x ~@10",
  U: "~ x ~@22", V: "~ x ~@7 x ~@6", W: "~@2 x ~@8 x ~@2 x ~@9", X: "~@4 x ~@24 x ~@18", Y: "~@5 x ~@17 x ~@5 x ~@18",
  Z: "~@6 x ~@24 x ~@16",
})).gain(0.16)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A ~ B ~@3 A ~ C ~ D ~ E ~ F ~ F ~ G ~ D ~ H ~ A ~ I ~@3 J ~ K ~ B ~@6
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x", C: "~@17 x ~@30", D: "~@5 x ~@10", E: "~@7 x ~@16", F: "~ x ~@2", G: "~@13 x ~@34",
  H: "~ x ~", I: "~@19 x ~@28", J: "~@7 x ~@8", K: "~@23 x ~@24",
})).gain(0.05)

stack(
  piano, bass, string_ensemble_1, string_ensemble_1_soft, string_ensemble_1_2, string_ensemble_1_soft_2,
  string_ensemble_1_3, string_ensemble_1_soft_3, string_ensemble_1_4, string_ensemble_1_soft_4, string_ensemble_2,
  clarinet, flute, clarinet_2, celesta, orchestral_harp, snare, hihat, hihat_soft
)

More by Sinatra