Strudelify
It's Raining Men cover art

1983 · Success

It's Raining Men

The Weather Girls

KeyF minorTempo137 bpm
0:00/0:00
// It's Raining Men — The Weather Girls
// 137 bpm, 4/4, key F minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 5 "STRINGS" named as a string part, played on string ensemble 1 (its piano patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 184 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · "BASS"
const bass = note(`<
  ~ A B C@2 D@2 E F A B C@2 D@2 E F A@8 G@6 H I G@2 J@2 H@2 K H L M@2 N@2 O P Q R L S@2 N@2 O P Q R T S@2 N@2 S@2 N@2
  S@2 N@2 U@2 V@2 W L S@2 N@2 S@2 X G@5 Y C Z D AA E@2 G Y C@2 D AA E@2 AB AC M@2 N@2 S@2 X AD S@2 N@2 U@2 V@2 W L G@14
  H I G@2 J@2 H@2 K H@2 L S@2 N@2 S@2 N@2 S@2 N@2 S@2 N@2 S@2 N@2 S@2 N@2 S@2 N@2 S@2 N@2 ~
>`.pickRestart({
  A: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", B: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2",
  C: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", D: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~",
  E: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", F: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  G: "f1 f2 f1 f2 f1 f2 f1 f2", H: "c2 c3 c2 c3 c2 c3 c2 c3", I: "c2@2 c3@2 c2@2 c3@2 c2@2 c3@2 c2@2 c3 ~",
  J: "bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2", K: "c2 c3 bb1 bb2 ab1 ab2 bb1 bb2", L: "c2 ~@7",
  M: "[db2@3 ~ db2@3 ~ db2@2 ab1@2 db2 ~ eb2@5 ~ eb2@3 ~ eb2@2 bb1@2 eb2@2 bb1@2]/2",
  N: "[c2@3 ~ c2@3 ~ c2@3 ~ c2 ~ f2@5 ~ f2@2 c2@2 f1@2 f2@2 f1@2 f2@2]/2",
  O: "db2 ~ db2@2 db2 ~ db2 ~ db2 ~ db2 ~ db2@2 c2@2", P: "bb1@2 bb1 ~ bb1 ~ bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  Q: "c2 ~ c2 ~ c2 ~ c2@2 c2@2 g1@2 c2@2 g1 ~", R: "c2 ~ c2 ~ c2 ~ c2 ~ c2@2 g1@2 c2@2 g1@2",
  S: "[db2@3 ~ db2@3 ~ db2@2 ab1@2 db2@2 eb2@5 ~ eb2@3 ~ eb2@2 bb1@2 eb2@2 bb1@2]/2",
  T: "c3 ~ c3@2 d3@2 eb3@2 e3@2 c3@2 g2@2 e2@2", U: "[bb1@4 ~@2 c2@6 ~@2 db2@6 ~@2 d2@7 ~@3]/2",
  V: "[e2@5 ~ f2@6 ~@2 g2@6 ~@2 ab2@9 ~]/2", W: "c3@4 c2@4 c3@4 c2@3 ~", X: "c2@3 ~ c2@3 ~ c2@3 ~ c2 ~ f2@2",
  Y: "f1@2 f2 ~ f1@2 f2@2 f1@2 f2@2 f1@2 f2 ~", Z: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2",
  AA: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2@2", AB: "c2 g2 c2 g2 c2 g2 ~ g2, ~@3 c2",
  AC: "c3 ~ c3 ~ d3@2 eb3@2 e3@2 c3@2 g2 ~ e2 ~", AD: "f2@3 ~ f2@2 c2@2 f1@2 f2@2 f1@2 f2@2",
})).s("gm_electric_bass_finger").gain(0.46).pan(0.6)

