Strudelify

Cha-Cha Medley

Greger

KeyF majorTempo124 bpm
0:00/0:00
// Cha-Cha Medley — Greger
// 124 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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.

// other · piano
const piano = note("<~@93 A B C D E F@3 G ~@19>".pickRestart({
  A: "~ f4 e4 f4 e4 f4 e4 f4", B: "d4 f4 e4 f4 e4 f4 g4 f4", C: "eb4 f4 d4 f4 c4 f4 bb3 f4",
  D: "a3 f4 e4 f4 e4 f4 g4 f4", E: "a4 ~ a4 bb4 a4@2 g4@2 f4@2 g4 ~ eb4@2 f4@2",
  F: "[d4@2 eb4 d4 db4@2 d4@2 eb4@2 d4@2 db4@2 d4@4 eb4 d4 db4@2 d4@2 eb4@2 d4@2 db4@2 d4@4 eb5 d5 db5@2 d5@2 eb5@2 d5@2 db5@2 d5@2]/3",
  G: "bb4 ~@15",
})).s("gm_piano").gain(0.37).pan(0.8)

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

// other · alto sax
const alto_sax = note(`<
  A B ~@17 C D E F G D E H I ~@10 J@2 K@2 L@2 M@2 N@2 O P Q R S T J@2 K@2 U@2 V@2 W X Y Z J L AA AB AC AD AE AF AC AG AH
  AI AJ AD AE AF AC AK AL AM AN@2 AO@2 AP@2 AQ ~@8 AR AS AT AE AU AS AV AW AX ~@7 AY AX AZ BA
>`.pickRestart({
  A: "db5 g4 bb4 db5 f5 eb5 f4 g4, db4", B: "c4, ab4@11 ~@5", C: "~@12 eb4 ~@3", D: "db4 ~@3 db4@6 ~@2 db4 ~@3",
  E: "c4 ~@3 c4@6 ~@2 c4 ~@3", F: "db4 ~@3 db4@5 ~ db4 ~@3 db4 ~", G: "c4 ~@3 c4@5 ~@3 eb4 ~@3",
  H: "db4 ~@3 db4@5 ~@3 db4 ~@3", I: "ab3@9 ~@7", J: "b4@3 d4 g4 b4 a4 g4", K: "[a4@7 ~]/2", L: "a4@3 d4 gb4 a4 g4 gb4",
  M: "[g4@29 ~@3]/2", N: "[b3@24 e4@2 gb4 e4 d4 ~@3]/2", O: "g4", P: "gb4@3 gb4!5", Q: "g4@10 g4!3 ~ g4 ~",
  R: "gb4@11 ~ bb4 ~ bb4 ~", S: "b4 ~@7 g4 d4 db4 c4 b3 bb3 a3 ab3", T: "g3 ~@15", U: "c5@3 eb4 gb4 c5 b4 a4",
  V: "[b4@29 ~@3]/2", W: "b3@2 e4 ab4", X: "f4@2 ab4!2", Y: "g4@8 g4@2 gb4 ~@3 e4 d4", Z: "db4@2 ~ bb4",
  AA: "g4@11 ~@5", AB: "~@2 f3 ~ bb3@2 a3 ~ bb3 ~ c4 ~ d4 ~ eb4 ~", AC: "f4, e4 ~@15",
  AD: "~@3 [f4,g4] f4 ~ eb4 ~ f4 ~ f4 ~ f4 ~ f4 ~", AE: "f4 ~ f3@2 bb3@2 a3@2 bb3@2 c4@2 d4@2 eb4@2", AF: "f4 ~@15",
  AG: "~@3 e4 f4 ~ eb4 ~ d4@2 eb4 ~ c4@2 ~@2", AH: "bb3 ~@2 [f4,g4] f4 ~ f4 ~ g4 ~ g4 ~ g4@2 f4 ~",
  AI: "bb4 ~ f3 ~ bb3@2 a3 ~ bb3 ~ c4 ~ d4 ~ eb4 e4", AJ: "f4", AK: "~@3 e4 f4 ~ eb4 ~ d4@2 eb4 ~ c4@2 d4 ~",
  AL: "bb3@12 f4@3 [c4,db4,d4,eb4,e4]", AM: "bb3 ~ f4@2 g4@2 a4@2, b3 ~@15", AN: "[bb4@10 a4 bb4 c5@2 bb4@2]/2",
  AO: "[a4@9 ~ g4 a4 bb4@2 a4@2]/2", AP: "[g4@19 ~ f4@2 g4@2 a4@4 f4@4]/2", AQ: "d4@9 ~@7",
  AR: "~@2 bb3 ~ d4@2 c4 ~ d4 ~ eb4 ~ f4 ~ g4 ~", AS: "a4 ~@3 a4 ~ g4 ~ a4 ~@3 a4 ~ g4 ~",
  AT: "a4 ~@3 a4 ~ g4 ~ a4@2 bb4 ~ g4@2 a4 ~", AU: "f4 ~ bb3 ~ d4@2 c4 ~ d4 ~ eb4 ~ f4 ~ g4 ~",
  AV: "a4 ~@3 a4 ~ g4 ~ f4@2 g4 ~ eb4@2 f4 ~", AW: "d4 ~ f4@2 e4@2 f4@2 e4@2 f4@2 e4@2 f4@2",
  AX: "e4 f4 e4 f4 e4 f4 e4 f4", AY: "~ f4 e4 f4 e4 f4 e4 f4", AZ: "~@8 a3 bb3 c4 d4 eb4 f4 g4 a4", BA: "bb4@3 ~@13",
})).s("gm_alto_sax").gain(0.37).pan(0.2)

