Strudelify
Joy to the World cover art

1989 · Naturally

Joy to the World

Three Dog Night

KeyA♭ majorTempo158 bpm
0:00/0:00
// Joy to the World — Three Dog Night
// 158 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(158/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(`<
  ~ A B C D@2 E F G E H I J K G E L D M D@2 N O P Q R S D T U V N D W X Y Z X G AA D M AB@2 AC AD AE AF AG S X G I AH AI
  AJ AK AI AL AM AJ AI AN AO AP AQ AJ@2 AR AS AT AU AV AJ AW AX@2 ~
>`.pickRestart({
  A: "ab1@2 ~ ab1@3 ab2@2", B: "ab1@3 ~@3 ab1@6 ab2@2 ~@2", C: "eb1@3 ~@3 eb1@6 eb2@4", D: "ab1@3 ~@3 c2@5 ~ eb2@3 ~",
  E: "ab1@3 ~@3 c2@6 eb2@3 ~", F: "eb1 ~@3 eb1@9 ~@3", G: "ab1@3 ~@3 c2@5 ~ eb2@2 ~@2", H: "eb1@3 ~@3 eb1@5 ~ eb2@4",
  I: "ab1@3 ~@3 c2@6 eb2@2 ~@2", J: "db1@4 ~@2 f1@4 ~@2 ab1@3 ~", K: "eb1@3 ~@3 g1@6 bb1@3 ~",
  L: "ab1@4 ~@2 ab1@6 ab2@3 ~", M: "ab1@5 ~ db2@5 ~ db2@4", N: "ab1@3 ~@3 c2@4 ~@2 eb2@3 ~",
  O: "bb1@4 ~@2 db2@6 f2 ~@3", P: "eb1@3 ~@3 eb2@6 eb1@2 ~@2", Q: "db1@4 db2@7 ~ db1 ~@3", R: "ab1@7 ~ f1@8",
  S: "ab1@2 eb1 ~", T: "ab1@2 ~@4 c2@4 ~@2 eb2@3 ~", U: "ab1@4 ~@2 c2@5 ~ eb2@4", V: "eb1 ~ eb1@4 ~@2",
  W: "eb1@3 ~@3 eb2@5 ~ eb2@4", X: "ab1@4 ~@2 c2@5 ~ eb2@2 ~@2", Y: "db1@3 ~@3 f1@4 ~@2 ab1@4",
  Z: "eb1@4 ~@2 g1@5 ~ bb1@2 ~@2", AA: "ab1@4 ~@2 ab2@5 ~ ab2@4", AB: "ab1@4 ~@2 c2@5 ~ eb2@3 ~",
  AC: "ab1@4 ~@2 c2@4 ~@2 eb2@3 ~", AD: "bb1@3 ~@3 db2@6 f2 ~@3", AE: "eb1@2 ~ eb2@3 eb1 ~",
  AF: "db1@4 db2@7 ~ db2@2 ~@2", AG: "ab1 f1", AH: "e1 ~@3 e1@9 ~@3", AI: "a1@4 ~@2 db2@5 ~ e2@2 ~@2",
  AJ: "a1@4 ~@2 db2@6 e2@3 ~", AK: "e1@4 ~@2 e2@5 ~ e2@3 ~", AL: "d1@4 ~@2 gb1@6 a1@3 ~", AM: "e1@2 ~ ab1@3 b1 ~",
  AN: "a1@5 ~ a2@5 ~ a2@4", AO: "a1@3 ~@3 db2@5 ~ e2@3 ~", AP: "a1@4 ~@2 d2@5 ~ d2@3 ~", AQ: "a1@4 ~@2 db2@5 ~ e2@3 ~",
  AR: "b1@2 ~ d2@3 gb2 ~", AS: "e1@3 ~@3 e2@5 ~ e1@2 ~@2", AT: "d1@3 ~ d2@11 ~", AU: "a1@8 gb1@7 ~",
  AV: "a1@8 e1@5 ~@3", AW: "a1@3 ~@3 db2@6 e2@2 ~@2", AX: "[a1@3 ~@3 a1@4 ~@2 a1@20]/2",
})).s("gm_acoustic_bass").gain(0.44)

// chords · piano · "Keyboard 1"
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB@2 AC AD AE AF AG AH AI@2 AJ AK AL AM AN AO@2 AP@2 AQ AR AS
  AT@3 AU AV AW AX AY AZ BA BB BC BD BE BF@2 BG BH BI BJ BK BL BM BN BO BP@2 ~
>`.pickRestart({
  A: "[ab3,c4,eb4,ab4]@5 ~ [bb3,eb4,g4]@7 ~ f4@2", B: "[ab3,c4,eb4]@5 ~ [ab3,c4,eb4] ~@9",
  C: "[ab3,c4]@5 ~ [g3,bb3]@8 ~@2, eb4@15 ~", D: "[eb3,c4] ~@5 eb3 ~@7 [ab3,db4] ~",
  E: "[eb3,c4] ~@5 [eb3,ab3,c4]@5 ~@3 [ab3,f4]@2, ~@14 db4 ~", F: "c4 ~@5 [ab3,c4,eb4]@9 ~",
  G: "[eb3,db4,f4] ~@3 [eb3,ab3,db4,f4]@10 ~@2, ab3 ~@7", H: "[ab3,c4,eb4]@3 ~@3 [ab3,c4,eb4] ~@5 [c4,eb4] ~@3",
  I: "~@2 [ab3,c4,eb4] ~@5 [ab3,eb4]@7 ~, ~@4 c4 ~@3", J: "[ab3,c4,eb4]@7 ~ [bb3,eb4]@8, ~@4 g3@3 ~",
  K: "[ab3,c4,eb4] ~@5 [ab3,c4,ab4] ~@5 [ab3,ab4]@3 ~, ~@12 c4 ~@3", // Ab
  L: "[ab3,db4,f4]@5 ~ [ab3,db4,f4]@5 ~ [ab3,db4,f4]@3 ~", M: "[g3,bb3,eb4]@5 ~ [g3,bb3,eb4]@9 ~",
  N: "[ab3,c4,eb4]@4 ~@2 [eb3,ab3,c4,eb4] ~@3 eb3 ~ [eb3,ab3]@2 [ab3,c4] ~, ~@3 eb4, ~@12 c4 ~@3", // Ab Ab5 Ab
  O: "~@2 eb3 ~ [eb3,ab3,c4,eb4]@6 eb3 ~ [eb3,c4,eb4]@2 [eb3,ab3,c4] ~, ~@12 ab3 ~@3", // Ab Cm Ab
  P: "~@4 [ab3,c4,eb4]@3 ~ [ab3,db4,f4]@4 [ab3,db4,f4]@3 ~", // Ab Db
  Q: "[ab3,c4,eb4]@5 ~ [ab3,c4,eb4] ~@3 ab3 ~ [ab3,c4,eb4]@2 [ab3,c4,eb4] ~", // Ab
  R: "~@2 ab3 ~ [ab3,c4,eb4]@3 ~ [ab3,db4,f4]@3 ~ [ab3,db4,f4]@3 ~", // Ab Db
  S: "[ab3,c4,eb4]@5 ~ [ab3,c4,eb4] ~@3 eb3 ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~", // Ab
  T: "~@2 eb3 ~ [ab3,c4,eb4] ~@3 [c4,eb4]@2 ~@2 [c4,eb4] ~ [ab3,c4,eb4] ~, ~@8 ab3 ~@3 ab3@2 ~@2", // Ab Cm Ab
  U: "~@2 eb3 ~ [c4,eb4]@6 ab3 ~ [ab3,c4] ~ ab3 ~, ~@2 ab3 ~@3 eb4 ~", V: "[ab3,bb3,f4]@5 ~ [ab3,bb3,db4,f4]@9 ~",
  W: "[ab3,db4,f4]@5 ~ [ab3,db4,f4]@9 ~", X: "[ab3,db4,f4] ~@3 [db4,f4]@6 ab3 ~ [ab3,db4,f4]@3 ~, ~ ab3 ~@2",
  Y: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4,f4]@7 ~", Z: "[ab3,c4,eb4]@7 ~@3 [g3,bb3,eb4]@5 ~",
  AA: "[c4,ab4] ~@3 eb3 ~ [c4,eb4]@4 ab3@3 ~ [db4,f4,ab4] ~, ab3@2 ~@4 ab4@7 ~@3, ~@3 ab3 ~@3 ab3", // Fm Cm Db
  AB: "[[c4,eb4,f4] ~@3 eb3 ~ [ab3,c4,eb4]@3 ~ ab3 ~ c4 ~ db4 ~ eb4 ~@3 [ab2,eb3] ~ ab4@4 ab3 ~ ab4@2 ab3 ~, ~@6 ab4@4 ~@4 [ab3,f4,ab4]@4 ~@4 ab3@2 ~@4 ab3 ~@3]/2", // F7 Ab Ab5 Db
  AC: "[ab3,db4,f4] ~@3 [ab3,db4,eb4,f4]@11 ~", AD: "[ab3,c4,eb4] ~@5 [c4,eb4]@4 ~@2 c4 ~ [c4,ab4] ~, ~@3 ab3 ~@4",
  AE: "~@2 ab3 ~ [c4,eb4]@6 ab3 ~ c4 ~@3, ~ ab3 ~@2", AF: "[ab3,c4,eb4]@7 ~ [g3,bb3,eb4]@8, ~@8 db4 ~@7",
  AG: "[ab3,c4] ~@5 eb4@4 ~@2 eb4@2 ~@2, ~@6 c4@2 ~@4 c4 ~@3, ~@6 ab3 ~@9", // Ab
  AH: "~@2 [ab3,f4] ~@3 ab3 ~ [ab3,db4]@3 ~ ab3 ~ f4 ~, ~@2 f4 ~", // Db Db5
  AI: "[eb4@2 g3 ~@3 [bb3,eb4]@4 g3 ~ g3@2 bb3@2 ab3@2 ~@4 [ab3,c4]@2 ~@2 ab3 ~ [ab3,c4,eb4] ~ [ab3,db4,f4]@2, bb3 ~@5 g3@3 ~@3 eb4@8 ~@2 eb4@4 ~@6, ~@12 bb3 ~@3 c4 ~@15]/2", // Eb5 Ab Db
  AJ: "eb4 ~@5 eb4@4 ab3 ~ [ab3,c4] ~ ab3 ~, ~@3 ab3 ~@4, ~@6 c4 ~@5 eb4@2 ~@2", // Ab
  AK: "[ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,db4,f4]@3 ~ [ab3,f4]@3 ~, ~@12 db4 ~@3", // Ab Db
  AL: "[ab3,c4,eb4] ~@5 [ab3,c4]@3 ~ ab3 ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~, ~@3 eb4@2 ~@3", // Ab
  AM: "~@2 ab3 ~ [c4,eb4]@3 ~ [ab3,f4]@3 ~ [ab3,db4,f4]@3 ~, ~@4 ab3 ~@3 db4 ~@7", // Cm Db
  AN: "eb4@4 ab3 ~ [ab3,c4,eb4] ~@3 ab3 ~ [eb4,ab4] ~ [ab3,eb4,ab4] ~, ab3 ~@5 ab3 ~, c4 ~@15", // Ab Ab5
  AO: "[~@2 ab3 ~ [c4,eb4,ab4]@3 ~ [eb4,ab4]@4 ab3@2 [ab3,c4,eb4]@4 ab3 ~ [ab3,c4,eb4] ~ c4@3 ~ ab3 ~ [ab3,c4] ~ ab3 ~, ~@4 ab3 ~@3 [ab3,c4]@2 ~@18 eb4@2 ~@2]/2", // Ab Ab5 Ab
  AP: "[[bb3,f4] ~@3 [bb3,f4]@6 ab3 ~ [bb3,f4] ~ [db4,f4]@4 ab3 ~ [ab3,db4,f4] ~ [db4,f4]@4 ab3 ~ db4 ~ ab3 ~, ab3 ~ [ab3,db4]@2 ~@3 ab3 ~@3 ab3 ~@4]/2", // Bb5 Db Db5
  AQ: "[db4,f4] ~@3 [db4,f4]@6 ab3 ~ [ab3,db4] ~ ab3 ~, ab3 ~ ab3@2 ~@2 f4 ~", // Db Db5
  AR: "[c4,eb4]@4 ab3 ~ [eb4,f4]@4 [ab3,c4] ~ [c4,eb4,f4]@2 ab3 ~, ab3@2 ~@4 [ab3,c4]@3 ~@3 ab3 ~@3", // Cm Ebsus2 Ab F7 Ab
  AS: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4]@3 ~ [bb3,eb4]@3 ~ [bb3,eb4]@4", // Ab Eb5
  AT: "[[ab3,c4,eb4,ab4] ~@5 [c4,eb4]@4 ~@2 c4 ~ [db4,f4] ~ eb4 ~@5 [c4,ab4]@4 ab3@2 c4 ~ f4@2 eb4 ~@5 [c4,ab4]@4 ab3 ~@5, ~@6 ab4@6 ~@18 db4 ~@17, ~@3 ab3 ~@3 ab3@2 ~@2 ab3 ~@3 [ab3,ab4]@2 ~@2 ab3 ~@4]/3", // Ab Cm Db Fm Ab
  AU: "[d4,e4,gb4] ~@3 [a3,d4,e4,gb4]@11 ~, a3 ~@7", AV: "[a3,db4,e4] ~@5 [b3,db4,e4]@4 a3 ~ e4 ~@3, ~@3 a3 ~@4",
  AW: "~@2 [a3,db4,e4] ~@3 a3@3 ~ a3@4 ~@2, ~@6 [db4,e4]@9 ~", AX: "[a3,db4,e4]@7 ~ [b3,e4]@8, ~@4 ab3@3 ~",
  AY: "[a3,db4,e4] ~@5 [db4,e4]@4 a3 ~ [a3,db4,e4] ~ [a3,db4,e4] ~, ~@3 a3 ~@4", // A Dbm A
  AZ: "~@2 [gb3,a3,d4]@4 gb3 ~ [gb3,a3,d4]@4 [gb3,a3,d4]@3 ~", // D
  BA: "[b3,e4] ~ e3 ~@3 [ab3,b3,e4]@4 e3@2 b3 ~@3, ab3 ~@2 e3 ~@4", // E5 E
  BB: "[a3,db4] ~ a3 ~ [d4,gb4]@2 e4@4 a3 ~ [db4,e4]@2 a3 ~, e4@2 ~@2 a3@5 ~@3 a3 ~@3", // A D Dbm
  BC: "[db4,e4]@2 ~@2 gb4@2 [db4,e4] ~@5 [db4,e4] ~ a3 ~, a3 ~ a3@5 ~@9, ~@4 d4 ~@11", // Dbm
  BD: "[a3,db4,e4]@4 ~ [a3,d4,gb4]@2 a3", BE: "[db4,e4]@2 a3 ~@3 [db4,e4]@4 a3 ~@3 a3 ~, a3 ~@5 a3@2 ~@8",
  BF: "[[db4,e4]@3 ~ [a3,db4,e4]@3 ~ [a3,d4] ~ [d4,gb4]@3 ~ [db4,e4]@4 a3 ~ [a3,db4,e4] ~ [a3,db4,e4] ~@3 a3 ~ [a3,db4] ~@3, a3 ~@9 a3@6 ~@12 e4@2 ~@2]/2", // Dbm A D5 D Dbm A
  BG: "[a3,db4,e4]@5 ~ [a3,db4,e4] ~@7 [a3,db4,e4] ~", // A
  BH: "~@2 [db4,e4]@4 a3 ~ [a3,db4,e4]@2 ~@2 [db4,e4]@2 a3 ~, ~@2 a3@2 ~@8 a3 ~@3", // Dbm A Dbm
  BI: "[a3,b3,d4,gb4] ~@5 [b3,d4,gb4]@4 a3 ~ [b3,d4,gb4]@2 a3 ~, ~@6 a3@2 ~@4 a3 ~@3", // Bm7 Bm
  BJ: "~@2 [a3,d4,gb4] ~@3 [d4,gb4]@4 a3 ~ d4 ~ a3 ~, ~@6 a3@3 ~@7", // D
  BK: "[d4,gb4] ~@3 [a3,d4,gb4]@6 a3 ~ [a3,d4,gb4] ~ a3 ~, a3 ~@7", // D
  BL: "[a3,db4,e4]@5 ~ [a3,db4,e4]@4 gb3 ~ [a3,e4]@2 ~@2, ~@6 gb3@3 ~@7", // A A5
  BM: "[a3,db4,e4] ~@3 [a3,db4,e4]@3 ~@5 [e3,ab3,b3,e4]@3 ~", // A E
  BN: "[a3,db4,e4,a4] ~@5 [db4,e4,a4]@4 a3 ~ e4 ~ [a3,gb4]@2, ~@6 a3@2 ~@6 [d4,a4] ~", // A D D5
  BO: "[a3,db4,e4] ~@5 [db4,e4,a4]@4 a3 ~@3 [a3,d4,gb4,a4] ~, ~@3 a3 ~@4", // A D
  BP: "[[db4,e4,a4] ~@5 [a3,db4,e4,a4]@2 ~@4 [a3,db4,e4]@20, a3 ~@15]/2", // A
})).s("gm_piano").gain(0.62)

