Strudelify

Can't Get Enough of Your Love

Taylor Dayne

KeyF majorTempo108 bpm
0:00/0:00
// Can't Get Enough of Your Love — Taylor Dayne
// 108 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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 · "A.PIANO 3"
const piano = note(`<
  A@2 B@2 A@2 C@2 A@2 C@2 D@2 E F G H I J K L M N I O P L Q L P L Q R S T U V W X Y Z S AA AB AC AD AE I J K L M N I O P
  L Q L P L Q AF S T U V W X Y Z S AA AB AC AD AG I J K L AH@2 C@2 AH@2 AI AJ AK AL AK AM AN AO AN AP I J K L M N I O P
  L Q L P L Q R I J K L M N I AQ
>`.pickRestart({
  A: "[[bb2,c4,d4,f4,a4]@28 ~@2 [bb2,c4,d4,f4,a4] ~]/2", // Bbmaj7
  B: "[[a2,a3,c4,e4,g4]@18 ~@2 [g3,a3,e4] ~ [g2,a3,bb3,d4,f4] ~@3 [a2,a3,c4,e4,g4] ~@5, ~@10 [f2,c4] ~@5]/2", // Am7 A7 Gm7 Am7 F5
  C: "[[a2,a3,c4,e4,g4]@18 ~@2 [g3,a3,e4] ~ [g2,a3,bb3,d4,f4] ~@3 [a2,a3,c4,e4,g4]@4 ~@2, ~@10 [f2,c4] ~@5]/2", // Am7 A7 Gm7 Am7 F5
  D: "[[bb2,c4,d4,f4,a4]@7 ~]/2", E: "[c2,g3,bb3,c4,d4,f4] ~@2 [c2,g3,bb3,c4,d4,f4] ~@2 [c2,g3,bb3,c4,d4,f4]@8 ~@2",
  F: "[c2,g3,bb3,c4,d4,f4]@3 [c2,g3,bb3,c4,d4,f4] ~@2 [c2,g3,bb3,c4,d4,f4]@8 ~@2", // Gm7
  G: "[c2,c3,g3,bb3,d4,f4,a4]@2 ~ [c2,c3,g3,bb3,d4,f4,a4] ~@2 [c2,c3,g3,bb3,d4,f4,a4]@8 ~@2", // Dm7
  H: "[c2,c3,g3,bb3,d4,f4,a4]@2 ~ [c2,c3,g3,bb3,d4,f4,a4] ~@2 [g3,bb3,d4,f4]@6 [c4,d4,f4,g4,bb4]@2 ~@2, ~@3 [c2,c3,a4]@4 ~", // Dm7 Gm7 F
  I: "[f1,f2,c4,f4,a4]@2 ~ [a1,a2,c4,e4,f4,g4] ~@2 [d2,d3,a3,c4,d4,f4]@4 [c2,c3,c4] ~ [c3,c4] [d3,d4] [f3,f4] d2", // F Am7 Dm7 C D F
  J: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 [c2,c3,f3,bb3,d4,f4] ~@3 [c2,c3,g3,bb3,d4,f4] ~", // Bbmaj7 Am7 Gm7 Bb Gm7
  K: "[f1,f2,c4,f4,a4]@2 ~ [a1,a2,c4,e4,f4,g4] ~@2 [d2,d3,a3,c4,d4,f4]@4 [c3,c4] ~ [c3,c4] [d3,d4] [f3,f4] [d2,d4]", // F Am7 Dm7 C D F D
  L: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 [c2,c3,g3,bb3,d4,f4]@2 ~@2 [c2,c3,g3,bb3,d4,f4] ~", // Bbmaj7 Am7 Gm7
  M: "[f1,f2,c4,f4,a4]@2 ~ [a1,a2,c4,e4,f4,g4] ~@2 [d2,d3,a3,c4,d4,f4]@4 [c3,c4] ~ [c3,c4] [d3,d4] [f3,f4] ~", // F Am7 Dm7 C D F
  N: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 f3@2 ~@2 [c2,c3,g3,bb3,d4,f4] ~", // Bbmaj7 Am7 Gm7
  O: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 c4 ~ [f3,c4] d4 f4 ~", // Bbmaj7 Am7 Gm7 F5
  P: "[f1,f2,c4,f4,a4]@2 ~ [a1,a2,c4,e4,f4,g4] ~@2 [d2,d3,a3,c4,d4,f4]@4 [c2,c3,c4] ~ [c3,c4] [d3,d4] [f3,f4] d4", // F Am7 Dm7 C D F
  Q: "[f1,f2,c4,f4,a4]@2 ~ [a1,a2,c4,e4,f4,g4] ~@2 [d2,d3,a3,c4,d4,f4]@4 [c2,c3,c4] ~ [c3,c4] [d3,d4] [f3,f4] [c2,db2]", // F Am7 Dm7 C D F Dbmaj7
  R: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 [c2,c3,g3,bb3,d4,f4]@2 ~@2 [c2,c3,g3,bb3,d4,f4]@2", // Bbmaj7 Am7 Gm7
  S: "[bb1,bb2,a3,bb3,d4,f4]@3 [bb1,bb2,a3,bb3,d4,f4] ~@2 [a3,bb3,d4,f4]@3 ~ [a3,bb3,d4,f4]@2 [bb1,bb2] ~ [bb1,bb2,a3,bb3,d4,f4] ~, ~@3 [bb1,bb2]@2 ~@3", // Bbmaj7 Bb Bbmaj7 Bb
  T: "[bb1,bb2,a3,bb3,d4,f4]@3 [bb1,bb2,a3,bb3,d4,f4] ~@2 [a3,bb3,d4,f4]@4 [a3,bb3,d4,f4]@2 [bb1,bb2] ~ [bb1,bb2,bb3,d4,f4,g4] ~, ~@3 [bb1,bb2]@3 ~@2", // Bbmaj7 Bb Gm7 Bb
  U: "[a1,a2,g3,a3,c4,e4]@3 [a1,a2,g3,a3,c4,e4] ~@2 [a1,a2,g3,a3,c4,e4]@6 [a1,a2,g3] ~ [a1,a2,g3,a3,c4,e4] ~", // Am7 A7 Am7
  V: "[d2,d3,a3,c4,d4,f4]@3 [d2,d3,a3,c4,d4,f4] ~@2 [d2,d3,a3,c4,d4,f4]@4 [d2,d3,a3,c4,d4,f4] ~ [c2,c3,a3,c4,d4,f4] ~@3", // Dm7
  W: "[bb1,bb2,a3,bb3,d4,f4]@3 [bb1,bb2,a3,bb3,d4,f4] ~@2 [a3,bb3,d4,f4]@3 ~ d2 [f2,g2] [bb1,a2] ~ [bb1,bb2,a3,bb3,d4,f4] ~, ~@3 [bb1,bb2]@2 [a3,bb3,d4,f4] ~@2", // Bbmaj7 Fsus2 Bbmaj7 Bb Bbmaj7
  X: "[bb1,bb2,a3,bb3,d4,f4]@3 [bb1,bb2,a3,bb3,d4,f4] ~@2 [a3,bb3,d4,f4]@3 ~ [a3,bb3,d4,f4]@2 [bb1,bb2] ~ [bb1,bb2,bb3,d4,f4,g4] ~, ~@3 [bb1,bb2]@3 ~@2", // Bbmaj7 Bb Gm7 Bb
  Y: "[a1,a2,g3,a3,c4,e4]@3 [a1,a2,g3,a3,c4,e4] ~@2 [a1,a2,g3,a3,c4,e4]@6 [a1,g2,a2] c3 [a2,g3,a3,c4,e4]@2, ~@14 a1 ~", // Am7 A7 Am7
  Z: "[d2,d3,a3,c4,d4,f4]@3 [d2,d3,a3,c4,d4,f4] ~@2 [d2,d3,a3,c4,d4,f4]@2 [d2,d3,a3,c4,d4,f4]@3 ~ [a3,c4,f4]@4", // Dm7 F
  AA: "[bb1,bb2,a3,bb3,d4,f4]@3 [bb1,bb2,a3,bb3,d4,f4] ~@2 [bb1,bb2]@4 a1@2 bb1@2 b1@2, ~@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@2", // Bbmaj7 Bb Bbmaj7
  AB: "[c2,c3,g3,bb3,d4,f4]@3 [c2,c3,g3,bb3,d4,f4] ~@2 [c2,c3,g3,bb3,d4,f4]@8 bb2 b2", // Gm7
  AC: "[c2,c3,g3,bb3,d4,f4]@3 [c2,c3,g3,bb3,d4,f4] ~@2 [c2,c3,g3,bb3,d4,f4]@7 ~ bb2 b2", // Gm7
  AD: "[c2,c3,bb3,d4,f4,a4]@3 [c2,c3,bb3,d4,f4,a4] ~@2 [c2,c3,bb3,d4,f4,a4]@8 bb2 b2", // Dm7
  AE: "[c2,c3,bb3,d4,f4,a4]@3 [c2,c3,bb3,d4,f4,a4] ~@2 [c2,c3,bb3,d4,f4,a4]@4 ~@2 [c2,c3,c4,d4,f4,a4,bb4]@3 ~", // Dm7
  AF: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 [c2,c3,g3,bb3,d4,f4]@2 c5 d5 [c2,c3,g3,bb3,d4,f4]@2", // Bbmaj7 Am7 Gm7
  AG: "[c2,c3,bb3,d4,f4,a4]@3 [c2,c3,bb3,d4,f4,a4] ~@2 [c2,c3,bb3,d4,f4,a4]@4 ~@2 [c2,c3,bb3,d4,f4,a4]@2 ~@2", // Dm7
  AH: "[[bb2,c4,d4,f4,a4]@22 ~@2 [bb2,c4,d4,a4] ~ [bb2,c4,d4,f4,a4] ~@3 [bb2,c4,d4,f4,a4] ~, ~@12 f4 ~@3]/2", // Bbmaj7
  AI: "[a2,a3,c4,e4,g4]", AJ: "~@4 [g3,a3,c4,e4]@3 g3 ~@2 [e3,g3,a3,c4] ~ [a2,e3,g3,a3,c4]@3 ~, ~@5 a2 ~@2",
  AK: "[g1,g2,g3,bb3,d4,f4]@3 [g1,g2,g3,bb3,d4,f4] ~@2 [g1,g2,g3,bb3,d4,f4]@8 ~@2", // Gm7
  AL: "[c2,c3,g3,bb3,d4,f4]@3 [c2,c3,g3,bb3,d4,f4] ~@2 [c2,c3,g3,bb3,d4,f4]@7 ~@3", // Gm7
  AM: "[c2,c3,g3,bb3,d4,f4]@3 [c2,c3,g3,bb3,d4,f4] ~@2 [c2,c3,g3,bb3,d4,f4]@8 ~@2", // Gm7
  AN: "[g1,g2,d4,f4,bb4]@2 [c4,a4] [d4,f4,bb4]@2 [c4,a4] [g1,g2,d4,f4,bb4]@8 ~@2, ~@3 [g1,g2] ~@12", // Gm7 F Bb F Gm7 G
  AO: "[c2,c3,d4,f4,bb4]@2 [c4,a4] [d4,f4,bb4]@2 [c4,a4] [d4,f4,bb4]@8 ~@2, ~@3 [c2,c3] ~@2 [c2,c3]@6 ~@4", // Bb F Bb F Bb C
  AP: "[c2,c3,d4,f4,bb4]@2 [c4,e4] [d4,f4,bb4]@2 [c4,e4] [c4,d4,f4,g4,bb4]@6 [c4,d4,f4,bb4]@4, ~@3 [c2,c3] ~@2 [c2,c3]@8 ~@2", // Bb C Bb C Gm7 Bb C
  AQ: "[bb1,bb2,a3,bb3,d4,f4]@3 [a1,a2,g3,a3,c4,e4,f4] ~@2 [g1,g2,f3,g3,bb3,d4,f4]@4 ~@6", // Bbmaj7 Am7 Gm7
})).s("gm_piano").gain(0.27)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@2 B C D E B C F@2 G@2 H@2 I J I K L M L M L N L M L N L O L M L N P Q R S P T U S P V I W I X L M L M L Y L M L N L
  M L O L N P Z U S P AA AB S P AC W@2 I AD L M L AE AF@2 AG AH AI@2 AJ AK AL AM AL AM AL AN AL AO L AP L M L Y L AQ L N
  L O L AE L N L M L M L N L AR
