Strudelify

Demasiado Corazon

Mink DeVille

KeyA minorTempo103 bpm
0:00/0:00
// Demasiado Corazon — Mink DeVille
// 103 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 55, 4/4 at bar 56) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 3 "Brass Sec" brass section (copy of ch 5 "#Trumpet" trumpet)
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · "#A.Piano"
const piano = note(`<
  A B C D E F@8 G@5 H I H A B C D E F@8 G@5 H I H A B C J K@8 ~@3 L@3 M@8 N O@7 P@4 Q@6 R S T U V
>`.pickRestart({
  A: "[a2,a3]@3 [c3,c4]@3 [e3,e4]@2 [d3,d4]@8", B: "[a2,a3,a4]@3 [c3,c4,c5]@3 [e3,e4,e5]@2 [d3,d4,d5]@8",
  C: "[a2,a4,a5]@3 [c3,c5,c6]@3 [e3,e5,e6]@2 [d3,d5,d6]@8", D: "[a2,a5,a6]@3 [c3,c6,c7]@3 [e3,e6,e7]@2 [d3,d6,d7]@8",
  E: "[a2,e4,a4,c5]!3 ~@3 [a2,e4,a4,c5] ~@9", // Am
  F: "[a2@2 ~ [e2,a4]@2 e4@2 ~ g3 ~@2 [d2,g4]@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@3 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 [a2,e4], a3 ~ e4@3 f2 ~ g2@3 d4@3 g2 ~ f2@3 ~@11 d4 ~ a2@3 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@2, ~@35 a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@14]/8", // A5 G5 E G#m A A5 E G#m …
  G: "[a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 [c4,e4,a4] ~@2 [c3,c4,e4,a4] ~@2 [d3,d4,f4,a4]@10, ~@2 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@18, ~@3 a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@2 ~@15]/5", // E G#m A A5 E G#m A A5 …
  H: "[a2,c4,e4,a4] ~@2 [g#2,b3,e4,g#4] ~@2 [a2,c4,e4,a4]@10", // Am E Am
  I: "[a2,c4,e4,a4] ~@2 [c3,c4,e4,a4] ~@2 [d3,d4,f4,a4]@10", // Am Dm
  J: "[a2,a5,a6]@3 [c3,c6,c7]@3 [e3,e6,e7]@2 [d6,d7]@4 [e6,f6,g6,a6,b6,c7] d6 [f4,g4,a4] [b3,c4,d4,e4], ~ d3, ~@13 [e5,f5,g5,a5,b5,c6]@3, ~@7 [b4,c5,d5]", // A C E D Cmaj7 F Cmaj7 Bm
  K: "[a2@2 ~ [e2,a4]@2 e4@2 ~ g3 ~@2 [d2,g4]@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@3 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,e4] [a2,c4,e4,a4] ~@9, a3 ~ e4@3 f2 ~ g2@3 d4@3 g2 ~ f2@3 ~@11 d4 ~ a2@3 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@20, ~@35 a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@14]/8", // A5 G5 E G#m A A5 E G#m …
  L: "[~@6 [a5,c6,a6]@2 [a5,c6,a6] [g5,b5,g6]@2 [g5,b5,g6]@7 ~ [g5,b5,g6]!2 [a5,c6,a6]@2 [b5,d6,b6] [b5,d6,b6]@3 [a5,c6,a6] [a5,c6,a6]@6 ~ [e5,e6] [c6,e6,c7] [b5,d6,b6]@2 [a5,c6,a6] [a5,c6,a6]@3 [g5,b5,g6] [g5,b5,g6]@4]/3", // Am G Am Bm Am E C Bm …
  M: "[~@2 [g5,b5,g6]@2 [g5,b5,g6] [a5,c6,a6]@2 [b5,d6,b6] [b5,d6,b6]@3 [a5,c6,a6] [a5,c6,a6]@9 ~ [a5,c6,a6]@2 [a5,c6,a6] [g5,b5,g6]@2 [g5,b5,g6]@7 ~ [g5,b5,g6]!2 [a5,c6,a6]@2 [b5,d6,b6] [b5,d6,b6]@3 [a5,c6,a6] [a5,c6,a6]@6 ~ [e5,e6] [c6,e6,c7] [b5,d6,b6]@2 [a5,c6,a6] [a5,c6,a6]@3 [g5,b5,g6] [g5,b5,g6]@4]/4", // G Am Bm Am G Am Bm Am …
  N: "~@2 [g5,b5,g6]@2 [g5,b5,g6] [a5,c6,a6]@2 [b5,d6,b6] [a2,c6,e6,c7] ~@2 [a2,c6,e6,c7] ~@3 [a2,c6,e6,c7]", // G Am Bm Am
  O: "[[a2,c6,e6,c7] ~ [a2,c6,e6,c7] ~@5 a2@2 ~ [e2,a4]@2 e4@2 ~ g3 ~@2 [d2,g4]@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@3 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 g2, ~@8 a3 ~ e4@3 f2 ~ g2@3 d4@3 g2 ~ f2@3 ~@11 d4 ~ a2@3 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~@2, ~@43 a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@4]/7", // Am A5 G5 E G#m A A5 E …
  P: "[g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 ~ g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 a3 ~@2 e2@2 e4@2 g2, ~@2 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@6 d4@3 g2 ~ f2@3 ~@13 a2@3 ~ a4 ~@4, ~@3 g4 ~@17 d4 ~@4 e4@3 f2 ~ g2@4 g4 ~@17 d4 ~@4 e4@3 f2 ~@2]/4", // E G#m A A5 E G#m A A5
  Q: "[g3 ~@2 d2@2 e4@2 ~ f3 ~ c4 [e2,e4,g#4]@2 [g#2,b3] g#4 [a2,a4]@2 c4 e4 [e2,a4]@2 g2@2 e4 [c4,e4,a4] ~@2 [c3,c4,e4,a4] ~@2 [d3,d4,f4,a4]@10 [a2,c4,e4,a4] ~@2 [g#2,b3,e4,g#4] ~@2 [a2,c4,e4,a4]@10 [a2,c4,e4,a4] ~@2 [c3,c4,e4,a4] ~@2 [d3,d4,f4,a4]@10 [a2,c4,e4,a4] ~@2 [g#2,b3,e4,g#4] ~@2 [a2,c4,e4,a4]@10 [a2,a3]@3 [c3,c4]@3 [e3,e4]@2, ~@2 d4@3 g2 ~ f2@3 ~@13 a2@2 ~@71, ~@3 g4 ~@17 d4 ~@74]/6", // E G#m A A5 Am Dm Am E …
  R: "[d3,d4]@8 [a2,a3,a4]@3 [c3,c4,c5]@3 [e3,e4,e5]@2", S: "[d3,d4,d5]@8 [a2,a4,a5]@3 [c3,c5,c6]@3 [e3,e5,e6]@2",
  T: "[d3,d5,d6]@8 [a2,a5,a6]@3 [c3,c6,c7]@3 [e3,e6,e7]@2", // D A C E
  U: "[d3,d6,d7]@8 [a2,e4,a4,c5] ~@2 [e4,a4,c5] a2 ~@2 [a2,e4,a4,c5]", V: "[a2,e4,a4,c5]!3 ~@13",
})).s("gm_piano").gain(0.24)

