Strudelify

Lovely Lady

The Brecker Brothers

KeyB♭ minorTempo80 bpm
0:00/0:00
// Lovely Lady — The Brecker Brothers
// 80 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · "G&G Productions"
const piano = note(`<
  A@2 B@2 C@3 D E F G H I J K L@2 M N O P Q R S T U V W X Y Z AA@2 AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP@4 AQ@2
  AR AS AT E AU AV AW@3
>`.pickRestart({
  A: "[[bb3,db4,f4]@5 [db4,f4]@2 bb3 ~@3 c4@2 ~@2 c4 ~@6 eb4@4 ~@3 db4 eb4 db4, ab3@4 db4@3 ~, bb2 ab2 gb2@2, ~@8 eb4@5 eb4@6 bb3@7 ~@2 bb3@2 ~@2, ~@11 gb3 ~ gb3@2 ~]/2", // Bbm Db
  B: "[bb3@2 ~@3 db4@2 ~@4 ab3@2 ab3 ~@2 [eb2,db4]@2 ~ [f2,f3,ab3,c4]@3 bb3@6 ~ bb3 ~ bb3, bb2@8 ab2@7 ~@7 [gb2,db4]@8 ~@2, ~@2 ab3@8 ~@5 bb3@2 ~@11 gb3@2 ~@2, ~@3 bb3@4 ~@4 c4@4 ~@15 db4@2, ~@5 eb4 ~ eb4@6 eb4@4 ~ eb4@4 ~@10]/2", // Eb7 Fm Gb5
  C: "[[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,f4] bb2 [c4,eb4]@3 ~@2 c4@2 ab3 [bb3,db4]@10 gb3@2 ~ db4 eb4 ~@4 ab3@2 f4@2 ab3 db4 c4@2 ~@2 c4@2 ~, ~@6 db4@2 ab2@8 gb2@15 ~ bb2@8 ab2@7 ~, ~@8 ab3@5 ~@15 bb3@2 ~@2 bb3@6 ~@2 ab3@5 ab3 ~@2, ~@11 eb4@7 ~@13 db4@3 ~ db4@5 eb4@3 eb4@5, ~@35 f4 ~@12]/3", // Bbm7 Bb7 Cm Bbm
  D: "bb3@3 bb3@6 eb4 db4 bb3!3 [ab3,db4] ~, gb2@5 ~@3, db4@4 ~@2 db4 ~", // Db5
  E: "[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ab2", // Bbm7 Ab
  F: "[gb2,bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [gb2,bb3,db4] ~ [bb3,db4] ~ [bb3,db4] gb2 [ab2,c4,eb4]@2 [ab3,c4,eb4] ab2, ~@12 ab3 ~@3", // Gb Bbm Gb Bbm Ab
  G: "[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~", // Bbm7 Ab
  H: "[f2,f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@2 f2 bb3@4 ~@4 gb3!2, ~@3 f2 ~@2 [gb2,db4]@6 gb2@2 bb3@2, ~@6 eb4 ~@3 [gb3,bb3]@3 db4@2 ~", // Fm7 Gb5 Gb
  I: "[bb2,bb3,db4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ab2", // Bbm Bbm7 Ab
  J: "[gb2,bb3,db4] ~ [bb3,db4] ~ [gb2,bb3,db4] ~ [f2,f3,ab3,c4] ~ eb4 ~ ab3@2 ab3 ~ db4@2, ~@6 eb4@2 c4@5 [gb2,bb3]@3, ~@5 [f2,eb4]@2 ~", // Gb Bbm Gb Fm Gb F7
  K: "[bb3,f4]@2 [bb3,db4,f4] ~ [bb3,f4] ~ [bb3,db4,f4] bb2 ab3@2 ab3@2 c4@2 [ab3,c4] ~, bb2@6 ~@2 ab2@7 ~, ~@2 db4 ~ [c4,eb4]@2 eb4@2, ~@12 ab3 ~@3", // Bb5 Bbm Bb5 Bbm Ab Cm
  L: "[[f2,f3,ab3,c4,eb4]@3 [f3,ab3,c4] ~@2 [gb2,bb3]@7 ~@11 db4 eb4@2 ~@2 eb4@3, ~@3 [f2,eb4]@2 ~ db4@5 ~@2 eb4@2 bb3@4 ab3@4 ab3@8 ~, ~@6 f2 ~@7 db4@2 bb2@8 ab2@8, ~@21 [db4,f4]@4 c4@6 ~]/2", // Fm7 Fm Gb F7 Db
  M: "[bb3,db4]@3 ~@7 gb2@3 ~@2 c4, gb2@10 ab3 ~@2 ab2@3, ~@3 db4@11 ~@2, ~@6 bb3@7 ~ ab3@2", // Bbm
  N: "~@14 c4 ab3, bb2@7 ab3@2 ~ ab3@4 ~@2, ~ ab3@2 bb3 ab2@4, ~@3 bb3@2 f4@3 ~@4 eb4@4, ~@4 db4@4 ~@3 c4@2 ~@3",
  O: "db4@3 eb4 ~@5 gb3@2 ~ [f2,f3,ab3,c4]@4, [gb2,bb3]@3 eb4@5, ~@3 db4@8 ~@5, ~@3 [gb2,bb3]@3 ~@2", // Fm Gb
  P: "~@3 [ab3,db4,f4]@5 [ab3,c4]@5 ~ c4 ab3, [bb2,bb3] ab2, ~@8 eb4@4 ~ eb4@3", // Db Ab Bb
  Q: "~@6 bb3@3 ~@3 db4 ~ bb3 ab2, [gb2,db4]@6 eb4 ~, bb3@5 ~@4 [gb3,bb3]@4 db4@2 ~, ~@3 eb4@8 gb2@4 ~", // Gb5 Gb
  R: "f4@2 f4@2 [ab3,f4]@2 [ab3,f4] bb2 [ab3,eb4]@4 ~@2 ab3 ~, bb2@7 ~ [ab2,c4]@7 ~, [ab3,bb3,db4] [bb3,db4] ~ eb4", // Db Ab5 Ab Bbm7 Bbm
  S: "[gb2,bb3,db4] ~@2 [f2,f3,ab3,c4,eb4] ~@2 bb3@6 eb4@2 bb3 gb2, ~@6 [gb2,db4]@9 ~", // Gb Fm7 Gb5
  T: "[bb2,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ c4@2 [ab3,c4] gb2, ~@2 ab2 eb4, ~@12 ab3 ~@3", // Bbm Bbm7 Ab
  U: "[gb2,bb3,db4]@4 [bb3,db4]@2 gb3@2 gb3@2 gb3@2 ~ gb3 bb3 ab2, eb4 ~@5 db4@7 db4@2 ~, ~@6 [gb2,bb3]@4 bb3 ~ [gb2,bb3]@3 ~", // Gb Bbm Gb
  V: "[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [c4,eb4]@2 [ab3,c4,eb4] ~ [ab3,c4] ~ [ab3,c4] ab2, ~@4 ab2@3 ~, ~@8 ab3 ~@3 eb4@2 eb4@2", // Bbm7 Cm Ab
  W: "[bb3,db4]@2 ~ [f2,f3,ab3,c4]@3 bb3@4 ~@2 bb3!2 [bb3,db4] gb2, gb2 ~ eb4@4 [gb2,db4]@5 gb2@2 ~@3, ~@5 bb3 db4 ~", // Bbm Fm Bbm Gb5
  X: "[bb2,bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] bb2 [c4,eb4]@2 [c4,eb4]@2 [ab3,c4] ~ [ab2,ab3,c4] ~, ~@2 ab2 ~, ~@8 ab3 ~ ab3 ~ eb4@2 eb4@2", // Bbm Cm Ab
  Y: "eb4@3 ~ [f3,ab3] ~ bb3@4 gb3@2 ~@2 [bb3,eb4] gb2, [f2,c4]@6 [gb2,db4]@7 db4@2 ~, ab3 ~@3 eb4@2 ~@6 bb3@2 ~@2", // Fm Eb5 F5 Gb5
  Z: "[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 c4@2 [ab3,c4]@2 [ab3,c4] ~ ab3 ab2, ~@4 ab2@3 ~, ~@2 eb4!2, ~@8 ab3 ~@7", // Bbm7 Ab
  AA: "[[gb2,bb3,db4] ~@2 [f2,f3,c4,eb4]@3 [gb2,bb3]@7 db4!2 [c4,db4] ab3@3 ~ ab3 ~ ab3@7 ~ ab3 ~, ~@3 [e2,ab3] ~@2 db4@6 ~ eb4@6 eb4@9 ~@4, ~ db2, ~@16 c4@13 [c4,eb4]@3]/2", // Gb F7 Gb Dbmaj7 E Cm
  AB: "bb3@3 bb3@2 ~ [bb3,db4]@7 db4 ~ gb2, [gb2,db4]@3 gb2@4 bb3, ~@3 eb4@5 ~@5 eb4@3", // Bbm Gb5
  AC: "eb4@3 ~@3 [f3,ab3]@7 ~ [f3,ab3] f3, c4@13 [c4,eb4]@3, [db2,f3,ab3]@3 db2@5, ~@3 eb4@9 ~@4", // Fm Cm Db
  AD: "bb3@3 bb3@2 ~ eb2@4 gb2@3 ab2@3, db4@7 ~, eb2@6 [gb3,bb3]@9 ~, ~@3 eb4@13", // Gb
  AE: "f3@3 ~@3 eb4@5 ~@3 [f3,ab3]!2, [db2,c4], ab3@13 ~@3, eb4@6 ~@7 eb4@3, ~@3 f3@11 ~@2", // Fm Dbmaj7
  AF: "[c2,g3,bb3,c4,eb4]@6 g3@3 ~ g3@2 ~ b2@3, ~@3 bb3@5, ~@3 [c2,c4,eb4]@3 [g3,c4,eb4]@2", // Cm7 Cm
  AG: "[bb3,db4]@2 bb3 [bb2,bb3,eb4]@3 [bb2,bb3] ~, bb2@3 ~@5, ~@2 db4@5 ~", // Bbm Eb5 Bb
  AH: "~@2 [bb2,bb3,db4,eb4] ~ [bb2,bb3,db4,eb4] ~@3 [f2,f3,c4,eb4]@4 [gb2,bb3,db4]@4, ~@4 ab3 ~@3, ~@8 g3 ~@7", // Eb7 F7 Gb
  AI: "[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,gb4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ab2", // Bbm7 Gb Bbm7 Ab
  AJ: "[gb2,bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [gb2,bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [gb2,db4]@2 bb3 ab2, ~@12 bb3 ~@3", // Gb Bbm Gb Bbm Gb5
  AK: "[bb2,ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] [ab2,a2]", // Bbm7 Ab Amaj7
  AL: "[gb2,bb3,db4] ~ [f3,ab3,c4]@2 [f3,ab3,c4] ~ gb2@4 ~ gb3 ~@2 db4 [bb3,db4,eb4], ~@2 f2@4 ~@4 gb2@3 bb3@2 ~, ~@2 b3 ~ eb4@2 [bb3,db4]@6 gb3@2 ~@2", // Gb Fm Eb7 Bbm
  AM: "[bb2,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,b3,c4,eb4] ab2", // Bbm Bbm7 Ab
  AN: "gb2@2 db4 ~ [f3,ab3,eb4] ~ [gb2,bb3]@2 ~@2 bb3 ~ bb3 ~ [bb3,db4] ab2, ~@3 f2@3 db4 ~ bb3@2 db4@2 db4@2 ~@2, ~@9 gb2@2 gb2@2 ab2@2 ~", // Fm7 Gb Bbm
  AO: "[bb3,f4]@2 [ab3,db4,f4] ~ [ab3,bb3,db4] ~ [ab3,bb3,db4,f4] bb2 ~@2 [ab3,c4,eb4] [ab3,eb4]@2 ~ ab2@2, bb2@5 ~@3 ab2@5 [ab3,eb4]@3, [ab3,db4] ~ bb3@2 [eb2,f4]@2 ~@5 c4@5", // Bb5 Db Bbm7 Ab Ab5 Db5 Ebsus2
  AP: "[[f2,f3,ab3,c4]@3 [f2,f3,ab3,c4] ~@2 [gb2,bb3,db4]@7 ~ bb3 ~ bb3@7 f4@4 ~@2 bb3@2 ~ c4@7 ~@4 [b3,c4]@2 ab3@2 ~ [ab3,c4]@7 db4 ~@5 f3@2 f2, ~@13 gb3@2 db4@2 ~@10 eb4@11 ~ eb4@15 ~ eb4@9, ~@16 bb2@15 ab3@11 ~@6 f3@11 ab3@4 ~, ~@32 ab2@16 f2@15 ~]/4", // Fm Gb Cmaj7 Ab
  AQ: "[~@10 [bb3,db4] bb3 ~@2 ab2 ~@6 bb3@2 ~ ab3@5 [db4,f4]@2 [ab3,bb3], [bb3,db4]@10 ~ db4@2 ~@5 bb3@2 f4@9 ~@3, gb2@3 gb2@3 ab2 a2 bb2@8, ~@3 gb3@6 gb3@2 ~@2 ab3@2 ab3@2 ab3@6 bb3@7 ~@2, ~@19 db4@10 ~@3]/2", // Bbm Db Absus2 Bbm
  AR: "~ c4@6 [ab3,c4]@5 ab2 [ab2,ab3,bb3,c4,eb4]@3, ab3@7 ~@9, eb4@5 ~@2 eb4@4 ~@5, ~ ab2@11 ~@4", // Ab
  AS: "[f2,f3,ab3,eb4]@2 [f2,f3,ab3,eb4]@2 [f2,f3,ab3,eb4]@2 [f2,f3,ab3,c4,eb4]@2 [f2,f3,ab3,c4,eb4]@2 [f2,f3,ab3,c4,eb4]@2 [f2,f3,ab3,c4,eb4]@2 [f3,ab3,c4] ~, c4@3 ~@4 [f2,eb4]", // Fm7 Fm F7
  AT: "[gb2,db4,eb4]@2 [gb2,db4,eb4]@2 [gb3,bb3,db4,eb4] ~ [gb2,gb3,bb3,eb4] ~ [gb2,gb3,bb3,db4] gb2 [gb2,gb3,bb3,db4] ~ eb4 [ab3,c4,eb4]@2 ab2, [gb3,bb3] ~ [gb3,bb3] ~ gb2@2 db4@2 eb4@2 eb4@2 ~@4, ~@11 gb2@2 ab2 ~@2", // Ebm7 Ebm Gb Ab Gb
  AU: "[f2,f3,ab3,c4,eb4] ~ [f3,ab3,c4,eb4] ~ [f2,f3,ab3,c4] ~ bb3@2 bb3 ~ [gb3,bb3]@2 gb2!2 [gb3,bb3] gb2, ~@2 eb4 gb2@3 ~@2, ~@6 db4@4 ~@2 db4@3 ~", // Fm7 Fm Gb
  AV: "[bb3,db4]@2 [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] bb2 [c4,eb4]@2 [c4,eb4]@2 [ab2,c4,eb4]@2 ab2 ~, bb2@3 ~ ab2@2 ~@2, [ab3,f4] ~@7 ab3 ~ ab3 ~ ab3 ~@3", // Bbm Bbm7 Cm Ab Db
  AW: "[[f2,f3,ab3,c4,eb4] ~@2 [f2,f3,ab3,c4,eb4] ~@2 bb3@3 ~@2 bb3@2 db4 ~@10 f4@12 ~@12, ~ gb2@5 ~@2, ~@6 db4@6 ~ eb4@2 ~@3 eb4@5 gb3@13 ~@12, ~@9 gb3@9 ~@2 db4@16 ~@12, ~@14 f4@7 bb3@15 ~@12]/3", // Fm7
})).s("gm_piano").gain(0.42)

