Strudelify

Knock Three Times

DaWN

KeyD♭ majorTempo122 bpm
0:00/0:00
// Knock Three Times — DaWN
// 122 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 23, 4/4 at bar 23, 2/4 at bar 30, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 108 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · fretless bass
const bass = note(`<
  ~ A B C@2 D E D F G H I J K L M N O P Q R S T U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AK AN AO AP AQ AR
  AS AT AU AV AW AX AY@3 AZ@5 BA BB BC BD BE BF BG BH BI BJ BK@2 BL@2 BM BN BO BP BQ BR BS BT@2 BU@2 BV@4 BW BX BY BZ CA
  BX CB BT@2 CC@2 CD@5
>`.pickRestart({
  A: "db2@6 ~ db2", B: "gb2@6 ~ gb2", C: "ab2@5 ~ ab2@5 ~", D: "db2@6 ~@3 db2 ~@2 db2@6 ~@3 db2 ~@2",
  E: "db2@6 ~@3 db2 ~@2 db2@3 ab1@3 bb1@3 ab1@3", F: "db2@6 ~@3 db2 ~@2 db2@3 f2@3 gb2@3 g2@3",
  G: "ab2@6 ~@3 ab2 ~@2 ab2@6 f2@3 eb2 ~@2", H: "ab1@6 ~@3 ab1 ~@2 ab1 ~@2 ab1@3 c2@3 eb2@3",
  I: "ab2@6 ~@3 ab2 ~@2 ab2 ~@3 ab2@3 f2@3 eb2@2", J: "~ ab1@6 ~@3 ab1 ~@2 c2@3 db2@3 d2@3 eb2@2",
  K: "~ ab1@4 ~@5 ab1 ~@2 ab1 ~@2 ab1@3 c2@3 eb2@2", L: "~ ab2@6 ~@3 ab2 ~@2 ab2 ~@2 ab2@3 f2@3 eb2@2",
  M: "~ ab2@6 ~@3 ab2 ~@2 ab2@6 f2@3 eb2 ~", N: "~ ab1 ~@2 ab1 ~@5 ab1@3 ab2@3 gb2@3 f2@3 eb2@2",
  O: "~ db2@6 ~@3 db2 ~@2 db2@6 ~@3 db2 ~", P: "~ db2@6 ~@3 db2@2 ~ db2@3 db2@3 eb2@3 f2@2",
  Q: "~ gb2@3 ~@3 gb2@3 ~@3 gb2@3 ~@6 gb1@2", R: "~ gb1@3 ab1@3 bb1@3 c2@3 db2@3 ~ db2 ~@5 db2",
  S: "~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@5 db2", T: "~@2 db2@3 f2@3 gb2@3 g2@3 ab2@3 ab2 ~@5 ab2",
  U: "[~@2 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@5 ab2@3 bb2@3 ab2@3 f2@3 eb2@3 db2@3 db2 ~@5 db2]/2",
  V: "~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@6", W: "db2@3 db3@3 b2@3 bb2@3 ab2 ~@2 gb2@3 ~@3 gb2@3",
  X: "~ gb2 ~@3 gb1 ab1 bb1", Y: "c2@3 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@5",
  Z: "db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 f2@3 gb2@3", AA: "g2@3 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@5",
  AB: "ab2 ~@2 ab2@21", AC: "ab1 db2@6 ~", AD: "db2@3 gb2@9 gb2@3 ab2@3 ab1@3 bb1@2 ~",
  AE: "c2@3 db2@6 ~@3 db2 ~@2 db2@6 ~@3", AF: "db2 ~@2 db2@6 ~@3 db2 ~@2 db2@3 ab1@3 bb1@3",
  AG: "ab1@3 db2@6 ~@3 db2 ~@2 db2@6 ~@3", AH: "db2 ~@2 db2@6 ~@3 db2 ~@2 db2@3 f2@3 gb2@3",
  AI: "g2@3 ab2@6 ~@4 ab2 ~@2 ab2@6 f2@2", AJ: "~ eb2 ~@2 ab1@6 ~@3 ab1 ~@2 ab1 ~@2 ab1@3 c2@2",
  AK: "~ eb2@3 ab2@6 ~@3 ab2 ~@2 ab2 ~@2 ab2@3 f2@2", AL: "~ eb2@3 ab1@6 ~@3 ab1 ~@2 c2@3 db2@3 d2@2",
  AM: "~ eb2@3 ab1@4 ~@5 ab1 ~@2 ab1 ~@2 ab1@3 c2@2", AN: "~ eb2@3 ab2@6 ~@3 ab2 ~@2 ab2@6 f2@2",
  AO: "~ eb2 ~@2 ab1 ~@2 ab1 ~@5 ab1@3 ab2@3 gb2@3 f2@2", AP: "~ eb2@3 db2@6 ~@3 db2 ~@2 db2@6 ~@2",
  AQ: "~ db2 ~@2 db3@2 ~ db3@3 b2@3 b2@3 bb2@3 bb2@3 ab2@2", AR: "~ ab2@3 gb2@3 ~@3 gb2@3 ~@3 gb2@3 ~@5",
  AS: "~ gb1@3 gb1@3 ab1@3 bb1@3 c2@3 db2@3 db2 ~@4", AT: "~ db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@4",
  AU: "~ db2 ~@2 db2@3 f2@3 gb2@3 ~ g2@3 ab2@3 ab2 ~@3", AV: "~@2 ab2 ~@2 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@3",
  AW: "~@2 ab2@3 bb2@3 ab2@3 f2@3 eb2@3 db2@3 db2 ~@3", AX: "~@2 db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@3",
  AY: "[~@2 db2@3 db3@3 b2@3 bb2@3 ab2 ~@2 gb2@3 ~@3 gb2@3 ~@3 gb2@3 ~@9 gb1@3 ab1@3 bb1@3 c2@3 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@3]/3",
  AZ: "[~@2 db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 f2@3 gb2@3 g2@3 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@2 f2@3 eb2 ~@2 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@2 f2@3 eb2 ~@2 db3 ~@2 db3@6 ~ bb2 ~ db3 ~@2 db3@6 ab2 ~ bb2 d2@6 ~@2 d2 ~@2 d2@6 ~@2, ~@43 ab2 ~@16]/5",
  BA: "~ d2 ~@2 d2@6 ~@3 d2 ~@2 d2@3 a1@3 b1@2", BB: "~ a1@3 d2@6 ~@3 d2 ~@2 d2@6 ~@2",
  BC: "d2 ~@2 d2@6 ~@3 d2 ~@2 d2@3 gb2@3 g2@3", BD: "ab2@3 a2@6 ~@3 a2 ~@2 a2@6 gb2@3",
  BE: "e2 ~@2 a1@6 ~@3 a1 ~@2 a1 ~@2 a1@3 db2@3", BF: "e2@3 a2@6 ~@3 a2 ~@2 a2 ~@3 a2@3 gb2@2",
  BG: "~ e2@3 a1@6 ~@3 a1 ~@2 db2@3 d2@3 eb2@2", BH: "~ e2@3 a1@4 ~@5 a1 ~@2 a1 ~@2 a1@3 db2@2",
  BI: "~ e2@3 a2@6 ~@3 a2 ~@2 a2 ~@2 a2@3 gb2@2", BJ: "~ e2@3 a2@6 ~@3 a2 ~@2 a2@6 gb2@2",
  BK: "[~ e2 ~@2 a1 ~@2 a1 ~@5 a1@3 a2@3 g2@3 ~ gb2@3 e2@3 d2@6 ~@3 d2 ~@2 d2@6 ~]/2",
  BL: "[~@2 d2 ~@2 d2@4 ~@5 d2@3 d2@3 d2@3 e2@3 gb2@3 g2@3 ~@3 g2@3 ~@3 g2@3 ~@4]/2",
  BM: "~@3 g1@3 g1@3 a1@3 b1@3 db2@3 d2@3 d2 ~@2", BN: "~@3 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 d2 ~@2",
  BO: "~@3 d2 ~@2 d2@3 gb2@3 g2@3 ~ ab2@3 a2@3 a2 ~", BP: "~@4 a2 ~@2 a2@3 a2 ~@5 a2 ~@2 a2@3 a2 ~",
  BQ: "~@4 a2@3 b2@3 a2@3 gb2@3 e2@3 d2@3 d2 ~", BR: "~@4 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 d2 ~",
  BS: "~@4 d2@3 d3@3 c3@3 ~ b2@3 a2 ~@2 g2@3 ~",
  BT: "[~@2 g2@3 ~@3 g2@3 ~@9 g1@3 a1@3 b1@3 db2@3 d2@3 d2 ~@5 d2 ~@2 d2@3 d2]/2",
  BU: "[~@5 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 gb2@3 g2@3 ab2@3 a2@3 a2@3 ~@3 a2 ~@2 a2@3 a2]/2",
  BV: "[~@2 gb2@3 e2@3 a1@3 a1 ~@5 a1@3 a1@3 db2@3 d2@3 e2@3 d2@6 ~@3 d2 ~@2 d2@6 ~@3 d2 ~@2 d2@4 ~@5 d2@3 d2@3 d2@3 e2@3 gb2@3 g2@3 ~@3 g2@3 ~@3 g2@3 ~]/4",
  BW: "~@5 g1@3 g1@3 a1@3 b1@3 db2@3 d2@3 d2", BX: "~@5 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 d2",
  BY: "~@5 d2 ~@2 d2@3 gb2@3 g2@3 ab2@3 a2@3 a2", BZ: "~@5 a2 ~@2 a2@3 a2 ~@5 a2 ~@2 a2@3 a2",
  CA: "~@5 a2@3 b2@3 a2@3 gb2@3 e2@3 d2@3 d2", CB: "~@5 d2@3 d3@3 c3@3 b2@3 a2 ~@2 g2@3 ~",
  CC: "[~@5 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 gb2@3 g2@3 ab2@3 a2@3 a2 ~@5 a2 ~@2 a2@3 a2]/2",
  CD: "[~@5 a2 ~@2 a2@18 a1@6 d2@18 ~@3 d2@3 g2@18 ~@3 g2@3 d2@18 ~@3 a1@3 d2@3 ~@3 d2 ~@2 d2 ~@2 d2@2 ~@2]/5",
})).s("gm_fretless_bass").gain(0.45)