>`.pickRestart({
  A: "[bb1@28 ~@2 bb1 ~]/2", B: "a1", C: "~@2 f1 g1 ~ a1 ~@2", D: "bb1", E: "~@4 bb1@2 bb1 ~@3 bb1 ~@3 bb1 ~",
  F: "[bb1@4 ~@2 f2@2 f2 ~@3 bb1@7 ~ bb1@2 bb1 ~@3 bb1 ~@3 bb1 ~]/2",
  G: "[a1@4 ~@2 e2@4 ~@2 a1@6 ~@2 f1@2 g1@2 ~@2 a1@5 ~]/2",
  H: "[bb1@4 ~@2 f2@4 ~@2 bb1@8 bb1@2 bb1 ~@2 f1 a1@2 f1@2 b1@2]/2", I: "c2 ~@2 c2 ~@2 c2@6 ~@2 bb1 b1",
  J: "c2@2 ~ c1 ~@2 c2@6 ~@2 bb1 b1", K: "c2 ~@2 c2 ~@2 c2@2 c1@2 d1@2 f1 ~ a1 ~",
  L: "f1@2 ~ a1 ~@2 d2@4 c2 ~ d2 c2 a1 ~", M: "bb1@3 a1 ~@2 g1@4 c2 ~@3 c2 f2", N: "bb1@3 a1 ~@2 g1@4 c2 ~@3 c2@2",
  O: "bb1@3 a1 ~@2 g1@4 c2 ~@3 c2 g1", P: "bb1@3 ~@4 bb1 bb1@2 ~@4 f1 a1", Q: "bb1@3 ~@4 bb1 bb1@2 ~ bb1 f1@2 bb1 ~",
  R: "a1@3 ~@4 a1 a1@2 ~@4 a1 ~", S: "d2@3 ~@4 d2 d2@3 ~ c2@3 ~", T: "bb1@3 ~@4 bb1 bb1@2 ~@2 g1@3 ~",
  U: "a1@3 ~@4 a1 a1@2 ~@4 c2 a1", V: "bb1@3 ~@4 bb1 bb1@2 ~ bb1 ~@2 b1 ~", W: "c2@2 ~ c2 ~@2 c2@6 ~@2 bb1 b1",
  X: "c2 ~@2 c2 ~@2 c2@3 ~ e2 ~ f2 ~ c2 ~", Y: "bb1@3 a1 ~@2 g1@4 c2 ~ c2 d2 f2@2",
  Z: "bb1@3 ~@4 bb1 bb1@2 ~ f1 f1@2 a1 ~", AA: "bb1@3 ~@4 bb1 bb1@2 ~ f1 f1@2 a1@2", AB: "a1@3 ~@4 a1 a1@2 ~@4 a1 c2",
  AC: "bb1@3 ~@4 bb1 bb1@2 bb1@2 bb1@2 b1 ~", AD: "c2 ~@2 c2 ~@2 c2@3 ~ c2 ~ c2 d2 f2 ~",
  AE: "bb1@3 a1 ~@2 g1@4 c2 ~ c2 ~ c2!2", AF: "[bb1@22 ~@2 bb1@2 bb1 ~@3 bb1@2]/2", AG: "a1@10 ~@2 a1@2 a1 ~",
  AH: "~@4 f1@2 g1 ~@3 a1@3 ~@2 a1", AI: "[bb1@4 ~@2 f2@4 ~@2 bb1@8 ~@2 f1@2 bb1@2 bb1 ~@3 bb1@2]/2",
  AJ: "a1@2 ~ e2@2 ~ a1@2", AK: "d2@2 ~@2 d2@2 ~ a1 d1@2 d2@2 a1 c2 a1 ab1",
  AL: "g1@2 ~ g1 ~ g1 g1@3 a1 a1@2 bb1@2 b1@2", AM: "c2 a1 f1 c2 ~@2 c2@2 ~ c2!2 ~ c2 d2 f1@2",
  AN: "c2@2 ~ c2 ~ c2 c2@2 ~ c2!2 ~ c2 d2 f1@2", AO: "c2@2 ~ c2 ~ c2 c2@2 c2 d2 f2@2 g2 f2 d2 c2",
  AP: "bb1@3 a1 ~@2 g1@4 c2 ~ c2@2 f2!2", AQ: "bb1@3 a1 ~@2 g1@4 c2 ~ c2 ~ c2 ~", AR: "bb1@3 a1 ~@2 g1@4 c2 ~@3 c2 ~",
})).s("gm_electric_bass_finger").gain(0.35)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<A ~ B ~ A ~ B ~ A ~ C D A ~@69 A ~ B ~ A ~ B ~@33>".pickRestart({
  A: "f5 e5 [d5,eb5] f5 e5 [d5,eb5] f5 e5 ~ f5 ~@2 f5 ~@3", B: "e5 eb5 [db5,d5] e5 eb5 [db5,d5] e5 eb5 ~ e5 ~@2 e5 ~@3",
  C: "e5 eb5 [db5,d5] e5 eb5 [db5,d5] e5 eb5 ~ e5 ~@2 d5 db5 [b4,c5] d5", D: "db5 [b4,c5] d5 db5 ~ d5 ~@10",
})).s("gm_electric_guitar_jazz").gain(0.15)

// other · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note("<A ~ B ~ A ~ B ~ A ~ C D A ~@69 A ~ B ~ A ~ B ~@33>".pickRestart({
  A: "~@8 [d5,eb5] ~ e5 [d5,eb5] ~ e5 [d5,eb5] ~", B: "~@8 [db5,d5] ~ eb5 [db5,d5] ~ eb5 [db5,d5] ~",
  C: "~@8 [db5,d5] ~ eb5 [db5,d5] ~@4", D: "~@4 [b4,c5] ~ db5 [b4,c5] ~@8",
})).s("gm_electric_guitar_jazz").gain(0.05)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@6 F@2 G@2 H I J@2 K@2 L@2 M N O P@3 Q R S@2 T@2 U@6 F@2 G@2 H I J@2 K@2 L@2 M N O P@3 Q R S@2
  T@2 U@6 F@2 J@2 V@2 W@2 X@2 Y@2 Z AA AB AC@5 F@2 G@2 H I J@2 K@2 L@2 M N O AD F@2 G@2 H I AE@2
>`.pickRestart({
  A: "[~@10 c4!2 d4@2 [f4,gb4] [g4,ab4] ~@8 e4@2 f4@4 g4@2, ~@15 a4@8 ~@9]/2", B: "[c4@30 [f4,gb4] [g4,ab4]]/2",
  C: "[a4@24 g4@3 a4@4 ~, ~@27 ab4 ~@4]/2", D: "[g4@13 d5@2 c5]/2",
  E: "[a4@3 d4@2 [e4,f4] a4@19 ~@3 [c5,c6] [a4,bb4,a5,bb5] [f4,g4,f5,g5] [d4,e4,d5,e5] ~@31 [bb5,b5] c6@22 ~@2 [d4,d5]@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@2, ~@6 g4 ~@24 [c4,c5]@57 ~@8]/6", // Fmaj7 C Bbmaj7 Fsus2 Dsus2 Bmaj7 D E …
  F: "[~@6 [c4,c5]@18 f4@2 [f4,f5] [g4,g5] [a4,a5] [f4,f5] [d4,d5]@2, ~@24 f5 ~@7]/2", // C F G A F D
  G: "[[f4,f5]@6 [a4,a5]@19 ~@2 [e4,e5] [f4,f5] [g4,g5] [a4,a5] [bb4,bb5], ~@13 [d4,d5] ~@2]/2", // F A E F G A Bb D
  H: "[a4,a5]@3 [f4,f5]@3 [c4,c5]@10", I: "~@8 [f4,f5] ~ [f4,f5]!2 [f4,f5]@2 [d4,d5]@2",
  J: "[[f4,f5]@6 [a4,a5]@22 [f4,f5] [g4,g5] [a4,a5] [bb4,bb5]]/2", // F A F G A Bb
  K: "[[a4,a5]@3 [f4,f5] ~@2 [c4,c5]@14 ~@2 [d4,d5]@2 [f4,f5] ~ [f4,f5] [g4,g5] ~ [f4,f5] [d4,d5]@2]/2", // A F C D F G F D
  L: "[[a4,a5]@12 [f4,a4,f5] [d4,g4,d5] [a4,c5,a5] [bb4,d5,bb5]]/2", M: "~@3 [c4,c5]@5",
  N: "~@12 [c4,c5] [d4,d5] [f4,f5] [d4,d5]", O: "[a4,a5]",
  P: "[~@8 [d4,d5]@2 [e4,e5]@2 [d4,f4,f5]@2 ~@2 a4@11 [gb4,g4,ab4] a4@12 [d4,d5]@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@2, ~@7 [c4,g4,g5] ~@16, ~@15 a5@25 ~@8]/3", // D E Dm D E F G C5
  Q: "[c4,c5]@9 [g4,a4,bb4,a5,bb5] [c5,c6]@2 [d4,d5]@2 [e4,e5]@2, ~@10 b5 ~@5", // C Gm C D E
  R: "[f4,f5]@4 [d4,d5] [e4,e5] [f4,f5] [g4,g5]", // F D E F G
  S: "[a4@11 [gb4,g4,ab4] a4@12 [bb3,d4,d5]@2 [c4,e4,e5]@2 [d4,f4,f5]@2 [e4,g4,g5]@2, a5 ~]/2", // Bb C Dm Em
  T: "[c5@9 [a5,bb5] c6@2 d5@2 ~@2 [a3,d4,f4]@8 d5@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@2, [g3,c4,e4]@2 ~ d4, ~@10 b5 ~@3 a5@10 ~@8]/2", // Bbmaj7 Dm E F G C
  U: "[~@9 g3 a3@2 ~ g4 a4@13 ~ [c5,c6] [a4,bb4,a5,bb5] [f4,g4,f5,g5] [d4,e4,d5,e5] ~@31 [bb5,b5] c6@20 [bb5,b5] [ab5,a5] g5 ~ [d4,d5]@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@2, a5@7 ~@17, a4@12 ~@2 ab4 ~@81, ~@10 ab3 ~ d4@2 ~@17 [c4,c5]@57 ~@8]/6", // C Bbmaj7 Fsus2 Dsus2 Bmaj7 Amaj7 D E …
  V: "[~@10 c4@2 d4@2 [g4,ab4] a4@9 [a4,d5]@8, a5@3 ~, a4@5 ~@11, ~@3 f5@9 ~@4]/2", // Abmaj7 D5
  W: "[~@10 a3 bb3 [c4,d4] c4@15 ~@2 d5 e5, e5@15 ~, ~@5 c5@10 ~]/2", X: "[[a4,f5]@24 g4@3 ab4 a4@4, d4, ~@3 c5]/2",
  Y: "[c4@4 d4@2 c4@25 ~, g4]/2", Z: "f4 [g4,a4] ~@12 f5 ~, ~@3 [c4,c5]@5",
  AA: "[f4,g4,f5] [a4,g5,a5] ~@12 f4 d4, ~@3 [c4,c5]@5", AB: "[f4,f5] [g4,g5] [a4,a5] ~@3 [c4,c5]@10",
  AC: "[[f4,f5] [g4,g5] [a4,a5] ~@11 bb5 b5 ~@31 [a6,bb6,b6] c7@20 [bb5,b5,bb6,b6] [ab5,a5,g6,ab6,a6] g5 ~ [d4,d5]@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@2, ~@3 [c4,c5]@33 ~@4, ~@15 c6@52 ~@13]/5", // F G A Bmaj7 D E F G …
  AD: "~@4 [d4,d5] [e4,e5] [d4,f4,f5] [c4,g4,g5]", AE: "[[f4,f5]@6 [a4,a5]@22 [f4,f5] [g4,g5] [a4,a5] ~]/2",
})).s("gm_string_ensemble_1").gain(0.27).pan(0.4)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@19 A B C ~ D B C ~ A B C ~ D B C ~@15 A B C ~ D B C ~ A B E F D B E G@2 H I J@2 H I K@2 L M N O P A B E ~@8 Q@5 R Q
  S ~ A B C ~ D B C ~ A B E F D B E ~ A B E F D B E
