Strudelify
Heaven Must Be Missing an Angel cover art

Heaven Must Be Missing an Angel

Heaven Must Be Missing an Angel

Tavares

KeyC majorTempo117 bpm
0:00/0:00
// Heaven Must Be Missing an Angel — Tavares
// 117 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 190 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(117/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 1"
const piano = note(`<
  ~@3 A B C B A B C D E F G H I F J K L M G H I F J F G H I F J F G H I F J F G H I F J F G H I N O N P Q R S T F G H I
  F J F G H I F J F G H I F J F G N O N P Q R U T F G H I F J V W X Y Z AA AB AC H I F J F G H I F J F G H I F J F G H I
  F J F G H I F J F G H I F J F G H I F J F G H I F J F G H I F J F G H I F AD AE G H I F J F G H I F J F G H I F J F G
  H I F J F G H I F J F G H AF
>`.pickRestart({
  A: "~@8 [g1,g3]@2 [a1,a3] ~ [c2,c4]@2 [a1,a3]@2", B: "[d2,f3,a3,d4] ~@7", C: "~@10 [g1,g3] ~ [g1,g3]@2 [a1,a3] ~",
  D: "[d2,f3,a3,d4]@2 ~@10 [a6,b6,c7] [b5,c6,d6,e6,f6,g6] [d5,e5,f5,g5,a5] [g4,a4,b4,c5]", // Dm Am Cmaj7 Dm Cmaj7
  E: "[g1,g2,g3,e4,f4] ~ [g1,g2,g3] ~@3 [g1,g2,g3] ~ [g1,g2,g3] ~@3 [g1,g2,g3] ~@3", // C G
  F: "~@2 [d4,e4,g4,d5]@2 ~ [c4,e4,g4,c5]@3 [b3,e4,g4,b4]@3 ~ [c4,e4,g4,c5]@3 ~", // Em7 C Em C
  G: "~@2 [e4,f4,a4,c5,e5]@3 [d4,f4,a4,d5]@3 [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [d4,f4,a4,d5] ~", // Fmaj7 Dm F Dm
  H: "~@2 [d4,e4,g4,d5]@3 [c4,e4,g4,c5]@2 ~ [b3,e4,g4,b4]@3 ~ [c4,e4,g4,c5]@4", // Em7 C Em C
  I: "~@2 [e4,f4,a4,c5,e5]@2 ~ [d4,f4,a4,d5]@3 [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [d4,f4,a4,d5] ~", // Fmaj7 Dm F Dm
  J: "~@2 [e4,f4,a4,c5,e5]@2 ~ [d4,f4,a4,d5]@2 ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [d4,f4,a4,d5] ~", // Fmaj7 Dm F Dm
  K: "c2 ~@7",
  L: "~@7 [d5,e5,f5,g5,a5] [b5,c6,d6,e6,f6,g6] [a6,b6] ~@2 [a6,b6,c7] [b5,c6,d6,e6,f6,g6] [d5,e5,f5,g5,a5] [g4,a4,b4,c5]", // Dm Cmaj7 Asus2 Am Cmaj7 Dm Cmaj7
  M: "[e4,f4] ~ [d4,e4,g4,d5]@2 ~ [c4,e4,g4,c5]@3 [b3,e4,g4,b4]@3 ~ [c4,e4,g4,c5]@3 ~", // Fmaj7 Em7 C Em C
  N: "~@2 [d3,d4,f4,a4,c5,e5] ~@2 [d3,d4,f4,a4,c5,e5] ~@2 [d3,d4,f4,a4,c5,e5] ~@2 [d3,d4,f4,a4,c5,e5] ~@2 [d3,d4,f4,a4,c5,e5] ~", // Dm7
  O: "~@2 [g3,d4,f4,a4,b4,d5] ~@2 [g3,d4,f4,a4,b4,d5] ~@2 [g3,d4,f4,a4,b4,d5] ~@2 [g3,d4,f4,a4,b4,d5] ~@2 [g3,d4,f4,a4,b4,d5] ~", // G7
  P: "~@2 [g3,d4,f4,a4,b4,d5] ~@2 [g3,d4,f4,a4,b4,d5] ~@2 [g3,d4,f4,a4,b4,d5] ~ [g3,d4,f4,a4,b4,d5] ~@3 [g3,d4,f4,a4,b4,d5] ~", // G7
  Q: "~@2 [e3,d4,e4,g4,b4,d5] ~@2 [e3,d4,e4,g4,b4,d5] ~@2 [e3,d4,e4,g4,b4,d5] ~@2 [e3,d4,e4,g4,b4,d5] ~@2 [e3,d4,e4,g4,b4,d5] ~", // Em7
  R: "~@2 [a3,c4,e4,g4,a4,c5] ~@2 [a3,c4,e4,g4,a4,c5] ~@2 [a3,c4,e4,g4,a4,c5] ~@2 [a3,c4,e4,g4,a4,c5] ~@2 [a3,c4,e4,g4,a4,c5] ~", // Am7
  S: "[d2,c4,d4,f4,a4] ~ [d2,c4,d4,f4,a4] ~ [d2,c4,d4,f4,a4] ~@5 [d2,c4,d4,f4,a4] ~ [d2,c4,d4,f4,a4] ~@3", // Dm7
  T: "[g2,g3,g4]@4 [f2,a3,a4]@3 ~ [e2,b3,b4]@4 [d2,c4,c5]@4", // G F E5 D7
  U: "[d2,d3,c4,d4,f4,a4] ~ [d2,d3,c4,d4,f4,a4] ~ [d2,d3,c4,d4,f4,a4] ~@5 [d2,d3,c4,d4,f4,a4] ~ [d2,d3,c4,d4,f4,a4] ~@3", // Dm7
  V: "c2@2 [d5,e5,g5,d6]@2 ~ [c5,e5,g5,c6]@3 [b4,e5,g5,b5]@3 ~ [c5,e5,g5,c6]@3 ~", // Em7 C Em C
  W: "~@2 [e5,f5,a5,c6,e6]@3 [d5,f5,a5,d6]@3 [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [d5,f5,a5,d6] ~", // Fmaj7 Dm F Dm
  X: "~@2 [d5,e5,g5,d6]@3 [c5,e5,g5,c6]@2 ~ [b4,e5,g5,b5]@3 ~ [c5,e5,g5,c6]@4", // Em7 C Em C
  Y: "~@2 [e5,f5,a5,c6,e6]@2 ~ [d5,f5,a5,d6]@3 [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [d5,f5,a5,d6] ~", // Fmaj7 Dm F Dm
  Z: "~@2 [d5,e5,g5,d6]@2 ~ [c5,e5,g5,c6]@3 [b4,e5,g5,b5]@3 ~ [c5,e5,g5,c6]@3 ~", // Em7 C Em C
  AA: "~@2 [e5,f5,a5,c6,e6]@2 ~ [d5,f5,a5,d6]@2 ~ [c5,e5,f5,a5,c6] ~ [c5,e5,f5,a5,c6] ~ [c5,e5,f5,a5,c6] ~ [a6,b6,c7] [c6,d6,e6,f6,g6]", // Fmaj7 Dm Fmaj7 Am C
  AB: "[g5,a5,b5] ~ [d4,e5,g5,d6]@2 ~ [c4,e5,g5,c6]@3 [b3,e5,g5,b5]@3 ~ [c4,e5,g5,c6]@3 ~", // G Em7 C Em C
  AC: "~@2 [e4,f5,a5,c6,e6]@3 [d4,f5,a5,d6]@3 [c4,e5,f5,a5,c6] ~@3 [c4,e5,f5,a5,c6] ~@3", // Fmaj7 Dm Fmaj7
  AD: "~@2 [e4,f4,a4,c5,e5]@2 ~ [d4,f4,a4,d5]@2 ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [b6,c7,d7] [e7,f7,g7,a7,b7,c8] [c7,d7,e7,f7,g7,a7,b7,c8] [c6,d6,e6,f6,g6,a6,b6]", // Fmaj7 Dm F Bm Cmaj7
  AE: "[a5,b5] ~ [d4,e4,g4,d5]@2 ~ [c4,e4,g4,c5]@3 [b3,e4,g4,b4]@3 ~ [c4,e4,g4,c5]@3 ~", // Asus2 Em7 C Em C
  AF: "~@2 [e4,f4,a4,c5,e5]@2 ~ [d4,f4,a4,d5]@3 ~@8", // Fmaj7 Dm
})).s("gm_piano").gain(0.39)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@11 A B C B C B C D ~ B C B C B C B C B C B C B C B C B C B C B C B C B C B E F G F H I J K L B C B C B C B C B C B C
  B C B C B C B E F G F H I J K L B C B C B C M N M N M O B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B
  C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C B C