// chords · epiano2
const epiano2 = note(`<
  ~ A B C D E@2 F@2 G@2 H@2 I@2 J K L@2 ~@13 M@3 ~@5 N O N O P@5 ~@19 Q R S R T@5 ~@12 U@3 ~@12 V@4
>`.pickRestart({
  A: "[f3,ab3,db4]@23 ~", B: "[gb3,bb3]@23 ~", C: "[ab3,c4]@6 [ab3,c4]@5 ~", D: "[ab3,c4]@9 ~@3 [ab3,c4]@10 ~@2",
  E: "[[db4,f4,ab4]@23 ~]/2", // Db
  F: "[f5@4 eb5@4 ~ f5@3 eb5@4 db5@4 ~ eb5@3 db5@4 c5@4 ~ db5@3 c5@4 bb4@4 ~ ab4@3, f4, ab4@15 ~]/2",
  G: "[[ab4,bb4]@6 ~@3 ab4@38 ~, eb4@47 ~]/2", // Absus2
  H: "[[c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@3 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 ~@17]/2", // Cm Bbm Ab
  I: "[~ [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@2 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 ~@17]/2", // Cm Bbm Ab
  J: "~ [ab3,gb4,bb4]@23", K: "~ [ab3,c5,eb5]@23", L: "[~ [f4,db5]@24 [f4,b4]@22 ~, ~ ab4@46 ~]/2",
  M: "[~ [f3,ab3,db4]@8 [bb3,gb4]@8 ~@7]/3", // Db Ebm
  N: "~@4 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@2 [bb4,db5] ~", // Cm Bbm
  O: "~ [bb4,db5]@5 ~ [ab4,c5]@3 ~@14", // Bbm Ab
  P: "[~@2 [gb4,bb4]@12 [ab3,c5,eb5]@12 [f4,db5]@12 [f4,b4]@11 ~@11, ~@2 ab3@11 ~@13 ab4@23 ~@11]/5", // Gb Ab Db Fdim
  Q: "~@3 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5]@4 ~@3 [b4,d5] ~", // Dbm Bm
  R: "~ [b4,d5]@5 ~ [a4,db5]@3 ~@14", // Bm A
  S: "~@4 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5]@4 ~@2 [b4,d5] ~", // Dbm Bm
  T: "[~@4 [a3,g4,b4]@24 [a3,db5,e5]@24 ~ [gb4,d5]@24 [gb4,c5]@23 ~@20, ~@53 a4@47 ~@20]/5", // Em A D Gbdim
  U: "[~@4 [gb4,d5]@12 [gb4,c5]@11 ~@9, ~@4 a4@23 ~@9]/3", // D Gbdim
  V: "[~@8 [gb3,a3,d4]@23 ~ [g3,b3]@22 ~@2 [gb3,a3,d4]@23 ~@17]/4", // D G D
})).s("gm_epiano2").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@5 A@3 B C@2 D E@2 F ~@2 G H I J@6 K ~ L M N O@4 P@3 Q R S@4 ~@2 T U V W X Y Z AA AB AC ~ AD AE AF AG AH AI AJ@2 AK
  AL AM AN AO@3 ~@2 AP AQ AR AS AT AU AV AW AX AY ~ AZ@2 BA BB BC BD BE BF BG BH BI BJ BK BL ~ BC BG BA BM@2 ~@2 BN