// chords · piano · "Keyboard 1" · soft notes
const piano_soft = note(`<
  ~@6 A B ~ C ~ D ~@2 B E ~@4 F ~ G ~@5 H I ~ J K ~ L M ~ N O ~@2 P Q ~ R S@2 ~@3 T@2 U ~ V ~@4 W X Y ~ V Z AA ~@3 AB ~
  AC ~ AD AE ~@3
>`.pickRestart({
  A: "eb4 ~@15", B: "~@14 eb3 ~", C: "~@12 c4@3 ~", D: "~@6 eb4 ~", E: "~@7 eb4", F: "~@10 ab3 ~@5", G: "~@4 db4 ~@11",
  H: "ab4 ~@11 [ab3,ab4] ~@3", I: "~@6 eb4@3 ~@3 eb4@2 ~@2", J: "~@10 ab3 ~@3 ab3 ~", K: "~@6 ab3 ~, ~@12 eb4 ~@3",
  L: "eb4 ~@9 ab3 ~@3 ab3 ~", M: "~@12 db4 ~ [ab3,db4] ~", N: "~@4 ab3 ~@11", O: "c4 ~@15", P: "~@6 ab3 ~@9",
  Q: "~ c4 ~@6", R: "~@6 eb4@5 ~@5, ~@6 ab3@3 ~@7", S: "~@12 ab3 ~@3",
  T: "[~@10 ab3 ~@3 ab4@4 ~@4 eb4@3 ~@3 [eb4,ab4] ~@3]/2", U: "~@6 eb4@3 ~@7", V: "~@12 [a3,db4] ~@3",
  W: "~@12 e4@2 a3 ~, ~@12 ab3 ~@3", X: "~@6 db4@5 ~@3 db4 ~", Y: "~@10 a3 ~ a3 ~@3", Z: "~@2 a3 ~@13", AA: "~@14 a3 ~",
  AB: "~@6 gb4 ~", AC: "~@12 db4@2 gb3 ~", AD: "~@12 [a3,db4,a4] ~@3", AE: "a4 ~@15",
})).s("gm_piano").gain(0.39)

