Strudelify

Steven's Last Night in Town

Ben Folds Five

KeyA majorTempo224 bpm
0:00/0:00
// Steven's Last Night in Town — Ben Folds Five
// 224 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 186 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(224/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 · alto sax
const alto_sax = note(`<
  A B C D E F G@2 H B C D E F G@2 I J@2 K@2 L@2 M@2 N O P@2 Q@2 R@4 ~@2 S ~ T ~ U ~ V ~ W X Y Z AA AB B C D E F G@2 I
  AC@2 AD@2 AE@2 AF AG AH@2 AI@2 AJ@4 AK@2 ~@2 S ~ T ~ U ~ V ~ W X Y Z AA AL AM AN ~@2 AM AN ~@8 AO@2 AP@2 AQ@2 AP@2
  AQ@2 AR ~@3 AS AT AU AV AW ~@3 AX AY@2 AZ@2 BA@2 BB AX BC@2 BD@2 BE@2 BF@2 AK@2 ~@2 S ~ T ~ U ~ V ~ W X Y Z BG@2 BH BI
  B C D E F G@2 H B C D E F G@2 BJ BK BL ~ BM
>`.pickRestart({
  A: "c5 c#5 ~ d5 d#5 e5 ~ f5 f#5 g5 ~ g#5 a5 a#5 ~ b5", B: "[f#5,c6] [f#5,c#6] [c#5,g#5] [f#5,a5]",
  C: "[c#5,f5] [c5,f#5] [a4,c#5] [f4,c5]", D: "~ b4 c#5 d5, c#5 ~", E: "~@8 e5@7 c5, f#5@3 ~",
  F: "c#5@3 c5 c#5@3 c5 [c#5,d5]@3 f#5 e5@3 c5", // Dmaj7
  G: "[c#5@3 c5 [b4,c#5]@3 c5 c#5@3 g#5 d5@3 ~@5 b4@4 c#5@4 d5@4, ~@15 f#5@17]/2", // Bsus2
  H: "f#5@8 g5 g#5 ~ a5 a#5 b5 ~ c6, ~ e5", I: "f#5@2 [e5,a5] [c#5,g#5]",
  J: "[[c#5,f#5] [a4,c#5] [c#5,f#5] [e5,g#5]@2 [a4,c#5]@2 ~]/2", // F#5 A F#5 E A
  K: "[[g4,a4] [g4,b4] [g4,c#5] [g4,e5]@2 ~ [a4,d5] [g4,c#5]]/2", // Gsus2 G Gdim C D5 Gdim
  L: "[[a4,d5]@4 ~@4 [a4,c#5]@4 [a4,d5]@3 [c#5,e5]@5 [a#4,c#5]@4 ~@3 [a#4,c#5]@5]/2", // D5 A D5 C#m A#m
  M: "[[b4,d5]@4 [d5,e5]@4 [f#4,b4]@7 [d4,b4]@5 ~@8 [e5,g#5]@4]/2", N: "[c#5,f#5]@7 [c#5,f#5]@5 [a4,c#5]@4",
  O: "[c#5,g#5]@3 [a4,c#5]@4 [c#5,a5]@5 [a4,c#5]@4", P: "[~ [g4,a4] [g4,b4] [g4,c#5]@2 [g4,e5]@2 ~]/2",
  Q: "[[a4,d5]@4 [f#4,a4]@4 [f#4,b4]@4 [c#5,e5]@7 [a#4,c#5]@5 [a#4,c#5]@4 [a#4,c#5]@4]/2", // D5 F#m B5 C#m A#m
  R: "[[b4,d5] [b4,e5] [b4,c#5] [b4,d5]@2 [a4,c#5] [b4,d5] b4 a4@8, ~@7 e5@9]/4", S: "[f#5,a5]@3 [e5,a5]",
  T: "[e5,g#5]@3 [e5,a5]", U: "[d5,f#5]@3 [e5,f#5]", V: "[c#5,f5]@3 [c#5,f#5]",
  W: "[d5,f#5]@4 [d5,f#5]@3 [d5,f5] [d5,f#5]@3 [d5,a5] [d5,f#5]@3 [d5,f5]", // D Dm D D5 D Dm
  X: "[c#5,e5]@3 [c#5,g#5] [c#5,e5]@3 [a4,d#5] [c#5,e5]@3 [c#5,a5] [c#5,e5]@3 [c#5,d#5]", // C#m C#5 C#m Adim C#m F#m C#m C#sus2
  Y: "[b4,d5]@3 [b4,a5] [b4,d5]@3 [f#4,b4] [b4,d5]@3 [b4,a5] [b4,d5]@3 [a4,c5]", // Bm B7 Bm B5 Bm B7 Bm Am
  Z: "[a4,d5]@3 [a4,c5] [a4,c#5]@3 [a4,c5] [a4,c#5]@3 [c#5,e5] [a4,c#5]@3 ~", AA: "[e4,g#4] [g#4,b4]!2 [b4,d5]",
  AB: "[b4,e5]@8 g5 g#5 ~ a5 a#5 b5 ~ c6", // E5
  AC: "[[c#5,f#5]@4 [a4,c#5]@4 [c#5,f#5]@4 [e5,g#5]@8 ~@7 [f4,c#5] [g#4,c#5]@4]/2", // F#5 A F#5 E C# C#5
  AD: "[[g4,a4] [g4,b4] [g4,c#5] [g4,e5]@2 [g#4,c#5] ~ [g4,c#5]]/2", // Gsus2 G Gdim C C#5 Gdim
  AE: "[[a4,c#5]@4 [f#4,a4]@4 [a4,d5]@4 [c#5,e5]@7 [a4,c#5] a#4@8 [a#4,c#5]@4]/2", // A F#m D5 C#m A A#m
  AF: "[b4,e5]@7 d5 f#4@4 [d4,b4]@4, ~@7 c#5@5 ~@4", AG: "e4 ~ [e5,a5] [f5,g#5]",
  AH: "[[c#5,f#5]@4 [a4,c#5]@4 [c#5,f#5]@4 [c#5,g#5]@12 ~@3 [f#4,c#5] [g#4,a4]@4]/2", // F#5 A F#5 C#5 F#5 Amaj7
  AI: "[[g4,a4] [g4,b4] [g4,c#5] [g4,f#5]@2 [e4,d5] [e4,d5]@2]/2", // Gsus2 G Gdim Gmaj7 E7
  AJ: "[[a4,d5]@4 ~@7 [f#4,d5] [f#4,d5]@3 a4 c#5@4 [a4,d5]@4 [a4,c#5]@4 ~@3 a4 b4@3 [b4,e5] [b4,e5]@4 [b4,e5]@4 [b4,c#5]@3 a4 d5@7 [a4,c#5] [b4,c#5]@4 [b4,d5]@4, ~@15 e5@5 ~@11 c#5@4 ~@12 b4@8 ~@9]/4", // D5 D D5 A E5 Bsus2 A Bsus2 …
  AK: "a4/2", AL: "[b4,e5] ~", AM: "c#5 a5 g#5 a5", AN: "f#5 g#5 ~ f#5 f5@4 f#5@4 g#5@4", AO: "[d5,f5]",
  AP: "[~ g#5@3, ~ c#5@7]/2", AQ: "[~ a5@3, ~ c#5@7]/2", AR: "[f#5,a5] ~@3", AS: "~@3 [d5,f#5]@5 [c#5,e5]@4 [b4,d5]@4",
  AT: "[c#5,e5]@7 [d5,f#5] ~@8", AU: "~@3 [d5,f5]@5 [c#5,e5]@4 [b4,d5]@4", AV: "[c#5,e5]@7 [d5,f5] ~@8",
  AW: "[f#5,a5] [e5,a5] [d5,a5] [c#5,a5]", AX: "~@2 a4 g#4", AY: "[f#4 c#4 f#4 g#4@2 c#4@2 ~]/2",
  AZ: "[a4@4 b4@4 c#5@4 e5@3 e5@9 ~@3 c#5@5]/2", BA: "[d5@4 a4@4 d5@4 e5@12 d5@3 d5@4 c#5]/2", BB: "~ d5 e5 c#5",
  BC: "[[c#5,f#5] [a4,c#5] [c#5,f#5] [c#5,g#5]@3 ~@2]/2", // F#5 A F#5 C#5
  BD: "[~ [g4,a4] [g4,b4] [g4,f#5]@2 [e4,d5] [e4,c#5] [e4,e5]]/2", // Gsus2 G Gmaj7 E7 C#m E
  BE: "[[a4,d5]@4 ~@7 [f#4,d5] [f#4,d5]@3 a4 c#5@4 [a4,d5]@4 [a4,c#5]@4 [a4,c#5]@4, ~@15 e5@5 ~@12]/2", // D5 D D5 A
  BF: "[[b4,d5] [b4,e5] [b4,c#5] a4 d5 ~ [b4,c#5] [b4,d5], ~@3 b4@2 ~@3]/2", // Bm E5 Bsus2 Bm
  BG: "[e5@24 a#5 b5 ~ c6 c#6 d6 ~ d#6, b4]/2", BH: "[b5,e6] ~@3", BI: "~@8 g5 g#5 ~ a5 a#5 b5 ~ c6", BJ: "f#5 e5",
  BK: "b4@3 a#4 b4@3 d5 c#5@3 [c#5,d5] [c#5,f5]@3 [c#5,e5]", // Dmaj7 C# C#m
  BL: "[c#5,f5]@3 [c#5,g#5] [c#5,g5]@3 [c#5,g#5] [c#5,b5]@3 [c#5,a#5] [c#5,b5]@3 [c#5,c#6]", // C# C#5 C#dim C#5 C#7 F# C#7 C#
  BM: "~ [g#4,c#5] [c#5,f#5] ~", // C#5 F#5
})).s("gm_alto_sax").gain(0.52)

