Strudelify

Various Songs

me

KeyF majorTempo130 bpm
0:00/0:00
// Various Songs — me
// 130 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/6307231; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 148 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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
const piano = note(`<
  A@7 B ~ C@2 D@5 ~ E@6 F@5 G@5 H@7 I@7 J K L@2 M@2 N O P Q R S T U V W X Y@5 Z@5 AA@3 AB@2 AC@3 AD AE@2 AF@7 AG@6 AH@3
  AI@8 AJ ~ AK@5 AL@2 AM@2 AN AO@2 AP AQ@3 AR@4 AS AT AU AV AS AT AW AX ~ AY@3 AZ@2 BA BB@2
>`.pickRestart({
  A: "[~@5 c5@4 ~ c5@4 a4@3 c5@4 c5@4 a4@3 c5@4 c5@4 a4@3 c5@4 ~@4 a4@3 c5@4 c5@4 a4@3 c5@4 c5@4 ~ a4@2 c5@4 c5@4 ~ a4@2 c5@4 ~@5 a4@3 c5@4 c5@4 a4@3 c5@4 c5@4 a4@3 c5@4 c5@4 a4@3 c5@4 ~@4 a4@3 c5@4 c5@4 ~ a4@2 c5@4 c5@4 ~ a4@2 a3 ~ a3!2 ~ a3!2, ~@5 [a2,a3]@32 ~@6 c5@4 ~@41 c5@4 ~@40 c5@4 ~@32, ~@44 [g2,g3]@5 ~ [a2,a3]@32 ~@7 [g2,g3]@5 ~ [a2,a3]@32 ~@7 [g2,g3]@5 ~@29]/7", // A G A G A G
  B: "a3 ~ a3!2 ~ a5@5 a5@5 ~@9",
  C: "[~@12 db5@4 ~ gb4@4 db5@4 ~ gb4@4 ~ d5@4 gb4@4 ~ db5@4 gb4@4, ~@12 [gb2,a2,db3,gb3]@35 ~]/2", // Gbm
  D: "[~ db5@4 ~ gb4@4 db5@4 ~ gb4@4 b4@4 ~ gb4@4 ~ b4@4 gb4@4 ~ a4@4 e4@4 ~ a4@4 e4@4 ~ a4@4 ~ e4@4 a4@4 ~ e4@4 b4@4 ~ e4@4 ~ b4@4 e4@4 ~ db5@4 e4@4 ~ b4@4 ~ e4@4 ~@9, ~ [b2,d3,gb3,b3]@35 ~@2 [a2,db3,e3,a3]@35 ~ [e2,ab2,b2,e3]@35 ~@11]/5", // Bm A E
  E: "[~@12 g4@7 f4@7 ~ bb4@4 ab4@4 g4@4 f4@4 eb4@7 ~ c4@5 d4 c4 b3@7 ~@9 g4@7 ~ f4@7 ~ g4@4 f4@3 g4@4 f4@4 eb4@7 ~ c4@6 d4 c4 b3@7 ~@8 g4@7 ~, ~@4 [g2,c3,eb3]@15 [f2,bb2,d3]@15 ~ [bb2,eb3,g3]@15 ~ [c3,f3,a3]@15 [g2,c3,eb3]@15 ~ [f2,bb2,d3]@15 [bb2,eb3,g3]@15 ~ [c3,f3,a3]@15 ~ [g2,c3,eb3]@15]/6", // Cm Bb Eb F Cm Bb Eb F …
  F: "[f4@7 ~ bb4@4 ab4@4 g4@4 f4@4 eb4@7 c4@6 d4 c4 b3@7 ~@9 g4@7 ~ f4@7 g4@4 f4@4 g4@4 f4@4 eb4@7 ~ [c3,f3,a3,c4]@15 ~@11, [f2,bb2,d3]@15 ~ [bb2,eb3,g3]@15 [c3,f3,a3]@15 ~ [g2,c3,eb3]@15 ~ [f2,bb2,d3]@15 [bb2,eb3,g3]@15 ~@27]/5", // F Bb Eb F Cm Bb Eb
  G: "[~@21 f2@2 f3@2 ~ f3@2 f2@2 [f3,f5,ab5]@2 [f2,eb5,g5]@2 [f3,f5,ab5]@2 [f2,f3]@4 [f2,f3]@4 [f2,f3]@7 ~ ab2@2 ab3@2 ab2@2 ab3@2 ab2@2 [ab3,ab5,c6]@2 ~ [ab3,ab5,c6]@2 [ab2,ab3]@4 [ab2,ab3]@4 [ab2,ab3]@7 ~ g2@2 g3@2 g2@2 g3@2 ab2@2 [ab3,g5,bb5]@2 [ab2,ab5,c6]@2 ab3@2 [g2,g3]@4 [g2,g3]@3 ~@2 [g5,bb5]@2 [ab5,c6]@2 [g5,bb5]@2 f2@2 f3@2 f2@2, ~@21 [f5,ab5]@4 f2@2 ~@37 [ab2,g5,bb5]@2 ~@40 [g2,g3]@7 ~@7, ~@26 [f5,ab5]@4 ~@22 [ab5,c6]@6 [ab5,c6]@4 ~@21 [g5,bb5]@6 [g5,bb5]@4 ~@4 [g5,bb5]@6 [g5,bb5]@5 ~@6 [f5,ab5]@6]/5", // Fm Cm Fm F Ab Eb Ab G …
  H: "[f3@2 f2@2 [f3,f5,ab5]@2 [f2,eb5,g5]@2 [f3,f5,ab5]@2 [f2,f3]@4 [f2,f3]@4 ~@2 c5@2 ~ g5@2 ~@23 [a4,a5]@7 [c5,c6]@2 [c5,c6]@2 [c5,c6]@2 [c5,c6] [c5,c6]@2 [c5,c6]@2 [g2,g3,g4,g5]@3 a4@3 ~@6 a5@2 a5@2 a5@2 a5@3 g5@3 ~ c6@5 d6@2 ~@7 [a4,a5]@7 [g4,g5]@2 [g4,g5] [g4,g5]@2 [g4,g5]@2 [g4,g5]@2 [g4,g5]@2 [d2,d3,d4,d5]@3 e4@3 ~ a4@3 a4@2 a4@2 a4@2 ~ g4@3 ~ d3@3 [a2,f3]@4 a2@3 ~@14, [f5,ab5]@4 ~@14 [f2,f3]@7 ~@16 [a2,a3]@13 ~ [c3,c4]@5 ~ [c3,c4]@5 ~@3 [a2,a3]@7 [a2,a3]@7 ~ [a2,a3]@7 [a2,a3]@7 [a2,a3]@13 ~ [g2,g3]@5 [g2,g3]@5 ~@4 [a2,a3]@7 [a2,a3]@7 [g2,g3]@7 a1@7 ~@14, ~@22 eb5@2 ~@49 a5@5 ~@61 a4@2 ~@27]/7", // Fm Cm Fm F A C G A …
  I: "[~@15 [g3,eb4]@6 ~@2 c4@7 g3@2 g3@6 g3@2 c4@2 c4@2 ~ d4@2 eb4@2 ~@6 eb4@2 ab3@7 eb4@2 ~@6 eb4@2 eb4@2 eb4@2 [ab2,c3,eb3,ab3]@3 g4@2 eb4@6 g4@2 eb4@6 ~ g4@2 eb4@6 g4@2 g4@2 f4@2 g4@2 eb4@2 ~ f4@6 bb4@2 f4@6 bb4@2 ~ f4@6 bb4@2 bb4@2 ab4@2 g4@2 f4@2 ~@18, ~@15 [c3,eb3]@16 ~ [c3,eb3,c4]@8 [c3,eb3,g3]@4 ~ [c3,eb3,g3,c4]@4 [ab2,c3,eb3]@16 ~ [ab2,c3,eb3,ab3]@8 [ab2,c3,eb3,ab3]@4 ~@5 [bb2,eb3,g3,bb3]@16 ~ [bb2,eb3,g3,bb3]@8 [bb2,eb3,g3,bb3]@4 [bb2,eb3,g3,bb3]@4 ~ [f2,bb2,d3,f3]@16 ~ [f2,bb2,d3,f3]@8 [f2,bb2,d3,f3]@4 [f2,bb2,d3,f3]@4 ~@18, ~@15 c4@8 ~@55 f4@2 ~@88, ~@21 g3@8 ~@20 ab3@8 ~@111]/7", // Cm Ab Cm Ab Eb Bb
  J: "~@2 [gb2,gb3,bb4]", // Gb
  K: "~ [gb2,gb3,bb5]@8 ~ [ab2,ab3,ab5]@4 ~ f5@2 db5@2 eb5@2 f5@2 ~, ~@15 [ab2,ab3]@4 [ab2,ab3]@4 ~", // Gb Ab
  L: "[eb5@2 db5@2 [bb2,bb3,bb4]@8 ~ [bb2,bb3,bb5]@8 ~ [bb2,bb3,ab5]@4 [bb2,bb3]@3 f5@2 eb5@2 eb5@2 [bb2,bb3,db5]@4 ~ [gb2,gb3,bb4]@8, [ab2,ab3]@4 ~@22 f5@2 ~@3 [bb2,bb3]@4 ~@13]/2", // Bb Bb7 Bb Bbm Gb Ab Bb
  M: "[~ [gb2,gb3,bb5]@8 ~ [ab2,ab3,ab5]@4 f5@2 db5@2 [ab2,ab3]@3 f5@2 eb5@2 db5@2 f5@2 ~ ab5@4 f5@2 ab5@4 ~ f5@2 ab5@2 [bb2,bb3,bb5]@3, ~@14 [ab2,ab3]@4 eb5@2 ~@3 [ab2,ab3]@4 [bb2,bb3]@8 ~ [bb2,bb3]@8 ~@4]/2", // Gb Ab Bb Ab Bb
  N: "~@2 [bb2,bb3,ab5]@4 [bb2,bb3,f5]@4 ~ db5@2 c5@2 ~@9, ~@11 [bb2,bb3]@4 ~@9", // Bb7 Bb5 Bb
  O: "~@9 [a1,a2]@4 ~@2 g4@3 a4@3 [a1,a2,a3]@3, ~@3 a3@2 ~@3, ~@13 [a1,a2]@7 ~@4", // A
  P: "~@3 g4@3 a4@3 [a1,a2]@4 ~@2 c5@3 a4@3 [a1,a2,a4]@3, e4 ~@2 a3@2 ~@3, ~ [a1,a2]@7 ~@5 [a1,a2]@7 ~@4", // A
  Q: "a4!2 ~ c5@3 d5@3 a3!2 ~ a3!2 ~ c5@3 d5@3 [a1,a2,a4]@3, ~ [a1,a2]@7 ~ [a1,a2]@4 [a1,a2]@7 ~@4", // A
  R: "a4!2 ~ g4@3 e4@3 [a1,a2]@4 ~@2 c5@3 a4@3 a4!2 ~, ~ [a1,a2]@7 ~ a3@6 ~@9, ~@13 [a1,a2]@7 ~ [a1,a2]@3", // A
  S: "a4!2 ~ c5@3 d5@3 ~@15, ~ [a1,a2]@7 ~@16", T: "~@3 gb1 gb2 gb1 gb2 a1, ~@2 [a3,db4,gb4]!2",
  U: "a2 db2 db3 b1 b2 b1 b2 d2, [a3,db4,gb4,a4] [db4,gb4,a4,db5] [b3,d4,b4]!2", // Gbm Bm
  V: "d3@3 ~ db2@3 [db3,db4,gb4,db5]@3 gb1@3 gb2@3 gb1@3 gb2@3 a1@2, [d4,gb4,d5]@6 ~@7 [a3,db4,gb4]@6 [a3,db4,gb4]@5", // Gb5 D Gbm
  W: "~ a2@3 db2@3 db3@3 b1@3 b2@3 b1@3 b2@3 d1@2, ~ [a3,db4,gb4,a4]@6 [db4,gb4,a4,db5]@6 [b3,eb4,b4]@6 [b3,eb4,b4]@5", // Gbm B
  X: "~ d2@3 e1@3 [e2,b3,e4]@3 ~@14, ~ [a3,d4]@6 ~@17", // E5 D5
  Y: "[~@14 f4@3 ~ c5@3 ab4@3 ~ f4@3 ab4@3 ~ f4@3 ~@7 ab4@3 ~ f4@3 ab4@3 ~ bb4@3 ab4@3 g4@3 ~ f2@2 ~@5 f4@3 c5@3 ~ ab4@3 f4@3 ~ c5@3 bb4@3 ~@8 db5@3 c5@3 ~ c5@3 c5@3 ~ bb4@3 c3@5, ~@11 [f2,f3]@26 ~@2 [f2,f3]@20 ~@6 g2@2 ~@53, ~@66 [ab2,ab3]@26 ~@2 [ab2,ab3]@20 ~ bb4@3 ~@2]/5", // F Ab
  Z: "[~@6 db5@3 c5@3 ~ c5@3 c5@3 ~ bb4@3 bb4@3 ~@8 db5@3 c5@3 c5@3 ~ c5@3 bb4@3 ~ [bb2,bb4]@3 c3@3 ~@4 f4@3 ~ c5@3 ab4@3 ~ f4@3 c5@3 ~ bb4@3 ~@4 db5@3 ab4@3 ~ c5@7 bb4@3 g4@3 ~ g4@7 ~@6, ~@2 [bb2,bb3]@26 ~@2 [bb2,bb3]@20 ~@8 [db3,db4]@26 ~@2 [c3,c4]@13 ~ [g2,g3]@13 ~@7]/5", // Bb Db C G
  AA: "[~@21 [e2,e3,g4]@5 ~ [e2,e3,e4]@5 [e2,e3,c5]@5 c5@2 ~ d5@2 [c2,c3,c5]@5 [c2,c3,g4]@5 ~ [c2,c3,b4]@5 c5@2 b4@2 ~ [d2,d3,gb4]@5 [d2,d3,gb4]@4, ~@37 [e2,e3]@5 ~@16 [c2,c3]@5 ~@9]/3", // Em E C C5 Cmaj7 D E C
  AB: "[~ [d2,d3,e4]@5 ~ [d2,d3,e4]@5 [b1,b2,b3]@5 [b1,b2,c4]@5 [b1,b2,a3]@5 [b1,b2,b3]@5 ~ [e2,e3,g4]@5 e4@2 b4@2 ~ [e2,e3,c5]@5, ~@38 [e2,e3]@5 ~@5]/2", // Dsus2 B Cmaj7 B7 B Em C E
  AC: "[c5@2 ~ b4@2 [c2,c3,g4]@5 ~ [c2,c3,g4]@5 [c2,c3,g4]@5 [c2,c3,g4]@5 [d2,d3,b4]@5 c5@2 ~ b4@2 ~ [d2,d3,gb4]@5 e4@2 gb4@2 ~ [e2,e3,g4]@5 [e2,e3,g4]@5 [e2,e3,g4]@5 ~ [e2,e3,g4]@5 ~@4, [e2,e3]@5 ~@26 [d2,d3]@5 ~@6 [d2,d3]@5 ~@25]/3", // C5 G D Em E D
  AD: "~@20 [g4,bb4]@3 ~, ~@17 [g5,bb5]@7", // Gm
  AE: "[~@3 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~ bb4@3 [g4,bb4]@3 ~ bb4@3 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3, [d5,g5]@7 [d5,gb5]@7 [d5,g5]@7 d5@7 db5@7 [gb5,a5]@7 [d5,g5]@6]/2", // Gm G5 D G5 Gbm G5
  AF: "[~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~ bb4@4 [g4,bb4]@3 bb4@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 [g5,bb5]@7 [d5,g5]@7 [d5,gb5]@7 [d5,g5]@7 [bb4,d5]@7 [bb4,db5]@7 [gb5,a5]@7 [d5,g5]@7 [c5,a5]@7 g5@7 [db5,a5]@7 g5@7 [d5,gb5]@7 [d5,gb5]@7 [d5,gb5]@7 ~ [d5,gb5]@5, ~ [g5,bb5]@7 [d5,g5]@7 [d5,gb5]@7 [d5,g5]@7 d5@7 db5@7 [gb5,a5]@7 [d5,g5]@7 g3@53 ~@3 g3@53 ~@2]/7", // Gm G5 D G5 Bb Bbm Gbm G5 …
  AG: "[~@16 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [db3,gb3]@6 [db3,gb3]@6 ~ [db3,gb3]@6 [db3,gb3]@6 [c3,f3]@6 [c3,f3]@6 [c3,f3]@6 [c3,f3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3]@6 [f3,bb3,c5]@7, ~@16 bb4@23 ~ c5@23 ~ db5@23 ~@2 eb5@23 ~ bb4@23 ~@8]/6", // Bb5 Gb5 F5 Bb5 Fsus4
  AH: "[[f3,bb3]!3 [db3,gb3] [db3,gb3]!3 [c3,f3] [c3,f3]!3 ~, ~@18 db5@23 ~ eb5@23 ~@7]/3", // Bb5 Gb5 F5
  AI: "[~@25 [c3,c4]@5 [c3,c4]@5 ~ [c3,c4]@5 [c3,c4]@5 ~ [c3,c4]@5 [c3,c4]@5 ~ [c3,c4]@5 ~@6 [g2,g3]@5 ~ [g2,g3]@5 [g2,g3]@5 ~ [g2,g3]@5 [g2,g3]@5 ~ [g2,g3]@5 ~ [g2,g3]@5 ~@6 [bb2,bb3]@5 [bb2,bb3]@6 [bb2,bb3]@5 [bb2,bb3]@6 [bb2,bb3]@6 [bb2,bb3]@5 [bb2,bb3]@6 ~@5 [ab2,ab3]@6 [ab2,ab3]@5 [ab2,ab3]@6 ~@6 [g2,g3]@5 [g2,g3]@6, ~@19 eb4@45 [c4,eb4]@45 db4@44 ~ [c4,eb4]@21 ~ bb3@16, ~@19 [c3,c4]@3 eb5@42 ~@2 bb4@42 ~@3 bb4@42 ~@2 ab4@20 ~@3 g4@14, ~@20 g4@44 [g2,g3]@5 ~@39 [bb2,bb3]@6 ~@39 [ab2,ab3]@5 ~@17 [g2,g3]@6 ~@11, ~@21 c5@43 ~ g4@43 ~@2 f4@43 ~@24 d4@15]/8", // C G Bb Ab G Cm C G …
  AJ: "[g2,g3] ~@3", // G
  AK: "[~@2 e4@5 e4@5 g4@3 a4@2 g4 a4@2 ~ a4@3 ~ d4@3 e4@5 e4@5 g4@3 a4@2 ~ a4@2 ~ b4 d5@2 b4 c5@2 d5 e5@5 e5@5 g5@3 a5@2 ~ g5 a5@2 g5 a5@3 d5@3 e5@5 e5@5 g5@3 ~ a5@2 g5 a5@2 b5 e6 d6 b5 a5 ~ g5 e5 ~@13, ~@2 [e2,g2,b2,e3]@12 ~ [e2,g2,b2,e3]@12 ~ [e2,g2,b2,d3]@12 ~ [e2,g2,b2,d3]@12 ~ [c2,e2,g2,c3]@12 ~ [c2,e2,g2,c3]@12 ~ [b1,d2,gb2,b2]@12 ~@2 [b1,d2,gb2,b2]@12 ~@14, ~@21 g4 ~@22 g4 ~@75]/5", // Em Em7 C Bm
  AL: "[~@18 a5@2 g5@2 f5@4 ~ a5@2 bb5@2 ~@3 bb5@2 f5@2 g5@2 ~ a5@2 g5@2 bb5@2 ~, ~@13 [d2,f2,a2,d3]@18 [bb1,d2,f2,bb2]@17]/2", // Dm Bb
  AM: "[a5@2 ~@5 a5@4 a5@2 ~ g5@2 f5@2 a5@2 ~@5 g5@4 ~ g5@2 f5@2 ~ e5@2 d5@2 ~@9, ~@2 [f2,a2,c3,f3]@18 ~ [c2,e2,g2,c3]@18 ~@9]/2", // F C
  AN: "~@10 f5@2 a4@2 [d2,d3]@3 e5@2 f5@2 a4@2 ~, ~@10 [d2,d3]@4 d5@2 ~@3 [d2,d3]@4 ~", // D
  AO: "[d5@2 f5@2 [c2,c3,e5]@4 ~ [c2,c3,e5]@2 f5@4 ~ d5@2 [bb1,bb2]@3 bb4@2 [f2,f3,c5]@4 ~ [f2,f3,f4]@4 [f2,f3]@3 g4@2 a4@2 c5@2 [c2,c3,bb4]@4 ~ [c2,c3,g4]@2, [d2,d3]@4 ~@7 [bb1,bb2]@7 c5@2 ~@12 f4@2 ~@3 [f2,f3]@4 ~@7]/2", // C Bb F5 F C7 C5 D Bb …
  AP: "a4@4 ~ f4@2 [d2,d3]@3 d4@2 ~@12, [d2,d3]@7 c4@2 ~@15", // D
  AQ: "[~@7 [f1,f2]@4 [f1,f2]@5 ~@2 [f1,f2]@2 c4@2 b3@3 ~@6 c4@4 ~ [f1,f2,bb3]@2 [f1,f2,ab3]@4 [f1,f2]@4 ~@8 [f1,f2]@2 ~@4 [f1,f2]@3 ~@4 c4@2 bb3@2 ~, ~@7 f3@9 f3@4 [f1,f2]@4 ~ [f1,f2]@4 [f1,f2]@6 ~@12 [f1,f2]@6 ~@3 [f1,f2]@4 ~@5 [f1,f2]@6 ~, ~@27 ab3@4 ~@11 f3@9 eb3@6 ~ f3@4 ~ c4@4 ~@5]/3", // F Bb5 Fm F
  AR: "[[f1,f2,bb3]@2 [f1,f2,eb3]@4 [f1,f2]@4 ~@5 f3@3 [f1,f2]@2 c4@2 ~@2 [f1,f2]@3 ~@4 c4@4 [f1,f2,bb3]@2 ~ [f1,f2,ab3]@4 [f1,f2]@4 ~@7 [f1,f2]@2 ~@7 c4@4 ~ c4@2 bb3@2 bb3@2 ~ eb3@4 ~@18, ~@6 f3@9 ~@7 b3@4 ~ ab3@4 ~@11 f3@9 eb3@6 ~ f3@4 ~@34, ~@11 [f1,f2]@6 ~@3 [f1,f2]@4 ~@5 [f1,f2]@6 ~@12 [f1,f2]@6 ~@3 [f1,f2]@4 [f1,f2]@4 ~@32]/4", // Bb5 F7 F Bb5 Fm F
  AS: "a3@4 ~ g3@4 f3@3 e3@9 db3@3, [a1,a2]@23 ~", AT: "d3@4 ~ e3@4 f3@3 e3@9 e3@3, [a1,a2]@23 ~",
  AU: "f3@4 ~ e3@4 ~@3 db3@9 db3@3, d2@23 ~, d3@9 d3@14 ~", AV: "d3@4 ~ e3@4 ~@3 e3@9 g3@3, f2@23 ~, f3@9 f3@14 ~",
  AW: "f3@4 e3@4 ~ d3@3 db3@9 db3@3, db2@23 ~, db3 ~", AX: "d3@4 db3@4 ~@4 a2@11 ~, bb1@23 ~, bb2@9 bb2@14 ~",
  AY: "[d4@3 e4@3 f4@2 d4@3 e4@3 f4@3 d4@2 f4@3 bb3@3 e4@3 [bb1,bb2,f4]@3 d4@2 e4@3 f4@3 d4@3 f4@3 d4@2 e4@3 f4@3 d4@3 e4@3 f4@2 d4@3 f4@3 bb3@3 e4@2, [d2,d3]@5 ~ [d2,d3]@5 [d2,d3]@5 ~ [d2,d3]@5 [bb1,bb2]@5 ~@4 [a1,a2]@8 [a1,a2]@5 ~ [d2,d3]@5 [d2,d3]@5 ~ [d2,d3]@5 [d2,d3]@5 ~ [bb1,bb2]@5]/3", // Bb5 D Bb A D Bb
  AZ: "[[bb1,bb2,f4]@3 d4@3 e4@3 f4@3 d4@2 f4@3 d4@3 e4@3 f4@3 d4@2 e4@3 f4@3 d4@3 f4@2 bb3@3 e4@3 [bb1,bb2,f4]@3, ~@3 [a1,a2]@8 ~ [a1,a2]@5 [d2,d3]@5 ~ [d2,d3]@5 [d2,d3]@5 ~ [d2,d3]@5 [bb1,bb2]@5 ~@4]/2", // Bb5 A D Bb
  BA: "d4@3 e4@2 f4@3 d4@3 f4@3 [d4,d5]@3 [e4,e5]@2 [f4,f5]@3 [d4,d5]@2, [a1,a2]@8 [a1,a2]@5 ~ [d2,d3]@5 [d2,d3]@5", // D E F D A D
  BB: "[~ [e4,e5]@3 [f4,f5]@2 [d4,d5]@3 [f4,f5]@3 [bb3,bb4]@3 [e4,e5]@3 [bb1,bb2,f4,f5]@2 [d4,d5]@3 [e4,e5]@3 [f4,f5]@3 [d2,d3,d4,d5]@5 ~@14, ~ [d2,d3]@5 [d2,d3]@5 ~ [bb1,bb2]@5 ~@3 [a1,a2]@8 ~@20]/2", // E F D F Bb E Bb5 D …
})).s("gm_piano").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F G H ~ I J K L M N O ~@12 P Q R S T U V W X Y Z AA AB AC AD AE AF AG ~ AH K AI J AJ AK O AL AM@3 AN AO AP
  AQ@2 AR AS AT AU AT AV Y Z AW W AX P AY AZ BA BB BC BD BE V W BF AT AV BG ~@4 BH AQ@2 BI@2 BJ BK@2 BL BM BN BO BP BQ
  BR BS BT BU ~ BV BW BX BY AR BZ CA CB O CC CD CE CF CG CH CI CJ CK CL BG BK@8 ~ CM CN CO CP E BP CQ CR