// bass · piano
const bass = 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 AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AQ AU
  AV AW AX AY AZ BA BB BC BD BE BF BG@3
>`.pickRestart({
  A: "bb1 ab1", B: "gb1@7 db2 gb2 db2 gb1@3 ab1@3", C: "bb1@7 bb2 ab1@7 ~", D: "gb1@5 db2 gb2@7 db2 ~@2",
  E: "bb1@8 ab1@7 ~", F: "gb1@6 ~ db2 gb2 db2 gb1@2 ~ gb1 ab1@2", G: "bb1@5 f2 bb2 f2 ab1@3 ab2 ~ ab2@2 ab1",
  H: "~@6 gb1@6 db2 gb2 ab1@2", I: "bb1 ~@3 bb2 ~ bb1@2 ab1@2 ~ ab2 ~ ab1@2 ~",
  J: "f1@2 ~ gb1@3 gb1@3 gb1 db2 gb1 gb2@2 db2 gb1", K: "bb1@3 bb2 ~@2 gb1 ~ ab1@3 ab2 ~@2 ab1 ~",
  L: "f1@2 f2 f1@2 f2 gb1@3 gb1 db2 gb1 gb2@2 db2 gb1", M: "bb1@3 bb2 ~ bb2 ~ bb1 ab1@2 ~@2 ab2 ~@2 ab1",
  N: "gb1 ~ gb1@2 gb2 ~ gb1@2 ~ eb1 db2 eb1 eb2 f1 [e2,f2] gb1", O: "bb1@3 [ab2,bb2] ~@3 bb1 ab1@4 ab2@3 ~",
  P: "[f1,f2]@3 [f1,f2]@3 gb1@5 gb1 db2 gb2 db2 ab1, ~@6 gb2@3 ~@7", Q: "bb1@7 ~ ab1@5 eb2 ab2 eb2",
  R: "gb1@5 ~ gb1@3 gb1 ab1@2 ~ a1@2 a1", S: "bb1@5 f2 bb2 ~ ab1@6 eb2 ab2",
  T: "~@2 gb1@4 ~ db1 ~ db1 eb1!2 gb1 ~ ab1 ~", U: "bb1@5 f2 bb2 f2 ab1@5 eb2 ab2 eb2",
  V: "gb1@9 db2 gb2 db2 gb1@2 ab1 ~", W: "bb1@5 f2 bb2 f2 ab1@5 ab2@2 ab1",
  X: "f1@2 ~ f1@2 ~ gb1@3 db2 gb2 db2 ab1@2 a1@2", Y: "bb1@3 bb2 ~ bb1 f2 bb2 ab1@3 eb2 ab2@2 eb2 ab1",
  Z: "gb1@4 ~ gb1 db2@3 gb2@2 db2 gb1 db2 gb1 ab1", AA: "bb1@3 f2 bb2 f2 bb1@2 ab1@3 ab2 ~ ab1@3",
  AB: "gb1@3 gb2 ~@5 gb1 [f1,f2]@2 ~ [gb1,gb2]@3", AC: "bb1@3 f2 bb2 f2 bb1@2 ab1@3 ab2 ~ ab1@2 ab1, b1 ~@15",
  AD: "gb1@10 db2@2 gb2@2 db2 gb1", AE: "bb1@3 [e2,f2] bb2 f2 bb1@2 ab1@3 ab2@3 ab1@2",
  AF: "f1@2 ~ f1 ~@2 gb1@5 db2 gb2 db2 ab1@2", AG: "bb1@7 ~@8 bb1", AH: "gb1@7 db2 gb2 db2 gb1@3 eb1@3",
  AI: "db1@6 ~ ab1 db2 ab1 db1@3 ~@2 db1", AJ: "eb1@7 bb1 eb2 bb1 eb1@6", AK: "gb1@3 ~@4 ab1 db2 ab1 db1@2 eb1@2 eb1 ~",
  AL: "~@6 c1@3 g1 c2@3 g1@3", AM: "bb1@7 f2 bb2 f2 bb1@2 bb1 bb1@2 ~", AN: "~ bb1!7 gb1 ~ f1@3 gb1@3",
  AO: "bb1@4 bb2 ~@2 bb1 ab1@3 ab2 ~@4", AP: "gb1@3 gb2 ~@2 gb1@3 gb2 gb1 ~ ab1 ab2 ab1 a1",
  AQ: "bb1@3 f2 bb2 f2 bb1@2 ab1@3 ab2 ~@2 ab1 ~", AR: "gb1@3 gb2 ~@2 gb1@3 gb2 gb1 ab1 ab2 a1@2 a2",
  AS: "bb1@3 f2 bb2 f2 bb1@2 ab1@3 eb2 ab2 eb2 ab1@2", AT: "gb1@3 db2 gb2 db2 gb1@3 gb2 gb1 gb2 ab1 ab2 a1 a2",
  AU: "f1@3 f1@2 ~ gb1@5 db2 gb2 db2 ~@2", AV: "bb1 ~@7 bb1 ~ bb1 ~@5", AW: "bb1 gb1 bb1 ab1!2 ~@2 eb1 ab1 eb1 ab1 ~@5",
  AX: "gb1 ~ gb1 ~ ab1 ~ gb1 ~ f1@4 f1 ~@2 db1", AY: "gb1@2 gb1@5 bb1 ~ bb1 gb1 ab1!2 a1@2 a1",
  AZ: "bb1@2 bb1@2 ~@3 eb2 ab2 eb2 bb1 ~@5", BA: "ab1 ~ ab1@2 ~@3 f1 ab1 ~ ab1 ~@2 ab1@2 ~",
  BB: "~@2 gb1 ~ f1@3 f1!2 ~ f1@2 f1@2 f1@2", BC: "gb1@2 gb1!2 db2 gb2 gb1 db2 gb1 gb2 gb1 db2 gb1 gb2 ab1!2, a1 ~@15",
  BD: "bb1@2 f2 bb1 bb2@2 f2 bb1 ab1@3 ab2@3 e2 ab1", BE: "~@2 f1@2 [e2,f2] f1 gb1@3 db2 gb2 db2 gb1 ab1 ab2 [a1,b1]",
  BF: "bb1@3 f2 bb2 f2 bb1@2 ab1@3 eb2 ab2 eb2 ab1 ~", BG: "[f1@2 ~ [f1,f2] ~@6 gb2!2 ~ gb2 ~@34, ~@3 gb1@16 ~@5]/3",
})).s("gm_piano").gain(0.4)

// bass · piano · soft notes
const bass_soft = note("<~@12 A ~@3 B ~ C D ~ E ~@10 F ~ G ~ H ~ I J ~@7 K L M N ~@2 O ~@5 P Q@2>".pickRestart({
  A: "~@10 ab1 ~@5", B: "~@7 bb1 ~@8", C: "~@8 f2 ~@7", D: "~@13 gb1 ~@2", E: "~@15 ab1", F: "~@7 db2@8 ~",
  G: "~@13 db1@2 ~", H: "~@3 db1@4 ~@9", I: "~@15 bb1", J: "~@9 gb1 ~@6", K: "~@14 gb2 ~", L: "~@7 gb1 ~@7 gb1",
  M: "~@15 eb1", N: "~@13 f1 ~@2", O: "~@15 gb1", P: "~@9 db2 ~ db2!3 gb2 [db2,gb2]",
  Q: "[[db2,gb2]!2 db2!2 [db2,gb2] ~ gb2 ~@4 db2@13 ~@8, ~ gb2 ~@2 gb2@8 ~@4]/2", // Gb5
})).s("gm_piano").gain(0.25)

// other · rock organ
const rock_organ = note(`<
  A@2 B C D@3 E F G H I J@2 K L M N O P Q@2 R@2 S T@2 U V W X Y Z ~ AA AB AC@2 AD AE AF AG AH AI AJ AK@2 AL AM AN AO AP
  AQ AR AS AT AU AV AW AX@3
