Strudelify

Kodachrome

Paul Simon

KeyE majorTempo140 bpm
0:00/0:00
// Kodachrome — Simon Paul
// 140 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 35, 4/4 at bar 36, 3/4 at bar 70, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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 · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note(`<
  A@3 B C D E F G H I J K L M N O H I J K L P Q R S T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI@2 AJ AK J AL AM AN AO AP
  AJ AK J AL AM AQ AR AS AT AA AB AC AD AE AU AV AW AX J AY AZ BA B BB BC@2 B BB BC@2 B BB BC@2 B BB BC@2 B BB BC@2 B BB
  BC@2 B BB BC@2 B BB BC@2 B BB BC@2 B BB BC@2 ~@8
>`.pickRestart({
  A: "[~@4 g#4 ~ b4@6 ~@2 b4@6 ~ [a3,c#4,e4] ~ [a3,c#4,e4], ~@5 e4@7 g#4@2 ~@10, ~@5 [g#3,b3]@6 ~@2 e4@7 ~@4, ~@26 [g#3,b3]@11 ~@11]/3", // A G#m
  B: "~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]", // A
  C: "~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4] ~@3 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2", // A F#m
  D: "~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,b3,d#4] ~ [f#3,a3,b3,d#4]", // F#m B7
  E: "~ [f#3,a3,b3,d#4] ~ [f#3,a3,b3,d#4] ~ [g#3,b3,e4] ~ [g#3,b3,e4]", // B7 E
  F: "~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~@3 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2", // E F#m
  G: "~@2 [f#3,a3,b3,d#4]@2 ~@2 [f#3,a3,b3,d#4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // B7 E
  H: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4] ~", // E E7
  I: "~@2 [g#3,b3,d4,e4] ~@3 [g#3,d4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // E7 A
  J: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // A
  K: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~", // A F#m
  L: "~@2 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // F#m B
  M: "~@2 [f#3,b3,d#4] ~@3 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // B E
  N: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 ~@2", // E F#m
  O: "[f#3,a3,d#4] ~ [f#3,d#4] ~ [f#3,a3,d#4] ~@5 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // D#dim D#m D#dim E
  P: "~@2 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // B E
  Q: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~", // E A
  R: "[g#3,c#4,f4]@3 ~ [g#3,c#4,f4]@3 ~@3 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2", // C# F#m
  S: "~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~", // F#m Bm
  T: "~@2 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4]@2", // Bm E
  U: "~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // E A
  V: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4]@2", // A D
  W: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@2", // D B
  X: "~@2 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2", // B E
  Y: "[~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~ [a3,c#4,e4]@5 ~ [g#3,c#4,f4]@5 ~ [a3,c#4,f#4]@5 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~]/2", // E A C# F#m
  Z: "[f#3,a3,c#4] ~ [f#3,c#4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~", // F#m F#5 Bm
  AA: "~@2 [f#3,b3,d4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2", // Bm E
  AB: "~@2 [g#3,b3,e4]@2 ~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // E A
  AC: "~@2 [a3,c#4,e4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4]@2 ~@2 [a3,d4,f#4] ~", // A D
  AD: "~@2 [a3,d4,f#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4] ~", // D B
  AE: "~@2 [f#3,b3,d#4] ~@3 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2", // B E
  AF: "~@2 [g#3,b3,e4] ~@3 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2", // E A
  AG: "~ [a3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4]", // A C#m
  AH: "~@2 [g#3,c#4,e4] ~@3 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2", // C#m F#m
  AI: "[~@2 [f#3,a3,c#4] ~ [f#3,a3,d#4] ~@3 [f#3,a3,b3,d#4]@10 ~@4 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~]/2", // F#m D#dim B7 E
  AJ: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4] ~", // E E7
  AK: "~@2 [g#3,d4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // E7 A
  AL: "~@2 [a3,c#4,e4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~", // A F#m
  AM: "~@2 [f#3,a3,c#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // F#m B
  AN: "~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // E
  AO: "~@2 [g#3,b3,e4] ~@3 [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 ~@2 [f#3,a3,d#4] ~ [f#3,d#4] ~", // E F#m D#dim D#m
  AP: "[f#3,a3,d#4] ~@5 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // D#dim E
  AQ: "~@2 [f#3,b3,d#4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // B E
  AR: "~@2 [g#3,b3,e4] ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [g#3,c#4,f4]@3 ~", // E A C#
  AS: "[g#3,c#4,f4]@2 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,c#4]", // C# F#m
  AT: "~@2 [f#3,a3,c#4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~", // F#m Bm
  AU: "~@2 [g#3,b3,e4] ~ [a3,c#4,e4]@5 ~ [g#3,c#4,f4]@5 ~", // E A C#
  AV: "[a3,c#4,f#4]@5 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,c#4] ~", // F#m F#5
  AW: "~@2 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~", // Bm
  AX: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2", // E
  AY: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4]@2 ~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // D
  AZ: "~@2 [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // B
  BA: "~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~", // E
  BB: "~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4] ~", // C#m
  BC: "~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~", // F#m
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.4)

// chords · acoustic guitar steel · "Steel Guitar" · soft notes · A C#m F#m A C#m F#m
const acoustic_guitar_steel_2 = note(`<
  ~@114
  [~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]]
  [~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4] ~]
  [~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~]!2
  [~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]]
  [~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4] ~]
  [~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~]
  [~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~@4]
