Strudelify
Any Time, Any Place cover art

Janet

Any Time, Any Place

Janet Jackson

KeyA♭ majorTempo60 bpm
0:00/0:00
// Any Time, Any Place — Janet Jackson
// 60 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · epiano1 · "Rhodes"
const epiano1 = note(`<
  A B C D E F G H I@2 J@2 K L M N O P Q R S T U@2 V W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL J@2 K L M N O P Q R S
  T U@2 V W X Y Z AA AB AC AD AE AF AG@2 AE AF AG@2 AH AI AJ AK AL J@2 K L M N O P Q R S T U@2 V W X Y Z AA AB AC AD AE
  AF AG@2 AH AI AJ AK AM ~
>`.pickRestart({
  A: "~@3 ab3", B: "bb3@10 ~@3 eb4@2 c3, [f2,c4]@15 ~, [ab3,eb4]@11 f3@5, ~@5 bb3@2 ~, ~@12 ab3@3 ~",
  C: "bb3@6 ~@2 [g2,bb3,c4,d4,f4]@3 g3 [c3,bb3,c4,d4,f4]@4, [g2,c4,d4,f4]@7 g3@3 ~@6, ~@3 bb3 ~@4", // Gm7 Bb Gsus4
  D: "bb3@6 ~@9 c3, [c4,eb4]@13 ab3@2 ~, [f2,ab3]@7 ab3@5 f2@3 ~, ~@6 bb3@4 ~ bb3@3 eb4@2, ~@8 f3@7 ~", // Cm Fm
  E: "g2@7 ~@2 bb3 ~ g3 [c3,eb4,g4]@4, [bb3,c4,d4,f4]@5 bb3@3, ~@7 g3@3 ~@6, ~@2 g2 ~", // Cm Bb
  F: "bb3@5 ~@9 bb3 c3, f2@12 d4 c4@2 ~, [c4,eb4]@8 bb3@2 eb4@5 ~, ab3@3 f3@5, ~@5 bb3@2 ab3@9", // Cm
  G: "[g2,c4]@6 ~@5 g3 [c3,bb3,c4,d4,f4]@4, [d4,f4]@3 ~, bb3@2 g2 ~, ~@6 c4@3 bb3@3 ~@4, ~@7 g3@3 c4@2 ~@4", // C5 Bb Dm
  H: "[ab3,bb3]@5 ~@3 ab3@3 ~@3 eb4 c3, [c4,eb4]@13 ab3@2 ~, f2@11 f2@4 ~, ~@5 bb3@2 bb3@7 ~@2, ~@3 ab3 ~@2 f3@2", // Absus2 Cm
  I: "[c4@4 ~ g3 ~ g3 [c3,bb3,c4,d4,f4] ~@7 bb3@4 ~@8 eb4 ~ eb4 c3, [g2,d4,f4]@8 ~@8 eb4@9 ab3 bb3@3 ab3@2 ~, bb3@6 bb3@2 ~@5 ab3@10 f2@8 ~, ~@2 c4@2 ~@4 c4@7 ~, ~@4 f2 bb3 f3!2]/2", // Bb G7
  J: "[c4@6 ~@2 [g2,c4,d4,f4]@3 g3 [c3,eb4,g4]@4 f2@5 ~@8 [ab3,eb4]@2 c3, [g2,bb3,d4,f4]@7 g3@2 ~@7 [c4,eb4]@12 f3@4, ~@6 c4@2 bb3@14 ~ bb3@2 ab3@4 ~@3, ~@16 ab3@8 f2@7 ~, ~@13 bb3@2 ~]/2", // Gsus4 Cm Ab5 Gm7 Cm
  K: "bb3@7 ~ bb3@3 g3 [c3,bb3,c4,d4,f4]@4, [g2,d4,f4]@3 ~, c4@5 ~@3, ~@7 g3@4 ~@5", // Bb G7
  L: "[ab3,bb3]@5 ~@8 eb4@2 c3, [c4,eb4]@12 f2@3 ~, f2 f3, ~@5 bb3@2 bb3@3 bb3@4 ~@2, ~@6 ab3@3 ab3@6 ~", // Absus2 Cm
  M: "c4@5 ~@3 [g2,bb3,c4,d4,f4]@4 [c3,bb3,c4,d4,f4]@4, [g2,bb3,d4,f4]@7 g3@5 ~@4, ~@3 c4 ~@4", // Gm7 Bb Gm7
  N: "bb3@5 ~@8 [ab3,eb4]@2 c3, [c4,eb4]@3 f3, [f2,ab3]@6 ab3@2 f2@7 ~, ~@5 bb3@4 ab3@4 ~@3, ~@7 f3@3 bb3@4 ~@2", // Ab5 Cm Fm
  O: "c4@4 c4@2 ~@2 [g2,bb3,f4]@3 g3 [c3,bb3,eb4,g4]@4, d4@11 ~@5, [g2,bb3,f4]@3 bb3 c4 ~@3, ~@7 g3@3 ~@6", // Gm7 Cm7 Gm7
  P: "ab3@7 ~@7 d4 c4, f2@15 ~, [c4,eb4]@3 f3, bb3@6 ~ bb3@2 ab3@4 [ab3,eb4]@2 ~, ~@8 f3@2 bb3@5 ~", // Cm Ab5
  Q: "c4@6 ~@5 g2 [c3,bb3,c4,f4]@4, [d4,f4]@6 d4 ~, [g2,bb3]@7 g3@5 ~@4, ~@3 c4 bb3@2 ~@2, ~@5 c4 ~@2", // Fsus4 Dm Gm
  R: "ab3@7 ~@3 bb3@2 ~ [ab3,eb4]@2 c3, f2@15 ~, c4@13 ~@3, [bb3,eb4]@9 ab3@3 ~@4, ~@7 ab3 f3@3 ~ f3@4", // Ab5 Eb5
  S: "bb3@6 ~@2 [g2,bb3,d4,f4]@3 g3 [c3,bb3,eb4,g4]@4, [g2,c4,d4,f4]@7 g3@3 ~@6, ~@3 bb3 c4 ~@3", // Gm7 Cm7 Gsus4
  T: "bb3@9 ~@3 bb3@2 ~ f3, f2@15 ~, [ab3,c4,eb4]@6 ~ eb4, ~@9 bb3@2 ab3@5, ~@10 f3@5 ~", // Ab
  U: "[[bb3,c4]@7 ~@4 g3 [c3,c4,d4,f4]@4 ~@13 [ab3,eb4]@2 c3, [g2,d4,f4]@12 ~@4 f2@15 ~, ~@7 c4@2 bb3@3 bb3@10 ~ bb3@2 ab3@3 f3@4, ~@8 g3@2 c4@2 ~@4 [c4,eb4]@13 ~@3, ~@8 ab3@4 f3 bb3@2 ~]/2", // Bbsus2 Dm7 Ab5 G7 Cm
  V: "c4@4 ~@3 g3 bb3@2 ~ c3 eb4 f4 gb4 ab4, [g2,d4,f4]@2 [c3,c4,d4,f4] c3, bb3@6 bb3@2 ~@2 bb3@3 ~@3, ~ c4 ~@2", // G7 Dm7
  W: "[bb1,db4,gb4,bb4]@3 ~@2 db4 [db4,bb4] db4 ~@5 eb4 ab4 bb1, ~@3 [db4,gb4,bb4]@3 ~ [f4,ab4]@7 ~@2, ~@4 ab1@3 eb4@2 db4@2 bb2@4 ~, ~@4 bb1@3 ~, ~@5 eb4 db4!2", // Gb Fm
  X: "[ab1,db4,gb4,bb4]@3 db4 ~@3 db4 ~@6 f4 db4, ~@3 [gb4,bb4]@2 db4@2 [f4,ab4]@5 db4@2 ~@2, ~@2 bb1 db2 eb2@4, ~@7 eb4@2 db4@2 eb3@5, ~@10 eb4@3 eb4@2 ~", // Gb Fm
  Y: "db4@3 ~@3 bb4 ~@2 db4 ~ db4 [db4,gb4,bb4]@2 db4 bb2, [ab2,gb4,bb4]@7 db4@2 ~ bb3@4 ~@2, ~@3 db4@2 db4@2 [eb4,f4,ab4]@4 ~@5, ~@4 ab3@4 bb2@7 ~", // Gb Ebm Fm7
  Z: "[f2,bb3,eb4,g4]@3 f2 [g2,d4,f4,bb4]@3 g2 [f2,ab3,eb4]@3 f2 [c3,bb3,c4,d4,f4]@2 bb3 c3, ~@4 [bb3,c4] ~@3", // Eb Gm7 Fm7 Bb Bbsus2
  AA: "gb4@2 ~@3 db4 bb4 ~@4 bb2 ab2 ~@2 bb2, eb2@7 eb4@3 eb4@5 ~, [db4,bb4]@6 db4@2 ~ db4@4 ~ db4@2, ~@3 gb4@3 ~ [f4,ab4]@8 ~, ~@4 eb3@4 ab2@3 ~@2 bb2@2 ~", // Gb Fm
  AB: "f2@3 ~@3 bb4 ~@6 eb4 ~ eb3, [db4,bb4]@5 db4@2 eb4@2 db4@2 ab3@3 ~@2, gb4@2 ~ gb4@3 ~ [f4,ab4]@7 ~@2, ~@4 eb2@4 ab2@7 ~, ~@5 eb4 db4!2", // Gb Fm
  AC: "gb4@3 ~ eb3@2 bb4 db4 ~@2 eb4 ~ [db4,gb4,bb4]@3 ab2, [eb2,db4]@8 ab2@7 ~, bb4@6 ~@3 db4@3 ~@4, ~@3 gb4@3 ~ [eb4,f4,ab4]@4 ab3@2 ~@3", // Gb Eb7 Fm7
  AD: "[g2,bb3,eb4,g4] [c3,d4,f4] [f2,ab3,bb3,c4,eb4] [c3,bb3,c4,d4,f4], ~@2 bb4 ~@5", // Eb Dm7 Fm7 Bb
  AE: "bb3@4 ~@3 f2 ~@2 ab3@3 bb3 [ab3,eb4] c3, [c4,eb4]@7 ~, ab3@9 f3@7, f2@7 ~ f2@7 ~, ~@4 bb3@9 ~@3", // Ab5 Cm
  AF: "~@10 bb3@4 ~ g3, [g2,f4], d4@7 ~, bb3@7 c4 bb3 d3@7, c4@2 g3@5 ~", // G7
  AG: "[eb4@4 ~ c2 ~@19 d4@2 ~@4 f2, bb3@11 ~ bb3@4 f3@2 bb3@6 bb3@6 ab3@2, [c3,g3]@6 [f2,ab3]@9 f2@7 f3@10, ~@4 eb4@2 [c4,eb4]@19 ~@2 eb4@4 ~, ~@17 ab3@4 ab3@2 ab3@6 c4@2 ~]/2", // C5 Fm Cm
  AH: "ab3@4 ~@10 eb4 c3, [c4,eb4]@13 ab3@2 ~, bb3@9 ab3@3 f3@4, f2@7 f2@9, ~@2 ab3@2 f3 bb3@2 ~", // Cm
  AI: "bb3@7 ~@3 c4@4 ~ g2, [g2,d4,f4]@15 ~, c4@6 ~ c4@2 bb3@5 f4@2, ~@8 g3@7 ~", // G7
  AJ: "eb4@4 ~ c2 ab3@6 ab3@2 f2@2, bb3@7 ~, [c3,g3]@3 [f2,c4]@4 ~, ~@2 eb4@5 ~", // C5 F5
  AK: "eb4@3 ~@3 db4 ~ [b1,bb4]@3 b2 [db2,b3]@4, gb4@15 ~, [b1,bb4] ~, db4@5 b2@2 db4@3 ~@6, ~@4 eb4@11 ~", // Bmaj7 Db7 Bmaj7
  AL: "bb3@4 ~@8 eb4 ~ eb4 c3, c4@13 ab3@2 ~, eb4@9 ab3 bb3@4 ~@2, f2@6 ~ f2@8 ~, ~ bb3 f3!2", AM: "f2@3 ~@5",
})).s("gm_epiano1").gain(0.36)

