Strudelify
KeyC majorTempo108 bpm
0:00/0:00
// Alfie — Burt Bacharach
// 108 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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.

// bass · electric bass finger
const bass = note(`<
  ~ A B C D B E F G B H I B J K B E B G L M N O L P F Q R F S D T D F@2 G F U B U V@2 A B C D B E F G B H I B J K B E B
  G L M N O L P F Q R F S D T D F@2 G F U B U W@2
>`.pickRestart({
  A: "c2@4 ~@2 c2 ~ g1@3 ~ c2@3 ~", B: "d2@4 ~@2 d2 ~ d2@4 ~@2 d2 ~", C: "c2@4 ~@2 c2 ~ c2@3 ~ c2@3 ~",
  D: "e1@5 ~ e1 ~ a1@5 ~ a1 ~", E: "e2@4 ~@2 e2 ~ a1@5 ~ a1 ~", F: "d2@4 ~@2 d2 ~ d2@5 ~ d2 ~",
  G: "f#1@3 ~ a1@3 ~ c2@3 ~ d#2@3 ~", H: "g1@4 ~@2 g1 ~ g1@3 ~ b1@2 d#2 ~", I: "c2@4 ~@2 c2 ~ c2@5 ~ c2 g1",
  J: "c2@4 ~@2 c2 ~ c2@4 ~@2 d2 ~", K: "e2@4 ~@2 e2 ~ a1@4 ~@2 a1 ~", L: "b1@4 ~@2 b1 ~ b1@5 ~ b1 ~",
  M: "d#2@4 ~@2 d#2 ~ a1@5 ~ a1 ~", N: "b1@5 ~ b1 ~ b1@4 ~@2 b1 ~", O: "a1@5 ~ a1 ~ e2@3 ~ a1@3 ~",
  P: "d#1@3 ~ g1@3 ~ a1@3 ~ c2@3 ~", Q: "g1@5 ~ g1 ~ g1@5 ~ g1 ~", R: "c2@4 ~@2 c2 ~ c2@5 ~ g1 ~",
  S: "f#1@5 ~ f#1 ~ f1@5 ~ f1 ~", T: "f#1@4 ~@2 f#1 ~ f1@4 ~@2 f1 ~", U: "c2@4 ~@2 c2 ~ c2@5 ~ c2 ~",
  V: "[c2@4 ~@2 c2 ~ c2@12 ~@12]/2", W: "[c2@4 ~@2 c2 ~ c2@20 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.31)

// chords · epiano1
const epiano1 = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN ~ AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC
>`.pickRestart({
  A: "e4@3 ~@5 c4@3 ~ g3@3 ~", B: "[a3,d4]@3 ~ d4@3 ~ a3@3 ~ [a3,f4]@3 ~", C: "~@4 e4@3 ~ g3@3 ~ [c4,e4]@3 ~",
  D: "[g3,b3]@8 [g3,c#4]@7 ~", E: "a3@3 ~ [a3,d4]@3 ~ f3@3 ~ [f3,a3,d4]@3 ~", F: "[g3,e4]@3 ~@9 e4@3 ~",
  G: "[f3,c4]@3 ~ [a3,c4]@3 ~ a3@3 ~ f3@3 ~", H: "[f#3,a3]@4 [a3,f#4]@3 ~ [c4,d#4,f#4]@3 ~ [a3,c4]@3 ~",
  I: "c4@3 ~ f4@3 ~ [a3,c4]@3 ~ c4@3 ~", J: "[b3,d4,f4]@3 ~ [b3,f4]@3 ~ [g3,d#4]@3 ~ [g3,b3]@3 ~",
  K: "b3@3 ~@9 [g3,e4]@4", L: "[f3,d4]@3 ~@13", M: "~@4 [b3,c4]@3 ~ b3@3 ~@5",
  N: "[d4,e4]@3 ~ b3@3 ~@5 [g3,a3,c#4]@3 ~", O: "[f3,e4]@3 ~ [f3,a3]@3 ~ f3@3 ~ [a3,c4,d4]@3 ~",
  P: "g3@3 ~@5 [g3,c4,e4]@3 ~ a3@3 ~", Q: "a3@3 ~ [f3,a3]@3 ~@5 [f3,a3,c4]@3 ~", R: "f#3@4 ~@8 [a3,c4]@3 ~",
  S: "[a3,d4]@3 ~ [b3,d4]@4 ~@4 d4@3 ~", T: "d#4@3 ~@13", U: "[a3,b3]@3 ~ [a3,b3,d4]@3 ~@5 d4@2 ~@2",
  V: "~@4 e4@3 ~@5 g3@3 ~", W: "[f#3,d4]@3 ~ [f#3,a3]@3 ~ d4@3 ~ d4@3 ~", X: "a#3@3 ~@9 e4@3 ~",
  Y: "c4@3 ~ [f3,c4]@3 ~ [f3,c4]@3 ~ [c4,d4]@2 ~@2", Z: "~@4 d4@3 ~ g3@3 ~ b3@3 ~",
  AA: "e3@3 ~@5 c4@3 ~@5, ~@2 e3@3 ~@3", AB: "[a3,d4]@3 ~ d4@3 ~ [f3,c4]@3 ~ d4@3 ~",
  AC: "~@4 [f#3,b3]@3 ~@5 [a3,d#4]@3 ~", AD: "[g3,b3,d4]@3 ~ [e3,g3,b3]@3 ~ g3@3 ~ e3@3 ~",
  AE: "b3@3 ~ [a3,b3]@3 ~ d#4@3 ~ d#4@3 ~, c4 ~@15", AF: "~@4 e4@3 ~ [g3,c4,e4]@3 ~ [g3,a3]@3 ~",
  AG: "f#3@3 ~ [d3,f#3,g#3]@3 ~ [d3,g#3,d4]@3 ~@5", AH: "c4@3 ~ [c4,d4]@3 ~ f3@3 ~ c4@3 ~",
  AI: "d#4 [c4,d#4] a4 [a3,c4]", AJ: "[f3,a3,d4]@3 ~ [a3,d4]@3 ~ [f3,d4]@3 ~ d4@3 ~",
  AK: "~@4 a#3@3 ~ [a#3,c4]@3 ~ e4@3 ~", AL: "d4@3 ~@5 [c4,d4]@3 ~ a3@3 ~", AM: "~@4 [a#3,e4]@3 ~ c4@3 ~ g3@3 ~",
  AN: "g3", AO: "~@12 g3@3 ~", AP: "[d4,f4]@3 ~ [c4,f4]@3 ~@5 [a3,f4]@3 ~", AQ: "[g3,c4]@3 ~@9 e4@3 ~",
  AR: "b3@8 c#4@7 ~", AS: "c4@3 ~@9 [f3,c4,d4]@3 ~", AT: "[g3,d4]@3 ~@5 e4@3 ~ e4@3 ~",
  AU: "d4@3 ~ [a3,c4,d4]@3 ~ [f3,a3]@3 ~ a3@3 ~", AV: "~@4 [a3,c4]@3 ~ [d#4,f#4]@3 ~ [c4,d#4]@3 ~",
  AW: "c4@3 ~ a3@3 ~ d4@3 ~ [a3,c4]@3 ~", AX: "b3@3 ~@5 [b3,d#4]@3 ~ d#4@3 ~", AY: "[b3,c4]@3 ~ g3@3 ~@5 [b3,e4]@4",
  AZ: "[a3,d4]@3 ~ a3@3 ~ a3@3 ~@5", BA: "[g3,b3,c4,e4]@3 ~ c4@3 ~ c4@3 ~ [g3,b3,c4]@3 ~",
  BB: "[d4,e4]@3 ~ e4@3 ~@5 [g3,c#4,e4]@3 ~", BC: "~@4 a3@3 ~ f3@3 ~ c4@3 ~", BD: "[g3,d4,e4]@3 ~ e4@3 ~ g3@3 ~ c4@3 ~",
  BE: "[c4,d4]@3 ~ d4@3 ~ f3@3 ~ [f3,c4]@3 ~", BF: "[f#3,a3]@4 [a3,d#4,f#4]@4 [d#4,a4]@3 ~ a3@3 ~",
  BG: "[b3,d4]@3 ~ [a3,b3,f#4]@3 ~ [a3,b3]@3 ~@5", BH: "~@4 [g3,a#3]@3 ~ [g3,c4]@3 ~ [g3,e4]@3 ~",
  BI: "f#3@3 ~ [a3,b3,d4]@3 ~ [f#3,b3,d4]@3 ~ d4@2 ~@2", BJ: "~@4 [c4,e4]@3 ~ d4@3 ~@5",
  BK: "[a3,b3]@3 ~@5 d4@3 ~ [f#3,d4]@3 ~", BL: "g3@3 ~ g3@3 ~@5 [a3,e4]@3 ~", BM: "[f3,a3]@3 ~ f3@3 ~ a3@3 ~ c4@2 ~@2",
  BN: "[f3,g3,d4]@3 ~ [g3,d4]@3 ~@5 [f3,d4]@3 ~", BO: "~@4 c4@4 c4@3 ~ [e3,c4]@3 ~, ~@2 g3@3 ~@3",
  BP: "f3@3 ~ [f3,a3,c4]@3 ~ d4@3 ~ [f3,a3]@3 ~", BQ: "[a3,e4]@3 ~ [b3,e4]@3 ~ [a3,c4,d#4]@3 ~ f3@3 ~",
  BR: "[g3,b3]@3 ~ [b3,d4]@3 ~@5 a3@3 ~", BS: "[a3,e4]@3 ~ a3@3 ~@5 [f3,c4]@3 ~",
  BT: "b3@3 ~ [g3,b3]@3 ~ [c4,e4]@3 ~ c4@2 ~@2", BU: "[d3,f#3,g#3]@3 ~@9 [f#3,d4]@3 ~",
  BV: "[f3,c4,d4]@3 ~ [f3,a3]@3 ~@5 [f3,d4]@3 ~", BW: "[f#3,c4,d#4] [c4,d#4,f#4] a4 d#4", BX: "~@4 a3@3 ~@9",
  BY: "g3@3 ~ c4@3 ~ [g3,a#3,e4]@3 ~ c4@3 ~", BZ: "[f3,c4]@3 ~ [f3,a3]@3 ~ f3@3 ~ f3@3 ~",
  CA: "~@4 [c4,e4]@3 ~ g3@3 ~@5", CB: "b3", CC: "e3@3 ~",
})).s("gm_epiano1").gain(0.25).pan(0.9)

// chords · epiano1
const epiano1_2 = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM ~ AN@2 AO AP AQ AR AS AT
  AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB
>`.pickRestart({
  A: "c4@3 ~ e4@4 e4@3 ~ [c4,e4]@3 ~", B: "[c4,f4]@3 ~ [a3,f4]@3 ~@5 [c4,d4]@3 ~", C: "[c4,e4]@3 ~@9 g3@3 ~", D: "d4 ~",
  E: "[c4,d4]@3 ~ [f3,c4]@3 ~@5 c4@3 ~", F: "~@4 [g3,b3,d4]@3 ~@9", G: "a3@3 ~ d4@3 ~ [f3,d4]@3 ~ [a3,c4]@3 ~",
  H: "c4@4 ~@8 [d#4,f#4]@3 ~", I: "~@12 a3@3 ~", J: "~@4 [d4,g4]@3 ~ b3@3 ~@5",
  K: "[g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [b3,e4]@3 ~ [b3,c4]@4", L: "c4@3 ~ [a3,c4,d4]@3 ~ [f3,a3,c4,d4]@3 ~ c4@3 ~",
  M: "[c4,e4]@3 ~ e4@3 ~ [g3,c4]@3 ~ [b3,c4,e4]@3 ~", N: "~@8 [c#4,e4]@3 ~@5", O: "a3@3 ~@5 c4@3 ~@5",
  P: "~@4 [g3,d4,e4]@3 ~@5 [g3,c4]@3 ~", Q: "c4@3 ~@9 d4@3 ~", R: "a3@4 [a3,c4,f#4]@4 [c4,f#4,a4]@3 ~ f#4 ~@3",
  S: "[b3,f#4]@3 ~ f#4@3 ~ [a3,b3,d4,f#4]@3 ~ f#4@3 ~", T: "[g3,a#3]@3 ~@5 a3@3 ~ [a3,c4]@3 ~",
  U: "d4@3 ~@5 [f#3,d4]@3 ~ [f#3,b3]@2 ~@2", V: "e4@3 ~ c4@3 ~ [g3,d4,e4]@3 ~ e4@3 ~",
  W: "[a3,b3]@3 ~ [b3,d4]@3 ~ [f#3,b3]@3 ~ f#3@3 ~", X: "d#4@3 ~ d#4@3 ~ [a3,c4]@3 ~ [a3,c4]@3 ~",
  Y: "[f3,a3]@3 ~ [a3,d4]@3 ~ d4@3 ~ a3@3 ~", Z: "[f3,g3,b3,d4]@3 ~ [g3,b3]@3 ~@9",
  AA: "a3@3 ~@5 g3@3 ~ [e3,g3]@2 ~@2, ~@2 c4@3 ~@3", AB: "[f3,c4]@3 ~ [a3,c4]@3 ~ [a3,d4]@3 ~ [f3,a3]@3 ~",
  AC: "[f#3,a3]@3 ~@5 [a3,d#4]@3 ~ [f3,c4]@3 ~", AD: "~@8 e3@3 ~ [g3,a3]@3 ~", AE: "~@8 [a3,c4]@3 ~@5",
  AF: "[b3,e4]@3 ~@5 a3@3 ~ [c4,e4]@2 ~@2", AG: "d3@3 ~@5 f#3@3 ~ [d3,f#3,g#3]@3 ~",
  AH: "f3@3 ~ [f3,a3]@3 ~ [a3,c4]@3 ~ a3@3 ~", AI: "[f#3,c4] f#4 ~ d#4", AJ: "~@4 f3@3 ~ [a3,c4]@3 ~ [f3,a3]@3 ~",
  AK: "[g3,a#3,c4]@3 ~ g3@3 ~ [g3,e4]@3 ~ g3@3 ~", AL: "[a3,c4]@3 ~ d4@3 ~ f3@3 ~ [f3,c4]@3 ~",
  AM: "[g3,c4,e4]@3 ~ c4@3 ~ e4@3 ~ [a#3,c4]@3 ~", // C A#sus2
  AN: "[~@16 [g3,e4]@3 ~ [g3,c4,e4]@4 e4@3 ~ [c4,e4]@3 ~, [e3,d4]@9 ~@7]/2", AO: "~@4 d4@3 ~ c4@3 ~@5",
  AP: "~@4 [c4,e4]@3 ~ c4@3 ~ c4@3 ~", AQ: "[d4,e4]@8 [a3,e4]@7 ~", AR: "[f3,d4]@3 ~ a3@3 ~ a3@3 ~ a3@3 ~",
  AS: "e4@3 ~ g3@3 ~ [g3,a3,c4]@3 ~ a3@3 ~", AT: "[f3,a3,c4]@3 ~@5 [c4,d4]@3 ~ [f3,d4]@3 ~",
  AU: "d#4@4 [d#4,f#4]@3 ~@9", AV: "[a3,d4,f4]@3 ~ [c4,d4]@3 ~ [a3,c4,f4]@3 ~ f4@3 ~",
  AW: "f4@3 ~ [d4,f4]@3 ~ f4 ~@3 b3@3 ~", AX: "e4@3 ~ [b3,c4]@3 ~ [g3,e4]@3 ~@5",
  AY: "~@4 [f3,c4,d4]@3 ~ c4@3 ~ [f3,a3]@3 ~", AZ: "~@4 e4@3 ~ [g3,e4]@3 ~ e4@3 ~",
  BA: "b3@3 ~ [g3,b3,d4]@3 ~ [g3,a3,e4]@3 ~ a3@3 ~", BB: "[f3,a3,c4,e4]@3 ~ [c4,d4]@3 ~@5 f3@3 ~",
  BC: "b3@3 ~ g3@3 ~ [a3,c4,e4]@3 ~ g3@3 ~", BD: "a3@3 ~ c4@3 ~ c4@3 ~ [a3,d4]@3 ~",
  BE: "[c4,d#4]@4 c4@3 ~ c4@3 ~ [c4,d#4]@3 ~, ~@12 f#4 ~@3", BF: "~@8 f#4@3 ~ [b3,f#4]@3 ~",
  BG: "d#4@3 ~ d#4@3 ~ e4@3 ~ a3@3 ~", BH: "[b3,d4]@3 ~@5 a3@3 ~ f#3@2 ~@2",
  BI: "[g3,c4,e4]@3 ~ a3@2 ~@2 [g3,b3,e4]@3 ~ [g3,c4,e4]@3 ~", BJ: "[f#3,d4]@3 ~ b3@3 ~ [f#3,b3]@3 ~ a3@3 ~",
  BK: "[a#3,d#4]@3 ~ a#3@3 ~ [c4,e4]@3 ~ g3@3 ~", BL: "c4@3 ~ d4@3 ~ d4@3 ~ [f3,d4]@3 ~",
  BM: "b3@3 ~ [f3,b3]@3 ~ [f3,b3,d4]@3 ~ g3@3 ~", BN: "[a3,c4]@3 ~ a3@4 [e3,g3,a3]@3 ~ a3@3 ~",
  BO: "c4@3 ~ d4@3 ~ [f3,a3]@3 ~ [c4,d4]@3 ~", BP: "b3@3 ~ [f#3,a3]@3 ~@5 c4@3 ~", BQ: "~@4 e3@3 ~ c4@3 ~ [e3,c4]@3 ~",
  BR: "[f#3,b3]@3 ~ f#3@3 ~ [f3,a3]@3 ~ a3@3 ~, c4 ~@15", BS: "~@12 [g3,a3,e4]@3 ~",
  BT: "~@4 [d3,f#3]@3 ~ [g#3,d4]@3 ~@5", BU: "~@8 [f3,a3,c4]@3 ~ a3@3 ~", BV: "~ a3 d#4 [a3,c4]",
  BW: "f3@3 ~ [f3,d4]@3 ~ [a3,c4]@3 ~ d4@3 ~", BX: "c4@3 ~ [g3,e4]@3 ~@5 [g3,a#3]@3 ~",
  BY: "~@4 c4@3 ~ [a3,d4]@3 ~ [a3,c4]@3 ~", BZ: "[g3,c4]@3 ~ [g3,a#3]@3 ~ a#3@3 ~ [g3,c4]@3 ~", CA: "[g3,e4]",
  CB: "d4@3 ~",
})).s("gm_epiano1").gain(0.25).pan(0.4)

// chords · epiano1
const epiano1_3 = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO@2 AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA ~ CB
>`.pickRestart({
  A: "g3@3 ~ g3@3 ~ g3@3 ~@5", B: "~@4 c4@3 ~ [c4,d4,f4]@3 ~@5", C: "g3@3 ~ [g3,c4]@3 ~ [c4,e4]@3 ~@5",
  D: "e4@8 [a3,e4]@7 ~", E: "f3@3 ~@5 [a3,c4,d4]@3 ~@5", F: "[b3,d4]@3 ~ e4@3 ~ [g3,a3,c4,e4]@3 ~ [g3,a3,c4]@3 ~",
  G: "d4@3 ~ f3@3 ~ c4@3 ~ d4@3 ~", H: "d#4@4 [c4,d#4]@3 ~ a4@3 ~@5",
  I: "[a3,d4,f4]@3 ~ [a3,c4,d4]@3 ~ [d4,f4]@3 ~ [d4,f4]@3 ~", J: "g4@3 ~@5 f4!2 ~@2 [d#4,f4]@3 ~",
  K: "~@4 b3@3 ~ [g3,c4]@3 ~@5", L: "a3@3 ~ f3@3 ~@5 [f3,a3,d4]@3 ~", M: "[g3,b3]@3 ~ g3@3 ~ e4@3 ~ g3@3 ~",
  N: "[g3,b3]@3 ~ [d4,e4]@3 ~ [g3,a3]@3 ~ e4@3 ~", O: "c4@3 ~ [c4,d4]@3 ~ [a3,d4]@3 ~ f3@3 ~",
  P: "[b3,d4,e4]@3 ~ b3@3 ~ a3@3 ~ e4@3 ~", Q: "[f3,d4]@3 ~ [c4,d4]@3 ~ [f3,a3,c4,d4]@3 ~@5",
  R: "[c4,d#4]@4 d#4@3 ~ d#4@3 ~ d#4@3 ~", S: "~@4 a3@3 ~@5 [a3,b3]@3 ~",
  T: "~@4 [g3,a#3,d#4]@3 ~ [g3,c4,e4]@3 ~ [g3,e4]@3 ~", U: "f#3@3 ~ f#3@3 ~ [a3,b3]@3 ~ a3@2 ~@2",
  V: "[g3,a3,c4]@3 ~ [g3,a3]@3 ~ b3@3 ~ [a3,c4]@3 ~", W: "~@8 a3@3 ~ [a3,b3]@3 ~",
  X: "g3@3 ~ [g3,a#3]@3 ~ [g3,e4]@3 ~ g3@3 ~", Y: "d4@3 ~@5 a3@3 ~ f3@3 ~",
  Z: "~@4 f3@3 ~ [f3,b3,d4]@3 ~ [f3,g3,d4]@3 ~", AA: "[g3,c4]@3 ~ a3@4 [e3,a3]@3 ~ [a3,c4]@3 ~, ~@2 g3@3 ~@3",
  AB: "~@4 f3@3 ~@5 c4@2 ~@2", AC: "[b3,e4]@3 ~ [a3,e4]@3 ~ [f3,c4]@3 ~@5", AD: "e3@3 ~ d4@3 ~ [a3,c4]@3 ~ c4@3 ~",
  AE: "[f#3,a3,e4]@3 ~ [f#3,e4]@3 ~ f3@3 ~ [f3,a3,c4]@3 ~", AF: "[g3,d4]@3 ~ [g3,b3,d4]@3 ~@9",
  AG: "[g#3,d4]@3 ~ d4@3 ~@5 d4@3 ~", AH: "[a3,d4]@3 ~@5 d4@3 ~ [f3,d4]@3 ~", AI: "a3!2 [c4,d#4,f#4] ~",
  AJ: "c4@3 ~ c4@3 ~@5 c4@3 ~", AK: "e4@3 ~ [c4,e4]@3 ~@5 [a#3,c4]@3 ~", AL: "f3@3 ~ [f3,a3,c4]@3 ~ a3@3 ~ d4@3 ~",
  AM: "a#3@3 ~ g3@3 ~ [g3,a#3]@3 ~ e4@3 ~", AN: "[b3,e4]", AO: "[g3@16 c4@3 ~@5 [g3,c4]@3 ~@5, b3@9 ~@7]/2",
  AP: "[a3,c4]@3 ~ a3@3 ~ [a3,d4,f4]@3 ~ [c4,d4]@3 ~", AQ: "e4@3 ~ g3@3 ~ [g3,e4]@3 ~ g3@3 ~", AR: "g3@8 g3@7 ~",
  AS: "a3@3 ~ [f3,c4,d4]@3 ~ [f3,c4,d4]@3 ~@5", AT: "b3@3 ~ [b3,d4,e4]@3 ~@5 [g3,c4]@3 ~", AU: "~@4 f3@3 ~@5 c4@3 ~",
  AV: "[f#3,a3,c4]@4 ~@4 [c4,a4]@3 ~ [a3,f#4]@3 ~", AW: "~@4 f4@3 ~@9",
  AX: "[d4,g4]@3 ~ [b3,g4]@3 ~@2 f4 ~@2 [g3,f4]@3 ~", AY: "g3@3 ~ e4@3 ~ b3@3 ~ [g3,c4]@4",
  AZ: "[f3,c4]@3 ~@5 [f3,d4]@3 ~ [c4,d4]@3 ~", BA: "~@4 [g3,b3]@3 ~ b3@3 ~@5", BB: "g3@3 ~@5 c#4@3 ~@5",
  BC: "~@4 f3@3 ~ [a3,c4,d4]@3 ~ [a3,d4]@3 ~", BD: "~@4 [b3,d4]@3 ~@5 [a3,e4]@3 ~",
  BE: "f3@3 ~ [f3,a3]@3 ~ [a3,d4]@3 ~@5", BF: "~@8 f#4@3 ~@5", BG: "[a3,f#4]@3 ~ d4@4 d4@3 ~ [a3,d4]@3 ~",
  BH: "[g3,a#3]@3 ~@5 a3@3 ~ c4@3 ~", BI: "a3@3 ~ f#3@3 ~@5 [a3,b3]@2 ~@2", BJ: "~@4 g3@3 ~@5 a3@3 ~",
  BK: "~@4 [f#3,a3,d4]@3 ~ a3@3 ~ b3@3 ~", BL: "~@4 d#4@3 ~ [g3,a3]@3 ~ c4@3 ~",
  BM: "d4@3 ~ [a3,c4]@3 ~ [f3,c4]@3 ~ a3@3 ~", BN: "~@8 g3@3 ~ b3@3 ~", BO: "[e3,g3]@3 ~ e3@6 ~@2 g3@2 ~@2",
  BP: "[a3,d4]@3 ~@5 c4@3 ~@5", BQ: "f#3@3 ~@5 f3@3 ~ [a3,d#4]@3 ~", BR: "[e3,d4]@3 ~ g3@3 ~ [e3,g3,a3]@3 ~ g3@3 ~",
  BS: "~@4 [b3,e4]@3 ~ [c4,d#4]@3 ~ d#4@3 ~", BT: "[g3,d4,e4]@3 ~ [d4,e4]@3 ~ [g3,a3]@3 ~@5",
  BU: "d4@3 ~ [g#3,d4]@3 ~ [d3,f#3]@3 ~ [d3,g#3]@3 ~", BV: "a3@3 ~ [c4,d4]@3 ~ d4@3 ~ c4@3 ~", BW: "a3 ~ [c4,f#4] ~",
  BX: "[a3,c4,d4]@3 ~ c4@3 ~ [f3,d4]@3 ~ [f3,a3,c4]@3 ~", BY: "[a#3,e4]@3 ~ a#3@3 ~ c4@3 ~ e4@3 ~",
  BZ: "[a3,d4]@3 ~ d4@3 ~ c4@3 ~ d4@3 ~", CA: "[a#3,e4]@3 ~@5 [c4,e4]@3 ~ [a#3,e4]@3 ~", CB: "[g3,b3]@3 ~",
})).s("gm_epiano1").gain(0.25).pan(0.1)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~ A B A C B D E F E G H E H C E D E F I J K L I M E N O B P Q R Q S T U E V W V X@2 A B A C B D E F E G H E H C E D E
  F I J K L I M E N O B P Q R Q S T U E V W V Y@2
>`.pickRestart({
  A: "[g3,c4,e4]@15 ~", B: "[a3,c4,d4,f4]@15 ~", C: "[g3,b3,d4,e4]@7 ~ [g3,a3,c#4,e4]@7 ~",
  D: "[g3,b3,d4,e4]@7 ~ [g3,a3,c4,e4]@7 ~", E: "[f3,a3,c4,d4]@15 ~", F: "[f#3,a3,c4,d#4]@7 ~",
  G: "[g3,b3,d4,f4]@7 ~ [g3,b3,c#4,f4]@7 ~", H: "[g3,b3,c4,e4]@15 ~", I: "[f#3,a3,b3,d4]@15 ~",
  J: "[d#3,g3,a#3]@7 ~ [e3,g3,a3,c4]@7 ~", K: "[f#3,a3,b3,d4]@7 ~, c#4 ~@15",
  L: "[g3,a3,c4,e4]@7 ~ [g3,b3,e4]@3 ~ [g3,a3,c4,e4]@3 ~", M: "[g3,a#3,d#4]@7 ~ [g3,a3,c4,e4]@7 ~",
  N: "[f3,g3,b3,d4]@15 ~", O: "~@8 b3@7 ~, [g3,c4,e4]@15 ~", P: "[f#3,a3,b3,e4]@7 ~ [f3,a3,c4,d#4]@7 ~",
  Q: "[e3,g3,b3,d4]@7 ~ [e3,g3,a3,c4]@7 ~", R: "[f#3,a3,b3,e4]@7 ~ [f3,a3,c4,e4]@7 ~, d4 ~@15",
  S: "[d3,f#3,g#3,d4]@15 ~", T: "[d3,f3,a3]@13 ~@3, c4@15 ~", U: "[f#3,a3,c4,d#4]@15 ~", V: "[g3,a#3,c4,e4]@15 ~",
  W: "[f3,a3,d4]@7 ~ [f3,a3,c4,d4]@7 ~", X: "[b3 ~@14 e3@14 ~@3, [g3,c4,e4]@15 ~]/2",
  Y: "[b3 ~@14 e3@13 ~@4, [g3,c4,e4]@7 ~]/2", // C
})).s("gm_synth_strings_2").gain(0.16)

// other · french horn
const french_horn = note(`<
  ~@3 A B C D E F G H I C J K L M N O P Q R S P T U V L W X Y Z@2 AA AB AC AB AD M AE AF@2 ~@2 A B C D E F G H I C J K L
  M N O P Q R S P T U V L W X Y Z@2 AA AB AC AB AD M AE AG@2
>`.pickRestart({
  A: "g4", B: "e4@2 c#4 a3", C: "d4@5 e4 f4 a4", D: "g4 a4", E: "f4@15 ~", F: "f#4 a4 c5 d#5",
  G: "c5@9 ~ a4@2 f4@2 d4@2", H: "g4@3 d#4", I: "e4@5 b3 c4 e4", J: "g4@15 ~", K: "b3 a3", L: "e4@5 d4 c4 e4",
  M: "d4@8 c4@7 ~", N: "c4", O: "a3 c4 d#4@4 c4@2", P: "b3@15 ~", Q: "a#3 a3", R: "b3", S: "a3@2 e4 a3", T: "d#4 a3",
  U: "[a3,c4]@15 ~", V: "g4@5 f4 d4 d#4", W: "d4", X: "f#3 f3", Y: "e3@2 a3 c4", Z: "[a3@15 g3@8 ~ a3@8]/2",
  AA: "d4@15 ~", AB: "c4@15 ~", AC: "f#4@2 d#4@2 c4@2 a3@6 c4@3 ~", AD: "a#3", AE: "a#3@15 ~", AF: "b3/2",
  AG: "[b3@7 ~]/2",
})).s("gm_french_horn").gain(0.26).pan(0.8)

// chords · tenor sax
const tenor_sax = note(`<
  ~ A B C D E F G H I J K L A M N O P Q R S T U V W X Y Z AA AB AC AD@2 AE AF AG AH AI B AJ O AK AL B C D E F AM H I J K
  L A M N O P AN AO S T AP V W X Y Z AA AB AC AD@2 AE AF AG AH AI B AJ O AQ
>`.pickRestart({
  A: "[g3,b3]@15 ~", B: "[a3,c4]@15 ~", C: "[g3,b3]", D: "[b3,d4] [g3,c#4]", E: "[f3,a3]", F: "[e3,g3] [a3,c4]",
  G: "[d3,f3]@5 g3 a3 d3, ~@3 f3", H: "f#3@11 ~ c4@4, a3@15 ~", I: "[f3,a3]@15 ~", J: "[g3,b3] [g3,c#4]",
  K: "[g3,b3]@5 a3 e3 b3, ~@10 f3 ~ g3@4", L: "[f3,a3]@5 [g3,b3] c4 f3, ~@3 a3", M: "[b3,d4]@8 a3@4 g3@3 ~, ~ c#4",
  N: "[f3,c4]@3 [f3,a3]", O: "[g3,b3]@8 [e3,a3,c4]@7 ~", P: "[f3,a3,c4]@15 ~", Q: "[a3,c4] [c4,d#4] [d#4,f#4] [f#4,a4]",
  R: "[b3,d4]@11 ~ [a3,d4]@3 ~, f#4", S: "[g3,d#4] [a3,c4]", T: "b3@7 ~ [a3,f#4]@8, d4@15 ~",
  U: "[g3,c4,e4]@7 ~ [g3,b3,d4]@4 [g3,c4,e4]@4", V: "[b3,d4]@15 ~", W: "[g3,a#3] [a3,c4]", X: "[c4,f4]@15 ~",
  Y: "[b3,f4]", Z: "[b3,e4]@11 ~ [g3,b3]@4", AA: "[a3,c4]", AB: "c4@15 ~", AC: "b3@8 c4@7 ~",
  AD: "[c4@15 b3@8 ~ c4@8]/2", AE: "d4@15 ~", AF: "[c4,a4]@15 ~",
  AG: "[c4,d#4]@3 ~ [d#4,f#4]@4 f#4@3 ~ c5@3 ~, ~@8 a4@7 ~", AH: "a4 c4, f4", AI: "[a#3,e4]", AJ: "[a#3,e4]@15 ~",
  AK: "[b3,e4,g4]", AL: "[g3,b3] ~@15", AM: "[d3,f3]@5 g3 a3 ~", AN: "[a3,c4]@4 [c4,d#4]@4 f#4@4 a4@3 ~",
  AO: "[b3,d4]@11 ~ d4@3 ~, f#4", AP: "[g3,c4,e4]@7 ~ [b3,d4]@4 [g3,c4,e4]@4", AQ: "[b3,e4]@3 ~",
})).s("gm_tenor_sax").gain(0.16).pan(0.3)

// chords · tenor sax · soft notes
const tenor_sax_soft = note("<~@7 A ~@2 B ~@29 C@2 ~@6 D ~@2 B ~@7 E F ~@2 G ~@17 H@2>".pickRestart({
  A: "~@5 d3 ~@2, ~@10 e3 ~@5", B: "~ b3", C: "[~@14 d4 g3@17]/2", D: "~@5 d3 ~ d3, ~@10 e3 ~ f3@4",
  E: "~@8 d#4@3 ~ f#4@4", F: "~@12 a3@3 ~", G: "~@2 g3 ~", H: "[~@14 d4 ~ g4@12 ~@4, ~@15 g3@13 ~@4]/2",
})).s("gm_tenor_sax").gain(0.08).pan(0.3)

// … 169 more lines

More by Burt Bacharach