>`.pickRestart({
  A: "g1 ~ g1 ~@3 g1 ~ g1 ~@3 g1 ~@3", B: "c2@3 ~ g1 ~ a1@2 c2@3 ~ g1 ~ a1@2",
  C: "d2@3 a1@2 ~ d2@2 g1 ~ g1 ~ g1 ~ a1@2", D: "c2 ~@7", E: "d2@3 a1@2 ~ d2@2 g1 ~ g1 ~ g1 ~ c2@2",
  F: "d2@3 ~ a1@2 c2@2 d2@3 ~ a1 ~ d2@2", G: "g1@3 ~ d2@3 ~ g1 ~ g1 ~ a1 ~ c2@2",
  H: "g2@3 ~ d2@3 ~ g2 ~ g2 ~ f#2 ~ f2@2", I: "e2@3 ~ b1@2 d2@2 e2@3 ~ b1 ~ e2@2",
  J: "a1@3 ~ e1@3 ~ a1 ~ a1@2 b1 ~ c2@2", K: "d2 ~ d2 ~ d2 ~@5 d2 ~ d2 ~@3", L: "g2 f2 e2 d2", M: "c2 ~@13 g1 ~",
  N: "d2 ~@13 g1 ~", O: "d2 ~@7 g1 ~@3 g1@2 a1@2",
})).s("gm_electric_bass_finger").gain(0.35)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@12 A@2 B@2 C D ~@11 E F G ~@8 H I J ~ J ~ J K@6 L M N O@4 ~@2 J ~ J ~ J ~@2 P F P ~ P ~ Q@6 L M N O@4 R S ~@2 T U V
  W X@8 Y@2 Z@2 Y@2 Z@2 AA@2 AB@2 AC AD AB@2 ~@10 AE AF ~@4 AG AH AI AJ AK AL ~@8 AM AN AG AO AP@4 AQ@2 AR@2 AS ~@4 AT
  AU ~@2 AT AU ~@2 AV ~ AW ~ AV ~ AW ~ AV ~ AW ~ AV ~ AW
>`.pickRestart({
  A: "[~@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@10 ~@8]/2", // G A C A
  B: "[~@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@8 [e5,e6]@2 ~ c6@2 ~ b5@2 [a4,a5]@2, ~@12 d6 ~@3]/2", // G A C A E A
  C: "[g4,g5]@7 [g4,g5] [g4,g5]@2 [a4,a5]@2 [c5,c6]@2 [d5,d6]@2", D: "[e5,e6] [f5,f6] [g5,g6]@2", E: "[a3,a4]@3 ~@5",
  F: "~@8 e6 [g5,a5,c6] [c5,e5] ~@5", G: "[a3,a4]@6 ~@2 g5!3 ~ g5 ~@3",
  H: "~@4 [b5,d6] b5 g5 e5 b5 e5 d5 [e5,g5] ~ d5 d4 [b3,b4], ~@4 g5 ~ e5 ~", I: "[a3,a4] ~",
  J: "~@7 [g3,g4]!2 ~ [a3,a4] ~ [c4,c5] ~ [a3,a4] ~", // G A C A
  K: "[~@14 [f4,g4,d5,e5] [a4,f5] c5@16 ~@44 g5 f5 [e5,f5] g5@16 ~, ~@5 g5@20 ~@7]/6", L: "a5@8 b5@4 c6@3 ~",
  M: "[f5,d6] ~ [f5,d6] ~ [f5,d6] ~@5 [f5,d6] ~ [f5,d6] ~@3", // Dm
  N: "g5 a5 b5 ~ b5@2 ~@2 c6@2 d6 ~ d6@2 e6 f6, ~@4 a5 ~@3 b5 ~@3 c6 ~@3",
  O: "[[g5,g6]@54 [f5,e6,f6] [d5,d6]@2 ~ [c5,c6]@2 ~ a5@2 ~, ~@30 b5 ~]/4", // G Fmaj7 D C
  P: "[a3,a4]@6 ~@2 [c4,c5] ~ [c4,c5] ~ [c4,c5]@2 [d4,d5] ~", // A C D
  Q: "[[a3,a4]@4 [c4,c5]@4 [d4,d5]@4 [e4,e5]@3 ~ c5@16 ~@44 g5 f5 [e5,f5] g5@16 ~, ~@5 g5@20 ~@7]/6", // A C D E Fmaj7
  R: "~@5 a5 c6 [d5,d6]", S: "[e5,e6]@4 [f5,f6] ~@5 [g5,g6] ~ [g5,g6] ~@3", T: "~@2 b4 c5", U: "a4@9 ~@7",
  V: "~@6 a5 [b5,c6,d6,e6] b4@4 c5@4", W: "a4@2 c5@2 c5 d5 e5 f5",
  X: "[g5@22 e6@2 d6@2 c6@2 ~ a5@2 g5@7 ~ [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@10 ~@6 d6@2, ~@14 b5 ~@17]/4", // G A C A
  Y: "[g5@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@10 ~@6 d6@2]/2", // G A C A
  Z: "[g5@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@10 ~@5 [e6,f6] [b5,c6,d6] ~, ~@14 g6 ~]/2", // G A C A Fmaj7 Bm
  AA: "[g5@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@5 ~ [e5,e6] ~ [d5,d6]@4 [c5,c6] ~ [b4,b5] [c5,c6] [d5,d6] ~]/2", // G A C A E D C B …
  AB: "[~@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@10 ~@6 [d5,d6] ~]/2", // G A C A D
  AC: "g5@7 [g4,g5]!2 ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@2", // G A C A
  AD: "~@4 [e5,e6] ~ [d5,d6]@2 ~@2 [c5,c6] ~ [b4,b5] [c5,c6] [d5,d6] ~", AE: "~@6 [g4,g5] [a4,a5] [c5,c6] ~@7",
  AF: "~@2 [c5,c6] [a4,a5] ~@12", AG: "[g4,g5] [a4,a5] [b4,b5] [c5,c6]",
  AH: "[d5,d6]@4 [e5,e6]@2 [c5,c6] [b4,b5] [c5,c6] ~ f5 e5 f5 e5 d5 [g3,g4]", AI: "b4 ~@13 g5@2", AJ: "a5 ~@13 a5@2",
  AK: "b5 ~@13 b5@2", AL: "c6 ~@9 [g4,g6]!3 ~@3", AM: "~ [g3,g4] [a3,a4] [c4,c5]",
  AN: "[d4,d5]@2 [e4,e5]@2 [f4,f5]@2 [a4,a5] [b4,b5]", AO: "[e5,e6] [d5,d6] [f5,f6] [a5,a6]",
  AP: "[[g5,g6]@22 [f5,f6] e6 [d5,d6]@2 [c5,c6]@2 b5@2 g5@2]/2", // G F D C
  AQ: "[[g5,g6]@22 [f5,f6] e6 [d5,d6]@2 [c5,c6]@2 b5@2 a5@2]/2", AR: "[[g4,g5]@3 [e5,e6]@4 [a4,a5]]/2", AS: "c6 ~@7",
  AT: "~@10 [c5,c6]!3 ~@3", AU: "~@14 c6 [a#5,b5]", AV: "a4@5 ~@11", AW: "a4@5 ~@7 [c5,c6]@2 [d5,d6] ~",
})).s("gm_string_ensemble_1").gain(0.48)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@15 A ~@14 B ~@18 C D E C F ~ G ~@3 H@3 ~@8 B ~@6 C D E C F ~ G ~@3 I@2 ~@5 J ~@12 K ~@3 K ~@43 L ~ L ~ M ~@2 N ~@6 O
  ~@3 O ~ P ~ P ~ P ~ P ~ P ~ P ~ P ~ P