// chords · tenor sax · "Whatever and Ever Amen"
const tenor_sax = note(`<
  ~ A@2 B C D E@2 F A@2 B C D E@2 G H@2 I J K@2 L@2 M N O@2 P@2 Q@2 R@2 ~@2 S ~ T ~ U ~ V ~ W X Y Z AA@2 A@2 B C D E@2 G
  AB@2 I AC AD@2 AE@2 AF@2 AG@2 AH AI AJ AK R@2 ~@2 S ~ T ~ U ~ V ~ W X Y Z AA@2 AL AM ~@2 AL AM ~@2 AN AO AP AQ ~ AR AS
  AT AU@2 AV@2 AU@2 AV@2 AW ~@3 AX AY AZ BA BB ~@12 BC@2 BD@2 AH BE BF BG R@2 ~@2 S ~ T ~ U ~ V ~ W X Y Z BH@2 BI ~ A@2
  B C D E@2 F A@2 B C BJ BK@2 F ~ BL ~ BM
>`.pickRestart({
  A: "[a3,c#4]", B: "[g#3,b3]", C: "[b3,c#4]@8 b3@7 c4, ~@2 c#4 ~", D: "c#4@3 c4 [a3,c#4]@3 c4 [b3,c#4]@3 f#4 c#4@3 c4",
  E: "[c#4@3 c4 [g#3,c#4]@3 c4 [a3,c#4]@3 g#4 b3@3 ~@5 b3@4 c#4@4 d4@4, ~@15 f#4@17]/2", F: "f#4 e4",
  G: "f#4@2 [e3,a3] [g#3,c#4]", H: "[[f#3,a3] [e3,f#3] [f#3,a3] [f3,c#4]@2 [c#3,f3]@2 ~]/2",
  I: "[e3,b3] [d3,e3]!2 [b3,d4]", J: "[e3,c#4] ~ [d3,a3] [e3,a3]",
  K: "[[f#3,c#4]@4 ~@4 [d3,f#3]@4 [d3,f#3]@3 [f#3,a3]@5 [c#3,f#3]@4 ~@3 [e3,f#3]@5]/2", // F#5 D F#m F#5 Esus2
  L: "[[f#3,a3]@4 [a3,b3]@4 [d3,a3]@7 [d3,a3]@5 ~@8 [e3,b3]@4]/2", M: "[f#3,a3]@7 [f#3,a3]@5 [c#3,f#3]@4",
  N: "[f3,a3]@3 [c#3,f3]@4 [f3,a3]@5 [c#3,f3]@4", O: "[~ [d3,e3]!2 [e3,c#4]@2 [a3,c#4]@2 ~]/2",
  P: "[[c#3,f#3]@4 [d3,c#4]@4 [d3,a3]@4 [f#3,a3]@7 [e3,f#3]@5 [e3,f#3]@4 [e3,f#3]@4]/2", // F#5 Dmaj7 D5 F#m Esus2
  Q: "[[f#3,a3]!3 f#3 e3 [e3,b3] [e3,g#3]!2, ~@3 a3@2 ~@3]/2", R: "[f#3 f3, c#4]/2", S: "[a3,d4]@3 [a3,c#4]",
  T: "[a3,b3]@3 [a3,c#4]", U: "[f#3,a3]@3 [a#3,c#4]", V: "[f3,g#3]@3 [f#3,a3]",
  W: "[a3,f#4]@3 [a3,f4] [a3,f#4]@3 [a3,f4] [a3,f#4]@3 [a3,a4] [a3,f#4]@4", // D Dm D Dm D A D
  X: "[a3,e4]@3 [a3,d#4] [a3,e4]@3 [e3,d#4] [a3,e4]@3 [a3,a4] [a3,e4]@4", // A5 Adim A5 Emaj7 A5 A A5
  Y: "[f#3,d4]@3 [f#3,c#4] [f#3,d4]@3 [d3,c#4] [f#3,d4]@3 [f#3,a4] [f#3,d4]@4", // D F#5 D Dmaj7 D F#m D
  Z: "[e3,c#4]@3 [e3,c4] [e3,c#4]@3 [e3,c4] [e3,c#4]@3 [a3,a4] [e3,c#4]@4", AA: "[[g#3,b3]@3 ~]/2",
  AB: "[[f#3,a3]@4 [e3,f#3]@4 [f#3,a3]@4 [f3,c#4]@8 ~@7 [f3,a3] [f3,a3]@4]/2", AC: "[e3,c#4] [e3,a3] ~ [e3,a3]",
  AD: "[[f#3,c#4]@4 [c#3,d3]@4 [d3,f#3]@4 [f#3,a3]@7 [c#3,f#3] [e3,f#3]@8 [e3,f#3]@4]/2", // F#5 Dmaj7 D F#m F#5 Esus2
  AE: "[[f#3,a3]@7 b3 d3@4 d3@4 b2@4 ~@4 [b3,e4]@4 [b3,f4]@4, ~@7 a3@5 a3@8 ~@12]/2", // F#m E5 Bdim
  AF: "[[f#3,a3]@4 [c#3,f#3]@4 [f#3,a3]@4 f#3@4 f3@8 ~@3 c#4 [c#3,f3]@4, ~@3 a3@3 ~@2]/2", // F#m F#5 F#m C#
  AG: "[[d3,e3]!3 [e3,c#4]@2 [a3,c#4] [a3,c#4]@2]/2", AH: "[c#3,f#3]@4 ~@7 [f#3,c#4] [f#3,a3]@3 [d3,f#3]",
  AI: "[f#3,a3]@4 [c#3,f#3]@4 [c#3,f#3]@4 ~@3 [c#3,f#3]", // F#m F#5
  AJ: "[f#3,a3]@3 [f#3,a3] [f#3,a3]@4 [f#3,a3]@4 [f#3,a3]@3 [d3,f#3]", AK: "[e3,a3]@7 [e3,b3] [e3,g#3]@4 [e3,g#3]@4",
  AL: "c#3 a3 g#3 a3, f3 c#4", AM: "f#3 g#3 ~ f#3 f3@4 f#3@4 g#3@4, a3 ~", AN: "~@4 a#3@4 b3@3 e4 c#4@4",
  AO: "d4 f4 f#4 g#4", AP: "g#4 a4 f#4 g#4", AQ: "f#4@3 ~", AR: "~@3 e4", AS: "e4 f4 ~ e4 d4@4 d4 e4 ~ d4 c#4@4, b3",
  AT: "[b3,c#4] b3 a3 g#3", AU: "[g#3,f4]", AV: "[a3,f#4]", AW: "[a3,d4] ~@3",
  AX: "~@3 [f#3,b3]@5 [f#3,b3]@4 [d3,f#3]@4", AY: "[f#3,b3]@7 [f#3,b3] ~@8", AZ: "~@3 [e3,g#3]@5 [e3,g#3]@4 [e3,g#3]@4",
  BA: "[e3,g#3]@7 [e3,g#3] ~@8", BB: "[f#3,d4] [a3,c#4] [a3,b3] a3",
  BC: "[[f#3,a3] [c#3,f#3] [f#3,a3] f#3 f3@2 ~@2, ~@3 a3@3 ~@2]/2", BD: "[~ [d3,e3]!2 [e3,c#4]@2 [a3,c#4]!3]/2",
  BE: "[f#3,a3] [c#3,f#3]!3", BF: "[f#3,a3]!3 [d3,f#3]", BG: "[e3,a3] ~ [e3,g#3]!2", BH: "[e3,g#3]/2",
  BI: "[e4,g#4] ~@3", BJ: "c#4@3 c4 [a3,c#4]@3 c4 [b3,c#4]@3 ~ c#4@3 c4, ~@11 f#4@4 ~",
  BK: "[c#4@3 c4 [g#3,c#4]@3 c4 [a3,c#4]@3 ~ b3@3 ~@5 b3@4 c#4@4 d4@4, ~@11 g#4@4 f#4@17]/2", // C#5 A
  BL: "a3@3 a3 a3@3 a3 [f3,a3]@3 [f3,a3] [f3,a3]@3 [f3,a3]", BM: "~ [c#3,f3] [f#3,a#3] ~",
})).s("gm_tenor_sax").gain(0.52)

