Strudelify

Stupid Cupid

Francis Connie

KeyD majorTempo128 bpm
0:00/0:00
// Stupid Cupid — Francis Connie
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 · "FINGERDBAS"
const bass = note(`<
  A B C D E F G H I J K B C D L M N O P M Q R S B T U V M N V W X Y D Z H N AA AB AC AD AE P B AF U AB AG AH AI@3 AJ B C
  AK AL AM AN AG AD AE P AO ~ AP AQ B C AR AG AS AG@2 AC AG AT
>`.pickRestart({
  A: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1@2 b1@2 c#2 ~", B: "d2@3 ~@13", C: "~@5 a1 b1 c#2",
  D: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ a2 ~ b2 ~ b2 ~", E: "c3 ~ c3 ~ b2 ~ b2 ~ a2 ~ d1@2 e1@2 f#1 ~",
  F: "[f#1,g1] ~ g1 ~ b1 ~ b1 ~ d2 ~ d2 ~ e2 ~ d2 ~", G: "g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ d2 ~ g1 ~ b1@2",
  H: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ a2 ~ b2 ~ a2@2", I: "[f#1,d2] ~ d2 ~ f#2 ~ f#2 ~ a2 ~ e1@2 f#1 ~ g1 ~",
  J: "a1 ~ a1@2 c#2 ~ c#2 ~ e2 ~ [e2,f2] ~ f#2@2 e2 ~", K: "g1 ~ g1@2 b1 ~ b1 ~ d2 ~ a1@2 b1@2 c#2 ~",
  L: "c3 ~ c3 ~ b2 ~ b2 ~ a2 ~ a1@2 b1@2 c#2@2", M: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ a2 ~ b2 ~ a2 ~",
  N: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ d1@2 e1@2 f#1@2", O: "g1 ~ g1@2 b1 ~ b1 ~ d2 ~ d2 ~ e2@2 d2 ~",
  P: "g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ a1@2 b1@2 c#2@2", Q: "c3 ~ c3 ~ b2 ~ b2 ~ a2 ~ e1@2 f#1@2 g1@2",
  R: "a1 ~ a1 ~ c#2 ~ c#2 ~ e2 ~ e2 ~ f#2@2 e2 ~", S: "g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ a1@2 b1@2 c#2 ~", T: "~@5 d2 e2 f#2",
  U: "g1 ~ g1@2 b1 ~ b1 ~ d2 ~ d2@2 e2@2 d2 ~", V: "g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ d2 ~ e2@2 d2 ~",
  W: "g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ d2 ~ b1@2 g1@2", X: "e2@2 ~@6 e1@3 ~@5", Y: "a1@2 ~@2 e1@4 a1 ~ a1@2 b1@2 c#2@2",
  Z: "c3 ~ c3 ~ b2 ~ b2 ~ a2 ~ a1@2 b1@2 c#2 ~", AA: "g1 ~ g1@2 b1 ~ b1@2 d2 ~ d2 ~ e2@2 d2 ~",
  AB: "g1 ~ g1 ~ b1 ~ b1 ~ d2@2 a1@2 b1@2 c#2@2", AC: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ a2 ~ b2@2 a2@2",
  AD: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ e1@2 f#1@2 g1@2", AE: "a1 ~ a1 ~ c#2 ~ c#2 ~ e2 ~ e2@2 f#2@2 e2 ~",
  AF: "~@5 d1 e1 f#1", AG: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2 ~ a2@2 b2@2 a2@2",
  AH: "d2 ~ d2 ~ f#2 ~ f#2 ~ a2@2 d1@2 e1@2 f#1@2",
  AI: "[g1 ~ g1@2 b1 ~ b1 ~ d2 ~ d2 ~ e2 ~ d2@2 g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ d2@2 b1@2 g1@2 e2@2 ~@6 e1@3 ~@5, a1]/3",
  AJ: "a1@2 ~@2 e2@4 a1@2 a1 ~ b1 ~ c#2@2", AK: "d2 ~ d2 ~ f#2 ~ f#2@2 a2 ~ a2 ~ b2 ~ b2 ~",
  AL: "c3 ~ c3 ~ b2 ~ b2 ~ a2@2 d1@2 e1 ~ f#1@2", AM: "g1 ~ g1@2 b1 ~ b1 ~ d2 ~ d2 ~ e2@2 d2@2",
  AN: "g1 ~ g1@2 b1 ~ b1 ~ d2 ~ a1@2 b1 ~ c#2@2", AO: "d2 ~@7", AP: "a1@2 a1@2 c#2 ~ c#2@2 e2 ~ e2@2 f#2@2 e2 ~",
  AQ: "g1 ~ g1 ~ b1 ~ b1 ~ d2@2 a1@2 b1 ~ c#2 ~", AR: "d2 ~ d2 ~ f#2 ~ f#2@2 a2 ~ a2@2 b2@2 a2@2",
  AS: "d2 ~ d2@2 f#2 ~ f#2@2 a2 ~ a2 ~ b2@2 a2@2", AT: "d2 b1 a1 d2 ~@4",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  A B ~ C@2 D E C@2 F G H I J K@3 L M K@2 N O H P Q R S T Q U V W X K@3 Y L Z K AA AB AC ~ Q U S T Q U AD AE AF ~ AG AH
  AI AJ AK K AL AM ~@2 F AN H I AO AP K AP K AQ K AR
>`.pickRestart({
  A: "[a4,a5] ~ [a4,a5] ~ [a4,a5] ~ [a4,a5] ~ [a4,a5] ~ [a4,a5]@2 [b4,b5]@2 [c#5,c#6]@2", B: "[d5,d6]@3 ~@13",
  C: "~@4 [a4,d5,f#5] ~ [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@3", D: "~@4 [b4,d5,g5] ~ [b4,d5,g5] ~@5 [b4,d5,g5] ~@3",
  E: "~@4 [b4,d5,g5] ~ [b4,d5,g5] ~@5 [d5,g5]@2 ~@2", F: "~@4 [c#5,e5,a5] ~ [c#5,e5,a5] ~@5 [c#5,e5,a5] ~@3",
  G: "~@4 [b4,f5,g5] ~ [b4,f5,g5] ~@5 [b4,d5,g5] ~@3", H: "[a4,d5,f#5] ~@7", I: "~@5 a4 b4 c#5",
  J: "d5 ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@3", K: "~@4 [a4,d5,f#5] ~@7 [a4,d5,f#5] ~ [a4,d5,f#5] ~",
  L: "~@4 [b4,d5,g5] ~@7 [b4,d5,g5] ~ [b4,d5,g5] ~", M: "~@4 [b4,d5] ~@7 [b4,d5,g5] ~ [b4,d5] ~, ~@2 g5 ~@4 g5",
  N: "~@4 [c#5,e5] ~@7 [c#5,e5,a5] ~ [c#5,e5,a5] ~, ~@2 a5 ~@5", // C#m A
  O: "~@4 [b4,f5] ~@7 [b4,d5,g5] ~ [b4,d5,g5] ~, ~@2 g5 ~@5", P: "~@10 d5@2 e5@2 f#5 ~",
  Q: "~@2 [b5,d6]!3 ~ [b5,d6] ~ [b5,e6] ~ [b5,e6] ~ [b5,d6] ~@3", // Bm E5 Bm
  R: "~@2 e6@2 ~@2 d6@2 [b5,e6] ~ [b5,e6] ~ [b5,d6] ~@3, ~@2 b5 ~@3 b5 ~@9", // E5 Bm
  S: "~@2 [f#5,a5]!3 ~ [f#5,a5] ~ [f#5,b5] ~ [f#5,b5] ~ [f#5,a5] ~@3", // F#m B5 F#m
  T: "~@2 [f#5,b5] ~@3 [f#5,a5] ~ [f#5,b5] ~ [f#5,b5] ~ [f#5,a5] ~@3", // B5 F#m B5 F#m
  U: "~@2 [b5,e6] ~@3 [b5,d6] ~ [b5,e6] ~ [b5,e6] ~ [b5,d6] ~@3", V: "[g#5,e6]@2 ~@6 [g#5,e6]@3 ~@5",
  W: "[c#5,a5]@4 [b4,g5]@4 [a4,f#5]@4 [g4,e5]@3 ~", X: "[f#4,d5]@2 ~@2 [d5,f#5] ~ [d5,f#5] ~@5 [a4,d5,f#5] ~@3",
  Y: "~@4 [b4,d5] ~@7 [b4,f5,g5] ~ [b4,f5,g5] ~, ~@2 g5 ~@5", // Bm G7
  Z: "~@4 [a4,f#5]@2 ~@6 [a4,d5,f#5] ~ [a4,d5,f#5] ~, ~@4 d5 ~@11", // D
  AA: "~@4 [c#5,a5]@2 ~@6 [c#5,e5,a5] ~ [c#5,e5,a5] ~, ~@4 e5 ~@11", AB: "~@4 [b4,f5,g5] ~@7 [b4,f5,g5] ~ [b4,f5,g5] ~",
  AC: "[d5,f#5] ~@7", AD: "e6 ~@3 [g#5,e6] ~@3", AE: "[c#5,a5] [b4,g5] [a4,f#5] [g4,e5]", AF: "[f#4,d5]@3 ~@13",
  AG: "~@4 [a4,d5,f#5] ~ [a4,d5,f#5] ~@5 [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  AH: "~@4 [d5,f#5,a5] ~@7 [d5,f#5,a5] ~ [d5,f#5,a5] ~", AI: "~@4 [b4,d5,f5,g5] ~@7 [b4,d5,f5,g5] ~ [b4,d5,f5,g5] ~",
  AJ: "~@4 [b4,f5,g5] ~@7 [b4,d5,g5] ~ [b4,d5,g5] ~", AK: "~@4 [d5,f#5,a5] ~@7 [a4,d5,f#5] ~ [a4,d5,f#5] ~",
  AL: "~@4 [c#5,e5,a5] ~@7 [c#5,e5,a5] ~ [c#5,e5,a5] ~", AM: "~@4 [b4,d5,g5,a5] ~@7 [b4,d5,g5] ~ [b4,f5,g5] ~",
  AN: "~@4 [b4,f5,g5] ~ [b4,f5,g5] ~@5 [b4,f5,g5] ~@3", AO: "d5 ~@3 [a4,d5,f#5] ~@7 [a4,d5,f#5] ~ [a4,d5,f#5] ~",
  AP: "~@4 [a4,d5,f#5] ~@7 [d5,f#5,a5] ~ [d5,f#5,a5] ~", // D
  AQ: "~@4 [a4,d5,f#5] ~@5 [d5,f#5,a5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] ~", AR: "~@6 [a4,d5,f#5]@3 ~@7",
})).s("gm_percussive_organ").gain(0.35)

// other · tenor sax
const tenor_sax = note(`<
  A B C D E F C D G H I B I J C D K F C D G H I J L M ~@6 N B I J E F C D G H N B O P Q R@2 S T U V J W J X Y Z AA AB AC
  AD J G AC AE B AE B AE B W B AE B AF
>`.pickRestart({
  A: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ b2 ~ c#3 ~", B: "d3 ~@7", C: "~@10 a3 ~ b3 ~ c#4 ~", D: "d4 ~@15",
  E: "~@10 d3@2 e3 ~ f#3 ~", F: "g3 ~@15", G: "~@10 e3 ~ f#3 ~ g3 ~", H: "a3 ~@15", I: "~@10 a2 ~ b2 ~ c#3 ~",
  J: "d3 ~@15", K: "~@10 d3 ~ e3 ~ f#3 ~", L: "~@10 d2@2 e2 ~ f#2 ~", M: "g2 ~@15", N: "~@10 a2@2 b2 ~ c#3 ~",
  O: "~@10 b3 ~ b3 a3 d4@2", P: "g4@2 e4 g4 ~@4", Q: "~@2 e4@2 g4 ~ a#4@4 a4@2 g4 e4 d4@2",
  R: "[~@2 d4@2 b3@2 a3@2 f4@2 f#4@2 a4@2 f#4@4 e4@2 d4@2 b3@2 d4 ~ d4@2 ~@4]/2",
  S: "~ a3 b3 ~ d4 ~ e4 ~ f4@2 e4@2 d4@2 b3 ~", T: "~ a3 b3 ~ d4@2 e4@2 f4@2 e4@2 d4@2 b3@2", U: "e4 ~@3 e4 ~@3",
  V: "a4@2 ~@3 a2 b2 c#3, ~@10 b2 ~@5", W: "~@10 a2 ~ b2@2 c#3 ~", X: "~@10 d3@2 e3@2 f#3 ~", Y: "g3 ~@7",
  Z: "~@5 a3 b3 c#4", AA: "d4 ~@7", AB: "~@5 e3 f#3 g3", AC: "a3 ~@7", AD: "~@10 a2@2 b2 ~ c#3@2, ~@10 a#2 ~@5",
  AE: "~@5 a2 b2 c#3", AF: "~@2 a2 ~ b2 ~ d3 ~@9",
})).s("gm_tenor_sax").gain(0.5).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B C D@2 E F G H I J K L M N D O P Q R S T P K U V W X Y V W Z AA AB AC G AD P Q G H AE AF K ~ V W X AG V W AH AI AJ
  AK AL AM AN Q G H AO AP K AQ I AF K AR G AS AT AU AT AV AT AW
>`.pickRestart({
  A: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ b3 ~ c#4 ~", B: "[d3,a3,d4] ~@7", C: "~@5 a3 b3 c#4",
  D: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  E: "[g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~", // G5
  F: "[g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ a3 ~ b3 ~ c#4 ~", // G5
  G: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~", // D5
  H: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ e3 ~ f#3 ~ g3 ~", // D5
  I: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A5
  J: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3]@2", K: "[d3,a3] ~@7",
  L: "~@10 a3 ~ b3@2 c#4@2", M: "[d3,a3] ~ [d3,a3] ~ [d3,b3] ~ [d3,b3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~",
  N: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,b3] ~ [d3,b3] ~", // D5 G
  O: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ d3 ~ e3 ~ f#3 ~", // D5
  P: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~", // G5
  Q: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ a3 ~ b3 ~ c#4 ~", // G5
  R: "[d3,d4] ~ [d3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~", // D D5
  S: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ d3 ~ d3 ~ d3 ~", // D5
  T: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", U: "~@10 d3@2 e3@2 f#3 ~",
  V: "~@2 [b4,d5]!3 ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [b4,d5] ~@3", // Bm E5 Bm
  W: "~@2 [b4,e5] ~@3 [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [b4,d5] ~@3", // E5 Bm E5 Bm
  X: "~@2 [f#4,a4]!3 ~ [f#4,a4] ~ [f#4,b4] ~ [f#4,b4] ~ [f#4,a4] ~@3", // F#m B5 F#m
  Y: "~@2 [f#4,b4]@2 ~@2 [f#4,a4] ~ [f#4,b4] ~ [f#4,b4] ~ [f#4,a4]@2 ~@2", Z: "[g#4,e5]@4 ~@4 [g#4,e5]@3 ~@5",
  AA: "c#4@2 a4@2 b3@2 g4@2 a3@2 f#4@2 g3@2 e4 ~",
  AB: "[f#3,d4]@2 ~@2 d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D D5
  AC: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ a3 ~ b3 ~ c#4 ~", // D5
  AD: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ d3 ~ d3@2 e3 ~ f#3 ~", // D5
  AE: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  AF: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  AG: "~@2 [f#4,b4] ~@3 [f#4,a4] ~ [f#4,b4] ~ [f#4,b4] ~ [f#4,a4] ~@3", AH: "[g#4,e5] ~@7 [g#4,e5] ~@7",
  AI: "c#4 ~ a4@2 b3@2 g4@2 a3@2 f#4 ~ g3@2 e4 ~", AJ: "[d3,a3]@3 ~@13", AK: "~@10 a3 ~ b3 ~ c#4 ~",
  AL: "[d3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3,d4] ~", // D D5
  AM: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ a3 ~ b3 ~ a3 ~", // D5
  AN: "g3 ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~", // G5
  AO: "[a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  AP: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~@3", // G5
  AQ: "~@10 e3 ~ f#3 ~ g3 ~", AR: "~@10 [a2,a3]@2 [b2,b3] ~ [c#3,c#4] ~",
  AS: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,b3,d4] ~ [d3,b3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~", // D5 G D5
  AT: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,b3,d4] ~ [d3,b3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,b3,d4] ~ [d3,b3,d4] ~", // D5 G D5 G
  AU: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ a3 ~ b3 ~ c#4 ~", // D5
  AV: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,b3,d4] ~ [d3,b3,d4] ~", // D5 G
  AW: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4]@6 ~@4", // D5
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.7)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B ~ C@2 D@2 E F G H I ~ J K@2 L M N O L P Q R S T U V W T U X Y C Z E C AA@2 AB AC AD AE@3 T U V AF T U AG AH AI AJ
  J L AK AL AM L P M AN AO AP AQ AR AS AT AU AV L AT AW AT AX