>`.pickRestart({
  A: "~@4 d5 c5 b4 ~", B: "~@11 a4 ~@4", C: "b4", D: "c5", E: "b4@13 ~@3", F: "a4", G: "~@3 c6 ~@2 c6 d6 ~@3 e6 ~@4",
  H: "[~@6 e5 ~@6 a4@2 [g4,g5]@24 ~@9, ~@6 b4 ~@17]/3", I: "[~@6 e5 ~@6 a4@2 [g4,g5]@10 ~ a4@2 c5@2 ~@2, ~@6 b4 ~@9]/2",
  J: "~@6 g5 ~@9", K: "~@15 a5", L: "~@7 e5 ~@4 b4@2 g4@2", M: "~@7 e5 ~@4 b4@2 a4@2", N: "c5 ~@7", O: "a5 ~@15",
  P: "a3@5 ~@11",
})).s("gm_string_ensemble_1").gain(0.32)

// other · tremolo strings · "STRINGS" · B C D E
const tremolo_strings = note("<~@144 [~ [b3,b4,b5]] [[c4,c5,c6]] [[d4,d5,d6]] [[e4,e5,e6]] ~@42>")
  .s("gm_tremolo_strings").gain(0.48)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@11 A ~ B ~@3 B C ~@12 B ~@7 B ~@12 D E ~@7 B ~@18 D E ~@8 F ~@8 B ~@3 B ~ B ~ B ~ B ~@3 B ~ B ~ B ~ G ~@11 H ~@6 I J
  K L ~@27 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B
>`.pickRestart({
  A: "[g3,c4,c5] ~ [g3,c4,c5] ~@3 [g3,c4,c5] ~ [g3,c4,c5] ~@3 [g3,c4,c5] ~@3", B: "~@8 [f4,c5] ~ [f4,c5] ~ [f4,c5] ~@3",
  C: "~ b4 [g4,a4,f5,g5,a5,b5] [d5,e5] ~@12, [c5,c6] ~@7", D: "~@2 [e4,g4,d5] ~@2 [e4,g4,d5] ~@2 [e4,g4,d5] ~@7",
  E: "~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~@7", F: "[c4,c5] ~@15", G: "~@10 [c5,c6] ~ [c5,c6]@2 [d5,d6] ~",
  H: "~@2 [c5,c6] [a4,a5] ~@12", I: "~@7 g4", J: "a4 ~@13 a4@2", K: "b4 ~@13 b4@2", L: "c5 ~@15",
})).s("gm_brass_section").gain(0.56)