// chords · piano · "Keyboard 2"
const piano_2 = note(`<
  ~@16 A B A C D E F G H I J ~@12 K L M N O P Q R H S T ~@12 U V W X@2 Y Z AA AB AC AD AE AF AG ~@2
>`.pickRestart({
  A: "[ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ [ab5,db6,eb6] ~@3 [ab5,db6] ~ db6 ~", // Ab5 Absus4 Db5
  B: "[ab5,db6,eb6] ~@3 [ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ eb6 ~ eb6 ~", // Absus4 Ab5
  C: "[ab5,db6,eb6] ~@3 [ab5,db6,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~", // Absus4 Ab5
  D: "[ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ [a5,eb6] ~ eb6 ~", // Ab5 Adim
  E: "[ab5,db6,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~ [ab5,eb6] ~ eb6 ~", // Absus4 Ab5
  F: "[bb5,f6] ~@3 [bb5,f6] ~ f6 ~ [bb5,f6] ~@3 [bb5,f6] ~ f6 ~", // Bb5
  G: "ab5@2 db6 ~ [ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~, db6 ~@15", // Db5
  H: "[ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~", // Db5
  I: "[ab5,db6,eb6] ~@3 [ab5,eb6] ~ c6 ~ [ab5,c6] ~@3 [ab5,c6] ~ c6 ~", // Absus4 Ab5 Ab
  J: "ab5@2 ~@2 [ab5,eb6] ~ eb6 ~ [bb5,eb6] ~@3 [bb5,db6,eb6] ~ bb5 ~, eb6 ~@15", // Ab5 Eb5 Eb7
  K: "[ab5,eb6,ab6] ~ eb6 ~ [ab5,eb6,ab6] ~@3 [ab5,db6,ab6] ~@3 [ab5,db6,ab6] ~ db6 ~", // Ab5 Db5
  L: "[ab5,ab6] ~@3 [ab5,ab6] ~@3 [ab5,eb6,ab6] ~ eb6 ~ [ab5,eb6,ab6] ~ eb6 ~", // Ab Ab5
  M: "[ab5,eb6,ab6] ~ eb6 ~ [ab5,eb6,ab6] ~ eb6 ~ [ab5,db6,ab6] ~ db6 ~ [db6,ab6] ~ db6 ~, ~@6 ab5 ~", // Ab5 Db5
  N: "[ab5,eb6,ab6] ~@3 [ab5,eb6,ab6] ~@3 [ab5,ab6] ~@3 [ab5,ab6] ~@3", // Ab5 Ab
  O: "[ab5,eb6,ab6] ~ eb6 ~ [ab5,ab6] ~@3 [ab5,ab6] ~ eb6 ~ [eb6,ab6] ~ eb6 ~, ~@6 ab5 ~", // Ab5 Ab Ab5
  P: "[ab5,ab6] ~ [eb6,ab6] ~ [ab5,eb6,ab6] ~@3 ab5@2 ~@2 [ab5,ab6]@3 ~, ~@8 ab6 ~@7", // Ab Ab5 Ab
  Q: "bb5@2 f6 ~ bb5@2 ~@2 bb5@2 f6 ~ [bb5,f6]@3 ~, f6 ~@3 f6 ~@3 f6 ~@7", // Bb5
  R: "ab5@2 ~@2 [ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~ [ab5,db6] ~ db6 ~, db6 ~@15", // Db5
  S: "[ab5,eb6] ~@3 [ab5,eb6] ~ ab5@2 f6 ~ f6 ~ ab5@2 f6 ~, ~@6 f6 ~@5 f6 ~@3", // Ab5
  T: "ab5@2 eb6 ~ ab5@2 eb6 ~ [bb5,db6,eb6] ~@3 [bb5,db6,eb6] ~ [bb5,eb6] ~, db6 ~@3 eb6 ~@11", // Eb7 Eb5
  U: "[a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~ [a5,d6] ~ d6 ~ [a5,d6] ~ d6 ~", // A5 D5
  V: "[a5,e6] ~ e6 ~ a5@2 e6 ~ [a5,e6] ~ [a5,e6] ~ [a5,e6] ~ e6 ~, ~@4 eb6 ~@11", // A5
  W: "[a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~ [d6,g6,a6] ~ d6 ~ [d6,a6] ~ d6 ~", // A5 Dsus4 D5
  X: "[a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~", // A5
  Y: "[eb6,e6] ~ e6 ~ [a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~, a5 ~@7", // Emaj7 A5
  Z: "[b5,gb6] ~ gb6 ~ [b5,gb6] ~ gb6 ~ [b5,gb6] ~ gb6 ~ [b5,gb6] ~ gb6 ~", // B5
  AA: "[a5,gb6] ~ gb6 ~ [a5,gb6] ~ gb6 ~ [a5,gb6] ~ gb6 ~ [a5,gb6] ~ gb6 ~", // D
  AB: "[d6,gb6] ~@3 [d6,gb6] ~ d6 ~ [d6,gb6] ~ [d6,gb6] ~ d6 ~ [d6,gb6] ~", // D
  AC: "[a5,e6] ~ e6 ~ [a5,e6] ~ [a5,db6] ~ db6 ~ db6 ~ [a5,db6] ~ db6 ~", // A5 A
  AD: "[a5,e6] ~@3 [a5,e6] ~ e6 ~ [b5,e6] ~ b5 ~ [b5,e6] ~ b5 ~", // A5 E5
  AE: "[a5,e6,a6] ~ [e6,a6] ~ [a5,e6,a6] ~ [e6,a6] ~ e6 ~ e6 ~ [a5,e6,a6] ~ [a5,a6]@2, ~@6 a5@2 ~@6 eb6 ~", // A5 A
  AF: "~@2 e6 ~ [a5,e6,a6] ~ e6 ~ [a5,e6,a6] ~ e6 ~ [a5,e6,a6] ~ [e6,a6] ~", // A5
  AG: "[a5,e6,a6] ~@5 [a5,e6,a6] ~@5 [a5,e6,a6]@3 ~", // A5
})).s("gm_piano").gain(0.53)