// bass · fretless bass · "Fretless"
const bass = note(`<
  ~@8 A B C D E F C F C F E D E D E D G H I J K L I M K N O P Q R O S T D C F E F E F C F C F C U C D G V I W K L X M K
  N Y Z AA N Y Z AA AB O AC T F C D E F C F C F E D E D E D G H I J K L I M K N O P Q R O S T ~@2
>`.pickRestart({
  A: "~@10 g2@5 f2, ~@10 f2 ~@5", B: "f1@6 f1 ~ f1@8, d2 ~@15", C: "g1@6 g1 ~ g1@4 c2@4", D: "f1@5 ~ f1 ~ f1@8",
  E: "g1@5 ~ g1 ~ g1@4 c2@4", F: "f1@6 f1 ~ f1@8", G: "g1@5 ~ g1 ~ g1@8", H: "ab1 bb1", I: "ab1@2 bb1 db2 eb2@4",
  J: "ab1@4 ~ gb1 ab1 ~ bb1@8", K: "eb2 g2 c2 f2", L: "ab1@7 ab1 bb1@8", M: "ab1@5 gb1 ab1 ~ bb1@8", N: "f1@15 ~",
  O: "g1 g2@3", P: "c2@6 f1@3 c2 f2 c2 g2@3 [d2,f2], ~@12 f2 ~@3", Q: "f2@13 d2@2 c2", R: "f1@15 f1",
  S: "c2@3 f1@5, ~@6 g1 ~@9", T: "b1@3 db2", U: "f1@5 ~ f1 ~ f1@7 f1", V: "f1@5 ab1 bb1@2 eb2@8", W: "ab1 eb2",
  X: "ab1@2 ~ ab1 bb1@2 db2@2 eb2@8", Y: "g1@2 ~@5 g1, ~ g2@3", Z: "c2@6 f1@3 c2 f2 c2 g2@3 f2, ~@12 f2 ~@3",
  AA: "f2@13 d2 ~ c2, d2 ~@15", AB: "f1@7 f2", AC: "c2@3 f2@5",
})).s("gm_fretless_bass").gain(0.41)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~@33 A B C@2 D E F G H I@2 J@2 K L M N@2 O P Q R S T U@2 V ~ W X Y ~ Z AA AB@2 AC AD AE@2 AF AG AH@4 AI@2 ~@3 AJ AK AL
  AM AN@4 AO AP AQ AR ~ AS AT AU AV AW AX AY@2 AZ@2 BA BB@2 ~