// other · flute
const flute = note(`<
  ~@32 A ~ A ~ A ~ B C ~@24 D ~ E ~ F G F G F G F ~@29 H@8 ~@2 H@2 ~@2 I@2 ~@10 J ~@23 E ~ E ~ E ~@15 F K F ~ F K F ~ F
  K F ~ F K F ~
>`.pickRestart({
  A: "~@8 [g3,g4]@2 [a3,a4] ~ [c4,c5]@2 [a3,a4] ~", B: "~@8 [g3,g4]@2 [a3,a4] ~ [c4,c5]@2 [d4,d5]@2",
  C: "[e4,e5]@2 [f4,f5]@2 [g4,g5]@3 ~", D: "~@6 [e3,f3,g3,a3] [b3,c4,d4,a5,b5,c6] [e4,d6,e6] [c4,d4,c6,d6] a3 ~@5",
  E: "~@6 [e3,f3,g3,a3] [b3,c4,d4,g5,a5,b5] [e4,c6,d6] [c4,d4,b5,c6] a3 ~@5", F: "g5",
  G: "g6@6 f6 e6 d6@2 c6 ~ c6@2 d6 ~", H: "[~@8 [g4,g5] ~ [a4,a5] ~ [c5,c6] ~ [a4,a5]@5 ~@13]/2",
  I: "[~@8 [g4,g5]@2 [a4,a5] ~ [c5,c6] ~ [a4,a5]@5 ~@7 c6 ~ c6@2 d6 ~]/2", J: "~@6 g5 a5 c6 ~@7",
  K: "g6@6 f6 e6 d6@2 c6@2 b5@2 a5@2",
})).s("gm_flute").gain(0.29).pan(0.3)