// chords · piano · "#A.Piano" · soft notes
const piano_soft = note(`<
  ~@5 A B A C A C A C A C A C ~@9 A B A C A C A C A C A C ~@8 A B A C A C A C ~@15 D E F E D E D E D E D E ~@10
>`.pickRestart({
  A: "~ c4@2 ~@6 b3 ~@6", B: "~ a3@2 ~@6 c4 ~@6", C: "~ a3@2 ~@13", D: "~@9 c4@2 ~@5", E: "~ b3 ~@7 a3@2 ~@5",
  F: "~ c4 ~@7 c4@2 ~@5",
})).s("gm_piano").gain(0.12)

// bass · electric bass finger · "#Jazz Bas"
const bass = note(`<
  A B C D E F G F G F G F G F G F G H I H J A B C D E F G F G F G F G F G F G H I H J A B C D K G F G F L M N ~@7 O P Q
  P Q P Q R S T U T V W V W V W V W X@5 Y Z AA AB AC
>`.pickRestart({
  A: "a1@3 c2@3 e2@2 d2@7 ~", B: "a1@3 c2@3 e2@2 d2@6 [d#2,e2] g2", C: "a2@3 c3@3 e3@2 d3@6 [d#3,e3] g3, g#2 ~@15",
  D: "a3@3 c4@3 e4@2 d4@4 d3@2 ~ a#2, g#3 ~@15", E: "a2!2 a2@2 g2 c2 [a1,b1] ~@9", F: "a1@3 e2@3 a1 ~ g1@3 d2@3 g1 ~",
  G: "f1@3 e1@3 g#1 ~ a1@3 e1@3 g1 ~", H: "a1@2 ~ c2@2 ~ d2@10", I: "a1@2 ~ g#1@2 ~ a1@9 ~",
  J: "a1@2 ~ g#1@2 ~ a1@8 ~@2", K: "a1@3 e2@3 a1 ~ g1@3 d2@3 g1 ~, a2 ~@15", L: "f1@3 e1@3 g#1 ~ a1@3 e1@3 g1@2",
  M: "a1@3 e2@3 a1 ~ g1@3 d2@3 g1@2", N: "f1@3 e1@3 a1 ~@9", O: "~@8 g1@3 g2@5", P: "g1@3 g2@4 ~ a1@3 a2@5",
  Q: "a1@3 a2@4 ~ g1@3 g2@5", R: "g1@3 g2@4 ~ a1 ~@2 a1 ~@3 a1", S: "a1 ~ a1 ~@5 a1@3 e2@3 a1 ~",
  T: "g1@3 d2@3 g1 ~ f1@3 b1 e1@2 g#1 ~", U: "a1@3 e2@3 e1 g1 a1@3 e2@3 a1 ~", V: "a1@3 e2@3 g1 ~ a1@3 e2@3 a1 ~",
  W: "g1@3 d2@3 g1 ~ f1@3 e1@3 g#1 ~",
  X: "[a1@3 e2@3 g1 ~ a1@2 ~ c2@2 ~ d2@10 a1@2 ~ g#1@2 ~ a1@9 ~ a1@2 ~ c2@2 ~ d2@10 a1@2 ~ g#1@2 ~ a1@8 ~@2 a1@3 c2@3 e2@2]/5",
  Y: "d2@7 ~ a1@3 c2@3 e2@2", Z: "d2@6 [d#2,e2] g2 a2@3 c3@3 e3@2, ~@8 g#2 ~@7",
  AA: "d3@6 [d#3,e3] g3 a3@3 c4@3 e4@2, ~@8 g#3 ~@7", AB: "d4@4 d3@2 ~ a#2 a2 ~@2 a2 ~@3 a1", AC: "a1!3 ~@13",
})).s("gm_electric_bass_finger").gain(0.4)

