Strudelify

Love Walked In

Gershwin

KeyF majorTempo120 bpm
0:00/0:00
// Love Walked In — Gershwin
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 98 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "ACOU BASS"
const bass = note(`<
  A B C D@2 E@2 F@4 G H@2 I@2 J@3 K@2 L M@5 N O@3 P@2 Q@2 R S@3 T@3 U@8 V@3 W@3 X@5 Y@3 Z@2 AA AB@2 AC AD@2 AE@3 AF@3
  AG@3 AH@3 AI@2 AJ@3 AK@3 AL@2 AM AN ~@2
>`.pickRestart({
  A: "~@5 c2 ~ c2@8 ~@5 c2 ~ c2@8 ~@2", B: "~@2 c2 ~@2 c2@8 ~@4 c2 ~ c2@5 ~@8", C: "a2@8 ~ d2@3 ~@5 gb2@2 ~@5 g2@8",
  D: "[~@4 db2@2 ~ c2@10 ~@2 gb1@2 ~ f1@14 bb1@6 ~@6 bb1@2 ~ a1@7 eb2@6, ~@4 d2 ~@59]/2",
  E: "[~@2 d2@7 gb2@7 g2@13 d2@2 b1@12 c2@6 ~@9 [f3,g3]@2 e3@4]/2", // Fsus2
  F: "[~ g2@2 ~ c2@5 eb2 ~ f2@7 b1@7 ~ bb1@12 a1 ~ a1@13 eb2@2 d2@6 ~ gb2@6 ~@2 g2@5 ~@2 g1@7 b1@7 ~ d2@7 c2@13 ~@2 gb2@12 eb2@2, ~@70 db2 ~@6 d2@2 ~@49]/4",
  G: "~@13 bb2 ~ bb3@15 ~@2", H: "[~@20 f2@7 bb2@14 ~ d2@12 bb1@2 ~ a1@7]/2",
  I: "[eb2@7 d2@7 ~ gb2@7 ~@15 g1@10 f2 ~ e2@2 eb2@13, ~@22 g2@25 ~@17]/2",
  J: "[bb1@2 eb2@2 ~@5 eb2@7 ~@6 a1@9 d2@2 ~@6 gb2@2 ~@5 g2@3 ~@5 db2@3 ~@4 c2@5 gb2@5 ~@2 f2@16 ~ bb2@6]/3",
  K: "[~@2 d2@7 ~@15 d2@12 gb1@2 g1@7 ~ a1@7 bb1@7 b1@4]/2", L: "~@2 c2@7 gb2@7",
  M: "[~ f2@10 c2@2 b1@2 ~ bb1@12 db2@2 a1@13 eb2@2 d2@7 gb2@8 g2@7 a2@7 bb2@6 ~@2 b2@7 c3@12 g2@2 ~@6 g2@2 gb2@8 f2@14 c2@13 ~@2 f1@12]/5",
  N: "bb1@2 ~ f2@2 ~@5 b1@7 bb1@14 ~",
  O: "[f2@12 bb2@2 ~ b2@6 ~ e2@7 bb2@7 ~ eb2@7 a2@12 eb2@2 ~ d2@7 gb2@7 g2@7 ~ db2@7 c2@6 ~@2]/3",
  P: "[~@4 f2@2 ~@6 f2@2 a1@7 bb1@7 ~ b1@7 c2@7 d2@8 eb2@6 ~ e2@6]/2",
  Q: "[~@2 f2@4 eb2@2 ~ d3@7 c3@8 bb2@7 a2@7 eb2@7 ~ d2@7 ab2@5 gb2@2 g2@4]/2", R: "~ d2@2 ~ g1@7 a1@7 bb1@7 ~ c2@6",
  S: "[~ d2@7 g1@7 ~ c2@7 f1@7 bb2@7 ~ a2@7 bb1@7 a1@8 eb2@7 d2@7 gb2@8 g2@7 a2@7]/3",
  T: "[bb2@7 ~ b2@7 c3@8 d3@7 eb3@6 ~ e3@6 ~@2 f3@4 c3@2 ~ f2@7 g2@8 ab2@8 ~@6 g2@8 f2@7]/3",
  U: "[eb2@7 d2@7 ~ c2@7 bb1@7 ab1@7 ~ a1@7 eb2@7 d2@7 ~ gb2@7 g2@7 a2@8 bb2@7 f2@7 eb2@7 ~ bb2@6 ~ eb3@7 eb2@5 ab2@2 ~ a2@7 eb2@7 d2@7 ~ gb2@6 ~ g2@5 db2@2 g1@8 c2@7 e2@8 f2 ~@3 f2@2 ~ a1@7 bb1@7 ~ b1@7 c2@7 a1@7 ~ eb2@7 d2@7 g1@7 ~ d2@6]/8",
  V: "[~ a2@7 g2@7 ~ gb1@7 db2@7 ab2@8 gb2@7 f2@5 gb2 ~ d3@7 ~ c3@7 bb2@7 a2@7 ~ eb2@7 d2@6 ~, ~@8 db2 ~@39]/3",
  W: "[ab2@7 ~ g2@5 gb2@2 a2@7 d2@7 ~ a2@7 g2@7 f2@8 e2@7 db2@8 c2@7 g1@7 c2@8 gb1@7]/3",
  X: "[f1@7 g1@8 ab1@7 a1@7 bb1@8 c2@7 d2@7 gb2@8 b2@7 f2@7 eb2@7 ~ bb2@5 gb2 ~ a2@7 eb2@7 ~ d2@6 ~ ab2@5 gb2@2 g2@5 d2@2 ~ g1@7 c2@7 e2@8 f2@7 eb2@6]/5",
  Y: "[~ d2@7 ~ ab1@5 bb1 ~ g1@7 db2@8 c2@7 gb2@7 ~ f2@7 c3@7 d3@8 c3@7 a2@7 eb2@7 ~ d2@6, ~@53 d3@2 ~@41]/3",
  Z: "[~ gb2@5 eb2@2 g2@8 a2@7 bb2@7 b2@7 ~ c3@7 d3@7 eb3@7 ~ e3@4]/2", AA: "~ eb3@2 f3@7 b2@8 bb2@7 d2@6 ~",
  AB: "[~@8 eb2@7 d2@7 gb1@7 ~ g1@7 a1@7 bb1@8 b1@5 bb1@2 ~@5]/2", AC: "~@2 d2@7 ~ eb2@6 ~ e2@8 f2@4 eb2 ~@2",
  AD: "[c3@7 d3@7 ~ db3@7 c3@7 gb2@7 ~ f2@7 b1@7 bb1@5 f2 ~@2 eb3@5]/2",
  AE: "[~@2 d3@7 bb1@5 db2 ~@2 a1@5 db2 ~ d3@7 c3@8 gb2@7 g2@7 a2@7 ~ bb2@6 ~ c3@7 bb2@8 f2@7 eb2@6]/3",
  AF: "[~ bb2@7 ~ a2@7 eb2@7 d2@6 ~@2 ab2@5 gb2 ~ bb2 ~@2 g2 ~ d2@2 g1@8 c2@7 e2@8 f2@10 ~@2 b1@2 bb1@10 ~@2 bb1@2]/3",
  AG: "[~ a1@11 ~ db2@2 ~ d2@7 gb2@7 g2@8 ~@5 bb2 ~ d3@7 db3@7 ~ c3@7 g2@7 c2@7 ~ gb2@7 f2@5 ~@2]/3",
  AH: "[~@5 b2@2 ~ bb2@7 d2@7 a2 ~@4 a2@2 ~ eb2@6 ~ d2@7 gb2@7 ~ g2@19 e3@2 ~ d3@5 c2@14 eb3@2 ~]/3",
  AI: "[~@5 db3@2 ~@5 gb2@3 f2@14 c2@12 g1@2 ~ f1@7 g1@8 ab1@5]/2",
  AJ: "[~@2 a1@7 bb1@28 ~@2 b2@7 e2@7 bb2@7 ~ eb2@6 ~ a2@12 eb2@2 ~ d2@7 gb2@6]/3",
  AK: "[~ g2@8 db2@7 c2@7 gb2@7 ~ a2@12 d2@2 eb2@13 db2@2 d2@12 a1@2 ~ gb1@12 ab1 ~ g1@7]/3",
  AL: "[~ a1@7 bb1@7 ~ b1@7 c2@7 d2@8 eb2@6 ~ e2@5 f2@3 ~@4 f3@3 e3@3 ~]/2",
  AM: "~@3 eb3@4 ~ d3@2 ~@5 db3@3 c3@2 ~@6 gb1@4 ~@2", AN: "f1@9 ~@23",
})).s("gm_acoustic_bass").gain(0.27).pan(0.3)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note(`<
  ~@3 A ~@6 B C@2 D ~@4 E F ~ G ~@2 H I J ~@3 K@2 ~ L ~@2 M ~@2 N O P ~@3 Q R ~@8 S ~@11 T U@2 V ~ W ~ X Y ~@12 Z ~@9
>`.pickRestart({
  A: "~@17 g1 ~@14", B: "~@15 e2 ~@2 f2@2 ~@12", C: "[~ f2@14 ~@15 a3@7 f3@7 ~ c3@7 ~@12]/2", D: "~@4 db2 ~@11",
  E: "~@12 a2 ~@3", F: "~@9 a2@15 ~@8", G: "~ bb1 ~@30", H: "~@23 bb2 ~@8", I: "~@8 c2@5 ~@19", J: "~@17 a1 ~@14",
  K: "[~@31 e2@6 ~@27]/2", L: "~ eb2 ~@14 f2 ~@15", M: "~@30 c2 ~", N: "~@15 bb2 ~@16", O: "~@5 eb3 ~@10",
  P: "~@10 a2@7 ~@15", Q: "~@14 ab2 ~@17", R: "~@24 eb2 ~@7", S: "~@15 gb1 ~@16", T: "a2 ~@3",
  U: "[~@27 c2@9 ~@18 eb2 ~@9]/2", V: "~@5 f2 ~@6 f2 ~@9 f2 ~@9", W: "~@29 eb2 ~@2", X: "~@4 ab2 ~@27",
  Y: "~@9 ab2 ~@22", Z: "~@4 gb2 ~@27",
})).s("gm_acoustic_bass").gain(0.13).pan(0.3)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A@2 B@3 C@5 D E@6 F@2 G@2 H@7 I J@2 K L@3 M N O P@4 Q R S T@2 U@3 V W X@2 Y Z AA@2 AB@2 AC AD AE AF@2 AG AH AI AJ AK
  AL AM AN AO AP@3 AQ@5 AR AS AT@2 AU@2 AV AW AX@4 AY AZ@3