// chords · piano · "Keyboard 2" · soft notes
const piano_soft_2 = note("<~@17 A ~ B ~@2 C ~@3 D ~@12 E F G H I J K L ~ M N ~@13 O P ~@5 Q R S T ~@4>".pickRestart({
  A: "~@2 eb6 ~@9 bb5 ~@3", B: "~@2 eb6 ~@13", C: "~@2 f6 ~@7 f6 ~@3 bb5 ~", D: "~@2 eb6 ~@7 eb6 ~@3 eb6 ~",
  E: "~@2 ab6 ~@13", F: "~@2 [ab5,ab6] ~@3 ab6 ~@3 [ab5,ab6] ~@3 [ab5,ab6] ~", G: "~@2 [ab5,ab6] ~@3 ab6 ~@9",
  H: "~@2 eb6 ~@3 [eb6,ab6] ~@3 eb6 ~ eb6 ~ eb6 ~", I: "~@2 ab6 ~@3 eb6 ~@9", J: "~@2 ab5 ~@3 ab6 ~@9",
  K: "~@6 f6 ~@7 f6 ~", L: "~@2 db6 ~@13", M: "~@2 eb6 ~@5 ab5@2 ~@6", N: "eb6 ~@15", O: "~@2 a5 ~@13", P: "~@14 a6 ~",
  Q: "~@2 [d6,gb6] ~@13", R: "~@8 a5 ~@7", S: "~@2 e6 ~@13", T: "~@2 a5 ~@7 a5 ~@5",
})).s("gm_piano").gain(0.23)