// other · flute · soft notes
const flute_soft = note("<~@64 A ~ B ~@87 B ~ B ~ B ~@31>".pickRestart({
  A: "~@4 g4@2 [f5,g5] ~@2 [b3,a5,b5] ~@6", B: "~@4 g4@2 [e5,f5] ~@2 [b3,g5,a5] ~@6",
})).s("gm_flute").gain(0.17).pan(0.3)

// other · tinkle bell · "TINKLEBELL"
const tinkle_bell = note(`<
  ~@12 A B A B A B ~@2 A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D E F G ~@3 H B A B A B A B A B A B A B
  A B A B A B C D E I E ~@3 H B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B
>`.pickRestart({
  A: "~@2 d7 ~@2 c7 ~@2 b6 ~@3 c7 ~@3", B: "~@2 e7 ~@2 d7 ~@2 c7 ~ c7 ~ c7 ~ d7 ~", C: "e7 ~@15", D: "~@14 g6 ~",
  E: "e6 ~@15", F: "~@15 f6", G: "g6 ~@15", H: "d7 ~@4 c7 ~@2 b6 ~@3 c7 ~@3", I: "~@12 a6 g6 e6 d6",
})).s("gm_tinkle_bell").gain(0.18).pan(0.6)

// chords · synth bass 2 · "SYN BASS 2"
const synth_bass_2 = note("<~@4 A B C@2 A B D@2 E F E F E G H ~@171>".pickRestart({
  A: "~@4 [g5,e6]@11 ~", B: "[g5,e6] [a5,f6]@2 [a5,f6]@5",
  C: "[~@4 [g5,e6]@2 [f5,d6]@2 [g5,e6]@2 [a5,f6]@3 ~ [a5,f6]@18]/2", // C Dm C Dm
  D: "[~@4 [g5,e6]@2 [f5,d6]@2 [g5,e6]@2 [a5,f6]@3 ~ [a5,f6]@14 ~@2 d6 [e6,f6]]/2", E: "g6@13 ~@3",
  F: "~@14 d6 [e6,f6]", G: "~@14 g6 [a6,b6]", H: "c7@13 ~@3",
})).s("gm_synth_bass_2").gain(0.33)