>`.pickRestart({
  A: "~@5 x ~@11 x ~@6", B: "~@4 x ~@10 x ~@8", C: "~@2 x ~@10 x ~@10", D: "x ~@10 x ~@11 x",
  E: "~@4 x ~@5 x ~@4 x ~@5 x ~@2", F: "~@2 x ~@5 x ~@5 x ~@4 x ~@2 x ~",
  G: "~ x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x ~ x!2 ~ x!2", H: "x ~ x!2 ~ x!3 ~ x!2 ~@13", I: "~@4 x ~@2 x",
  J: "~@7 x ~@8 x ~@7", K: "~ x ~@8 x ~@8 x ~@4", L: "~@5 x ~@8 x ~@8 x", M: "~@8 x ~@8 x ~@6",
  N: "~@2 x ~@9 x ~@8 x ~@2", O: "~ x ~@2", P: "~@7 x", Q: "~ x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3",
  R: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x", S: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
  T: "~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~", U: "~ x ~ x ~ x ~ x ~ x ~ x", V: "~@17 x ~@6",
  W: "x ~@6 x ~@6 x ~@6 x ~@2", X: "~@4 x ~@7 x ~@6 x ~@4", Y: "~@2 x ~@6 x ~@6 x ~@6 x", Z: "~@6 x ~@6 x ~@6 x ~@3",
  AA: "~ x ~@6", AB: "~@5 x ~@2", AC: "~ x ~", AD: "~ x ~@16 x ~@5", AE: "~@11 x ~@12", AF: "~@4 x ~@16 x ~@2",
  AG: "~@7 x ~@4", AH: "~@2 x", AI: "~@4 x ~@8 x ~@8 x ~", AJ: "~ x ~@8 x ~@7 x ~@5", AK: "~ x ~@2 x ~@2 x",
  AL: "~@9 x ~@3 x ~@7 x ~@2", AM: "~ x ~@7 x ~@3 x ~@7 x ~@2", AN: "~ x ~@22", AO: "~@3 x ~ x ~ x",
  AP: "~ x ~ x ~ x ~ x", AQ: "~@2 x ~@2 x ~@2 x ~@2 x", AR: "~ x ~@4", AS: "~@11 x ~@6 x ~@5",
  AT: "~ x ~@6 x ~@6 x ~@6 x ~", AU: "~@5 x ~@5 x ~@6 x ~@5", AV: "~@5 x ~@6 x ~@6 x ~@4", AW: "~@3 x ~@6 x ~@6 x ~@6",
  AX: "~@4 x ~@6 x ~@12", AY: "~@3 x ~@4 x ~@4 x ~@4 x ~@4 x", AZ: "~@5 x ~@4 x ~@4 x ~@4 x ~@3",
  BA: "~ x ~@5 x ~@4 x ~@4 x ~@4 x ~", BB: "~@3 x ~@5 x ~@4 x ~@4 x ~@4", BC: "x ~@4 x ~@5 x ~@4 x ~@4 x ~@2",
  BD: "~@2 x ~@4 x ~@5 x ~@4 x ~@4 x", BE: "~@4 x ~@4 x ~@5 x ~@8", BF: "~@4 x ~@6 x ~@6 x ~@5", BG: "~ x ~@10",
  BH: "~@8 x ~@2 x", BI: "~@5 x ~@5 x ~@5 x ~@5 x", BJ: "~@5 x ~@5 x ~@5 x ~@6", BK: "x!4", BL: "x!3 ~",
  BM: "~@19 x ~@4", BN: "~ x ~@4 x ~@5 x ~@4 x ~@5 x", BO: "~@4 x ~@5 x ~@5 x ~@4 x ~@2",
  BP: "~@3 x ~@4 x ~@5 x ~@4 x ~@4", BQ: "~ x ~@5 x ~@4 x ~@5 x ~@4 x", BR: "~@5 x ~@4 x ~@5 x ~@5 x ~",
  BS: "~@3 x ~@5 x ~@4 x ~@5 x ~@3", BT: "~ x ~@5 x ~@5 x ~@4 x ~@2 x!2 ~", BU: "x!2 ~@10",
  BV: "~@2 x ~@5 x ~@6 x ~@5 x ~@2", BW: "~@4 x ~@6 x ~@5 x ~@6", BX: "x ~@5 x ~@6 x ~@5 x ~@4",
  BY: "~@2 x ~@5 x ~@6 x ~@6 x ~", BZ: "~@13 x ~@8 x ~", CA: "~@7 x ~@9 x ~@6", CB: "~@2 x ~@8 x ~@9 x ~@2",
  CC: "~@10 x ~@3 x ~@4 x ~@4", CD: "x ~@3 x ~@4 x ~@4 x ~@3 x ~@4 x", CE: "~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~",
  CF: "~@3 x ~@3 x ~@16", CG: "~@7 x ~@3 x ~@4 x ~@3 x ~@3", CH: "~ x ~@3 x ~@4 x ~@3 x ~@3 x ~@4 x",
  CI: "~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@2", CJ: "~@2 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3",
  CK: "x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x", CL: "~@3 x ~@4 x ~@3 x ~@11", CM: "x ~@5 x ~@4 x ~@5 x ~@4 x ~",
  CN: "~@4 x ~@4 x ~@5 x ~@5 x ~@2", CO: "~@2 x ~@5 x ~@4 x ~@5 x ~@4", CP: "x ~@5 x ~@5 x ~@4 x ~@5 x",
  CQ: "~ x ~@4 x ~@5 x ~@5 x ~@4 x", CR: "~@5 x ~@18",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A B C D E F ~@2 G H I J K L M N O P Q ~ R S T U V ~ W X Y Z AA AB A AC AD E AE ~@2 C Z B AE A AF ~@10 AG AH AI AJ
  AK Y Z AL AM AI AN AO AP AQ AR AS AT AU ~ W AV AH A AW ~@5 AX@2 AY AZ@2 BA@3 ~ BB BC BD BE BF BG BH BI ~ BJ BK BL BM
  BN ~@4 D BO BP B ~@16 BQ BR BS BT BC BD BU BV
>`.pickRestart({
  A: "~ x", B: "~@7 x ~@16", C: "~ x ~@17 x ~@4", D: "~@7 x ~@4", E: "~ x ~", F: "~@2 x ~@18 x ~@2",
  G: "~@8 x ~@9 x ~@4 x", H: "~@10 x ~@4 x ~@8", I: "~@2 x ~@4 x ~@9 x ~@4 x ~", J: "~@9 x ~@4 x ~@9",
  K: "x ~@4 x ~@10 x ~@4 x ~@2", L: "~@8 x ~@4 x ~@9 x", M: "~@4 x ~@10 x ~@4 x ~@3", N: "~@6 x ~@4 x ~@10 x ~",
  O: "~@3 x ~@10 x ~@4 x ~@4", P: "~@5 x ~@4 x ~@10 x ~@2", Q: "~ x ~@22", R: "~ x ~@6 x ~@7 x ~@7",
  S: "x ~@7 x ~@7 x ~@6 x", T: "~@7 x ~@7 x ~@7 x", U: "~@7 x ~@6 x ~@7 x ~", V: "~@3 x ~@3 x ~@3 x", W: "x ~@6 x ~@4",
  X: "~@4 x ~@14 x ~@4", Y: "~@9 x ~@13 x", Z: "~@13 x ~@10", AA: "~ x ~@6", AB: "~@19 x ~@4", AC: "~@5 x ~@16 x ~",
  AD: "~@5 x ~@2", AE: "~ x ~@16 x ~@5", AF: "~ x ~@2", AG: "~@3 x", AH: "~@4 x ~@6 x", AI: "~@11 x ~@12",
  AJ: "~ x ~@13 x ~@8", AK: "~@5 x ~@13 x ~@4", AL: "~@3 x ~@13 x ~@6", AM: "~@7 x ~@13 x ~@2", AN: "~@7 x",
  AO: "x ~@4 x ~@2 x ~ x ~@5 x ~ x ~@2 x ~@2", AP: "~@2 x ~@2 x ~ x ~@4 x ~@2 x ~@2 x ~@4 x",
  AQ: "~ x ~@2 x ~@4 x ~@2 x ~ x ~@5 x ~ x ~", AR: "~ x ~@4 x ~@2 x ~ x ~@4 x ~@2 x ~@2 x ~",
  AS: "~@3 x ~ x ~@2 x ~@4 x ~@2 x ~ x ~@5", AT: "x ~ x ~@2 x ~@4 x ~@2 x ~ x ~@4 x ~@2 x",
  AU: "~@2 x ~@4 x ~ x ~@2 x ~@4 x ~@6", AV: "~@2 x ~@6 x ~@2", AW: "~ x ~@10", AX: "~ x ~@8 x ~@13",
  AY: "~ x ~@9 x ~@12", AZ: "~@2 x ~@8 x ~@12", BA: "~ x ~@2 x ~@3", BB: "~ x ~@10 x ~@10 x", BC: "~@10 x ~@10 x ~@2",
  BD: "~@8 x ~@10 x ~@4", BE: "~@7 x ~@10 x ~@5", BF: "~@5 x ~@10 x ~@7", BG: "~@3 x ~@10 x ~@9",
  BH: "~ x ~@11 x ~@4 x ~@5", BI: "x", BJ: "~@14 x ~@6 x ~@2", BK: "~@3 x ~@6 x ~@5 x ~@6 x",
  BL: "~@5 x ~@6 x ~@6 x ~@4", BM: "~ x ~@6 x ~@5 x ~@6 x ~@2", BN: "~@3 x ~@6 x ~@13", BO: "x ~@2 x ~@2 x ~",
  BP: "~@4 x ~@8 x ~@8 x ~", BQ: "~@6 x ~@10 x ~@6", BR: "~@4 x ~@10 x ~@8", BS: "~@2 x ~@10 x ~@10",
  BT: "x ~@11 x ~@10 x", BU: "~ x ~ x", BV: "~@5 x ~@18",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B C D E F G ~@38 H I@3 J ~@16 K L M N O P Q ~ R S T F U ~@4 V W@2 X Y@2 Z AA AB ~ AC AD AE AF AG AH AI AJ ~ AK
  AL AM AN AO ~@8 AP AQ AR AS AT AU U ~@9 AV AW AX AY AD AE AZ BA
>`.pickRestart({
  A: "~@7 x", B: "~@2 x", C: "~@5 x ~@6", D: "~@5 x ~@17 x", E: "~@17 x ~@6", F: "~ x", G: "~ x ~@2",
  H: "~@9 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", I: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  J: "x!2 ~ x!2 ~ x!2 ~@16", K: "~@3 x!2 ~@8 x!2 ~@8 x", L: "~ x ~@8 x!2 ~@8 x ~ x ~", M: "~@7 x!2 ~@8 x!2 ~@5",
  N: "~@3 x ~ x ~@8 x!2 ~@8", O: "x ~ x ~@8 x!2 ~@8 x!2 ~", P: "~@7 x ~ x ~@8 x!2 ~@4", Q: "~@4 x ~ x ~@8 x!2 ~@7",
  R: "x ~@6 x ~@4", S: "~@2 x ~@6 x ~@2", T: "~@4 x ~@6 x", U: "~ x ~@10", V: "~@5 x", W: "~@7 x ~@2 x ~@10 x ~@2",
  X: "~@8 x ~@2 x ~@9 x ~@2", Y: "~@8 x ~@2 x ~@10 x ~", Z: "~@9 x ~@2 x ~@9 x ~", AA: "~@9 x ~@2 x ~@10 x",
  AB: "~@3 x!2 ~@3", AC: "~ x ~@10 x ~@10 x", AD: "~@10 x ~@10 x ~@2", AE: "~@8 x ~@10 x ~@4", AF: "~@7 x ~@10 x ~@5",
  AG: "~@5 x ~@10 x ~@7", AH: "~@3 x ~@10 x ~@9", AI: "~ x ~@11 x ~@10", AJ: "x", AK: "~@8 x ~@6 x ~@5 x ~@2",
  AL: "~@4 x ~@6 x ~@5 x ~@6", AM: "x ~@5 x ~@6 x ~@5 x ~@4", AN: "~@2 x ~@5 x ~@6 x ~@6 x ~", AO: "~ x ~@4",
  AP: "~@7 x ~@3 x ~ x ~@2 x ~ x ~ x ~ x ~", AQ: "~@3 x ~ x ~ x ~@2 x ~@3 x ~ x ~ x ~@2 x ~ x",
  AR: "~@3 x ~@2 x ~ x ~ x ~@4 x ~ x ~ x ~@4", AS: "x ~ x ~@3 x ~@4 x ~@3 x ~@4 x ~@3",
  AT: "x ~@4 x ~@3 x ~@4 x ~@3 x ~ x ~@2 x", AU: "~ x ~ x!3 ~ x!6 ~@11", AV: "~@6 x ~@10 x ~@6", AW: "~@4 x ~@10 x ~@8",
  AX: "~@2 x ~@10 x ~@10", AY: "x ~@11 x ~@10 x", AZ: "~ x ~ x", BA: "~@5 x ~@18",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@9 A B C D E F G ~ H I J K L M N O P Q R ~@12 S T U V W X ~@2 Y Z AA AB W AC ~@10 AD AE AF AG AH AI Z AJ AK AF ~@8 AL
  AM AN AO AP AC ~@4 AQ AR@2 AS@2 AT AU@2 AV AW AX AY AZ BA BB BC BD R ~ BE BF BG BH BI ~@4 BJ D BK AA ~@16 BL BM BN AX
  AY AZ BA BO
>`.pickRestart({
  A: "~@17 x ~@6", B: "~@2 x ~@8 x ~@8 x ~@3", C: "~@2 x ~@2 x ~@2", D: "x ~@2 x ~@2 x ~", E: "~@3 x ~@9 x ~@8 x ~",
  F: "~@7 x ~@8 x ~@7", G: "~ x ~@9 x ~@12", H: "~@4 x ~@11 x ~@2 x ~@4", I: "~@7 x ~@3 x ~@11 x",
  J: "~@3 x ~@10 x ~@3 x ~@5", K: "~@3 x ~ x ~@5 x", L: "~ x ~@11 x ~@3 x ~@6", M: "~@5 x ~@3 x ~@10 x ~@3",
  N: "x ~@2 x!2 ~", O: "~@4 x ~@2 x ~@11 x ~@3 x", P: "~@11 x ~@3 x ~@8", Q: "~ x ~ x ~@5 x ~ x", R: "~ x ~@10",
  S: "~@23 x", T: "~@2 x", U: "~@3 x ~@4", V: "~@2 x ~@16 x ~@4", W: "~ x", X: "~@5 x ~@16 x ~", Y: "~ x ~@17 x ~@4",
  Z: "~@13 x ~@10", AA: "~@7 x ~@16", AB: "~ x ~@16 x ~@5", AC: "~ x ~@2", AD: "~@3 x", AE: "~@4 x ~@6 x",
  AF: "~@11 x ~@12", AG: "~ x ~@13 x ~@8", AH: "~@5 x ~@13 x ~@4", AI: "~@9 x ~@13 x", AJ: "~@3 x ~@13 x ~@6",
  AK: "~@7 x ~@13 x ~@2", AL: "~@5 x", AM: "~@3 x ~@6 x ~@6 x ~@6", AN: "x ~@6 x ~@6 x ~@6 x ~@2",
  AO: "~@4 x ~@6 x ~@6 x ~@5", AP: "~ x ~@7 x ~@6 x ~@6 x", AQ: "~@8 x ~@2 x", AR: "~@2 x ~@5 x ~@2 x",
  AS: "~@5 x ~@11 x ~@5 x", AT: "~@5 x ~@11 x ~@6", AU: "x!2 ~ x", AV: "x!2 ~@2", AW: "~@11 x",
  AX: "~@3 x ~@5 x ~@4 x ~@5 x ~@3", AY: "~@2 x ~@4 x ~@5 x ~@4 x ~@5", AZ: "x ~@4 x ~@5 x ~@5 x ~@4 x ~",
  BA: "~@4 x ~@4 x ~@5 x ~@4 x ~@3", BB: "~@2 x ~@5 x ~@4 x ~@5 x ~@4", BC: "x ~@5 x ~@4 x ~@5 x ~@5 x",
  BD: "~@4 x ~@5 x ~@4 x ~@5 x!2 ~", BE: "~@2 x!2", BF: "~ x ~@5 x ~@6 x ~@5 x ~@3", BG: "~@3 x ~@6 x ~@5 x ~@6 x",
  BH: "~@5 x ~@6 x ~@5 x ~@5", BI: "~ x ~@5 x ~@16", BJ: "~@7 x ~@4", BK: "~@4 x ~@8 x ~@8 x ~",
  BL: "~@3 x ~@4 x ~@5 x ~@4 x ~@4", BM: "~ x ~@5 x ~@4 x ~@5 x ~@4 x", BN: "~@5 x ~@5 x ~@4 x ~@5 x ~",
  BO: "~ x ~@2 x ~@7",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<A ~ B C ~ D E ~@36 F ~ G B ~@40 H ~@23 B ~@36>".pickRestart({
  A: "~@5 x ~@18", B: "~ x ~@10", C: "~@23 x", D: "~@19 x ~@4", E: "~@17 x ~@6", F: "~@11 x ~@12", G: "~@7 x ~@3 x",
  H: "~@3 x ~@4",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@17 A B C D E F G H I J K ~@120>".pickRestart({
  A: "~ x", B: "~@3 x ~@15 x ~@4", C: "~@5 x ~@6", D: "~ x ~@7 x ~@2", E: "~@3 x ~@4", F: "~ x ~@14 x ~@7", G: "~ x ~",
  H: "x ~@4 x ~@2", I: "~@7 x ~@14 x ~", J: "~@7 x ~@4", K: "~ x ~@2",
})).gain(0.3)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@40
  [~@15 x ~@7 x]
  [~ x!2]
  [~ x ~@7 x ~@8 x ~@5]
  [~@2 x ~@8 x ~@7 x ~@4]
  [~@4 x ~@7 x ~@8 x ~@2]
  [~@5 x ~@8 x ~@7 x ~]
  ~@102
>`).gain(0.3)

stack(piano, kick, snare, hihat, mid_tom, crash, ride, cowbell)

More by me