// bass · baritone sax
const bass = note(`<
  ~ A B C D A B C E A B C D A B C F A B C G H A I C A B C G H A I C A B C G J ~ K ~ L ~ M ~ H N I G O P A B C D A B C F
  A B C G H A I Q A B C R H A I C A B C S J ~ K ~ L ~ M ~ T U V W O P X Y Z AA X Y Z AA ~@6 B@2 AB AC AD AE AB AC AD AE
  AF ~@3 AG AH AI AJ AK ~@4 A B C F AL A I AM A B C R H A I C A B C G J ~ K ~ L ~ M ~ T U V W AN@2 AO ~ A B C D A B C E
  A B C D A B C E AP@2 AQ AR
>`.pickRestart({
  A: "f#2", B: "f2", C: "e2", D: "a1", E: "a2@2 e2 f2", F: "a2@3 ~", G: "a2", H: "d2", I: "b2", J: "a2@3 a2",
  K: "e2@3 a2", L: "b2@3 f#2", M: "c#2@3 f#2", N: "c#2", O: "g#2", P: "e2 ~", Q: "e2@3 f2", R: "a2!2", S: "f#2 c#2",
  T: "d2!4", U: "c#2!4", V: "g#2!4", W: "a2!4", X: "f2 c#3", Y: "a2 ~", Z: "b2 a2", AA: "g#2 f#2", AB: "c#2 a2 g#2 a2",
  AC: "f#2 f2 f#2 g#2", AD: "f#2 c#2 a2 g#2", AE: "f#2 g#2 a2 g#2", AF: "b2 ~@3", AG: "~@3 b2@5 b2@4 b2@4",
  AH: "b2@7 b2 ~@8", AI: "~@3 e2@5 e2@4 e2@4", AJ: "e2@7 e2 ~@8", AK: "d2 a2 b1 a2", AL: "d3", AM: "e2@3 ~", AN: "e2/2",
  AO: "e2 ~@3", AP: "f2/2", AQ: "f2 g#2 b2 d3", AR: "c#3!2 f#2 ~",
})).s("gm_baritone_sax").gain(0.4)