// chords · rock organ · "Keyboard 3"
const rock_organ = note(`<
  ~ A@6 B C@2 D E F G C@2 H C I C@3 J F K L M N@3 B C O P C F G O@2 I C I Q O@2 R S T U V W@3 X Y@2 Z AA AB AC Y@2 AD Y
  AE Y@3 AF AG X AH Z AI@3 ~@2
>`.pickRestart({
  A: "[ab5@20 bb5@4 ab5@23 ~, eb6@95 ~]/6", B: "[ab5,db6] ~@3 [ab5,db6]@11 ~", C: "[ab5,c6,eb6] ~@5 [ab5,c6,eb6]@9 ~",
  D: "[ab5,c6,eb6] ~@7 [bb5,eb6]@8", E: "[ab5,c6,eb6] ~@5 [ab5,eb6]@9 ~, ~@6 c6@7 ~@3",
  F: "[ab5,db6,f6] ~@5 [ab5,db6,f6]@9 ~", G: "[g5,bb5,eb6] ~@5 [g5,bb5,eb6]@9 ~",
  H: "[c6,eb6]@5 ~@3 [ab5,db6,f6]@7 ~, ab5@7 ~@9", I: "[ab5,c6,eb6]@7 ~ [ab5,db6,f6]@7 ~",
  J: "[ab5,bb5,db6] ~@5 [ab5,bb5,db6]@9 ~", K: "[ab5,db6,f6]@4 [ab5,db6,f6]@11 ~", L: "[ab5,c6,eb6]@8 [ab5,c6]@7 ~",
  M: "[ab5,c6]@6 ~@2 [g5,bb5]@7 ~", N: "[[ab5,eb6]@47 ~]/3", O: "[ab5,c6,eb6] ~@5 [ab5,c6,eb6]@8 ~@2",
  P: "[ab5,c6,eb6]@7 ~ [bb5,eb6]@7 ~", Q: "[ab5,c6,eb6]@5 ~ [ab5,c6,eb6] ~@9",
  R: "[ab5,bb5,db6] ~@5 [ab5,bb5,db6]@8 ~@2", S: "[ab5,db6,f6] ~@5 [ab5,db6,f6]@8 ~@2",
  T: "[ab5,db6,f6] ~@3 [ab5,db6,f6]@10 ~@2", U: "[ab5,c6,eb6]@5 ~ [ab5,c6,f6]@8 ~@2", V: "[ab5,eb6]@7 ~ [bb5,eb6]@7 ~",
  W: "[[ab5,eb6]@23 ~]/3", X: "[a5,d6] ~@3 [a5,d6]@11 ~", Y: "[a5,db6,e6] ~@5 [a5,db6,e6]@8 ~@2",
  Z: "[a5,db6,e6]@7 ~ [b5,e6]@7 ~", AA: "[a5,db6,e6] ~@5 [a5,db6,e6]@9 ~", AB: "a5 ~@2 [gb5,a5,d6]@4 ~, d6 ~@15",
  AC: "[ab5,b5,e6] ~@5 [ab5,b5,e6]@8 ~@2", AD: "[a5,db6,e6]@7 ~ [a5,d6]@7 ~", AE: "[a5,db6,e6]@7 ~ [gb5,a5,d6]@7 ~",
  AF: "[a5,b5,d6] ~@5 [a5,b5,d6]@8 ~@2", AG: "[a5,d6] ~@5 [a5,d6]@8 ~@2", AH: "[a5,db6,e6]@5 ~ [gb5,a5,db6]@9 ~",
  AI: "[[a5,db6,e6] ~@5 [a5,e6]@36 ~@2 [a5,e6]@3 ~]/3", // A A5
})).s("gm_rock_organ").gain(0.35).pan(0.6)