// chords · synth bass 2 · "SYN BASS 2" · soft notes
const synth_bass_2_soft = note("<~@11 A ~ A ~ A ~ B ~@172>".pickRestart({
  A: "~@12 g5 [a5,b5] c6 ~", B: "~@12 c6 [d6,e6] f6 ~",
})).s("gm_synth_bass_2").gain(0.13)

// chords · orchestral harp · "HARP"
const orchestral_harp = note(`<
  ~@11 A B ~@6 C ~@8 D ~ D ~@16 A B ~@6 E F ~@11 G ~ G ~ G ~ G ~@8 E F ~@7 G ~ G ~@12 G ~@3 G ~@25 H I ~@35 G ~ G ~ G ~
  G ~ G ~ G ~ G ~ G ~
>`.pickRestart({
  A: "~@12 [a3,b3] [c4,d4,e4,f4] [g4,a4,b4,c5,d5] [e5,f5,g5,a5,b5]", B: "[c6,d6,e6,f6,g6] ~@15",
  C: "[e6,f6,g6] [g5,a5,b5,c6,d6] [b4,c5,d5,e5,f5] [e4,f4,g4,a4] [g3,a3,b3,c4] [d4,e4,f4,g4] [a4,b4,c5,d5,e5] [f5,g5,a5] [b6,c7] [f6,g6,a6] [a5,b5,c6,d6,e6] [e5,f5,g5] [c5,d5] ~@3", // Em G Bdim Fmaj7 Cmaj7 Em7 Am F …
  D: "~@4 [d3,e3] [f3,g3,a3,b3,c4] [d4,e4,f4,g4,a4,b4] [c5,d5,e5,f5,g5,a5,b5] [c6,d6,e6,f6,g6,a6,b6] [g5,a5,b5,c6,d6,e6] [b4,c5,d5,e5,f5] [e4,f4,g4,a4] [a3,b3,c4,d4] [c3,d3,e3,f3,g3] [f2,g2,a2,b2] [d2,e2]", // Dsus2 F Em7 Cmaj7 Bdim Fmaj7 D7 C …
  E: "~@6 [a2,b2,c3] [d3,e3,f3,g3] [a3,b3,c4] [d4,e4] [e3,f3,f4] [g3,a3,b3] [c4,d4,e4] [f4,g4,a4,b4] [e4,f4,c5] [g4,a4,b4,c5]", // Am Em7 Am Dsus2 Fmaj7 G C G7 …
  F: "[d5,e5,f5] g5 ~@14", // Dm
  G: "~@4 d3 [e3,f3,g3,a3,b3] [c4,d4,e4,f4,g4] [a4,b4,c5,d5,e5,f5,g5,a5] [b5,c6,d6,e6,g6,a6,b6] [a5,b5,c6,d6,e6,f6] [c5,d5,e5,f5,g5] [f4,g4,a4,b4] [a3,b3,c4,d4,e4] [d3,e3,f3,g3] [g2,a2,b2,c3] [d2,e2,f2]", // Em C Am7 Cmaj7 Dm7 C G7 Am …
  H: "~@10 [d6,e6,f6] [g5,a5,b5,c6] [b4,c5,d5,e5,f5] [d4,e4,f4,g4,a4] [f3,g3,a3,b3,c4] [c3,d3,e3]", // Dm Cmaj7 Bdim Dm F C
  I: "[f2,g2,a2,b2] ~@15", // G7
})).s("gm_orchestral_harp").gain(0.2).pan(0.7)

