Strudelify

Let Me Serenade You

Three Dog Night

KeyA♭ majorTempo111 bpm
0:00/0:00
// Let Me Serenade You — Three Dog Night
// 111 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 F G H I J K L M N O P Q R S T U V W X Y Z AA AB N O P Q R S T U V W X Y Z AC AD AE AF AG AH AI AF AJ AK AL
  AM AN AO AP AQ AR AS AT AU AV AU AP AW AP AX AY AM AN AO AP AQ AR AS AT AU AV AU AP AW AP AZ BA ~
>`.pickRestart({
  A: "~@23 bb3, ~@11 ab3",
  B: "ab3@5 ~ ab3@4 ab1 ~ [gb1,gb2,bb3]@4 ~@4 ab3@2 bb3@2, [ab2,c4]@10 ~@2 gb3@3 ~ gb3@5 ~@3, ab1@8 ~@10 [gb1,gb2]@5 ~", // Gb Ab Gb
  C: "[ab3,db4,f4]@2 ~@3 db3 db2 [db3,db4,f4,ab4,db5] db2 d2 [d3,d4,gb4,a4,d5] d2, db2@5 ~@7, db3 ~@2, ~ [db4,f4,ab4,db5] ~@2", // Db D Db
  D: "[eb4,g4,bb4,eb5]@5 ~ [g4,bb4,eb5]@4 eb4 ~ [ab3,db4,f4]@3 ~ [db4,f4,ab4] ~ [db4,f4,ab4]@4 ~@2, [eb2,eb3]@10 ~@2 [db2,db3]@9 ~@3, ~@2 eb4 ~@5", // Eb Db Eb Db
  E: "[c4,eb4,ab4]@6 ab3@5 ~ ab3@3 ~ ab3 ~ ab3 ~ ab3 ~ ab3@2, ab2@23 ~, ab1@16 ~@2 ab1@5 ~", // Ab
  F: "[eb3,ab3]@5 ~ [eb3,ab3]@5 ~@5 bb3@3 ~ bb1@2 [c2,gb3,bb3]@2, [ab1,c4]@11 ~ gb1@8 ~@4, ~@2 gb3 ~, ~@2 db3", // Ab5 Cm7b5 Ab
  G: "~@3 [f4,ab4,db5]@2 ~@2 f4 ab4 ~ gb4 a4, [db2,db4]@5 db2@4 d2@3, ~@6 db4@2 ~ d4@2 ~", // Db
  H: "[eb4,g4,bb4,eb5]@5 ~ [g4,bb4,eb5]@4 eb4 ~ [ab3,db4,f4]@3 ~ [db4,f4] ~ [db4,f4]@2 ~@4, eb2@11 ~ db2@11 ~, ~@6 eb4@3 ~@7 ab4@5 ~@3", // Eb Db
  I: "~@16 ab4@2 ab3 ~ [ab3,c4] ~ ab3 ~, c4@19 ~@5, [eb4,ab4]@7 ~@5, ab1@9 ~ ab1@12 ~@2, ~@3 ab3@5 ~@4", // Ab Ab5
  J: "~@3 [c4,eb4]@2 ~@5 bb1 [c2,gb3], ab1@11 ~ gb1@8 ~@4, ab3@9 ~@3 gb3@6 ~@2 gb3 ~@3, ~@16 [bb3,db4]@7 ~", // Cm Cdim Bbm
  K: "db4@3 [f4,ab4,db5]@2 ~ db4 f4 ab4 ~ gb4 a4, db2@9 ~ db2@8 d2@6, ~@9 d4@2 ~", // Db
  L: "[eb4,g4,bb4,eb5]@5 ~ [g4,bb4,eb5]@4 eb4@2 [ab3,db4]@3 ~ ab4@2 [db4,f4,ab4]@3 ~ db2@2, eb2@2 [db2,f4] ~, ~@6 eb4@3 ~@7 db4 ~@7", // Eb Db5 Db
  M: "[c4,eb4,ab4]@3 ab3@2 ~ ab3 [eb2,eb3] [f2,f3] [ab2,ab3]@2 f2, [ab1,ab2]@13 ~@9 f3 ~", // Ab Eb F Ab
  N: "[ab3,c4,eb4]@4 ~@2 [c4,eb4]@4 ab3@2 [bb3,db4]@4 gb3@2 [bb3,db4]@2 [bb1,gb3]@2 [bb3,db4] ~, ab1@11 ~ gb1@8 ~@2 c2@2, ~@2 ab3 ~@5", // Ab Cm Bbm Ebm Bbm
  O: "[f3,ab3,db4]@5 ~@3 ab4@2 ~@2 db4@2 ~@2 [db2,db4,f4,ab4,db5]@2 [d2,d4,d5]@6, db2@8 ~@2 db2@5 ~@9, ~@3 [db4,f4,db5]@3 ~@3 [gb4,a4]@2 ~", // Db D Db Gbm
  P: "[eb4,g4,bb4,eb5]@5 ~ [eb4,g4,bb4,eb5]@5 ~@5 [bb3,db4,eb4]@2 [bb3,db4,eb4]@4 ~@2, eb2@11 ~ db2@12, ~@16 ab4@7 ~", // Eb Eb7
  Q: "ab1@6 ~@2 eb2@2 f2@2 [ab2,ab3]@4 ab3 ~ ab2@2 ab3 ~ ab3 ~, ab3@5 ~ [c4,eb4,ab4]@5 ~@7 ab3 ~@5", // Ab
  R: "ab3@4 ~@2 ab3@3 ~@3 [bb3,db4,gb4]@5 ~@3 bb1@2 c2@2, ab1@3 gb1@2 ~, ~@9 [bb3,db4,gb4]@2 ~", // Gb
  S: "[ab3,db4,f4]@5 ~ [f4,ab4,db5]@4 ~@6 d4@2 [gb4,a4,d5]@2 ~@2 [gb4,a4,d5]@2, db2@9 ~ db2@8 d2@6, ~@5 d4", // Db D
  T: "[eb4,g4,bb4,eb5]@5 ~ [eb4,g4,bb4,eb5]@4 ~@2 db4@4 [f4,db5]@2 [f4,ab4,db5]@3 ~@3, eb2@11 ~ db2@11 ~, ~@16 ab4 ~@7", // Eb Db
  U: "[c4,eb4,ab4]@4 ~@6 ab1@5 ~ [ab1,ab3]@2 [bb1,bb3]@4 ~@2, ab1@3 ~@5, ~@3 [c4,eb4,ab4]@5 ~@4", // Ab Bb Ab
  V: "[g3,bb3,eb4]@4 ~@2 [eb4,g4,eb5]@4 eb2@2 db2@6 [db4,f4,ab4,db5]@3 ~ db2@2, eb2 ~@2, ~@3 bb4 ~@2 db4@2 ~@4", // Eb Db
  W: "[c4,eb4,ab4]@3 ~@3 [c4,eb4,ab4]@4 eb2@2 ab3@2 ~@2 eb2@2 ab2@3 ~ ab2@2, ab1@10 ab3 ~ ab2@4 ~@8, ~@14 bb3@5 ~@5", // Ab
  X: "eb4@2 ~ [eb4,g4,bb4,eb5]@2 eb2 db2@3 [db4,f4,ab4,db5]@2 db2, eb2@8 ~@4 db4@3 ~@9", // Eb Db
  Y: "[c4,eb4,ab4]@6 ab3@4 ~@2 ab3@3 ~ ab1@2 eb2@5 ~, ab1@10 c2@6 ab3 ~ ab3@2 ~@4", // Ab
  Z: "[g3,bb3,eb4]@5 ~ [eb4,g4,bb4,eb5]@4 eb2@2 ~@4 [f4,ab4,db5]@6 db2@2, eb2@4 ~@2 db4@5 ~, ~@12 db2@7 ~@5", // Eb Db
  AA: "[c4,eb4,ab4]@4 ~@2 [c4,eb4,ab4]@4 ab1 ~ [c4,eb4,ab4]@4 ab1@2 [db4,f4,ab4,db5]@4 db2@2, ab1@3 ~ ab1 ~@3", // Ab Db
  AB: "[eb2,eb4,g4,eb5], bb4@11 ~", // Eb
  AC: "[c4,eb4,ab4]@4 ~@2 [c4,eb4,ab4]@4 ab1 ~ [c4,eb4,ab4]@4 ab1@2 [db4,f4,ab4]@3 ~@3, ab1@9 ~@3 ab1@3 ~@3 [db2,db5]@5 ~", // Ab Db
  AD: "[eb2,eb4,g4,bb4,eb5]@10 eb2 ~ [f4,ab4,c5,f5]@4 ~@2 [eb4,g4,bb4,eb5]@5 ~, ~@12 eb2@3 ~ eb2@6 ~@2", // Eb Fm Eb
  AE: "[db2,db4,f4,ab4,db5]@2 ~@2 [db2,db4,f4,ab4,db5]@5 ~ ab1@7 ~ ab1@2 a1@4, ~@5 [c4,eb4,ab4,c5]@7", // Db Ab
  AF: "[bb1,ab3,bb3,db4,f4]@4 bb1@2 [ab3,bb3,db4,f4]@4 f2@2 [bb2,ab3,bb3,db4,f4]@4 bb2@2 [f2,ab3,bb3,db4,f4]@3 ~ f2@2, ~@3 f2 ~@8", // Bbm7
  AG: "[bb3,eb4,g4]@2 ~ [bb3,eb4,g4]@2 ~ [eb2,bb3,eb4,g4]@2 ~ eb2 d2 db2, eb2@6 bb1@6 ~@6 [bb3,eb4,g4]@5 ~", // Eb
  AH: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@4 g1@2 [c2,bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~@3, c2@8 ~@10 c2@5 ~", // Eb Cm7 Eb
  AI: "[db2,ab3,db4,f4]@4 ~@2 [db2,ab3,db4,f4]@4 ~@2 [db2,ab3,db4,f4]@4 db2 ~ [db2,ab3,db4,f4]@2 c2@2 b1@2", // Db
  AJ: "[eb2,bb3,eb4,g4]@4 ~@2 [bb1,bb3,g4]@5 ~ [bb3,eb4,g4]@4 ~@2 [eb2,bb3,eb4,g4]@2 d2@2 db2@2, ~@6 eb4@3 ~@3 eb2@2 ~@10", // Eb
  AK: "[g3,bb3,c4,eb4]@4 ~@2 [g2,g3,eb4]@5 ~ [g3,bb3,c4,eb4]@4 ~@2 [g2,g3,bb3,c4,eb4]@4 ~@2, c2@2 [bb3,c4] ~ c3@2 ~@2", // Cm7 Cm Cm7 Bbsus2
  AL: "[db2,db4,f4,ab4] ~ [db2,db4,f4,ab4] ~ [db2,db4,f4,ab4] ~ [db2,db4,f4,ab4] ~ [db2,db4,f4,ab4] ~ [db2,db4,f4,ab4] ~ [eb2,bb3,eb4,g4] ~ [eb2,bb3,eb4,g4] ~ [eb2,bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [eb2,bb3,eb4,g4] ~, ~@9 eb2 ~@2", // Db Eb
  AM: "[ab2,c4,eb4,ab4]@2 ~ [ab2,c4,eb4]@2 eb2 [gb2,bb3,db4,gb4]@2 ~ [gb2,bb3,db4,gb4]@2 c2, ~@2 ab4 ~@5", // Ab Gb
  AN: "~@2 db2@2 db2@2 [ab3,db4,f4]@4 f2@2 [ab3,db4,f4]@4 gb2@2 [g2,ab3,db4,f4]@3 ~ g2@2, [ab3,db4,f4]@2 ~ f2 ~@2 gb2 ~@5", // Db
  AO: "[ab2,c4,eb4,ab4]@2 ~ [ab2,c4,eb4,ab4]@2 eb2 gb2 db2 bb1 [gb1,bb3,db4,gb4]@2 ~, ~@12 [bb3,db4,gb4]@5 ~@7", // Ab Gb
  AP: "[ab3,db4,f4]@4 db2@2 [ab3,db4,f4]@4 f2@2 [ab3,db4,f4]@4 gb2@2 [g2,ab3,db4,f4]@3 ~ g2@2, db2 ~@2 f2 ~@2 gb2 ~@5", // Db
  AQ: "[c4,eb4,ab4]@4 ~@2 [c4,eb4,ab4]@3 ~ ab2@2 [bb3,db4,gb4]@4 gb2 ~ [gb2,bb3,db4,gb4]@2 b1@2 c2@2, ab2 ~ ab2@2 ~@2 gb2 ~@5", // Ab Gb
  AR: "[db2,ab3,db4,f4]@4 ab1@2 [db2,ab3,db4,f4]@4 ab1@2 [db2,ab3,db4,f4]@4 ab1@2 [d2,a3,d4,gb4]@5 ~", // Db D
  AS: "[eb2,bb3,eb4,g4]@4 ~@2 [eb2,bb3,eb4,g4]@5 ~ [db2,ab3,db4,f4]@4 ~@2 [ab3,db4,f4]@5 ~, ~@9 db2 ~@2", // Eb Db
  AT: "[ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,c4,eb4,ab4] ~ [ab1,eb4,ab4] ~, ~@11 c4", // Ab Ab5
  AU: "[ab2,c4,eb4,ab4]@4 eb2@2 [ab2,c4,eb4,ab4]@4 eb2@2 gb2@2 db2@2 bb1@2 [bb3,db4,gb4]@3 ~@3, ~@12 [bb3,db4,gb4]@4 ~@2 gb1@5 ~", // Ab Gb
  AV: "[ab3,db4,f4]@4 db2@2 [f2,ab3,db4,f4]@4 f2@2 [ab3,db4,f4]@4 gb2@2 [g2,ab3,db4,f4]@3 ~ g2@2, db2 ~@5 gb2 ~@5", // Db
  AW: "[ab2,c4,eb4,ab4]@2 eb2 [ab2,c4,eb4,ab4]@2 eb2 gb2 db2 bb1 [gb1,bb3,db4,gb4]@2 ~, ~@3 [bb3,db4,gb4] ~@2", // Ab Gb
  AX: "[eb2,g3,bb3,eb4]@4 ~@2 [g3,bb3,eb4]@3 ~@3 [db2,ab3,db4,f4]@4 ~@2 [ab3,db4,f4]@3 ~@3, ~@6 eb2@6 ~@6 db2@5 ~", // Eb Db
  AY: "[ab1,c4,ab4]@5 ~ [ab1,c4,eb4,ab4]@4 ~@2 [ab1,c4,eb4,ab4]@4 ~@2 [ab1,c4,eb4,ab4]@4 ~@2, eb4 ~@7", // Ab
  AZ: "[eb2,g4,bb4,eb5]@3 ~ [bb4,eb5] ~@5 [g4,bb4,eb5] ~ [db2,f4,ab4,db5]@4 [f4,db5]@2 db2@5 ~, ~@4 g4@2 eb2@6 ~@4 ab4 ~@7", // Eb Eb5 Eb Db
  BA: "ab1@5 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@2, [eb4,ab4,c5]@23 ~", // Ab
})).s("gm_piano").gain(0.38).pan(0.6)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B C D E B F G E H I G J K L M N O P Q R Q S T H I G J K L M N O P Q R Q U V W X Y Z AA X Y AB AC AD AE AF AG AH
  AI AJ AK AD AE AF AG AH AI AJ AK AD AE AF AG AH AI AJ AK AD AE AF AG AH AI AJ AL AM
>`.pickRestart({
  A: "~@8 ab1 gb1@2 g1", B: "ab1@7 ~@3 ab1@2 gb1@6 ~@2 bb1@2 c2@2", C: "db2@8 ~@2 db2@4 ~@2 db2@2 d2@5 ~",
  D: "eb2@9 ~@3 db2@4 db2@2 db2@2 ~@2 db2@2", E: "ab1@7 ~@3 ab1@3 ~@3 ab1@2 f1@4 gb1@2",
  F: "db2@7 ~@3 db2@2 db2@4 db2@2 d2@5 ~", G: "eb2@7 ~@3 eb2@2 db2@6 ~@4 db2@2", H: "ab1@10 ~@2 gb1@7 ~ bb1@2 c2@2",
  I: "db2@8 ~@2 db2@5 ~ db2@2 d2@5 ~", J: "ab1@9 ~ eb2@2 ~@4 f2@2 ab2@4 eb2@2",
  K: "ab1@7 ~@3 ab1@2 gb1@3 ~ gb1@2 ~@4 c2@2", L: "db2@2 db2@2 ~ db2@3 db2 d2@2 ~",
  M: "eb2@4 eb2@2 eb2@5 ~ db2@4 db2@2 db2@4 ~@2", N: "ab1@4 ab1@3 ~@3 ab1@3 ~@3 ab1@2 bb1@6",
  O: "eb2@8 ~@2 eb2@2 db2@4 db2@3 ~@3 db2@2", P: "ab1@5 eb2 ~@2 eb2 ab2@2 db2",
  Q: "eb2@4 eb2@2 eb2@2 ~@2 eb2 ~ db2@4 db2@2 db2@2 ~@2 db2 ~", R: "ab1@4 ab1@2 ab1@3 ~ ab1@2 ~@4 ab1@2 c2@4 db2 ~",
  S: "ab1@2 ab1!2 ~ ab1 ~@2 ab1 c2@2 db2", T: "eb2@17 ~ bb1@4 ~@2", U: "ab1@2 ab1!2 ~ ab1 ~@2 ab1 db2@2 db2",
  V: "eb2@2 eb2!2 ~ eb2 eb2@2 eb2!2 ~ eb2", W: "db2@4 db2@2 ~@4 ab1@5 ~ ab1@2 ab1@4 ab1@2",
  X: "bb1@2 bb1 f2@2 f2 bb1@2 bb1 f2@2 f2", Y: "eb2@4 eb2@2 bb1@4 bb1@2 eb2@4 eb2 ~ eb2@2 d2@2 db2@2",
  Z: "c2@4 c2@2 g1@4 g1@2 c2@4 c2@2 c2@4 c2 ~", AA: "db2@4 db2@2 ab2@3 ~ ab2@2 db3@2 eb3@2 f3@2 eb3@2 db3@2 ab2@2",
  AB: "c2@2 c2 g2@2 g2 c2@2 c2 g2@2 ~", AC: "db2 f2 ab2 db3 ab2 db3 eb2 g2 bb2 eb3 bb2 eb3",
  AD: "ab1@4 ab1@2 ~@4 ab1@2 gb1@4 gb1@3 ~@3 gb1@2", AE: "db2@2 db2 f1@2 f1 gb1@2 gb1 g1@2 g1",
  AF: "ab1@2 ab1 ~@2 ab1 gb1@2 gb1 ~@2 gb1", AG: "db2@2 db2 f2@2 f2 gb2@2 gb2 g2@2 g2",
  AH: "ab2@4 ab2@3 ~@3 ab2@2 gb2@4 gb2@3 ~@3 gb2@2", AI: "db2@4 db2@2 ~@4 db2 ~ db2@4 db2@2 d2@4 d2@2",
  AJ: "eb2@2 eb2 ~@2 eb2 db2@2 db2 ~@2 db2", AK: "ab1@2 ab1@2 ab1@2 ab1 ~ ab1@2 ab1 ~ ab2@2 f2@2 ab2@2 f2@2 eb2@2 c2@2",
  AL: "ab1", AM: "ab1 ~@11",
})).s("gm_fretless_bass").gain(0.49)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@12 A B ~@8 C@2 D E F@2 G H@2 I@2 J K L M N O P M Q R S T U V W X Y Z AA AB AC AD AC AB AE E AF AG AH AB AH AI AH E
  AJ AB AC AD AC AB AE E AF AG AH AB AH AI AH E AK ~
