Strudelify

Herz-Schmerz-Polka

Last

KeyB♭ majorTempo118 bpm
0:00/0:00
// Herz-Schmerz-Polka — Last
// 118 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D C E F G H I J K H L M N O P Q R S T U V K W X G Y Z J AA AB AC AD AE AF AG AH AE AI AJ AK AL AM AN AO AP AQ AR
  AS AL AM AT AO AU AV AR AW AX F AY AZ BA BB BC BD BE BF BG BH BI BF BJ BH BK BL AM AT AO BM AV BN BK AL AM AT AO BM BO
  BP BQ ~
>`.pickRestart({
  A: "c2@4 ~@4 c2@4 d2 ~ e2 ~", B: "f2@3 ~ e2@2 ~@2 d2@3 ~ c2@3 ~", C: "f2@3 ~ c2@3 ~ f2@3 ~ c2@2 ~@2",
  D: "f2@3 ~ c2@3 ~ f2 ~ c2@2 d2@2 e2@2", E: "g2@4 c2@3 ~ g2@3 ~ c2@2 ~@2", F: "g2@3 ~ c2@3 ~ g2@3 ~ c2@2 ~@2",
  G: "f2@2 ~@2 e2@3 ~ d2@3 ~ c2@3 ~", H: "f2@3 ~ c2@3 ~ g2@3 ~ c2@3 ~", I: "f2@3 ~ e2@3 ~ d2 ~@3 c2@3 ~",
  J: "g2@3 ~ c2@3 ~ g2@3 ~ c2@3 ~", K: "f2@3 ~ c2@3 ~ f2@3 ~ c2@3 ~", L: "f2 ~ c2 ~ f1@2 f1 ~",
  M: "c2@3 ~ c2@3 ~ c2@3 ~ g1@3 ~", N: "d2@3 ~ a1@3 ~ d2 ~ c2 ~ b1 ~ a1 ~", O: "g1@3 ~ d2@4 g2@3 ~ d2@3 ~",
  P: "c2@4 b1@3 ~ a1@2 ~@2 g1@3 ~", Q: "c2@3 ~ g1@3 ~ c2@4 d2 ~ e2 ~", R: "f2@2 ~@2 c2@3 ~ f2@4 c2@2 f2@2",
  S: "g2@3 ~ d2@2 ~@2 g1@3 ~ a1 ~ b1 ~", T: "c2@3 ~ g1@4 c2 ~ bb1 ~ a1 ~ g1 ~", U: "f1@3 ~ c2@4 f2@3 ~ c2@3 ~",
  V: "f2@2 ~@2 c2@4 f2 ~ c2 ~ d2 ~ e2 ~", W: "g2@3 ~ c2@3 ~ g2@2 ~@2 c2@3 ~", X: "g2@2 ~@2 c2@3 ~ g2@3 ~ c2@3 ~",
  Y: "f2@3 ~ c2@3 ~ g2@3 ~ c2@4", Z: "f2@3 ~ e2@3 ~ d2@3 ~ c2@2 ~@2", AA: "f2@3 ~ e2@3 ~ d2@2 ~@2 c2@3 ~",
  AB: "f2@4 c2@3 ~ g2@3 ~ c2@4", AC: "f2@3 ~ c2@2 ~@2 f1@4 g1 ~ a1 ~", AD: "bb1 ~ a1 ~ g1 ~ f1 ~",
  AE: "bb1@3 ~ f1@2 ~@2 bb1@3 ~ f1@3 ~", AF: "a1@3 ~ f1@2 ~@2 c2@3 ~ f1@2 ~@2", AG: "f1@3 ~ a1@4 c2 ~ f1@2 g1 ~ a1 ~",
  AH: "bb1@3 ~ a1@3 ~ g1@3 ~ f1@2 ~@2", AI: "a1@2 ~@2 f1@2 ~@2 c2@3 ~ a1@3 ~", AJ: "f1@3 ~ a1@4 c2 ~ f1@2 g1 ~ a1@2",
  AK: "bb1 ~ bb1@2 c2@2 d2 ~", AL: "eb2@4 ~@4 eb2@5 ~@3", AM: "eb2 ~ eb2 ~ eb2 f2 g2 eb2",
  AN: "bb1@2 ~@2 f1@3 ~ bb1@3 ~ f1@3 ~", AO: "bb1 ~ bb1 ~ bb1 c2 d2 f1", AP: "bb1@2 ~@2 bb1@3 ~ bb1@2 ~@2 f1@2 ~@2",
  AQ: "eb1@4 g1 ~ bb1@2 bb1@3 ~ bb1@3 ~", AR: "f1@2 ~@2 f1@2 ~@2 f1@3 ~ a1@3 ~", AS: "bb1@3 ~ bb1@4 c2@4 d2@3 ~",
  AT: "bb1@4 ~@4 bb1@5 ~@3", AU: "bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~", AV: "eb1@4 g1 ~ bb1 ~ bb1@4 d2@2 f2@2",
  AW: "bb1@3 ~ f1@4 bb1@4 ~@4", AX: "f2@3 ~ c2@3 ~ f2@4 c2@4", AY: "g2@4 c2@3 ~ g2@4 c2@3 ~",
  AZ: "f2@3 ~ e2@3 ~ d2@3 ~ c2@3 ~", BA: "f2@3 ~ c2@2 ~@2 f2@4 c2@3 ~", BB: "g2@4 c2@3 ~ g2@3 ~ c2@3 ~",
  BC: "g2@2 ~@3 c2 d2 e2", BD: "f2 ~ f2@2 c2@2 a1@2 f1@3 ~@5", BE: "bb1@3 ~ a1@2 ~@2 g1@2 ~@2 f1@2 ~@2",
  BF: "bb1@3 ~ f1@3 ~ bb1@3 ~ f1@3 ~", BG: "a1@3 ~ f1@2 ~@2 c2@3 ~ a1@3 ~", BH: "f1@3 ~ a1@4 c2 ~ f1@2 g1@2 a1@2",
  BI: "bb1@3 ~ a1@3 ~ g1@3 ~ f1@3 ~", BJ: "a1@3 ~ f1@2 ~@2 c2@3 ~ a1@4", BK: "bb1@2 ~@2 bb1@4 c2@4 d2@3 ~",
  BL: "eb2@3 ~@5 eb2@4 ~@4", BM: "bb1@3 ~ bb1@3 ~ bb1@3 ~ f1@2 ~@2", BN: "f1@2 ~@2 f1@2 ~@2 f1@3 ~ a1@4",
  BO: "eb1@4 g1 ~ bb1 ~ bb1@4 d2@2 f2 ~", BP: "f1@3 ~ f1@2 ~@2 f1@3 ~ a1@3 ~", BQ: "bb1@2 ~@2 f1@4 bb1 ~@3 bb1@4",
})).s("gm_acoustic_bass").gain(0.51)

// chords · flute
const flute = note(`<
  ~@35 A B ~ C D B ~ E F ~ G H I J K L M ~ N O I J K P ~@7 Q R S B ~ T A B ~ T F ~ U ~ I V K W F X Y H I J K Z ~