>`.pickRestart({
  A: "[f4,a4]@3 [e4,g4] ~@2 [d4,f4]@4 ~@6", B: "[c4,f4]@2 [c4,f4] ~@11 [c4,c5] ~", C: "[d4,f4,a4,c5]!4 ~@12",
  D: "[f4,a4]@3 [e4,g4] ~@2 [f4,a4,c5]@9 ~", E: "[a4,c5,d5,f5]!4 ~@12", F: "[f4,a4]@2 ~ [c4,f4]@4 ~", G: "d4/2",
  H: "[c4,e4]@15 ~", I: "[d4,f4]@7 ~", J: "[[d4,f4]@31 ~]/2", K: "[d4@9 ~ d4@2 e4@2 a3@17 ~, f4@13 ~ f4@14 ~@4]/2",
  L: "[bb3,d4,f4]@2 ~ [bb3,d4,f4] ~@2 [bb3,d4,f4]@8 ~@2", M: "[bb3,d4,f4]@3 [bb3,d4,f4] ~@2 [bb3,d4,f4]@8 ~@2",
  N: "[bb3,d4,f4,a4]@3 d4 ~@2 [bb3,d4,f4,a4]@8 ~@2", O: "[d4,f4,a4]@3 [bb3,d4,a4] ~@2 [d4,f4,a4]@7 ~@3",
  P: "[f4,a4]@3 e4 ~@2 f4@8 ~@2", Q: "[d4,f4]@3 [d4,f4] ~@2 [d4,f4]@5 ~ [d4,f4] [e4,g4] [f4,a4] ~",
  R: "[d4,f4]@3 [d4,f4] ~@2 [d4,f4]@4 ~ eb5 e5@2 c5@2, ~@5 d5 ~@2", // Dm
  S: "[d4,f4]@3 [d4,f4] ~@2 d4@2 [bb3,d4]@2 [c4,e4]@2 [d4,f4]@2 [e4,g4]@2", // Dm Bb C Dm Em
})).s("gm_brass_section").gain(0.39).pan(0.6)

// chords · brass section · "BRASS 1" · soft notes
const brass_section_soft = note("<~@64 A@2 ~@10 B C D ~@11 E@7 F ~@24>".pickRestart({
  A: "f4/2", B: "~@3 [bb3,f4,a4] ~@12", C: "bb3@3 f4 ~@2 bb3@7 ~@3", D: "~@3 g4 ~@2 d4@8 ~@2",
  E: "bb3@2 ~ bb3 ~@2 bb3@5 ~@5", F: "bb3@2 ~ bb3 ~@2 bb3@2 ~@8",
})).s("gm_brass_section").gain(0.2).pan(0.6)

// chords · french horn · "FR.HORN"
const french_horn = note("<~@4 A@2 B@2 A@2 B@2 C@2 ~@108>".pickRestart({
  A: "[[a3,d4]@29 ~ [a3,d4]@2]/2", B: "[g3,c4]/2", C: "[a3,d4]/2",
})).s("gm_french_horn").gain(0.24).pan(0.7)

// chords · vibraphone
const vibraphone = note("<A@2 B@2 A@2 B@2 A@2 B@2 C@2 ~@68 A@2 B@2 A@2 D ~@33>".pickRestart({
  A: "[~@6 d4@8 ~ a4, a4@7 ~, ~@3 f4@11 ~@2]/2", B: "[~@12 c4@7 ~ e4@2 f4 ~@3 g4 ~@5, g4@19 ~@13, ~@6 e4@13 ~@13]/2",
  C: "[~@3 d4@4 ~, a4@7 ~, ~@3 f4@11 ~@2]/2", D: "~@3 c4, g4, ~@3 e4@5",
})).s("gm_vibraphone").gain(0.4).pan(0.6)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  A@12 B C D E F E D E G E D E H I D J K L M J N O P Q R S T U N V W U X Y Z AA D AB AC U D J N I M U K AD M J AE AF AG
  AH AI AJ AI AJ AI AJ AK U X Y Z AA D AB AC AL A@3 AM ~@36
>`.pickRestart({
  A: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3 x", B: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", C: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~",
  D: "~ x!3", E: "x!7 ~", F: "x ~@3 x ~@3 x ~@3 x ~ x!2", G: "x ~ x!3 ~@3 x ~@3 x!4", H: "x ~ x!3 ~@3 x ~@3 x ~@3",
  I: "x ~ x ~ x ~@3 x ~ x ~ x!4", J: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", K: "x ~ x ~ x ~@3 x ~ x!3 ~ x ~",
  L: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x!2", M: "~ x!2 ~ x ~ x ~", N: "x!3 ~ x ~ x!2", O: "x ~ x!3 ~ x!3 ~@3 x!4",
  P: "~@4 x ~ x!3 ~@3 x ~ x ~", Q: "x!5 ~ x!2", R: "x ~ x ~ x ~@2 x!2 ~@3 x ~ x ~", S: "x ~ x ~ x ~ x!3 ~ x ~ x ~@3",
  T: "x ~ x ~ x ~@3 x ~@3 x ~ x!2", U: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", V: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
  W: "~@2 x!3 ~ x!2", X: "~@2 x!3 ~@2 x!2 ~ x!3 ~@3", Y: "x ~ x!3 ~@2 x!2 ~ x!3 ~@3", Z: "x ~@2 x!2 ~ x!4 ~@2 x!4",
  AA: "~@2 x!2 ~ x ~@2 x!6 ~@2", AB: "x!8", AC: "x ~ x ~ x ~@2 x!2 ~@3 x!2 ~@2", AD: "x ~ x ~ x ~ x ~ x ~@3 x!4",
  AE: "x ~ x ~ x ~@3 x ~@2 x!2 ~ x!2", AF: "~@2 x ~ x ~@3 x ~ x!4 ~@2", AG: "~@2 x!2 ~@2 x ~@3 x!2 ~@3 x",
  AH: "~@3 x ~@2 x ~@4 x ~@2 x!2", AI: "~@3 x ~@7 x ~@3 x", AJ: "~@3 x ~@2 x ~@3 x!2 ~@2 x!2", AK: "~ x!4 ~ x!2",
  AL: "x ~ x ~ x ~ x ~ x ~ x!6", AM: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B@3 A B@3 A B@3 C D E ~ F ~ E G E ~ E G E ~ E ~ H ~ E G E ~ I ~ E ~ E ~ E ~ I ~ H@2 J ~ E G E ~ E ~ E ~ E ~ H ~ E G
  E ~ K L M N M N M N I ~ H@2 J ~ E G E ~ A B@3 ~@36
>`.pickRestart({
// … 72 more lines

More by Taylor Dayne