>`.pickRestart({
  A: "[f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3", // Db
  B: "[f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@8", // Db
  C: "[c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3", // Ab
  D: "[c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 ~ [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@2", // Ab
  E: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@2", // Ab
  F: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@6", // Ab
  G: "~ [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@2", // Db
  H: "~ [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@2", // Fdim
  I: "~ [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@8", // Gb
  J: "[~@13 [f3,ab3,db4]@3 ~ [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,b3]@3 [f3,ab3,b3]@2 ~@5]/6", // Db Ab Db Fdim
  K: "[f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3]@2 ~@4 [f3,ab3,b3]@3 ~@9", // Fdim
  L: "~@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5", // Db
  M: "[f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5", // Db
  N: "[f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5", // Db Ab
  O: "[~@3 [c4,eb4,ab4]@24 [f3,ab3,db4]@24 [bb3,gb4]@24 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4]/4", // Ab Db Ebm Db
  P: "[f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4", // Db
  Q: "~@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@3", // Ab
  R: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@3", // Ab
  S: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@4", // Ab
  T: "~@4 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@4", // Db
  U: "~ [f3,ab3,db4]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@4", // Db Fdim
  V: "~ [f3,ab3,b3]@3 [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@5", // Fdim Gb
  W: "~@16 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@3", // Db
  X: "~ [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@3", // Db
  Y: "~ [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@5 [f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@2", // Db Ab
  Z: "~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@2", // Ab
  AA: "~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Ab Db
  AB: "~@2 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@3", // Db Fdim
  AC: "~@2 [f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@3 ~@7", // Fdim
  AD: "~@5 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Db
  AE: "~@2 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Db
  AF: "~@2 [f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@3", // Db Ab
  AG: "~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@3", // Ab
  AH: "~@2 [c4,eb4,ab4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Ab Db
  AI: "~@2 [f3,ab3,db4]@3 [gb3,a3,d4]@2 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@4", // Db D
  AJ: "~ [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@4", // D
  AK: "[gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5", // D
  AL: "~@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5", // A
  AM: "[db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4", // A
  AN: "[db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 ~ [db4,e4,a4]@2 ~@3", // A
  AO: "~ [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@3", // A
  AP: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@2", // D
  AQ: "~@2 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2 ~@4 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2 ~@2", // D Gbdim
  AR: "~@2 [gb3,a3,c4]@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@4", AS: "~@18 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~",
  AT: "~@3 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~", // D
  AU: "~@3 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@5 [gb3,a3,d4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2", // D A
  AV: "~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2", // A
  AW: "~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2", // A D
  AX: "~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2", // D Gbdim
  AY: "~@4 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2 ~@5 [gb3,a3,c4]@3 ~@4", // Gbdim
  AZ: "[~@8 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]]/2", // D
  BA: "~@5 [gb3,a3,d4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // D A
  BB: "~@8 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // A
  BC: "~@8 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]", // D
  BD: "~@5 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4] ~@5 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]", // D Gbdim
  BE: "~@5 [gb3,a3,c4]@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~", BF: "~@20 [gb3,a3,d4]@3 [gb3,a3,d4]",
  BG: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]", // D
  BH: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // D A
  BI: "~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // A
  BJ: "~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]", // A D
  BK: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]", // D Gbdim
  BL: "~@5 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4] ~@5 [gb3,a3,c4]@3 ~@4", BM: "[~ [db4,e4,a4]@3 ~@2]/2",
  BN: "~@14 [a4,d5] ~@2 [a4,d5] ~@2 [a4,d5] ~@3", // D5
})).s("gm_acoustic_guitar_steel").gain(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@9 A B C@2 D@2 ~ E F G ~ H I@4 J K ~@2 L ~@8 M N O P Q R@2 ~@5 S T ~@2 U V ~@2 W@2 ~@9 X Y Z AA@3 ~@3 AB AC ~@2 AD AE
  ~@2 AF AG ~@5 AH AI ~@2 AJ@2 ~@2 AF AG ~@5
>`.pickRestart({
  A: "~@3 ab4 c5 ab4 c5 ab4", B: "c5@3 ab4@3 c5@3 ab4@3 bb4@3 gb4@3 bb4@3 gb4 ~@2",
  C: "[[c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@3 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5]@5 ~ [gb4,bb4]@3 [ab4,c5]@2]/2", // Cm Bbm Ab Gb Ab
  D: "[~ [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@2 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@6 [bb4,db5]@5]/2", // Cm Bbm Ab Bbm
  E: "~ [eb4,ab4]@23", F: "~ db5@3 ab4@3 db5@3 ab4@3 db5@3 ab4@3 db5@3 ab4@2",
  G: "~ b4@3 ab4@3 b4@3 ab4@3 b4@3 ab4@3 b4@3 ab4@2", H: "~@23 [bb4,db5]",
  I: "[~@2 [bb4,db5]@4 [c5,eb5]@3 ~@2 [c5,eb5] ~@2 [c5,eb5]@3 [db5,f5]@3 ~@3 [db5,f5]@3 [db5,f5]@6 ~@6 ab4@3 eb4@3 c4@3 bb4@3 ab4@3 eb4@3 ab4@3 bb4@6 ab4@3 eb4@3 c4@3 bb4@3 ab4@3 eb4@3 c4@3 ~@10]/4", // Bbm Cm Db
  J: "~@14 f4@3 [ab4,b4]@6 ~", K: "f4@3 [ab4,b4]@3 f4@2 ~ [ab4,b4]@3 ~@12",
  L: "~ [gb4,bb4] [f4,ab4] ~ [gb4,bb4] [f4,ab4] ~@2", M: "~@6 c5@3 db5@3 ~ eb5@6 eb5@5",
  N: "~ eb5@6 db5@6 c5@3 db5@6 c5@2", O: "~ bb4@3 ~@20",
  P: "~@7 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5]@6 [gb4,bb4]@2", Q: "~ [ab4,c5]@10 ~@13",
  R: "[~@7 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@6 [ab4,c5]@6 ~@20]/2", S: "~@16 [gb4,bb4]@3 [f4,ab4] ~@4",
  T: "~ [gb4,bb4]@3 [f4,ab4] ~@19", U: "~@17 [db4,f4]@3 [eb4,gb4]@3 ~",
  V: "~@2 [db4,f4]@3 [f4,ab4]@3 ~@3 [eb4,gb4]@3 [db4,f4] ~@9", // Db Fm Ebm Db
  W: "[~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [db4,f4]@6 [c4,eb4]@12 ~@7]/2", // Gb Fm Gb Fm Db Cm
  X: "~@7 [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@6 [b4,d5]@2", Y: "~ [db5,e5]@11 ~@12",
  Z: "~@7 [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@6 [a4,db5] ~", AA: "[~ [g3,b3,d4]@6 [e3,a3,db4]@6 ~@5]/3",
  AB: "~@18 [g4,b4]@3 [gb4,a4] ~@2", AC: "~@3 [g4,b4]@3 [gb4,a4] ~@17", AD: "~@19 [d4,gb4]@3 [e4,g4]@2",
  AE: "~@4 [d4,gb4]@3 [gb4,a4]@3 ~@4 [e4,g4]@3 [d4,gb4] ~@6", AF: "~@8 [g4,b4]@3 [gb4,a4] ~@5 [g4,b4]@3 [gb4,a4] ~@3",
  AG: "~ [d4,gb4]@3 [db4,e4]@6 ~@2", AH: "~@20 [g4,b4]@3 [gb4,a4]", AI: "~@5 [g4,b4]@3 [gb4,a4] ~@15",
  AJ: "[~@20 [d4,gb4]@3 [e4,g4]@3 ~@3 [d4,gb4]@3 [gb4,a4]@3 ~@3 [e4,g4]@3 [d4,gb4] ~@6]/2", // D Em D Gbm Em D
})).s("gm_acoustic_guitar_steel").gain(0.4)