// other · tenor sax
const tenor_sax = note(`<
  A B ~@2 C D E F C D G H C D E F C D G I ~@8 J K L M N K G H G H O@2 P@2 Q@2 R@2 S@2 T U V W X Y O@2 P@2 Z@2 AA@2 AB@2
  AC AD O Q AE ~@7 AF AG ~@7 AH AI@2 AJ@2 AK@2 AL AM ~@14 AN AO AP AQ AR AS AP AQ AT AU AO AV AW
>`.pickRestart({
  A: "eb2", B: "ab2", C: "c4@3 ab3 eb4@3 c4", D: "ab4@2 g4@2 f4 eb4 c4 ab3", E: "db4@3 g3 eb4@3 g3",
  F: "g4@2 f4@2 eb4 db4 f3 g3", G: "db4 g3 bb3 db4 f4 eb4 f3 g3", H: "ab3@3 ~", I: "ab3 ~",
  J: "c4@2 ~@4 ab3 ~ eb4 ~@5 c4 ~", K: "ab4 ~@3 g4 ~@3 f4@2 eb4@2 c4@2 ab3@2", L: "db4 ~@5 g3 ~ eb4 ~@5 g3 ~",
  M: "g4 ~@3 f4 ~@3 eb4@2 db4@2 f3@2 g3@2", N: "c4 ~@5 ab3 ~ eb4 ~@5 c4 ~", O: "b3@3 d3 g3 b3 a3 g3",
  P: "[a3@29 ~@3]/2", Q: "a3@3 d3 gb3 a3 g3 gb3", R: "[g3@29 ~@3]/2", S: "[d4@29 ~@3]/2", T: "e4",
  U: "d4@6 d4@2 d4 ~ d4 ~ d4 ~ d4@2", V: "e4@8 ~@2 e4!3 ~ e4 ~", W: "c4@9 ~@3 c4 ~ c4 ~",
  X: "b3 ~@7 g3 d3 db3 c3 b2 bb2 a2 ab2", Y: "g2 ~@15", Z: "c4@3 eb3 gb3 c4 b3 a3", AA: "[b3@29 ~@3]/2", AB: "d4/2",
  AC: "db4", AD: "bb3@2 ~ bb3", AE: "g3@11 ~@5", AF: "~@3 [d4,eb4] d4 ~ d4 ~ eb4 ~ eb4 ~ eb4@2 d4 ~", AG: "d4 ~@15",
  AH: "~ f3 g3 a3", AI: "[bb3@10 a3 bb3 c4@2 bb3@2]/2", AJ: "[a3@9 ~ g3 a3 bb3@2 a3@2]/2",
  AK: "[g3@19 ~ f3@2 g3@2 a3@4 f3@4]/2", AL: "d3@9 ~ gb3 ~ gb3 ~ gb3 ~", AM: "f3 ~@15", AN: "~@4 e3 f3 e3 f3",
  AO: "e3 f3 e3 f3 e3 f3 e3 f3", AP: "~ f3 bb3 a3 bb3 c4 d4 eb4", AQ: "f4@2 f4 eb4 f4@2 f4 eb4",
  AR: "f4@2 f4 eb4 f4 g4 eb4 f4", AS: "d4", AT: "f4@2 f4 eb4 d4 eb4 c4 d4", AU: "bb3 ~@3 e3 f3 e3 f3",
  AV: "~@4 bb3 ~@3 f3@7 ~", AW: "bb3 ~@3 bb3!4 bb3@2 ~@6",
})).s("gm_tenor_sax").gain(0.32).pan(0.2)

