Strudelify
Bridge Over Toubled Water cover art

1970 · Bridge Over Troubled Water

Bridge Over Toubled Water

Simon & Garfunkel

KeyE♭ majorTempo100 bpm
0:00/0:00
// Bridge Over Toubled Water — Simon & Garfunkel
// 100 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@2 A B C D E F G F G H I J K L M@2 N O P Q R S T B C U V B W X Y Z G F G F AA AB AC AD AE AF AG AH AI AJ AK AL AM AN
  AO AP AQ AR AS AP AT AU AV AW AX AY AZ BA BB BC AC BD BB G BE BF J K BG BH M N BI@2 Q R BJ BK BL BM BN V BO BP X BQ BR
  BS BT BU BV
>`.pickRestart({
  A: "eb2@5 ~ eb2 ~ bb1@6 bb1 ~", B: "ab2@5 ~ ab2 ~ ab2@4 a1@4", C: "bb1@5 ~ bb1 ~ bb1@4 c2@4",
  D: "ab2@6 ab2 ~ ab2@5 ~ ab2 ~", E: "eb2@5 ~ eb2 ~ eb2@6 bb1 ~", F: "eb3@5 ~ eb3 ~ eb3@3 eb3 eb2@3 ~",
  G: "eb2@5 ~ eb2 ~ eb2@4 eb2@4", H: "eb2@5 ~ eb2 ~ eb2@4 eb2@3 ~", I: "eb2@5 ~ eb2 ~ eb2@6 g2@2",
  J: "ab2@5 ~ ab2 ~ db2@4 ab2@4", K: "eb2@5 ~ eb2 ~ eb2@5 ~ eb2 ~", L: "bb1@4 ~@2 bb1 ~ bb1@6 c2@2",
  M: "eb2@6 eb2 ~ ab2@5 ~ ab2 ~", N: "eb2@5 ~ eb2 ~ d2@4 c2@4", O: "bb1@5 ~ bb1 ~ bb1@6 f2 ~",
  P: "bb1@5 ~ bb1 ~ bb1@6 bb1@2", Q: "eb2@5 ~ eb2 ~ d2@5 ~ d2 ~", R: "db2@5 ~ db2 ~ db2@6 db2 ~",
  S: "ab2@5 ~ ab2 ~ f2@6 f2 ~", T: "bb1@5 ~ bb1 ~ eb2@4 eb2@4", U: "ab2@5 ~ ab2 ~ b1@6 d2 ~",
  V: "c2@5 ~ c2 ~ eb2@4 eb2@4", W: "bb1@6 bb1 ~ bb1@4 c2@4", X: "ab2@5 ~ ab2 ~ b1@6 b1 ~", Y: "eb2@6 bb1 ~ eb2@4 eb2@4",
  Z: "eb2@5 ~ eb2 ~ eb2@6 eb2!2", AA: "eb2@6 ~ eb2 eb2@3 eb2 eb2@3 eb2", AB: "eb2@6 ~ eb2!2 ~ eb2@4 eb2!2",
  AC: "eb2@6 ~ eb2 eb2@6 ~ eb2", AD: "ab2@6 ~ ab2 db2@3 db2 ab2@3 ab2", AE: "eb2@6 ~ eb2 eb2@7 eb1",
  AF: "bb1@6 ~ bb1!2 ~ bb1@5 bb0", AG: "eb2@6 ~ eb2 ab2@6 ~ ab2", AH: "eb2@6 ~ eb2 ab2 ~ ab2@2 ab3@2 ab2@2",
  AI: "eb2@7 eb1 d2@4 c2@4", AJ: "bb1@6 ~ bb1!2 ~ bb1@4 bb1 ~", AK: "bb1@6 ~ bb1 bb1@6 ~ bb1",
  AL: "eb2@6 ~ eb2 d2 ~ d2@2 bb2@2 d2!2", AM: "db2@6 ~ db2 db2@7 f2", AN: "ab2@6 ~ ab2 f2 ~ f2@2 f3@2 f2@2",
  AO: "bb1@6 ~ bb1 eb2@4 eb2@4", AP: "ab2@6 ~ ab2 ab2@4 a1@4", AQ: "bb1@6 ~ bb1 bb1@4 c2@4",
  AR: "ab2@6 ~ ab2 b1 ~ b1@2 d3@2 b1!2", AS: "c2@7 c1 eb2@3 eb2 eb2@4", AT: "bb1@6 ~ bb1 c2@7 c1",
  AU: "ab2@6 ~ ab2 bb1 ~ bb1@2 bb2@2 bb1@2", AV: "c2@6 ~ c2 c2@6 c2!2", AW: "f2@6 ~ f2!2 ~ f2@4 f2 e2",
  AX: "eb2@6 ~ eb2 bb1@6 ~ bb1", AY: "ab2@6 ~ ab2 c2 ~ c2@2 g2@2 c2!2", AZ: "ab2@6 ~ ab2 ab2@6 ~ ab2",
  BA: "eb2@6 ~ eb2 eb2@3 eb2 eb2@4", BB: "eb2@6 ~ eb2 eb2@7 eb2", BC: "eb2@6 ~ eb2 eb2@4 eb2@4",
  BD: "eb2@7 eb1 eb2@4 eb2@3 eb2", BE: "bb2@5 ~ bb2 ~ bb2@3 eb3 bb1@3 ~", BF: "eb2@5 ~ eb2 ~ eb2@6 eb2@2",
  BG: "b1@5 ~ b1 ~ b1@4 b1@3 ~", BH: "eb2@6 g2 ~ ab2@5 ~ ab2 ~", BI: "bb1@4 ~@2 bb1 ~ bb1@6 f1@2",
  BJ: "ab2@5 ~ ab2 ~ f2@5 ~ f2 ~", BK: "bb1@6 bb1 ~ eb2@4 eb2@4", BL: "ab2@6 eb2 ~ ab2@4 a1@4",
  BM: "bb1@5 ~ bb1 ~ c2@5 ~ c2 ~", BN: "ab2@6 ab2 ~ bb1@5 ~ bb1 ~", BO: "ab2@6 ab2 ~ ab2@4 a1@4",
  BP: "bb1@6 bb1 ~ c2@5 ~ c2 ~", BQ: "c2@5 ~ c2 ~ c2@6 g2 ~", BR: "f2@5 ~ f2 ~ f2@6 c2 ~",
  BS: "bb2@5 ~ bb2 ~ bb2@3 bb2 bb1@3 ~", BT: "ab2@5 ~ ab2 ~ ab2@6 ab2!2", BU: "ab2@6 ~ ab2 ab2@7 eb2", BV: "ab2",
})).s("gm_fretless_bass").gain(0.17)

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  ~@2 A B C D E F G F H I J K L M N O P Q R S T U V B C W X B C Y Z AA H F Z I Z AA AB K AC AD AE AF AG AH Q AI AJ AK AL
  AM C AN AO AP AQ AR AS AT AU AV AW G F G F Z I Z AX AY K AZ AD BA BB BC AH R AI T BD V AP BE BF BG BH BI BJ AS AT J BK
  BL BM
>`.pickRestart({
  A: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 f4@4 f4@2 f4 ~, eb3 [bb2,bb4,d5], ~@5 eb4@2 ~@9", // Eb Gm Bb
  B: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 [ab2,f4,bb4,d5]@4 [a2,eb4,gb4,a4,c5]@4, ab2 ~, ~@5 eb4@2 ~@9", // Ab Bb7 Adim
  C: "[bb2,eb4,g4,bb4]@7 ~ [bb1,bb3,d4,f4,g4]@4 [c2,e3,g3,bb3,c4]@4", // Eb Gm7 C7
  D: "[ab2,eb4,ab4,c5]@7 ~ [b3,eb4,f4,ab4]@5 ~ [eb4,f4,ab4]@2, ~ ab2, ~@13 b3@2 ~", // Ab Fm7b5 Fm7
  E: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 db4@4 db4@2 eb4@2, eb3 [eb3,g4,bb4], ~@5 eb4@2 ~ eb4@6 ~@2", // Eb Gm Eb
  F: "~@13 eb4!2 ~, [eb2,ab4,c5]@15 ~, eb4@13 ~@3, ~@6 c4@9 ~", // Ab
  G: "[eb3,eb4,g4,bb4]@7 ~ [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4", // Eb Eb7
  H: "eb4@4 eb4@2 eb4 ~ [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4, [eb3,g4,bb4] ~", // Eb Eb7 Eb
  I: "[ab4,c5,eb5]@13 ~ ab4 c5, eb4@12 ~ eb4@2 ~", J: "[g4,bb4,eb5]@13 ~ g4 bb4, eb4@12 ~ eb4@2 ~",
  K: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 [db3,db4,f4,ab4]@4 [ab2,eb4,ab4,c5]@4, ab2 ~, ~@5 eb4@2 ~@9", // Ab Db Ab
  L: "[eb3,eb4,g4,bb4]@7 ~ [eb3,db4,eb4,g4,b4]@7 ~", M: "~@14 f4 ~, [bb2,f4,ab4,c5]@15 ~, eb4@13 eb4@2 ~, ~@6 c4@9 ~",
  N: "eb4@4 eb4@2 eb4 ~ [eb4,ab4,c5]@5 ~ [ab4,c5]@2, [eb3,g4,bb4] ab2, ~@13 eb4@2 ~", // Ab Eb
  O: "[eb3,eb4,g4,bb4]@7 ~ [ab2,eb4,ab4,c5]@7 ~", // Eb Ab
  P: "eb4@4 eb4@2 eb4 ~ [d3,f4,bb4,d5]@4 [c2,g3,c4,eb4]@4, [eb3,g4,bb4] ~", // Bb Cm Eb
  Q: "~@13 f4!2 ~, [bb2,bb4,d5]@15 ~, f4@13 ~@3, ~@6 d4@9 ~", R: "~@6 f4@7 f4!2 bb4, [bb2,bb4,d5], f4@3 ~@5, ~ d4@3",
  S: "[eb3,eb4,g4,bb4]@7 ~ [eb4,g4,bb4]@5 ~ [g4,bb4]@2, ~ d3, ~@13 eb4@2 ~", // Eb Gm
  T: "[g4,bb4,db5,eb5]@13 ~ g4 bb4, db4@12 ~ db4@2 ~", U: "[ab2,eb4,ab4,c5]@7 ~ [f3,f4,a4,c5]@7 ~",
  V: "[bb2,f4,bb4,d5]@7 ~ [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4", // Bb Eb Eb7
  W: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 b3@4 b3@2 d4@2, ab2 [b1,f4,g4], ~@5 eb4@2 ~ d4@6 ~@2", // Ab G7
  X: "g3@4 g3@2 g3 ~ [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4, [c2,c4,eb4] ~", // Eb Eb7 Cm
  Y: "[ab2,eb4,ab4,c5]@7 ~ [b3,d4,f4,g4]@5 ~ [d4,f4,g4]@2, ~ b1, ~@13 b3@2 ~", // Ab G7
  Z: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4, eb3 ~, ~@5 eb4@2 ~@9", // Eb Gm Eb Eb7
  AA: "~@6 eb4@7 eb4!2 ab4, [eb2,ab4,c5], eb4@3 ~@5, ~ c4@3", // Ab
  AB: "~@6 eb4@7 eb4!2 g4, [eb3,g4,bb4], eb4@3 ~@5, ~ bb3@3", // Eb
  AC: "[eb3,eb4,g4,bb4]@7 ~ [db4,eb4,g4,b4]@5 ~ [eb4,g4,b4]@2, ~ eb3, ~@13 db4@2 ~", // Eb Ebaug
  AD: "[ab4,c5,eb5,f5]@13 ~ ab4 c5, eb4@12 ~ eb4@2 ~", // Fm7
  AE: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 [eb4,ab4,c5]@5 ~ [ab4,c5]@2, eb3 ab2, ~@5 eb4@2 ~@6 eb4@2 ~", // Eb Gm Ab
  AF: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 eb4@4 eb4@2 eb4 ~, eb3 [ab2,ab4,c5], ~@5 eb4@2 ~@9", // Eb Gm Ab
  AG: "eb4@4 eb4@2 eb4 ~ [d3,b3,d4,f4,ab4]@4 [c2,g3,c4,eb4]@4, [eb3,g4,bb4] ~", // Ddim Cm Eb
  AH: "[bb4,d5,f5]@13 ~ bb4 d5, f4@12 ~ f4@2 ~", // Bb
  AI: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 eb4@4 eb4@2 eb4 ~, eb3 [d3,g4,bb4], ~@5 eb4@2 ~@9", // Eb Gm
  AJ: "~@14 eb4 ~, [db3,eb4,g4,bb4]@15 ~, db4@13 db4@2 ~, ~@6 bb3@9 ~", // Eb7
  AK: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 [f4,a4,c5]@5 ~ [a4,c5]@2, ab2 f3, ~@5 eb4@2 ~@6 f4@2 ~", // Ab F Am
  AL: "[f4,bb4,d5]@5 ~ [bb4,d5]@2 [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4, bb2 ~, ~@5 f4@2 ~@9", // Bb Eb Eb7
  AM: "eb4@4 eb4@2 eb4 ~ [ab2,f4,bb4,d5]@4 [a2,eb4,gb4,a4,c5]@4, [ab2,ab4,c5] ~", // Bb7 Adim Ab
  AN: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 [b3,d4,f4,g4]@5 ~ [d4,f4,g4]@2, ab2 b1, ~@5 eb4@2 ~@6 b3@2 ~", // Ab G7
  AO: "[c2,g3,c4,eb4]@7 ~ [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4", // Cm Eb Eb7
  AP: "[ab2,eb4,ab4,c5]@7 ~ [ab2,f4,bb4,d5]@4 [a2,eb4,gb4,a4,c5]@4", // Ab Bb7 Adim
  AQ: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 [c2,g3,c4,eb4]@7 ~, bb2 ~, ~@5 eb4@2 ~@9", // Eb Gm Cm
  AR: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 b3@4 b3@2 d4@2, ab2 [bb1,f4,g4], ~@5 eb4@2 ~ d4@6 ~@2", // Ab Gm7
  AS: "~@13 g3!2 ~, [c2,c4,eb4]@15 ~, g3@13 ~@3, ~@6 eb3@9 ~", AT: "[a4,c5,eb5,f5]@13 ~ a4 c5, eb4@12 ~ eb4@2 ~",
  AU: "[eb3,eb4,g4,bb4]@7 ~ [f4,bb4,d5]@5 ~ [bb4,d5]@2, ~ bb2, ~@13 f4@2 ~", // Eb Bb
  AV: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 [c2,g3,c4,eb4]@7 ~, ab2 ~, ~@5 eb4@2 ~@9", // Ab Cm
  AW: "eb4@4 eb4@2 eb4 ~ [ab2,eb4,ab4,b4]@7 ~, [ab2,ab4,c5] ~", // Abm Ab
  AX: "~@13 eb4!2 ~, [bb1,ab4,c5]@15 ~, eb4@13 ~@3, ~@6 c4@9 ~", // Fm
  AY: "~@13 eb4!2 ~, [eb3,g4,bb4]@15 ~, eb4@13 ~@3, ~@6 bb3@9 ~", // Eb
  AZ: "eb4@4 eb4@2 eb4 ~ [db4,eb4,g4,b4]@5 ~ [eb4,g4,b4]@2, [eb3,g4,bb4] eb3, ~@13 db4@2 ~", // Ebaug Eb
  BA: "eb4@4 eb4@2 eb4 ~ [ab2,eb4,ab4,c5]@7 ~, [eb3,g4,bb4] ~", // Ab Eb
  BB: "[eb3,eb4,g4,bb4]@7 ~ [eb4,ab4,c5]@5 ~ [ab4,c5]@2, ~ ab2, ~@13 eb4@2 ~", // Eb Ab
  BC: "[eb4,g4,bb4]@5 ~ [g4,bb4]@2 [d3,f4,bb4,d5]@4 [c2,g3,c4,eb4]@4, eb3 ~, ~@5 eb4@2 ~@9", // Eb Gm Bb Cm
  BD: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 f4@4 f4@2 f4 ~, ab2 [f3,a4,c5], ~@5 eb4@2 ~@9", // Ab F
  BE: "eb4@4 eb4@2 eb4 ~ [c2,g3,c4,eb4]@7 ~, [bb2,g4,bb4] ~", BF: "[ab2,eb4,ab4,c5]@7 ~ [bb1,b3,d4,f4,g4]@7 ~",
  BG: "[g3,c4,eb4]@5 ~ [c4,eb4]@2 [eb3,eb4,g4,bb4]@4 [eb3,db4,eb4,g4,bb4]@4, c2 ~, ~@5 g3@2 ~@9", // Cm Eb Eb7
  BH: "[eb4,ab4,c5]@5 ~ [ab4,c5]@2 [ab2,c4,e4,gb4,ab4]@4 [a2,eb4,f4,a4,c5]@4, ab2 ~, ~@5 eb4@2 ~@9", // Ab Abaug F7
  BI: "[bb2,eb4,g4,bb4]@7 ~ [c2,g3,c4,eb4]@7 ~", BJ: "[ab2,eb4,ab4,c5]@7 ~ [b1,b3,d4,f4,g4]@7 ~",
  BK: "~@13 eb4!2 ~, [ab2,ab4,c5]@15 ~, eb4@13 ~@3, ~@6 c4@9 ~", BL: "[ab3,c4,eb4]@11 ~ [ab3,c4,eb4]@3 ~",
  BM: "[ab3,c4,eb4]@15 ~", // Ab
})).s("gm_epiano1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B C A C A@2 D A E A@5 C A@15 C@2 A@2 F G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H D A@5 C A
  C E A@3 C A@11 G A G I
>`.pickRestart({
  A: "x ~@5 x ~ x ~@6 x", B: "x ~@5 x ~ x ~@4 x ~ x", C: "x ~@2 x!2 ~@3", D: "x ~@2 x!2 ~@2 x!2 ~@6 x",
  E: "x ~@5 x ~ x ~@4 x ~@2", F: "x ~@4 x!2 ~@8 x", G: "x ~@6 x!2 ~@6 x", H: "x ~@2 x ~@2 x ~@8 x", I: "x",
})).gain(0.17)

// drums · rim
const rim = s("rim").struct("<[x!2] [x!4] ~@97>").gain(0.17)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A@2 B A B A@2 C A B A@5 B A@15 B@2 A@2 D A@32 C A@5 B A B@2 A@3 B A@11 E A F ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "x!2 ~@7 x ~@2 x ~@3", D: "x ~@8 x ~@6", E: "~@4 x ~@3 x!5 ~@3",
  F: "~@4 x ~@6 x!2 ~@3",
})).gain(0.15)

// drums · clap
const clap = s("cp").struct("<~@2 [~ x ~ x]!96 ~>").gain(0.17)

// drums · low tom
const low_tom = s("lt").struct("<~@37 [~@13 x!2 ~] ~@61>").gain(0.17)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B A B A@2 C D A E C F B A@3 G A@4 B A C A B A@3 G H A H A@2 I ~@32 D A C B@2 A H B A@7 B H A B A B C A@3 J A K ~
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~", C: "x ~ x ~ x!3 ~ x ~ x ~ x!3 ~", D: "~ x!6 ~",
  E: "x ~ x ~ x!3 ~ x ~ x ~ x ~@3", F: "x!7 ~", G: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2",
  H: "x ~ x ~ x!3 ~ x ~ x ~ x ~ x ~", I: "x ~ x ~@4 x!2 ~@7", J: "x ~ x!6 ~@8", K: "x!16",
})).gain(0.17)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A B C D C@2 E ~ C F E C B C A C B C@2 A@2 D C G C B C A C D F C F C@2 H ~@33 C E D B C F B C@2 A C@4 D F A B A D E
  C@3 I A ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", B: "~ x ~ x ~ x ~ x ~ x ~ x ~@3 x", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", E: "~ x ~ x ~@3 x ~ x ~ x ~@3 x", F: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x",
  G: "~ x ~ x ~@3 x ~ x ~ x ~@4", H: "~ x ~@3 x ~@4 x ~@5", I: "~ x ~@14",
})).gain(0.07)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@13 x!2 ~] ~@27 [~@6 x ~@4 x!2 ~@3] ~@32 [~@13 x!2 ~] ~@28>").gain(0.17)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@2 A ~@5 B ~ B ~@2 A ~ B ~@2 A@3 ~ A ~@3 A ~ C ~@5 D ~@35 A ~@6 A ~@4 A ~ A ~ A@2 ~@5 A ~@2
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2", D: "~@9 x ~@6",
})).gain(0.15)

// drums · high tom
const high_tom = s("ht").struct("<~@9 [~@4 x!2 ~@5 x ~@4] ~@27 [~@3 x!2 ~@11] ~@32 [~@4 x!2 ~@5 x ~@4] ~@28>")
  .gain(0.17)

// drums · crash
const crash = s("cr").struct("<~@2 A ~@6 B A ~@27 A ~@31 B A ~@23 B A@3>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.15)

// drums · ride
const ride = s("rd").struct("<~@38 A B C B C B C B C D C B C D C B C B C D C D C D C E C B C B C B ~@29>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!6", B: "x ~ x!5 ~ x ~ x ~ x!4", C: "x!16", D: "x ~ x!5 ~ x!3 ~ x!4",
  E: "x ~ x!3 ~ x ~ x ~ x ~ x!4",
})).gain(0.17)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@38 A B ~ B ~ B ~ B ~ C ~ B ~ C ~ B ~ B ~ C ~ C ~ C ~ B ~ B ~ B ~ B ~@29
>`.pickRestart({
  A: "~ x ~@3 x ~@3 x ~@6", B: "~ x ~@5 x ~ x ~ x ~@4", C: "~ x ~@5 x ~@3 x ~@4",
})).gain(0.1)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A@36 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 B A@29 ~
>`.pickRestart({
  A: "~ x ~@2", B: "~ x ~ x",
})).gain(0.22)

// drums · congas
const congas = s("conga:13").struct("<~@2 A@36 B A C D A C A@5 C A@11 C A C A@2 C@2 A@30 ~>".pickRestart({
  A: "~@2 x!2 ~@12", B: "~@2 x!2 ~@5 x ~@6", C: "~@3 x ~@12", D: "~@3 x ~@5 x ~@6",
})).gain(0.47)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@2 A@36 B@2 C@2 D E B F G B H E D A H B@3 A B@2 I B J A E B D E J A@30 ~
>`.pickRestart({
// … 15 more lines

More by Simon & Garfunkel