// bass · electric bass finger · "#Jazz Bas" · soft notes
const bass_soft = note("<~ A B C D ~@17 A B C D ~@17 A B C ~@41 E F G ~>".pickRestart({
  A: "~@15 [f2,f#2]", B: "~@15 [f3,f#3]", C: "~@14 c#3 [b2,c3]", D: "~@5 [d2,e2,f2] ~@10", E: "~@7 [f2,f#2] ~@8",
  F: "~@7 [f3,f#3] ~@8", G: "~@6 c#3 [b2,c3] ~@8",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · trumpet · "#Trumpet"
const trumpet = note(`<
  ~@2 A B C D E F G ~@3 H I J I K L M L N ~@2 A O P D E F G ~@4 Q R Q R L M L N ~@2 S T U V W X Y Z AA AB ~@14 AC AD AE
  AF AG AH ~@3 AI AJ AI AJ AK AL AM AN@2 ~ AO AP AQ AR
>`.pickRestart({
  A: "a3@3 c4@3 e4@2 d4@6 ~@2", B: "a4@3 c5@3 e5@2 d5@7 ~",
  C: "[c5,e5,a5]!2 [c5,a5] ~@3 [c5,e5,a5] ~@4 [e4,e5] [d4,d5] ~ [c4,c5] ~", // Am F Am E D C
  D: "~ c5!2 a4 ~ c5 ~ b4 ~ g4 ~ b4 ~ d5 ~ c5", E: "~ a4 c5 b4 ~ g#4 b4 a4 ~ b4 c5 b4 c5@2 ~@2",
  F: "~ [c5,a5]!2 [a4,e5] ~ [c5,a5] ~ [b4,g5] ~ [g4,d5] ~ [b4,g5] ~ [d5,b5] ~ [c5,a5]", // F A5 F Em G5 Em G F
  G: "~ [a4,f5] [c5,a5] [b4,g#5] ~ [g#4,e5] [a4,d5] [a4,c5] ~ [b4,g#5] [c5,a5] [b4,g#5] [c5,a5]@2 [e4,f4,c5,d5] ~", // Dm F E C#m D5 Am E F …
  H: "~@14 e4 ~", I: "e4 a4 ~@11 d4 g4 ~", J: "c4 f4 ~ e4 ~@10 e4 ~", K: "c4 f4 ~ g#4 ~@12",
  L: "[c4,a4] ~@2 [c4,a4] ~@2 [a3,f4]@3 [c5,e5] [d5,f5]!3 ~ b4 ~", // F Dm C Dm
  M: "[a4,c5] ~@2 [g#4,b4] ~@2 [c4,a4]@3 ~ e5 d5 c5 ~ c5 b4", // Am G#m F
  N: "[a4,e5] ~@2 [b4,g#5] ~@2 [c5,a5]@4 ~ [d4,e4,f4,g4,b4,c5,d5,e5] [c4,a4] ~@3", // A5 E F Cmaj7 F
  O: "[a4,a5]@3 [c5,c6]@3 [e5,e6]@2 [d5,d6]@7 ~, ~@3 b5 ~@12", // A C E D
  P: "[c5,a5]!3 ~@3 [c5,a5] ~@4 [e4,e5] [d4,d5] ~ [c4,c5] ~", Q: "[e4,e5] [a4,a5] ~@11 [d4,d5] [g4,g5] [d4,d5]",
  R: "[c4,c5] [f4,f5] ~ [e4,e5] ~@12", S: "[a3,a4]@3 [c4,c5]@3 [e4,e5]@2 [d4,d5]@6 ~@2",
  T: "[a4,a5]@3 [c5,c6]@3 d6 d#6 [d5,d6]@5 [a4,b4,a5,b5] [e4,f4,g4,e5,f5,g5] [b3,c4,d4,b4,c5,d5], ~@3 [a#5,b5] ~@2 [e5,e6]@2 ~@8", // A C D Asus2 Em Bm Bmaj7 E
  U: "~@5 a5 ~ b5 c6 b5 ~ c6 b5 c6 ~ b5", V: "c6 b5 ~ a5 ~ g#5 ~ a5 ~ e5 d5 c5 e5 ~@3",
  W: "~ [g#4,a4] b4 c5 d5 e5 f5 g5 g#5 ~ b5 a5@3 ~@2", X: "~@3 g5 f#5 f5 e5 d5 c5 d5 ~ e5 ~@3 e5",
  Y: "a5 b5 ~ c6 ~ b5 ~ d6@3 ~ c6 b5 a5 ~ b5", Z: "~ b5 a5 g5 ~ g5 f5 e5 ~ d#5 ~ e5 ~@4",
  AA: "e5 [e5,f5] d#5 f5 e5 ~@3 e5 f5 [d#5,e5] f5 e5 ~@2 d5", AB: "[a4,f5] ~@2 [g#4,e5] ~@2 [c5,a5] ~@9",
  AC: "~@8 [c5,e5,a5] ~@2 [c5,a5] ~@3 [c5,e5,a5]", AD: "[c5,e5,a5] ~ [c5,a5] ~@6 c5!2 a4 ~ c5 ~ b4",
  AE: "~ g4 ~ b4 ~ d5 ~ c5 ~ a4 c5 b4 ~ g#4 b4 a4", AF: "~ b4 c5 b4 c5@2 ~@3 [c5,a5]!2 [a4,e5] ~ [c5,a5] ~ [b4,g5]",
  AG: "~ [g4,d5] ~ [b4,g5] ~ [d5,b5] ~ [c5,a5] ~ [a4,f5] [c5,a5] [b4,g#5] ~ [g#4,e5] [a4,d5] [a4,c5]", // G5 Em G F Dm F E C#m …
  AH: "~ [b4,g#5] [c5,a5] [b4,g#5] [c5,a5]@2 [e4,f4,c5,d5] ~@9", AI: "~@8 [e4,e5] [a4,a5] ~@6",
  AJ: "~@5 [d4,d5] [g4,g5] [d4,d5] [c4,c5] [f4,f5] ~ [e4,e5] ~@4", AK: "~@8 [c4,a4] ~@2 [c4,a4] ~@2 [a3,f4]@2",
  AL: "~ [c5,e5] [d5,f5]!3 ~ b4 ~ [a4,c5] ~@2 [g#4,b4] ~@2 [c4,a4]@2", // C Dm Am G#m F
  AM: "~@2 e5 d5 c5 ~ c5 b4 [c4,a4] ~@2 [c4,a4] ~@2 [a3,f4]@2", // F Dm
  AN: "[~ [c5,e5] [d5,f5]!3 ~ b4 ~ [a4,e5] ~@2 [b4,g#5] ~@2 [c5,a5]@4 ~ [d4,e4,f4,g4,b4,c5,d5,e5] [c4,a4] ~@11]/2", // C Dm A5 E F Cmaj7 F
  AO: "~@8 a3@3 c4@3 e4@2", AP: "d4@6 ~@2 [a4,a5]@3 [c5,c6]@3 d6 d#6, ~@11 [a#5,b5] ~@2 [e5,e6]@2",
  AQ: "[d5,d6]@7 ~ [c5,a5] ~@2 [c5,a5] ~@3 [c5,a5]", AR: "[c5,a5]!3 ~@13",
})).s("gm_trumpet").gain(0.31).pan(0.3)

// chords · trumpet · "#Trumpet" · soft notes
const trumpet_soft = note(`<
  ~@4 A ~@3 B ~@11 C ~@3 D ~@4 B ~@11 C ~@3 E ~ F ~ G ~@18 H A ~@3 I ~@11 J ~@2 K ~@2
>`.pickRestart({
  A: "~@2 e5 ~@13", B: "~@13 [a4,b4,f5,g5] [g4,e5] [d4,b4]", C: "~@10 [a4,b4,f5,g5] ~ [a3,b3,f4,g4] ~@3",
  D: "~@3 a#5 ~ c#6 d6 d#6 ~@8", E: "~@5 c#6 ~@7 [c5,c6] ~ [a3,a4]", F: "~@9 d#5 ~@6", G: "~@5 f#5 ~@10",
  H: "~@11 e5 ~@4", I: "~@5 [a4,b4,f5,g5] [g4,e5] [d4,b4] ~@8", J: "~@2 [a4,b4,f5,g5] ~ [a3,b3,f4,g4] ~@11",
  K: "~@13 c#6 ~@2",
})).s("gm_trumpet").gain(0.18).pan(0.3)

// chords · epiano1 · "#60's EP"
const epiano1 = note(`<
  A@4 B C D C D C D C D C D C D E F E F A@4 B C D C D C D C D C D C D E F E F A@4 G H I J K L M N ~@15 O P Q P Q P Q P Q
  P Q P R@5 S@3 T U
>`.pickRestart({
  A: "a3@3 c4@3 e4@2 d4@8", B: "[e4,a4,c5]!3 ~@3 [e4,a4,c5] ~@9", C: "~@2 e4 [a4,c5]@3 ~@4 d4 [g4,b4]@3 ~@2",
  D: "~@2 f4 [e4,g#4]@3 ~@4 e4 [a4,c5]@3 ~@2", E: "[c4,e4,a4] ~@2 [c4,e4,a4] ~@2 [d4,f4,a4]@9 ~",
  F: "[c4,e4,a4] ~@2 [b3,e4,g#4] ~@2 [c4,e4,a4]@8 ~@2", G: "~ [c5,a5] ~ [c5,a5]!3 ~ [c5,a5]!2 [b4,g5] ~ [b4,g5]@3 ~@2",
  H: "[a4,f5]!2 ~ [a4,f5] [g#4,e5] ~ [g#4,e5] ~ [a4,c5,e5]@6 ~@2", // Dm C#m Am
  I: "~ c6 [e5,c6]!4 ~ [e5,c6]!2 [d5,b5] ~ [d5,b5]@4 [c5,a5]", // C G F
  J: "~ [c5,a5] ~ [c5,a5] [b4,g#5]@3 [c5,a5]@6 ~@2 [e5,c6]", // F E F C
  K: "~ [e5,c6]@2 b5 [f5,d6] [e5,c6] ~ [f5,d6] ~ [f5,d6] ~ [e5,c6] [d5,b5] ~ [c5,a5] e5", // C Dm C Dm C G F
  L: "[a5,c6]!2 ~ e5 [g#5,b5]!2 ~ c5 [e5,a5]!2 ~ [e5,a5]@4 ~", // Am G#m A5
  M: "~ [a4,a5] [b4,b5] ~ [c5,c6] [d5,d6] ~ [e5,e6] [f5,f6] [e5,e6] ~ [d5,d6]@2 ~@3", // A B C D E F E D
  N: "[a4,c5,f5] ~@2 [g#4,b4,e5] ~@2 [c5,e5,a5] ~@9", O: "~@10 e4 [a4,c5]@3 ~@2",
  P: "~@2 d4 [g4,b4]@3 ~@4 f4 [e4,g#4]@3 ~@2", Q: "~@2 e4 [a4,c5]@3 ~@4 e4 [a4,c5]@3 ~@2",
  R: "[~@2 e4 [a4,c5]@3 ~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~@2 [d4,f4,a4]@9 ~ [c4,e4,a4] ~@2 [b3,e4,g#4] ~@2 [c4,e4,a4]@8 ~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~@2 [d4,f4,a4]@9 ~ [c4,e4,a4] ~@2 [b3,e4,g#4] ~@2 [c4,e4,a4]@8 ~@2 a3@3 c4@3 e4@2]/5", // Am Dm Am E Am Dm Am E …
  S: "d4@8 a3@3 c4@3 e4@2", T: "d4@8 [e4,a4,c5] ~@2 [e4,a4,c5] ~@3 [e4,a4,c5]", U: "[e4,a4,c5]!3 ~@13",
})).s("gm_epiano1").gain(0.19).pan(0.3)

// chords · epiano1 · "#60's EP" · soft notes
const epiano1_soft = note(`<
  ~@5 A B A B A B A B A B A B ~@9 A B A B A B A B A B A B ~@10 C ~@20 D E B E B E B E B E B E F ~@9
>`.pickRestart({
  A: "~ c4 ~@7 b3 ~@6", B: "~ c4 ~@7 c4 ~@6", C: "~ e5 ~@14", D: "~@9 c4 ~@6", E: "~ b3 ~@7 c4 ~@6", F: "~ c4 ~@14",
})).s("gm_epiano1").gain(0.13).pan(0.3)

// chords · electric guitar clean · "#Clean Gt"
const electric_guitar_clean = note("<~@61 A B C B C B C D ~@22>".pickRestart({
  A: "~@11 b3@5, ~ d3", B: "~@3 b3@5 ~@3 c4@5, d3@7 ~ e3@8", C: "~@3 c4@5 ~@3 b3@5, e3@7 ~ d3@8",
  D: "~@3 b3@5 ~@8, d3@7 ~@9",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.4)

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

// drums · snare
const snare = s("sd").struct("<~@4 A ~@20 A ~@42 B C ~@19 B D>".pickRestart({
  A: "x!3 ~@3 x ~@4 x!2 ~ x ~", B: "~@8 x ~@2 x ~@3 x", C: "x!2 ~@6", D: "x!3 ~@13",
})).gain(0.25)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@2 C D A B A B A B A B A B A B E F E F@4 G H A F A F A B A B A B A B E F E F@4 G A B A B A B A I B J B J B J B K
  L@6 M N B J B J B J B J B J B O P Q P Q P R P S ~
>`.pickRestart({
  A: "x ~ x ~ x ~ x!3 ~@3 x ~ x!2", B: "x ~@3 x ~ x!3 ~@3 x ~ x!2", C: "x ~@3 x ~ x!3 ~@3 x ~@3", D: "x ~ x ~ x!4",
  E: "x!2 ~@2 x ~ x!3 ~@2 x!2 ~ x!2", F: "x ~@3 x ~ x!3 ~@2 x!2 ~ x!2", G: "x ~@3 x ~ x!3 ~@2 x ~@4", H: "x ~@3 x!4",
  I: "x!2 ~@2 x ~ x!3 ~ x ~ x ~ x!2", J: "x ~@3 x ~ x!3 ~ x ~ x ~ x!2", K: "x ~@3 x ~ x!2 ~@4 x ~@2 x",
  L: "~@4 x!2 ~ x ~@4 x ~@2 x", M: "~@4 x!2 ~@2 x ~@7", N: "~@4 x ~ x ~ x ~ x ~ x ~ x!2",
  O: "x ~@3 x ~ x!4 ~@2 x ~ x!2", P: "x ~@2 x!2 ~ x!3 ~@3 x ~ x!2", Q: "x ~@2 x!2 ~ x!4 ~@2 x ~ x!2",
  R: "x ~@2 x!2 ~ x!3 ~ x ~ x ~ x!2", S: "x ~@2 x ~@4 x ~@7",
})).gain(0.25)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B@3 ~ A B A B A B A B A B A B C B C B@4 D ~ A B A B A B A B A B A B C B C B@5 A B A B A B A E B F B F B F B G H@6 F
  ~ B F B F B F B F B F B I B I B I B F B J ~
>`.pickRestart({
  A: "~@9 x!2 ~@5", B: "~ x!2 ~@6 x!2 ~@5", C: "~@2 x ~@6 x!2 ~@5", D: "~ x!2 ~@6 x!2 ~ x ~@3", E: "~ x ~@6",
  F: "~ x!2 ~@13", G: "~ x!2 ~@6 x!2 ~@2 x!2 ~", H: "~ x!2 ~@3 x ~@2 x!2 ~@2 x!2 ~", I: "~ x!2 ~@7 x ~@5",
  J: "~ x!2 ~ x ~@11",
})).gain(0.1)

// drums · open hat
const open_hat = s("oh").struct("<A@3 B ~ A@12 C@7 D ~ A E A E A@8 C@7 F A@22 G H A@12 H@7 I ~>".pickRestart({
  A: "~@3 x ~@7 x ~@4", B: "~@3 x ~@7 x ~ x!2 ~", C: "~@3 x ~@12", D: "~@3 x ~@9 x!2 ~", E: "~@3 x ~@9 x ~@2",
  F: "~@3 x ~@8 x ~@3", G: "~@3 x ~@2 x ~@9", H: "~@11 x ~@4", I: "~@5 x!2 ~@9",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<A@3 B ~ A@15 C D@3 E ~ A@31 F G@3 H I@6 J K F@19 L ~>".pickRestart({
  A: "~@7 x ~@3 x ~@3 x", B: "~@7 x ~@3 x ~@4", C: "~@7 x ~@2 x ~@4 x", D: "~@3 x ~@3 x ~@2 x ~@4 x",
  E: "~@3 x ~@3 x ~@2 x ~@5", F: "~@3 x ~@3 x ~@7 x", G: "~@3 x ~@3 x ~@3 x ~@3 x", H: "~@3 x ~@3 x!2 ~@2 x!2 ~@2 x",
  I: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", J: "x ~@2 x!2 ~@2 x ~@8", K: "~@15 x", L: "~@3 x ~@12",
})).gain(0.25)

// drums · cowbell
const cowbell = s("cb").struct(`<
  A@3 B ~ A@3 B C@8 A B A B A B A@2 D A B A B C@8 B@4 A E A F C@7 A G@2 H I G@3 J K@6 D L G@3 M G@3 N G@4 A@4 O@3 P ~
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~ x!2", C: "x ~@3 x ~@3 x ~@3 x ~@2 x", D: "~@3 x ~@4",
  E: "x ~@3 x ~@3 x ~ x ~ x!3 ~", F: "x ~@3 x ~@3 x!8", G: "x ~@3 x ~@2 x!2 ~@3 x ~@3",
// … 119 more lines