Strudelify
Alfie cover art

1997 · Reach Out

Alfie

Burt Bacharach

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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~ A B C D B E B F B G H B I E B E B F J K J L J M B N O P Q D Q D B@2 F B R B R S@2 A B C D B E B F B G H B I E B E B
  F J K J L J M B N O P Q D Q D B@2 F B R B R T@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: "f#1@3 ~ a1@3 ~ c2@3 ~ d#2@3 ~",
  G: "g1@4 ~@2 g1 ~ g1@3 ~ b1@2 d#2 ~", H: "c2@4 ~@2 c2 ~ c2@5 ~ c2 g1", I: "c2@4 ~@2 c2 ~ c2@4 ~@2 d2 ~",
  J: "b1@4 ~@2 b1 ~ b1@5 ~ b1 ~", K: "d#2@4 ~@2 d#2 ~ a1@5 ~ a1 ~", L: "a1@5 ~ a1 ~ e2@3 ~ a1@3 ~",
  M: "d#1@3 ~ g1@3 ~ a1@3 ~ c2@3 ~", N: "g1@5 ~ g1 ~ g1@5 ~ g1 ~", O: "c2@4 ~@2 c2 ~ c2@5 ~ g1 ~",
  P: "d2@4 ~@2 d2 ~ d2@5 ~ d2 ~", Q: "f#1@5 ~ f#1 ~ f1@5 ~ f1 ~", R: "c2@4 ~@2 c2 ~ c2@5 ~ c2 ~",
  S: "[c2@4 ~@2 c2 ~ c2@12 ~@12]/2", T: "[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 AB
  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
>`.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: "[f#3,a3,c4]@4 ~@4 [c4,a4]@3 ~ [a3,f#4]@3 ~", AV: "~@4 f4@3 ~@9",
  AW: "[d4,g4]@3 ~ [b3,g4]@3 ~@2 f4 ~@2 [g3,f4]@3 ~", AX: "g3@3 ~ e4@3 ~ b3@3 ~ [g3,c4]@4",
  AY: "[f3,c4]@3 ~@5 [f3,d4]@3 ~ [c4,d4]@3 ~", AZ: "~@4 [g3,b3]@3 ~ b3@3 ~@5", BA: "g3@3 ~@5 c#4@3 ~@5",
  BB: "~@4 f3@3 ~ [a3,c4,d4]@3 ~ [a3,d4]@3 ~", BC: "~@4 [b3,d4]@3 ~@5 [a3,e4]@3 ~",
  BD: "f3@3 ~ [f3,a3]@3 ~ [a3,d4]@3 ~@5", BE: "~@8 f#4@3 ~@5", BF: "[a3,f#4]@3 ~ d4@4 d4@3 ~ [a3,d4]@3 ~",
  BG: "[g3,a#3]@3 ~@5 a3@3 ~ c4@3 ~", BH: "a3@3 ~ f#3@3 ~@5 [a3,b3]@2 ~@2", BI: "~@4 g3@3 ~@5 a3@3 ~",
  BJ: "~@4 [f#3,a3,d4]@3 ~ a3@3 ~ b3@3 ~", BK: "~@4 d#4@3 ~ [g3,a3]@3 ~ c4@3 ~",
  BL: "d4@3 ~ [a3,c4]@3 ~ [f3,c4]@3 ~ a3@3 ~", BM: "~@8 g3@3 ~ b3@3 ~", BN: "[e3,g3]@3 ~ e3@6 ~@2 g3@2 ~@2",
  BO: "[a3,d4]@3 ~@5 c4@3 ~@5", BP: "f#3@3 ~@5 f3@3 ~ [a3,d#4]@3 ~", BQ: "[e3,d4]@3 ~ g3@3 ~ [e3,g3,a3]@3 ~ g3@3 ~",
  BR: "~@4 [b3,e4]@3 ~ [c4,d#4]@3 ~ d#4@3 ~", BS: "[g3,d4,e4]@3 ~ [d4,e4]@3 ~ [g3,a3]@3 ~@5",
  BT: "d4@3 ~ [g#3,d4]@3 ~ [d3,f#3]@3 ~ [d3,g#3]@3 ~", BU: "a3@3 ~ [c4,d4]@3 ~ d4@3 ~ c4@3 ~", BV: "a3 ~ [c4,f#4] ~",
  BW: "[a3,c4,d4]@3 ~ c4@3 ~ [f3,d4]@3 ~ [f3,a3,c4]@3 ~", BX: "[a#3,e4]@3 ~ a#3@3 ~ c4@3 ~ e4@3 ~",
  BY: "[a3,d4]@3 ~ d4@3 ~ c4@3 ~ d4@3 ~", BZ: "[a#3,e4]@3 ~@5 [c4,e4]@3 ~ [a#3,e4]@3 ~", CA: "[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 F E U V U W@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 F E U V U X@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: "[g3,a#3,c4,e4]@15 ~",
  V: "[f3,a3,d4]@7 ~ [f3,a3,c4,d4]@7 ~", W: "[b3 ~@14 e3@14 ~@3, [g3,c4,e4]@15 ~]/2",
  X: "[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 A J K L M N O P O Q O R S T K U V W X@2 U M Y M Z L AA AB@2 ~@2 A B C D E F G H I C A J K L M
  N O P O Q O R S T K U V W X@2 U M Y M Z L AA AC@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: "b3 a3", K: "e4@5 d4 c4 e4", L: "d4@8 c4@7 ~",
  M: "c4@15 ~", N: "a3 c4 d#4@4 c4@2", O: "b3@15 ~", P: "a#3 a3", Q: "a3@2 e4 a3", R: "d#4 a3", S: "[a3,c4]@15 ~",
  T: "g4@5 f4 d4 d#4", U: "d4", V: "f#3 f3", W: "e3@2 a3 c4", X: "[a3@15 g3@8 ~ a3@8]/2",
  Y: "f#4@2 d#4@2 c4@2 a3@6 c4@3 ~", Z: "a#3", AA: "a#3@15 ~", AB: "b3/2", AC: "[b3@7 ~]/2",
})).s("gm_french_horn").gain(0.26).pan(0.8)

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

// chords · piano
const piano = note(`<
  ~@42 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
// … 166 more lines

More by Burt Bacharach