// chords · piano
const piano = note(`<
  ~ A B C@2 D@2 E F A B C@2 D@2 E F G H I J G H I K L@3 M@4 N O@2 P@2 Q@2 R S T U@2 V@2 W@2 X Y Z U@2 V@2 W@2 X Y AA U@2
  V@2 AB@2 V@2 U@2 V@2 AC@2 AD@3 AE U@2 V@2 AF AG AH AI@5 AJ AK@2 AL@2 AM AN AO AJ AK@2 AL@2 AM AN AP AQ U@2 V@2 U@2 V@2
  U@2 V@2 AR@2 AS@3 AE AT@2 L@3 AU L@3 AV L@3 AV AW N O@2 P@2 AX@2 R S AY T U@2 V@2 U@2 V@2 U@2 V@2 U@2 V@2 U@2 V@2 U@2
  V@2 U@2 V@2 U@2 V@2 AZ
>`.pickRestart({
  A: "f4@7 ~ g4@8, [f3,ab3,c4]@5 ~@3", B: "[ab3,c4]@8 bb4@7 ~, ab4@7 ~@9",
  C: "[c5@7 ~ eb5@8 f5@7 ~ ab5@5 ~@3, [bb3,eb4]@5 ~@3]/2", // Eb5
  D: "[[f4,f5]@2 ~ f4@2 ~ f5 ~@4 f4 f5 ~@3 f5@2 ~ f4@2 ~ f5@2 f5 ~@3 f5@2 ~ f4, ~@2 f5@3 f4@2 ~ f5@2 f5@2 ~@2 f5@2 ~@2 f5@4 ~@4 f5@2 ~@2 f5@2, ~@9 f4@2 ~@4 f4@4 ~@2 f4@3 ~ f4@2 f4@4 ~]/2", // F
  E: "f5 ~ f5 f4 f5@2 f5@2 ~@2 f5@2 f5@4, ~@4 f5 ~@3, ~@9 f4@7",
  F: "e4@2 ~ e4 e5@2 e4@2 e5 ~@3 e5@2 e4 ~, e5 ~ e5@2 ~@6 e5@2 ~@4, ~@11 e4@3 ~@2",
  G: "f6 ~ f6 f5 ~ f5 f6 ~ f6 f5 f6 f5 f6 f5 f6 f5", H: "[eb5,eb6,f6] ~ f6 f5 ~ f5 f6 ~ f6 ~ f6 f5 f6 ~ f6 f5",
  I: "[d5,d6,f6] ~ f6 f5 ~ f5 f6 f5 f6 ~ f6 ~ f6 ~ f6 f5", J: "[db5,db6,f6] ~ f6 f5 ~ f5 f6 ~ f6 ~ f6 f5 f6 ~ f6 ~",
  K: "[db5,db6,f6] ~ f6 f5 ~ f5 f6 ~ f6 ~ [bb4,bb5,f6] [b4,f5,b5] [bb4,bb5,f6] [ab4,ab5] [f4,f5,f6] [c4,c5]", // Db Bb5 Bdim Bb5 Ab F C
  L: "[[f3,ab3,c4]@18 ~@6 [f3,ab3] ~@2 [g3,bb3,eb4] ~@2 [f3,ab3,c4]@18, f2@15 ~@9 db4@2 ~@22]/3", // Fm Eb Fm
  M: "[~@8 [ab3,db4]@2 ~ [g3,bb3,eb4] ~@2 [f3,ab3,c4]@22 ~@4 [f3,ab3] ~@2 [g3,bb3,eb4] ~@2 [c4,f4,g4]@17 ~, ~@8 f3 ~@31 db4@2 ~@22]/4", // Db5 Eb Fm Eb Csus4
  N: "[c4,e4,g4]@8 [c4,e4,g4,c5]@5 ~@3", O: "[[f2,eb3,ab3,c4]@25 ~ [f3,ab3] ~@5, ~@26 c4@5 ~]/2",
  P: "[[ab3,db4,f4]@16 ~@6 [bb2,f3,ab3,db4,f4] ~@3 [ab3,db4,f4]@6, bb2@21 ~@5 bb2 ~@5]/2", // Db Bbm7 Db
  Q: "[[c3,f4]@20 ~@2 [c3,g3,c4,e4] ~@7 g3@2, ~@13 [c3,c4,e4]@3]/2", R: "[c4,f4]@2 [c4,f4]!2, c3",
  S: "[c4,e4]@2 [c4,e4] ~@4 [bb3,e4], c3!2, ~@3 [c4,e4]@2 c4@3, ~@5 e4@2 ~, ~@3 g3", T: "[bb3,e4] ~@15, c3 ~@7",
  U: "[[db2,ab3,db4,f4]@4 db4 ~ db4 ~ [db3,db4,f4,ab4] ~ [db4,f4,ab4]@2 ~@2 [ab4,bb4] ~@3 [eb3,eb4,g4]@2 ~@2 eb4@4 [eb4,g4]@2 ~@4, ~@7 eb3@2 ~@2 [eb3,f4]@3 ~@2, ~@7 eb4 ~@8]/2", // Db Absus2 Eb Ebsus2
  V: "[[c3,bb3,eb4,g4] ~@3 bb3@2 ~ bb3@3 [bb3,eb4,g4]@3 ~ [f2,f3,ab3,c4]@4 [eb3,ab3,c4]@3 ~@5 f2@2 [f3,ab3,c4] ~@3, ~@2 [eb4,g4]@3 ~@11, ~@6 c3@7 ~@9 [f3,ab3,c4]@6 ~@4]/2", // Cm7 Eb Fm Ab Fm Eb Fm
  W: "[[db2,ab3,db4,f4]@4 [ab3,db4] ~ db3 ~ ab3 ~ [ab3,db4,f4]@4 [db4,f4]@6 ~@4 [ab3,db4,f4]@2 [ab3,db4,f4]@6, ~@7 bb3@9, ~@7 bb2@4 bb2@5, ~@5 [ab3,db4,f4] ~@2]/2", // Db Db5 Db
  X: "c3@3 ~ [c3,c4,f4] ~@3 [c3,c4,f4] ~ [c3,c4,f4]@2 ~@2 [c3,c4,f4] ~", // F5
  Y: "~@2 c3@4 [c3,c4,e4] ~@5 [c4,e4]@3 ~, ~@2 [c4,e4] ~, ~@10 c3@5 ~", Z: "[c4,e4] ~@15, c3 ~@7",
  AA: "c4 ~ c4@2 d4@2 eb4@2 e4@2 c4@2 g3@2 e3@2",
  AB: "[[db2,ab3,db4,f4]@4 db4 ~ db4 ~ [db3,db4,f4,ab4] ~ [db4,f4,ab4]@2 ~@2 [ab4,bb4] ~ gb9@2 [eb3,eb4,g4]@2 ~@2 eb4@4 [eb4,g4]@2 ~@4, ~@7 eb3@2 ~@2 [eb3,f4]@3 ~@2, ~@7 eb4 ~@8]/2", // Db Absus2 Eb Ebsus2
  AC: "[[bb2,bb3,db4,f4]@4 ~@2 [c3,c4,f4]@5 ~@3 [db3,db4,f4]@5 ~@3 [d3,d4,f4,ab4]@6 ~@4]/2", // Bbm F5 Db Ddim
  AD: "[[g3,bb3,e4,g4]@5 ~ [f3,c4,f4,ab4]@7 ~ [g3,c4,e4,g4]@7 ~ [f3,c4,f4,ab4]@7 ~ [g3,c4,e4,g4]@6 [g3,e4,g4]@4 [g3,bb3,e4,g4]@4 [g3,bb3,e4,g4]@3 ~, ~@3 c4]/3", // Edim Fm C Fm C Edim
  AE: "[g3,bb3,e4,g4] ~@15", AF: "db2@3 ~ [ab3,db4,f4] ~ ab3 ~ [ab3,db4,f4] ~ [ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~",
  AG: "~@2 [eb3,bb3] ~@3 [f4,ab4]@4 [eb4,g4]@2 ~@4", AH: "[c4,f4]@2 ~@2 [c4,f4]@2 c3 ~ [c4,f4] ~ c4@2 ~@4, ~@10 f4 ~@5",
  AI: "[f5 ~ f6 f5 f6 ~ c6 f5 f6 ~ f6 f5 c6 ~ f6 c6 f5 ~ f6 ~ f6 f5 f6 f5 f6 ~ f6 f5 ~ f5 f6 c6 f5 ~ f6 ~ f6 c6 f5 ~ f6 ~ c6 f5 ~ f5 f6 c6 f5 ~ f6 ~ f6 [f5,c6] ~@2 f6 ~ c6 f5 ~ f5 f6 c6 f5 ~ f6 ~ c6 f5 f6 f5 c6 ~ f6 f5 ~ f5 f6 c6, [f2,c4]@77 ~@3, [f3,ab3]@15 ~]/5", // F5 Fm
  AJ: "f5 ~ f6 ~ c6 f5 f6 ~ [f5,f6] ~ c6 f5 ~ f5 f6 ~", // F
  AK: "[[ab3,c4,eb4,c5]@8 ~@8 [c5,f5]@7 ~ [eb5,ab5]@6 ~@2, ~@8 [ab4,eb5]@6 ~@2 ab2@13 ~@3, ~@10 [ab3,c4,eb4]@19 ~@3]/2", // Ab F5 Ab5 Ab
  AL: "[db4@16 [db3,db4]@7 ~ [db3,ab3,db4,f4]@4 ~@4, [ab3,f4]@23 ~@9, db3@9 ~@23]/2", AM: "[c3,f4]",
  AN: "[c4,e4]@7 ~ [g3,c4,e4]@3 ~@5", // C
  AO: "f5 ~ f6 ~ c6 f5 f6 f5 c6 ~ f6 f5 ~ f5 f6 c6, [f2,c4]@13 ~@3, [f3,ab3]@11 ~@5", // F5 Fm
  AP: "[c3,g3,c4] ~ [c3,g3,c4] ~@3 [c3,g3,c4] ~ [c3,g3,c4]@3 ~ [c3,g3,c4] ~@3", AQ: "c4 ~ c4 ~ d4 ~ eb4 ~ e4 ~ c4 ~@5",
  AR: "[[bb2,bb3,db4,f4]@3 ~@3 [c3,c4,f4]@5 ~@3 [db3,db4,f4]@5 ~@3 [d3,d4,f4,ab4]@6 ~@4]/2", // Bbm F5 Db Ddim
  AS: "[[g3,bb3,e4,g4]@5 ~ [f3,c4,f4,ab4]@7 ~ [g3,c4,e4,g4]@7 ~ [f3,c4,f4,ab4]@7 ~ [g3,c4,e4,g4]@6 [g3,e4,g4]@4 [g3,bb3,e4,g4]@4 [g3,bb3,e4,g4]@3 ~, ~@36 c4@11 ~]/3", // Edim Fm C Fm C Edim
  AT: "[[f3,ab3,c4]@18 ~@6 [f3,ab3] ~@2 [g3,bb3,eb4] ~@2 [f3,ab3,c4]@2, f2@15 ~@9 db4@2 ~@6]/2", // Fm Eb Fm
  AU: "~@8 [ab3,db4]@2 ~ [bb3,eb4] ~@2 [f3,ab3,c4]@2, ~@8 f3 ~@2 g3@2 ~@3", // Db5 Eb5 Fm
  AV: "~@8 [ab3,db4]@2 ~ [g3,bb3,eb4] ~@2 [f3,ab3,c4]@2, ~@8 f3 ~@7", AW: "[c4,f4,g4]@15 ~",
  AX: "[[c3,f4]@20 ~@2 [c3,g3,c4,e4] ~@3 c3@4 g3 ~, ~@13 c4 ~@2, ~@26 e4 ~@5]/2", // F5 C
  AY: "[c3,bb3,e4,g4] ~ [c3,bb3,e4]@2 [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~, ~@2 g4 ~@13", // C7
  AZ: "[db2,c4,f4,ab4] ~@15", // Dbmaj7
})).s("gm_piano").gain(0.51).pan(0.8)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H A B C D E F G H I J K L I J K L M@3 N@4 O P@2 Q@2 R S T U V W X Y@2 Z AA AB AC AD W X Y@2 Z AA AB AC
  AE W X Y@2 W X Y@2 W X Y@2 AF@2 AG@2 AH AI W X Y@2 W X AJ@5 AK AL AM@2 AN@2 AO AP AQ AR AM@2 AN@2 AO AP AS AT W X Y@2
  W X Y@2 W X Y@2 AU@2 AG@2 AH AI AV@2 M@3 AW M@3 AW M@3 AW AX O P@2 Q@2 R S T AY AZ V W X Y@2 W X Y@2 W X Y@2 W X Y@2 W
  X Y@2 W X Y@2 W X Y@2 W X Y@2 ~