>`.pickRestart({
  A: "[~ a3@12 [db4,eb4,ab4,bb4,eb5]@15 [d4,e4,a4,d5]@14 [db4,eb4,ab4,bb4,db5]@14 ~ [a3,d4,g4,c5] ~@6, [c4,d4,g4,c5]@7 ~@25]/2", // Dbsus2 Dsus2 Dbsus2 Am7 Csus2
  B: "[[g3,db4,f4]@9 ~ e4@2 ~@5 [gb3,eb4,ab4,c5]@2 ~@5 db4@13 eb4@15 [db4,d4]@2 ~@5 a3@10 a4@12 d4@2 ~ c4@3 ~@3 [g3,db4,f4]@3 ~@3, ~@9 a4@2 ~@43 c4@15 ~@27]/3", // Gm7b5 Ab7 Dmaj7 Gm7b5
  C: "[~@2 [g3,e4,a4]@3 ~@4 [gb3,eb4,ab4,c5]@7 ~ bb4 b4@11 a4 ~ b4@2 c5@2 b4@2 ~@2 b4@5 ~@7 bb3 ~@4 d4 ~ f4 ~ gb4@3 ~@4 g4@3 ~@2 ab3 ~@2 g4@2 a4@3 d4@8 c4 ~ e4@2 ~@3 f4@2 ~@2 d4@2 ~ e4@2 c4@13 f4@2 [c4,a4]@3 ~@5 [gb3,c4,a4]@3 ~@4 d5@4 ~@3 d5@6 ~ d5@3 eb5 d5@2 ~ c5@2 d5@3, ~@16 a4@2 ~@26 c5@26 ~@5 c5@6 ~@36 c4 ~@8 c5@3 ~@5 a4@14 ~@12, ~@50 f3@2 ~@13 [bb3,db4]@7 ~@3 ab4 ~@14 ab3@11 ~@16 g3@4 ~@27 [f3,b3]@12]/5", // A7 Ab7 F Gbdim Bbm Fdim
  D: "~@2 eb5@3 ~@4 bb3 ~@4 c5@2 b4@2 bb4@5 [ab3,bb3,eb4]@9, ~ g5@6 ~@9, ~@5 e5@9 ~@18", // Absus2
  E: "[~ db6@2 d6@33 [ab3,bb3,d4,f4] ~ [eb3,bb3,d4,a4]@4 ~@4 eb3@3 ~@4 [eb3,gb3,f4,a4,bb4]@7 [d3,g3,a4,c5,e5]@12 c5@2 ~ f5@2 e5@2 c5@2 ~@3 d5@2 e5@2 ~@6 g3@2 ~@3 e4 ~ g4 ~@2 ab4@4 ~@3 a4@7 [bb3,bb4]@12 bb3 d4 ~ [f3,bb3,d4]@2 ~@3 bb4@2 [bb3,c5]@5 [ab3,bb4]@2 ~@5 [ab3,db4,f4]@7 bb3@2 ~ [f4,g4]@3 ~@4 [db4,eb4]@7 ~@6 [g3,db4,f4,c5,f5,a5]@9 ~, ~ [eb3,g3,bb3,d4,f5,bb5,f6]@35 g3@6 ~@3 [g3,a3,c5]@4 ~@3 [a3,d4,db5,f5]@8 f4@4 ~@10 e5@2 ~@13 d5@29 ~@12 c5@2 ~ a4@4 ~ bb3 ~@53, ~@94 c4 ~@14 eb4@8 ~@21 d4@7 db4 ~@15 db4@3 ~@28]/6", // Bb7 Ebmaj7 Ebm Am7 Bb Bbsus2 Absus2 Db …
  F: "[[gb3,eb5,bb5]@3 ~@4 [gb3,c5,c6]@6 ~@2 [db5,db6]@3 ~@4 d6@7 ~ [bb3,d5]@5 [bb3,eb4,g5]@2 ~@5 [a5,c6]@11 ~@3 c4 ~@2 e4@2 ~@3, ~@29 f5@5 ~ db5 ~@6 [g5,ab5]@2 ~@20]/2", // Ebm Gbdim Db Bb Eb Am Abmaj7
  G: "[f4@2 ~@3 d4 ~ e4@2 ~ c4@11 c4 g3 ~ [g3,a4]@2 ~@5 [gb3,ab4,c5]@3 ~@5 [a3,b4]@14 ~ c5@2 ~@5 b4@3, ~@21 f4@2 ~@8 db4 ~@21 b4@2 ~@9]/2", // Gsus2 Ab7 Asus2
  H: "[~@9 [a3,bb3] ~@8 [bb3,eb4,e4]@20 ~ [a3,d4,g4] ~ [d4,c5]@5 [ab3,d4,c5] ~ [ab3,c5]@3 ~@4 c5@3 ~@5 c5@3 ~@4 [db4,f4,f5]@6 bb3 ~ [gb3,a5]@11 ~@4 [f3,e4,d6]@12 [a3,b3,e4,d5,a5,d6]@2 [b3,e4]@5 [b3,e4]@2 ~ [f3,a3]@5 [f3,a3,bb3,d4,e5,a5,c6]@16 ~ [e3,eb4]@13 ~ [eb3,g3,bb3,d4,bb5,d6,f6]@34 [g3,bb3,d4]@4 ~ [eb3,bb3,a4]@4 ~ gb3@11 ~ [c5,f5]@2 ~ [d3,c4,e5]@14, ~@2 c5@36 a5@2 ~@22 db4@3 ~@24 [gb3,c4,f4,c5,a5]@3 [a3,c4,a5]@14 ~ [f3,a3,d5,d6]@7 e4@12 ~@59 f4@10 [eb3,a3]@14 ~@15, ~@90 c6@4 ~@13 a5@8 [b3,d5,d6]@12 ~@9 [ab3,bb3,ab5,c6]@15 ~@34 eb3@2 ~@2 [g3,d4]@5 [d4,c5]@14 ~@16, ~@56 c5@7 ~@12 f5@17 ~@11 gb3 ~@8, ~@112 c6@8 e6@32 ~@57 g5@14 ~]/7", // Bbmaj7 Eb Dsus4 D7 Dm7b5 Ab Db Gbm …
  I: "~@10 g5@2 f5@2 ~ gb4@2 ~@3 e5 ~ d5 ab3@2 ~@2 d5@2 ~ c5 ~, [a3,g4]@12 ~@17 db4@3, ~@5 c5@7 ~@20, ~@8 f5@4 ~@3 e5 ~@16", // A7
  J: "[~@3 c5@2 [db4,f4]@3 bb4@2 c5@2 ~ ab4@2 ~@3 g3@2 ~@6 gb3@12 ~ ab4 [bb3,a4]@3 ~@4 [f3,bb3,d4,g4,bb4]@8 ~@3 [f3,bb3]@6, ~@17 [db4,f4]@2 ~@20 [d4,c5]@3 ~@15 [d4,f4]@6 ~]/2", // Db Bbmaj7 Gm7 Bb5 Db D7 Dm
  K: "~ [bb3,db4,e4,g4]@5 [a3,c4] ~@6 [bb6,db7]@2 ~@2 [a6,c7] ~@2 [gb6,bb6]@2 ~ [f6,a6]@2 c6 ~ [db6,gb6]@2 ~ c6@2, ~@3 f4 ~@12", // Bbdim Am Bbm Am Gb F Gb5
  L: "[a5@2 db6@2 ~ c6@2 f5@2 [gb5,bb5]@2 [f5,a5]@2 ~@3 db5@2 c5@2 ~@3 [bb4,db5]@2 ~ [a4,c5]@2 f4@2 ~ [gb4,bb4]@2 [f4,a4]@2 ~@3 c4 ~@10 g4@4 ~ c4 ~ d4@2 e4@2 ~@3 d4@5 ~@3 d4@6 c4@3 ~@6 a4@2 ~@8, ~@4 a5@2 ~@10 gb5 ~@31 d4@2 ~@35 [gb3,c4]@6 ~@5, ~@49 eb4@2 ~@34 [ab4,c5]@3 ~@8]/3", // Gb F Bbm Am Gb F Gbdim Ab
  M: "~@11 [f3,bb3,d4] a4@2 bb4 ~ d5@2 f5@2 a5@3 gb5 g5 ~ a5@2 bb5 ~ c6 d6, ~@13 bb3@3", // Bb
  N: "~ f6@2 e6@2 ~ d6@2 db6 ~ c6 ~ bb5@2 a5@2 ~ ab5@2 ~@2 eb5@2 db5@2 c5 ~ bb4@2 g4 ab4@2, ~@5 eb6@2 ~@9 g5@2 ~@14",
  O: "a4 ~@2 db5 ~@2 db5 ~ c5@3 f4@7 ~@4 db4@4 ~ f4 ~@4, ~@2 d5@2 ~ d5@2 ~@25",
  P: "[c5 ~ d5@2 ~ c5@3 ~ a4@2 ~ f4@3 ~ d4@2 bb3@2 ~ b3@2 g4@2 ~ f4@5 gb3@2 [g3,e4]@6 ~ d4@4 ~@2 eb3 c4@4 ~@3 [eb3,b3]@5 ~@2 d3@5 ~ f4@2 ~@3 eb4@2 f4@2 [eb3,bb3,d4]@3 ~@2 c4@6 ~@9 eb3@2 ~@8 eb3@2 ~@5 a5@2 ~ g5@2 ~ eb5@2 d5@2 c5 ~@4, ~@60 bb3@3 ~@28 c4@9 ~@18 f5@2 ~@8, ~@96 bb3 ~@31]/4", // C Abm Ebmaj7
  Q: "db5@2 a4@2 ab4@2 ~ d3@2 eb4@2 c4@2 db4@2 d4 ~ g4@2 gb4@2 ~ f4@2 ~ bb3@3 ~@4, ~@3 gb4 ~@12, ~@7 f4 ~@24",
  R: "~@3 [bb3,c4] ~ d4@3 ~@2 eb4@2 d4@2 eb4@2 ~ db4 ~@2 d4@2 g4 ~@2 a4@2 d5@3 a4@2, ~@19 gb3@5 ~@8", // Bbsus2
  S: "~@2 bb4@2 ~ d4 ~ gb4@2 a4@3 gb4@2 ~ g4@2 d4@2 bb3@2 ~ g3@2 c4@3 a3@2 db4@2 ~, c5 ~@15, ~ bb3@2 ~@29",
  T: "[bb3@2 eb4@2 ~ c4@2 f4@3 db4@2 g4@2 ~@3 a4@2 ~ f4@2 bb4@3 ~@2 c5@2 ~@3 d5@2 ~ b4 ~ e5@3 c5@2 f5@2 ~ d5@2 g5@2 ~ e5 ~ a5@2 ~@2 bb5@2 [f3,d4]@2 ~ f5@2 ~, ~@14 eb4@2 ~@13 db4@10 ~@5 gb3@12 ~@2 bb3 ~@5, ~@15 [ab3,c4,db4]@10 ~@5 f4@9 ~@25]/2", // Dm Dbmaj7
  U: "[a5@2 bb5@2 a5 ~@2 bb5@2 a5@2 ~ f5@2 c5 ~ f5@3 f4 ~ [bb4,f5]@3 ab4@2 a4 ~@2 f4 ~ d4@4 ~ bb3 ~ f4@4 ~@4 [g3,db4]@5 ~@3 [gb3,c4,f4]@4 ~@4 d4@4 ~ [f3,b3,f4]@2 ~@2 a4@2 ~ d4@2 f4@3 ~@2 f4@3 ~@5 d4@2 ~@5, ~@16 bb4 ~@53 [ab4,d5]@3 ~@23]/3", // Bb5 Gdim F Fdim Abdim
  V: "~@2 [f3,b3,d4]@3 ~@11 bb3@2 ~@6 bb6@2 ~ g6 ~ a6 e6 ~, ~@23 c7@2 ~ gb6@2 ~@4", // Bdim
  W: "db6 eb6@2 c6 bb5 ~@2 db6@2 a5 g5 ~@2 gb5 ~ e5 ~ eb5 ~@2 c5@6 ~@4 c5 ~, ~@6 eb6@2 ~@4 a5@2 ~@5 db5@2 ~@11",
  X: "[~@2 g5@2 ~ f5@2 a5 ~ c6 ~ e6 ~ f6@2 e6@2 d6 c6@2 ~ a5@2 ~ g5 bb5@2 ~@3 f5 bb5@2 ab5@2 gb5 f5 ~@2 eb5 d5 ~ f5@2 d5 ~ bb4 ~ g4 bb4 ~ d5 ~ f5@2 e5@2 d5@2 bb4@2 ~ c5@2, ~@2 e5 ~@7 bb5 ~@21]/2",
  Y: "b4@2 bb4 ~ c5@2 a4@2 bb4@2 a4 ~ g4 gb4@2 ~@2 f4@2 ~ e4@2 ~ c4@3 ~@2 c4@3 ~",
  Z: "~@3 eb4@2 ~@3 db5 d5@2 f4@3 ~@2 f4@2 f4@4 ~@3 f4@4 ~@3, ~@8 f5@3 ~@21",
  AA: "[~ [eb3,f4]@4 ~@3 d4@3 ~@2 f4@2 [eb3,gb3,a3,d4]@5 f4@3 d4@4 ~@3 [d3,a3,c4,f4]@5 g4@2 ~ d4@3 ~@2 [a3,d4,f4]@2 ~ g4@3 ~ a4@2 bb4@4 ~ c5 ~@2 [a3,d4]@3 ~, ~ [bb3,d4]@2 ~@3 g4@2 ~@7 a4@2 ~@47, ~@7 f4@2 ~@28 f4@2 ~@20 [gb4,db5]@4 ~]/2", // Ebsus2 D Dm7 Dm D5 Bb Gb5
  AB: "[~ [d4,d5] [ab3,gb4,e5]@5 ~ f5@5 [db4,f4,g5]@4 ~ ab3@4 ~ [a4,a5]@6 ~@3 c5 ~@2 d5 ~ f5 ~@2 a5@2 ~@2 ab5 a5@2 f5@2 ~@2 c5 ~@2 f5@4 f5@2 ~@4, ~@2 d4@3 ~@2 [ab3,db4,f4]@4 ~@6 [db4,f4,ab4,ab5]@5 ~ [g3,db4,f4]@12 ~@4 [gb3,c4,f4,c6]@3 ~@2 c6@3 ~@17]/2", // D Dbm Gm7b5 A Db Gm7b5 F
  AC: "~@4 [f3,d4]@2 ~@6 a6@3 ~@2 g6@3 ~ e6@3 ~@2 e6@2 c6@3 ~, ~@4 bb3 ~@20 f6@2 ~@5", // Dm
  AD: "d6@3 ~ c6@3 a5@2 ~ g5@3 ~@2 [f3,gb5]@3 f5@3 ~ d5@2 ~ bb4@4 ~ [bb3,g4] ~, ~@15 bb3 ~@16", // Gbmaj7 Eb
  AE: "e5@4 eb5@2 ~ d5@5 db5 ~ [d4,c5]@3 ~@2 d5@3 ~ a4@2 ~@2 bb3 ~ [ab3,c5]@3, ~@13 bb4 ~@2", // D7 Ab
  AF: "[~@2 d5@2 ~@3 a4 ~@2 bb4 ~ db4@2 d5@2 ~ a4 ~ bb4 ~@2 c5@3 ~@7 a4 ~@2 c5@2 d5@2 ~@2 bb4@3 ~@9 a4 ~@2 c5@2 d5@2 a4@2 bb4 ~, ~@12 c5 ~@14 gb3@10 ~@27]/2",
  AG: "c5@2 d5@2 c5@2 bb4@2 ~ g4@2 ~ f4 ~@7 bb3 c5@2 b4@2 bb4@2 a4 ab4@2 e4 ~, ~@4 a4 ~@11",
  AH: "~@2 db4@2 c4@2 ~ e4 ~@2 g4@2 ~ f4 ~ a4 ~ c5 ~ e5@2 ~ e5@2 f5@2 ~ d5@4 c5, ~@13 e5 ~@2",
  AI: "~ bb4 d5@2 c5@2 bb4@2 ~@2 bb4@2 a4@2 g4 ab4@2 gb4 ~ f4@2 eb4@2 d4 c4@2 b3@2 ~@4",
  AJ: "~@11 a3@2 ~ bb3 ~ d4 ~ f4@2 a4@2 ~@3 g4@2 ~ d4@2 f4@2",
  AK: "~@3 f4@2 ~@3 f4@2 ~ e4@3 ~ d4@2 c4@4 ~ b3@2 bb3@3 ~@3 bb3@2, ~@29 c4@2 ~",
  AL: "~@5 a3@3 ~@2 bb3@4 ~ c4@4 ~ [eb3,bb3,d4]@3 ~ eb4@2 ~ f4@2 g4@2 ~", // Ebmaj7
  AM: "a4@2 ~@3 [bb3,d4,eb4]@2 ~ c5@2 d5@2 ~ eb5@2 f5@2 ~ g5@2 [a3,d4,g4]@2 ~ a5@2 bb5@2 ~ c6@2 d6@2, ~@2 bb4@5 ~@25", // Ebmaj7 Dsus4
  AN: "~ e6 ~ f6 ~ g6@2 ~ a6@2 bb6 ~@4 d7@2 f7@3 eb7@2 d7@2 ~ c7 ~ bb6@2 gb6@2 ~, ~@2 a3@2 ~@13 db4 ~@14",
  AO: "[gb3,f4,f6]@2 ~ eb6@2 d6@2 c6@2 bb5@2 ~ b5 ~@2 [f3,e4]@2 ~@3 db6@2 ~ e6@2 db6@2 d6@2 ~ c6@2, c4 ~@14 b3 ~@16", // Gbmaj7 Fmaj7
  AP: "[bb5@2 a5@2 ~ g5@2 f5@2 ~ e5 ~ [ab3,db4,eb5]@2 ~ db5@2 c5@2 bb4@2 ~ ab4@2 f4@2 [c4,db4] g3 ~ db4@2 c4@2 ~ bb3 ~@4 f3@2 a2@2 a3@2 ~ f3@2 ~ bb3@2 g3@2 c4@2 ~ [gb3,a3]@2 ~ d4@2 b3@2 e4@2 ~ c4@2 f4@2 [f3,b3]@2 g4@2 ~ e4@2 a4@3 f4@2 bb4@2 ~ [bb3,g4] ~ c5@2 g4 ~@2 d5@2 ~ c5, ~@12 f4 ~@13 eb4@2 ~@68]/3", // Absus4 Dbmaj7 Gbm Fdim Eb
  AQ: "[~@2 [a3,d4,g4]@2 ~@5 [db4,c5] ~ [g5,ab5,c6]@4 a5 ~@3 c5@3 ~@2 [ab3,d4,g4]@2 ~@5 f5@2 ~ [db4,f4] ~@4 [db4,f4] ~ [g3,db4,f4,f5]@4 ~@3 [e4,a5]@3 ~@4 ab5 [gb3,f4]@3 ~@4 [f3,a3,c4,e4,d5,g5,b5]@12 f3@2 ~ [f3,a3,b3,e4]@4 ~ [a3,b3,e4]@4 [b3,e4]@2 ~@4 f3@14 [e3,ab3,bb3,eb4,c5,e5]@15 [a3,e5,a5]@12 gb3@2 e4@3 ~@2 g4@2 f4 ~@2 e4@2 d4@2 c4@2 ~@4 c4@2 f4@2, ~@34 c5@2 ~@19 [c4,c6]@4 ~@19 e5@2 ~@2 eb5@7 [b3,e4,db5,db6]@3 [a3,bb3,d4,c5]@15 ~@15 a4@2 ~@10 c4 ~ ab3@10 ~@14, ~@55 c5@2 ~@21 e6@17 ~@65, ~@83 eb6@12 ~@65, ~@83 f3@4 [d5,d6]@5 c6@29 ~@39]/5", // Dsus4 Dbmaj7 Abmaj7 G Db Gm7b5 A5 Gbmaj7 …
  AR: "~@5 a4@2 ~@5 [gb3,c4,ab4,c5]@4 ~@4 [c4,e4,a4,d5]@12, ~@6 eb4 ~@9", // Ab7 Am
  AS: "c5@2 ~ g5@2 ~ d5@2 c5 ~ d5@5 eb5@3 ~@4 [bb3,d4] ~@5 c5@2 b4@2, ~ [f3,e4]@3 ~@7 f3 ~@4, ~@2 d5@3 eb5@2 ~@8 g5@13 ~@4, ~@3 b3@5 ~@10 e5@10 ~@4", // Bb Fmaj7
  AT: "[~@6 [e3,bb3]@9 ~ [eb3,g3,bb3,f4]@26 [eb3,g3,bb3,d4]@9 ~ [eb3,g3,bb3,d4]@7 [eb3,gb3,a3,d4]@5, ~ bb4@14 [bb4,f5]@28 ~@8 a4@8 c5@3 ~@2, ~@5 eb4@10 ~@27 f4@17 ~@5]/2", // Edim Eb Ebmaj7 D Bb5
  AU: "[~@2 [eb3,gb3,a3,d4,f4,a4,c5,f5]@7 ~ [d3,a3,c4,g4,c5]@14 ~@5 c5@2 f5@2 ~ g5@2 f5@2 e5 ~@4 e5 ~@2 d5 ~@4 d5@2 c5 ~@4 c5 ~@2 bb4 ~@2, ~@9 [e5,g5]@15 [a3,d4,f4]@10 ~@30]/2", // D7 Dsus4 Em Dm
  AV: "~ bb4 ~@7 [g3,db4,f4] ~@9 [gb3,c4,eb4]@12 ~, ~@4 a4@27 ~", // Gm7b5 Cdim
  AW: "[d4,c5]@2 ~@5 [f3,bb3,d4,g4,bb4]@9 ~ [f3,bb3,d4]@6 ~ [e3,db4]@6 ~@2, [f4,a4] ~@15 g4@7 a4@6 ~@3, ~@12 bb3 ~@3", // D7 Gm7 Bb Dbm F
  AX: "[~@5 [g3,db4]@4 [g3,db4]@5 [g3,db4]@7 [g3,db4,eb4,ab4,c5]@8 ~ gb3@6 ~ [gb3,c4]@6 ~ [gb3,c4,eb4,ab5,c6]@7 [gb3,c4,eb4,eb5,ab5,c6,eb6]@8 db6 ~@11 e4@2 [e5,e6]@3 ~@4 [e4,d5,d6]@3 ~@4 [f3,bb3,c5,c6]@3 ~@5 [f3,a3,bb3]@6 ~ eb5 ~ e5@5 ~ [bb3,g4]@4 ~ [a3,d4,f4,f5]@2 ~@4 [bb3,eb4,g4,bb4,d5,f5]@4 [a3,d4,gb4,a4,db5,e5]@2 ~, ~@4 c4@25 [c4,eb4,eb5]@8 ~@22 [f3,g5,g6]@14 ~@29 [bb3,a4,a5]@6 ~@20, ~@9 f4@20 c5@3 ~@4 c5@23 a3@11 [a3,c4,f5,f6]@2 ~@22 [bb4,bb5]@2 ~@7 eb4@6 [eb4,g5]@5 ~@14, ~@14 a4@16 ~@6 [eb4,eb5,ab5]@7 eb5@7 ~@10 d6@13 ~@55]/4", // Gdim Abmaj7 Gbdim Ab7 E E7 Fsus4 Bbmaj7 …
  AY: "~@4 [ab3,db4,f4,ab4,c5]@4 d5 [e4,g4]@2 ~@4 [gb3,b3,bb4,db5]@4 [f3,d4,f4]@2 ~@5 [gb2,db3,ab3,bb3,eb4,ab4]@5 ~, ~@3 eb5@4 ~@2 [c4,b4] ~@4 eb4@5 [bb3,a4,c5] ~@12", // Dbmaj7 Em Gb Dm Ebm7 Cmaj7 F
  AZ: "[~@13 b6@32 ~@3, [f2,c3,g3,a3,d4,g4]@2 ~, ~@11 a5@32 ~@5, ~@3 d6@8 ~, ~@25 g6@64 ~@7]/3", // Dm7
})).s("gm_piano").gain(0.4).pan(0.6)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A@2 B@2 ~ C@2 D ~ E F ~ G@2 H@2 I J@2 K L@5 ~@2 M N O@2 P Q R S@3 T U V W X Y Z AA AB@2 AC AD AE AF AG ~ AH AI AJ ~@3
  AK AL AM AN AO@2 ~ AP ~ AQ AR AS AT AU ~ AV AW AX ~ AY AZ BA@2 BB ~ BC@2 ~ BD ~ BE BF BG@3 BH ~@3
>`.pickRestart({
  A: "[~@14 c4@7 b3@7 ~@4]/2",
  B: "[~@10 [g3,c4]@3 ~@4 c4@2 ~@5 [f3,b3]@13 ~@2 e3@13 ~@12, ~@37 [ab3,bb3,c4]@15 ~@12]/2", // C5 Fdim Ab
  C: "[~@2 c4@3 ~@4 c4@7 ~ [f3,a3,c4,e4]@13 ~@7 a4@2 ~@25, ~@15 [f3,b3,e4]@7 ~@10]/2", D: "~@2 e3@3 ~@11 a3@8 ~@8",
  E: "~@3 [f3,c4,e4]@7 e4@6", F: "~@3 d5 ~@5 [f3,d4]@2 ~@21",
  G: "[~@14 d4@3 ~@11 c4@14 d4@6 ~@2 d4@5 ~@9, ~@42 [a3,g4]@13 ~@9]/2", // A7
  H: "[~@13 [gb3,c4]@8 ~ [f3,d4,g4]@13 f3 ~@8 f3@6 ~@14]/2", I: "~@2 g3@3 ~@4 g3@7 ~@16",
  J: "[[c4,f4]@3 ~@4 [c4,f4]@6 ~@2 [f3,b3,e4]@3 ~@4 [f3,b3,e4,d5]@6 ~@2 [f3,d4]@5 ~ e3@2 ~@19 g3 ~ ab3@4 ~]/2", // F5 E Bdim Dm
  K: "~@24 c4@3 ~@5",
  L: "[c4@3 ~@4 [f3,c4,e4,g4]@12 g4@2 ~@3 b4@2 a4@2 ~@13 f3@2 ~@8 e3@20 ~@2 [a3,g4]@5 g4 ~ [d4,g4]@3 ~@4 [ab3,d4,g4]@4 ~@4 [g3,f4]@3 ~@4 g3@7 ~ [c4,f4]@11 ~@4 d5@12 ~@8 a3@2 ~@13, ~@22 [f3,a3,b3,e4]@13 ~@15 ab3@21 ~@54 e5@2 ~@33]/5", // C A7 G5 G G7 F5 Fmaj7
  M: "~@9 c5@7, ~@17 a3@14 ~", N: "d4@12 ~@3 [a3,d4] ~@7 gb4@2 ~@5 [ab3,f4]@2, ~@23 d4 ~@8",
  O: "[~@5 g3@2 ~@17 bb3 ~@2 c4@12 ~ f3@3 ~@12 ab3@2 ~@7, ~@15 a4@23 ~@26]/2", P: "~ e3@5 ~@24 f6 ~",
  Q: "~@14 c5 ~@4 f5 ~ a4@2 ~@9", R: "~@9 d4@4 ~ g3 ~@4 e4@2 ~ gb3 ~@5 d4 ~ c4@2, ~@9 c4 ~@22",
  S: "[~@5 c4@2 ~@24 f3@3 ~@25 d4@13 ~@11 e5@2 ~@11, ~@5 gb3 ~@24 d4@3 ~@63, ~@31 bb3 ~@27 f3@8 ~@29]/3",
  T: "db4 ~@6 b4 ~@14 g3@3 ~@5 a4 ~", U: "~@13 a3@2 ~", V: "~@8 f3@5 ~@2 e3@5 ~ d3 ~@10", W: "~@3 d4 ~@2 g3 ~@9",
  X: "~ g3@2 ~@7 [g3,bb3,d4]@2 ~@19 db4", Y: "a3 ~@6 c4@2 ~@12 d4@2 ~@9, ~@7 a3 ~@24", Z: "~@5 g3 ~@13 c4@6 ~@7",
  AA: "~ f3@2 ~@29", AB: "[~@25 g4 ~@4 g3@8 ~@6 [c4,f4]@10 f5 ~@9, ~@15 a4 ~@16]/2", AC: "~@17 b4@2 ~@13",
  AD: "~@13 g4 f4 ~", AE: "~@21 d4@3 ~@8", AF: "~@16 [f3,d4]@3 ~@13", AG: "~@27 g4 d4 ~@2 d5", AH: "~@29 g4 ~@2",
  AI: "~@16 d4 ~@15", AJ: "~@23 d4 ~@7 d4", AK: "~@8 ab5 ~@2 f5 ~@5 d5@2 ~@13", AL: "~@17 d4 ~@14", AM: "~@30 e3 ~",
  AN: "~@12 db4 ~ a3@2 ~@12 d4@4", AO: "[~@12 g3@2 ~@13 c4@11 ~@2 a4 ~@13 b3 ~@9]/2",
  AP: "~@6 d4 ~@4 e4@2 ~@4 bb3 ~@14", AQ: "~@23 f4 ~@8", AR: "~ d4 ~@4 d4 ~@25", AS: "g3@4 ~@16 g3 ~@11",
  AT: "~@5 g4@2 ~@25", AU: "~@2 [d4,g4]@2 ~@8 c7@2 ~@4 g3 ~@13, ~@17 f4@2 ~@13", AV: "~@6 c4 ~@9", AW: "~@5 a3 ~@26",
  AX: "~@21 f3@2 ~@9, ~@21 d4 ~@10", AY: "~@3 g3 ~@3 g3 ~@9 g3@3 ~@5 a5@2 ~@5, ~@16 c4@3 ~@13",
  AZ: "~@23 a3@2 ~ f3@3 ~@3, ~@25 a3@3 ~@4", BA: "[~@25 db4 d4@13 ~@25]/2", BB: "~@5 f3@3", BC: "[~@8 d4@13 ~@11]/2",
  BD: "~@7 gb4 ~@24", BE: "bb3 f3 ~@13 ab3@2 ~@15", BF: "~@15 ab4",
  BG: "[~@27 e4@12 f3@2 [f3,a3,b3,e4]@3 ~@4 [f3,a3,b3]@4 ~@3 [a3,d4]@4 ~@3 d4@7 ~ e3@6 e3@3 ~@17, ~@13 c4@6 ~@29]/3", // Fmaj7 Bm7b5 D5
  BH: "~@9 g3 ~@5 gb4@4 ~@13",
})).s("gm_piano").gain(0.24).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F G H I J K L M N O P Q R B S T U V W X Y Z AA AB AC AD AE AF AG W AH AI AJ AK AL AM AN AO AP AG AQ AR AS AT
  AU AV AW AX AY AP AZ BA M BB BC BD BE G BF BG BH BI BJ BK BL BM P BN G BO S J U BP W BQ BR BS BT AL BU BV BW U R W BX
  BY BZ CA ~@3