// other · trombone
const trombone = note(`<
  A B ~@17 C D E F G D E H I J K L M N K O P O P ~@8 Q@2 R@2 S T U ~@9 V@2 O W ~@3 X Y Z AA X Y AB AC X Y Z AA X Y AB AC
  ~@16 X Y Z AA X Y AB AC AD AE AF AG AH AE AF AI AJ ~ AK AL
>`.pickRestart({
  A: "db4 g3 bb3 db4 f4 eb4 f3 g3", B: "ab3@11 ~@5", C: "~@12 eb4 ~@3", D: "db4 ~@3 db4@6 ~@2 db4 ~@3",
  E: "c4 ~@3 c4@6 ~@2 c4 ~@3", F: "db4 ~@3 db4@5 ~ db4 ~@3 db4 ~", G: "c4 ~@3 c4@5 ~@3 eb4 ~@3",
  H: "db4 ~@3 db4@5 ~@3 db4 ~@3", I: "c4 ~", J: "c4@2 ~@4 ab3 ~ eb4 ~@5 c4 ~",
  K: "ab4 ~@3 g4 ~@3 f4@2 eb4@2 c4@2 ab3@2", L: "db4 ~@5 g3 ~ eb4 ~@5 g3 ~", M: "g4 ~@3 f4 ~@3 eb4@2 db4@2 f3@2 g3@2",
  N: "c4 ~@5 ab3 ~ eb4 ~@5 c4 ~", O: "db4", P: "c4@3 ~", Q: "[b3@29 ~@3]/2", R: "[c4@11 c4!5]/2",
  S: "c4@8 ~@2 c4!3 ~ c4 ~", T: "bb3@10 ~@2 bb3 ~ bb3 ~", U: "b3 ~@15", V: "d4/2", W: "bb3 ~",
  X: "~@2 f3 ~ d4@2 c4 ~ d4 ~ eb4 ~ f4 ~ g4 ~", Y: "a4 ~@3 a4 ~ g4 ~ a4 ~@3 a4 ~ g4 ~",
  Z: "a4 ~@3 a4 ~ g4 ~ a4@2 bb4 ~ g4 ~ a4 ~", AA: "f4 ~@15", AB: "a4 ~@3 a4 ~ g4 ~ f4@2 g4 ~ eb4 ~ f4 ~", AC: "d4 ~@15",
  AD: "f2@15 ~", AE: "~ f3 bb3 a3 bb3 c4 d4 eb4", AF: "f4@2 f4 eb4 f4@2 f4 eb4", AG: "f4@2 f4 eb4 f4 g4 eb4 f4",
  AH: "d4", AI: "f4@2 f4 eb4 d4 eb4 c4 d4", AJ: "bb3 ~@7", AK: "~@4 bb2 ~@3 f2@7 ~", AL: "bb2 ~@3 bb2!4 bb2@2 ~@6",
})).s("gm_trombone").gain(0.41).pan(0.9)

