Strudelify

The Beautiful Ones

Prince

KeyF majorTempo74 bpm
0:00/0:00
// The Beautiful Ones — Prince
// 74 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 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(74/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 · "Piano 6:4"
const piano = note(`<
  ~@4 A B A B A B A B A B A B C@2 D@2 A B A B A B A B C@2 E@2 A F G B H I J@2 C@2 E@2 A B A B A B A B C@2 E@2 A B A B A
  B K L M N@2 O@2 P@2 Q M N@2 O@2 P@2 Q M N@2 O@2 P@2 Q R S ~@8
>`.pickRestart({
  A: "[e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~", // Am7
  B: "[f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~", // Gm7
  C: "[~@2 f4 [bb3,eb4]@3 [bb3,eb4] [ab3,c4]@4 [ab3,c4] [bb3,db4]@2 [c4,eb4]@2, [c4,eb4,ab4]@3 ~@13, ~ g4@2 g4@4 ~@9]/2", // Eb5 Ab Bbm Cm Ab
  D: "[~@4 f4@2 [bb3,eb4]@6 [bb3,eb4]@2 [ab3,c4]@6 ~@9 eb4@3, [c4,eb4,ab4]@6 ~@14 bb3@2 eb4@7 ~@3, ~@2 g4@4 g4@8 ~@7 c4@11, ~@13 f4@3]/2", // Eb5 Ab
  E: "[[eb4,ab4] g4 f4 [bb3,eb4]@3 [bb3,eb4] ~@3 eb4 [ab3,c4,ab4]@5, c4@3 g4@4 [ab3,c4]@4 ~@5]/2", // Ab5 Eb5 Ab
  F: "[f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] c6 [f4,g4,bb4,d5,a5] ~ [f4,g4,bb4,d5,f5] ~ [f4,g4,bb4,d5,f5] ~ [f4,g4,bb4,d5] ~", // Gm7
  G: "[e4,g4,a4,c5,d5] e5 [e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5,d5] ~ [e4,g4,a4,c5] ~, ~ c5!2 ~@3 e5 ~", // Am7 A7 Am7
  H: "[e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] [g3,c4] [a3,d4,e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~, ~@11 [g3,c4,f4]@5", // Am7 C5 Am7 Csus4
  I: "[g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] g3 [f4,g4,bb4,d5] ~ [d4,f4,g4,bb4,d5] f4, f4 ~@5 g3@2, ~@13 c4@2 ~", // Gm Gm7
  J: "[[e4,f4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] g3 [e4,g4,a4,c5] d5 [e4,g4,a4] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] d4 [f4,g4,bb4,d5] a4 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~, g4@2 f4@6 ~@6 c5@5 ~ c5@8 ~@4, ~@11 g4!3 ~@2]/2", // Fmaj7 Am7 A7 Gm7 Bb Gm7
  K: "f4 [ab3,f4] [db3,ab3,db4,f4] [db4,f4] [db4,f4,ab4] db3!2 db4!2 [db3,ab3] [ab3,db5] db5 ~ db4@2 [bb3,eb4,eb5], [db3,db4,ab4,db5]@2 [ab4,db5]@2 db5@4 ab4@3 db4 [db5,f5,ab5]@4, ~@3 ab3@4 [db3,ab3] db5 db4 db3@6, ~@3 db3@2 f4@11, ~@5 [db4,ab4]@3 f5@3 [eb3,ab3]@5", // Db Db5 Eb5 Db5 Db Db5 Ab5
  L: "[eb3,eb4,g4,bb4] [eb3,g4,bb4] [eb3,bb3,g4,bb4] [eb4,g4,bb4] eb4 bb3 [eb3,bb3] eb4!2 [eb3,bb3] bb3 eb4!2 [bb3,eb4] [bb3,eb4]@2, eb5@4 g4@9 eb3@3, ~ eb4@2 [eb3,bb3]@2 eb4@2 [eb3,bb3] eb5 eb4 [eb3,eb5] bb3 [eb5,g5,bb5]@4, ~ [bb4,eb5] bb4@2, ~@8 g5@3 gb3@5", // Eb Eb5 Eb Eb5
  M: "f4@2 ~@6 [f4,a4]@2 ~@5 f3, [f3,c5]@7 f4, [a3,a4]@7 a3@9, c4@2 c4@3 f4 c4@2, ~ f4@2 f4 ~ a4@3", // F F5 A
  N: "[db4@2 ~@5 [eb3,ab3,bb3,eb4] [ab3,bb3,eb4,ab4]@2 ~@5 c4 c4@3 ~@3 f4@2 ~@4 c4 ~ [f4,a4]@2, [f4,ab4]@5 [db4,ab4]@3 ~@3 ab3@4 a3@4 a3@10 ~@3, [db3,ab3]@3 db3@5 eb3@8 [f3,a4]@13 ~@3, ~ db4 ab3 f4 ~ g4 [bb3,f4]@2 ~@2 c4@4 c5@2, ~@7 [eb4,g4] f4@3 ~ f4@3 ~]/2", // Ebsus4 Absus2 F Fm Db5 F Bb5 Eb
  O: "[db4@2 ~@5 [eb3,ab3,bb3] [ab3,bb3,eb4,ab4]@2 ~ ab3 ~@3 c4 f4@2 ~@9 a4 ~ f4@2 f3, [db3,ab4]@2 eb3 [eb3,ab3,bb3,f4] f3@3 [c4,a4], [ab3,f4]@3 ab3@4 ~@8 a3@4 a4@3 a4@2 c4 f5@7, ~@2 db4@4 db4@2 ~@6 [eb4,g4]@2 [c4,a4,c5]@4 c4@3 a3@9, ~@4 f4@4 ~@2 g4@2 ~@6 f4@3 f4@5 c5@6]/2", // Ebsus4 Absus2 Db5 Ebsus4 F Db Eb F
  P: "[db4@2 db4@2 db4@2 ~ ab3 [eb3,ab3,bb3,eb4,ab4]@2 ~@6 [c4,f4]@3 ~ f4@2 ~@3 f4 ~ c4 ~@3 [db3,gb3,f4], [db3,ab4]@6 [db3,db4,ab4]@2 ~@3 ab3@4 a3@15 a4@2, [ab3,f4]@4 [ab3,f4]@4 ~@2 g4@4 [eb4,g4]@2 ~@3 c4@3 f4@2 f3@8, ~@12 [bb3,f4]@4 f3@7 c4@3 f4@3 c5@3, ~@5 a4@2 c4]/2", // Ebsus4 F5 Gbmaj7 Db5 Db Eb Bb5
  Q: "[db4,ab4]@2 ~@5 [eb3,ab3,bb3,eb4,ab4] ~@7 [a3,c4], db3 [eb3,eb4,ab4], [ab3,f4]@2 ab3 db4 [ab3,bb3]@2 [bb3,f4]@2, ~@2 db4@3 f4@3 ~@3 ab3@5, ~@3 ab4@4 ~@3 g4@4 g4@2", // Db5 Ebsus4 Am Ab5 Db Absus2 Bb5
  R: "[f2,c3,f3,a3,c4,f4]", S: "[eb2,eb3,ab3,eb4]@15 ~",
})).s("gm_piano").gain(0.28).pan(0.4)

