Strudelify

Chanson D'Amour

The Manhattan Transfer

KeyF majorTempo106 bpm
0:00/0:00
// Chanson D'Amour — The Manhattan Transfer
// 106 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 72 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106/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 · piano · "HONKY TON"
const piano = note(`<
  A B C D E F@2 G H I J K L M@2 N O P Q I E F@2 G H I J K L M R S@2 T U V W X@2 Y Z AA K AB AC AD@2 AE Z AA K E AF AG@2
  AH AI E AJ AK AL AM AN AO@2 AP@2 AO@2 AP AQ ~
>`.pickRestart({
  A: "~@11 [bb1,bb2]", B: "f2@2 ~@2 [f2,f3]@6 [bb1,bb2]@2 [f2,f3]@2 ~@2 [f2,f3]@5 ~ [bb1,bb2]@2, f3 ~@23",
  C: "[f2,f3]@2 ~@2 [f2,f3]@5 ~ [bb1,bb2]@2 [f2,f3] ~@3 [f2,f3]@8", // F Bb F
  D: "[bb1,bb2]@5 [d2,d3] [f2,f3]@3 [d2,d3]@2 [f2,f3]", E: "[c2,c3]@5 [e2,e3] [g2,g3]@3 [e2,e3]@2 g2, ~@22 g3 ~",
  F: "[c2,c3]@5 [eb2,eb3] [g2,g3]@3 [eb2,eb3]@2 [g2,g3]", G: "f2@5 a2 c3@3 a2@2 c3", H: "f2@5 a2 db3@2 f2 a2@2 db3",
  I: "[bb1,bb2]@5 [d2,d3] [f2,f3]@3 [d2,d3]@2 f2, ~@22 f3 ~", J: "d2@5 gb2 a2@2 d2 gb2@2 a2",
  K: "g2@5 b2 d3@2 g2 b2@2 d3", L: "d2@5 ab2 g2@3 g1@3", M: "c2@5 eb2 g2@2 c2 eb2@2 g2",
  N: "[f1,f2]@5 [a1,a2] [c2,c3]@3 [a1,a2]@2 [c2,c3]", // F A C A C
  O: "[f1,f2]@5 [a1,a2] [db2,db3]@2 [f1,f2] [a1,a2]@2 db2, ~@22 db3 ~", P: "[bb1,bb2]@5 d2 f2@3 d2@2 f2",
  Q: "c2@5 g2 [g1,f2]@3 [g1,f2]@3", R: "db2@5 e2 g2@2 db2 e2@2 g2", S: "c2@2 f2 f1",
  T: "bb1@9 ~ d2@2 f2@3 ~ bb1@2 d2@4 f2@2", U: "bb2@3 ~ bb2@2 ab2@6 g2@6 f2@4 ~@2",
  V: "[eb2,eb3]@5 [g2,g3] [bb2,bb3]@3 [g2,g3]@2 [bb2,bb3]", W: "[f2,f3]@5 [a2,a3] [c3,c4]@3 [a2,a3]@2 c3, ~@22 c4 ~",
  X: "[f2,f3]@5 [ab2,ab3] [c3,c4]@3 [ab2,ab3]@2 [c3,c4]", Y: "bb2@5 d3 f3@3 d3@2 f3", Z: "bb2@5 d3 gb3@2 bb2 d3@2 gb3",
  AA: "[eb2,eb3]@5 [g2,g3] [bb2,bb3]@3 [g2,g3]@2 bb2, ~@22 bb3 ~", AB: "c3@5 e3 g3@2 c3 e3@2 g3",
  AC: "g2@5 db3 c3@3 c2@3", AD: "f2@5 ab2 c3@2 f2 ab2@2 c3", AE: "[bb1,bb2]@5 d3 f3@3 d3@2 f3",
  AF: "[d2,d3]@5 [gb2,gb3] [a2,a3]@3 [gb2,gb3]@2 a2, ~@22 a3 ~", AG: "[d2,d3]@5 [f2,f3] [a2,a3]@3 [f2,f3]@2 [a2,a3]",
  AH: "g2@5 b2 d3@3 b2@2 d3", AI: "g2@5 b2 eb3@2 g2 b2@2 eb3", AJ: "e2@5 ab2 b2@2 e2 ab2@2 b2",
  AK: "a2@5 db3 e3@2 a2 db3@2 e3", AL: "e2@5 bb2 a2@3 a1@3", AM: "d2@5 f2 a2@2 d2 f2@2 a2",
  AN: "eb2@5 gb2 a2@2 eb2 gb2@2 a2", AO: "d2@2 g2 g1", AP: "c2@9 ~ e2@2 g2@3 ~@3 e2@4 g2@2", AQ: "c2@9 ~ c2@14",
})).s("gm_piano").gain(0.31).pan(0.4)

// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
  A B C D E@3 F G H I J K L M F N O P D E@3 F G H I J K L Q R@2 S T U V@3 S W X J L Y F Z S W X J AA AB@3 J AC AD AE AF
  AG AH AI AJ@2 L AK AJ@2 L AL ~
>`.pickRestart({
  A: "~@11 bb1", B: "f2@2 ~@2 f2@6 bb1@2 f2@2 ~@2 f2@5 ~ bb1@2", C: "f2@2 ~@2 f2@5 ~ bb1@2 f2@2 ~@2 f2@7 ~",
  D: "bb1@6 f1@5 bb1", E: "c2@6 g1@5 g1", F: "f2 c2", G: "f2@6 f1@5 f1", H: "bb1@6 f1@4 c2 db2", I: "d2 a1", J: "g2 d2",
  K: "d2@2 g2 g1", L: "c2 g2", M: "c2@6 g1@3 c2@2 g2", N: "f2 f1", O: "bb1@6 f2@2 f1@3 d2", P: "c2@5 c2 f2@3 f1@3",
  Q: "db2@6 g2@5 db2", R: "c2@11 ~ f2@12", S: "bb1 f2", T: "bb2@5 f2 bb1@2 ~ bb1@3", U: "eb2@6 bb1@5 eb2",
  V: "f2@6 c2@5 c2", W: "bb1@6 bb2@5 bb1", X: "eb2@6 bb1@4 f2 gb2", Y: "g2@2 c2 e2", Z: "f2@6 c2@3 f2@2 c3",
  AA: "c2@6 g1@5 c2", AB: "d2@6 a1@5 a1", AC: "g2@6 g1@5 g1", AD: "c2@6 g1@4 d2 eb2", AE: "e2 b1", AF: "a2 e2",
  AG: "e2@2 a2 a1", AH: "d2 a2", AI: "eb2@6 a2@5 eb2", AJ: "d2@11 ~ g2@12", AK: "c2@5 c2 g2@6", AL: "c3@5 c2@7",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@3 A B C D E F A G H I J K E F A L A B C D E F A G H I M N O@2 A P Q R S T U V W X Y Z AA AB U V W X AC AD AE AF AG
  AH AC AI AJ AK AL AM AN@2 AC@2 AO AN AC AP ~
>`.pickRestart({
  A: "[bb2,f3,bb3,d4,f4]@3 [bb3,d4,f4]@2 [bb3,d4,f4] [bb2,f3,bb3]@2 [bb2,f3,bb3] [bb3,d4,f4]@2 [bb3,d4,f4], ~ [bb2,f3] [d4,f4] [bb2,f3]", // Bb Bb5 Bb Bb5 Dm Bb5
  B: "[c3,g3,bb3,e4,g4]@3 [bb3,e4,g4]@2 [bb3,e4,g4] [c3,g3,bb3]@2 [c3,g3,bb3] [bb3,e4,g4]@2 [bb3,e4,g4], ~ [c3,g3] [e4,g4] [c3,g3]", // C7 Edim C7 Edim C5 Em C5
  C: "[c3,g3,eb4,g4,c5]@3 [eb4,g4,c5]@2 [eb4,g4,c5] [c3,g3,eb4]@2 [c3,g3,eb4] [eb4,g4,c5]@2 [eb4,g4,c5], ~ [c3,g3] [g4,c5] [c3,g3]", // Cm C5
  D: "[c3,g3,eb4,g4,bb4]@3 [eb4,g4,bb4]@2 [eb4,g4,bb4] [c3,g3,eb4]@2 [c3,g3,eb4] [eb4,g4,bb4]@2 [eb4,g4,bb4], ~ [c3,g3] [g4,bb4] [c3,g3]", // Cm7 Eb Cm Eb C5 Gm C5
  E: "[f3,a3,c4,eb4,a4]@3 [c4,eb4,a4]@2 [c4,eb4,a4] [f3,a3,c4]@2 [f3,a3,c4] [c4,eb4,a4]@2 [c4,eb4,a4], ~ [f3,a3] [eb4,a4] [f3,a3]", // F7 Adim F Adim F Ebdim F
  F: "[f3,a3,db4,f4,a4]@3 [db4,f4,a4]@2 [db4,f4,a4] [f3,a3,db4]@2 [f3,a3,db4] [db4,f4,a4]@2 [db4,f4,a4], ~ [f3,a3] [f4,a4] [f3,a3]", // Faug Dbaug Faug Dbaug F
  G: "[d3,a3,c4,d4,gb4]@3 [c4,d4,gb4]@2 [c4,d4,gb4] [d3,a3,c4]@2 [d3,a3,c4] [c4,d4,gb4]@2 [c4,d4,gb4], ~ [d3,a3] [d4,gb4] [d3,a3]", // D7 D5 D D5
  H: "[g3,b3,d4,f4,g4]@3 [d4,f4,g4]@2 [d4,f4,g4] [g3,b3,d4]@2 [g3,b3,d4] [d4,f4,g4]@2 [d4,f4,g4], ~ [g3,b3] [f4,g4] [g3,b3]", // G7 G G7 G Fsus2 G
  I: "[d3,c4,d4,f4,ab4]@3 [d4,f4,ab4]@2 [d4,f4,ab4] [g3,b3,d4]@2 [g3,b3,d4] [d4,f4,g4]@2 [d4,f4,g4], ~ [d3,c4] [f4,g4] [g3,b3]", // Dm7b5 Ddim G G7 D7 Fsus2 G
  J: "[c3,eb3,g3,c4,eb4]@3 [g3,c4,eb4]@2 [g3,c4,eb4] [c3,eb3,g3]@2 [c3,eb3,g3] [g3,c4,eb4]@2 [g3,c4,eb4], ~ [c3,eb3] [c4,eb4] [c3,eb3]", // Cm
  K: "[c3,bb3,c4,eb4]@3 [bb3,c4,eb4]@2 [bb3,c4,eb4] [c3,g3,bb3]@2 [c3,g3,bb3] [bb3,c4,eb4]@2 [bb3,c4,eb4], g3 ~@2 [c3,g3]@3 [c4,eb4]@3 [c3,g3]@3", // Cm7 C7 Cm7 C5 Cm C5
  L: "[c3,g3,bb3,eb4,g4]@3 [bb3,eb4,g4]@2 [bb3,eb4,g4] [f3,a3,c4]@2 [f3,a3,c4] [c4,eb4,f4]@2 [c4,eb4,f4], ~ [c3,g3] [eb4,f4] [f3,a3]", // Cm7 Eb F F7 C5 Ebsus2 F
  M: "[c3,g3,bb3,c4,eb4]@3 [bb3,c4,eb4]@2 [bb3,c4,eb4] [c3,g3,bb3]@2 [c3,g3,bb3] [bb3,c4,eb4]@2 [bb3,c4,eb4], ~ [c3,g3] [c4,eb4] [c3,g3]", // Cm7 C7 Cm7 C5 Cm C5
  N: "[db3,g3,db4,e4]@3 [bb3,db4,e4]@2 [bb3,db4,e4] [db3,g3,bb3]@2 [db3,g3,bb3] [bb3,db4,e4]@2 [bb3,db4,e4], bb3 ~@2 [db3,g3]@3 [db4,e4]@3 [db3,g3]@3", // Dbdim Bbdim Gdim Bbdim Dbdim Dbm Dbdim
  O: "[c3,bb3,c4,eb4,f4]@3 [c4,eb4,f4]@2 [c4,eb4,f4] [f3,a3,c4]@2 [f3,a3,c4] [c4,eb4,f4]@2 [c4,eb4,f4], ~ [c3,bb3] [eb4,f4] [f3,a3]", // Cm7 F7 F F7 C7 Ebsus2 F
  P: "[bb2,ab3,bb3,d4,f4]@3 [bb3,d4,f4]@2 [bb3,d4,f4] [bb2,ab3,bb3]@2 [bb2,ab3,bb3] [bb3,d4,f4]@2 [bb3,d4,f4], ~ [bb2,ab3] [d4,f4] [bb2,ab3]", // Bb7 Bb Bb7 Bb Bb7 Dm Bb7
  Q: "[eb3,eb4,g4,bb4]@3 [eb4,g4,bb4]@2 [eb4,g4,bb4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb4,g4,bb4]@2 [eb4,g4,bb4], bb3 ~@2 [eb3,bb3]@3 [g4,bb4]@3 [eb3,bb3]@3", // Eb Eb5 Eb Eb5 Gm Eb5
  R: "[f3,c4,eb4,a4,c5]@3 [eb4,a4,c5]@2 [eb4,a4,c5] [f3,c4,eb4]@2 [f3,c4,eb4] [eb4,a4,c5]@2 [eb4,a4,c5], ~ [f3,c4] [a4,c5] [f3,c4]", // F7 Adim F7 Adim F5 Am F5
  S: "[f3,c4,ab4,c5,f5]@3 [ab4,c5,f5]@2 [ab4,c5,f5] [f3,c4,ab4]@2 [f3,c4,ab4] [ab4,c5,f5]@2 [ab4,c5,f5], ~ [f3,c4] [c5,f5] [f3,c4]", // Fm F5
  T: "[f3,c4,ab4,c5,eb5]@3 [ab4,c5,eb5]@2 [ab4,c5,eb5] [f3,c4,ab4]@2 [f3,c4,ab4] [ab4,c5,eb5]@2 [ab4,c5,eb5], ~ [f3,c4] [c5,eb5] [f3,c4]", // Fm7 Ab Fm Ab F5 Cm F5
  U: "[bb3,d4,f4,ab4,d5]@3 [f4,ab4,d5]@2 [f4,ab4,d5] [bb3,d4,f4]@2 [bb3,d4,f4] [f4,ab4,d5]@2 [f4,ab4,d5], ~ [bb3,d4] [ab4,d5] [bb3,d4]", // Bb7 Ddim Bb Ddim Bb Abdim Bb
  V: "[bb3,d4,gb4,bb4,d5]@3 [gb4,bb4,d5]@2 [gb4,bb4,d5] [bb3,d4,gb4]@2 [bb3,d4,gb4] [gb4,bb4,d5]@2 [gb4,bb4,d5], ~ [bb3,d4] [bb4,d5] [bb3,d4]", // Bbaug Gbaug Bbaug Gbaug Bb
  W: "[eb3,bb3,eb4,g4,bb4]@3 [eb4,g4,bb4]@2 [eb4,g4,bb4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb4,g4,bb4]@2 [eb4,g4,bb4], ~ [eb3,bb3] [g4,bb4] [eb3,bb3]", // Eb Eb5 Eb Eb5 Gm Eb5
  X: "[g3,d4,f4,g4,b4]@3 [f4,g4,b4]@2 [f4,g4,b4] [g3,d4,f4]@2 [g3,d4,f4] [f4,g4,b4]@2 [f4,g4,b4], ~ [g3,d4] [g4,b4] [g3,d4]", // G7 G5 G G5
  Y: "[c4,e4,g4,bb4,c5]@3 [g4,bb4,c5]@2 [g4,bb4,c5] [c4,e4,g4]@2 [c4,e4,g4] [g4,bb4,c5]@2 [g4,bb4,c5], ~ [c4,e4] [bb4,c5] [c4,e4]", // C7 C C7 C Bbsus2 C
  Z: "[g3,f4,g4,bb4,db5]@3 [g4,bb4,db5]@2 [g4,bb4,db5] [c4,e4,g4]@2 [c4,e4,g4] [g4,bb4,c5]@2 [g4,bb4,c5], ~ [g3,f4] [bb4,c5] [c4,e4]", // Gm7b5 Gdim C C7 G7 Bbsus2 C
  AA: "[f3,ab3,c4,f4,ab4]@3 [c4,f4,ab4]@2 [c4,f4,ab4] [f3,ab3,c4]@2 [f3,ab3,c4] [c4,f4,ab4]@2 [c4,f4,ab4], ~ [f3,ab3] [f4,ab4] [f3,ab3]", // Fm
  AB: "[f3,eb4,f4,ab4]@3 [eb4,f4,ab4]@2 [eb4,f4,ab4] [f3,c4,eb4]@2 [f3,c4,eb4] [eb4,f4,ab4]@2 [eb4,f4,ab4], c4 ~@2 [f3,c4]@3 [f4,ab4]@3 [f3,c4]@3", // Fm7 F7 Fm7 F5 Fm F5
  AC: "[c3,g3,c4,e4,g4]@3 [c4,e4,g4]@2 [c4,e4,g4] [c3,g3,c4]@2 [c3,g3,c4] [c4,e4,g4]@2 [c4,e4,g4], ~ [c3,g3] [e4,g4] [c3,g3]", // C C5 C C5 Em C5
  AD: "[d3,a3,c4,gb4,a4]@3 [c4,gb4,a4]@2 [c4,gb4,a4] [d3,a3,c4]@2 [d3,a3,c4] [c4,gb4,a4]@2 [c4,gb4,a4], ~ [d3,a3] [gb4,a4] [d3,a3]", // D7 Gbdim D7 Gbdim D5 Gbm D5
  AE: "[d3,a3,f4,a4,d5]@3 [f4,a4,d5]@2 [f4,a4,d5] [d3,a3,f4]@2 [d3,a3,f4] [f4,a4,d5]@2 [f4,a4,d5], ~ [d3,a3] [a4,d5] [d3,a3]", // Dm D5
  AF: "[d3,a3,f4,a4,c5]@3 [f4,a4,c5]@2 [f4,a4,c5] [d3,a3,f4]@2 [d3,a3,f4] [f4,a4,c5]@2 [f4,a4,c5], ~ [d3,a3] [a4,c5] [d3,a3]", // Dm7 F Dm F D5 Am D5
  AG: "[g3,b3,d4,f4,b4]@3 [d4,f4,b4]@2 [d4,f4,b4] [g3,b3,d4]@2 [g3,b3,d4] [d4,f4,b4]@2 [d4,f4,b4], ~ [g3,b3] [f4,b4] [g3,b3]", // G7 Bdim G Bdim G Fdim G
  AH: "[g3,b3,eb4,g4,b4]@3 [eb4,g4,b4]@2 [eb4,g4,b4] [g3,b3,eb4]@2 [g3,b3,eb4] [eb4,g4,b4]@2 [eb4,g4,b4], ~ [g3,b3] [g4,b4] [g3,b3]", // Gaug Ebaug Gaug Ebaug G
  AI: "[e3,b3,d4,e4,ab4]@3 [d4,e4,ab4]@2 [d4,e4,ab4] [e3,b3,d4]@2 [e3,b3,d4] [d4,e4,ab4]@2 [d4,e4,ab4], ~ [e3,b3] [e4,ab4] [e3,b3]", // E7 E5 E E5
  AJ: "[a3,db4,e4,g4,a4]@3 [e4,g4,a4]@2 [e4,g4,a4] [a3,db4,e4]@2 [a3,db4,e4] [e4,g4,a4]@2 [e4,g4,a4], ~ [a3,db4] [g4,a4] [a3,db4]", // A7 A A7 A Gsus2 A
  AK: "[e3,d4,e4,g4,bb4]@3 [e4,g4,bb4]@2 [e4,g4,bb4] [a3,db4,e4]@2 [a3,db4,e4] [e4,g4,a4]@2 [e4,g4,a4], ~ [e3,d4] [g4,a4] [a3,db4]", // Em7b5 Edim A A7 E7 Gsus2 A
  AL: "[d3,a3,c4,d4,f4]@3 [c4,d4,f4]@2 [c4,d4,f4] [d3,a3,c4]@2 [d3,a3,c4] [c4,d4,f4]@2 [c4,d4,f4], ~ [d3,a3] [d4,f4] [d3,a3]", // Dm7 D7 Dm7 D5 Dm D5
  AM: "[eb3,a3,eb4,gb4]@3 [c4,eb4,gb4]@2 [c4,eb4,gb4] [eb3,a3,c4]@2 [eb3,a3,c4] [c4,eb4,gb4]@2 [c4,eb4,gb4], c4 ~@2 [eb3,a3]@3 [eb4,gb4]@3 [eb3,a3]@3", // Ebdim Cdim Adim Cdim Ebdim Ebm Ebdim
  AN: "[d3,c4,d4,f4,g4]@3 [d4,f4,g4]@2 [d4,f4,g4] [g3,b3,d4]@2 [g3,b3,d4] [d4,f4,g4]@2 [d4,f4,g4], ~ [d3,c4] [f4,g4] [g3,b3]", // Dm7 G7 G G7 D7 Fsus2 G
  AO: "[d3,d4,f4,g4]@3 [d4,f4,g4]@2 [d4,f4,g4] [g3,b3,d4]@2 [g3,b3,d4] [d4,f4,g4]@2 [d4,f4,g4], c4 ~@2 [d3,c4]@3 [f4,g4]@3 [g3,b3]@3", // G7 G G7 D7 Fsus2 G
  AP: "[c3,g3,c4,e4,a4]@3 ~@2 [c3,g3,c4,e4,a4]@7", // Am7
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@35 A B C@2 D@3 E F G H@2 I J K@2 L@2 M@2 N@2 O P Q@3 J R S ~@2 R T U V ~
>`.pickRestart({
  A: "[bb3,bb4]", B: "[c4,c5]", C: "[[eb4,eb5]@10 [c4,c5] ~ [c4,c5]@36]/2",
  D: "[~@12 f4@11 gb4@12 ~ [d4,d5]@11 [eb4,g4]@24 ~, bb4, bb3 ~]/3", E: "[b3,b4]@2 [d4,d5] [f4,f5]", F: "[e4,e5]",
  G: "[f4,f5] [e4,e5]", H: "[f4,f5]/2", I: "[f4,f5]", J: "[gb4,gb5]", K: "[[g4,g5]@3 [b4,b5]]/2", L: "[c5,c6]@23 ~",
  M: "[[a4,a5]@47 ~]/2", N: "[[b4,b5]@47 ~]/2", O: "[g4,g5]@23 ~", P: "[ab4,ab5]@23 ~",
  Q: "[[a4,a5]@13 [bb4,bb5]@8 [a4,a5]@2 [f4,f5]@13]/3", R: "[g4,g5]", S: "[a4,a5]@4 [g4,g5]@2 [a4,a5]@4 [g4,g5]@13 ~",
  T: "[a4,c5,a5,c6]@4 [g4,b4,g5,b5]@2 [a4,c5,a5,c6]@4 [g4,b4,g5,b5]@13 ~", U: "[e4,g4,c5,e5,g5,c6]@11 ~",
  V: "[e4,g4,a4,c5,e5,g5,a5,c6] ~@11", // Am7
})).s("gm_string_ensemble_1").gain(0.28)

// other · string ensemble 1 · "STRINGS" · soft notes · Am7
const string_ensemble_1_soft = note("<~@70 [~@3 [e4,g4,a4,c5,e5,g5,c6]@5] ~>").s("gm_string_ensemble_1").gain(0.17)

// other · tenor sax
const tenor_sax = note("<~@34 A B@2 C D E F@4 G H I J K@2 L ~@3 M N O@2 P ~@2 Q R S@2 ~ T@2 ~ U V ~>".pickRestart({
  A: "~@12 ab3 ~ bb3@2 ~ db4 d4@2 eb4@2 f4 ~, ~@8 c4 ~@3",
  B: "[g4@10 ~@6 bb3@2 eb4@2 ~@2 g4@12 ~@5 eb5@2 ~@3 eb5@2 ~@2]/2",
  C: "eb5@3 c5@3 ~ c5 ~ g4 ~@2 g4@2 f4@2 c5@3 ~ g4@2 f4 ~", D: "g4@2 c5 ~ g4@8 ~@12",
  E: "~@10 bb3 ~ d4@3 ~ f4 ~ ab4@3 ~ c5@2",
  F: "[~@2 c5@2 ~ d5@2 c5 d5@6 c5 ~ bb4@2 a4@2 g4 ~ bb4@10 g4@2 f4@2 eb4@4 f4@2 g4@3 ~ g4@11 ~@3 g4@3 ~ g4 ~ g4@2 ~@2 g4@4 ~ c4@4 ~@11 c4 ~@2 e4 f4 ~, ~@46 d4 ~]/4",
  G: "~ e4@2 ~ g4 ~@2 f4@2 g4@2 a4 bb4@3 c5@4 ~ g4@2 bb4 ~, d4@2 ~ f4@2 ~ e4@2 ~@16",
  H: "bb4@9 ab4 bb4@2 ab4@4 g4@4 f4@4", I: "eb5@7 ~@5", J: "~@3 [c5,db5] d5@4 c5@2 bb4 c5 d5@3 c5 d5@4 c5@2 bb4 c5",
  K: "[d5@2 ~ c5 d5@3 ~ c5@2 bb4 d5@2 c5@2 bb4 ~ d5@2 c5@2 bb4 ~ d5@2 ~ g4 ~ g4@14 ~@6]/2",
  L: "d3@2 f3 g3 a3 b3 d4 ~ g4 a4 c5 ~ b4@2 d5@3 a4 b4@3 g4@2 ~, ~@7 f4@2 ~@15",
  M: "~@4 a3@2 ~ d4@2 eb4 e4 eb4 e4@3 ~ a3@2 ~@6, ~@3 c4 ~@8", N: "g3@2 ~@10 b3@5 ~ d4@5 f4",
  O: "[g4@17 ~ eb4@4 e4@14 c4@3 ~ d4@2 e4@3 g4@2 ~]/2", P: "ab4@5 ~@7", Q: "~@17 e4 f4@6", R: "gb4",
  S: "[g4@2 ~@14 b3@2 d4@4 g4@11 ~@15]/2", T: "[~@13 d4@2 c4@2 b3@2 a3@2 ab3@2 g3@17 ~@8, ~@6 c4 ~@17]/2",
  U: "~@6 g3 a3 ~ b3 c4 ~@2 b3@2 ~ d4 ~ b3@2 ~ d4@2 e4, ~@12 a3@2 ~ c4@2 ~@3 c4@2 ~@2", V: "e5@2 ~@7 g5@14 ~",
})).s("gm_tenor_sax").gain(0.45).pan(0.6)

// chords · accordion
const accordion = note("<~@3 A@4 B@8 C@4 D@4 E@5 F@7 G@4 H@8 I@3 J K@4 L@5 M@7 N@4 ~>".pickRestart({
  A: "[[bb3,d4,f4]@12 e4@12 ~@5 c5@19, bb4@29 ~@19, ~ [c4,g4]@3, ~ eb4]/4", // Bb C5
  B: "[c4@20 ~@2 c4@2 db4@24 bb4@23 ~ [c4,gb4,a4]@24 [b3,g4]@24 [c4,ab4]@12 [b3,d4]@12 c4@23 ~ bb3@23 ~, f4@6 ~@2 f4@3 g4@5, a4@2 d4@3 ~ eb4@2]/8", // Gbdim Em Fm Bm
  C: "[[c4,a4]@2 [db4,a4]@2 [bb3,d4]@2 g4 f4, f4@72 [c4,eb4]@23 ~]/4", // F Gbm Bb Cm
  D: "[[bb3,d4]@12 e4@12 ~@5 c5@19, bb4@29 ~@19, f4 ~ [c4,g4]@6, ~ eb4]/4", // Bb C5
  E: "[c4@20 ~@2 c4@2 db4@24 bb4@23 ~ [c4,gb4,a4]@24 [b3,f4,g4]@24, f4@3 ~@2, a4@2 d4@3]/5", // Gbdim G7
  F: "[[c4,ab4]@12 [b3,d4]@12 [c4,eb4]@23 [db4,e4]@23 ~ bb3@12 a3@11 ~ bb3@12 a3@12 bb3@22 a3@2 ab3@25, ~@12 g4@35 g4@35 ~@86, ~@71 f4@96 ~, ~@71 eb4@47 ~ d4@49]/7", // Fm Bm Cm Dbm
  G: "[[eb4,g4,bb4]@12 a4@12 ~@5 f5@19, eb5@29 ~@19, ~ [f4,c5]@3, ~ ab4]/4", // Eb F5
  H: "[f4@20 ~@2 f4@2 gb4@24 eb5@23 ~ [f4,b4,d5]@24 [e4,c5]@24 [f4,db5]@12 [e4,g4]@12 f4@23 ~ eb4@23 ~, bb4@6 ~@2 bb4@3 c5@5, d5@2 g4@3 ~ ab4@2]/8", // Bdim C Db Em
  I: "[f4@20 ~@2 f4@2 gb4@24 eb5@23 ~, bb4, d5@2 ~]/3", J: "[f4,b4,d5]",
  K: "[[c4,e4,g4]@12 gb4@12 ~@5 d5@19, c5@29 ~@19, ~ [d4,a4]@3, ~ f4]/4", // C D5
  L: "[d4@20 ~@2 d4@2 eb4@24 c5@23 ~ [d4,ab4,b4]@24 [db4,g4,a4]@24, g4@3 ~@2, b4@2 e4@3]/5", // Abdim A7
  M: "[[d4,bb4]@12 [db4,e4]@12 [d4,f4]@23 [eb4,gb4]@23 ~ c4@12 b3@11 ~ c4@12 b3@12 [c4,e4]@49, ~@12 a4@35 a4@35 ~@86, ~@71 g4@96 ~, ~@71 f4@47 ~@50]/7", // Gm Dbm Dm Ebm C
  N: "[~@11 b3@11 ~ c4@12 b3@12 [c4,e4]@28 ~@7 [c4,e4]@14]/4", // C
})).s("gm_accordion").gain(0.11).pan(0)

// chords · accordion
const accordion_2 = note(`<
  ~@3 A@3 B C@4 D E@3 F@2 G H A@3 B C@4 D I@2 J K@5 ~@15 L@3 M N@4 O P@2 Q R S@2 T@2 S@2 U@2
>`.pickRestart({
  A: "[f5@20 g5@2 f5@2 e5@24 eb5@17 ~ [bb4,eb5,g5]@5 ~, bb4@65 ~@7]/3", B: "[bb4,eb5,g5]",
  C: "[[c5,eb5]@24 [a4,db5]@24 bb4@10 a4 bb4 [c5,c6]@4 [bb4,bb5]@4 [a4,a5]@2 [g4,g5]@2 [gb4,gb5]@10 [g4,g5]@2 [ab4,ab5]@6 [a4,a5]@6, f5@5 ~@3, ~ d5]/4", // Cm A C Bb A G Gb G …
  D: "[b4,g5,b5]", E: "[[c5,ab5,c6]@12 [b4,b5]@12 g4@22 a4 ~ bb4@24, ~ g5@5, ~ eb5@2]/3", F: "[[a4,eb5] db5, f5]/2",
  G: "[bb4,d5]", H: "eb5@12 [f5,a5]@4 [g5,bb5]@4 [a5,c6]@3 ~, g5@5 ~@7",
  I: "[[c5,ab5,c6]@12 [b4,b5]@12 g4@22 a4 ~, ~ g5@3, ~ eb5]/2", J: "[db5,e5,g5] [bb4,db5,e5] [g4,bb4,db5] [db5,e5]",
  K: "[[bb4,eb5,f5]@5 ~ [bb4,eb5,g5]@3 ~ [a4,f5]@8 [bb4,g5]@3 [a4,f5]@19 ~@2 [c4,f4,a4]@3 ~ [d4,f4,bb4]@26 ~ d4@27 ~@20, ~@9 eb5@8 ~ eb5@23 ~@5 g4@25 ~ ab4@24 ~@24, ~@73 bb4@23 ~@24]/5", // Bbsus4 Eb Dm Eb Dm F Bb
  L: "[g5@20 a5@2 g5@2 gb5@24 f5@17 ~ [c5,f5,a5]@5 ~, c5@65 ~@7]/3", M: "[c5,f5,a5]",
  N: "[[d5,f5]@24 [b4,eb5]@24 c5@10 b4 c5 [d5,d6]@4 [c5,c6]@4 [b4,b5]@2 [a4,a5]@2 [ab4,ab5]@10 [a4,a5]@2 [bb4,bb5]@6 [b4,b5]@6, g5@5 ~@3, ~ e5]/4", // Dm B D C B A Ab A …
  O: "[db5,a5,db6]", P: "[[d5,bb5,d6]@12 [db5,db6]@12 a4@22 b4 ~, ~ a5@3, ~ f5]/2",
  Q: "[eb5,gb5,a5] [c5,eb5,gb5] [a4,c5,eb5] [eb5,gb5]", // Ebdim Cdim Adim Ebm
  R: "[c5,f5,g5]@5 ~ [c5,f5,a5]@3 ~ [b4,g5]@8 [c5,a5]@3 [b4,g5]@3, ~@9 f5@8 ~ f5@6", // Csus4 F Em F Em
  S: "[[c5,a5]@3 ~ b4@2 [c5,a5]@3 [b4,g5]@8 ~ [d4,g4]@3 ~ [e4,g4,a4,c5]@26, f5@6 f5 ~@11 b4@8 ~@22, ~ g5 ~@14]/2", // F Em G5 Am7
  T: "[~ e4@27 ~@2 [c5,f5,a5]@3 ~ [b4,g5]@8 [c5,a5]@3 [b4,g5]@3, a4 ~, ~ c5@23 ~@9 f5@8 ~ f5@6]/2", // F Em F Em
  U: "[~ e4@9 [g4,a4,c5]@15 ~@23, a4@3 ~@7 e4@18 ~@20, ~ c5@2 ~@45]/2", // Am7
})).s("gm_accordion").gain(0.08).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@3 [x!2]!67 [x ~@4 x ~@6] ~>").gain(0.64)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@3 [~@5 x ~@6]!67 ~@2>").gain(0.21)

// drums · snare
const snare = s("sd").struct("<~@18 A ~@15 B ~@31 B ~@3 C ~>".pickRestart({
  A: "~@3 x", B: "~@9 x ~ x", C: "~ x ~@2",
})).gain(0.57)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@18 A ~@15 A ~@31 A ~@3 B ~>".pickRestart({
  A: "~@2 x", B: "~ x ~@4",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A C A B A D ~
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x", D: "x!2 ~@2",
})).gain(0.43)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@3 A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A C A B A C ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x", B: "~@2 x ~@2 x ~@2 x ~@3", C: "~ x ~@4",
})).gain(0.14)

// … 12 more lines

More by The Manhattan Transfer