// other · baritone sax
const baritone_sax = note(`<
  A B ~@2 C D E F C D G H C D E F C D G I J K L M J K N O P Q R S T Q G H A H ~@8 U@2 V W X Y Z ~@10 AA V AB ~@3 AC AD
  AE AF AG AD AH AI AJ AD AE AF AG AD AK AL AM ~@6 AN AO AP ~@6 AQ AR AS AT AU AR AS AV AW AX AY AZ BA AX AY BB AP AW BC
  BD
>`.pickRestart({
  A: "eb2", B: "ab2", C: "c3@3 ab2 eb3@3 c3", D: "ab3@2 g3@2 f3 eb3 c3 ab2", E: "db3@3 g2 eb3@3 g2",
  F: "g3@2 f3@2 eb3 db3 f2 g2", G: "db3 g2 bb2 db3 f3 eb3 f2 g2", H: "ab2@3 ~", I: "ab2@8 ~@4 ab2 ~@3",
  J: "eb2 ~@3 eb2@6 ~@2 eb2 ~@3", K: "ab2 ~@3 ab2@6 ~@2 ab2 ~@3", L: "eb2 ~@3 eb2@5 ~ eb2 ~@3 eb2 ~",
  M: "ab2 ~@3 ab2@5 ~@3 ab2 ~@3", N: "eb2 ~@3 eb2@5 ~@3 eb2 ~@3", O: "ab2 ~", P: "c3@2 ~@4 ab2 ~ eb3 ~@5 c3 ~",
  Q: "ab3 ~@3 g3 ~@3 f3@2 eb3@2 c3@2 ab2@2", R: "db3 ~@5 g2 ~ eb3 ~@5 g2 ~", S: "g3 ~@3 f3 ~@3 eb3@2 db3@2 f2@2 g2@2",
  T: "c3 ~@5 ab2 ~ eb3 ~@5 c3 ~", U: "[g2@12 e2@2 d2 ~]/2", V: "a2", W: "d3@3 d3!5", X: "a2@9 ~ a2!3 ~ a2 ~",
  Y: "d2@10 ~@2 d2 ~ d2 ~", Z: "g2 ~@15", AA: "e2", AB: "db3 ~", AC: "~@2 f2 ~ bb2@2 a2 ~ bb2 ~ c3 ~ d3 ~ eb3 ~",
  AD: "f3", AE: "~@3 [f3,g3] f3 ~ eb3 ~ f3 ~ f3 ~ f3 ~ f3 ~", AF: "f3 ~ f2@2 bb2@2 a2@2 bb2@2 c3@2 d3@2 eb3@2",
  AG: "f3 ~@14 e3", AH: "~@3 e3 f3 ~ eb3 ~ d3@2 eb3 ~ c3@2 ~@2",
  AI: "bb2 ~@7 c3@3 [ab2,a2,bb2,b2] [gb2,g2] ~@3, ~@6 f2 ~", AJ: "bb2 ~ f2 ~ bb2@2 a2 ~ bb2 ~ c3 ~ d3 ~ eb3 ~",
  AK: "~@3 e3 f3 ~ eb3 ~ d3@2 eb3 ~ c3@2 d3 ~", AL: "bb2@12 f3@3 [db3,d3,eb3,e3]", AM: "[b2,c3] ~@15, bb2 ~@7",
  AN: "~@10 gb2 ~ gb2 ~ gb2 ~", AO: "f2 ~@7 f2@8", AP: "bb2 ~@7", AQ: "~@2 f2 ~ bb2@2 a2 ~ bb2 ~ a2 ~ bb2 ~ g2 ~",
  AR: "f2 ~@3 f2 ~ c2 ~ f2 ~@3 f2 ~ c2 ~", AS: "f2 ~@3 f2 ~ c2 ~ f2@2 gb2 ~ g2 ~ a2 ~",
  AT: "bb2 ~ f2@2 bb2@2 a2@2 bb2@2 c3@2 d3@2 eb3@2", AU: "f3 ~ f2 ~ bb2@2 a2 ~ bb2 ~ a2 ~ bb2 ~ g2 ~", AV: "bb2 ~@15",
  AW: "f2@15 ~", AX: "~ f2 bb2 a2 bb2 c3 d3 eb3", AY: "f3@2 f3 eb3 f3@2 f3 eb3", AZ: "f3@2 f3 eb3 f3 g3 eb3 f3",
  BA: "d3", BB: "f3@2 f3 eb3 d3 eb3 c3 d3", BC: "~@4 bb2 ~@3 f2@7 ~", BD: "bb2 ~@3 bb2!4 bb2@2 ~@6",
})).s("gm_baritone_sax").gain(0.32).pan(0.1)

// other · marimba
const marimba = note("<[db5 g4 bb4 db5 f5 eb5 f4 g4] [ab4@3 ~@13] ~@119>").s("gm_marimba").gain(0.23).pan(0.3)