>`.pickRestart({
  A: "[a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [b3,b4] ~ [c#4,c#5] ~", B: "[d4,f#4,d5]@3 ~@13",
  C: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  D: "[g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~", // G7
  E: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~", // D Bm D Bm
  F: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D Bm D
  G: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // A F#m A
  H: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,e5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G Em G
  I: "[d5,f#5] ~@7, [f#4,a4] ~@15", // D F#m
  J: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // D5
  K: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,b5,c6,d6] ~ [d5,b5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // D5 G D5
  L: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // D5 G D5
  M: "[d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~", // G7
  N: "[d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,g5,b5] ~ [d5,g5,b5] ~ [d5,g5,b5] ~ [d5,g5,b5] ~", // G7 G
  O: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,b5,d6] ~ [d5,b5,d6] ~", // D5 Bm7 G
  P: "[e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~", // A
  Q: "[d5,f5,g5,a#5,b5] ~ [d5,f5,g5,b5,c6] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~", // G7
  R: "[d5,a5,d6] ~@7, e6 ~@15", S: "~@10 [d4,d5]@2 [e4,e5] ~ [f#4,f#5] ~",
  T: "~@2 [b4,d5]!3 ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [b4,d5] ~@3", // Bm E5 Bm
  U: "~@2 [b4,e5] ~@3 [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [b4,d5] ~@3", // E5 Bm E5 Bm
  V: "~@2 [f#4,a4]!3 ~ [f#4,a4] ~ [f#4,b4] ~ [f#4,b4] ~ [f#4,a4] ~@3", // F#m B5 F#m
  W: "~@2 [f#4,b4] ~@3 a4@2 [f#4,b4] ~ [f#4,b4] ~ [f#4,a4] ~@3, ~@6 f#4 ~@9", X: "[g#4,e5] ~ [g#4,e5] ~",
  Y: "[c#4,a4]@4 [b3,g4]@4 [a3,f#4]@3 ~ [g3,e4]@3 ~", // F#m Em D C
  Z: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~", // D Bm
  AA: "[g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~", // G7
  AB: "[f#4,a4,d5,f#5] ~ [f#4,a4,d5,f#5] ~ [f#4,b4,d5,f#5] ~ [f#4,b4,d5,f#5] ~ [f#4,a4,b4,d5,f#5] ~ [f#4,a4,d5,f#5] ~ [f#4,b4,d5,f#5] ~ [f#4,b4,d5,f#5] ~", // D Bm Bm7 D Bm
  AC: "[f#4,a4,d5,f#5] ~ [f#4,a4,d5,f#5] ~ [f#4,b4,d5,f#5] ~ [f#4,b4,d5,f#5] ~ [f#4,a4,d5,f#5] ~ [f#4,a4,d5,f#5] ~ [f#4,a4,d5,f#5] ~ [f#4,a4,d5,f#5] ~", // D Bm D
  AD: "[e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~", // A
  AE: "[[g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [f#4,a4,d5,f#5] ~@25 [d4,d5]@2 e5@2 f#4@2, e5@44 e4 ~ f#5 ~]/3", // G7 D
  AF: "~@2 [f#4,b4] ~@3 [f#4,a4] ~ [f#4,b4] ~ [f#4,b4] ~ [f#4,a4] ~@3", AG: "[g#4,e5] ~@7 [g#4,e5]@2 ~@6",
  AH: "[c#4,a4]@3 ~ [b3,g4]@3 ~ [a3,f#4]@3 ~ [g3,e4]@2 ~@2", AI: "[f#5,a5,d6] ~@15", AJ: "~@10 a5 ~ b5 ~ c#6 ~",
  AK: "[d5,g5,b5] ~ [d5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~", // G G7
  AL: "[d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,a5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~ [d5,f5,g5,b5] ~", // G7
  AM: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~", // D5 G
  AN: "[a5,d6] ~@7, d5 ~@15", AO: "~@10 [e5,e6] ~ [f#5,f#6] ~ [g5,g6] ~",
  AP: "[a5,e6,a6] ~ [a5,e6,a6] ~ [a5,e6,a6] ~ [a5,e6,a6] ~ [a5,e6,a6] ~ [a5,e6,a6] ~ [a5,e6,a6] ~ [a5,e6,a6] ~", // A5
  AQ: "[g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~ [g5,d6,f6,g6] ~", // G7
  AR: "[d5,f#5,a5,d6] ~@15", AS: "~@10 [a4,a5] ~ [b4,b5] ~ [c#5,c#6] ~",
  AT: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // D5 G D5
  AU: "[d5,b5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,b5,c6,d6] ~ [d5,b5,d6] ~", // G D5 G
  AV: "[d5,b5,c6,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~ [d5,b5,d6] ~ [d5,a5,d6] ~", // G D5 G D5
  AW: "[d5,b5,d6] ~ [d5,b5,d6] ~ [d5,a5,d6] ~ [d5,b5,d6] ~ d5 ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // G D5 G D5
  AX: "[d5,a5,d6] ~ [b4,b5] ~ [a4,a5] ~ [d5,a5,d6]@7 ~@3", // D5 B A D5
})).s("gm_piano").gain(0.45)

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

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

// drums · clap
const clap = s("cp").struct("<~@13 A@10 ~@10 A@10 ~@12 A@8 ~@2 A@2 ~@2 A@7 B>".pickRestart({
  A: "~@2 x ~@3 x!2", B: "~ x ~@2",
// … 18 more lines

More by Francis Connie