// other · french horn · "FR.HORN"
const french_horn = note("<~@58 A B ~@26 A B ~@77 C D ~@23>".pickRestart({
  A: "~@6 g4 [c5,c#5] d5@4 c5@4, ~@12 c#5 ~@3", B: "a4@5 ~@3", C: "~@3 g3", D: "g4",
})).s("gm_french_horn").gain(0.52).pan(0.8)

// other · violin
const violin = note("<~@132 [~ g5 b5 d6] [e6 f6 a5@2] ~@56>").s("gm_violin").gain(0.48)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@12 A B A B A B ~ C A D E F A G A H A D A B E G A H A G A D I D A G A G E F ~@8 A B A B A B E G A G A G E G E G A G E
  F ~@8 A B A B A D A G A G A D I B A G E G A D E G A D A B A H A B E G A G A D I J K B L M K N A D A G A H A G E F A B
  O P O P O H O P O B O P O H O P O B O H O P O H O P A D A H E F A G A B A G E F A H A G I D E G A Q
>`.pickRestart({
  A: "~@2 [e4,g4,b4]@2 ~ [e4,g4,b4]@2 b3 [b3,e4,g4,b4] ~ [b3,e4,g4,b4] ~ [b3,e4,g4,b4] [e4,g4] [c4,e4,g4,c5] ~", // Em C
  B: "~@2 [f4,a4,e5]@2 ~ [f4,a4,d5]@2 ~ [g4,g5] ~ [g4,g5]!5 ~", C: "~@10 [g4,g5]!2 ~@4",
  D: "~@2 [d4,f4,c5]@2 ~ [d4,f4,a4]@2 [d4,f4] [d4,f4,c5] d4 [d4,f4,c5] ~ [d4,f4,c5] [f4,c5] [d4,f4,d5]@2", // Dm7 Dm Dm7 F5 Dm
  E: "~@2 [e4,g4,b4]@2 ~ [e4,g4,b4]@2 b3 [b3,e4,g4,b4] g4 [b3,e4,g4,b4] b3 ~ [c4,e4,g4,c5] [e4,g4] ~", // Em C Em
// … 121 more lines

More by Tavares