// chords · percussive organ
const percussive_organ = note(`<
  ~ A B C D@2 E@2 D@2 E D@3 E@2 D@2 E D E D E D E D E D@3 E@2 D@2 E D E F G H I J K@2 G H G H I J I K L H G H I J M@2 N
  O@3 P Q H K H L R@2 S@2 R@2 T U R@2 S@2 R@2 S T S@2 R@2 V R W ~@9 R@2 S@2 R@2 ~@3 R@2 S@2 R@2 ~@4
>`.pickRestart({
  A: "~@8 f5@4 eb5@3 ~", B: "ab4@3 ~ [c5,eb5,ab5] ~ [c5,eb5,ab5] ~@3 c5 ~ [c5,eb5,ab5] ~ [c5,eb5,ab5] ~",
  C: "~@4 [c5,eb5,ab5] ~ [c5,eb5,ab5] ~@3 c5 ~ [c5,eb5,ab5] ~ [c5,eb5,ab5] ~", // Ab
  D: "~@4 [c5,eb5,f5,ab5] ~ [c5,eb5,f5,ab5] ~@3 c5 ~ [c5,eb5,f5,ab5] ~ [c5,eb5,f5,ab5] ~", // Fm7
  E: "~@4 [bb4,db5,eb5,g5] ~ [bb4,db5,eb5,g5] ~@5 [bb4,db5,eb5,g5] ~ [bb4,db5,eb5,g5] ~", F: "ab5@13 ~@3, eb5@11 ~@5",
  G: "~@4 [d5,g5,b5] ~ [d5,g5,b5] ~@5 [d5,g5,b5] ~ [d5,g5,b5] ~", // G
  H: "~@4 [d5,g5,b5] ~ [d5,g5,b5] ~@3 d5 ~ [d5,g5,b5] ~ [d5,g5,b5] ~", // G
  I: "~@4 [c5,e5,a5] ~ [c5,e5,a5] ~@5 [c5,e5,a5] ~ [c5,e5,a5] ~", // Am
  J: "~@4 [d5,gb5,a5,b5] ~ [d5,gb5,a5,b5] ~ [d5,gb5,a5,b5] ~ [d5,gb5,a5,b5] ~ [d5,gb5,a5,b5] ~@3", // Bm7
  K: "~@4 [d5,gb5,a5] ~ [d5,gb5,a5] ~@5 [d5,gb5,a5] ~ [d5,gb5,a5] ~", L: "[d5,g5,b5] ~@15",
  M: "~@4 [eb5,gb5,a5] ~ [eb5,gb5,a5] ~@5 [eb5,gb5,a5] ~ [eb5,gb5,a5] ~", // Ebdim
  N: "~@4 [d5,f5,b5] ~ [d5,f5,b5] ~@5 [d5,f5,b5] ~ [d5,f5,b5] ~", // Bdim
  O: "~@4 [e5,ab5,b5] ~ [e5,ab5,b5] ~@3 e5 ~ [e5,ab5,b5] ~ [e5,ab5,b5] ~", // E
  P: "~@4 [e5,a5,db6] ~ [e5,a5,db6] ~@3 e5 ~ [e5,a5,db6] ~ [e5,a5,db6] ~", // A
  Q: "~@4 [g5,bb5,db6] ~ [g5,bb5,db6] ~@3 g5 ~ [d5,gb5,bb5] ~ [d5,gb5,bb5] ~", // Gdim Daug
  R: "~@4 [c5,f5,a5] ~ [c5,f5,a5] ~@5 [c5,f5,a5] ~ [c5,f5,a5] ~", // F
  S: "~@4 [d5,f5,bb5] ~ [d5,f5,bb5] ~@5 [d5,f5,bb5] ~ [d5,f5,bb5] ~", // Bb
  T: "~@4 [d5,f5,bb5] ~ [d5,f5,bb5] ~@5 [c5,f5,a5] ~ [c5,f5,a5] ~", // Bb F
  U: "[d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3", // Bb
  V: "~@4 [c5,eb5,g5] ~ [c5,eb5,g5] ~@5 [c5,eb5,g5] ~ [c5,eb5,g5] ~", W: "[d5,f5,bb5] ~@7",
})).s("gm_percussive_organ").gain(0.18).pan(0.8)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A@4 B@2 A@2 B A@3 B@2 A@2 B A B A B A B A B A@3 B@2 A@2 B A B A C@2 D E@3 C@4 D E D E F C@3 D E G@2 H I@3 J K C L
  C M N@2 O@2 N@2 P O N@2 O@2 N@2 Q R O@2 N@2 S N T U V W X Y Z@3 AA N@2 O@2 N@2 T ~@2 N@2 O@2 N@2 T ~@3