// chords · piano · "Piano 4:6"
const piano_2 = note("<~@4 A B A B A B A B A B A B C D@2 E@8 F@3 G H@8 F@3 G H@8 F@3 G I@5 J@4 ~@34>".pickRestart({
  A: "~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5]", // Am7
  B: "~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5]", // Gm7
  C: "~@3 f4 [bb3,eb4]@3 [bb3,eb4], ~ [c4,eb4,ab4]@3 ~@4, ~ g4 g4@2", // Eb5 Ab
  D: "[[ab3,c4]@4 [ab3,c4] [bb3,db4]@2 [c4,eb4]@2 ~@2 f4 [bb3,eb4]@3 [bb3,eb4], ~@9 [c4,eb4,ab4]@3 ~@4, ~@5 g4 g4@2]/2", // Ab Bbm Cm Eb5 Ab
  E: "[[ab3,c4]@6 ~@11 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5], ~@6 bb3@2 eb4@7 eb4@32 ~@81, ~@7 c4@32 ~@89, ~@12 f4@21 ~@14 [f4,bb4,d5]@18 ~@14 [f4,bb4,d5]@18 ~@14 [f4,bb4,d5]@17, ~@31 [e4,a4,c5]@18 ~@14 [e4,a4,c5]@18 ~@14 [e4,a4,c5]@18 ~@15]/8", // Ab Am7 Gm7 Am7 Gm7 Am7 Gm7 Am7 …
  F: "[~ [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 ~@4 f4@2 [bb3,eb4]@6 [bb3,eb4]@2 [ab3,c4]@8 [ab3,c4]@2 [bb3,db4]@4 [c4,eb4]@3, ~@17 [c4,eb4,ab4]@6 ~@25, ~@19 g4@4 g4@8 ~@17]/3", // Gm7 Eb5 Ab Bbm Cm Ab
  G: "~ [eb4,ab4]@2 g4@2 f4@2 [bb3,eb4]@6 [bb3,eb4]@2 [ab3,c4], ~ c4@6 g4@8 ~", // Ab5 Eb5 Ab
  H: "[~@5 eb4@2 ~@10 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5], ~@7 [ab3,c4,ab4]@32 ~@8 [f4,bb4,d5]@18 ~@14 [f4,bb4,d5]@18 ~@14 [f4,bb4,d5]@17, ~@31 [e4,a4,c5]@18 ~@14 [e4,a4,c5]@18 ~@14 [e4,a4,c5]@18 ~@15]/8", // Am7 Gm7 Am7 Gm7 Am7 Gm7 Am7 Ab …
  I: "[~@5 eb4@2 ~@10 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 g4@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5], ~@7 [ab3,c4,ab4]@32 ~@8 [f4,bb4,d5]@18 ~@15, ~@31 [e4,a4,c5]@18 ~@14 [e4,a4,c5]@17]/5", // Am7 Gm7 Am7 Gm7 Ab Bb Am
  J: "[~ [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 [e4,g4,a4,c5]@2 g4@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@2 [f4,g4,bb4,d5]@32 ~, ~@15 [e4,a4,c5]@32 ~@17]/4", // Am7 Gm7 Am
})).s("gm_piano").gain(0.09).pan(0.6)

