Strudelify

Tie A Yellow Ribbon Round the Old Oak Tree

Tony Orlando

KeyF majorTempo88 bpm
0:00/0:00
// Tie A Yellow Ribbon Round the Old Oak Tree — Tony Orlando
// 88 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 72 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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 · acoustic bass
const bass = 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 F G H I AB AC L M AD AE AF AG R S T U V W X AA F AH AI E F G
  AJ@8 AK AL@8 AM@2
>`.pickRestart({
  A: "f2@6 ~@6 c2@7 ~@5 f2@6 ~@4 f2@3 ~@3 f2@2 g2@2 ~@4", B: "a2@7 ~@5 e2@6 ~@4 e2@2 a2@5 ~@5 e2@2 ~@4 e2@2 a2@3 ~@3",
  C: "g2@8 ~@4 d2@8 ~@4 g2@7 ~@3 d2@2 ~@4 d2@2 g2@2 ~@4", D: "c2@7 ~@5 g2@7 ~@5 c3@7 ~@3 c2@2 ~@4 c2@2 d2@3 ~@3",
  E: "f2@8 ~@4 c2@7 ~@3 c2@2 f2@7 ~@5 f2@4 ~@2 g2@2 ~@4", F: "a2@7 ~@5 e2@7 ~@5 a2@7 ~@5 e2@6 ~@6",
  G: "c2@8 ~@4 c2@8 ~@4 d2@7 ~@5 e2@6 gb2@5 ~", H: "g2@8 ~@4 d2@6 ~@4 d2@2 g2@8 ~@4 d2@7 ~@5",
  I: "g2@8 ~@4 d2@7 ~@5 bb1@8 ~@4 db2@2 ~@4 eb2@2 ~@4", J: "d2@3 ~ a1@3 ~ d2@4 a2@3 ~",
  K: "g2@2 ~ d2@2 ~ g2@2 ~ d2@2 ~", L: "bb1@9 ~@3 bb1@8 ~@4 c2@8 ~@4 c2@7 ~@5",
  M: "bb1@15 ~@3 f2@3 ~@3 bb2@8 ~@4 f2@10 ~@2", N: "c2@9 ~@3 c2@6 ~@4 c2 ~ c2@2 ~@4 c2@4 ~@2 d2@3 ~@3 e2@2 ~@4",
  O: "f2@8 ~@4 c2@8 ~@4 f2@7 ~@3 f2@2 c2@4 ~@2 f2@3 ~@3", P: "a2@8 ~@4 e2@6 ~@4 e2@2 a2@6 ~@6 e2@4 ~@2 a2@5 ~",
  Q: "c2@7 ~@5 g2@8 ~@4 c3@8 ~@4 c2@6 g2@3 ~@3", R: "d2@8 ~@4 e2@6 gb2@4 ~@2 g2@9 ~@3 d2@9 ~@3",
  S: "g2@7 ~@5 d2@6 ~@6 bb1@9 ~@3 db2@8 ~@4", T: "f2@10 ~@2 e2@9 ~@3 d2@9 ~@3 a1@8 ~@4",
  U: "c2@8 ~@4 c2@9 ~@3 db2@8 ~@4 db2@8 ~@4", V: "d2@8 ~@4 a2@9 ~@3 d3@8 ~@4 a2@8 ~@4",
  W: "g2@7 ~@5 d2@8 ~@4 bb1@7 ~@5 bb1@8 ~@4", X: "g1@8 ~@4 d2@8 ~@4 c2@9 ~@3 c3@8 ~@4",
  Y: "f2@9 ~@3 c2@6 ~@4 c2@2 a1@7 ~@5 e2@8 ~@4", Z: "g1@2 ~ d2@2 ~ c2@2 ~ c2@2 ~",
  AA: "f2@8 ~@4 c2@7 ~@3 c2@2 f2@7 ~@5 c2@4 ~@2 f2@2 ~@4", AB: "f2@3 ~ d2@3 ~ a2@4 d2@3 ~",
  AC: "g2@8 ~@4 d2@8 ~@4 g2@8 ~@4 d2@3 ~@3 db2@3 ~@3", AD: "c2@9 ~@3 c3@6 ~@4 c3@2 c3@2 ~@4 c2@4 ~@2 d2@3 ~@3 e2@2 ~@4",
  AE: "f2@8 ~@4 c2@8 ~@4 f2@6 ~@4 f2@3 ~@3 f2@2 g2@3 ~@3", AF: "a2@8 ~@4 e2@6 ~@4 e2@2 a2@6 ~@4 e2@4 ~@2 e2 ~ a2@5 ~",
  AG: "c2@7 ~@5 g2@8 ~@4 c3@8 ~@4 g2@6 c3@3 ~@3", AH: "c2@8 ~@4 c2@8 ~@4 d2@13 ~@5 gb2@5 ~",
  AI: "g2@4 ~@2 g2@3 ~@3 c3@5 ~ c2@5 ~",
  AJ: "[g2@57 g2@48 bb1@48 f2@48 d2@54 ~@8 g2@7 ~@5 g2@8 ~@4 bb1@7 ~@5 bb1@8 ~@4 g1@8 ~@4 d2@8 ~@4 c2@9 ~@3 c3@8 ~@4 f2@8 ~@4 c2@8 ~@4 f2]/8",
  AK: "~@9 f2@3 ~@3 f2@2 g2@3 ~@3 a2@8 ~@4 e2@9 ~@3 a2",
  AL: "[~@9 e2@4 ~@2 e2 ~ a2@3 ~@3 c2@7 ~@5 g2@8 ~@4 d2@8 ~@2 e2@3 ~@3 e2 ~ gb2@3 ~@3 g2@7 ~@5 d2@6 ~@6 c2@12 c3@9 ~@3 f2@8 ~@4 c2@7 ~@5 f2@7 ~@5 c2@6 ~@6 a2@7 ~@5 e2@7 ~@5 a2@7 ~@5 e2@6 ~@6 c2@8 ~@4 c2@8 ~@4 d2@7 ~@5 e2@6 gb2@5 ~ g2@7 ~@5 d2@6 ~@6 c2@12 c3@9 ~@3 f2@8 ~@4 c2@7 ~@5 f2@7 ~@5 c2@6 ~@6 a2@7 ~@5 e2@7 ~@5 a2]/8",
  AM: "[~@11 e2@6 ~@6 c2@8 ~@4 c2@8 ~@4 d2@7 ~@5 e2@6 gb2@5 ~@26]/2",
})).s("gm_acoustic_bass").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D A B E C F G H I J K A B L M F N O P F Q R S A B T C F G H I J K A B L M F N O P F Q A B E U A B E V@8 W@8 X@3
>`.pickRestart({
  A: "[a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@6 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~", // F
  B: "[a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 ~@2", // Am
  C: "[g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~", // Gm
  D: "[bb3,c4,e4]@6 [bb3,c4,e4]@4 [bb3,c4,e4]@6 [bb3,c4,e4]@2 [bb3,c4,e4]@4 [bb3,c4,e4] ~ [bb3,c4,e4]@6 [bb3,c4,e4]@4 [bb3,c4,e4]@6 [bb3,c4,e4]@2 [bb3,c4,e4]@4 ~@2", // C7
  E: "[g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 [g3,c4,eb4] ~ [gb3,c4,d4]@6 [gb3,c4,d4]@4 [gb3,c4,d4]@6 [gb3,c4,d4]@2 [gb3,c4,d4]@4 ~@2", // Cm D7
  F: "[g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,db4]@6 [g3,bb3,db4]@4 [g3,bb3,db4]@6 [g3,bb3,db4]@2 [g3,bb3,db4]@4 [g3,bb3,db4] ~", // Gm Gdim
  G: "[a3,d4,f4]@6 [a3,d4,f4]@4 [a3,d4,f4]@6 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4] ~ [a3,d4,f4]@6 [a3,d4,f4]@4 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4] ~", // Dm
  H: "[b3,d4,f4]@6 [b3,d4,f4]@4 [b3,d4,f4]@6 [b3,d4,f4]@2 [b3,d4,f4]@4 [b3,d4,f4] ~ [b3,d4,f4]@6 [b3,d4,f4]@4 [b3,d4,f4]@2 [b3,d4,f4]@4 [b3,d4,f4]@2 [b3,d4,f4]@4 [b3,d4,f4] ~", // Bdim
  I: "[g3,bb3,db4]@6 [g3,bb3,db4]@4 [g3,bb3,db4]@6 [g3,bb3,db4]@2 [g3,bb3,db4]@4 [g3,bb3,db4] ~ [g3,bb3,c4]@6 [g3,bb3,c4]@4 [g3,bb3,c4]@6 [g3,bb3,c4]@2 [g3,bb3,c4]@4 [g3,bb3,c4] ~", // Gdim C7
  J: "[g3,bb3,db4]@9 [g3,bb3,db4] ~@2 [g3,bb3,db4]@4 ~@2 [g3,bb3,db4]@4 ~@2", // Gdim
  K: "[g3,bb3,c4]@8 ~@4 [g3,bb3,c4]@8 ~@2 [g3,bb3,c4] ~ [g3,bb3,c4]@4 [g3,bb3,c4]@2 [g3,bb3,c4]@6 [g3,bb3,c4]@6 [g3,bb3,c4]@5 ~", // C7
  L: "[g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 [g3,c4,eb4] ~ [g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 ~@2", // Cm
  M: "[a3,d4,gb4]@6 [a3,d4,gb4]@4 [a3,d4,gb4]@6 [a3,d4,gb4]@2 [a3,d4,gb4]@4 [a3,d4,gb4] ~ [g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~", // D Gm
  N: "[a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,db4,e4]@4 [a3,db4,e4]@2 [a3,db4,e4]@4 [a3,db4,e4] ~ [a3,d4,f4]@6 [a3,d4,f4]@4 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4] ~", // F A Dm
  O: "[a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@6 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,db4,f4]@6 [a3,db4,f4]@4 [a3,db4,f4]@2 [a3,db4,f4]@4 [a3,db4,f4]@2 [a3,db4,f4]@4 [a3,db4,f4] ~", // F Aaug
  P: "[a3,d4,f4]@6 [a3,d4,f4]@4 [a3,d4,f4]@6 [a3,d4,f4]@2 [a3,d4,f4]@4 [a3,d4,f4] ~ [a3,d4,gb4]@6 [a3,d4,gb4]@4 [a3,d4,gb4]@2 [a3,d4,gb4]@4 [a3,d4,gb4]@2 [a3,d4,gb4]@4 [a3,d4,gb4] ~", // Dm D
  Q: "[g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,c4]@6 [g3,bb3,c4]@4 [g3,bb3,c4]@6 [g3,bb3,c4]@2 [g3,bb3,c4]@4 [g3,bb3,c4] ~", // Gm C7
  R: "[a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@6 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4] ~", // F Am
  S: "[g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,c4]@9 ~@3 [g3,bb3,c4]@10 ~@2", // Gm C7
  T: "[g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 [g3,c4,eb4] ~ [gb3,c4,d4]@2 [gb3,c4,d4]@2 [gb3,c4,d4]@2 [gb3,c4,d4]@4 [gb3,c4,d4]@6 [gb3,c4,d4]@2 [gb3,c4,d4]@4 ~@2", // Cm D7
  U: "[g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,c4]@12 [g3,bb3,c4]@6 [g3,bb3,c4]@4 [g3,bb3,c4] ~", // Gm C7
  V: "[~@40 g5@17 ~@6 g4@41 ~@5 f4@43 ~@5 f4@43 ~@6 gb4@56 ~ [g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,db4]@6 [g3,bb3,db4]@4 [g3,bb3,db4]@6 [g3,bb3,db4]@2 [g3,bb3,db4]@4 [g3,bb3,db4] ~ [g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,c4]@6 [g3,bb3,c4]@4 [g3,bb3,c4]@6 [g3,bb3,c4]@2 [g3,bb3,c4]@4 [g3,bb3,c4] ~ [a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@6 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,f4], g4@56 ~ f3@47 ~ f3@47 ~ f3@47 ~ d3@61 ~@122, ~@13 bb4@43 ~@3 g3@45 ~@2 ab3@46 ~@3 a3@45 ~@2 gb3@60 ~@122, ~@26 d5@30 ~@5 bb3@43 ~@3 bb3@45 ~@52 a3@59 ~@121, ~@62 d4@42 ~@4 db4@44 ~@4 c4@44 ~@5 d4@57 ~@122]/8", // Gm Gdim Gm C7 F
  W: "[~@5 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 ~@2 [g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 [g3,c4,eb4] ~ [gb3,c4,d4]@6 [gb3,c4,d4]@4 [gb3,c4,d4]@6 [gb3,c4,d4]@2 [gb3,c4,d4]@4 ~@2 [g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,c4]@6 [g3,bb3,c4]@4 [g3,bb3,c4]@6 [g3,bb3,c4]@2 [g3,bb3,c4]@4 [g3,bb3,c4] ~ [a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@6 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 ~@2 [g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 [g3,c4,eb4] ~ [gb3,c4,d4]@6 [gb3,c4,d4]@4 [gb3,c4,d4]@6 [gb3,c4,d4]@2 [gb3,c4,d4]@4 ~@2 [g3,bb3,d4]@6 [g3,bb3,d4]@4 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~ [g3,bb3,c4]@6 [g3,bb3,c4]@4 [g3,bb3,c4]@6 [g3,bb3,c4]@2 [g3,bb3,c4]@4 [g3,bb3,c4] ~ [a3,c4,f4]@6 [a3,c4,f4]@4 [a3,c4,f4]@6 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,f4]]/8", // F Am Cm D7 Gm C7 F Am …
  X: "[~@5 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4] ~ [a3,c4,e4]@6 [a3,c4,e4]@4 [a3,c4,e4]@6 [a3,c4,e4]@2 [a3,c4,e4]@4 ~@2 [g3,c4,eb4]@6 [g3,c4,eb4]@4 [g3,c4,eb4]@6 [g3,c4,eb4]@2 [g3,c4,eb4]@4 [g3,c4,eb4] ~ [gb3,c4,d4]@6 [gb3,c4,d4]@4 [gb3,c4,d4]@6 [gb3,c4,d4]@2 [gb3,c4,d4]@4 ~@27]/3", // F Am Cm D7
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.6)

// other · steel drums
const steel_drums = note("<A B C D ~@20 A E ~ F G H I J K L ~@12 A B M N ~@10 O@8 P@4>".pickRestart({
  A: "~@6 f4 ~@5 a4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@5",
  B: "~@6 e4@2 ~@4 a4 ~@5 c5@2 ~@4 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@5",
  C: "~@6 d4 ~@5 g4 ~@5 bb4 ~@5 c5@2 ~@4 bb4@2 ~@2 c5@2 ~@4 bb4@2 g4@2 ~@4",
  D: "~@3 c4 ~@2 g4 ~@2 bb4 ~@2 c5 ~ c5 bb4 ~@2 a4 ~@2 g4 ~@2", E: "~@6 d4@2 ~@4 g4 ~@5 bb4@2 ~@4 c5@2 ~@10 c5@2 ~@10",
  F: "~@18 e5@2 ~@4 d5 ~ d5 ~ d5 ~ d5 ~@5 c5 ~ c5 ~ c5 ~ c5 ~@5",
  G: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~@11 gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~@11",
  H: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ [g4,d5] ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~ c5 ~ c5 ~ c5 ~@5 bb4 ~ bb4 ~ bb4 ~ bb4 ~@5", // G5
  I: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~@11 db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~@11",
  J: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~@11 f4 ~ f4 ~ f4 ~ f4 ~@5 a4 ~ a4 ~ a4 ~ a4 ~@5",
  K: "b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~@3 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~@3",
  L: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~@5 e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~@13",
  M: "~@6 eb4 ~@5 g4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4@2 ~@4",
  N: "~@6 d4@2 ~@4 g4@2 ~@4 bb4@2 ~@4 c5@2 ~@10 c5@3 ~@9",
  O: "[~@29 f4 ~@5 a4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@11 e4@2 ~@4 a4 ~@5 c5@2 ~@4 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@11 eb4 ~@5 g4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4@2 ~@10 d4@2 ~@4 g4@2 ~@4 bb4@2 ~@4 c5@2 ~@10 c5@3 ~@15 f4 ~@5 a4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@11 e4@2 ~@4 a4 ~@5 c5@2 ~@4 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@11 eb4 ~@5 g4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4@2 ~@10 d4@2 ~@4 g4@2 ~@4 bb4@2 ~@4 c5]/8",
  P: "[~@11 c5@3 ~@15 f4 ~@5 a4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@11 e4@2 ~@4 a4 ~@5 c5@2 ~@4 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4 ~@11 eb4 ~@5 g4 ~@5 c5 ~@5 d5@2 ~@4 c5@2 ~@2 d5@2 ~@4 c5@2 a4@2 ~@29]/4",
})).s("gm_steel_drums").gain(0.25).pan(0.7)

// chords · drawbar organ
const drawbar_organ = note("<~@12 A B ~@6 C@2 ~@5 D E F G H I J A B ~@6 C@2 ~@28>".pickRestart({
  A: "[db5,f5,g5,bb5]@14 ~@4 [f5,g5,bb5]@2 ~@4 [db5,f5,g5,bb5]@7 ~@5 [db5,f5,g5,bb5]@6 ~@6, ~@18 db5 ~@29", // Gm7b5 Gm7 Gm7b5
  B: "[e5,g5,c6]@9 ~@3 [e5,g5,c6]@7 ~@3 [e5,g5,c6] ~ [e5,g5,c6]@3 ~@21", // C
  C: "[c5@3 db5@3 ~@3 [gb4,c5]@2 ~, a4@29 ~@3, f5@3 ~, ~@6 d5@5 ~]/2", D: "~@3 e5 d5@2 c5@2", E: "g4 gb4",
  F: "g4 d5 c5 bb4", G: "d4 db4", H: "d4@2 f4 a4", I: "b4@3 ~ g4@3 ~", J: "f4 e4",
})).s("gm_drawbar_organ").gain(0.25).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@14 A B C D E F G@2 H I J ~@11 A B C D E F G@2 H I J ~@2 K L M N O@2 ~@3 P@3 ~@2 Q@8 R
>`.pickRestart({
  A: "f4@12 a4@5 ~ c5@6 d5@12 c5@6 f4@6", B: "e4@2 d5@2 c5@2 d5 c5", C: "eb4@2 d5@2 c5@2 bb4 a4",
  D: "d4@12 c5@12 bb4@23 ~", E: "d4 db4, f4", F: "[c4,a4]@12 [db4,g4]@12 [d4,f4]@23 ~",
  G: "[c4 db4 d4 [c4,gb4], a3@95 ~, f4@3 ~]/2", H: "[d4,g4] [db4,f4,bb4]", I: "~ d4@2 eb4 e4@2 a4@2", J: "f4@3 ~@5",
  K: "~@24 c6@4 ~@8 c6@5 ~@7", L: "~ f4@2 a4 c5@3 f4", M: "e4@6 a4 c5",
  N: "d5@3 c5@2 ~ c5@3 bb4@3 a4@2 ~ a4@3 bb4@3 c5@3", O: "[bb4@7 ~@5]/2",
  P: "[~@23 [d4,g4]@24 [db4,f4,bb4]@24 ~@6 d4@12 eb4@6 e4@12 a4@12 f4@12 ~@13]/3", // G5 Bbm
  Q: "[~@47 c5@4 ~@8 c5@5 ~@13 f4@12 a4@6 c5@18 f4@6 e4@36 a4@6 c5@6 d5@6 c5@4 ~@2 c5@6 bb4@6 a4@4 ~@2 a4@6 bb4@6 c5@6 bb4@12 ~@12 c5@4 ~@8 c5@5 ~@13 f4@12 a4@6 c5@18 f4@6 e4@36 a4@6 c5@6 d5@6 c5@4 ~@2 c5@6 bb4@6 a4]/8",
  R: "~@5 a4@6 bb4@6 c5@6 ~@25",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@54 A@5 ~@13>".pickRestart({
  A: "[~@9 [d3,bb3,d4,g4]@48 [f3,db4,bb4]@48 [c3,a3,f4]@48 [d3,c4,gb4]@47 ~@40, ~@21 a4@19 ~@8]/5", // Gm Bbm F D7
})).s("gm_string_ensemble_2").gain(0.28).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A B C@2 D C D E F@2 D G H I D@4 J@3 K J@4 C@8 H I C@17 L ~@4 M N@12 O>".pickRestart({
  A: "x ~@5 x ~@5 x ~@4 x!2 ~@5", B: "x ~@5 x ~@4 x!2 ~@5 x ~@5", C: "x!4", D: "x ~@5 x ~@4 x!2 ~@4 x!2 ~ x!2 ~@2",
  E: "x ~@5 x ~@4 x!2 ~@4 x!2 ~@5", F: "x ~@5 x ~@5 x ~@4 x!2 ~ x!2 ~@2", G: "x ~@5 x ~@5 x ~@2 x ~ x!2 ~ x!2 ~@2",
  H: "x ~@2 x!2 ~ x ~", I: "x ~@5 x ~@4 x!2 ~ x!2 ~@2 x ~@2 x ~@2", J: "x ~@5 x ~@4 x!2 ~@5 x ~@4 x",
  K: "x ~@4 x!2 ~@5 x ~@5 x ~@4 x", L: "x", M: "~@23 x ~@11 x ~@11 x", N: "~@11 x ~@11 x ~@11 x ~@11 x",
  O: "~@11 x ~@36",
})).gain(0.52)

// drums · rim
const rim = s("rim").struct("<~@14 [~ x ~ x ~ x ~ x]!10 ~@12 [~ x ~ x ~ x ~ x]!10 ~@26>").gain(0.59)

// drums · snare
const snare = s("sd").struct("<A@12 B C ~@10 A D A@7 D B E ~@9 F A@3 G A@2 D ~@5 H I@10 J K L>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x ~@2 x!2 ~ x ~", C: "x ~ x ~ x!4", D: "~@3 x ~@5 x ~@5 x ~@4 x!2 ~@2",
  E: "x ~@5 x ~@5 x ~@2 x ~@2 x ~ x!2 ~@2", F: "~@20 x!2 ~@2", G: "~ x ~ x!2 ~ x ~", H: "~@29 x ~@3 x ~@7 x ~@3 x ~@2",
  I: "~@5 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@7 x ~@3 x ~@7 x ~@3 x ~@2",
  J: "~@5 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@7 x ~@11 x ~@6", K: "~@5 x ~@11 x ~@11 x ~@11 x ~@6", L: "~@5 x ~@11 x ~@30",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<A@12 ~@2 A@11 B A@8 ~@2 A@13 B A@3 C ~@4 D E@12 F>".pickRestart({
  A: "x!8", B: "x!5 ~ x ~", C: "x", D: "~@23 x ~@5 x ~@5 x ~@5 x ~@5 x",
  E: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x", F: "~@5 x ~@5 x ~@5 x ~@4 x ~@25",
})).gain(0.46)

// drums · splash
const splash = s("cr").struct("<~@25 A ~@8 B ~@14 C B ~@2 B ~@18>".pickRestart({
  A: "~@5 x ~@2", B: "x", C: "~@2 x!2",
})).gain(0.52)

stack(
  bass, acoustic_guitar_steel, steel_drums, drawbar_organ, string_ensemble_1, string_ensemble_2, kick, rim, snare,
  hihat, splash
)

More by Tony Orlando