>`.pickRestart({
  A: "[f3,f4]@7 ~ [g3,g4]@8", B: "[ab3,ab4]@7 ~ [bb3,bb4]@7 ~", C: "[c4,c5] [eb4,eb5]",
  D: "[f4,f5]@7 ~ [ab4,ab5]@6 ~@2", E: "[db3,ab3,c4,f4]", F: "[db3,ab3,c4,f4] [db3,ab3,c4,eb4]", G: "[c3,g3,c4,f4]",
  H: "[c3,g3,c4,e4]@4 [c3,g3,c4,e4,g4]@3 ~", I: "[ab3,c4,f4]", J: "[ab3,c4,eb4]", K: "[ab3,c4,d4]", L: "[ab3,db4]@3 ~",
  M: "[[f3,ab3,c4]@18 ~@6 [f3,ab3,db4] ~@2 [g3,bb3,eb4] ~@2 [f3,ab3,c4]@18, f2@5 ~@11]/3", // Fm Db Eb Fm
  N: "[~@8 [f3,ab3,db4]@2 ~ [g3,bb3,eb4] ~@2 [f3,ab3,c4]@22 ~@4 [f3,ab3,db4] ~@2 [g3,bb3,eb4] ~@2 g3@12 ~@4 f4@2, ~@23 f4@8 ~, ~@23 c4@7 c4@2, ~@29 g3@3]/4", // Db Eb Fm Db Eb
  O: "c4 c4@2 ~, [g3,e4]@3 ~", P: "[[f3,ab3,c4]@19 ~@13]/2", Q: "[[bb3,db4,f4]@5 ~@3]/2", R: "[g3,c4,f4]",
  S: "[g3,c4,e4]@3 ~", T: "[g3,c4,f4]@3 ~", U: "c4@5 ~@2 c4, [g3,e4], ~@5 c4@2 ~, ~@3 c3", V: "c3 ~@7",
  W: "[ab3,db4,f4]@4 ~@6 db3@4 [eb3,ab3] ~, db3@7 db3@3 ~@6, ~@4 [ab3,db4,f4]@3 ~", X: "~ g3@3 ~ [g3,bb3,eb4]@3",
  Y: "[~@4 [g3,bb3]@6 [eb3,g3,bb3] ~@3 c4@8 [c4,f4]@4 [c4,f4]@4 [c4,f4] ~, ~@2 eb3@2 ~@3 [f3,ab3]@8 ~]/2", // Gm Eb F5 Fm
  Z: "[db3,ab3,db4,f4]@5 ~@3 [ab3,db4] ~@5 bb3@2, ~@5 [ab3,db4]@3, ~@3 db3", // Db Db5
  AA: "[bb2,bb3,db4,f4]@3 ~@5 bb3@2 bb3@4 bb3@2, ~@2 [db4,f4]@3 [db4,f4]@3, ~ bb3 ~@2, ~@3 bb2@5", // Bbm Db
  AB: "~@2 bb3 [bb3,d4]@2 ~@2 [bb3,d4], c3@3 c3, ~@5 [bb3,d4]@2 ~", // Bb
  AC: "[c3,c4,e4]@2 ~@2 [c3,c4,e4]@4 [c3,c4]@4 [c3,c4,f4]@3 ~, ~@8 e4@7 ~", AD: "[c3,c4,e4] ~@7",
  AE: "c4 ~ c4@2 d4@2 eb4@2 e4@2 c4@2 g3@2 e3@2",
  AF: "[[bb2,bb3,db4,f4]@5 ~ [c3,c4,f4]@7 ~ [db3,db4,f4]@7 ~ [d3,d4,f4]@5 ~@5]/2", // Bbm F5 Db Dm
  AG: "[[g3,c4,e4,g4]@6 [f3,c4,f4]@8 [g3,c4,e4,g4]@8 [f3,c4,f4]@9 ~]/2", AH: "[g3,c4,e4,g4]!4", AI: "[g3,c4,e4,g4] ~@7",
  AJ: "[~@4 [g3,bb3]@6 [eb3,g3,bb3] ~@3 [f3,c4]@2 f3@10 ~@4 c4@8 c4@14 [f3,c4]@6 f3@12 ~@6 f3@4, ~@2 eb3@2 ~@3 ab3@16 ~@17, ~@8 c4@7 ~@14 c4@8 c4@3, ~@13 f3@6 f3@4 ~@12 f3@3 ~@2]/5", // Gm Eb F5
  AK: "[f3,c4]@5 f3@2 f3, ~@5 c4@3", AL: "[f3,c4]@3 [f3,c4]@3 [f3,c4] ~",
  AM: "[[ab3,c4,eb4]@3 [c4,eb4]@4 [ab3,c4]@3 ~@2 ab3 [ab3,c4,eb4]@2 ~, ab2@19 ~ [ab3,c4]@4 ~@8, ~@3 ab3@2 ~@2 eb4@6 ~@3, ~@11 ab2@4 ~]/2", // Ab Cm Ab
  AN: "[[ab3,db4]@3 db4@2 ~@3 [ab3,db4,f4]@3 [ab3,db4,f4]@2 [ab3,db4,f4]@3, f4 ~, db3@5 db4 [ab3,db4]@2 ~@8, ~@11 db3@3 db3@8 db3@10]/2", // Db5 Db Db5
  AO: "[bb3,f4]@3 bb3@2 ~ g3@2, g3@3 ~, ~@3 f4@5, ~@5 bb3@3", AP: "~@5 [c4,e4]@2 ~, e4@5 ~@3, ~@2 g3@5 ~, ~@3 bb3@4 ~",
  AQ: "[f3,c4] ~@9 [f3,c4] ~@3 f3 ~", AR: "[f3,c4] ~@5 [f3,c4] ~@5 [f3,c4] ~@3", AS: "~ c3 ~ c3 [c3,g3]!4",
  AT: "[c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3] ~", // C5
  AU: "[[bb2,bb3,db4,f4]@5 ~ [c3,c4,f4]@7 ~ [db3,db4,f4]@7 ~ [d3,d4,f4]@6 ~@4]/2", // Bbm F5 Db Dm
  AV: "[[f3,ab3,c4]@18 ~@6 [f3,ab3,db4] ~@2 [g3,bb3,eb4] ~@2 [f3,ab3,c4]@2, f2@15 ~@17]/2", // Fm Db Eb Fm
  AW: "~@8 [f3,ab3,db4]@2 ~ [g3,bb3,eb4] ~@2 [f3,ab3,c4]@2", AX: "g3@5 ~@2 f4, f4@7 ~, c4@3 c4, ~@5 g3@3",
  AY: "c4@5 ~ c3 c4, [g3,e4]@15 ~, ~@5 c4@2 ~", // C
  AZ: "[c3,bb3,e4] ~ [c3,e4] ~ [c3,bb3,e4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~ [c3,bb3,e4,g4] ~", // C7 C C7
})).s("gm_acoustic_guitar_steel").gain(0.41).pan(0.6)

// chords · acoustic guitar steel · "GUITAR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@42 A B C ~ D ~@4 A B C ~ D ~@4 A B C ~ A B C ~ A B C ~@7 A B C ~ A B C ~ E@2 ~@3 F G H ~@5 F G H ~@3 I ~ A B C ~ A B
  C ~ A B C ~@31 J ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~@2
>`.pickRestart({
  A: "~ [ab3,db4,f4] ~@2", B: "~@4 g3 ~@3", C: "eb3 ~@7 eb3@2 ~@6", D: "~@4 [ab3,db4] ~@11", E: "[~@7 f3@3 ~@6]/2",
  F: "~@5 ab3!2 ~", G: "~@3 ab2@3 ~@2 c4@2 ~@6", H: "~@3 ab3@2 ab3 ~@2", I: "[c3,g3] g3 [c3,g3] g3 ~@4",
  J: "~@2 bb3 ~ g4 ~@11",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.6)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
  ~ A@4 B@2 C D A@4 E@2 F@2 G@4 H@4 ~@30 I J K L ~@19 M N O P M N O Q R S T U@2 ~@2 V@2 C W U@2 ~@2 V@2 C W X@2 ~@41 Y Z
  AA M AB AC AD M AB AE AD M AB AE AD M AB AE AD M AB AC AD M AB AC AD M AB AC AD M AB AC AD ~
>`.pickRestart({
  A: "[f4 eb4, [ab3,c4]@59 ~@5]/4", B: "[[c4,f4]@31 ~]/2", C: "[c4,f4]", D: "[g3,c4,e4]@7 [g3,c4,g4]@7 ~@2",
  E: "[ab5@3 bb5, [c4,f4]@31 ~]/2", F: "[[c4,f4]@16 [g3,c4,e4]@7 [g3,c4,g4]@7 ~@2, c6@31 ~]/2",
  G: "[f3@16 eb3@16 d3@16 db3@15 ~, f4@63 ~]/4", H: "[~@16 eb3@16 d3@16 db3@15 ~, f4@63 ~, f3 ~@3, ~ f5@62 ~]/4",
  I: "[f4,ab4]@15 ~", J: "[bb3,db4,f4]@15 ~", K: "[c4,f4]@15 ~", L: "[c4,e4]@3 ~", M: "~@2 [db5,eb5,f5,ab5] ~@5",
  N: "~ ab5 g5 ~, ~ eb5@2 ~", O: "~@4 [c5,f5]@3 ~@9", P: "~@4 [f5,ab5,bb5]@7 ~ [f5,ab5] ~@3", Q: "[ab4,c5,f5]",
  R: "[bb4,eb5]", S: "[ab4,c5]", T: "bb4", U: "[f4@31 ~]/2", V: "db4/2", W: "[c4,e4]@7 ~",
  X: "[~@16 c6@8 e6@5 ~@3, c4@3 ~, ~ c5@5 ~@2, ~ e5@2 ~, ~@3 f5@3 ~@2]/2", Y: "~ c3", Z: "~@3 e5, c4, ~ e4@3, ~ c5",
  AA: "c6 ~@7", AB: "~@4 [eb5,ab5]@4 [eb5,g5]@3 ~@5", AC: "~@2 c5@2 f5 ~@3", AD: "~@4 [c6,f6]@4 ~@2 [ab5,c6] ~@5",
  AE: "~@4 c5@3 ~ f5@2 ~@6",
})).s("gm_string_ensemble_2").gain(0.51)

// chords · string ensemble 2 · "STRINGS" · soft notes
const string_ensemble_2_soft = note(`<
  ~@5 A@2 B ~@5 A@2 B ~@39 C ~@30 D ~ E ~@2 F@2 G@2 ~ H ~@2 F@2 G@2 ~@81
>`.pickRestart({
  A: "[ab3@31 ~]/2", B: "g3", C: "db4@15 ~", D: "g4", E: "[eb4,g4]", F: "[eb4,ab4]/2", G: "ab4/2", H: "f9 ~@15",
})).s("gm_string_ensemble_2").gain(0.31)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@2 B@2 C@2 D E A@2 B@2 C@2 D E F G H I F G H J ~@3 K@2 ~@2 L M N O@2 ~ P Q R S T@2 U@2 V W X Y Z T@2 U@2 V W X Y AA
  T@2 U@2 T@2 U@2 T@2 U@2 AB AC AD@2 AE AF AG AH AI AJ AG AH AI AK@2 AL AM AN ~@7 AO AP AQ AR AS@3 AT ~ AU AV@2 U@2 T@2
  AW AX T@2 U@2 AB AC AD@2 AE AF ~@6 AY@2 ~@7 L M N O@2 ~ P Q R ~ S T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 T@2
  U@2 T@2 AZ@2 ~
>`.pickRestart({
  A: "[f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~", // F
  B: "[eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~", // Eb
  C: "[db3,db4] ~ [db3,db4] ~ [db3,db4] ~ [db3,db4] ~ [db3,db4] ~ [db3,db4] ~ [db3,db4] ~ [db3,db4] ~", // Db
  D: "[c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~", // C
  E: "[e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~", F: "[f4,ab4,f5,f6]@7 ~",
  G: "[eb4,g4,eb5,eb6]@15 ~", H: "[d4,f4,d5,d6]@15 ~", I: "[db4,f4]@7 ~, [db5,db6]@3 ~",
  J: "~@10 [bb4,bb5] [b4,b5] [bb4,bb5] [ab4,ab5] [f4,f5] [c4,c5], [db4,f4]@7 ~, [db5,db6]@3 ~", // Bb B Bb Ab F C Db
  K: "[~@10 bb5 b5 bb5 ab5 f5@14 ~@4]/2", L: "~@10 bb5 b5 bb5 ab5 f5 ~", M: "f5", N: "~@10 f5 eb5 db5 c5 eb5 db5",
  O: "[bb4@5 ~@3]/2", P: "~@10 c5@2 g5@2 c5 ~", Q: "g5@5 ~@3", R: "~@6 c5 ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~",
  S: "[c4,c5] ~@15", // C
  T: "[~@6 ab4@5 ~@3 [eb3,bb3,f4,ab4]@4 [eb4,g4]@3 ~ [eb4,f4]@4 [eb4,g4]@2 ~@4, db2@11 ~@21, ~@2 db4@9 ~@21, ~@4 f4@7 ~@21]/2", // Ebsus4 Eb Ebsus2 Eb
  U: "[[c4,g4]@2 ~@2 [c4,g4]@4 [c4,g4]@2 [c4,f4]@3 ~ [f3,c4]@6 g4@2 ~@2 [g4,bb4] ~ [f4,ab4]@3 ~@3, ~@20 bb4 ~@11]/2", // C5 F5 Gm Fm
  V: "~@3 f4@4 ~, db3@7 ~, ~ ab3@6 ~, ~@2 db4@5 ~", W: "~@2 [bb3,f4,bb4] ~@13",
  X: "~@4 [c3,c4,f4] ~@3 [c3,c4,f4] ~ [c3,c4,f4] ~@5", Y: "~@2 [c4,e4] ~@3 [c4,e4] ~@3 [c4,e4] ~@5",
  Z: "[e4,g4] ~@15, c5 ~@7", AA: "[c5,c6] ~ [c5,c6]@2 [d5,d6]@2 [eb5,eb6]@2 [e5,e6]@2 [c5,c6]@2 [g4,g5]@2 [e4,e5]@2",
  AB: "c5 db5 c5 bb4 ab4 ~@3 c5 db5 c5 bb4 ab4@2 ~@2", AC: "~@2 c5 db5 c5 bb4 ab4 ~@9",
  AD: "[[e4,g4]@5 ~ [f4,ab4]@8 [e4,g4]@8 [f4,ab4]@9 ~]/2", AE: "~@3 e5, g4, ~ e4@3, ~ c5", AF: "g5 ~@15",
  AG: "db2@3 ~ [ab3,db4,f4] ~@11", AH: "~@2 [eb3,f4,ab4] ~@3 [eb3,eb4,g4]@5 ~@5", AI: "~@4 [c3,c4,f4] ~@11",
  AJ: "~@4 [f3,c4,f4] ~@3 [f3,c4,f4,ab4] ~ [c4,f4,ab4] ~@5, ~@2 ab4 ~@2 f3 ~@2", // F5 Fm
  AK: "[f2 [f2,bb3,eb4,g4], [f3,ab3,c4]]/2", AL: "[ab3,c4,f4]", AM: "[f2,g3,bb3,eb4]", AN: "[f2,f3,ab3]@13 ~@3",
  AO: "~@4 [c4,c5]@3 ~@5 [c4,c5]@2 ~@2, [f2,f3,ab3]@13 ~@3", AP: "~@4 [c4,c5]@2 ~@6 [eb4,eb5]@3 ~",
  AQ: "~@4 [eb4,eb5]@3 ~@5 [ab4,ab5]@3 ~", AR: "~@4 [bb4,bb5]@3 ~@5 [c5,c6]@3 ~",
  AS: "[db4@8 ~@20 bb5@7 ~@5 f5@7 ~, [f4,c5]@22 ab4@2 c6@2 ab4@9 ~@13, f5@12 f5@23 ~ g5@11 ~, ab4@10 ab4@4 ab4@4 db4@17 ~@13, ~@8 db4@8 c6@4 f6@15 ~@13]/3", // F5
  AT: "~@8 c5@5 ~@3, ~@4 e5@9 ~@3",
  AU: "~@15 [gb6,ab6,bb6], ~@4 gb2@4 [gb3,ab3,bb3] [c4,db4,eb4] [f4,gb4,ab4] [bb4,c5,db5] [eb5,f5,gb5] [ab5,bb5,c6] [db6,eb6,f6]@2, ~@5 [ab2,bb2]@11, ~@3 [c3,db3]@5, ~@7 [eb3,f3]@9", // Gb Cm Fm Bbm Ebm Ab Db Absus2 …
  AV: "[c7 ~@5 ab4@5 ~@3 [eb3,bb3,f4,ab4]@4 [eb4,g4]@3 ~ [eb4,f4]@4 [eb4,g4]@2 ~@4, [db2,db7]@3 ~@5, ~@2 db4@9 ~@21, ~@4 f4@7 ~@21]/2", // Ebsus4 Eb Ebsus2 Eb Db
  AW: "[c4,g4]@2 ~@2 [c4,g4]@4 [c4,g4]@2 [c4,f4]@3 ~ [f3,c4]@2", // C5 F5
  AX: "[f3,c4]@4 g4@2 ~@2 [g4,bb4] ~ [f4,ab4]@3 ~@3, ~@4 bb4 ~@11", // F5 Gm Fm
  AY: "[[ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [bb3,db4]@3 ~ [ab3,c4]@13 ~@7]/2", // Ab Bbm Ab
  AZ: "[[c4,g4]@2 ~@2 [c4,g4]@4 [c4,g4]@2 [c4,f4]@3 ~ [f3,c4]@4 ~@2 g4@2 ~@2 [g4,bb4] ~ [f4,ab4]@3 ~@3, ~@20 bb4 ~@11]/2", // C5 F5 Gm Fm
})).s("gm_string_ensemble_1").gain(0.36).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A C A B A B A B A C A B A B A B A B D@16 E F G F G F G F G E F G F G H I F G@2 D@12 J K J K G E F G F G
  F G F L@22 D@12 J K J K G E D@24 M E F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G ~
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x ~@3 x ~@2 x", D: "x!2", E: "x ~@9 x!2 ~@2 x ~", F: "x ~@2 x!3 ~ x", G: "~ x ~ x ~ x ~ x",
  H: "x ~@3 x!2 ~@2", I: "x!2 ~ x!3 ~@2", J: "x ~ x!2 ~@2 x!2", K: "x ~@2 x!2 ~@3", L: "x!4", M: "x ~@2 x!3 ~@2",
// … 68 more lines