// chords · koto · "Weird"
const koto = note(`<
  ~@2 A B C D E F@2 G C D E F@2 H@2 I J K A G C D E F@2 H@2 I J K A G C D E F@2 H@2 I J K ~@48 L@2 ~@4
>`.pickRestart({
  A: "c3@3 f3@3 [c2,g2]@2, f2@3 ~", B: "f2@3 ~@10 bb1@3, bb1@13 ~@3, ~@3 f2@13, ~@3 f3@5",
  C: "~@5 c3 [c2,g2]@2, f2@3 ~, f3@3 f3@3 ~@2, ~@3 c3@7 ~@6", D: "~@6 bb2@6 ~ bb2@3, bb1, bb2@3 ~@5, ~@3 f2@13",
  E: "f2@4 f2@2 ~@3 f3@3 [c2,g2]@4, c3@3 c3 c3@2 ~@2, ~@7 f2@5 ~@4", // C5
  F: "[~@11 f3@3 [c2,g2]@2, bb1@7 ~, f2@3 f2 [f2,c3]@3 ~, ~@3 f3@8 ~@5, ~@13 bb2@15 ~@4]/2", // C5 F5
  G: "f2@3 ~@9 bb1@4, bb1@3 ~, ~@3 f2@13, ~@3 f3@5",
  H: "[f2@3 ~@17 g2@2 ~@7 ab2@3, bb1@6 bb1@3 c3@2 ~@5, ~@3 f2@19 eb2@6 eb2@4, ~@6 f3@16 ~@3 eb3@7, ~@8 c2@3 ~@5]/2",
  I: "~@2 eb2@5 ab1 ab2!2 eb2 ~@2 eb2@3, ab1@7 ~@9", J: "c2@2 ~@2 g2@2 ~@2 eb2@3 ~@3 ab2@2, ~@2 c3@4 eb1@5 bb1@5",
  K: "~@2 eb2@5 ~@6 ab2@2 ~, ab1@7 eb2@5 eb2@3 ~, ~@9 eb3@6 ~",
  L: "[~@4 f2@3 ~@9 f2@3 c2 ~@12, f1@15 ~@17, ~@7 c2@6 ~@19, ~@11 c3@14 ~@7]/2",
})).s("gm_koto").gain(0.35)