// other · alto sax · "Sax 1"
const alto_sax = note("<~ A B@3 ~@22 C D@3 ~@19 E@2 F G ~@6 H I ~@11 J K@4>".pickRestart({
  A: "d4 eb4 ab4 d4 eb4 ab4 d4 eb4", B: "[ab4 d4 eb4 ab4@7 db4 d4 eb4 b3 bb3 ab3@7 ~@2]/3", C: "b4@7 bb4",
  D: "[ab4 bb4 ab4@7 ~ eb4 d4 db4 b3 bb3 ab3@7 ~@2]/3", E: "[b4@5 ~ b4@7 ~ b4@8 bb4@2 ab4@2 bb4@2 ab4@2 eb4@2]/2",
  F: "ab4@3 ~ ab4@12", G: "a4@4 a3@11 ~", H: "~@3 e4 g4 ~ g4 ~ g4 ~ g4 ~ g4 e4 [e4,g4] ~, ~@5 e4@3 ~ e4@3 ~@4",
  I: "g4 e4 g4 ~@13", J: "eb4 e4 a4 eb4 e4 a4 eb4 e4", K: "[a4@7 c5@15 a4@6 ~ a3@20 ~@15]/4",
})).s("gm_alto_sax").gain(0.6).pan(0.4)

// other · baritone sax · "Sax 2"
const baritone_sax = note("<~@4 A@2 B C ~@19 B D@2 E ~@19 D A F G ~@8 H@2 I@3 ~ J K L M N O P Q@2 ~>".pickRestart({
  A: "ab2@2 ~@4 c3@5 ~ eb3 ~@3", B: "ab2@2 ~@4 c3@6 eb3 ~@3", C: "eb2 ~@3 eb2@7 ~@5", D: "ab2 ~@2 c3@3 eb3 ~",
  E: "eb2 ~@3 eb2@10 ~@2", F: "ab2 ~@2 c3@3 eb3@2", G: "e2 ~@3 e2@11 ~", H: "a2@15 ~", I: "[a2@15 ~]/3", J: "b2",
  K: "e2@7 ~", L: "d2@4 d3@11 ~", M: "a2@7 ~ gb2@8", N: "a2 e2", O: "a2@2 ~@4 db3@5 ~ e3@2 ~@2", P: "a2 ~@2 db3@3 e3 ~",
  Q: "[a2 ~@5 db3@2 ~@4 a2@19 ~]/2",
})).s("gm_baritone_sax").gain(0.48).pan(0.7)