// chords · trombone · "seq. Nick D'Errico"
const trombone = note(`<
  ~ A B C D A B C E A B C D A B C F ~@7 G H I J K L M N O A B C D P ~ Q ~ R ~ S ~ T@2 U V W@2 A B C D A B C F X Y J Z AA
  AB AC AD H I J K L M N O A B C AE P ~ Q ~ R ~ S ~ T@2 U V W@2 ~@2 AF@2 ~@2 AF@2 ~@2 AG AH AI@2 AJ AK ~ AL ~ AM ~ AL ~
  AM AN ~@3 AO AP@2 AQ AR ~@12 H I J K L M N O A B C D P ~ Q ~ R ~ S ~ T@2 U V AS@2 AT ~ A B C D A B C E A B C D A B C E
  AU@2 AV AW
>`.pickRestart({
  A: "~ [a3,c#4] [b3,d4] [c#4,e4], f#3", B: "~ [g#3,b3] [a3,c#4] [b3,d4], f3", C: "~ [g3,b3] [a3,c#4] [b3,d4], e3",
  D: "[g3,b3,c#4]!2, a2", E: "[a2,g3,b3,c#4]@2 e3 f3, ~ [g3,b3,c#4]", F: "[g3,b3,c#4]@2 [g3,b3,c#4] ~, a2@3 ~",
  G: "~@3 g#3", H: "[f#3,a3,c#4,e4]", I: "[f3,a3,b3,d4]", J: "[e3,g3,b3,d4]", K: "[f#3,g3,b3,c#4] [e3,g3,b3,c#4]",
  L: "[d3,f#3,a3,c#4]", M: "[d3,d4] [c#3,c#4], [f#3,a#3]", N: "[a3,c#4,e4] d4 c#4 [e3,b3,e4], b2",
  O: "[a3,b3,e4] g#3, e3", P: "[a2,d3,f#3,a3]@3 [a2,c#3,e3,a3]", Q: "[a2,e3,g#3]@3 [a2,c#3,e3,a3]",
  R: "[b2,d3,f#3,a3]@3 [e3,f#3,a#3]", S: "[c#3,f3,g#3]@3 [c#3,f#3]",
  T: "[~@3 d3 ~@3 [a2,c#3], [f#3,a3]!2 [e3,a3]!2, ~ [a2,d3]@2 a2@2 [a2,c#3]@2 ~]/2", // A F#m A5 D5 A
  U: "[b2,f#3] ~@2 [b2,d3], [a3,d4]!2, ~ [b2,d3]@2 ~", V: "[a2,e3] ~@2 [a2,e3], [a3,c#4]!2, ~ [a2,e3]@2 ~",
  W: "[[g#2,e3]@2 e3 ~, [g#3,b3]@3 ~]/2", X: "[c#3,f#3,a3,c#4]", Y: "[b2,f3,a3,b3]", Z: "[c#3,e3,a3,c#4]",
  AA: "[f#3,a3,c#4,d4]", AB: "[e3,f#3,a3,c#4]", AC: "[f#3,a3,b3,d4]", AD: "[b2,e3,a3]@2 e3 f3, ~ [b2,g#3]",
  AE: "[a3,c#4,e4]!2, a2", AF: "[~ [f#2,f#3]@2 [f#2,f#3]@2 [f#2,f#3]@2 [f#2,f#3]]/2", AG: "f3 f#3 a3 f3",
  AH: "d3 c#3 b2 a2", AI: "b2/2", AJ: "[e3,f3] f3 ~ e3 d3@4 d3 e3 ~ d3 c#3@4, b2, d3 ~@3",
  AK: "c#4 b3 a3 g#3, [d3,f3], g#3@3 ~", AL: "[c#3,c#4]", AM: "[f#2,f#3]", AN: "[a2,d3,f#3,a3] ~@3",
  AO: "~@3 [b2,d3,b3,d4]@5 [b2,c#3,b3,c#4]@4 [b2,f#3,b3]@4", // Bm Bsus2 B5
  AP: "[[b2,c#3,b3,c#4]@7 [b2,d3,b3,d4] ~@3 e3 e2@7 [e2,g#3,b3,d4]@5 [e2,g#3,c#4,e4]@4 [e2,g#3,b3,d4]@4]/2", // Bsus2 Bm E7 C#m E7
  AQ: "[e2,g#3,c#4,e4]@7 [e2,g#3,d4,f4] ~@8", AR: "[d3,f#3,a3] [c#3,e3,a3] [b2,d3,a3] [a2,c#3,a3]",
  AS: "[e3,g#3,b3,e4]/2", AT: "[e3,g#3,b3,e4] ~@3", AU: "[c#3,f3,a3,c#4]/2",
  AV: "[a2,d3,f3,d4]@4 [a2,c#3,f3,c#4]@3 [a2,d3,f3,d4] [a2,c#3,f3,b3]@3 [a2,c#3,f3,c#4] [a2,c#3,f3,a3]@3 [a2,c#3,f3,b3]", // Dm Aaug Dm Aaug
  AW: "[c#3,c#4] [g#2,c#3,f3,c#4] [a#2,c#3,f#3,c#4] ~", // C# F#
})).s("gm_trombone").gain(0.64)