// chords · koto · "Weird" · soft notes
const koto_soft = note("<~@3 A ~ B ~@3 A ~ B ~@3 C@2 ~@4 A ~ B ~@3 C@2 ~@4 A ~ B ~@3 C@2 ~@52 D@5>".pickRestart({
  A: "~@9 bb2@7", B: "~@12 bb2 ~@3", C: "[~@9 bb2@13 ~@10]/2",
  D: "[~@6 f2@3 ~@26 f2@32 ~@13, ~@9 f1@8 f1@32 ~@31, ~@13 c3@15 c3@32 ~@20, ~@21 c2@11 c2@32 ~@16, ~@5 f2@2 ~@9]/5",
})).s("gm_koto").gain(0.2)

// chords · string ensemble 1 · "1st Strin"
const string_ensemble_1 = note(`<
  ~@4 A B C B D E F G F G F G H@2 I@2 D E F G F G F G H@2 I@2 ~@12 D E F G F G F G H@2 I@2 J K L M N O ~@36
>`.pickRestart({
  A: "[f3,a3]@3 ~@5", B: "[g3,d4]@3 ~@5", C: "[e3,a3]@3 ~@5", D: "[a3,c4,e4]@5 ~@11", E: "[bb3,d4,f4]@7 ~@9",
  F: "[a3,c4,e4]@7 ~@9", G: "[bb3,d4,f4]@3 ~@5", H: "[[c2,c3]@5 ~@9 [ab2,eb3,ab3]@7 ~@11]/2",
  I: "[[c2,c3]@5 ~@9 [ab2,eb3,ab3]@6 ~@12]/2", J: "[f2,e3,a3,c4]@7 ~@9", K: "[g2,d3,f3,bb3,d4] ~, c4 ~@15",
  L: "[f2,e3,a3,c4] ~", M: "[g2,d3,f3,bb3,d4] ~", N: "[f2,c3,e3,a3,c4] ~", O: "[g2,d3,f3,bb3,d4]@9 ~@7",
})).s("gm_string_ensemble_1").gain(0.01)

// other · string ensemble 1 · "2nd Strin"
const string_ensemble_1_2 = note(`<
  ~@24 A@2 B ~ C@2 D@2 E ~@7 F@2 D@2 E ~@2 G H@2 I J K@2 L@2 M@2 N@2 O@2 P@2 Q@8 R S R T U V I W X Y X W X Y X Y Z AA AB
  ~@7
>`.pickRestart({
  A: "[g3@4 e4@5 f4 d4@2 g4@4]/2", B: "c4@7 ~@9", C: "[ab6@2 g6@2 f6@2 g6@6 eb6@2 c6@9 ~@9]/2",
  D: "[ab6 g6 f6 g6@3 eb6 c6@3 eb6 ab6@5]/2", E: "g6@11 ~@5", F: "[ab6@2 g6@2 f6@2 g6@6 eb6@2 c6@7 ~@11]/2",
  G: "~ f6 e6 d6", H: "[[g3,c6]@2 e4@3 ~ b5@2, ~@5 b4@3]/2", I: "[c5,c6]", J: "~ [d5,d6]@7 [g5,g6]@8",
  K: "[ab6 g6 f6 g6@3 eb6 c6@8 ~]/2", L: "[ab6 g6 f6 g6@3 eb6 c6@3 eb6 ab6@4 ~]/2",
  M: "[~@6 [f3,g3,a3,c4,d4,e4] [f4,g4,a4,b4,c5,d5,e5,f5,a5] [b5,c6,d6,e6,f6,g6,a6,b6] ~@23, ~ c7@3]/2", // Fmaj7 Bm7b5
  N: "[~ g4, [g5,g6]]/2", // G
  O: "[[a6,b6] [c6,d6,e6,f6] [e5,f5,a5] [g4,a4,c5,d5] [c4,d4,e4,f4] b3 ~@11 [c5,c6]@15, [b4,b5] b5@8 ~@7, ~@3 b4@14 ~@15]/2", // Asus2 Dm7 Fmaj7 Gsus4 Dm7 C B
  P: "[eb4,eb5,eb6]/2", Q: "[f4,f5]/4", R: "[f4,f5]@3 [g4,g5]", S: "[ab4,ab5]@3 [eb4,eb5]", T: "[ab4,ab5]@3 [db5,db6]",
  U: "[c5,c6]@3 [g4,g5]", V: "[ab4,ab5] [bb4,bb5]", W: "[eb5,eb6]", X: "[f5,f6]@2 [g5,g6] [a5,a6]", Y: "[bb5,bb6]",
  Z: "[a4,a5,a6]@7 ~", AA: "~@3 ab4", AB: "g4",
})).s("gm_string_ensemble_1").gain(0.19)