>`.pickRestart({
  A: "x ~@11 x ~@14 x ~ x ~@2", B: "~@5 x ~@10", C: "~@7 x ~@16 x ~@7", D: "~@5 x ~@13 x ~@2 x ~@9",
  E: "~@2 x ~@14 x ~ x ~@11 x", F: "~@29 x ~@2", G: "~@7 x ~@5 x ~@2", H: "~@9 x ~@13 x ~@8", I: "~@7 x ~@6 x ~",
  J: "~@2 x!2 ~@5 x ~@6", K: "~ x ~ x ~@11 x ~@16", L: "~ x ~@11 x ~@13 x ~@4", M: "~@10 x ~@16 x ~@4", N: "~ x ~@2",
  O: "~@5 x ~@16 x ~@9", P: "~@2 x ~@16 x ~@12", Q: "x ~@16 x ~@4 x ~@8 x", R: "~@14 x ~@14 x ~@2",
  S: "~@7 x ~ x ~@11 x ~@10", T: "~@4 x ~@14 x ~@12", U: "~@4 x ~@11 x ~@14 x", V: "~@6 x ~@14 x ~@6 x ~@3",
  W: "~@11 x ~@16 x ~@3", X: "~@8 x ~@16 x ~@6", Y: "~@5 x ~@17 x ~@8", Z: "~@3 x ~@14 x ~@13", AA: "x ~@16 x ~@12 x ~",
  AB: "~@12 x ~@2 x ~@11 x ~@4", AC: "~@3 x ~@2 x ~", AD: "~@7 x ~@14 x ~@9", AE: "~@7 x ~@11 x ~@12",
  AF: "~ x ~@2 x ~@3", AG: "~@2 x ~@11 x ~@16 x", AH: "~@9 x ~@13 x ~@2 x ~@5", AI: "~@6 x ~@16 x ~@8",
  AJ: "~@3 x ~@14 x ~ x ~@11", AK: "~ x ~@28 x ~", AL: "~@15 x ~@11 x ~@4", AM: "~@13 x ~@11 x ~@6",
  AN: "~@4 x ~@6 x ~@4", AO: "~@7 x ~@12 x ~@11", AP: "~@5 x ~@11 x ~@14", AQ: "~@12 x ~@14 x ~@4",
  AR: "~@9 x ~@16 x ~@5", AS: "~@3 x ~@8 x ~@3", AT: "~@4 x ~@13 x ~@2 x ~@10", AU: "~ x ~@14 x ~ x ~@12 x",
  AV: "~@13 x ~@2 x ~@11 x ~@3", AW: "~@25 x ~@6", AX: "~@10 x ~@12 x ~@8", AY: "~@3 x ~@6 x ~@5",
  AZ: "~@3 x ~@11 x ~@14 x ~", BA: "~@3 x ~@4", BB: "~@7 x ~@24", BC: "~@4 x ~@16 x ~@10", BD: "~@2 x ~@16 x ~@11 x",
  BE: "~@4 x ~@2 x", BF: "~@9 x ~ x ~@11 x ~@8", BG: "~@21 x ~@10", BH: "~@3 x ~@5 x ~@6", BI: "~ x ~@13 x ~@16",
  BJ: "~@3 x ~@6 x ~@3 x!2", BK: "~@10 x ~@14 x ~ x ~@4", BL: "~@7 x ~@17 x ~@6", BM: "~@5 x ~@13 x ~@12",
  BN: "x ~@28 x ~@2", BO: "~@11 x ~@12 x ~@7", BP: "~ x ~@11 x ~@14 x ~@3", BQ: "~@8 x ~@14 x ~@6 x ~",
  BR: "~@13 x ~@6 x ~@11", BS: "~@3 x ~@16 x ~@11", BT: "x ~@16 x ~@11 x ~@2", BU: "~@5 x ~@6 x ~@3",
  BV: "~@9 x ~@12 x ~@9", BW: "~@4 x ~@2 x ~@11 x ~@12", BX: "~@4 x ~@8 x ~@2", BY: "~@6 x ~@14 x ~ x ~@8",
  BZ: "~@3 x ~@28", CA: "~ x ~@16 x ~@12 x",
})).gain(0.05)

// drums · rim
const rim = s("rim").struct(`<
  A B C D E F G H I J K L M C N E F O P Q J R L M S N T U O V Q W R X Y S Z T U AA V P AB AC X Y B Z D AD AA G P AE AC K
  A B C D AD F G H I J K A M C N E F O H AF J R L M S N E U O V Q W R L Y S Z T U ~@3
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@19 x ~@12", C: "~@17 x ~@14", D: "~@7 x ~@8", E: "~@3 x ~@4", F: "~@9 x ~@22", G: "~@3 x ~@12",
  H: "~ x ~@6", I: "~ x ~@28 x ~", J: "~@7 x", K: "~@25 x ~@6", L: "~@23 x ~@8", M: "~@5 x ~@2", N: "~@15 x ~@16",
  O: "~@7 x ~@24", P: "~@3 x ~@28", Q: "~@2 x ~@28 x", R: "~@13 x ~@2", S: "~@9 x ~@6", T: "~@13 x ~@18",
  U: "~@5 x ~@10", V: "~@5 x ~@26", W: "~@29 x ~@2", X: "~@3 x", Y: "~@21 x ~@10", Z: "~ x", AA: "~ x ~@2",
  AB: "x ~@28 x ~@2", AC: "~@27 x ~@4", AD: "~@11 x ~@20", AE: "x ~@14 x", AF: "~ x ~@29 x",
})).gain(0.21)

// drums · snare
const snare = s("sd").struct(`<
  A B ~ C D ~@5 E F ~ G H ~@3 I ~@5 F J ~@3 K L M N L O N ~ P ~@2 Q R M K L ~@2 S ~@2 T ~@4 U ~@2 V H D ~ W X ~@5 V ~ D
  ~ C ~@3 F ~@4 Y ~ M ~@3 Z AA O AB AC AD AE ~@3
>`.pickRestart({
  A: "~@5 x ~@2 x ~@3 x ~@6 x ~@7 x ~@4", B: "~@2 x!2 ~ x ~@4 x ~@6 x ~@2 x ~@3 x ~@7", C: "~@19 x ~@12", D: "~@3 x",
  E: "~@15 x", F: "~ x ~@30", G: "x", H: "~@27 x ~@4", I: "~@10 x ~@4 x ~ x ~ x ~@12", J: "~@5 x ~@2", K: "~@5 x ~@10",
  L: "~@7 x ~@24", M: "~@3 x ~@4", N: "~@31 x", O: "~ x ~@6", P: "~@13 x ~@2", Q: "~@10 x ~@2 x ~@18", R: "~ x ~@2",
// … 100 more lines

More by Gershwin