// chords · trumpet
const trumpet = note(`<
  ~ A B C D E F@2 G A B C D E F@2 G ~@16 H I J K L M N M O P Q M R@2 S@2 T U V@2 ~ W E F@2 G ~@7 X Y Z AA AB AC AD AE AF
  H I J AG L M N M O P Q M R@2 S@2 T AH@3 AI AJ AK@2 AI AJ ~@3 AL AM AN AO AP AQ AR AS AT AQ AR AS AT AU AV ~@2 AW AX AY
  AZ BA ~@12 Y Z AA BB AC AD AE AF H I J K L M N M O P Q M R@2 S@2 BC@2 BD BE BF@2 ~ W E F@2 G A B C D E F@2 G ~@3 BG
>`.pickRestart({
  A: "~ [c#4,f#4,a4,c#5] [d4,f#4,b4,d5] [e4,f#4,c#5,e5]", B: "~ [b3,f4,g#4,b4] [c#4,f4,a4,c#5] [d4,f4,b4,d5]",
  C: "~ [b3,e4,g4,b4] [c#4,e4,a4,c#5] [d4,e4,b4,d5]", D: "[a4,b4,c#5,f#5]@8 [a4,c#5]@7 c5, ~@2 e5 ~",
  E: "c#5@3 c5 [c#4,f#4,a4,c#5]@3 c5 [d4,f#4,b4,c#5]@3 f#5 [e4,f#4,c#5]@3 c5", // F#m Bm F#7
  F: "[c#5@3 c5 [b3,f4,g#4,c#5]@3 c5 [c#4,f4,a4,c#5]@3 g#5 [d4,f4,b4]@3 ~@5 [b3,e4,g4]@4 [c#4,e4,a4]@4 [d4,e4,b4]@4, ~@15 f#5@17]/2", // C#7 C#aug Bdim Em A E7
  G: "[b4,c#5,f#5]@2 [a4,c#5,e5] ~", H: "[f#4,a4,c#5,e5]", I: "[f4,a4,c#5,f5]", J: "[e4,g#4,d5,f#5]",
  K: "f#4@2 ~ a4, [c#5,e5,a5]@3 ~, ~ e4", L: "[d4,f#4,a4,f#5] [d4,f#4,a4,e5] [d4,f#4,a4,d5] [c#4,e4,a4,e5]",
  M: "~@3 a4", N: "[e4,a4,b4]!2 [e4,g#4,a4,b4] [c#4,e4,a4]",
  O: "[f#4,a4,b4,d5]@4 [d4,f#4,b4,c#5]@4 [b3,d4,a4,b4]@4 [e4,f#4,a#4,c#5]@3 [e4,f#4,a#4,c#5]", P: "~@12 b4@3 a4",
  Q: "[c#4,f4,g#4,b4] [c#4,f4,g#4,a4] [b3,c#4,f4,g#4] [c#4,f#4,a4]", // C#7 C# C#7 F#m
  R: "[[f#4,a4,d5,f#5] [d4,f#4,a4,e5] [d4,f#4,a4,d5] [d4,f#4] [c#4,e4] [c#4,e4,a4]@2 [a3,c#4,e4,a4], ~@3 [a4,e5]@2 ~@3]/2", // D C#m A A5
  S: "[[d4,a4,b4,d5]@4 [d4,f#4,a4,c#5]@4 [d4,f#4,b4]@4 [d4,f#4,a4]@4 [c#4,e4,a4]@4 [b3,c#4,e4,b4]@3 [a3,c#4,e4,a4] ~@4 [c#4,e4,a4,b4]@4, ~@3 c#5@2 ~@3]/2", // Bm7 Dmaj7 Bm D A C#m7 A
  T: "[e4,g#4,b4] [b3,e4,g#4]@2 ~", U: "[b3,e4,g#4]@7 [b3,e4,a4]@5 [e4,g#4,b4]@4",
  V: "[[a3,c#4,f#4,b4]@3 f#4 f4@2 ~@2, ~@3 [a3,c#4,a4]@3 ~@2]/2", W: "~@15 c5", X: "~@3 [f4,f5]", Y: "[f#4,a4,c#5]",
  Z: "[f4,a4,b4]", AA: "[e4,g4,b4,d5]", AB: "[e4,g4,a4,c#5]", AC: "[d4,f#4,a4,c#5]",
  AD: "[c#4,f#4,a4,d5] [c#4,f#4,a4,c#5]", AE: "[d4,f#4,b4,c#5]", AF: "[b3,e4,a4] [b3,e4,g#4], b4",
  AG: "[e4,a4,c#5,a5]@3 ~", AH: "[[b3,e4,g#4]@7 [b3,e4,a4]@5 e4@4 [b3,f4]@12 [c#4,f4,g#4]@20, ~@3 [g#4,b4]@4 ~@5]/3",
  AI: "[f#4,f#5] [c#4,c#5]", AJ: "[b3,b4] [a3,a4]", AK: "[[b3,f4]@3 [c#4,f4,g#4]@5]/2", AL: "~@3 e5",
  AM: "e5 f5 ~ e5 d5@4 d5 e5 ~ d5 c#5@4", AN: "c#5 d5 ~ c#5 b4@4 b4@4 e5@4",
  AO: "[e5,f5] f5 ~ e5 d5@4 d5 e5 ~ d5 c#5@4, b4, c#5@3 ~", AP: "b4!2 a4 g#4, [c#5,g#5]", AQ: "~@15 [g#4,d5,f5,g#5]",
  AR: "~@3 [g#4,d5,f5,g#5] ~@3 [g#4,d5,f5,g#5] ~@3 [g#4,d5,f5,g#5] ~@4", AS: "~@15 [f#4,c#5,f#5,a5]",
  AT: "~@3 [f#4,c#5,f#5,a5] ~@3 [f#4,c#5,f#5,a5] ~@3 [f#4,c#5,f#5,a5] ~@4", AU: "[b4,d5,f#5,a5] ~@3",
  AV: "~@11 c#5 ~@3 c#5", AW: "~@3 [f#4,b4,d5,f#5]@5 [f#4,b4,c#5,e5]@4 [d4,f#4,b4,d5]@4",
  AX: "[f#4,b4,c#5,e5]@7 [f#4,b4,d5,f#5] ~@8", AY: "~@3 [e4,g#4,d5,f5]@5 [e4,g#4,c#5,e5]@4 [e4,g#4,b4,d5]@4",
  AZ: "[e4,g#4,c#5,e5]@7 [e4,g#4,d5,f5] ~@8", BA: "[d4,d5,f#5] [c#4,c#5,e5,a5] [d4,b4,d5,a5] [c#4,a4,c#5,a5]",
  BB: "[e4,g4,a4,c#5]!2", BC: "[~ [b3,e4,g#4]@7]/2", BD: "[b3,e4,b4] ~@3", BE: "f#5@7 f#5@5 c#5@4",
  BF: "[f#5@7 [f#5,g#5] ~@8 f4@16, [a4,c#5], f#4 ~, ~ a5@3]/2", BG: "~ [c#4,f4,g#4,c#5] [f#4,a#4,c#5,f#5] ~",
})).s("gm_trumpet").gain(0.59)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@117 A B C@2 ~@65>".pickRestart({
  A: "~@8 b4@3 a#4 b4@3 c#5", B: "d5@3 c#5 d5@3 f5 f#5@3 f5 f#5@3 g#5",
  C: "[g#5@3 a5 f#5@3 g#5 f#5@3 c#5 ~@3 c#5@17]/2",
})).s("gm_electric_guitar_jazz").gain(0.57)