>`.pickRestart({
  A: "[[f5,ab5,bb5] ~@3 bb5@19 ~ [ab5,bb5] ~ ab5 f5@3 ab5 bb5, db6 ~@7]/2", B: "ab5@11 ~ ab5@2 bb5 ~",
  C: "db6@3 eb6@3 db6@6 ~ [f5,g5] ab5 bb5", D: "[db6@3 bb5@20 ~ bb5 ab5 f5 ab5@2 f5 ~ eb5@8 db5@6 bb4 db5 eb5]/3",
  E: "f5@9 f5 gb5 f5@3 f5 ab5", F: "~@2 db6 ~ db6@3 bb5@3 [ab5,bb5] ~@3 f5!2",
  G: "ab5@2 [ab5,bb5] ~ bb5 ~ db6 ~@5 f6@2 eb6 db6, ~@12 eb6 ~@3", H: "eb6@2 db6 db6@3 bb5 ~@6 f5 ~ ab5, db6 ~@15",
  I: "bb5@2 db6 bb5@2 ~@11", J: "[~@3 ab5 bb5 db6 eb6 ~ [eb6,e6] ~@15 f6@2 eb6 db6 eb6@2 db6 ~, ~@8 f6@15 ~ eb6 ~@7]/2",
  K: "[db6,eb6] db6 bb5 bb5@3 ~@7 bb5@2 [f5,ab5], ~@13 ab5 ~@2", L: "ab5 f5 [f5,ab5] eb5@2 [db5,eb5] db5!2 bb4@4 ~@4",
  M: "~@7 f5 ab5 ~ f5 ~ f5 eb5 ~ eb5", N: "~ db5 ~ db5@2 c5 ~ c5@5 ~@4",
  O: "~@6 c6 db6 ~@2 db6 ~ eb6@2 db6!2, ~@9 c6@2 ~ db6 ~@3", P: "c6@2 bb5@7 ~@7",
  Q: "[~@2 [eb6,e6] ~@3 eb6 db6 [db6,eb6] eb6 db6 db6@2 c6 ~ c6@2 bb5@2 ab5 ~ ab5@2 bb5@3 ~@3 f5 ab5 bb5, ~ f6@2 ~@13]/2", // Emaj7 Dbsus2
  R: "[db6 ~ [eb6,e6] ~ [db6,eb6] ~@5 [ab6,bb6] ~@3 bb6@6 [ab6,bb6] ab6 ab6@2 f6 ~ [bb6,b6] [ab6,bb6] f6 ~ f6 ~, ~@2 f6@2 ~@6 c7@4 ~@8 f6 ~@9]/2", // Emaj7 Dbsus2 Absus2 Bmaj7 Absus2
  S: "eb6@2 eb6 ~ eb6@2 f6@8 ~@2, ~@4 db6 ~ e6 ~@9",
  T: "[~@4 f5@2 ab5@2 bb5 ~ db6 ~ eb6@2 eb6@4 db6@4 bb5@5 ~@3 c6 db6, ~@12 db6 ~ db6 ~@17]/2",
  U: "c6@2 db6 c6@2 db6 bb5@5 ~ f5 ab5 bb5 c6", V: "[db6,d6] ~ eb6 [e6,f6] ~ f6@9 eb6 ~, ~@5 eb6 ~@10",
  W: "~@8 f6@2 eb6 ~ eb6@2 db6 ~, ~@8 eb6 ~@3 db6 ~@3", X: "db6@3 [db6,eb6] db6@2 c6@8 c6 db6",
  Y: "c6@2 bb5@3 ~ bb5@6 ~@2 [f5,g5] ab5", Z: "bb5 ~ bb5 ~ bb5@11 ~", AA: "~@2 bb5 c6", AB: "~ f6",
  AC: "[~@12 c6 db6 c6@5 bb5@9 f5 ab5 bb5 c6]/2", AD: "c6@2 eb6 e6",
  AE: "f6@4 f6@2 f6 ~ [e6,f6] eb6 c6 ~ db6!2 bb5 db6", AF: "db6",
  AG: "~@4 [db6,eb6,e6] ~ eb6 db6 eb6@2 db6 ~ db6@2 bb5 ~, ~@4 f6@2 ~@2 db6 ~@7", AH: "bb5@2 ab5 ~@13",
  AI: "~ f5 ab5 ~ bb5@2 ~@4 f5 ab5 bb5 db6 d6 ~",
  AJ: "[eb6,e6] ~@2 [eb6,e6] e6 ~ [db6,eb6] ~@2 f6@3 e6 f6 ~@2, f6@3 f6@3 f6@3 ~@7", // Emaj7 Dbsus2
  AK: "[e6 f6 ab6 e6 f6 ab6 e6 f6 ab6 e6 f6 ab6 bb6@2 ab6 ~@3 ab6!2 f6 ab6 f6@4 eb6 e6@2 db6 eb6@2, ~@12 ab6 ~ bb6@6 ~@12]/2",
  AL: "db6@2 bb5@4 bb5@6 f5 ab5 bb5 ab5", AM: "bb5 ~@15", AN: "~@13 c6 db6 ~",
  AO: "eb6 f6@2 f6 ~ f6!2 ~ eb6 [db6,eb6] ~@6, ~ eb6 ~@14", AP: "~@9 bb5@2 ab5 [f5,ab5] ~ f5 [f5,ab5]",
  AQ: "ab5 ~ bb5 ~@13", AR: "~@5 c6 eb6 [eb6,f6]!2 f6 [eb6,f6]!3 eb6 ~ [eb6,f6]",
  AS: "[eb6,f6] eb6 [eb6,f6] eb6!2 [eb6,f6]!2 f6 f6@2 f6@2 f6@2 f6@2", // Ebsus2
  AT: "gb6!2 gb6@2 gb6@2 bb6@4 [ab6,b6] ~@2 bb6 f6 ~, f6 ~@4 bb6 ab6 ~", // Abm
  AU: "db6@4 eb6@4 gb6 f6@3 eb6@3 ~, ~@4 db6 ~@11", AV: "eb6 db6 [bb5,b5] bb5@6 f5 ab5 bb5!2 ab5 f5 ab5",
  AW: "bb5 db6 db6@2 db6@3 ~ eb6@3 ~ [db6,eb6,e6] ~@3, ~@8 db6 ~@3 f6@4", // Dbm
  AX: "[ab6@3 ab6@2 ~ bb6@31 ~@11, ~@3 gb6 ~@2 ab6 ~@41]/3",
})).s("gm_rock_organ").gain(0.4)

// other · rock organ · soft notes
const rock_organ_soft = note(`<
  ~@2 A ~@2 B ~@7 C D ~@6 E ~ F G ~@3 H ~@3 I@3 J K ~@2 L M ~ N ~ O ~ P ~@3 Q ~@2 R S T ~ U V W@3