>`.pickRestart({
  A: "~@2 [bb5,d6] [c6,eb6] [d6,f6] ~ [bb5,d6] ~@3 [bb5,d6] [c6,eb6] [d6,f6] ~ [bb5,d6] ~", // Bb Cm Dm Bb Cm Dm Bb
  B: "~@10 [c6,eb6] [bb5,d6] [a5,c6] ~ [f5,a5] ~", C: "~@2 [bb5,d6] [c6,eb6] [d6,f6] ~ [bb5,d6] ~@9",
  D: "~@2 [bb5,d6] [c6,eb6] [d6,f6] ~ [bb5,d6] ~@3 [bb5,d6] c6 [d6,f6] ~ [bb5,d6] ~", // Bb Cm Dm Bb Dm Bb
  E: "~@6 [bb5,d6] c6 [d6,f6] ~ [bb5,d6] ~@5", F: "~@3 [bb5,c6] eb6@2 ~@5 [bb5,c6] eb6@2 ~@2, ~@4 d6 ~@7 d6 ~@3",
  G: "~@3 [bb5,c6] d6@2 ~@5 bb5 d6@2 ~@2, ~@12 c6 ~@3", H: "f5@2 g5 ~ g5 ~ g5 ~ g5@4 f5@4", I: "d5@2 eb5 f5",
  J: "g5@8 f5@7 ~", K: "eb5@2 ~ d5 eb5 ~ d5 ~ eb5@4 f5@4", L: "d5@7 ~@9",
  M: "~@3 [bb5,c6] eb6@2 ~@5 [bb5,c6] eb6@3 ~, ~@4 d6 ~@7 d6 ~@3", N: "~@3 [bb5,c6] d6@3 ~@4 bb5 d6@3 ~, ~@12 c6 ~@3",
  O: "~@2 g5 ~ g5 ~ g5 ~ g5@4 f5@4", P: "d5@9 ~ f5 [g5,a5] bb5 ~@3", Q: "~@14 f5 [g5,a5]", R: "bb5 ~@15",
  S: "~@2 [bb5,d6] c6 [d6,f6] ~ [bb5,d6] ~@3 [bb5,d6] [c6,eb6] [d6,f6] ~ [bb5,d6] ~", // Bb Dm Bb Cm Dm Bb
  T: "~@2 [d6,f6] [c6,eb6] [bb5,d6] ~ [c6,eb6] ~ [d6,f6] ~ [bb5,d6] ~@5", // Dm Cm Bb Cm Dm Bb
  U: "~@3 bb5 d6@2 ~@5 bb5 d6@3 ~, ~@4 c6 ~@7 c6 ~@3", V: "g5 f5", W: "d5@5 ~@3", X: "g5@2 a5 ~ a5 ~ a5 ~ a5@4 g5@3 ~",
  Y: "~@3 [bb5,c6] d6@3 ~@4 [bb5,c6] d6@3 ~", Z: "d5@5 ~@5 f6 [g6,a6] bb6 ~@3",
})).s("gm_flute").gain(0.36).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D C E@2 F G C E C H I J K L M N C O P C D C E@2 C Q D E C Q I R S T U V S U@2 S W X Y Z AA AB ~ AC AD AE AF AG
  AH AB U AI C E@2 D C E@2 I ~ S AJ U V S AK U AL AM AE AN AO AP AQ AR AS AT AE AU AO AP AB AR AV ~
>`.pickRestart({
  A: "[bb3,c4,e4]@5 ~@3 [bb3,c4,e4]@5 ~@3", B: "[a3,c4,f4]@9 ~@7",
  C: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // F
  D: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  E: "~@2 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~", // C7
  F: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [c4,f4] ~", // F F5
  G: "~@2 [a3,c4,f4] ~@3 [c4,f4,gb4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~", // F C7
  H: "~@2 [a3,c4,f4] ~@3 [c4,f4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~", // F F5 C7
  I: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~@7", // F
  J: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [gb3,a3,c4,eb4] ~@3 [g3,c4,e4] ~", // C Gbdim C
  K: "~@2 [gb3,a3,d4] ~@3 [gb3,a3,d4] ~@3 [gb3,a3,d4] ~@3 [gb3,a3,d4] ~", // D
  L: "~@2 [f3,g3,b3,d4] ~@3 [f3,g3,b3,d4] ~@3 [f3,g3,b3,d4] ~@3 [f3,g3,b3,d4] ~", // G7
  M: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  N: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // C
  O: "~@2 [g3,b3,f4] ~@3 [g3,b3,f4] ~@3 [g3,b3,f4] ~@3 [g3,b3,f4] ~", P: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@9",
  Q: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~", // F C7
  R: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  S: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb
  T: "~@2 [f3,bb3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // Ebsus2 F7
  U: "~@2 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // F7
  V: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // Bb
  W: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4]@2 ~@2", // Eb
  X: "[g3,eb4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4]@3 ~ [g3,eb4]@2 ~@2", // Cm Dm Cm
  Y: "[f3,d4]@3 ~ [f3,d4]@3 ~@5 [f3,d4]@2 ~@2", // Dm
  Z: "[f3,d4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4]@2 ~@2 [f3,d4]@3 ~", AA: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@9",
  AB: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Eb Bb
  AC: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@7 [f3,bb3,d4] ~", AD: "~@4 [g3,bb3,eb4]@3 ~@5 [g3,bb3,eb4]@2 ~@2",
  AE: "[g3,eb4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4]@3 ~ [g3,eb4]@3 ~", AF: "~@4 [f3,d4]@3 ~@5 [f3,bb3,d4]@3 ~",
  AG: "~@2 [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4]@3 ~ [f3,d4]@3 ~", // Cm Dm
  AH: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [eb3,c4] ~@3 [f3,bb3,d4] ~", // Bb Cm Bb
  AI: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~@7", // Bb
  AJ: "~@2 [f3,a3] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // F F7
  AK: "~@2 [f3,a3] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~ [f3,a3,eb4] ~ [f3,a3,eb4] ~", // F F7
  AL: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [ab3,bb3,d4] ~ [ab3,bb3,d4] ~ [ab3,bb3,d4] ~", // Bb Bb7
  AM: "~@4 [g3,bb3,eb4]@2 ~@6 [g3,bb3,eb4] ~@3", AN: "~@4 [f3,bb3,d4]@2 ~@6 [f3,bb3,d4] ~@3",
  AO: "[f3,d4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4]@3 ~ [f3,d4]@3 ~", // Dm Cm Dm
  AP: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [eb3,a3,c4] ~@3 [f3,bb3,d4] ~", // Bb Adim Bb
  AQ: "~@2 [g3,eb4] ~@3 [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Cm Eb Bb
  AR: "~@2 [eb3,a3,c4] ~@3 [eb3,a3,c4] ~@3 [eb3,a3,c4] ~@3 [eb3,a3,c4] ~", // Adim
  AS: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [ab3,bb3,d4] ~@3 [ab3,bb3,d4] ~", AT: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~",
  AU: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", AV: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4]@2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.3)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@2 A B C D E F G H I J K L ~@8 M B N D O F P Q R S T U ~ V W X Y Z W AA AB AC AD AE AF AG AH AI AB AJ AK AL AM AN AO
  AP AQ ~@9 V AR AS AT AU AR AV AB AW AK AE AX AY AO AI AB AZ AD BA AF BB AO BC BD ~
>`.pickRestart({
  A: "[c4,a4]@7 ~ [d4,bb4]@3 ~ [c4,a4]@3 ~", B: "[a3,f4]@15 ~", C: "[a3,f4]@8 [c4,a4]@3 ~ [bb3,g4]@3 ~",
  D: "[e4,c5]@15 ~", E: "[e4,c5]@4 e5@2 d5@2 [e4,c5]@3 ~ [d4,bb4]@3 ~, ~@4 g4 ~ f4 ~@9",
  F: "[c4,a4] ~ [a3,f4]@7 ~ [a3,f4] ~ f4@2 g4@2, ~@12 a3 ~ bb3 ~", // F Dm
  G: "[c4,a4]@3 ~ [d4,bb4]@3 ~ [bb3,g4]@3 ~ [b3,ab4]@4", H: "[c4,a4] ~@9 a4@2 [d4,bb4] ~ [eb4,b4] ~, ~@10 c4 ~@5",
  I: "[e4,c5]@4 [g4,e5] ~ [f4,d5] ~ [e4,c5]@3 ~ [d4,bb4]@2 ~@2", // C Dm C Gm
  J: "a4@2 [a3,f4]@7 ~ [a3,f4] ~ f4@2 g4@2, c4 ~@11 a3 ~ bb3 ~", // Dm
  K: "[c4,a4]@3 ~ [d4,bb4]@3 ~ [bb3,g4]@5 ~ a4@2, ~@14 c4 ~", L: "[a3,f4]@11 ~@5",
  M: "[c4,a4]@8 [d4,bb4]@3 ~ [c4,a4]@3 ~", N: "f4@8 [c4,a4]@3 ~ [bb3,g4]@3 ~, a3@3 ~@5",
  O: "[e4,c5]@2 e5 d5 [e4,c5]@2 [d4,bb4] ~, ~@4 g4 ~ f4 ~@9", P: "[c4,a4]@3 ~ [d4,bb4]@3 ~ [bb3,g4]@4 [b3,ab4]@4",
  Q: "[c4,a4]@8 ~@2 a4@2 [d4,bb4] ~ [eb4,b4] ~, ~@10 c4 ~@5", // F Gm Abm
  R: "[e4,c5]@4 e5@2 d5@2 [e4,c5]@4 [d4,bb4]@3 ~, ~@4 g4 ~ f4 ~@9", // C Gm
  S: "[c4,a4] ~ [a3,f4]@7 ~ [a3,f4] ~ f4@2 [bb3,g4] ~, ~@12 a3 ~@3", // F Dm Eb
  T: "[c4,a4] ~@3 [d4,bb4]@4 g4@4 [c4,a4]@3 ~, ~@4 bb3 ~@3", U: "[a3,f4]@9 ~@7", V: "[d4,bb4]@7 ~ bb4@8, ~@4 d4@3 ~",
  W: "[f4,d5] ~ [f4,d5] ~ [f4,d5] ~ [eb4,c5]@8 ~@2", X: "[c4,a4]@3 ~ [eb4,c5]@3 ~ [c4,a4]@3 ~ [eb4,c5]@3 ~",
  Y: "[d4,bb4]@15 ~", Z: "[d4,bb4]@7 ~ [d4,bb4]@8", AA: "[c4,a4]@3 ~ [eb4,c5]@2 ~@2 [c4,a4]@3 ~ [eb4,c5]@2 ~@2",
  AB: "[d4,bb4]@9 ~ bb4@2 [eb4,c5] ~ [f4,d5] ~, ~@10 d4 ~@5", AC: "[g4,eb5]@5 ~@3 [g4,eb5]@4 ~@4",
  AD: "eb5@2 [a4,f5] ~ [a4,f5] ~ [a4,f5] ~ [a4,f5]@3 ~ [g4,eb5]@3 ~, g4 ~@15", AE: "[f4,d5]@4 ~@4 [f4,d5]@5 ~@3",
  AF: "d5@2 [g4,eb5] ~ [g4,eb5] ~ [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5]@2 ~@2, f4 ~@15", // Cm Dm
  AG: "[d4,bb4]@8 [eb4,c5]@3 ~ [f4,d5]@3 ~", AH: "[g4,eb5]@7 ~ [f4,d5]@8",
  AI: "[eb4,c5]@2 ~ [d4,b4] [eb4,c5] ~ [d4,b4] ~ [eb4,c5]@4 [f4,d5]@3 ~", AJ: "[g4,eb5]@5 ~@3 [g4,eb5]@5 ~@3",
  AK: "eb5@2 [a4,f5] ~ [a4,f5] ~ [a4,f5] ~ [a4,f5]@3 ~ [g4,eb5]@2 ~@2, g4 ~@15", AL: "[f4,d5]@5 ~@3 [f4,d5]@7 ~",
  AM: "[f4,d5] ~ [g4,eb5] ~ [g4,eb5] ~ [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5]@3 ~", AN: "[d4,bb4]@7 ~ [eb4,c5]@4 [f4,d5]@3 ~",
  AO: "[g4,eb5]@7 ~ [f4,d5]@7 ~", AP: "[eb4,c5]@2 ~ [d4,b4] [eb4,c5] ~ [d4,b4] ~ [eb4,c5]@3 ~ [f4,d5]@3 ~",
  AQ: "[d4,bb4]@5 ~@3", AR: "[f4,d5] ~ [f4,d5] ~ [f4,d5] ~ [eb4,c5]@7 ~@3",
  AS: "[c4,a4]@3 ~ [eb4,c5]@3 ~ [c4,a4]@3 ~ [eb4,c5]@3 ~, bb4 ~@15", AT: "[d4,bb4]@3 ~",
  AU: "[d4,bb4]@6 ~@2 [d4,bb4]@7 ~", AV: "[c4,a4]@3 ~ [eb4,c5]@3 ~ [c4,a4]@3 ~ [eb4,c5]@2 ~@2",
  AW: "[g4,eb5]@4 ~@4 [g4,eb5]@5 ~@3", AX: "[f4,d5] ~ [g4,eb5] ~ [g4,eb5] ~ [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5]@2 ~@2",
  AY: "[d4,bb4]@8 [eb4,c5]@4 [f4,d5]@3 ~, ~@8 bb4 ~@7", AZ: "[g4,eb5] ~ [g4,eb5] ~", BA: "[f4,d5]@5 ~@3 [f4,d5]@5 ~@3",
  BB: "[d4,bb4]@7 ~ [eb4,c5]@3 ~ [f4,d5]@3 ~", // Gm Cm Dm
  BC: "[eb4,c5]@2 ~ [d4,b4] [eb4,c5] ~ [d4,b4] ~ [eb4,c5]@3 ~ [f4,d5]@2 ~@2", BD: "[d4,bb4]@9 ~@3 [bb3,d4]@2 ~@2",
})).s("gm_piano").gain(0.46).pan(0.6)

// chords · trumpet · C Dm7 Gm Eb F Dm
const trumpet = note(`<
  [[e4,c5]@3 ~ [g4,e5]@2 ~ [e4,f4,c5,d5] ~@2 [d4,bb4] ~ [bb3,g4]@2 ~ [c4,a4]]
  [[a3,f4]@9 ~@7]
  ~@91
>`).s("gm_trumpet").gain(0.36).pan(0)

// drums · kick
const kick = s("bd").struct("<A B C@11 D C@7 D C@11 D C@24 D C@7 D C@25 ~>".pickRestart({
  A: "x ~ x!2", B: "x", C: "x!4", D: "x!3 ~",
})).gain(0.51)

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

// drums · hihat
const hihat = s("hh").struct("<~@2 A@11 B A@7 B A@11 B A@57 B ~>".pickRestart({
  A: "x!8", B: "x!5 ~ x ~",
})).gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  A B@2 ~@10 C B ~@7 B ~@11 B ~@8 D ~ D ~@5 D ~ D ~@5 B ~@7 B@2 ~@7 D ~ D ~@5 D ~ D ~@4 C ~
>`.pickRestart({
  A: "x!2", B: "x", C: "~@3 x", D: "~ x ~ x",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 A@11 B A@7 B A@11 B A@24 B A@7 C ~ A@7 D A@7 D A@7 B ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x!2 ~ x ~", C: "~ x ~ x!2 ~@3", D: "~ x ~ x ~ x!3",
})).gain(0.31)

// drums · cowbell
const cowbell = s("cb").struct("<A B C@11 D C@7 D C@11 D C@24 D C@7 D C@25 ~>".pickRestart({
  A: "x ~ x!2", B: "x", C: "x!4", D: "x!3 ~",
})).gain(0.36)

stack(bass, flute, acoustic_guitar_steel, piano, trumpet, kick, snare, hihat, crash, tambourine, cowbell)

More by Last