>`).s("gm_acoustic_guitar_steel").gain(0.05).pan(0.4)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A@3 B C D E F G H I J K L M N O H I J K L P Q R S T U V W X Y@2 Z@2 AA AB@2 AC AD AE AF AG@2 AH@2 AI AJ@2 AK AL AM
  AH@2 AI AN@3 AO@4 AA AB@2 AC AP AQ AR AS AT AU AV AW AX AY AZ@2 AX AY AZ@2 AX AY AZ@2 AX AY AZ@2 AX AY AZ@2 AX AY AZ@2
  AX AY AZ@2 AX AY AZ@2 AX AY AZ@2 AX AY AZ BA ~@8
>`.pickRestart({
  A: "[~@8 e2@14 ~@2 e2@12 c#2@4 a1@4 ~@2 a1 ~]/3", B: "a1@6 ~@2 a1@2 a1@3 ~ a1 ~",
  C: "a1 ~ a1@2 g#1@2 g1@2 f#2@6 c#2@2", D: "f#1@4 c#2@4 b1@5 ~ b1 ~", E: "b1@3 ~ b1@2 ~@2 e2@5 ~ e2@2",
  F: "~@2 e2 ~ e2@2 ~@6 f#2 ~ f#2 ~", G: "~@2 b1 ~ b1 ~@3 e2@6 ~@2", H: "e2@5 ~@3 e2@6 ~@2",
  I: "e2@6 ~@2 a1 ~ a1@2 c#2@2 d2@2", J: "e2@4 c2@2 c#2@2 a1 ~ a1@2 c#2@2 d2@2",
  K: "e2@2 a1@2 g#1@2 g1@2 f#1@5 ~ f#1 ~", L: "f#1@6 ~@2 b1@5 ~@3", M: "b1@5 ~ e1@5 ~@3 e2 ~",
  N: "e2@3 ~ e2@2 ~@2 f#1@3 ~ f#1@3 ~", O: "b1@3 ~ b1@2 ~@2 e2@6 ~@2", P: "b1@7 ~ e1@5 ~ e2 ~",
  Q: "e2@3 ~ e2@2 ~@2 a1@8", R: "c#2@8 f#1@5 ~ f#1 ~", S: "f#1@6 ~@2 b1@4 ~@2 b1 ~", T: "b1@6 ~@2 e2@4 ~@2 e2 ~",
  U: "e2@5 ~@3 a1@4 ~@2 a1 ~", V: "a1@5 ~@3 d2@4 ~@2 d2 ~", W: "d2@6 c#2@2 b1@4 ~@2 b1 ~", X: "b1@5 ~@3 e2@4 ~@2 e2 ~",
  Y: "[e2@4 ~@4 a1@4 ~@2 c#2@4 ~@2 f#1@7 ~@5]/2", Z: "[~@4 b1@4 ~@2 b1 ~ b1@6 ~@2 e2@4 ~@2 e2 ~ e2@4]/2",
  AA: "~@4 a1@4 ~@2 a1 ~ a1@4", AB: "[~@4 d2@4 ~@2 d2 ~ d2@6 c#2@2 b1@4 ~@2 b1 ~ b1@4]/2", AC: "~@4 e2@4 ~@2 e2 ~ e2@4",
  AD: "~@2 a1@2 c#2 e2 a1@2", AE: "c#2@2 e2@2 c#2@5 ~ c#2 ~ c#2@3 ~", AF: "c#2@4 f#1@4 ~@2 f#1 ~ f#1@3 ~",
  AG: "[f#1 ~@3 b1@2 ~@2 b1@11 ~ e2@6 ~@2 e2@4]/2", AH: "[~@4 e2@6 ~@2 e2@6 ~@2 a1 ~ a1@2 c#2@2 d2@2 e2@4]/2",
  AI: "c2@2 c#2@2 a1 ~ a1@2 c#2@2 d2@2 e2@2 a1@2", AJ: "[g#1@2 g1@2 f#1@5 ~ f#1 ~ f#1@6 ~@2 b1@5 ~@3 b1@4]/2",
  AK: "~@2 e1@5 ~@3 e2 ~ e2@3 ~", AL: "e2@2 ~@2 f#1@3 ~ f#1@3 ~ b1@3 ~", AM: "b1 ~ e2@3 ~ e2@2",
  AN: "[g#1@2 g1@2 f#1@5 ~ f#1 ~ f#1@6 ~@2 b1@5 ~@3 b1@7 ~ e1@5 ~ e2 ~ e2@3 ~]/3",
  AO: "[e2@2 ~@2 a1@8 c#2@8 f#1@5 ~ f#1 ~ f#1@6 ~@2 b1@4 ~@2 b1 ~ b1@6 ~@2 e2@4 ~@2 e2 ~ e2@4]/4",
  AP: "~@2 a1@2 ~ c#2@2 ~", AQ: "f#1@7 ~@9", AR: "b1@4 ~@2 b1 ~ b1@6 ~@2", AS: "e2@4 ~@2 e2 ~ e2@5 ~@3",
  AT: "a1@4 ~@2 a1 ~ a1@5 ~@3", AU: "d2@4 ~@2 d2 ~ d2@6 c#2@2", AV: "b1@4 ~@2 b1 ~ b1@5 ~@3",
  AW: "e2@4 ~@2 e2 ~ e2@4 ~@4", AX: "a1@2 c#2 e2 a1@2 c#2 e2", AY: "c#2@5 ~ c#2 ~ c#2@3 ~ c#2@4",
  AZ: "f#1@4 ~@2 f#1 ~ f#1@3 ~ f#1 ~@3", BA: "f#1@4 ~@2 f#1 ~@9",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · electric bass finger · "Bass" · soft notes
const bass_soft = note("<~@113 A B C D@2 B C D E>".pickRestart({
  A: "~@8 f#1@3 ~ f#1 ~@3", B: "a1@2 c#2 e2 a1@2 c#2 e2", C: "c#2@5 ~ c#2 ~ c#2@3 ~ c#2@4",
  D: "f#1@4 ~@2 f#1 ~ f#1@3 ~ f#1 ~@3", E: "f#1@4 ~@2 f#1 ~@9",
})).s("gm_electric_bass_finger").gain(0.09)

// other · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  A B C D E@2 ~@4 F D G@2 ~@4 F D G@2 H@2 I ~@6 J@3 ~@11 K L M ~@5 K L M ~ N O@2 ~@6 P Q ~@54
>`.pickRestart({
  A: "~@8 e3@5 ~ e3 ~", B: "e3@7 ~ e3@5 ~ e3 ~", C: "e3@2 c3@2 a2@2 c#3 d3", D: "e3@2 c3 c#3 a2@2 c#3 d3",
  E: "[e3@4 c3@2 c#3@2 f#2@11 ~@13]/2", F: "~@4 a2@2 c#3 d3", G: "[e3 a2 g#2 g2 f#2@6 ~@6]/2",
  H: "[~@8 [e3,g#3]@13 ~@3 [c#3,e3,a3]@8]/2", I: "[c#3,f3,g#3] ~",
  J: "[~@4 [a3,c#4,e4]@2 ~ [g#3,c#4,f4]@3 [c#3,f#3,a3]@7 ~@7]/3", K: "~@2 a2@2 c#3 d3 e3@2",
  L: "c3 c#3 a2@2 c#3 d3 e3 a2", M: "g#2 g2 f#2@6", N: "~ [e3,g#3]@3", O: "[~ [c#3,e3,a3]@2 [c#3,f3,g#3]@2 ~@3]/2",
  P: "~@2 [a3,c#4,e4]@2 ~ [g#3,c#4,f4]@3", Q: "[c#3,f#3,a3]@7 ~",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.2)

// chords · acoustic guitar nylon · "Nylon Guitar"
const acoustic_guitar_nylon = note(`<
  ~@4 A B C D E F G H I J K@2 L F M H N O P Q R S T U V W X Y ~ Z AA AB AC AD AE AF AG AH AI@2 F AJ H AK AL AM AN AO F
  AP H AQ AR AS AT AU AV AA AB AC AD AE AW ~ AX AY AZ BA BB F BC BD BE@2 BC BD BE@2 BC BD BE@2 BC BD BE@2 BC BD BE@2 BC
  BD BE@2 BC BD BE@2 BC BD BE@2 BC BD BE@2 BC BD BE BF ~@8
>`.pickRestart({
  A: "~@12 [c#4,f#4,a4] ~@3", B: "[c#4,f#4,a4] ~@3 [c#4,f#4,a4] ~@3 [b3,d#4,f#4,a4] ~@3 [b3,d#4,f#4,a4] ~@3",
  C: "[b3,d#4,f#4,a4] ~@3 [b3,d#4,f#4,a4] ~@3 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2", // B7 E
  D: "[b3,e4,g#4]@2 ~@2 [b3,e4,g#4] ~@11", E: "~@4 [b3,e4,g#4] ~ [b3,e4,g#4] ~",
  F: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
  G: "[b3,e4,g#4]@2 ~@2 [b3,e4,g#4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 ~@2", // E A
  H: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  I: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~", // A F#m
  J: "[a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // F#m B
  K: "[[b3,d#4,f#4]@2 ~@2 [b3,d#4] ~ [e3,g#3]@13 ~@7 [f#4,a4] ~ [f#4,a4]@3 ~]/2", // B E F#m
  L: "[d#4,f#4] ~ [d#4,f#4] ~ [d#4,f#4]@3 ~ [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2", // D#m E
  M: "[b3,e4,g#4]@2 ~@2 [b3,e4,g#4] ~@3 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2", // E A
  N: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4] ~@3 [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4]@2 ~@2", // A F#m
  O: "[a3,c#4,f#4] ~ c#4 ~ [b3,d#4] ~ [b3,d#4,f#4] ~, ~@2 f#4@3 ~@3, ~@4 a3 ~@11", P: "[b3,d#4,f#4]@2 ~@2 b3 ~@11",
  Q: "b3@3 ~ b3@3 ~@9", R: "~@4 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~",
  S: "[a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", // F#m Bm
  T: "[b3,d4,f#4]@2 ~@2 [b3,d4,f#4]@2 ~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4]@2 ~@2", // Bm E
  U: "[b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // E A
  V: "[c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4]@2 ~@2", // A D
  W: "[d4,f#4,a4]@2 ~@2 [d4,f#4,a4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@2", // D B
  X: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] ~@3 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2", Y: "[b3,e4,g#4] ~ [b3,e4,g#4] ~@5",
  Z: "~@2 [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", // Bm
  AA: "[b3,d4,f#4]@2 ~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4] ~@3", // Bm E
  AB: "[b3,e4,g#4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // E A
  AC: "[c#4,e4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@2 ~@2", // A D
  AD: "[d4,f#4,a4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@2 ~@2", // D B
  AE: "[b3,d#4,f#4] ~@3 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2", // B E
  AF: "[b3,e4,g#4]@2 ~@2 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3", // E A
  AG: "[e3,a3,c#4] ~@3 [e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3", // A C#m
  AH: "[e3,g#3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3", // C#m F#m
  AI: "[[f#3,a3,c#4] ~@3 [d#3,f#3,b3] ~@3 [d#3,f#3,a3,b3]@11 ~ [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2]/2", // F#m B B7 E
  AJ: "[b3,e4,g#4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2", // E A
  AK: "[a3,c#4,e4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~", // A F#m
  AL: "[a3,c#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", AM: "[b3,d#4] ~ [e3,g#3]@13 ~",
  AN: "~@6 [f#4,a4] ~ [f#4,a4]@3 ~ [d#4,f#4] ~ [d#4,f#4] ~", // F#m D#m
  AO: "[d#4,f#4]@3 ~ [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2", // D#m E
  AP: "[b3,e4,g#4] ~@3 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2", // E A
  AQ: "[a3,c#4,e4] ~@3 [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4]@2 ~@2", // A F#m
  AR: "c#4 ~ [b3,d#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~, f#4@3 ~@5, a3 ~@15", AS: "b3 ~@11 b3@3 ~", AT: "b3@3 ~@13",
  AU: "~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~", // F#m
  AV: "[a3,c#4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", AW: "[b3,e4,g#4] ~@7",
  AX: "[b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", // Bm
  AY: "[b3,e4,g#4] ~@3 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3", // E
  AZ: "[c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // A
  BA: "[d4,f#4,a4] ~@3 [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@2 ~@2 [d4,f#4,a4] ~@3", // D
  BB: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] ~@3", // B
  BC: "[e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3", // A
  BD: "[e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3", // C#m
  BE: "[f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3", // F#m
  BF: "[f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@7", // F#m
})).s("gm_acoustic_guitar_nylon").gain(0.17).pan(0.6)

// chords · acoustic guitar nylon · "Nylon Guitar" · soft notes
const acoustic_guitar_nylon_2 = note("<~@14 A ~@7 B C ~@25 D ~@7 E F ~@54 G H I J@2 H I J K>".pickRestart({
  A: "~@4 f#4 ~@11", B: "~@4 [d#4,f#4] ~@3 [b3,e4]@3 ~ [b3,e4]@3 ~", C: "e4@3 ~ e4@3 ~@9", D: "f#4 ~@15",
  E: "[d#4,f#4] ~@3 [b3,e4]@3 ~ [b3,e4]@3 ~ e4@3 ~", F: "e4@3 ~@13", G: "~@12 [f#3,a3,c#4] ~@3",
  H: "[e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3", // A
  I: "[e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3 [e3,g#3,c#4] ~@3", // C#m
  J: "[f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3", K: "[f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@11",
})).s("gm_acoustic_guitar_nylon").gain(0.07).pan(0.6)

// other · piano · "Piano 2"
const piano = note("<~@3 A B ~@2 C@2 ~@23 D E ~@33 F G ~@32 H ~@20>".pickRestart({
// … 95 more lines

More by Paul Simon