// other · string ensemble 1 · "2nd Strin" · soft notes
const string_ensemble_1_soft = note("<~@56 A ~@3 B ~@28 C D ~ E@4 ~@2>".pickRestart({
  A: "~@6 b3 g5 ~@8", B: "c7 g6 g5 [db5,eb5] ~@12", C: "~ [eb4,eb5] [c4,c5] ab5", D: "g5", E: "[f4@31 ~]/4",
})).s("gm_string_ensemble_1").gain(0.12)

// other · string ensemble 1 · "3rd Strin"
const string_ensemble_1_3 = note("<~@68 A B A C ~@8 A D E F A G A F ~@10>".pickRestart({
  A: "[f3,f4] [a3,a4] [f3,f4] [g3,g4]@3 [a3,a4]@2", B: "[bb3,bb4]",
  C: "[bb3,bb4]@3 [ab3,ab4]@3 [f3,f4]@4 [eb3,eb4]@5 ~", D: "[bb3,bb4]@13 [eb3,eb4]@3",
  E: "[f3,f4]@2 [a3,a4]@2 [f3,f4]@2 [g3,g4]@6 [a3,a4]@3 ab3", F: "[bb3,bb4]@3 [db4,db5]", G: "[bb3,bb4]@9 [eb3,eb4]@7",
})).s("gm_string_ensemble_1").gain(0.36)

// chords · overdriven guitar · "Dist. Gui"
const overdriven_guitar = note("<~@62 A B C D E F G H E I C D E F G H E I C D E F G H E I J K ~@8>".pickRestart({
  A: "[db2,ab2,db3]", B: "[eb2,bb2,eb3]@15 ~", C: "[f2,c3]@11 [d2,e2] [c2,g2,c3]@4, f3 ~",
  D: "[db2,ab2,db3]@7 db2 [eb2,bb2,eb3]@7 [d2,f2]", E: "[f2,c3,f3]@11 [d2,e2] [c2,g2,c3]@4",
  F: "[db2,ab2,db3]@8 [eb2,bb2,eb3]@7 [c2,d2,e2]", G: "[f2,c3,f3]@11 [d2,e2] [c2,g2]@3 ~, ~@11 c3@4 ~",
  H: "[ab2,db3]@7 db2 [eb2,bb2,eb3]@7 [d2,e2], db2@3 ~@5", I: "[ab2,db3]@7 c2 [eb2,bb2,eb3]@7 [c2,e2,f2], db2@3 ~@5",
  J: "[f2,f3]@15 [g2,ab2], c3@13 ~@3", K: "[eb3,bb3]@3 ~@5",
})).s("gm_overdriven_guitar").gain(0.22)

// chords · overdriven guitar · "Dist. Gui" · soft notes
const overdriven_guitar_soft = note("<~@64 A B C D ~ E C F A B C D ~ E C F A B C D ~ E C F G H ~@8>".pickRestart({
  A: "~@9 [e3,f3]@2 c2 ~@4", B: "~@7 eb2 ~@7 [c2,e2,bb2]", C: "~@11 c2 ~@4", D: "~@15 [f2,bb2]",
  E: "~@7 [c2,eb2] ~@7 [c2,bb2]", F: "~@7 db2 ~@7 [d2,db3]", G: "eb3 ~@15", H: "b2 ~@15",
})).s("gm_overdriven_guitar").gain(0.13)

// chords · acoustic guitar nylon · "Wendy"
const acoustic_guitar_nylon = note("<~@40 A@2 B@3 ~@53>".pickRestart({
  A: "[[g4,ab4]@2 g4@2 f4 ~ g4@6 eb4@2 c4@6 ~@12, ~@6 f4 ~@25]/2", // Abmaj7
  B: "[[g4,ab4]@2 g4@2 f4 ~ g4@5 ~ eb4@2 c4@6 eb4@2 ab4@5 ~ bb4 ~ [bb4,b4] ~@17, ~@6 f4 ~@15 g4 ~@7 c5@10 ~@8]/3", // Abmaj7 Bmaj7
})).s("gm_acoustic_guitar_nylon").gain(0.64)