>`.pickRestart({
  A: "~ ab3 bb3 ~ [ab3,eb4] ~@2 [ab3,bb3,c4,eb4]@2 ab3 ~ bb3@2 ~ bb3 eb4, ~@11 [c4,eb4]@4 ~, ~@13 ab3@2 ~", // Ab5 Ab Cm
  B: "[f3,d4]@2 ~ [bb3,d4] ~@4 f4 ~ bb3 [bb3,c4,d4,f4]@2 bb3 ~ bb3", // Dm Bb
  C: "[[ab3,eb4]@2 ~ [ab3,eb4] ~@2 [ab3,eb4]@2 bb3@2 ~ ab3@2 ~ bb3 ~ bb3@2 ab3@3 ab3 ~ c4 g4 ~@3 g4@2 ab4@2, ~@11 eb4@10 ~@11, ~@13 c4@2 ~@7 bb3@2 ~@8]/2", // Ab5
  D: "f4@5 ~@3 ab3!2 ~@3 ab3 ~ eb4, ~@7 f4@2 ~@7",
  E: "[f3,bb3,d4]@3 ~ [d4,f4] d4 [d4,f4] [bb3,c4,d4,f4] ~ bb3 bb3@3 [bb3,c4] f4@2, ~@4 bb3@3 ~@9", // Bb Dm Bb Bbsus2
  F: "[g3,bb3,eb4]@2 ~ [bb3,eb4,g4] ~@2 [c4,eb4]@4 ~ c4@2 [ab3,eb4]@2 ab3, ~@10 bb3@3 ~@3", // Eb Cm Ab5
  G: "~@3 bb3 [bb3,db4,eb4,gb4]@5 [bb3,eb4,gb4]@2 ~ eb4 [bb3,gb4]@3, ~@9 db4 ~ db4@2 ~@3", // Ebm7 Ebm
  H: "[ab3,c4,eb4]@3 [ab3,c4,eb4] ~@4 eb4@3 ab3 [c4,eb4] ~ [ab3,eb4]@2", // Ab Cm Ab5
  I: "[[f3,bb3,d4]@3 [f3,bb3] f3 ~@2 bb3@2 c4 ~ bb3 ~ eb4@3 [ab3,c4,eb4]@3 [c4,eb4] [ab3,eb4] ~@2 eb4@2 ~@2 c4@2 [ab3,eb4]@2 eb4, ~@3 d4@5 ~@2 d4@2 ~@20, ~@5 bb3@2 ~@6 bb3@6 ~@7 bb3@5 ~, ~@6 f3@5 ~ g3@3 ~@10 ab3@4 ~@3]/2", // Bb Bb5 Ab Cm Ab5
  J: "[[f3,bb3,d4]@4 [f3,d4]!2 ~ bb3!3 ~ bb3 [g3,bb3]@4 [ab3,c4]@3 [ab3,c4,eb4] [ab3,eb4] ab3 ~ [ab3,c4]@2 ab3 c4 ab3@2 ~ [bb3,c4] [ab3,bb3], ~@7 [f3,d4]@4 ~ eb4@7 ~@4 eb4@6 ~@3]/2", // Bb Dm Gm Ab Ab5 Ab Bbsus2 Absus2 …
  K: "bb3@3 [f3,d4] f3!2 ~ [f3,bb3,d4]@3 f3 ~ [bb3,c4,d4,f4]@3 ~, d4 ~@7", // Dm Bb
  L: "[ab3,c4,eb4]@2 ~ [ab3,c4,eb4] ab3!2 ~ [c4,eb4]@3 ab3!3 ~@2 eb4, ~@11 c4@4 ~, ~@11 eb4@2 ~@3", // Ab Cm
  M: "bb3@3 [f3,bb3,d4] [f3,d4]@3 [bb3,d4]@4 [bb3,d4] d4@2 [f3,d4] ~", // Bb Dm Bb Dm
  N: "[eb4@3 ~@2 [c4,eb4,ab4] ~ [c4,ab4] ~ [ab3,c4,eb4] ~@4 c4 eb4 [f3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~ f3 f3@2 f3 ~ [f3,ab3,bb3,d4]@2 f3 d4, ~@11 [ab3,eb4]@2 bb3@6 ~@4 [bb3,d4]@4 ~@5, ~@6 ab3 ~@9]/2", // Ab Fm Ab Dm Bb Bb7 Ab5 Bb
  O: "[bb3,eb4]@3 [ab3,eb4] ~@3 ab3 ab3@2 eb4@3 ~ ab3 eb4, ~@7 [bb3,c4]@3 ~@3 c4@2 ~", // Eb5 Ab5 Bbsus2
  P: "[f3,bb3]@3 [f3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] [bb3,d4]@6 d4 ~, ~@2 f3 ~", // Bb5 Dm Bb
  Q: "[ab3,eb4]@3 [ab3,eb4] ~ ab4@2 ~@2 ab4 ~ g4@2 ~ eb4 c4, ~@9 c4@4 f4@2 ~", // Ab5
  R: "bb3@3 [bb3,d4,f4]@2 [d4,f4] ~ [bb3,f4] d4@3 f4 ~ f4@2 bb4, ~@4 bb4@2 d4 ~", // Bb Dm Bb5
  S: "[c4,ab4]@3 [eb4,ab4] ~ [eb4,ab4] ~ c4@2 ~@5 ab4!2, ~@7 ab4@6 ~@3, ~@7 f4@3 c4@3 c4@2 ~, ~@7 eb4 ~ eb4@2 eb4@4 ~", // Fm Ab5
  T: "[d4,f4,bb4]@3 d4!2 [d4,f4,bb4] ~ [d4,bb4] [d4,f4,bb4]@5 ~ f4 bb4, ~@13 d4@2 ~", // Bb Gm Bb
  U: "[[gb4,bb4]@5 db4 bb4 ~ db4@2 ~ db4 ~ f4@2 ab4 [gb4,bb4]@3 [db4,bb4] ~ [db4,bb4] ~ [db4,f4,ab4]@4 db4 eb4 f4 gb4 ab4, db4@3 ~@5 [f4,ab4]@4 db4@3 db4@4 ~@13]/2", // Gb Db Fm
  V: "~@3 gb4 ~ gb4 bb4 [db4,f4,ab4]@4 ~ [db4,bb4]@2 ~ eb4, [db4,bb4]@2 db4 ~@5", // Db Gb
  W: "[db4,bb4]@2 ~ [db4,bb4] db4 gb4 [db4,bb4] [db4,f4,ab4]@5 eb4 f4 gb4 ab4", // Gb Db
  X: "[db4,gb4,bb4]@3 [db4,db5] ~ [db4,bb4] ~ bb4 ab4@3 ~ db4 ~ eb4 ~, ~@7 db4@5 ~@4", // Gb Db Gb
  Y: "[db4,bb4]@2 ~ [db4,bb4] db4 gb4 ab4 [db4,ab4]@4 db4 [db4,bb4]@3 ~", // Gb Db5 Gb
  Z: "ab3@5 c4 ~ ab3 [ab3,c4,eb4]@5 ~ c4 eb4, ~@13 ab3@2 ~", // Ab
  AA: "[f3,bb3,d4]@3 bb3!2 [d4,f4] ~ [bb3,d4]@6 ~ d4 f4, ~@13 c4@2 ~", // Bb Dm Bb
  AB: "[[ab3,c4,eb4]@2 ~ [g3,bb3,eb4] ~@2 ab3@3 bb3 ~ bb3@2 ~ bb3 ~@5 ab3 bb3 ab3 eb4 g4 ~ g4 ~ g4@2 ab4@2, ~@5 bb3@3 ~@2 ab3@2 ~ ab3@2 ~@17, ~@6 [c4,eb4]@8 ~ eb4@7 ~@10]/2", // Ab Eb Cm
  AC: "f4@5 db4 ~@3 ab3 ~ c4@2 [ab3,eb4]@3, ~@5 bb3 ~@2", // Ab5
  AD: "[f3,bb3,d4]@8 ~ [f3,bb3,d4] ~ [bb3,d4,f4] ~ [f3,bb3,d4] ~@2", // Bb
  AE: "[[ab3,c4,eb4]@2 ~@2 d4@2 [g3,bb3,eb4]@3 ~@3 ab3 bb3 c4 bb3@2 ab3@5 ~@2 g4 ~ g4 ~ g4@2 ab4@2, ~@3 [f3,bb3]@2 ~@27]/2", // Ab Eb Bb5
  AF: "f4@5 ~@3 bb3 ab3 bb3 c4@2 ~ ab3 c4, ~@13 bb3@2 ~", AG: "bb3@4 ~@3 [bb3,f4] ~ [d4,bb4] ~@3 bb3@2 ~",
  AH: "[~@13 ab3 bb3 ~ bb4@2 ab4@2 gb4@2 f4@2 eb4@4 b3 ~ b3 ~@5 ab4 bb4 ~ eb5@2 db5 bb4 db5@2 c5@2 bb4@7 ~@10, ~@12 f3@2 ~ c4@2 ~@14 bb3@14 ~@19]/4",
  AI: "[c5@2 bb4@4 ~@2 db4 [eb4,f4] ~ eb4 ~ ab4 ~ bb4@8 ~@9, ~@12 db4@3 ~@17]/2", // Ebsus2
  AJ: "~@2 f4 eb4 c4 g4 [c4,bb4]@4 ~@2 bb4 c5 bb4@2, ~@3 g4", // C7
  AK: "[g4,c5] bb4 ~ [g4,c5] bb4 ~ [g4,c5] bb4 ~ [g4,c5] bb4 ~ [g4,c5] bb4 ~ [g4,c5]", // C5
  AL: "bb4 ~ [g4,c5] bb4 ~ [g4,c5] bb4 ~ [g4,c5] c5 ~ [g4,c5] ~ [g4,c5] ~ [g4,eb5]", // C5 Cm
  AM: "~ [g4,c5] ~ bb4 ~@2 eb4 c4 eb4 ~ f4@2 g4 f4 eb4 c4", // C5
  AN: "[[eb4,f4]@2 eb4@3 c4 ~ ab3@3 bb3 c4@2 ~ eb4@4 ~@2 c4 [eb4,f4] g4 f4 eb4@2 ~ eb4 f4 [c4,g4] c4 [c4,bb4]@5 ~ [c4,c5] ~ [c4,bb4] ~ [c4,ab4] ~ [c4,g4] ~ [c4,f4] ~ [c4,g4]@2 f4 eb4 c4 eb4 c4 bb3 ab3 bb3 c4 eb4 f4@2 eb4 c4 bb3, ~@13 c4 ~@18]/4", // Ebsus2 C5 C7 C C7 Fm C5 F5 …
  AO: "[bb3,c4]@2 bb3@6 bb4@3 bb3 eb4 f4 gb4 ab4", // Bbsus2
  AP: "bb4@2 ~ [db4,bb4] ~ [db4,bb4] ~ [db4,bb4] [db4,ab4]@4 eb4 f4 gb4 ab4", // Gb Db5
  AQ: "[db4,bb4]@2 db4 [db4,db5] ~ [db4,bb4] ~ bb4 ab4@3 ~ eb4 f4 gb4 ab4, ~@7 db4@5 ~@4", // Gb Db Gb
  AR: "[db4,bb4]@3 [db4,bb4] ~ [db4,bb4] ~ bb4 ab4@3 ~ [db4,bb4]@4, ~@7 db4@4 ~@5", // Gb
  AS: "[db4,bb4]@2 ~ [db4,bb4] ~ [db4,bb4] ~ bb4 ab4@4 gb4@3 ab4, ~@7 db4@5 ~@4", // Gb
  AT: "[db4,db5]@2 bb4 [db4,db5] ~ [db4,bb4] ~ [db4,bb4] [db4,ab4]@4 eb4 gb4 ab4 bb4", // Db Gb Db5
  AU: "bb4@2 db4 gb4 ab4 [db4,bb4] ~ [db4,ab4]@4 ~ [db4,bb4]@4", // Gb Db5 Gb
  AV: "g4@3 ~ bb4@4 eb4@4 [f4,g4]@2 f4 eb4, ~@4 ab4 ~@11", // Fsus2
  AW: "f4@3 eb4@5 ab3 bb3 c4 ~@3 bb3 ab3, ~@11 eb4@4 ~, ~@13 c4@2 ~",
  AX: "bb3@4 ~ bb4 ~ bb4!3 eb4@3 f4@3, ~@13 eb4 ~@2", AY: "[eb4@22 ~@2 g4 ~ g4 ~ g4@2 ab4@2]/2",
  AZ: "[f4@7 ~ f4 eb4@2 f4@2 g4 ~ bb4@7 ~@3 [g4,eb5] ~ [g4,d5] ~ c5 ~ g4, ~@15 ab4 ~@16]/2", // Cm G5
  BA: "[g4,c5]@8 ~ [g4,c5] bb4 ~ bb4@2 c5 ~, ~@11 g4@2 ~@3", BB: "[bb4@2 ab4@2 gb4@2 f4@2 eb4@4 b3 ~ b3 bb3@14 ~@3]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.25)

// chords · acoustic guitar nylon · "Guitar" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@33 A B C ~@2 D E ~ F ~ G ~@2 H I J K L M N O P Q R ~@2 S ~@3 T ~@2 U ~ V ~@6 W ~@3 X@2 ~@5 Y Z ~ AA ~@11 AB ~@9
>`.pickRestart({
  A: "~@3 c4 ~@8 ab3 ~@3", B: "~ bb3 ~@4 f4!2 ~@2 f4 ~@3 f4 ~, ~@5 d4@6 ~@5, ~@3 bb3@2 ~@3", C: "~ ab3 ~@7 c4 ~@5 ab3",
  D: "~@12 bb3 ~@3, ~@10 d4@3 ~@3, ~@11 [c4,f4]@2 ~@3", E: "~@5 bb3 ab3@2 ~ ab3@2 ~@3 c4 ~",
  F: "~@7 [ab3,c4,eb4] [ab3,c4]@3 [c4,eb4] ~@2 c4@2", G: "~@3 [ab3,bb3] ~@3 [bb3,c4]@3 ~@6", H: "~ f3@2 ~ d4 ~@11",
  I: "~@7 ab3 ~@8", J: "[f3,d4]@2 f3 ~ bb3@2 f3!2 ~ f3@2 ~ bb3@4, ~@11 f3@3 ~@2",
  K: "~@2 c4 ~@8 [bb3,c4]@2 ~@3, ~ [ab3,bb3]@2 ~@13", L: "~@4 f3 ~@11", M: "[ab3,c4]@3 ~ ab3 ~@2 eb4@3 ab3@4 ~@2",
  N: "d4@3 ~@9 f3@2 ~@2", O: "c4@3 ~@2 c4@4 ~@7", P: "~@4 f4 ~@3", Q: "~@5 c4 ~@10", R: "~@3 f4 ~@3 f4 ~@8",
  S: "~@11 db4 gb4@2 ~@2", T: "~@13 gb4 ~@2", U: "~@8 c4@5 ~@3, ~@7 f4@7 ~@2", V: "~@3 c4@3 ~@10", W: "~@9 f3@3 ~@4",
  X: "[~@10 f4 ~@4 db4@8 ~@9]/2", Y: "~@9 g4 c5 ~@5", Z: "~@5 f4 ~@10", AA: "~@6 f4 ~@9", AB: "~@11 ab3@2 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.1)

// chords · piano · "Piano (solo)"
const piano = note(`<
  ~@9 A@4 B@4 C@4 D@4 E F G H E I J K L M N O@2 P Q R@2 S@7 T U@2 V W@3 X Y Z AA AB Y AC J AD AE P AF AG AH@2 AI AJ AK@2
  AL AM@2 ~@3 AN@4 AO@8 ~@3 AP AQ ~@2 AR AS AT AU AV AW AX AY AZ@2 ~
>`.pickRestart({
  A: "[~@8 c4 ~ c4 eb4 ~ g4 ~ bb4@9 c4 ~ c4 eb4 ~ c5@2 bb4@2 c5 ~@6 c4 ~ c4 eb4 ~ g4 ~ bb4@9 ~@8, ~@29 bb4 ~@34]/4",
  B: "[~@8 c4 ~ c4 eb4 ~ g4 ~ bb4@8 ~ c4 ~ c4 eb4 ~ c5@2 bb4@2 c5 ~@6 c4 ~ c4 eb4 ~ g4 ~ bb4@12 ~@2 [eb5,f5] eb5 c5, ~@29 bb4 ~@34]/4", // Ebsus2
  C: "[eb5@7 ~ [c4,c5] ~ [c4,c5] [eb4,eb5] ~ [g4,g5] ~ bb5@9 [c4,c5] ~ [c4,c5] [eb4,eb5] ~ [c5,c6]@2 [bb4,bb5]@2 [c5,c6] ~@6 [c4,c5] ~ [c4,c5] [eb4,eb5] ~ [g4,g5] ~ bb4@10 [f5,g5] f5 eb5 f5@2 eb5 [eb5,f5], ~@15 bb4@7 ~@7 bb5 ~@17 bb5@6 ~@7 eb5 ~@3]/4", // C Eb G C Eb C Bb C …
  D: "[eb5@8 [c4,c5] ~ [c4,c5] [eb4,eb5] ~ [g4,g5] ~ [bb4,bb5]@8 ~ [c4,c5] ~ [c4,c5] [eb4,eb5] ~ c6@2 [bb4,bb5]@2 [c5,c6] ~@6 [c4,c5] ~ [c4,c5] [eb4,eb5] ~ [g4,g5] ~ [bb4,bb5]@10 ~@7, ~@29 bb5 ~@34]/4", // C Eb G Bb C Eb Bb C …
  E: "bb4@2 ~ bb4 ~ bb4 ~ [ab4,bb4] ab4@4 eb4 f4 gb4 ab4", F: "bb4@3 db5 ~ bb4 ~ [ab4,bb4] ab4@4 eb4 f4 gb4 ab4",
  G: "bb4@3 bb4 ~ bb4 ~ [ab4,bb4] ab4@3 ~ bb4@4, ~@12 ab4 ~@3", H: "g4@4 bb4@4 f4@4 eb4 f4 gb4 ab4, ab4 ~@3 ab4 ~@11",
  I: "bb4@2 ab4 db5 ~ bb4 ~ [ab4,bb4] ab4@4 eb4 f4 gb4 ab4", // Absus2
  J: "bb4@2 ~ bb4 ~ bb4 ~ [ab4,bb4] ab4@3 ~ bb4@4, ~@12 ab4 ~@3", // Absus2
  K: "g4@4 bb4@3 f4 f4@3 ~@2 c4 [eb4,f4] [c4,g4], ~@4 ab4 ~@3 eb4 ~@7", // Ebsus2 C5
  L: "f4 eb4 c4 eb4@5 eb4 c4 f4@3 eb4@2 f4, ~@10 eb4 ~@5", M: "~@4 f4 g4 f4@10",
  N: "eb4 ~ eb4!2 ~ c4 f4@6 ~ [g4,bb4] c5!2, ~@6 eb4 ~@9", // Gm
  O: "[c5 eb5 f5 [c5,g5]@2 f5 eb5 ~ eb5 ~ c6@10 bb5 c6 ~@2 eb4 c4 f4@3 eb4@2 f4, ~@3 f5 ~@3 c5@2 ~ bb5 ~@15 eb4 ~@5]/2", // C5
  P: "~@4 f4 g4 f4@4 c5@5 ~, ~@10 bb4 ~@5", Q: "eb4 ~ eb4!2 ~ c4 f4@9 ~, ~@6 eb4 ~@9",
  R: "[bb4@2 ab4@2 gb4@2 f4@2 eb4@4 b3 ~ bb3@5 ~@2 [c4,eb4] f4 g4 f4@8, ~@23 c4@9]/2", // Cm
  S: "[~ [c4,eb4] f4 [c4,g4] g4!2 bb4 [g4,c5] bb4@2 g4 ~ [c5,eb5] [c5,f5] g5 f5@2 eb5@6 ~@2 g5 f5 eb5 f5@2 eb5 c5 eb5@6 ~@3 [c4,eb4] f4 g4 f4 eb4 c4 eb4@3 ~@3 bb4 c5 d5 c5 bb4 [g4,bb4]@3 [g4,c5]@2 [g4,bb4]@3 ~ [g5,bb5] c6!2 eb6 [f6,g6] f6 eb6 c6@2 [f6,g6] [c6,eb6] [c6,eb6,f6]!2 eb6@5 ~@2 [c5,f5]@3 eb5@3 [c5,gb5] ~ eb5 c5 bb4 g4 c5@2 bb4 g4 f4 eb4 c4 eb4 [f4,g4] f4 eb4 c4 ~, ~ c3@40 ~@2 c4@2 ~@8 g3@51 ~@3 c4@2 ~@3, ~@14 c5@9 ~@2 c5@2 ~ eb5 ~@24 g4@2 g4@2 ~@23 f6 ~@6 gb5 ~@5 f5@2 ~@4 bb4 ~@12]/7", // Cm C5 Cm F5 Cm Gm C5 Gm …
  T: "c4 [g4,bb4] ~ c4 [g4,bb4] ~ c4 bb4 c5 bb4 ~@2 c4 [c5,eb5,f5] eb5 c5, ~@7 g4@3 ~@6", // Gm F7
  U: "[eb5@7 ~@2 c5 c4 c5 c4 c6@2 bb5@2 c6 ~@3 [c4,g4] bb4 c5 d5 c5 bb4 [bb4,c5] bb4 g4 bb4 c5, ~@13 bb5 ~@9 g4@3 ~@6]/2", // C5 Bbsus2
  V: "bb4@3 ~@2 eb4 f4 g4 [c4,f4] eb4 c4 [c3,c4,eb4]@2 c4!2 [c3,c4,eb4], ~@5 g3@5 ~@6, ~@5 c4@3 ~@8", // F5 Cm
  W: "[[c3,c4,eb4] ~@4 eb4 c4 eb4 c4 ~ c5!2 ~ c6@2 bb5@5 ~@2 e3 c4 ~@2 c5!2 g3 c6@2 bb5@2 c6 ~@3 [c5,f5,gb5] eb5 c5 eb5 c5 bb4 g4 c5@2 g4 [bb4,c5], ~@9 c4@2 ~ c4@3 ~@6 eb4@2 ~@21 bb4 ~@3, ~@13 bb5 ~@15 bb5 ~@18]/3", // Cm F Bbsus2
  X: "bb4@9 ~@3 eb4 f4 gb4 ab4", Y: "bb4@3 bb4 ~ bb4 ~ [ab4,bb4] ab4@4 eb4 f4 gb4 ab4",
  Z: "bb4@2 ~ db5 ~ bb4 ~ [ab4,bb4] ab4@4 eb4 f4 gb4 ab4", AA: "bb4@2 ~ bb4 ~ bb4 ~ [ab4,bb4] ab4@3 ~ bb4@4",
  AB: "g4@3 ~ bb4@3 ~ f4@4 eb4 f4 g4 ab4, ~@4 ab4 ~@11", AC: "bb4@2 ~ db5 ~ bb4 ~ [ab4,bb4] ab4@4 eb4@4",
  AD: "g4@3 ~ bb4@5 c4 eb4 f4 [c4,f4] ~ f4 eb4, ~@6 g4 ~", AE: "f4@7 ~ eb4 c4 f4@3 eb4@2 f4, eb4 ~@9 eb4 ~@5",
  AF: "eb4 ~ eb4!2 ~ c4 f4@5 ~@2 g4 bb4 c5, ~@6 eb4 ~@9",
  AG: "eb5@2 d5 c5@2 bb4 c5!2 bb4@4 ~ c5 eb5 f5, g4@6 ~ g4@2 ~@7",
  AH: "[f5@3 eb5@4 ~ eb4 c4 f4@3 eb4@7 f4 g4 f4@4 c5@5 ~, ~@10 eb4 ~@15 bb4 ~@5]/2",
  AI: "eb4 ~ eb4!2 ~ c4 f4@10, ~@6 eb4 ~@9", AJ: "~@3 [g4,bb4] c5!2 eb5 g5 f5 eb5 g5 bb5 ~@3 [bb5,b5,c6], ~@7 c5@2 ~@7",
  AK: "[bb5@6 ~@2 eb5 c5 f5@9 ~ f5 g5 f5@4 c6@6, ~@10 eb5 ~@15 bb5 ~@5]/2", AL: "f5 ~ eb5!2 ~ c5 f5@9 ~, ~@6 eb5 ~@9",
  AM: "[bb5@2 ab5@2 gb5@2 f5@2 eb5@4 b4 ~ b4 bb4@13 ~@4, ab5 ~@31]/2",
  AN: "[~ c4 ~@11 c5@2 bb4@14 c5@2 bb4@2 ~@14 bb4@17, ~@13 bb4 ~@15 bb4 ~@34]/4",
  AO: "[~@13 c5@2 bb4@14 c5@2 bb4@2 c5 ~@13 bb4@22 ~@8 c5@2 bb4@11 ~@3 c5@2 bb4@2 c5 ~@11 c5@2 bb4@16 ~, ~@13 bb4 ~@15 bb4 ~@47 bb4 ~@15 bb4 ~@15 bb4 ~@18]/8",
  AP: "g4@3 ~ [g4,ab4] ~@3 f4@3 ~ g4@3 [eb4,f4], ~@4 bb4@4 ~@4 f4 ~@3", AQ: "bb3@7 ~@9",
  AR: "g4@4 bb4@4 f4@5 eb4 c4 eb4, ~@4 ab4 ~@11",
  AS: "f4 g4!2 bb4 c5@2 bb4 g4 c5 [b4,c5] eb5 f5 g5 [f5,g5] f5 eb5, ~@4 bb4 ~@11", // Cmaj7 Fsus2
  AT: "f5@2 eb5@2 eb5 f5 eb5@9 ~, eb5 ~@15", AU: "eb5 ~ eb5!2 ~ c5 f5@6 ~@4, ~@6 eb5 ~@9",
  AV: "~ eb6 d6 c6 bb5 g5 c6@2 bb5 g5 f5 eb5 c5 eb5 [c5,g5]@2, ~ g5@3 ~@2 bb5 ~@7 f5 ~", // C5
  AW: "f5@2 eb5 c5 ~ g4 ~@2 eb4 c4 f4@6, ~@10 eb4 ~@5", AX: "~@4 f5 g5 f5@4 c6@5 ~, ~@10 bb5 ~@5",
  AY: "f5 ~ eb5!2 ~ c5 f5@10, ~@6 eb5 ~@9", AZ: "[bb5@2 ab5@2 gb5@2 f5@2 eb5@4 b4@2 b4 bb4@17, ab5 ~@31]/2",
})).s("gm_piano").gain(0.3)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@41 A B A C D E D F D E D G D E H@4 I C J K L C M@8 N@4 A B A B D E D F D E D O D E P@2 Q K@2 C J K J R@6 S@4 ~
>`.pickRestart({
  A: "g4", B: "f4", C: "bb4", D: "[eb4,g4]", E: "[d4,f4]", F: "[f4,bb4]", G: "f4@3 f4, bb4",
  H: "[g4@2 bb4@2 db5 eb5 db5 eb5, eb4]/4", I: "db5 eb5", J: "[db4,db5] [eb4,eb5]", K: "[gb4,db5] [ab4,eb5]",
  L: "db4@5 ab4@3 [bb4,eb5]@8, db5 ~", M: "[~@121 eb5@3 d5@2 c5@2, bb5]/8", N: "bb4/4", O: "f4@8 g4@7 ~, bb4",
  P: "[g4 bb4, eb4]/2", Q: "~ [ab4,eb5], db5@9 ~@7, ~@7 f4@2 ~@7",
  R: "[~@2 eb5 f5 ~@7 bb3 bb2@7 gb2 bb1@3 bb2, bb4@11 ~@13, ~@16 bb5@79 ~]/6", S: "[~@3 g5, bb5]/4",
})).s("gm_string_ensemble_2").gain(0.31)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!109 ~@2>").gain(0.41)

// drums · rim
// … 9 more lines

More by Janet Jackson