>`.pickRestart({
  A: "~@3 [b3,g4]", B: "[c4,ab4]@17 ~@7", C: "[~@18 [a3,gb4]@3 ~ [bb3,g4]@8 [bb3,eb4,g4]@2 ~@8 [ab3,db4,f4]@2 ~@6]/2",
  D: "~@3 [ab3,c4,eb4,ab4] ~@8", E: "~@3 [bb3,eb4,g4] ~@4 [ab3,db4,f4] ~@3",
  F: "[~@3 [c4,eb4,ab4] ~@5 [a3,gb4]@2 g4 g4@12, ~@11 bb3@13]/2", // Ab D
  G: "~@6 [bb3,g4]@2 [c4,ab4] ~@9 [ab3,f4]@2 [bb3,gb4] ~@3", // Eb Fm Db Ebm
  H: "[[db4,f4]@12 ~@6 [d4,gb4]@3 ~ [eb4,g4]@13 ~@13, [c4,e4] ~@47]/2", // Db D Eb C
  I: "[~@6 [f4,ab4]@2 [eb4,ab4]@2 c4 ~ [f4,ab4]@3 ~ [eb4,ab4]@2 [gb4,bb4]@3 ~ [ab4,c5]@8 [eb4,ab4,c5]@2 ~@8 [db4,gb4,bb4]@2 ~@6]/2", // Fm Ab5 Fm Ab5 Gb Ab Gb
  J: "~@6 f4@3 ~ eb4@2 [db4,f4]@2 ~@10, ~ db4 ~@2", K: "[bb3,eb4,g4]@11 ~ [ab3,db4,f4]@9 ~@3",
  L: "~@6 eb3@2 f3 ~ g3 ~ bb3@4 ab3@2 f3@3 ~ eb3 ~", M: "~@3 [bb3,eb4] ~@4 [ab3,db4] ~@3", N: "[ab3,c4]",
  O: "~@6 [bb3,eb4,g4]@2 ~@8 [ab3,db4,e4] ~@7", P: "[ab3,c4,eb4]@18 ~@4 [ab3,c4,eb4] ~",
  Q: "[ab3,c4]@16 [ab3,c4] ~@5 g3 ~", R: "~@6 [bb3,eb4,g4] ~@9 [bb3,eb4,g4] ~@7",
  S: "[ab3,db4]@3 ~ [ab3,db4]@2 ~@4 [ab3,c4,eb4]@14", // Db5 Ab
  T: "~@20 ab3@2 f3 ~, db4@6 db4@5 ~ db4@6 db4@5 ~, ~@2 ab3@5 ~ ab3@5 ~ ab3@5 ~@5, ~@4 f3@6 f3@6 f3@5 ~@3",
  U: "~@20 bb3@2 g3 ~, eb4@6 eb4@5 ~ eb4@5 ~ eb4@5 ~, ~@2 bb3@5 ~ bb3@5 ~ bb3@5 ~@5, ~@4 g3@5 ~ g3@5 ~ g3@5 ~@3",
  V: "~@20 c4@2 g3 ~, eb4@3 eb4@3 eb4@3 eb4@2 ~, ~@2 c4@5 ~ c4@5 ~ c4@5 ~@5, ~@4 g3@5 ~ g3@5 ~ g3@5 ~@3",
  W: "~@20 db4@2 ab3 ~, f4@6 f4@5 ~ f4@5 ~ f4@5 ~, ~@2 db4@5 ~ db4@5 ~ db4@5 ~@5, ~@4 ab3@5 ~ ab3@6 ab3@5 ~@3",
  X: "~@20 db4@2 bb3 ~, f4@6 f4@5 ~ f4@5 ~ f4@5 ~, ~@2 db4@6 db4@5 ~ db4@5 ~@5, ~@4 bb3@6 bb3@6 bb3@5 ~@3",
  Y: "~@20 eb4@2 bb3 ~, g4@4 bb3@6 bb3@5 ~ bb3@5 ~@3, ~@2 eb4@4 g4@6 g4@5 ~ g4@4 ~@2, ~@8 eb4@5 ~ eb4@5 ~@5",
  Z: "~@20 eb4@2 c4 ~, g4@2 c4@3 c4@3 c4@3 ~, ~@2 eb4@4 g4@6 g4@5 ~ g4@5 ~, ~@8 eb4@5 ~ eb4@5 ~@5",
  AA: "~@8 f4@2 db4 ~@11 eb4@2, ab4@4 db4@5 ~@5 g4@5 ~ g4@4, ~@2 f4@4 ab4@4 ~@2 bb4@6 bb4@5 ~, ~@8 eb4@3 ~",
  AB: "~@3 [c4,eb4,ab4] ~@4 [bb3,db4,gb4] ~@3", AC: "~@6 [ab3,db4,f4]@2 ~@8 [ab3,db4,f4] ~@7",
  AD: "~@6 [ab3,c4,eb4,ab4]@2 ~@8 [bb3,db4,gb4] ~@7", AE: "~@3 [db4,f4] ~@4 [ab3,db4,f4] ~@3",
  AF: "~@6 [ab3,c4,eb4,ab4]@2 ~@8 [c4,eb4,ab4] ~@7", AG: "~@6 [c4,eb4,ab4]@2 ~@8 [bb3,db4,gb4,c6] ~@7",
  AH: "~@3 [ab3,db4,f4] ~@4 [ab3,db4,f4] ~@3", AI: "~@6 [c4,eb4,ab4]@2 ~@8 [gb3,bb3,db4,gb4] ~@7",
  AJ: "~@3 [c4,eb4,ab4] ~@4 [eb4,ab4] ~@3", AK: "[ab3,c4,eb4,ab4]@23 ~",
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.8)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@3 A B@3 ~@9 C D@2 ~ E F G H@2 I ~ J@3 K L M N O@2 P Q P R S T U V ~@8 W X Y@2 Z AA AB@2 AC X AD AE AF@2 AG AH W X
  Y@2 Z AA AB@2 AC X AD AE AF@2 AG AI ~
>`.pickRestart({
  A: "~@8 eb6 f6@2 ~ eb6@4 f6 ~@3 c6@2 bb5@2, ~@9 e6 ~@14",
  B: "[ab5 ab5@9 ~@8 [f5,db6]@5 ~ [eb5,c6]@11 ~ [gb5,bb5]@11 ~ f5@20 ~@4, ~ bb5 ~@16 ab5@17 ~ db5@31 ~@5, ~@47 ab5@21 ~@4]/3", // Db Cm Gb
  C: "~@6 [db6,f6]@6 [c6,eb6] ~@5 [db6,f6]@6", D: "[[ab5,c6]@12 [gb5,bb5]@11 ab5@18 ~@7]/2", E: "~@18 eb4 ~ f4 ~ ab4 ~",
  F: "~ [g5,bb5,eb6] [f5,ab5]@2", G: "[eb5,c6]@11 ~ [ab5,db6,f6]@11 ~",
  H: "[[g5,bb5,eb6]@12 [f5,db6]@11 ~ [eb5,c6]@11 ~ [ab5,c6,f6]@11 ~, ~@12 ab5@23 ~@13]/2", I: "[bb5,eb6]@11 ~@13",
  J: "[~@13 eb5 ~ f5 ~ ab5@2 bb5 ~ c6@14 ~ gb5@11 ab5@18 ~ [gb5,a5]@5 ~, ~@35 bb5@12 ~@25]/3", // Gbm
  K: "[eb5,g5,bb5]@12 [db5,f5,ab5]@11 ~", L: "ab5@5 ~", M: "[ab5,c6] [gb5,bb5]", N: "[f5,ab5]@18 bb5@2 ab5 ~ bb5 ~",
  O: "[[g5,bb5]@12 f5@11 ~ eb5@20 ~@4, ~@3 ab5@8 ~]/2", P: "[g5,bb5]@12 [f5,ab5]@11 ~", Q: "[c5,eb5,ab5]@23 ~",
  R: "[c5,eb5,ab5]@3 ~ [f6,ab6]@2 [f6,ab6]@2", S: "g6 [db6,f6], eb6@11 ~@13",
  T: "[c6,eb6]@11 bb5 ~@5 f6@4 ~@3, ~@15 eb6@8 ~", U: "g6@12 f6@11 ~, eb6@23 ~",
  V: "[db6,f6]@3 ~ db6@4 ~@2 [ab5,c6,eb6]@13 ~, ~@3 f6@5 ~@16", // Db Ab
  W: "ab6@4 ~@2 ab6@4 ~@2 [bb5,db6,gb6]@11 ~, [c6,eb6]@5 ~@7", X: "[ab5,db6,f6]@19 ~@5",
  Y: "[~@6 [c6,eb6,ab6]@4 ~@2 [bb5,gb6]@11 ~ [ab5,f6]@21 ~@3, ~@12 db6@31 ~@5]/2", // Ab Ebm Db
  Z: "ab6@3 ~@3 ab6@4 ~@2 [db6,gb6]@11 ~, [c6,eb6]@10 ~ bb5@10 ~@3", AA: "~@8 a5 [d6,gb6] a5 gb6, ~@22 d6 ~",
  AB: "[bb5@12 [ab5,db6]@11 ~ [ab5,c6]@23 ~, eb6@47 ~, g5@5 ~@19]/2", // Db5 Ab
  AC: "ab6@4 ~@2 ab6@5 ~ [bb5,db6,gb6]@10 ~@2, [c6,eb6]@11 ~@13", // Gb Cm
  AD: "ab6@5 ~ ab6@4 ~@2 [bb5,db6,gb6]@11 ~, [c6,eb6]@5 ~@7", AE: "[ab5,f6]@11 ~ f6@3 ~ ab6@3 bb6@3 ~@2, db6@3 ~@5",
  AF: "[[eb6,ab6,c7]@12 [gb6,bb6]@12 [f6,ab6]@12 bb6@2 ab6@2 db6@2 bb6@2 ~ db6 ~@2, ~@6 db6@12 ~@4 ab6 ~]/2", // Ab Gb Fm
  AG: "[eb6,g6,bb6]@11 ~ [db6,f6,ab6]@11 ~", // Eb Db
  AH: "[c6,eb6,ab6]@7 ~ eb6 ~ [eb6,ab6] ~ [c6,eb6,ab6] ~ [c6,eb6,ab6] ~ [c6,eb6,ab6] ~ [c6,eb6,ab6] ~ [c6,eb6,ab6] ~ [c6,eb6,ab6]@2", // Ab Ab5 Ab
  AI: "[c6,eb6]@23 ~, ab6@7 ~", // Cm
})).s("gm_rock_organ").gain(0.33).pan(0.3)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@17 A@2 ~@2 B C ~ D@2 ~@3 E ~ F ~@3 G ~@5 H ~@15 I ~@9 J ~@5 I ~@9 K L>".pickRestart({
  A: "[~@23 f5@18 ~@7]/2", B: "~@12 db6@11 ~", C: "ab5@11 ~@13", D: "[~@23 g5@11 ~@14]/2", E: "f5@2 ~",
  F: "[c5,eb5]@7 ~", G: "c5@5 ~", H: "~@2 c6 ~", I: "[ab5,db6,f6]@11 ~@13", J: "~@8 [c6,ab6] ~ c6 ~@13",
  K: "~@21 gb6 [db6,d6,e6,f6] [gb5,g5,ab5,a5,bb5,b5,c6]", L: "[db5,eb5,f5] ~@23",
})).s("gm_rock_organ").gain(0.16).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A@7 B C D E@3 D E@3 D E F C D G H I E D E D E D E D@2 J E D F K J L M N E O E P Q O E J E J D R E M E D F O E N Q
  O E J E J D R E M E D F O E S G
