Strudelify
Bridge Over Troubled Water cover art

1970 · Bridge Over Troubled Water

Bridge Over Troubled Water

Simon & Garfunkel

KeyE♭ majorTempo81 bpm
0:00/0:00
// Bridge Over Troubled Water — Simon & Garfunkel
// 81 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 100 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(81/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 · "FINGERDBAS"
const bass = note("<~@65 A B C@2 D E F G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD@4>".pickRestart({
  A: "bb3@2 eb3@12 ~ bb3", B: "eb3@27 ~ bb1@4", C: "eb2@31 ~", D: "eb1@27 ~ bb1@4",
  E: "eb2@3 ~ eb2@15 ~ eb2@4 c2@4 bb1@4", F: "eb1@27 ~ g1@4", G: "ab1@7 ~ c2@8 db2@8 c2@8",
  H: "eb2@7 bb1 eb2 ~ eb2@4 bb1@2", I: "f2@13 ~ c2@2 f2@2 ~@2 f2@8 c2@4", J: "eb2@13 ~ c2@2 ab1@4 bb1@4 c2@4 ab1@4",
  K: "eb2@3 ~@5 eb2@8 d2@8 c2@8", L: "bb1@13 ~ bb1@2 d2@2 ~@2 f2@8 d2@2 f2@2", M: "bb2@31 ~",
  N: "eb2@11 ~ eb2@3 ~ d2@11 ~ d2@3 ~", O: "db2@7 ~ f1@4 g1@4", P: "ab1@11 ~ ab1@3 ~ f1@10 ~@2 a1@4",
  Q: "bb1@11 ~ bb1@3 ~ eb2@8 bb1@8", R: "ab1@13 ~@3 ab1@8 a1@8", S: "bb1@11 ~ bb1@2 b1@2 c2@13 ~@3",
  T: "ab1@11 ~ ab1@3 ~ b1@11 ~ b1@3 ~", U: "c2@11 ~ c2@2 ~@2 eb2@8 bb1@8", V: "ab1@7 ~ ab1@4 a1@4",
  W: "bb1@11 ~ bb1@3 ~ c2@15 ~", X: "ab1@11 ~ ab1@3 ~ g1@14 ~@2", Y: "c2@12 b1@12 bb1@7 ~", Z: "f2@3 e2@3 eb2@2",
  AA: "eb2@11 ~ eb2@3 ~ eb2@15 ~", AB: "ab1@11 ~ ab1@3 ~ ab1@15 ~", AC: "ab1@11 ~ ab1@3 ~ ab1@4 bb1@4 b1@4 db2@4",
  AD: "[eb2@49 ~@15]/4",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A@3 B@2 C D@2 E F G H I J K L M N@2 O P Q R S T U V W X Y Z AA AB AC@2 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 AV CC AX AY
  AZ BA CD CE CF CG CH@3 ~
>`.pickRestart({
  A: "[~@12 [bb2,g4,bb4,eb5,g5]@3 ~@13 f2@3 ~@13 eb2@4 ~@4 f2@4 ~@4 gb2@3 ~ c5@3 ~ eb2@4 ~@16 [bb2,e4]@7 ~, eb2@15 ~ [bb1,g5]@15 [ab1,eb4,ab4,c5]@17 [ab1,d4,f4,ab4,d5]@8 [a1,c4,eb4,gb4,c5]@8 [bb1,g4]@8 ~@4 eb2@7 ~@13, [g4,bb4]@12 ~@3 g4@16 ~ eb5@17 ~@14 eb4@8 ~@9 f4@8 ~@8, ~ [eb5,g5]@11 ~@3 bb4@5 f2@8 ~@8 eb2@8 ~@28 [g2,bb3,eb4,g4,bb4]@8 [c2,g4]@16, ~@4 bb2@4 eb3@7 ~ d5@8 [bb2,f4,bb4,d5,f5]@8 ~@8 ab2@9 ~@14 c4@5 ~@16 bb4@11 ~]/3", // Eb Bbdim Eb Ab Ddim Adim Eb Gm …
  B: "[c4@8 ~@4 eb4@4 ~@16 eb2@7 ~ eb2@4 [g3,bb3,eb4]@8 gb3 ~@7 eb3@3 ~, [ab2,eb3]@15 ~ [ab2,eb3,b3]@14 g4@4 ~@22 f3@7 ~, ~@8 c4@7 ~ f4@12 f4@4 [g3,bb3,eb4]@12 eb2@19 ~, ~@24 ab3@8 eb3@20 [g3,eb4]@11 ~]/2", // Eb Ab5 Abm Eb Cm
  C: "eb2@2 eb2 ~@4 ab3, eb3@12 eb4 c4@3, [ab3,c4,eb4]@3 eb2@5, ~@6 [ab3,c4]@5 ab4@5, ~@3 eb4@2 [c5,eb5]@3", // Ab Cm
  D: "[eb2@7 eb2@4 ~ [eb2,g3,bb3,eb4]@7 gb3 ~@7 eb3@4 ~@17 eb5@15 ~, eb3@19 ~ [eb2,g3,eb4]@12 [eb3,ab3,c4,eb4]@32, [g3,bb3,eb4]@12 ~@11 f3@8 eb2@32 ~, ~@47 [ab4,c5]@17]/2", // Eb Ab Eb Ab
  E: "eb2@8 ~@20 eb2@3 ~, eb3@31 ~, [g3,bb3,eb4]@12 [g3,bb3,eb4]@12 [g3,bb3,eb4]@7 ~, ~@2 eb2@3 eb2@2 ~", // Eb
  F: "eb2@8 ~@19 eb2@4 ~, eb3@31 ~, [ab3,c4,eb4]@12 [ab3,c4,eb4]@10 ab3@9 ~, ~@2 eb2@3 eb2 ab4@2, ~@23 [c4,eb4]@9", // Ab Cm
  G: "eb2@8 ~@20 eb3@3 ~, eb3@7 ~, [g3,bb3,eb4]@12 [g3,bb3,eb4]@12 [g3,bb3,eb4,g4]@7 ~, ~@8 eb2@12 eb2@11 ~", // Eb
  H: "[eb2,eb3,ab3,c4,eb4]@7 ~@5 ab2@4 [ab2,f3,ab3,db4]@8 ~@4 ab2@4, ab2@3 ~@5, ~ [eb3,ab3,c4] ~ [eb3,ab3,c4]", // Ab Db Ab
  I: "[eb2,eb3,g3,bb3]@12 d3@8 ~@8 eb2@3 ~, ~@12 [g3,bb3]@19 ~, ~@3 eb2@4 ~, ~@21 d3@11, ~@24 eb4@7 ~", // Eb Gm
  J: "[eb3,ab3,c4]@3 ~@4 f2, f2@20 f2@7 ~@5, ~@12 [eb3,ab3,c4]@11 [eb3,ab3]@9, ~@3 [c4,eb4]", // Ab Ab5 Cm
  K: "[eb2,eb3,g3,bb3]@8 ~@4 eb2@3 ~ [eb3,ab3,c4]@8 ~@4 ab2@3 ~, ~@8 [eb3,g3,bb3]@7 ~ ab2@12 ~@4, ~@24 [eb3,ab3,c4]@7 ~", // Eb Ab Eb Ab
  L: "eb3@4 ~@4 bb3@4 [ab2,ab3,c4]@8 [ab2,eb4]@3 ~ eb4@2 ~@2 [f2,ab3,eb4]@3 ~, [eb2,g3]@12 ~@12 [g2,bb3]@7 ~, bb3@2 ~@3 c4 ~@2, ~@4 eb3@8 eb3@3 ~@5 bb3 ~@11", // Ab Ab5 Fm7 Eb Gm
  M: "[eb2,eb4]@2 ~@6 [eb2,eb3,bb3,eb4,g4]@8 [d2,d3,f3,bb3,f4]@8 [c2,c3,g3,c4,eb4]@7 ~, [g3,bb3] ~@31", // Eb Bb Cm Gm
  N: "[bb1@8 ~@20 bb1@2 ~@14 [f3,bb3,d4,f4]@7 ~ [bb1,bb2,bb3,d4]@3 ~ [c2,c3,c4,eb4]@4 [d2,d3,d4,f4]@4, bb2@31 bb1@9 bb1@11 ~@13, f4@10 bb1@4 ~ bb3@7 ~@10, [f3,bb3,d4]@12 f3@19 ~ [bb2,bb4]@20 ~@12, ~@8 bb1@4 [bb3,d4]@12 [bb3,d4,f4]@7 [d4,f4]@13 ~@8 bb4@12]/2", // Bb Cm Dm Bb Dm
  O: "[bb3,eb4]@8 ~@4 eb3@4 ~@12 d3@3 ~, [eb2,g4]@16 [bb3,eb4]@8 [bb3,eb4]@7 ~, eb3@3 ~ d3@3 ~, ~@8 [bb3,eb4]@8 g4@15 ~, ~@17 d2@15", // Eb5 Eb Eb5
  P: "g4@8 [eb2,eb3,bb3,db4,g4]@7 ~ [f2,f3,c4,eb4,f4,ab4]@8 [g2,g3,db4,eb4,g4,bb4]@8, [db2,db3,eb4]@15 ~@17, bb3 ~@31", // Eb7 Fm7 Eb7 Dbsus2
  Q: "[eb4,ab4,c5,eb5]@2 ~ ab2 [eb4,a4,c5,f5]@2 ~ f2, ab1 f1, ab2@3 ~ f2@3 ~, ~ [eb4,ab4,c5,eb5] ~ [eb4,a4,c5,f5]", // Ab F7 Ab F7
  R: "[d4,f4,bb4,d5]@8 ~@4 [d2,d3]@3 ~ [bb4,db5]@8 ~@4 [g2,g3]@3 ~, [bb1,bb2]@15 ~ [eb2,eb3,g4,g5]@15 ~, ~@8 [d4,f4,bb4,d5]@7 ~@9 [f4,bb4,db5,f5]@7 ~", // Bb D Bbm G Bb Eb Bb Bbm
  S: "[eb4,ab4,c5]@8 ~@4 ab2@4 [ab1,ab2,eb4,ab4,d5]@8 [a1,a2,eb4,gb4,c5]@7 ~, [ab1,eb5] ~, ab2@3 ~@5, ~ [eb4,ab4,c5] ~@2", // Ab Adim Ab5 Ab
  T: "~@12 bb2@3 ~@9 e4@7 ~, [bb1,eb4,g4,c5]@15 ~ [c2,g4]@16, bb2@12 ~@8 bb4@11 ~, ~@8 bb4@7 ~ f4@9 ~@7", // Cm7 C5
  U: "[eb4,ab4]@2 ~ ab2 [d4,f4,g4]@2 ~ [d2,d3], c5, ab1 [b1,b2], ab2@3 ~@5, ~ [eb4,ab4] ~ [d4,f4,g4]", // Ab5 G7 D B Ab5 G7
  V: "[c2,c3,eb4,g4,c5,eb5]@8 [eb2,eb4,g4,c5]@8 [f2,g4,bb4,db5,g5]@8 [g2,f4,bb4,db5,f5]@7 ~", // Cm Gm7b5
  W: "[eb4,ab4,c5]@2 ~ ab1 [ab1,ab2,eb4,ab4,d5]@2 [a1,a2,eb4,gb4,c5]@2, [ab2,eb5] ~, ~ [eb4,ab4,c5] ~@2", // Ab Adim Ab5 Ab
  X: "~@12 eb2@3 ~@9 [bb3,e4]@7 ~, [bb2,eb4,g4,c5]@15 ~ [c3,g4]@14 ~@2, ~@8 bb4@7 ~ f4@9 ~@7, ~@20 bb4@11 ~", // Bbdim Cm7 C5
  Y: "[ab3,c4,eb4]@8 ~@4 ab2@3 ~ [ab3,d4]@8 ~@4 b2@3 ~, ab1@15 ~ [b1,f4]@15 ~, ab2@3 ~ b2@3 ~, ~@8 [ab3,c4,eb4]@7 ~@9 [ab3,d4]@7 ~", // Ab Abdim Bdim Ab Abdim
  Z: "bb3@8 ~@12 bb3@4 ~@4 eb3@3 ~, g3@31 ~, eb3@24 [bb3,eb4,g4]@7 ~, [eb2,eb4]@12 eb2@19 ~, ~@8 bb3@4 [eb4,g4]@8 bb4@11 ~", // Eb
  AA: "[ab3,eb4]@2 ~ eb2 ~@3 [ab4,c5], [eb3,c4]@12 eb2 eb4@3, eb2@3 ~ eb5@4, ~ ab3@3, ~@4 eb4@4 [eb2,c5] ab4 eb4 [bb4,db5]@5", // Ab5 Ab Cm Bbm
  AB: "eb2@2 ~ [bb3,eb4,g4]@2 ~@2 [eb3,db4,eb4], eb3@6 db4 ~, [bb3,eb4,g4]@12 ~@8 [bb3,g4]@11 ~, ~@4 eb2@6 [eb2,eb4]@3 eb2@3, ~@24 f4@7 ~", // Eb Eb7 Eb
  AC: "[[eb2,ab3,c4,eb4]@3 ~@12 eb4 eb2@4 ~@2 [eb4,g4]@4 ~@4 eb4@2, eb3@18 c5@10 c4@4 [bb3,eb4]@11 bb3@9 eb4@8 ~@4, ~@3 eb2@5 [eb2,eb5]@7 eb3@11 [eb3,bb3,g4]@6, ~@7 ab3@25 g3@20 ~@4 [db4,f4]@8, ~@4 [c4,eb4]@6 ab4 eb4 [eb3,c4] ab4@3 ~@4 eb2@12]/2", // Ab Eb Eb5 Eb Db Cm
  AD: "~ [c4,eb4]@6 ~@9 eb2@15 ~, ab3@7 ab3@23 ~@2, ~ eb3@30 ~, ~ eb2@8 eb4@23, ~ c4@3", // Cm
  AE: "eb2 ~@2 [bb3,eb4,g4], eb3, [bb3,eb4,g4]@3 [bb3,eb4,g4]@3 ~@2, ~@2 eb2@3 eb2@3", // Eb
  AF: "[eb2,ab3,c4,eb4]@8 ~@4 [ab3,c4,eb4]@8 c4@4 ~@4 ab3@3 ~, eb3@20 bb3 ~@3 bb3@7 ~, ~@8 eb2@12 [eb2,eb3,eb4]@11 ~", // Ab Eb
  AG: "eb2@8 eb2@4 bb3@8 bb3@4 ~@4 eb2@3 ~, [eb3,g3,bb3,eb4]@12 eb3@19 ~, ~@3 eb2@4 ~, ~@12 [eb4,g4]@12 [bb3,eb4,g4]@7 ~", // Eb
  AH: "[eb2,c4,eb4]@8 eb4@2 ~@2 eb2@3 ~ [eb3,f4,ab4,db5]@8 ~@4 eb3@3 ~, eb3@15 ~ eb2@15 ~, ab3@2 ~@6 [ab4,c5]@7 ~@9 [eb4,ab4,c5]@7 ~", // Cm Db Ab
  AI: "eb2@8 eb2@4 d4@8 ~@8 eb3@3 ~, [eb3,eb4,g4,bb4]@12 eb2@19 ~, ~@3 eb3@4 ~, ~@12 [g4,bb4]@12 [g4,bb4,d5]@7 ~, ~@20 d4@11 ~", // Eb Gm
  AJ: "f2@8 f2@4 [c4,eb4,ab4]@12 [c4,eb4,ab4]@7 ~, f3@31 ~, [eb4,ab4,c5]@12 f2@19 ~", // Ab
  AK: "[bb3,eb4,g4]@8 bb3@4 bb3@4 c4@4 ~@8 eb4@3 ~, [eb2,eb3]@16 eb3@15 ~, ~@8 [eb4,g4]@8 [eb2,eb4,ab4]@6 ab4@9 ~, ~@20 c4@4 eb2@7 ~, ~@22 eb4@4 c4@5 ~", // Eb Ab5
  AL: "bb3@4 bb3@4 [eb2,eb3,bb3,eb4,g4]@3 ~ [eb2,eb3,c4,eb4,ab4]@7 ~ c4@4 ~@4 ab3@4, [eb2,eb3,eb4,g4]@2 ~@3 [eb2,eb3,eb4]@3, ~@20 bb3 ~@3 bb3@8", // Eb Ab Eb
  AM: "[eb2,eb3,g3,bb3,eb4]@2 ~@6 [eb2,eb3,bb3,eb4,g4]@7 ~ [d2,d3,bb3,d4,f4]@7 ~ [c2,c3,g3,c4,eb4]@7 ~", // Eb Bb Cm
  AN: "bb1@4 bb1@2 f3@4 ~@3 d4@2 f4, bb2, [f3,bb3,d4]@6 f4@9 ~, ~@3 [bb1,bb3,d4]@3 [bb1,bb3]@2, ~@5 f3@3", // Bb
  AO: "[ab3,d4,f4,bb4]@4 ~@2 bb1@2 ab3 ab3@2 ~@3 f4@2, bb2 [bb2,d4], bb1@6 ~@2 bb1@3 ab3@5, ~ [ab3,d4,f4,bb4] [f4,bb4] bb1, ~@22 g4@7 ~@3", // Bb7 Bb Bb7 Bb5
  AP: "[bb3,eb4,g4]@8 ~@4 eb3@4 [bb3,eb4,g4]@8 ~@4 d3@3 ~, eb2@16 d2@15 ~, eb3@3 ~ d3@3 ~, ~@8 [bb3,eb4,g4]@8 ~@8 [bb3,eb4,g4]@7 ~", // Eb
  AQ: "[db4,g4]@8 ~@4 db3@4 [f2,f3,g4,bb4,db5,g5]@8 [g2,g3,f4,bb4,db5,f5]@7 ~, [db2,bb3] ~, db3@3 ~@5, ~ [db4,g4,bb4] ~@2", // Dbdim Gm7b5 Gb Gdim
  AR: "[eb4,ab4,c5,eb5]@8 ~@4 ab3@4 [a4,c5,f5]@8 ~@4 f3@3 ~, ab2@16 [f2,f4]@15 ~, ab3@3 ~ f3@3 ~, ~@8 [eb4,ab4,c5,eb5]@8 ~@8 [eb4,a4,c5,f5]@7 ~", // Ab F Ab F7
  AS: "[f4,bb4,d5,f5]@2 [f4,bb4,d5,f5]@2 [eb2,eb3,g4,bb4,db5,g5]@2 ~ [g2,g3], [bb2,bb3]@2 ~ [f4,bb4,db5,f5]", // Bb Eb7 G Bb Bbm
  AT: "[eb4,ab4,c5,eb5]@2 ~ ab3 [ab2,ab3,eb4,ab4,d5]@2 [a2,eb4,gb4,c5]@2, ab2 ~, ab3@3 ~@5, ~ [eb4,ab4,c5,eb5] ~@2", // Ab Adim Ab
  AU: "~@12 bb2@3 ~@9 e4@7 ~, [bb1,eb4,g4,c5]@15 ~@17, bb2@12 ~@4 [c3,f4,g4]@15 ~, ~@8 bb4@7 ~@5 bb4@11 ~", // Cm7 Csus4
  AV: "ab4@8 ~@4 c5@4 f5@8 ~@4 [d2,d3]@3 ~, [ab1,ab2,c4,eb4]@16 [b1,b2,d5,g5]@15 ~, ~@8 ab4@8 ~@8 [g4,b4,f5]@7 ~", // D Ab G G7
  AW: "[eb4,g4,c5,eb5]@2 ~ bb4 [f1,f2,g4,bb4,db5,g5]@2 [g1,g2,g3,f4,bb4,db5,f5]@2, [c2,c3]@3 ~, ~ [eb4,c5,eb5]@2 ~, ~ g4 ~@2", // Cm Gm7b5 C Cm
  AX: "[eb4,ab4,c5,eb5]@2 ~ ab3 [ab2,ab3,eb4,ab4,d5]@2 [a2,a3,eb4,gb4,c5]@2, ab2 ~, ab3@3 ~@5, ~ [eb4,ab4,c5,eb5] ~@2", // Ab Adim Ab
  AY: "~@12 bb1@3 ~@9 [bb3,eb4]@7 ~, [bb2,eb4,g4,c5] [c3,g4], ~@8 bb4@8 f4@9 ~@7, ~@5 bb4@3", // Eb5 Cm7 C5
  AZ: "[c4,eb4,ab4]@8 ~@4 [ab1,ab2]@3 ~ b3@8 ~@4 [b1,b2]@3 ~, [ab1,ab2]@12 ~@4 [g1,g2,eb4,g4]@15 ~, ~@8 [c4,eb4,ab4]@7 ~@9 [b3,d4,f4]@7 ~", // Ab B Ab Cm Ab Bdim
  BA: "[c4,eb4,g4]@4 [c4,eb4,g4]@4 [c4,eb4,g4]@3 ~ [c4,eb4,g4]@4 [c4,eb4,g4]@4 [c4,eb4,g4]@3 ~ [c4,eb4,g4]@4 [c4,eb4,g4]@3 ~, [c2,c3]@11 ~ [b1,b2]@11 ~ [bb1,bb2]@7 ~", // Cm C B Bb
  BB: "[eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@3 ~ [f4,f5]@2 [g4,g5]@2 [ab4,ab5]@4, [f2,f3]@12 [e2,e3]@11 ~ [eb2,eb3]@8", // D F G Ab F E Eb
  BC: "g4@2 ~@2 bb4@2 [g4,bb4,eb5,g5] ~@7 [d4,d5]@2, [eb2,eb3,eb5,g5]@14 ~ [bb1,bb4]@17, bb4@8 ~@7 d5@5 [f4,f5]@12, ~@2 g4@4 ~ g4@5 [eb4,eb5]@4, ~ [bb2,g5]", // Eb D Eb Bb F Eb
  BD: "~@12 f5@3 ~@13 g2@4, [ab1,eb4]@15 ~@5 g2@8 ~@4, [ab4,c5,eb5]@8 [ab2,ab4,c5,eb5]@7 ~ [g4,c5]@8 [c3,eb4,g4,c5]@8, ~@4 eb2@11 ~ [c2,eb5]@16", // Ab5 Ab C5 Cm
  BE: "[eb4,ab4,c5,eb5]@4 eb4@2 ~ ab1 [eb4,ab4]@2 ~@4 eb4 ab2, [ab1,ab2]@16 ab1@15 ~, ~@2 [ab4,c5,eb5]@2 ~ eb4@2 ~, ~@6 eb4@2 [ab2,b4,eb5]@4 ab2@3 ~, ~@22 ab4@4 [ab4,b4,eb5]@5 ~", // Ab Ab5 Ab Abm
  BF: "~@13 [db4,eb4]@2 eb2, eb5@24 eb1@7 ~, eb2@12 [eb4,g4]@4 eb2@4 eb4@2 f4@9 ~, [eb4,g4,bb4]@12 bb4@19 ~, ~@8 eb1@12 g4@11 ~", // Dbsus2 Eb
  BG: "~@12 eb4@3 ~@5 eb4@2 ~@6 eb4@2 ab2@2, [ab1,ab3,c4]@15 ~ [ab1,eb5]@15 ~, eb4@12 ~@4 c5@6 eb4@4 [ab4,c5]@5 ~, ~@8 ab2@9 ~ ab4@6 ab2@6 ~@2, ~@22 [bb4,db5]@9 ~", // Ab Ab5 Ab Bbm
  BH: "~@20 eb4@4 ~@4 eb2@3 ~, bb4@26 eb4@5 ~, eb1@16 eb1@15 ~, [eb4,g4]@12 [bb3,eb4,g4]@8 [bb3,g4]@11 ~, ~@8 eb2@16 [ab3,f4]@7 ~", // Eb Db
  BI: "[ab3,c4]@4 [ab3,c4]@2 [ab3,c4,eb4]@4 [ab3,c4]@2 ~ ab3@3, ab1@3 [ab1,c4], eb4@3 ab2@5, ~@5 eb4@3", // Ab
  BJ: "eb1@2 ~@5 eb3, eb2!2, [g3,bb3,eb4]@3 [bb3,eb4]@5, ~ eb1@2 [eb1,f3], ~@3 g3@2 g3@3", // Eb Eb5 Ebsus2
  BK: "ab3@2 ~@3 ab4@3, [eb1,eb2,eb3]@31 ~, c4@12 c4@19 ~, ~@8 ab3@23 ~, ~@16 eb4@15 ~", // Eb
  BL: "eb2@8 eb2@4 bb3@8 bb3@4 ~@4 eb3@3 ~, eb3@26 [g3,bb3,eb4]@5 ~, [g3,bb3,eb4]@12 g4@19 ~, ~@12 eb4@12 eb2@7 ~", // Eb
  BM: "ab3@8 ab3@4 ~@8 ab3@4 c4@2 ~@2 eb3@3 ~, [eb3,eb4]@26 [ab3,c4,eb4]@5 ~, eb2@12 ab3@4 eb2@15 ~, c4@12 ab4@19 ~, ~@3 c4@3 eb3 ~", // Eb Ab
  BN: "g3@8 g3@4 ~@16 eb4@3 ~, eb3@20 g3@11 ~, eb2@12 g3@4 eb2@15 ~, [bb3,eb4]@3 eb4@4 ~, ~@12 bb3@12 [eb3,bb3,f4]@7 ~", // Eb5 Ebsus2
  BO: "[eb2,eb3,ab3,c4,eb4]@8 [ab2,ab3,eb4,ab4,c5]@7 ~ ab4@8 [eb4,ab4,c5]@8, ~ [ab2,ab3,f4,db5]", // Ab Db
  BP: "eb2@8 eb2@4 d4@8 d4@4 ~@4 eb3@3 ~, [eb3,eb4,g4,bb4]@12 [eb2,g4]@19 ~, ~@3 eb3@4 ~, ~@12 bb4@12 [d4,bb4,d5]@7 ~", // Eb Gm
  BQ: "f2@2 f2 ~@4 ab3, [f3,eb4,ab4,c5]@3 [f2,f3,c4]@5, ~@3 [eb4,ab4]@3 [eb4,ab4,c5]@2, ~@5 ab2@3", // Fm7 F5 Ab5 Ab
  BR: "[eb4,g4,bb4]@4 eb4@2 [eb3,eb4] g4 [eb4,ab4]@2 ~@3 eb4 [eb3,eb4] ab4, eb2@15 ~ eb2@15 ~, eb3@3 ~ [eb3,c5]@3 ~, ~@8 [g4,bb4]@7 ~@5 eb4@4 ab2@7 ~, ~@22 ab4@4 [ab4,c5]@5 ~", // Eb Ab5 Eb Cm Gm Ab
  BS: "eb3@8 eb3@4 [ab3,c4,eb4]@7 ~ [ab2,c4,eb4]@4 [g2,bb3,eb4]@4 [f2,ab3,eb4]@4, [eb2,eb4,g4,bb4]@12 ab2@4 ~@4 bb3 ~@11", // Ab Eb Fm7 Eb
  BT: "[eb2,g3,bb3,eb4]@2 ~@6 [eb2,eb3,bb3,eb4,g4]@8 [d2,d3,f3,bb3,f4]@7 ~ [c2,c3,g3,c4,eb4]@8", // Eb Bb Cm
  BU: "[f3,bb3,d4,f4]@4 f3@2 ~ bb3 [f3,bb3,d4]@2 f3 ~@3 d4 f4, bb2@11 bb3 bb2 bb3@2 ~, bb1@6 f3@2 bb1@7 ~, ~@4 f4@11 ~, ~@4 [bb3,d4]@4 ~@3 [f3,d4]@4 ~", // Bb Dm
  BV: "[bb3,d4,f4,bb4]@4 bb3@2 [bb1,bb3] d4 bb3 ~ bb3 ~@2 bb3 [d2,d3,bb3] d4, bb2@15 ~ [bb2,d4,g4]@6 [bb3,d4]@4 [d4,f4]@5 ~, bb1@12 ~@4 bb1@15 ~, ~@8 [d4,f4,bb4]@7 ~@7 g4@9 ~, ~@24 bb2@7 ~", // Bb Gm Bb Dm Bb
  BW: "[bb3,eb4,g4]@8 bb3@2 ~@4 g4@2 bb3@4 bb3@2 ~@6 d4@2 g4 ~, [eb2,eb3]@16 [d2,d4,g4]@6 bb3@4 bb3@5 ~, ~@4 [eb4,g4]@2 eb4@2 ~@3 [d4,g4]@4 ~, ~@10 bb3@6 d3@15 ~, ~@24 d2@7 ~", // Eb G5 Eb G5
  BX: "[bb3,db4,g4]@2 ~ db3 [eb2,db4,g4,bb4]@2 ~ g2, db2@16 ~@8 [f2,g3,bb3,db4,g4]@7 ~, db3@3 ~@5, ~ [bb3,db4,g4] ~@2", // Gdim Eb7 Gm7b5 Gdim
  BY: "[eb3,ab3,c4,eb4]@8 eb3@4 [ab2,eb3]@3 ~ [f3,a3]@4 ~@2 a3@4 f3@2 [a2,f3]@2 c4 ~, ab2@12 ~@4 f2@15 ~, ~@8 [ab3,c4,eb4]@7 ~ [c4,f4]@10 [a3,c4,f4]@6, ~@10 f3@3 ~@3", // Ab Ab5 F Dm Ab F5 F
  BZ: "[f3,bb3,d4]@8 ~@4 bb1@3 ~ [eb2,g3,bb3,db4,g4]@8 [bb2,f3,bb3,d4,f4]@7 ~, bb2@15 ~@17, ~@8 [f3,bb3,d4,f4]@7 ~@17", // Bb Eb7 Bb
  CA: "[eb3,ab3,c4,eb4]@4 eb3@2 eb3 c4 eb3@2 eb3@2 eb3@2 eb3@2, ab2@15 ~ [ab2,ab3,d4]@8 [a2,gb3,c4]@8, ~@8 [ab3,c4,eb4]@7 ~@17", // Ab Abdim Gbdim Ab
  CB: "~@12 bb2@3 ~@9 eb4@7 ~, [bb1,g3,c4,eb4,g4,c5]@15 ~@17, bb2@12 ~@4 [c3,f4,g4]@15 ~, ~@8 bb4@7 ~@5 bb4@11 ~", // Cm7 Csus4
  CC: "[eb4,g4,c5,eb5]@2 ~ bb4 [eb1,g4,bb4,db5,g5]@2 [g1,g2,g3,f4,bb4,db5,f5]@2, [c2,c3]@3 ~, ~ [eb4,c5,eb5]@2 ~, ~ g4 ~@2", // Cm Eb7 Gm7b5 C Cm
  CD: "[eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@4 [eb4,a4,d5]@3 ~ [eb2,eb3]@8, [f2,f3]@12 [e2,e3]@11 ~@9", // D Eb F E
  CE: "eb2@8 ~@20 eb3@3 ~, eb3@7 ~, [g4,bb4,eb5]@11 ~ [bb4,eb5,g5]@12 [bb4,eb5,g5,bb5]@7 ~, ~@8 eb2@12 eb2@11 ~", // Eb
  CF: "ab2@8 ~@20 ab2@3 ~, ab3@31 ~, [c5,eb5,ab5]@12 [eb5,ab5,c6]@12 [eb5,ab5,c6,eb6]@7 ~, ~@2 ab2@3 ab2@2 ~", // Ab
  CG: "[eb5,ab5]@2 ~@2 ab2 ~@2 ab3, [ab2,c5]@15 ~@5 ab2@12, ab3@3 ab3@4 ~, ~@8 [eb5,ab5,c6]@7 ~ [eb5,ab5,b5]@8 [eb5,ab5,b5,eb6]@8", // Ab5 Ab Abm
  CH: "[[eb2,eb3,g5,bb5,eb6,g6]@11 ~@5]/3", // Eb
})).s("gm_piano").gain(0.52).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@63 A@6 B C B D E F G H@2 I@3 J K L M N O P Q R S T U V W X Y@4>".pickRestart({
  A: "[[g3,bb3] [ab3,c4] [g3,bb3] [ab3,c4] [g3,bb3] [ab3,c4], eb4]/6", B: "[g3,g4]@5 [g3,g4] [f3,f4] [eb3,eb4]",
  C: "[eb3,eb4]", D: "[eb3,eb4]!2 [f3,f4] [eb3,eb4]", E: "[g3,bb3,g4,bb4]", F: "[ab3,c4,ab4,c5]",
  G: "[g3,g4]@2 [ab3,ab4] [c5,c6], [eb4,eb5]", // G Ab C Eb
  H: "[[bb4,bb5] [g4,g5] [f4,f5] ~@2 [c4,c5] [bb3,bb4] [ab3,ab4] [g3,g4]@2 ~@4 [bb3,bb4]@2, ~@12 [eb4,eb5]@27 ~@25]/2", // Bb G F C Bb Ab G Bb …
  I: "[bb4,bb5]/3", J: "[g4,g5]", K: "[ab4,c5,ab5,c6] [a4,eb5,a5,eb6]", L: "[d5,d6]@2 [eb5,eb6] [d5,d6], [bb4,bb5]",
  M: "[c5,c6]@2 [d5,d6] [a4,eb5,a5,eb6], [ab4,ab5]@3 ~", N: "[bb4,eb5,bb5,eb6] [g4,c5,g5,c6]",
  O: "[ab4,c5,ab5,c6] [b4,d5,b5,d6]", P: "[c5,eb5,c6,eb6]@8 [eb4,g4,eb5,g5]@3 [f4,ab4,f5,ab5]@3 [g4,bb4,g5,bb5]@2",
  Q: "[eb4,c5,eb5,c6]@8 [d4,d5,d6]@3 [eb4,eb5,eb6]@3 [f4,f5,f6]@2", // Cm D Eb F
  R: "[g4,g5,g6]@3 [ab4,ab5,ab6]@2 [bb4,bb5,bb6]@3 [eb4,eb5,eb6]@8", S: "[ab4,ab5,ab6]@6 [g4,g5,g6] [f4,f5,f6]",
  T: "[g4,g5,g6]", U: "[f4,f5,f6]@31 ~",
  V: "[g4,g5,g6]@11 ~ [g4,g5,g6]@3 ~ [g4,g5,g6]@4 [f4,f5,f6]@4 [eb4,eb5,eb6]@4 [f4,f5,f6]@4", // G F Eb F
  W: "[eb4,eb5,eb6] [g4,g5,g6]", X: "[ab4,eb5,ab5,eb6,ab6]@2 [ab4,b4,ab5,b5,ab6] [ab4,eb5,ab5,eb6,ab6]",
  Y: "[[g6,bb6]@51 ~@13, [bb4,g5]@43 ~@21, bb5@41 ~@23]/4", // Gm Eb
})).s("gm_string_ensemble_1").gain(0.18)

// chords · vibraphone
const vibraphone = note(`<
  ~@36 A B C D E B F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AB AC AD A B C D E B F G H I J K L M AE O AF Q R S
  T U V W C AG AH AI@4
>`.pickRestart({
  A: "[g4,bb4,eb5]@15 ~", B: "[eb4,ab4,c5]@29 ~@3", C: "[bb4,eb5,g5]@29 ~@3",
  D: "~@8 [eb4,ab4,c5]@7 ~ [f4,ab4,db5]@7 ~ [eb4,ab4,c5]@8", E: "[eb4,g4,bb4]@15 ~",
  F: "[eb4,g4,bb4]@15 ~ [eb4,ab4,c5]@16", G: "[eb4,g4,bb4]@12 [ab4,c5,eb5]@19 ~",
  H: "[eb4,g4,bb4]@5 ~@3 [g4,bb4]@7 ~ [f4,bb4]@7 ~ [eb4,bb4]@7 ~", I: "[d4,f4,bb4]@7 ~", J: "bb4@24 ab4@7 ~, [f4,d5]",
  K: "[g4,bb4,eb5]@15 ~ [g4,bb4,d5]@15 ~", L: "[g4,bb4,db5]@15 ~", M: "[eb4,ab4,c5]@16 [eb4,a4,c5]@15 ~",
  N: "[f4,bb4,d5]@16 [g4,bb4,eb5]@7 ~ [f4,bb4,db5]@8", O: "[ab4,c5,eb5]@16 d5@8 c5@7 ~, ~@16 gb4@15 ~",
  P: "c5@4 bb4@10 ~@10 e4@7 ~, [eb4,g4]@16 g4@15 ~, ~@2 f4 ~, ~@20 bb4@11 ~", Q: "[eb4,ab4,c5]@8 [f4,b4,d5]@7 ~",
  R: "[g4,c5,eb5]@15 ~ [g4,db5,eb5]@15 ~", S: "[eb4,ab4,c5]@2 [eb4,ab4,d5] [eb4,gb4,c5]",
  T: "c5@4 ~@12 c5@15 ~, g4@31 ~, eb4 ~, ~@4 bb4@27 ~", U: "[ab4,c5,eb5]@15 ~ eb5@8 d5@7 ~, ~@16 [g4,b4]@15 ~",
  V: "[g4,c5,eb5]@27 ~@5", W: "[f4,a4,c5]@31 ~", X: "[bb4,eb5,g5]@15 ~ g5@8 f5@8, ~ [bb4,d5]",
  Y: "[ab4,c5,eb5] [g4,c5,eb5]", Z: "[ab4,c5,eb5]@15 ~ [ab4,b4,eb5]@16", AA: "[g4,bb4]@23 ~ [eb5,g5,bb5]@7 ~, eb5 ~@31",
  AB: "[eb5,ab5,c6]@31 ~", AC: "[eb5,g5,bb5]@31 ~", AD: "ab5@19 ~ ab5@8 ~@4, [eb5,c6]",
  AE: "[f4,bb4,d5]@16 [g4,bb4,eb5]@7 ~ [f4,bb4,d5]@8", // Bb Eb Bb
  AF: "c5@4 bb4@10 ~@10 eb4@7 ~, [eb4,g4]@16 g4@15 ~, ~@2 f4 ~, ~@20 bb4@11 ~", AG: "[c5,eb5,ab5]@29 ~@3",
  AH: "~@8 c6@6 ~@2 [b4,eb5,ab5,b5]@15 ~, [c5,eb5,ab5]@7 ~@9", // Abm Ab
  AI: "[~@34 bb6@67 ~@27, [bb4,eb5,g5,bb5]@103 ~@25, ~@20 eb6@83 ~@25, ~@13 g6@38 ~@13]/4", // Eb
})).s("gm_vibraphone").gain(0.22).pan(0.3)

// bass · contrabass
const bass_2 = note("<~@93 A B C D@4>".pickRestart({
  A: "bb3@2 ~@2 eb3 ~@3 d3 ~@3 c3@2 ~@2 bb2@2 ~@2 eb3 ~@3 g3 ~@3 bb3@2 ~@2",
  B: "ab3 ~ eb3 ~ c3 ~ d3 ~ c3 ~ d3 ~ eb3 ~ f3 ~", C: "ab2 ~ bb2 ~ c3 ~ eb3 ~ ab3 ~ bb3 ~ b3 ~ eb4 ~",
  D: "[eb4@51 ~@13]/4",
})).s("gm_contrabass").gain(0.52).pan(0.4)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@7 A@8 B C@6 D@6 E F@4 G@6 H@5 C@6 I@7 J@3 K L@7 A@8 B C@6 M@7 N@2 O@8>".pickRestart({
  A: "[~@31 [bb3,g4]@32 [ab3,c4]@32 [bb3,eb4,g4]@32 [c4,eb4]@16 [db4,f4]@8 [c4,eb4]@8 ~@12 d4@20 [ab3,c4,eb4]@32 [bb3,eb4,g4]@16 [c4,eb4,ab4]@16 [bb3,eb4,g4], ~@31 eb4@64 ~@32 ab3@32 [bb3,g4]@32 ~@65, ~@159 eb4@16 ~@81]/8", // Eb Ab Eb Cm Db Cm Ab Eb …
  B: "~@11 [c4,eb4,ab4]@20 [bb3,eb4,g4]", // Ab Eb
  C: "[~@7 [bb3,eb4,g4]@7 ~ [bb3,d4,f4]@7 ~ [g3,c4,eb4]@7 ~ f3@32 ~@24 ab3@8 eb4@16 d4@16 db4@32 ab4@16 a4@16 [d4,f4,bb4], ~@31 d4@64 ~@64 [c4,eb4]@32 ~, ~@31 bb3@56 ~@8 [bb3,g4]@64 ~@33, ~@63 f4@32 ~@97]/6", // Eb Bb Cm Bb Cm Eb
  D: "[~@15 g4@8 f4@8 ab4@24 gb4@8 eb4@16 f4@8 e4@8 [c4,eb4,ab4]@16 [b3,f4,g4]@16 [c4,eb4,g4]@16 g4@8 f4@8 [ab3,c4]@24 [a3,c4]@8 [bb3,eb4,g4], ~@15 [bb3,db4]@16 [c4,eb4]@32 [bb3,g4]@32 ~@48 [bb3,db4]@16 ~@33, ~@79 c4@16 ~@64 eb4@30 ~@3]/6", // Ab G7 Cm Ab Am Eb Bbm Cm …
  E: "~@15 f4@8 e4@8 [ab3,c4,eb4], ~@15 [bb3,c4,g4]@15 ~@2", // Ab C7
  F: "[~@15 [d4,f4]@15 ~ [bb3,eb4,g4]@29 ~@3 [ab3,c4,eb4]@29 ~@3 [g3,bb3,eb4]@30 ~@2 [ab3,c4,eb4]]/4", // Dm Eb Ab Eb Ab
  G: "[~@31 [g3,bb3,eb4]@30 ~@2 [ab3,c4,eb4]@30 ~@2 [bb3,g4]@32 [ab3,c4]@32 [bb3,eb4,g4]@32 [ab3,c4,eb4], ~@95 eb4@64 ~@33]/6", // Eb Ab Eb Ab Eb Ab
  H: "[~@15 [db4,f4]@8 [c4,eb4]@8 ~@12 d4@20 [ab3,c4,eb4]@32 [bb3,eb4,g4]@16 [c4,eb4,ab4]@16 [bb3,eb4,g4]@12 [c4,eb4,ab4]@20 [bb3,eb4,g4], ~@31 [bb3,g4]@32 ~@97, ~@31 eb4@16 ~@113]/5", // Db Cm Ab Eb Ab Eb Ab Eb
  I: "[~@15 g4@8 f4@8 ab4@24 gb4@8 eb4@16 f4@8 e4@8 [c4,eb4,ab4]@16 [b3,f4,g4]@16 [c4,eb4,g4]@16 g4@8 f4@8 [ab3,c4]@24 [a3,c4]@8 [bb3,eb4,g4]@16 f4@8 eb4@8 [c4,eb4,ab4], ~@15 [bb3,db4]@16 [c4,eb4]@32 [bb3,g4]@32 ~@48 [bb3,db4]@16 ~@48 [bb3,c4,g4]@15 ~@2, ~@79 c4@16 ~@64 eb4@30 ~@35]/7", // Ab G7 Cm Ab Am Eb Ab Bbm …
  J: "[~@15 [eb4,g4]@8 [d4,f4]@8 c4@12 b3@12 bb3@8 f4@12 e4@12 eb4@8 [bb3,eb4,g4], ~@15 b3@16 [eb4,g4]@32 [a3,c4]@32 ~]/3", // Eb Dm Eb Am
  K: "~@15 [d4,f4]@16 [ab3,c4,eb4]", // Dm Ab
  L: "[~@15 g3@16 c4@16 b3@16 [g3,bb3]@32 [ab3,c4]@32 [g3,bb3]@32 [ab3,c4]@32 [g3,bb3,eb4]@32 [ab3,c4], ~@31 eb4@160 ~@33, ~@31 ab3@32 ~@161]/7", // Gm Ab Gm Ab Eb Ab
  M: "[~@15 [eb4,g4]@8 f4@8 ab4@24 gb4@8 eb4@16 f4@8 eb4@8 [c4,eb4,ab4]@16 [b3,f4,g4]@16 [c4,eb4,g4]@16 g4@8 f4@8 [ab3,c4]@24 [a3,c4]@8 [bb3,eb4,g4]@16 f4@8 eb4@8 [c4,eb4,ab4], ~@15 bb3@16 [c4,eb4]@32 [bb3,g4]@32 ~@48 [bb3,db4]@16 ~@48 [c4,g4]@15 ~@2, ~@79 c4@16 ~@64 eb4@30 ~@35]/7", // Eb Ab G7 Cm Ab Am Eb Ab …
  N: "[~@15 [eb4,g4]@8 [d4,f4]@8 c4@12 b3@12 bb3@8 [a3,c4,f4], ~@15 b3@16 [eb4,g4]@32 ~]/2", // Eb Dm F Eb
  O: "[~@11 e4@12 eb4@8 [bb3,eb4,g4]@32 c4@48 b3@16 [bb3,eb4,g4]@98 ~@31, ~@63 [eb4,ab4]@64 ~@129]/8", // Eb Ab5
})).s("gm_synth_strings_1").gain(0.12)

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

// drums · snare
const snare = s("sd").struct("<~@66 [~ x ~ x]!11 [~@4 x!4] [~ x ~ x]!15 [~@3 x!5] [x!8]!2 x ~@3>").gain(0.36)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@63 [~ x ~@2]!3 ~@11 [~@2 x!2 ~@4] ~@22>").gain(0.18)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@8 B A@27 B A@18 C@28 D@5 E ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "x!4", D: "x!8", E: "x",
})).gain(0.36)

// drums · low tom
// … 24 more lines

More by Simon & Garfunkel