Strudelify

Let it go

The Piano Guys

KeyF majorTempo130 bpm
0:00/0:00
// Let it go — The Piano Guys
// 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: metre changes (12/8 at bar 1, 4/4 at bar 20, 12/8 at bar 60, 4/4 at bar 68, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/4813115; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 133 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// other · pizzicato strings
const pizzicato_strings = note("<~@19 A B@7 ~@106>".pickRestart({
  A: "~@20 g3@4 d4@7 ~",
  B: "[eb4@11 ~@7 g3@4 eb4@7 d4@11 ~@8 f3@4 c4@7 d4@11 bb3@15 ab3@15 g4@7 g4@7 ~ g4@7 g4@4 bb4@4 bb4@3 g4@26 f4@7 ~ f4@18 d4@2 eb4@2 f4@30 ~@5]/7",
})).s("gm_pizzicato_strings").gain(0.2)

// chords · piano
const piano = note(`<
  ~@5 A@6 B@3 C D@2 E@3 ~@14 F@6 G@3 H@7 I@4 J@8 K L M N@3 O P Q R S T U V W X Y X Z AA AB AC AD AE AF AG AD AH AI@2
  AJ@2 AK@2 AL AM AN AO@2 AP AQ AR AS AT AU AV@2 AW AX AY AZ BA BB BC BD BE BF BG BH@2 BI@3 BJ BK BL BM BN BO BP@2
>`.pickRestart({
  A: "[~@15 [f1,f2]@28 ~@2 [e3,db5,bb5]@28 ~@2 [db5,bb5]@14 ~ [bb4,g5]@14 [f3,c4,ab4]@7 ~ [f3,c4,ab4]@7 f5@2 ~ g5@2 ab5@2 ~ [f3,c4,ab4]@7 f5@2 ~ g5@2 ab5@2 ~ [f3,c4,ab4]@7 c6@2 bb5@2 ~ ab5@2 bb5@2 ~ ab5@2 g5@2 ~ [f3,db4]@7 [f3,db4,bb4]@7 ~ [bb4,f5]@2 g5@2 ~ ab5@2 [f3,db4,bb4]@6, ~@75 [e2,e3]@28 ~ ab5@14 ~ [f3,c4,ab4]@7 ~@8 [f3,c4,ab4]@7 ~@8 [f3,c4,ab4]@7 [f3,c4,ab4]@7 ~ bb5@14 ~ [f3,db4]@7 ~@6]/6", // F Bbdim Gb Eb Fm Db Bbm Bb5 …
  B: "[~@2 [bb4,f5]@2 g5@2 ab5@2 ~ [f3,db4,bb4]@7 c6@2 ~ db6@2 c6@2 ~ bb5@2 ab5@2 ~ g5@2 f5@2 ~ g5@2 a5@2 ~ [f3,c4,a4]@7 f5@2 ~ g5@2 a5@2 ~ [f3,c4,a4]@7 f5@2 g5@2 ~ a5@2 [f3,c4,a4]@7 ~ c6@2 bb5@2 ~ a5@2 bb5@2 ~ a5@2 g5@2 ~ g5@2 a5@2 ~, ~@2 [f3,db4]@7 ~@7 [f3,db4]@7 ~ [f3,db4]@7 [f3,c4,a4]@7 ~@8 [f3,c4,a4]@7 ~@8 [f3,c4,a4]@7 ~@8 [f3,c4,a4]@7 [f3,c4,a4]@7 ~ [f3,d4,g4]@5]/3", // Bb5 Bbm F Db F G7
  C: "b5@2 [f3,d4,g4]@7 ~ g5@2 a5@2 b5@2 ~ g5@2 a5@2 ~ b5@2 g5@2 ~ a5@2 b5@2 ~, ~@10 [f3,d4,g4]@7 [f3,d4,g4]@7 [f3,d4,g4]@7 ~", // G7
  D: "[g5@2 a5@2 ~ b5@2 c6@2 ~ d6@2 c6@2 ~ b5@2 a5@2 ~ g5@2 c6@2 ~ b5@2 c6@2 ~ a3@7 c6@2 b5@2 ~ c6@2 a3@7 ~ c6@2 b5@2 ~ c6@2 [gb3,a3,c4,eb4,gb4]@5, [f3,d4,g4]@7 [f3,d4,g4]@7 ~ [f3,d4,g4]@7 [gb3,a3,c4,eb4]@7 ~@8 a3@7 ~@8 [gb3,a3,c4,eb4,gb4]@7 ~@5]/2", // Gbdim G7 Gbdim
  E: "[~@3 c6@2 b5@2 ~ c6@2 [gb3,a3,c4,eb4,gb4]@7 ~ d6@2 c6@2 d6@2 ~@8 d6@2 ~ c6@2 d6@2 ~@8 g6@2 ~ f6@2 eb6@2 ~ f6@2 eb6@2 ~ d6@2 eb6@2 ~ d6@2 c6@2 ~ d6@2 c6@2 g5@2 ~@20, ~@3 [gb3,a3,c4,eb4,gb4]@7 ~@8 [g4,c5,d5]@28 ~ [g2,g3]@28 ~@21]/3", // Gbdim Gsus4 G
  F: "[~@8 bb5@11 ~ f5@11 f6@21 ~ eb6@4 d6 eb6 d6 c6@4 d6@4 eb6@11 ab5@11 ab6@21 ~ g6@7 ~ eb6@7 f6@11 bb5@11 ~ bb6@21 ~ bb6@4 c7@11 c7@3 g6@2, ~@8 bb3@42 ~@3 f3@14 ~ c4@42 ~@2 eb4@14 ~ d4@42 ~@3 f3@14 ~@6]/6",
  G: "[~@2 eb6@4 g6@4 c6@3 eb6@4 g5@4 ~@3 eb5@4 g5@4 c5@4 eb5@3 g4@14 ~ c7@4 ab6@4 eb6@3 ab6@4 c6@4 eb6@3 [ab1,ab2,ab5]@4 [ab1,ab2,c6]@4 [ab1,ab2,eb5]@4 [ab1,ab2,ab4]@3 [ab1,ab2,c5]@4 [ab1,ab2,eb5], ~@21 c6@32 ~ [ab1,ab2]@21 ~@21]/3", // Ab Ab5 Ab Ab5 Ab
  H: "[~@3 [ab1,ab2,ab5]@3 [ab1,ab2,c6]@4 [ab1,ab2]@4 [eb1,eb2]@4 [bb4,eb5]@7 [bb4,eb5]@7 [bb4,eb5]@14 ~ [bb4,eb5]@7 ~ [bb4,d5]@7 [bb4,eb5]@7 ~ bb4@7 [f4,bb4,eb5]@7 [g4,bb4,eb5]@7 ~ [g4,bb4,eb5]@7 [g4,bb4,eb5]@7 ~ [ab4,eb5]@7 [ab4,eb5]@7 ~ [ab4,eb5]@7 [ab4,eb5]@7 [bb4,eb5]@7 ~ [bb4,eb5]@7 [bb4,eb5]@7 ~ [bb4,eb5]@7 [bb4,d5,eb5]@7 ~ [bb4,eb5]@7 [bb4,eb5]@7 [bb4,d5,eb5]@7 ~ [g4,bb4,eb5]@4 eb4@3 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@3 [d2,d3,eb4]@4 [eb2,eb3,g4,bb4,eb5]@4 [ab1,ab2,eb4]@2, ~@10 d6@7 ~ [eb1,eb2]@28 ~ [bb1,bb2]@28 ~@2 [c2,c3]@28 ~@2 [ab1,ab2]@28 ~ [eb2,eb3]@28 ~@2 [d2,d3]@28 ~@2 [c2,c3]@18 ~@10]/7", // Ab Eb Eb5 Bb Eb5 Ebsus2 Eb Ab5 …
  I: "[~@2 [ab4,eb5]@3 eb4@4 [ab4,eb5]@4 eb4@3 [ab4,eb5]@7 ~ [ab4,eb5]@7 [bb4,eb5,g5]@7 ~ g5@3 [g4,bb4,eb5]@7 ~ bb4@4 [d5,eb5,f5]@3 bb4@4 [d5,eb5,f5]@4 bb4@3 [d5,eb5,f5]@4 bb4@4 [d5,eb5,f5]@4 bb4@3 [d5,eb5,f5]@4 bb4@4 [eb5,g5]@3 bb4@4 [eb5,g5]@4 bb4@4 [eb5,g5]@3 bb4@4 [eb5,ab5]@4 bb4@3 [eb5,ab5]@4 bb4@4, ~@2 [ab1,ab2]@28 ~ [eb1,eb2]@21 ~@2 [bb1,bb2]@35 ~@2 [g2,g3]@11 [eb2,eb3]@11 [ab2,ab3]@15]/4", // Ab5 Eb Dm Eb Ab5 Ab Eb Bb …
  J: "[[eb5,ab5]@4 [g1,g2,bb4]@3 [ab1,ab2,eb5,ab5]@4 [g1,g2,bb4]@4 [ab1,ab2,eb5,ab5]@3 [g1,g2,bb4]@4 [bb4,eb5]@7 ~ [bb4,eb5]@7 [bb4,eb5]@7 [bb4,eb5]@7 ~ [bb4,d5,eb5]@7 [bb4,d5,eb5]@7 ~ [bb4,f5]@3 eb5@4 [bb4,d5]@4 eb5@4 [f2,f3,c4,eb4,ab4]@28 ~ [c4,eb4,ab4,bb4]@21 ~@4 ab4@2 g4@2 ~ f4@2 c5@2 ~ bb4@2 ab4@2 ~ g4@2 f4@2 ~ g4@2 ab4@2 ~ bb4@2 c5@2 ~ d5@2 e5@2 ~ f5@3 f4@2 ab4@3 [f1,f2,c5]@3 ab4@3 f4@3 [f1,f2,c4]@3 f4@3 ab4@3 [f1,f2,c5]@3 ab4@2 f4@3 ab3@3 db4@3 f4@3 [db2,db3,ab4]@3 f4@3 db4@3 [db2,db3,ab3]@3 db4@2 f4@3 [db2,db3,ab4]@3 f4@3 db4@3 bb3@3 eb4@3 g4@3 [eb2,eb3,bb4]@3 g4@2 eb4@2, ~@22 [eb1,eb2]@28 ~@2 [bb1,bb2]@28 ~@31 [ab1,ab2]@42 ~@3 g2@14 ~ [f1,f2]@8 ~@26 [db2,db3]@8 ~@27 [eb2,eb3]@8 ~@8]/8", // Ab5 Gm Ab5 Gm Ab5 Gm Eb5 Ebmaj7 …
  K: "~ [eb2,eb3,bb3]@3 eb4@3 g4@3 [eb2,eb3,bb4]@3 g4@3 eb4@3 bb3@3 db4@2 f4@3 [bb1,bb2,bb4]@3 f4@2, ~@19 [bb1,bb2]@8 ~@5", // Eb5 Bb
  L: "~ db4@3 [bb1,bb2,bb3]@3 db4@3 f4@3 [bb1,bb2,bb4]@3 db5@2 f5@3 c6@3 ab5@3 f5@3 [c2,c3,c5]@2, ~@21 [c2,c3]@8 ~@3", // Bb C
  M: "~ ab4@3 f4@3 [c2,c3,c4]@3 f4@2 ab4@3 [c2,c3,c5]@3 f5@3 ab5@3 bb5@3 g5@3 eb5@2, ~@3 [bb1,bb2]", // C Bb
  N: "[~ [bb1,bb2,bb4]@3 g4@2 eb4@3 [bb1,bb2,bb3]@3 eb4@3 g4@3 [bb1,bb2,bb4]@3 eb5@3 g5@3 bb5@3 f5@2 d5@3 [bb1,bb2,bb4]@3 f4@3 d4@3 [bb1,bb2,bb3]@3 d4@3 f4@3 [bb1,bb2,bb4]@3 d5@2 f5@3 d6@3 bb5@3 f5@3 d5@3 bb4@3 f4@3 ~@3 a4@2 d5@3 f5@3 a5@3 d6@3, ~@27 [bb1,bb2]@8 ~@26 [bb1,bb2]@16 ~@2 [d2,d3]@16 ~]/3", // Bb D
  O: "[g2,d3,bb3]@4 [bb4,d5] ~ [bb4,d5]@2 [bb4,d5] ~ [bb4,d5]@2 [bb4,d5] ~ [bb4,d5]@2 [bb4,d5]@2 ~@2 [bb4,d5]@4 [bb4,d5]@2 ~@2 [bb4,d5]@4", // Gm Bb
  P: "[c5,eb5] ~ [c4,g4]@2 [c5,eb5] ~ [c4,g4]@2 [c5,eb5] ~ [c4,g4]@2 [c5,eb5] ~ [c4,g4]@2", // Cm C5 Cm C5 Cm C5 Cm C5
  Q: "[a4,c5]@2 ~@2 [a4,c5] ~ [a4,c5]@2 [a4,c5] ~ [a4,c5]@2 [a4,c5] ~ [a4,c5]@2 [a4,c5]@2 ~@2 [a4,c5]@4 [a4,c5]@2 ~@2 [a4,c5]@4", // Am
  R: "[a4,d5] ~ [bb3,f4]@2 [a4,d5] ~ [bb3,f4]@2 [a4,d5] ~ [bb3,f4]@2 [a4,d5] ~ [bb3,f4]@2", // D5 Bb5 D5 Bb5 D5 Bb5 D5 Bb5
  S: "[g4,bb4]@2 ~@2 [g4,bb4] ~ [g4,bb4]@2 [g4,bb4] ~ [g4,bb4]@2 [g4,bb4] ~ [g4,bb4]@2 [g4,bb4]@2 ~@2 [g4,bb4]@4 [g4,bb4]@2 ~@2 [g4,bb4]@4", // Gm
  T: "[g4,c5] ~ [ab3,eb4]@2 [g4,c5] ~ [ab3,eb4]@2 [g4,c5] ~ [ab3,eb4]@2 [g4,c5] ~ [ab3,eb4]@2", // C5 Ab5 C5 Ab5 C5 Ab5 C5 Ab5
  U: "[d4,f4]@2 ~@2 [d4,f4] ~ [d4,f4]@2 [d4,f4] ~ [d4,f4]@2 [d4,f4] ~ [d4,f4]@2 [f4,ab4]@2 ~@2 [f4,ab4]@4 [f4,ab4]@2 ~@2 [f4,ab4]@4", // Dm Fm
  V: "[f4,b4]@2 ~@2 [g3,d4]@4 [f4,b4]@2 ~@2 [g3,d4]@4 [f4,b4]@2 ~@2 [g3,d4]@4 g5 ~ f5 ~ eb5 ~ d5 ~", // Fdim G5 Fdim G5 Fdim G5
  W: "[g4,c5,eb5]@2 ~@2 [g4,c5,eb5] ~ g5 ~ [g4,c5,eb5] ~ g5 ~ [g4,c5,eb5] ~ g5 ~ [g4,c5,eb5]@2 ~@2 [g4,c5]@2 ~@2 [g4,c5,eb5]@2 ~@2 [g4,c5,eb5,g5]@2 ~@2, [c2,c3] ~ [c1,c2] ~", // Cm C5 Cm C
  X: "[f3,ab4,c5,f5,ab5] f2 [f3,ab4,c5,f5,ab5] f2 [f2,ab4,c5,f5,ab5] f1 [f2,ab4,c5,f5,ab5] f1", // Fm
  Y: "[bb4,eb5,g5,bb5] ~ [bb4,eb5,g5,bb5] ~ [bb4,eb5,g5,bb5] ~ [bb4,eb5,g5,bb5] ~ [bb4,eb5,g5,bb5] ~ [bb4,eb5] ~ [bb4,eb5,g5] ~ [bb4,eb5,g5,bb5] ~, [eb1,eb2] ~ [eb2,eb3] ~", // Eb Eb5 Eb
  Z: "[d5,g5,b5,d6] ~ [d5,g5,b5,d6] ~ [d5,g5,b5,d6] ~ [d5,g5,b5,d6] ~ [d5,g5,b5,d6] ~ [d5,g5] ~ [d5,g5,b5] ~ [d5,g5,b5,d6] ~, [g1,g2] ~ [g2,g3] ~", // G G5 G
  AA: "eb6 c6 g5 eb5 c6 g5 eb5 c5 eb6 c6 g5 eb5 c6 g5 eb5 c5, c4 c3 c4 c3!2 c2 c3 c2",
  AB: "[f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~ [f5,bb5,d6,f6] ~, [bb1,bb2] ~ [bb2,bb3] ~", // Bb
  AC: "g6 eb6 bb5 g5 eb6 bb5 g5 eb5 g6 eb6 bb5 g5 g6 eb6 bb5 g5, eb4 eb3 eb4 eb3 [eb2,eb3]!4", // Eb
  AD: "bb5@2 eb6@2 d6@2 eb6@2 g6 eb6 d6 eb6 f6 eb6 d6 eb6, [eb1,eb2]@15 ~", // Eb
  AE: "bb5@2 eb6@2 d6@2 eb6@2 g6 eb6 d6 eb6 f6 eb6 d6 eb6, [bb1,bb2]@15 ~", // Bb
  AF: "bb5@2 eb6@2 d6@2 eb6@2 g6 eb6 d6 eb6 f6 eb6 d6 eb6, [c2,c3]@15 ~", // C
  AG: "c6@2 eb6@2 d6@2 eb6@2 ab6 eb6 ab5 bb5 c6 d6 eb6 f6, [ab1,ab2]@15 ~", // Ab
  AH: "bb5@2 eb6@2 d6@2 eb6@2 f6 eb6 c6@2 bb6@2 c6@2, [d2,d3]@15 ~", // D
  AI: "[~@2 eb6@2 d6@2 eb6@2 g6 eb6 d6 eb6 f6 eb6 d6 eb6 c6@2 eb6@2 d6@2 eb6@2 ab6 bb5 c6 d6 eb6 f6 g6 ab6, [c2,c3]@19 ~ [d2,d3]@4 [eb2,eb3]@4 [ab1,ab2]@34 ~@2]/2", // C D Eb Ab
  AJ: "[bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6, [eb1,eb2]@23 ~ [bb1,bb2]@38 ~@2]/2", // Eb Bb
  AK: "[bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 bb6 eb6 d6 eb6 c7 eb6 d6 eb6 bb6 eb6 d6 eb6 ab6 eb6 d6 eb6 ab6 eb6 d6 eb6 ab6 eb6 d6 eb6, [g2,g3]@11 ~ [eb2,eb3]@11 ~ [ab2,ab3]@15 ~@5 [g1,g2]@4 [ab1,ab2]@4 [g1,g2]@4 [ab1,ab2]@4 [g1,g2]@4]/2", // G Eb Ab G Ab G Ab G
  AL: "bb5 eb6 f6 eb6 d6 eb6 f6 eb6 g6 eb6 d6 eb6 f6 eb6 d6 eb6, [eb1,eb2]@15 ~", // Eb
  AM: "bb5@2 c6 d6 eb6 d6 c6 d6 f6 d6 c6 d6 eb6 d6 c6 d6, [bb1,bb2]@15 ~", AN: "[f1,f2,ab5,c6,eb6]@15 ~",
  AO: "[[ab1,ab2,c4,eb4,g4,bb4]@61 ~@3]/2", AP: "b5 e6 eb6 e6 gb6 e6 eb6 e6 ab6 e6 eb6 e6 gb6 e6 eb6 e6, [e2,e3]@15 ~",
  AQ: "b5@2 db6 eb6 e6 eb6 db6 eb6 gb6 eb6 db6 eb6 e6 eb6 db6 eb6, [b2,b3]@15 ~", // B
  AR: "b5 e6 eb6 e6 gb6 e6 eb6 e6 ab6 e6 eb6 e6 gb6 e6 eb6 e6, [db3,db4]@15 ~", // Db
  AS: "db6 e6 eb6 e6 gb6 e6 eb6 e6 a6 e6 eb6 e6 ab6 e6 eb6 e6, [a2,a3]@15 ~", // A
  AT: "b5 e6 eb6 e6 gb6 e6 eb6 e6 ab6 e6 eb6 e6 b6 e6 eb6 e6, [e2,e3]@15 ~", // E
  AU: "b5@2 db6 eb6 e6 eb6 db6 eb6 gb6 eb6 db6 eb6 b6 eb6 db6 eb6, [eb3,eb4]@15 ~", // Eb
  AV: "[b5 e6 eb6 e6 gb6 e6 eb6 e6 ab6 e6 eb6 e6 gb6 e6 eb6 e6 db6 e6 eb6 e6 gb6 e6 eb6 e6 a6 b5 db6 eb6 e6 gb6 ab6 a6, [db3,db4]@19 ~ [eb3,eb4]@4 [e3,e4]@4 [a2,a3]@34 ~@2]/2", // Db Eb E A
  AW: "b6 e6 eb6 e6 b6 e6 eb6 e6 b6 e6 eb6 e6 b6 e6 eb6 e6, [e2,e3]@15 ~", // E
  AX: "b6 e6 eb6 e6 b6 e6 eb6 e6 b6 e6 eb6 e6 b6 e6 eb6 e6, [b2,b3]@15 ~", // B
  AY: "b6 e6 eb6 e6 b6@2 e6 b6 e7 b6 e6 b6 e7 b6 e6 b6, [ab2,ab3]@15 ~", // Ab
  AZ: "e7 b6 e6 b6 e7 e6 eb6 e6 a6 e6 eb6 e6 ab6 e6 eb6 e6, [a2,a3]@15 ~", // A
  BA: "b6 e6 eb6 e6 gb6 e6 eb6 e6 b6 e6 eb6 e6 gb6 e6 eb6 e6, e3@15 ~, e4@11 ~ e4@19 ~",
  BB: "b6 gb6 e6 gb6 e6 gb6 e6 gb6 b6 gb6 e6 gb6 b6 gb6 e6 gb6, [d2,d3]@15 ~", // D
  BC: "b6 ab6 e6 ab6 b6 ab6 e6 ab6 b6 ab6 e6 ab6 b6 a6 e6 a6, [db2,db3]@15 ~", // Db
  BD: "b6 a6 e6 a6 b6 a6 e6@2 ~ ab5 a5 b5 db6 eb6 e6 gb6, [c2,c3]@15 ~", // C
  BE: "ab6 e6 eb6 e6 b6 e6 eb6 e6 ab6 e6 eb6 e6 gb6 e6 eb6 e6, e5@15 ~ [e5,b5]@15 ~", // E5
  BF: "gb6 e6 eb6 e6 b6 e6 eb6 e6 gb6 e6 eb6 e6 ~ e6 eb6 e6, [eb5,e5,b5]@15 ~ e5@15 ~, ~@16 b5@8 b5@7 ~", // Emaj7
  BG: "b4 b5 b4 b5 b4 b5 b4 b5 b4 b5 b4 b5 b4@2 e4 b4, [gb1,gb2]@15 ~", // Gb
  BH: "[e5 b4 e4 b4 e5 b4 e4 b4 b4@23 ~, [a1,a2]@19 ~@13]/2", // A
  BI: "[b3!3 a3 a3!2 g3!2 g3 b2!3, b4@23 ~ a4@23 ~ g4@23 ~ [gb3,b3,e4,gb4]@23 ~]/3", // Esus2
  BJ: "b1!3 [e3,g3,b3,e4], [b2,b3,eb4,gb4]@23 ~@9", // Em B
  BK: "[g3,b3,e4,g4]@4 [b3,e4,g4,b4]@4 g6 a6 g6 gb6 e6 gb6 e6 d6, ~@2 g4 e4", // Em
  BL: "c6 d6 c6 b5 a5 b5 a5 g5 gb5 g5 gb5 e5 eb5 e5 eb5 db5, c4 a3 gb3 eb3", BM: "[b2,b4]@2 b5 b5@2 b5 a5@2",
  BN: "a5 a5@2 a5 ~ e5 ~ e5", BO: "~ e5 ~ e5 ~ e5 ~ e5",
  BP: "[~@4 eb5@4 ~@8 [b3,a4,eb5]@4 [b3,a4,eb5]@4 [e1,e2,g4,e5]@23 ~@17]/2", // B7 Em
})).s("gm_piano").gain(0.29)

