Strudelify

Come in Out of the Rain

Wendy Moten

KeyF majorTempo120 bpm
0:00/0:00
// Come in Out of the Rain — Wendy Moten
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 121 bars on a 16-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 · electric bass finger
const bass = note(`<
  ~ A B A C D E D F G H I J K@2 L M N O P Q H I R S T U V W X Y Z AA AB U AC AD AE AF AG AH AI D E D F G H I J K@2 L M
  AJ O AK AL AM AN U V W X Y Z AA AB U AC AD AE AF AG AH AI A AO AP AQ A AR AS AT AU@2 AV AW AX AY AZ BA BB@2 BC BD BE
  BF AG BD BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW@5
>`.pickRestart({
  A: "f1@13 ~ f1 ~", B: "f1@2 c2@2 f2@11 ~", C: "f1 c2", D: "f1@12 ~@2 f1 ~", E: "f1 c2 f2@6", F: "f1@8 c2@7 ~",
  G: "f1@4 f2@3 f1", H: "g1@4 g2@3 g1", I: "a1@4 a2@3 a1", J: "bb1 a1", K: "[d2@3 d1@2 a1 ab1 g1@5 g2@3 g1]/2",
  L: "c2@13 ~ g2@2", M: "c2@8 db2@7 ~", N: "d2@5 a1 d2 a1", O: "d1@13 ~ a1@2", P: "d2@5 a1 d2 ab1", Q: "g1@13 ~ d1@2",
  R: "bb1@4 bb2@3 bb1", S: "c1@3 c2 c3@3 g2", T: "c3@3 g2 c3 g2 c2 c1", U: "f1@4 f2 c2 f1 e1", V: "d1@3 d1 d2@2 d1@2",
  W: "bb1@7 f1", X: "bb1@2 ~@2 bb1@7 ~ bb1@4", Y: "a1@13 ~ a1@2", Z: "d1@5 ~ d1@2 d2@2 a1@2 d1@4",
  AA: "eb2@11 ~ eb2@2 d2@2", AB: "c2@3 g1 c2 g1 c1 e1", AC: "d1@5 ~ d1@2 d2@4 d1@4", AD: "bb1@13 ~ bb1@2",
  AE: "a1@4 db2@3 a1", AF: "d2@7 ab1", AG: "db2@13 ~ db2@2", AH: "c2@3 g1", AI: "c1@15 ~", AJ: "d2@7 a1",
  AK: "d2@6 a1 ab1", AL: "g1@13 ~ d2@2", AM: "g1@13 ~ g1@2", AN: "c2@6 g1@2 c1@7 ~", AO: "f1@11 ~ f1@4",
  AP: "db1@8 db2@6 db1 ~", AQ: "db1@7 ~ db2@6 eb1@2", AR: "f1@5 ~ f1@2 a1@2 g1@2 f1@4", AS: "db1@13 ~ db1@2",
  AT: "eb1@9 ~ bb1@2 eb2@2 eb1@2", AU: "[f1@6 c2@6 f2@10 c2@2 f1@2 ~ g1@2 ~ a1@2]/2", AV: "bb1@8 bb2@5 ~ bb1@2",
  AW: "c2@4 c3@3 c2", AX: "db2@4 db3@3 db2", AY: "d2@8 d3@4 d2@3 ~", AZ: "eb1@5 ~ bb1@5 ~ eb2@4",
  BA: "~@2 bb1 ~ eb2@2 bb1 ~ eb2@2 bb1@2 eb1@3 ~", BB: "[e1@5 ~ b1@6 e2@6 b1 ~ e2@3 ~ e2@4 b1@4, ~@20 f2 ~@11]/2",
  BC: "a1@11 ~ a1@2 ab1@2", BD: "gb1@13 ~ gb1@2", BE: "d2@13 ~ a1@2", BF: "d2@2 ~@2 d2@6 ~ e2@2 ~ d2@2",
  BG: "g1@11 ~ gb1@2 g1@2", BH: "e1@6 b1@2 e2@2 b1@2 e1@3 ~", BI: "a1@4 a2 e2 a1 ab1", BJ: "gb1@5 ~ gb1@2 gb2@4 gb1@4",
  BK: "d2@13 ~ d2@2", BL: "db2@4 f2@3 db2", BM: "gb2@7 c2", BN: "f2@13 ~ f2@2", BO: "e2@3 b1", BP: "e1@15 ~",
  BQ: "a1@9 ~ e1@2 a1 ~ e1@2", BR: "g1@9 ~ d1@2 g1@2 d1@2", BS: "gb1@5 d1 gb1 d1", BT: "f1@7 ~ c1@2 db1@2 d1@2 eb1@2",
  BU: "e1@13 ~ e1@2", BV: "gb1@7 ~", BW: "[gb1@2 f1@24 ~ a1@52 ~]/5",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · piano
const piano = note(`<
  ~@5 A@3 ~@9 B@4 ~@5 C@2 D@2 E F G H I@3 J K L M@3 N@2 O P@3 Q R@2 ~ S T@2 U@2 V@2 C@2 D@2 E F G H I@3 W X Y Z@4 AA AB
  AC@2 AD AE AF@2 AG AH AI AJ AK@2 AL@2 AM@2 AN@2 AO AP AQ AR AS@3 AT AU AV AW@2 AX AY AZ BA BB@2 BC@3 ~@2
>`.pickRestart({
  A: "[~ f4 g4 a4@7 g4 a4@2 bb4@2 a4@8 ~, f5@7 ~@9]/3",
  B: "[~@10 [f4,a4]@12 ~@4 [f4,a4]@10 ~@6 [f4,a4]@10 ~@6 [f4,a4]@5 ~, ~@6 d5@15 ~ db5@14 ~@2 c5@13 ~@3 b4@9 ~]/4", // F
  C: "[~@10 f3@2 ~@2 [e2,e3] ~@11 d3@2 ~@2 d3 ~, f2@6 ~@2 d2@7 ~, ~@2 f3@7 ~@9 d3@6 ~@8, ~@2 c4@3 ~ c4@3 ~ c4@3 ~ c4@2, ~@6 [f4,a4]@13 ~@3 [f4,a4]@10]/2", // E F
  D: "[~@5 bb3 ~ bb3 ~@5 bb3 ~ bb3, bb2@14 ~@2 bb2@15 ~, ~@2 bb3@4 f4@11 ~@3 e4@6 ~@2 e4@4, ~@4 d4@6 ~@2 d4@5 ~ bb3@7 ~@7, ~@3 bb4@7 ~ [g4,c5]@5]/2", // C5
  E: "~@5 a3 ~ d3, a2@3 ~, ~ a3@2 [e4,a4]@5, ~@2 c4@3 ~ c4@2", // A5
  F: "~@10 d3@2 c4@2 d3 ~, d2@15 ~, ~ d3@3 ~@4, ~@2 c4@3 ~@3, ~@3 [f4,a4]@4 ~", // F
  G: "g4@2 f4@2 ~@2 bb3@4 eb3@2 [bb3,eb4]@2 eb3 ~, [eb2,bb4]@7 ~, f4 ~@3 eb4@7 ~@5, ~@3 eb3 ~@4", // Eb5
  H: "~ [bb3,d4,f4] ~ c3 [bb3,d4,f4] ~ [c4,e4,g4]@2, c2@15 ~, ~@10 c3@5 ~", // Bb C
  I: "[[f3,c4,f4,a4]@4 ~@4 a4@2 bb4@2 f3@2 ~@4 d3@2 c4@2 ~@2 a4 ~ bb4@2 d3@2 ~@4 bb2@2 [c4,d4]@2 ~@8 bb1 ~, ab4 ~@3 f3@6 ~@6 d2@14 [c4,d4]@5 ~@3 bb2@4 ~@2 bb2@4, ~@6 c4@7 ~ c4@4 ~@4 d3@5 ~@3 c5@8 ~@10, ~@8 f4@5 ~ [f4,c5]@9 ~ [c4,f4]@5 ~ f4@10 [c4,d4,f4,bb4]@6 ~@2, ~@32 bb1@13 ~@3]/3", // F Csus2 F5 Bb
  J: "~@6 f4@2 [db2,db4,e4]@4 ~@2 db2 ~, [db4,g4,c5]@3 ~ a4@4, ~@4 a2@4 db3@3 ~ [db3,g4]@4", // Dbm C Dbdim
  K: "[d4,f4,a4]@6 ~@6 d3@2 d2 ~, d2@3 ~, d3@5 ~ d3@4 [f4,a4]@6, ~@4 d4@3 ~", // Dm F
  L: "[db4,f4,a4]@6 ~@6 db3@2 db2 ~, db2@13 ~@3, ~@6 db3@5 ~@5, ~@8 [db4,f4,a4]@7 ~", // Dbaug
  M: "[[f4,a4]@2 bb4 ~@2 a4@2 ~@2 a4 f4 ~@2 f4 e4 ~ [f1,f2]@8, [c2,c3,d4]@14 ~ c2@12 ~@21, ~@3 g4@4 ~ c3@6 ~@10, ~@8 bb4@2 ~ c4@3 ~ f4@9]/3", // F Csus2
  N: "[~@3 g4@6 ~@2 g4@2 a4@3, ~@2 db4@15 ~ c4@8 ~@6, ~@2 f4@7 ~ f4@3 ~@3]/2", O: "g4@15 ~",
  P: "[~@10 f5@11 ~@21 f5@6, ~@6 a4@11 ~@5 bb4@10 ~@6 g4@10, ~@26 f5@15 ~@7]/3",
  Q: "~@4 [a5,c6]@3 ~ g5 [g5,ab5] f5@2 g5@2 f5@2, ~@4 ab5 ~@3 c6@3 ~ c6@4", R: "[g5 f5 d5 f5@3 ~@2 e5@8, c6@7 a5@9]/2",
  S: "[bb4,d5]@7 ~ g4@4 bb4@2 g4@2", T: "[~@14 d4@2 db4@5 ~ [g4,a4] f4 e4@3 f4@3 g4@2, d4@3 ~@5, ~@3 a4@7 ~@6]/2",
  U: "[c4@12 ~@2 c4@2 ~@6 a4@9 ~, a4@5 ~@3, ~@8 b3@7 ~]/2",
  V: "[a4@5 ~@5 f4@3 ~@3 [f4,bb4,c5]@9 ~@7, d5@3 ~@5, f4@9 ~@4 d4@12 ~@7, ~@6 a4@7 ~@19]/2", // Fsus4
  W: "a2@3 ~@3 f4@2 [db2,db4,e4]@4 ~@2 db2 ~, [db4,g4,c5]@3 ~ a4@4, ~@4 a2@4 db3@3 ~ [db3,g4]@4", // Dbm C Dbdim
  X: "[d4,f4,a4]@6 ~@6 d3@2 d2 ~, d2@3 ~, ~@3 d3@2 [f4,a4]@3, ~@4 d4@3 ~", // Dm F
  Y: "[db4,f4,a4]@6 ~@6 db3@2 db2 ~, db2@13 ~@3, db3@5 ~ db3@5 ~@5, ~@8 [db4,f4,a4]@7 ~", // Dbaug
  Z: "[[f4,a4]@4 bb4@2 ~@4 a4@4 ~@4 a4@2 f4@2 ~@4 f4@2 e4@2 ~@10 c5@6 [g4,a4] ~@7 [c0,d0,e0] [f0,g0,a0,b0] [c1,d1,e1,f1,g1,f2,g2] [c2,d2,e2] [g1,a1,b1] [d1,e1,f1] c1 ~@3, [c2,c3,d4]@14 ~ c2@12 ~@5 [f1,f2]@15 g4@7 ~@10, ~@6 g4@8 ~@2 c3@12 ~@4 f3@27 ~@5, ~@16 bb4@4 ~@2 c4@6 ~@2 f4@8 c4@21 ~@5, ~@40 f4@8 f4@11 ~@5]/4", // F Gsus2 C G7 C G Dm Csus2 …
  AA: "[db4,f4,ab4]@6 ~@6 db3@2 db2 ~, db2@3 ~, db3@4 ~@2 db3@5 ~@5, ~@8 [db4,f4,ab4]@7 ~", // Db
  AB: "[eb4,g4,bb4]@6 ~@6 db3@2 db2 ~, db2@3 ~, db3@5 ~ db3@5 ~@5, ~@8 [eb4,g4,bb4]@7 ~", // Eb
  AC: "[[f4,a4,c5]@6 ~@2 [f4,a4,c5]@6 ~@2 [f4,a4,c5]@6 ~@6 f3@3 ~, f2@31 ~, f3@4 ~@2 f3@7 ~ f3@7 ~ f3@4 ~@6, e3 ~@23 [f4,a4,c5]@7 ~]/2", // F
  AD: "[f4,ab4]@3 ~ [f4,ab4]@3 db4, db4@5 ~ db4@6 ~@4", AE: "[g4,bb4]@3 ~@3 eb4@2, eb4@5 ~ eb4@4 ~@6, ~@8 [g4,bb4]@7 ~",
  AF: "[[bb4,c5]@3 ~ [bb4,c5]@3 ~@3 f4@2 ~@4, f4@5 ~ f4@6 ~@2 f4@6 ~@12, ~@2 [a4,c5] ~]/2", // Bbsus2 Am
  AG: "[db5,f5,ab5]@5 ~ [bb4,db5,f5]@3 ~ [f4,bb4,db5]@3 ~ [db5,f5,ab5] ~", // Db Bbm Db
  AH: "[c5,eb5,g5]@3 ab5 g5 ~ c5 ab4, ~@5 eb5@3", AI: "[db4,f4,ab4]@7 ~ [db4,f4,ab4]@4 db3@2 d4 ~, db3@11 ~@5",
  AJ: "[d4,f4,bb4]@6 ~@6 d3@3 ~, d3@5 ~ d3@5 ~@5, ~@4 [d4,f4,bb4]@3 ~", // Bb
  AK: "[[ab4,db5]@5 ~ [ab4,db5,eb5]@5 ~ [ab4,db5,eb5]@6 ~@2 [ab4,db5,eb5]@6 ~@2 [ab4,db5,eb5]@3 ~]/2", // Db5 Absus4
  AL: "[[a4,d5,e5]@5 ~ [a4,d5,e5]@5 ~ [a4,d5,e5]@6 ~@2 [a4,d5,e5]@6 ~@2 [a4,d5,e5]@3 ~]/2", // Asus4
  AM: "[~@10 a3@2 ~@2 [ab2,ab3] ~@11 gb3@2 ~@2 gb3 ~, a2@6 ~@2 gb2@7 ~, ~@2 a3@7 ~@9 gb3@6 ~@8, ~@2 e4@3 ~ e4@3 ~ e4@3 ~ e4@2, ~@6 [a4,db5]@13 ~@3 [a4,db5]@10]/2", // Ab A
  AN: "[~@10 d4@2 ~@2 d4@2 ~@10 d4@2 ~@2 d4 ~, d3@14 ~@2 d3@15 ~, ~@2 d4@4 a4@11 ~@3 ab4@6 ~@2 ab4@4, ~@4 gb4@6 ~@2 gb4@5 ~ d4@7 ~@7, ~@3 d5@7 ~ [b4,e5]@5]/2", // E5
  AO: "~@5 db4 ~ gb3, db3@3 ~, ~ db4@2 [ab4,db5]@5, ~@2 e4@3 ~ e4@2", // Db5
  AP: "~@10 gb3@2 e4@2 gb3 ~, gb2@15 ~, ~ gb3@3 ~@4, ~@2 e4@3 ~@3, ~@3 [a4,db5]@4 ~", // A
  AQ: "b4@2 a4@2 ~@2 d4@4 g3@2 [d4,g4]@2 g3 ~, [g2,d5]@7 ~, a4 ~@3 g4@7 ~@5, ~@3 g3 ~@4", // G5
  AR: "~ [d4,gb4,a4] ~ e3 [d4,gb4,a4] ~ [e4,ab4,b4]@2, e2@15 ~, ~@10 e3@5 ~", // D E
  AS: "[[a3,e4,a4,db5]@4 ~@4 db5@2 d5@2 a3@2 ~@4 gb3@2 e4@2 ~@2 db5 ~ d5@2 gb3@2 ~@4 d3@2 [e4,gb4]@2 ~@8 d2 ~, c5 ~@3 a3@6 ~@6 gb2@14 [e4,gb4]@5 ~@3 d3@4 ~@2 d3@4, ~@6 e4@7 ~ e4@4 ~@4 gb3@5 ~@3 e5@8 ~@10, ~@8 a4@5 ~ [a4,e5]@9 ~ [e4,a4]@5 ~ a4@10 [e4,gb4,a4,d5]@6 ~@2, ~@32 d2@13 ~@3]/3", // A Esus2 A5 D
  AT: "db3@3 ~@3 a4@2 [f2,f4,ab4]@4 ~@2 f2 ~, [f4,b4,e5]@3 ~ db5@4, ~@4 db3@4 f3@3 ~ [f3,b4]@4", // Fm E Fdim
  AU: "[gb4,a4,db5]@6 ~@6 gb3@2 gb2 ~, gb2@3 ~, ~@3 gb3@2 [a4,db5]@3, ~@4 gb4@3 ~", // Gbm A
  AV: "[f4,a4,db5]@6 ~@6 f3@2 f2 ~, f2@13 ~@3, f3@5 ~ f3@5 ~@5, ~@8 [f4,a4,db5]@7 ~", // Faug
  AW: "[[a4,db5]@2 d5 ~@2 db5@2 ~@2 db5 a4 ~@2 a4 ab4 a4, [e2,e3,gb4]@14 ~ e2@12 ~@5, ~@3 b4@4 ~ e3@6 ~@2, ~@8 d5@2 ~ e4@3 ~@2]/2", // A Esus2
  AX: "~@2 a4 e4@2 a3 e4 g3, a2@13 ~@3, [a4,e5]@5 ~ a4@10, ~@2 a3@7 ~@7", // A5
  AY: "~@2 a4 e4@2 g3 e4 g3, g2@15 ~, [a4,e5]@4 ~@2 a4@9 ~, ~@2 g3@7 ~@7", // A5
  AZ: "~@2 a4 e4@2 gb3 e4 gb3, gb2@15 ~, [a4,e5]@4 ~@2 a4@9 ~, ~@2 gb3@7 ~@7", // A5
  BA: "~@4 a4@2 e4@4 f3@2 e4@2 f3 ~, f2@15 ~, [a4,e5]@2 ~ a4@4 ~, ~@2 f3@7 ~@7", // A5
  BB: "[[a4,d5] ~@2 e4@2 a4 ab4 a4@3 ~@6, e4@4 a4@5 ~@23, ~ db5@5 ~@10]/2", // D5
  BC: "[~@2 f4@3 ~@11 d5@6 ~@8 db5@15 ~@3, ~@2 [b4,d5]@6 f4@15 ~@4 e4@17 ~@4, ~@5 a3@15 ~@3 a3@21 ~@4, ~@11 b4@11 ~@6 a4@17 ~@3]/3", // Bm
})).s("gm_piano").gain(0.45).pan(0.3)

// chords · epiano2
const epiano2 = note(`<
  ~ A@4 B@4 C D E F G H I J K L M N O P Q R@2 ~@16 S@3 T C D E F G H I J U@2 V W X Y ~@16 Z@2 AA AB AC AD ~@12 AE AF AG
  AH ~@12 AI@4 ~@7
>`.pickRestart({
  A: "[~@2 f4@2 g4@2 a4@4 f5@2 e5@2 bb4@12 f5@2 e5@2 a4@6 f4@2 g4@4 a4@4 g4@17 ~, c5@5 ~@27]/4",
  B: "[~@10 f5@2 ~@2 bb4@12 f5@2 e5@2 a4@6 f4@2 g4@4 a4@4 g4@17 ~, ~@6 e5@7 ~@19]/4",
  C: "a3 ~@6 f3, f2, ~ f3@4 ~@3, ~ a3@2 a3, ~@3 f4@5", D: "~@7 g3, g2, bb3 bb3@2 bb3, ~ g3@4 g3@2 ~, ~@3 f4@5",
  E: "~@3 c4, a2, c4 c4@2 ~, ~ a3@4 a3@2 ~, ~@3 f4@5", F: "[bb2,a3,c4,d4,f4] [a2,db4,g4,a4,c5], bb3@6 ~@2 a3@5 ~@3",
  G: "d3@3 ~@2 [c4,d4,f4,a4]@3, [d4,f4,a4]@5 ~@3, c4 ~, ~@3 d3@3 ~@2", H: "[b3,e4,f4,a4]!2, g2@7 ~, g3@3 ~@5",
  I: "[d4,f4]@10 [bb3,d4,f4,a4]@5 ~, bb3 ~, c3@3 ~@5", J: "[d4,f4]@7 ~ [db2,db4,e4,g4]@8, ~@8 db3@5 ~@3",
  K: "~@4 f4@2 ~@8 d3 ~, d3@13 ~@3, ~ d4@3 ~ f4@3, ~@3 a4@3 d4@2",
  L: "~@4 f4@2 ~@4 f4@2 ~@2 d3 ~, d3@7 ~, ~@2 db4@9 ~ db4@4, ~@3 a4@3 ~@2",
  M: "~@2 f4 a4@2 ~@2 d3, d3@3 c4, ~@2 c4@7 ~ f4@6", N: "~@2 f4 a4@2 ~@2 g2, g2@3 b3, ~ b3@4 f4@3",
  O: "~@7 g3, g2@15 ~, ~ f3@4 f4@3, ~ g3@2 f3, ~@3 bb3@5", P: "~@7 g3, a2, ~ f3@4 f4@3, ~ g3@2 f3, ~@3 c4@5",
  Q: "~@7 bb3, bb2@5 bb2@3, ~ a3@5 a3@2, ~@2 bb3@5 ~, ~@3 [d4,f4]@5", // Dm
  R: "[~@8 [bb3,f4,a4]@4 ~@4 d4@2 [bb3,d4,f4,a4]@4 ~@2 [bb3,d4,f4,a4]@4 [bb3,d4,f4,g4]@3 ~, c3@29 ~@3, ~@2 g3@9 ~ g3@7 ~@3 g3@6 ~@4, ~@4 bb3@4 ab4 ~@23, ~@3 d4@3 ~ bb3@2 ~@7]/2", // Bbmaj7 Gm7
  S: "[~@2 f3@2 g3@2 ~@12 g3@2 a3@2 ~@12 f3@2 g3@2 a3@9 ~, ~@6 a3@8 bb4@11 ~@5 a4@18, ~@10 f5@15 ~ f5@22, ~@12 e5@13 ~@3 e5@20, ~@11 bb3@3 ~@10]/3",
  T: "[g3,b3] [g3,bb3]", // G Gm
  U: "[d3@5 ~@7 a4@2 ~@14 d3@2 db4@2, [d4,f4,a4]@8 d4@6 ~@2 [db4,f4,a4]@8 db4@5 ~@3, ~@6 d3@6 ~@2 d3@7 ~ d3@5 ~@5, ~@10 f4@5 ~@11 [f4,a4]@5 ~]/2", // Dm Dbaug F
  V: "[c4,f4,a4]@6 ~@2 c4@4 ~@2 c4 ~, d3@5 ~ d3@6 d3@4, ~@8 [f4,a4]@7 ~", // F
  W: "[b3,f4,a4]@6 ~@6 g2@3 ~, g2@5 ~ g2@5 ~@5, ~@8 [b3,f4,a4]@7 ~", // Bm7b5
  X: "[g2,bb3]@3 ~@4 bb3, [d4,f4,a4]@2 bb3 g2, ~@6 g2@4 [d4,f4,a4]@5 ~", // Gm Dm
  Y: "c3@4 ~@2 bb3@2 [bb3,d4,f4,g4]@7 ~, [bb3,d4,f4,a4]@3 ~@5, ~@4 c3@11 ~", // Gm7 Bbmaj7
  Z: "[~@8 a4@7 ~, f3@15 ~, ~ c4@14 ~, ~@2 f4@3 c5@10 ~, ~@8 g4@5 ~ g4@16 ~@2]/2",
  AA: "~@6 ab4@7 ~@3, c4, ~@2 db4@11 ~@3, ~@4 f4@9 ~@3", AB: "~ bb4@3, eb4, ~ g4@7", AC: "~@3 c6 bb5 a5 f5 c5",
  AD: "bb4 a4 g4 f4 c4 f4 g4 a4", AE: "~@6 [e4,a4,db5]@5 ~ [e4,ab4] ~ [e4,a4,db5]@2, ~@12 b4@2 c5 ~",
  AF: "~@6 [e4,a4,db5]@5 ~ [e4,ab4,b4] ~ [a4,c5,db5] ~, ~@7 e4", // A E A
  AG: "~@6 [gb4,a4,d5]@5 ~ [gb4,a4,db5] ~ [gb4,a4] ~, ~@7 d5", AH: "~@4 b4 db5 e5@2",
  AI: "[e5 a4@2 e5@2 g5@2 ~@2 a4@2 e5@2 g5@2 ~@2 a4@2 e5@2 g5@2 ~@2 a4@2 e5@2 g5@2 e5, [e3,db4]@16 [d3,a3,b3]@16 [d3,gb3,a3]@15 ~ [d3,f3,a3,b3]@14 ~@2, a3@7 e5@2 ~@6 e5@2 ~@6 e5@2 ~@7]/4", // Dbm Bm7 D Bm7b5
})).s("gm_epiano2").gain(0.22).pan(0.6)

// chords · epiano2 · soft notes
const epiano2_soft = note("<~@9 A ~ B C D E F@2 ~@29 A ~ B C D E F@2 ~@67>".pickRestart({
  A: "~@5 f3@2 ~", B: "~@7 a3", C: "~@3 bb3 ~@3 a3", D: "~@4 c4 ~ d3 [d2,d3]", E: "~@3 g3@3 ~ g2, ~@3 g3",
  F: "[~@4 bb3 ~ c3 ~ c3@2 c3 c2 ~@3 db3, c2@7 c2@4 ~@5, a4@5 ~@11, ~@3 c3@3 ~@2 [bb3,a4]@4 ~@4]/2", // Bbmaj7
})).s("gm_epiano2").gain(0.13).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@21 A B C D@2 E@4 F@2 G H I J K L M@4 N@4 O ~ P ~ Q R ~@2 S T U V W X Y Z AA@2 AB@2 AC AD I J K L M@4 ~@6 AE AF AG@2
  AH AI AJ AK AL@2 AM@2 AN AO AP AQ AN AO AR AS AN AT AP AU AV@4 ~@4 AW@7
>`.pickRestart({
  A: "bb3", B: "[a3,c4]", C: "[bb3,d4]", D: "[f4@3 g4, bb3]/2",
  E: "[c6@10 a5@2 bb5@2 ~@2 [d4,f4,a4]@16 ~@2 bb5@2 a5@2 ~@13 a5@3 g5@5 a5@3 bb5@2, [c4,f4,a4] ~ bb4@2, ~@14 c6@20 ~@4 bb5@13 ~@13, ~@2 [d4,f4] [e4,g4]]/4", // Dm F Dm Em
  F: "[[c4,e4,c6] [d4,f4,a5], a4]/2", G: "c6 bb5, [eb4,g4,bb4]@15 ~", H: "[d4,f4,bb4,f5]@8 [e4,g4,c5,g5]@7 ~",
  I: "[c4,a4]", J: "[f4,a4]@15 ~", K: "[d4,bb4]", L: "[db4,a4]", M: "[d4 db4 [d4,bb4]@2, f4@63 ~, a4 ~]/4",
  N: "[[c4,a4]@2 [db4,bb4]@2 [c4,a4]@2 b3 [bb3,e4], f4@7 ~, ~@3 g4]/4", O: "a3", P: "c4", Q: "d4", R: "b3", S: "d5",
  T: "e5", U: "f5", V: "a5", W: "d6", X: "c6", Y: "[c4,f4,a4]", Z: "[d4,f4,a4]", AA: "[[d4,f4] [e4,g4], bb4]/2",
  AB: "[[c4,e4] [d4,f4], a4]/2", AC: "[eb4,g4,bb4]@15 ~", AD: "[d4,f4,bb4]@8 [e4,g4,c5]@7 ~", AE: "[f4,ab5]",
  AF: "[g4,bb5]", AG: "[bb4@15 ~ a4@8 ~@8, c6@3 ~]/2", AH: "[db4,c6]", AI: "[eb4,bb5]", AJ: "[db4,f5]",
  AK: "[d4,bb5]@15 ~", AL: "[[ab4,db5,eb5]@31 ~]/2", AM: "[a4,d5,e5]/2", AN: "[e4,db5]", AO: "[gb4,db5]",
  AP: "[gb4,d5]", AQ: "[ab4,e5]", AR: "[g4,b4]", AS: "a4 b4, e4", AT: "[a4,db5]@15 ~", AU: "[f4,db5]",
  AV: "[gb4 f4 [gb4,d5]@2, a4@63 ~, db5 ~]/4", AW: "[a4@55 ~]/7",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.6)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~ A B A C A B A C ~@12 D ~@2 E@2 ~@21 F ~ G ~@2 H@2 ~@60 I J@6>".pickRestart({
  A: "[c3,f3,a3]", B: "[db3,f3,bb3]", C: "[d3,b3] [db3,f3,bb3], g3", D: "g3", E: "d4/2", F: "bb3", G: "d4 db4",
  H: "[bb3@3 ~]/2", I: "[db4,e4]", J: "[[eb4,gb4]@18 [d4,f4]@26 [db4,e4]@51 ~]/6",
})).s("gm_string_ensemble_1").gain(0.13).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B@7 A B@7 ~ C@7 B C@3 D@3 B ~ A B A B A B@7 D B@2 D B@2 C@7 B C@3 D@2 E C F C B C@3 B C@3 D C@3 B
  C G C B C@3 D C D C B C@3 D@2 E C F D@2 B D C D H ~@4
>`.pickRestart({
  A: "x ~@6 x", B: "x", C: "x ~@2 x ~@3 x", D: "x ~@2 x ~@4", E: "~@3 x ~@4", F: "x ~@2 x ~@2 x ~", G: "x ~@2 x ~ x!3",
  H: "~ x ~@6",
})).gain(0.55)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@11 A ~ A ~ A ~@3 A ~ A ~ A ~@13 A@3 ~@8 A ~ A ~ A ~ A B@2 A B ~@12 A@3 ~@25 A ~@5 A@3 ~@2 A@2 B ~@2 C ~ D ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x", C: "~@15 x", D: "~@11 x ~@4",
})).gain(0.27)

// drums · rim
const rim = s("rim").struct("<~ A ~ A ~ A ~ A ~@34 A ~ A ~ A@13 ~@62>".pickRestart({
  A: "~ x",
})).gain(0.49)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@16 B ~@7 C ~@11 A ~@13 D ~@7 C ~@9 E ~@3 E ~@3 F ~@3 E ~@3 G ~@3 H ~@3 E ~@11 I ~@7
>`.pickRestart({
  A: "~@3 x!2 ~@3", B: "~@6 x!2", C: "~@3 x", D: "~@8 x ~@2 x!2 ~@3", E: "~@5 x!2 ~", F: "~@13 x ~@2", G: "~@5 x!3",
  H: "~@11 x ~@2 x ~", I: "~@7 x",
})).gain(0.55)

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

// … 63 more lines