>`.pickRestart({
  A: "~@15 bb5", B: "~@8 ab5 ~@7", C: "~@12 db6 ~@3", D: "~@6 ab5 ~@9", E: "~@2 bb5 ~@5", F: "~@15 eb6",
  G: "~@2 db6 ~@3 eb6 ~@9", H: "~ db6 ~@14", I: "[~@15 ab5@25 ~@8]/3", J: "eb6 ~", K: "c6@4 db6 c6@7 ~@4",
  L: "~@7 eb6!2 ~ b5 ~@5", M: "bb5 ~@15", N: "~@3 ab5 ~@12", O: "~@7 ab6", P: "~@12 eb6 ~ db6 ~",
  Q: "~@3 eb6 ~ eb6!2 ~@3 db6 ~@5", R: "~@14 f6 ~", S: "~@3 f6 ~@3 eb6 ~@8", T: "~@15 ab5", U: "db6 ~@15",
  V: "~@11 db6 ~@4", W: "[~@22 db6@15 ~@11, ~@14 f6@23 ~@11]/3",
})).s("gm_rock_organ").gain(0.25)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B A C D E F G H I J K L M N O P Q R@2 S T@3 U V W X Y Z AA AB AC@3 AD@2 AE AF AG AH AI AA AJ AA AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY@3
>`.pickRestart({
  A: "~ [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@4 [bb3,db4] [ab3,c4]@3", // Bbm Ab
  B: "~ [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@5 [ab3,c4]@2 ~", C: "~ [gb3,bb3] ~@2 [gb3,bb3] ~@11",
  D: "~@2 [ab3,db4] ~@2 [ab3,db4] ~@2 [ab3,db4] ~@3 [ab3,db4] [ab3,c4]@2 ~", // Db5 Ab
  E: "~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~", // Gb
  F: "~@2 [ab3,db4] ~@2 [ab3,db4] ~@2 [ab3,db4] ~@3 [ab3,db4] [ab3,c4]@3", // Db5 Ab
  G: "~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@4 gb3 ab3 bb3", H: "~@2 bb3@7 ~ [ab3,db4]!2 ~ [ab3,db4] ~@2",
  I: "[ab3,c4]!2 ~@2 c4 [ab3,c4] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~", // Ab Gb
  J: "~@2 [ab3,db4] ~@2 [ab3,db4] ~@2 [ab3,c4]!2 ~@2 [ab3,c4]!2 ~@2", // Db5 Ab
  K: "[f3,ab3] ~@2 [f3,ab3] ~@2 [gb3,bb3]!2 ~@2 [gb3,bb3]!2 ~@2 [gb3,bb3] ~", // Fm Gb
  L: "~@2 [ab3,db4] ~@2 [ab3,db4] ~@2 [ab3,db4] [ab3,c4] ~@2 c4@3 [ab3,c4], ~@12 ab3 ~@3", // Db5 Ab
  M: "~@3 [bb3,db4] ~ [bb3,db4] ~@2 [bb3,db4]!2 ~@2 [bb3,db4]!2 ~@2", // Bbm
  N: "~@2 db4 [ab3,db4] ~ [ab3,db4] ~@2 db4 [ab3,db4] ~@2 [ab3,c4]@3 [ab3,c4]", O: "~@3 [gb3,bb3]@3 db4@2 ~@6 f3 ab3",
  P: "bb3 db4 eb4 ~ bb3@2 eb4 ~@2 db4 ~ f4@2 db4 ~ f4, ~@3 db4@2 ~@5 bb3@4 bb3@2",
  Q: "~ c4@2 eb4@2 ~ c4 a3 ~@2 db4 ~@3 db4 bb3, ab3@4 ~ ab3@2 ~@2 bb3@2 bb3@2 bb3@2 ~, ~@6 f4 ~",
  R: "[~@2 db4 ~@2 bb3 ~ bb3@2 ~@9 db4 ~ db4@2 ~ db4@2 bb3 db4 bb3@2 ~ gb3@2, ab3@11 ~ ab3@2 ab3@2 gb3@6 gb3@8 ~@2, ~@3 bb3@2 ~ db4@2 ~@2 bb3@2 ~@3 c4@2 bb3@4 ~ bb3@2 ~@8, ~@4 f4@2 ~@3 f4@2 db4@2 eb4@2 ~@14 db4@3]/2",
  S: "ab3@2 ~ db4 ~@5 db4 ~@2 ab3@2 ~ ab3, ~ bb3!3 ab3@2 ~@2, ~@5 f4@2 db4@2 ~@2 eb4@2 ~ c4@2",
  T: "[~@4 bb3 ~@3 bb3 ~ bb3 db4 ~ bb3 ~ bb3@6 ~@2 eb4 ab3@3 db4@2 eb4@6 ~@13, gb3@6 ~ db4@2 ~@39, ~ bb3 ~ bb3 ~@7 bb3 ~@12, ~@3 db4@2 ab4@2 ~@2 ab4@2 ~ ab4@2 f4@7 f4@2 ~@25]/3",
  U: "[bb3,eb4] ~@2 [ab3,db4] ~ [ab3,db4]@3 [ab3,db4] ~@2 [ab3,db4] ~ [ab3,db4]@2 ~", // Eb5 Db5
  V: "[ab3,c4] ~ [ab3,c4] ~@2 bb3 ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~", // Ab Gb
  W: "[ab3,a3,db4] ~@2 [ab3,db4] ~ [ab3,db4] ~@2 [ab3,db4] ~ [ab3,c4]@3 [ab3,c4] ~@2", // Amaj7 Db5 Ab
  X: "[gb3,bb3]@3 [gb3,bb3] ~ [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~ [gb3,bb3] ~@2", // Gb
  Y: "~@2 [bb3,db4] ~@2 [bb3,db4]@3 [bb3,db4] ~ [ab3,c4]@3 [ab3,c4] ~@2", // Bbm Ab
  Z: "[gb3,bb3]@3 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3]@3 [gb3,bb3]", // Gb
  AA: "~@2 [ab3,db4] ~@2 [ab3,db4] ~@2 [ab3,db4] ~ [ab3,c4]@3 [ab3,c4] ~@2", AB: "~@2 [f3,ab3]@3 ~ [gb3,bb3]@9 ~",
  AC: "[~@12 ab3@2 c4 ~@8 [f4,ab4]@2 f4@2 eb4@3 ~@6 eb4 g4@3 ~@6 c4@2, ~@10 f3@5 eb4@7 ~@8 c4@4 ab3@8 ab3@4 ~@2, ~@17 [gb3,bb3]@14 ~ f3@14 ~@2, ~@35 c4@8 eb4@5, ~@37 f4 ~@2 g4@6 ~@2]/3", // Fm Gb
  AD: "[~@10 ab4@3 db4@2 ~ f3@2 ~ eb4@2 f4@3 ~@6 c4@2, gb3@15 ~ ab3@5 [gb3,bb3]@11, ~@2 bb3@13 ~@17, ~@4 db4@7 ~@4 c4@2 ~ c4@2 ~@7 eb4@5, ~@7 f4@9 ~@8 g4@8]/2", // Gb
  AE: "~@3 db4@2 f4@2 eb4@7 ~ eb4, gb3@3 ~@5, ~@2 bb3@3 ~@2 c4 ~@6 f4@2",
  AF: "~@2 f4 ab4 bb4 ab4 ~ bb4 ab4 f4 bb4 ab4 f4 bb4 f4 ~, bb3 ~@3",
  AG: "~ [bb4,eb5] ~ [bb4,eb5]!2 bb4 eb5 ~ [eb6,gb6,ab6,bb6] [bb5,db6,gb6] ab5 bb5@2 eb5 bb4 ~", // Eb5 Ebm Gb
  AH: "~@2 [bb3,eb4] ~@2 eb4 ~@2 [bb3,eb4] ~ [ab3,db4]@3 [ab3,db4] ~@2", // Eb5 Db5
  AI: "~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3]@2 ~ [gb3,bb3] ~", // Gb
  AJ: "~@2 [gb3,bb3] ~@7 bb3@3 [gb3,bb3] ~@2, ~@10 gb3 ~@5", // Gb
  AK: "~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3] ~@2 [gb3,bb3]@2 ~ [ab3,c4] ~", // Gb Ab
  AL: "~@5 [bb3,db4] ~@2 [bb3,db4] ~ [ab3,c4]@3 [ab3,c4] ~@2", // Bbm Ab
  AM: "[f3,ab3]@2 ~ [f3,ab3] ~@2 [gb3,bb3]@4 ~@2 gb3 ab3 bb3 db4", AN: "eb4@13 ~ bb3 db4, ~@13 ab3@2 ~",
  AO: "eb4 ~ f4 eb4@10 ab3 bb3 db4", AP: "eb4@2 db4 bb3@11 ~ bb3", AQ: "db4@14 ab3 bb3",
  AR: "db4 eb4 f4 eb4@11 bb3 db4", AS: "~ eb4 ~ bb3@10 ~ bb3 db4, ~ db4@6 ~",
  AT: "db4@2 c4@6 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4] ~ [f3,ab3,c4,eb4] ~", // Fm7
  AU: "[gb3,bb3,db4,f4]@2 [gb3,bb3,db4,f4]@2 [gb3,bb3,db4,f4]@2 [gb3,bb3,db4,f4] ~ [gb3,bb3,db6,eb6,gb6,ab6] [gb5,ab5,bb5] [eb6,gb6,ab6] bb5 [bb4,eb5] gb4 ab3!2", // Gbmaj7 Ebm7 Gb Ab7 Eb5
  AV: "~@2 [bb3,eb4]!2 ~ [bb3,eb4] ~ [ab3,db4] ~@2 db4 [ab3,db4] ~ [ab3,db4]@2 [ab3,db4]", // Eb5 Db5
  AW: "[ab3,c4]@2 [ab3,c4]!2 ~ [ab3,c4] ~@2 [gb3,bb3] ~ [gb3,bb3]@3 [gb3,bb3] ~@2", // Ab Gb
  AX: "~@2 [ab3,db4]!2 ~ [ab3,db4]@3 [ab3,db4] ~ [ab3,c4]@3 [ab3,c4] ~@2", // Db5 Ab
// … 129 more lines