>`.pickRestart({
  A: "x ~@5 x ~@4 x", B: "x ~@4 x!2 ~@2 x ~@2", C: "x ~@4 x!2 ~ x ~@2 x", D: "x ~ x ~@2 x!2 ~ x!2 ~ x",
  E: "x ~ x ~@2 x!2 ~ x ~@2 x", F: "x ~@2 x ~ x!2 ~ x!2 ~ x", G: "x", H: "x ~@2 x ~ x!2 ~@4 x",
  I: "~@2 x ~@2 x!2 ~ x!2 ~ x", J: "x ~ x!2 ~ x!2 ~ x!2 ~ x", K: "x ~ x ~@2 x ~@2 x!2 ~ x", L: "x ~@2 x ~ x!2 ~ x!4",
  M: "x ~ x!2 ~ x!2 ~ x ~@2 x", N: "x ~ x!2 ~ x!2 ~ x!4", O: "x ~ x ~@2 x!2 ~ x!4", P: "x ~ x ~@3 x ~@2 x ~@2",
  Q: "x ~ x ~@2 x ~@2 x ~@2 x", R: "x ~ x!2 ~ x ~ x!5", S: "x ~ x!2 ~ x ~ x!2 ~ x!2",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@5 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!9 [~ x ~@2] [~ x ~ x] [~ x ~@2] ~@64>").gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  ~@20 A B@5 C D B@9 E B E B E B F G@3 H G@2 B I B@7 J B K B@3 E B L B@7 J B K B@3 E B@2 ~
>`.pickRestart({
  A: "~@8 x!2 ~@2", B: "~ x ~ x", C: "~@3 x ~@4 x!2 ~@2", D: "~@11 x", E: "~ x!3", F: "~@3 x ~@3 x!2 ~@3", G: "x!4",
  H: "x ~@2 x ~@2 x ~ x!2 ~@2", I: "x ~ x!4 ~ x!5", J: "~@3 x!9", K: "~@3 x ~@4 x ~@3", L: "~@3 x ~@3 x!5",
})).gain(0.38)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@51 A ~@7 B ~ C ~@5 D ~@7 B ~ C ~@5 D ~>".pickRestart({
  A: "~ x ~@10", B: "x!3 ~@9", C: "~@11 x", D: "~@4 x!3 ~@5",
})).gain(0.22)

// drums · clap
const clap = s("cp").struct("<~@28 [~ x ~@2]!16 ~@8 [~ x ~ x]!31 ~@2>").gain(0.49)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@34 B ~@3 C ~@3 D ~@7 E ~@15 E ~@9>".pickRestart({
  A: "~@3 x", B: "~@9 x!3", C: "~@8 x!4", D: "~ x", E: "x ~@2 x!9",
})).gain(0.33)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@59 [~ x!2 ~@9] ~@15 [~ x!2 ~@9] ~@9>").gain(0.22)

// … 38 more lines

More by Three Dog Night