// bass · electric bass finger
const bass_2 = note(`<
  ~ A B C D A B C E A B C D A B C F A B C D G A H I A B C D G A H C A B C F D ~ D ~ J ~ K ~ G L H D M N A B C E A B C F
  O P Q R S O T U O P Q V W X Y I A B C Z D ~ D ~ J ~ K AA G L H AB AC AD P AE AF AG P AE AF AG AH AI O AJ AK AL AM AN
  AO AP AQ AR AO AP AQ AR AS AT AU AV AW AX@2 AV AY ~@12 A B C AZ G A H BA A B C Z D ~ D ~ J ~ K AA G L H AB BB@2 BC ~ A
  B C D A B C BD A B C D A B C BE BF@2 BG BH
>`.pickRestart({
  A: "f#2!4", B: "f2!4", C: "e2!4", D: "a1!4", E: "a1!2 e2 f2", F: "a1!3 ~", G: "d2!4", H: "b1!4", I: "e2 d#2 e2 f2",
  J: "b1!3 f#1", K: "c#2!3 f#2", L: "c#2!4", M: "g#1", N: "e1", O: "f#2 c#2", P: "f2 c#2", Q: "e2 b1", R: "a1 e2",
  S: "d2 a1", T: "b1 f#2", U: "e2@3 f2", V: "a1@2 e2 d#2", W: "d2!2 a1!2", X: "f#1!2 c#2 c2", Y: "b1!2 f#2!2",
  Z: "a2!2 e2!2", AA: "~@11 b1 c#2@4", AB: "a2!4", AC: "g#2", AD: "e2", AE: "f2 g#2", AF: "b2!2 a2!2",
  AG: "g#2!2 f#2!2", AH: "b1 f#1", AI: "b1 e2", AJ: "f#2 a2", AK: "b2 f#2", AL: "b2 d3", AM: "e3 d3!2 b2",
  AN: "a2 g#2 f#2 e2", AO: "f2 c#2 f2 f#2", AP: "g#2 c#2 g#2 g2", AQ: "f#2 c#2 a2 g#2", AR: "f#2 g#2 a2 g#2",
  AS: "b2 f#2 b2 c#3", AT: "b2 f3 f#3 g#3", AU: "f#3 c#3 d3 c#3", AV: "b2 a2 g#2 f#2", AW: "~@3 d3@5 c#3@4 b2@4",
  AX: "[a2@4 b2@3 b2 ~@3 e2 e1@7 e3@5 d3@4 c#3@4]/2", AY: "d2 c#2 b1 a1", AZ: "a1!2 c#2!2", BA: "e2!2 f2!2", BB: "e2/2",
  BC: "e2 ~@3", BD: "a1@4 a1@4 e2@3 c#2 f2@4", BE: "a1@4 a1@4 a1@3 d1 g#1@4", BF: "f1/2", BG: "f#2 g#2 b2 d3",
  BH: "c#3!2 f#2 ~",
})).s("gm_electric_bass_finger").gain(0.69)

// drums · kick
const kick = s("bd").struct("<~ A@48 B ~ A@7 C D@20 A@12 B ~ A@28 E F E F A@37 B ~ B ~ A@16 ~@3 G>".pickRestart({
// … 49 more lines

More by Ben Folds Five