>`.pickRestart({
  A: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~@3", // Ab
  B: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~@3", // Eb
  C: "[g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~@3", // G
  D: "[a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~@3", // Am
  E: "[a3,d4,gb4] ~@3 [a3,d4,gb4] ~@3 [a3,d4,gb4] ~ [a3,d4,gb4] ~ [a3,d4,gb4] ~@3", F: "[b3,d4,g4] ~@15",
  G: "[a3,eb4,gb4] ~@3 [a3,eb4,gb4] ~@3 [a3,eb4,gb4] ~ [a3,eb4,gb4] ~ [a3,eb4,gb4] ~@3", // Ebdim
  H: "[b3,d4,f4] ~@3 [b3,d4,f4] ~@3 [b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4] ~@3", // Bdim
  I: "[ab3,b3,e4] ~@3 [ab3,b3,e4] ~@3 [ab3,b3,e4] ~ [ab3,b3,e4] ~ [ab3,b3,e4] ~@3", // E
  J: "[a3,db4,e4] ~@3 [a3,db4,e4] ~@3 [a3,db4,e4] ~ [a3,db4,e4] ~ [a3,db4,e4] ~@3", // A
  K: "[bb3,db4,e4] ~@3 [bb3,db4,e4] ~@3 [bb3,db4,e4] ~ [bb3,db4,e4] ~ [gb3,bb3,d4] ~@3", // Bbdim Gbaug
  L: "[gb3,a3,d4] ~@3 [gb3,a3,d4] ~@3 [gb3,a3,d4] ~ [gb3,a3,d4] ~ [gb3,a3,d4] ~@3", M: "[g3,b3,d4] ~@15",
  N: "[c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~@3", // F
  O: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~@3", // Bb
  P: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [c4,eb4,g4] ~@3 [c4,f4,a4] ~@3", // Bb Cm F
  Q: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3", // Bb
  R: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [eb4,f4,a4] ~ [eb4,f4,a4] ~ [eb4,f4,a4] ~@3", // Bb F7
  S: "[c4,eb4,g4] ~@3 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~@3", T: "[d4,f4,bb4] ~@15",
  U: "~ f4 e4 f4 e4 f4 e4 f4", V: "d4 f4 e4 f4 e4 f4 g4 f4", W: "eb4 f4 d4 f4 c4 f4 bb3 f4",
  X: "a3 f4 e4 f4 e4 f4 g4 f4", Y: "a4 ~ a4 bb4 a4@2 g4@2 f4@2 g4 ~ eb4@2 f4@2",
  Z: "[d4@2 eb4 d4 db4@2 d4@2 eb4@2 d4@2 db4@2 d4@4 eb4 d4 db4@2 d4@2 eb4@2 d4@2 db4@2 d4@4 eb5 d5 db5@2 d5@2 eb5@2 d5@2 db5@2 d5@2]/3",
  AA: "bb4 ~@15",
})).s("gm_electric_guitar_jazz").gain(0.32).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~@2 A@50 B A@16 B A@22 C B A@7 B A@6 B@2 D A@6 B A E F>".pickRestart({
  A: "x!4", B: "x", C: "x ~ x!3 ~@3", D: "x!2", E: "x ~ x!2", F: "x!3 ~",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<~ A ~@49 B C ~@16 C ~@22 D E ~@14 F G H ~@8 I C>".pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "x", D: "x ~ x ~@2 x!3", E: "x ~@7 x!5 ~ x ~", F: "~@6 x!3 ~ x ~ x ~@3",
  G: "x ~@2 x!2 ~ x ~@9", H: "~@4 x ~@5 x!3 ~ x ~", I: "~@8 x!8",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@50 B C A@15 D A@22 E D A@7 D A@6 D F ~ A@6 D A G ~>".pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "~ x!3", D: "x", E: "x ~ x ~@2 x!3", F: "~@4 x!2 ~@2", G: "x ~ x!2",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@120 [~@4 x!5 ~@7]>").gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@109 [~@6 x!2] ~@11>").gain(0.51)

// … 36 more lines

More by Greger