// chords · brass section · "Brass"
const brass_section = note("<~@54 A B C B D E F G H G I J G K L M N O P Q R S ~@2>".pickRestart({
  A: "[e4,a4] ~@5 [a3,e4,a4]@8 ~@2, a3 ~@7", B: "[a3,e4,a4] ~@5 [a3,e4,a4]@9 ~", C: "[d4,a4] ~@5 [d4,a4]@9 ~",
  D: "[d4,a4] ~@5 [d4,gb4,a4]@9 ~", E: "[e4,b4] ~@5 b4@10, ~@6 e4@7 ~@3", F: "[a3,e4,db5] ~@5 [a3,e4,db5]@9 ~",
  G: "[a3,e4,db5] ~@5 [a3,e4,db5]@8 ~@2", H: "[a3,db5] ~@7 [d4,a4,d5]@7 ~, e4 ~@7",
  I: "[a3,e4,db5]@3 ~@5 [d4,a4,d5]@7 ~", J: "[a3,db5] ~@5 [a3,e4,db5]@8 ~@2, e4 ~@7",
  K: "[a3,e4,db5] ~@5 [a3,db5]@9 ~, ~@6 e4@7 ~@3", L: "[b3,gb4,d5] ~@5 [b3,gb4,d5]@9 ~",
  M: "[a4,d5] ~@5 [d4,a4,d5]@9 ~", N: "a4@2 ~@2 [d4,gb4,a4]@11 ~, d4 ~@15", O: "[e4,a4]@7 ~ [gb3,gb4,a4]@7 ~, a3 ~@3",
  P: "[e4,a4]@7 ~ [e4,ab4]@7 ~", Q: "[a3,e4,a4] ~@5 [a3,e4,a4]@10", R: "[a3,e4,a4] ~@5 [a3,e4,db5]@9 ~",
// … 74 more lines

More by Three Dog Night