// chords · piano · soft notes
const piano_soft = note("<A@7 ~@12 B@5 C@6 D@5 ~@98>".pickRestart({
  A: "[~@27 f3@28 ~ [f1,f2]@28 ~@2 f3@28 ~@2 [f1,f2]@28 ~@2 [db5,g5,bb5]@56 ~@22, ~@27 f4@56 ~@3 [db4,g4]@56 ~@4 f3@28 ~@50]/7", // F Gdim Dbdim
  B: "[~@13 g4@7 g4@7 ~ g4@11 g4@4 g4@3 f4@4 eb4@4 eb4@14 ~ eb4@3 f4@7 ~ f4@18 eb4@2 d4@2 bb3@14 ~ ab3@14 ~@2 d5@3 eb5@3 g4@4 d5@7 eb5@10, ~@13 [c2,g2,c3]@28 ~@2 c3@85 ~@4 g4@4 ~@24, ~@43 ab3@28 ~ bb3@28 ~@2 [f3,c4]@28 ~@2 c4@28]/5", // C5 F5
  C: "[~@3 eb5@2 d5@4 g4@4 eb5@7 d5@11 ~ c5@3 d5@4 f4@3 c5@7 ~ d5@11 ~@15 a4@14 ~ g6@3 g5@4 d6@4 eb6@4 g5@3 d6@4 eb6@4 g5@3 g6@4 g5@4 d6@4 eb6@3 g5@4 d6@4 eb6@7 f6@4 f5@4 c6@3 d6@4 f5@4 c6@3 d6@4 f5@4 f6@4 f5@3 bb5@4 c6, ~@2 c4@29 f4@4 ~@26 bb4@15 ~@116, ~@2 ab4@4 ~@25 bb3@30 f3@30 ~@101, ~@62 c4@29 c4@101]/6",
  D: "[~@3 ab5@14 ~@8 g4@4 g4@3 f4@4 eb4@7 ~@12 g4@3 g4@4 f4@7 ~ eb4@7 [f4,a4,c5]@56 ~@27, ~@18 [c4,c5,eb5]@26 f4@11 ~@105, ~@47 [d4,bb4,d5]@28 ~@85]/5", // F Cm Gm
})).s("gm_piano").gain(0.15)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@27 A ~ B ~ C ~@11 D E F G H I J K L M N O P Q R ~@11 S ~ S ~ S ~ S ~ S ~ S ~ S ~ R S@15 ~@34
>`.pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~@15 x ~@16", D: "~@21 x ~@7 x ~@2", E: "~@4 x ~@7 x ~@6 x ~@6 x ~@5",
  F: "~@2 x ~@6 x ~@7 x ~@6 x ~@7", G: "x ~@6 x ~@6 x ~@7 x ~@6 x ~@2", H: "~@5 x ~@6 x ~@7 x ~@6 x ~@4",
  I: "~@2 x ~@7 x ~@6 x ~@7 x ~@6", J: "x ~@7 x ~@6 x ~@6 x ~@7 x ~", K: "~@5 x ~@7 x ~@6 x ~@7 x ~@3",
  L: "~@3 x ~@6 x ~@7 x ~@6 x ~@6", M: "~ x ~@6 x ~@7 x ~@6 x ~@6 x ~", N: "~@6 x ~@6 x ~@7 x ~@6 x ~@3",
  O: "~@4 x ~@6 x ~@6 x ~@7 x ~@5", P: "~ x ~@7 x ~@6 x ~@7 x ~@6 x", Q: "~@6 x ~@7 x ~@6 x ~@7 x ~@2",
  R: "~ x ~ x ~@4", S: "~ x ~ x ~ x ~ x",
})).gain(0.1)

stack(pizzicato_strings, piano, piano_soft, kick, kick_soft)