// other · overdriven guitar · "Wendy"
const overdriven_guitar_2 = note("<~@74 A B C ~@7 D E F G@2 ~@9>".pickRestart({
  A: "~@10 bb4@4 bb4 ab4", B: "bb4 ab4 ~ ab4 f4 eb4 f4 eb4 c4 bb3 c4 bb3 ab3 f3 eb3 c3, ~ bb4 ~@6", C: "eb3@3 ~",
  D: "~@13 c5@3", E: "eb5@3 ~ eb5@3 ~", F: "[eb5,e5] ~@3 eb5@8 ~ f5@2 ~, f5@3 ~@13",
  G: "[ab5@7 [f5,g5] eb5@5 ~ g5@15 ~@3, g5 ~@31]/2", // Fsus2
})).s("gm_overdriven_guitar").gain(0.36)

// other · celesta · "Bell"
const celesta = note("<~@35 [~@4 c6@3 ~ g5@4 e5@4] [g4@9 ~@7] ~@61>").s("gm_celesta").gain(0.18)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@4 A B A B A B A B A B A B C@2 D@2 A B A B A B A B E@2 F@2 ~@8 E@2 F@2 A B A B A B A B E@2 F@2 A B A B A B G H A I J
  I A I A I A I J I A I A I A I J I A I A I K L M@2 ~@6
>`.pickRestart({
  A: "f2@3 c2", B: "bb1@15 ~", C: "[c2@6 eb2@7 ~ ab2@13 eb2 ab1@4]/2", D: "[c2@6 eb2@8 ab2@15 ~@3]/2",
  E: "[c2@6 eb2@8 ab2@13 eb2 ab1@3 ab1]/2", F: "[c2@6 eb2@8 ab2@8 g2@5 ~ g2@2 f2 [a1,b1,c2]]/2", G: "db2@15 ~",
  H: "eb2@15 ~", I: "db2 eb2", J: "f2@11 ~ c2@4", K: "f2", L: "eb2", M: "[f1@31 ~]/2",
})).s("gm_electric_bass_pick").gain(0.45)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!62 [x!16]!2 [x ~@2 x!2 ~@3]!28 x ~@5>").gain(0.54)

// drums · rim
const rim = s("rim").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7
>`.pickRestart({
  A: "~@2 x!2 ~@7 x!2 ~@3",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@3 A B@28 ~@3 A ~@3 A B@22 ~ C B@19 D B@7 ~@7>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@8 x ~@2 x ~@2 x ~", D: "~@4 x ~@2 x!9",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@6
>`.pickRestart({
  A: "~@14 x!2",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 [x!8]!28 ~@8 [x!8]!22 ~@2 [x!8]!27 [x!5 ~@3] ~@6>").gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@6
>`.pickRestart({
  A: "~@11 x!2 ~@3",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@7 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~@3 A ~ A@3 ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@5
>`.pickRestart({
  A: "x",
})).gain(0.42)

// drums · ride
const ride = s("rd").struct("<~@64 A@8 B C D E F G H I J K L M N G O J P Q R S ~@6>".pickRestart({
  A: "x!8", B: "x!9 ~ x!6", C: "x!7 ~ x!3 ~ x!4", D: "x!3 ~ x ~ x!2 ~ x ~ x!4 ~", E: "x!3 ~ x!3 ~ x ~ x!5 ~",
  F: "x ~ x!3 ~ x ~ x!3 ~ x ~ x ~", G: "x!3 ~ x!7 ~ x!4", H: "x ~ x!5 ~@2 x!2 ~ x!3 ~", I: "x ~ x!11 ~ x!2",
  J: "x!3 ~ x!12", K: "x!13 ~ x!2", L: "x ~ x ~ x ~ x ~ x!8", M: "x!3 ~ x!10 ~@2", N: "x!8 ~ x!7", O: "x!16",
  P: "x!10 ~ x!5", Q: "~ x ~ x!2 ~ x!3 ~ x!4 ~ x", R: "x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x", S: "x ~@4 x ~ x!2 ~@7",
// … 30 more lines

More by Prince