// other · french horn
const french_horn = note("<~ A B C D ~@62 E@2 ~@35 F@4>".pickRestart({
  A: "~@3 db5 ~@5 db5@3 eb5@3 db5@3 c5@3 bb4 eb4 ~", B: "~@3 bb4 ~@5 bb4@3 c5@3 bb4@3 ab4@3 gb4@3", C: "bb4 ab4",
  D: "bb4@12 ~ c5@10 ~", E: "[~@3 e4 ~ gb4 e4 ~ d4 db4 ~ d4 db4 ~ b3 a3@12 ~@21]/2",
  F: "[~@11 d5 ~@5 d5@3 e5@3 d5@3 db5@3 b4 ~ e4 ~@3 b4 ~@5 b4@3 db5@3 b4@3 a4@3 g4@3 ~@3 d5 ~@5 d5@3 e5@3 d5@3 db5@3 b4 ~ e4 ~@16]/4",
})).s("gm_french_horn").gain(0.4)

// chords · trombone
const trombone = note(`<
  ~ A B C D ~@14 E ~ F@3 ~@5 G@3 H I J@2 K L M@2 ~ N O@2 P@3 Q@2 ~ R S@2 ~@5 T@3 U@3 ~@5 V W@2 X@5 ~ Y Z@3 ~@4 AA AB ~
  AC@3 ~ AD AE@3 ~@4 AA AB ~ AF AG AF AH
>`.pickRestart({
  A: "db3@5 ~@3", B: "gb3@5 ~@3", C: "~ ab2 ~ ab2, bb3 ab3", D: "~ ab2 [ab2,c4]@2, bb3 ~",
  E: "~ [db4,gb4] ~@5 [db4,gb4] ~@5 [db4,gb4] ~@10", // Gb5
  F: "[~@14 [gb4,bb4]@3 [f4,ab4] ~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [db4,f4]@6 [c4,eb4]@30 ~@4]/3", // Gb Fm Gb Fm Db Cm
  G: "[~@3 [gb4,bb4]@3 [f4,ab4] ~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [bb4,db5]@6 [ab4,c5]@24 ~@21]/3", // Gb Fm Gb Fm Bbm Ab
// … 163 more lines

More by DaWN