Strudelify

Tie a Yellow Ribbon

Tony Orlando

KeyF majorTempo160 bpm
0:00/0:00
// Tie a Yellow Ribbon — Tony Orlando
// 160 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 8 "Bell" named as a mallet, played on tubular bells (its pad choir patch is not one)
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · "Bass"
const bass = note(`<
  A@2 B@2 C@2 D E A@2 B@2 F G C@3 H A G C@2 H F I J K L A@2 B@2 D F M C@2 H N M F O G P C H Q F A B C E A@2 B@2 F G C@3
  H A G C@2 H F I J K L A@2 B@2 D F M C@2 H N M F O G P C H Q F A@2 B@2 D M C R A@2 B@2 D F M C@2 H N S C H Q F A@2 B@2
  D M C R A@2 B@2 D M C R T
>`.pickRestart({
  A: "f2@5 ~@3 c2@5 ~@3", B: "a2@5 ~@3 e2@5 ~@3", C: "g2@5 ~@3 d2@5 ~@3", D: "c2@5 ~@3 g1@5 ~@3",
  E: "c2@5 ~@3 d2@4 e2@4", F: "c2@5 ~@3 c2@5 ~@3", G: "d2@5 ~@3 d2@5 ~@3", H: "bb1@5 ~@3 bb1@5 ~@3", I: "bb1@3 bb1",
  J: "bb1!2", K: "c2@7 ~ c2@6 ~ c2", L: "c2!2 d2 e2", M: "d2@5 ~@3 a1@5 ~@3", N: "f2@5 ~@3 e2@5 ~@3",
  O: "db2@5 ~@3 db2@5 ~@3", P: "d3@5 ~@3 a2@4 d2@4", Q: "g1@5 ~@3 g1@5 ~@3", R: "c2 ~@3 c2 ~@3",
  S: "d2@5 ~@3 a2@4 d2@4", T: "f2@2 ~ f1@2 ~@11",
})).s("gm_fretless_bass").gain(0.42)

// chords · acoustic guitar steel · "GT"
const acoustic_guitar_steel = note(`<
  A@2 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 AB AC J AD@3 AE AF@2 AG AH AI AJ AK AL AM AN AO AP AQ AR J AS
  G H I K J AT M N AN P AU R AV AW AX V AY X Y Z AA AZ BA J BB@3 AE BC@2 AG AH AI BD BE AL AM O AO AP AQ A@2 B C BF M N
  BG AB AC K BH@3 AE BC@2 AG BI AM AN AO AP AQ A@2 B C BJ M N BG A@2 B C BK M N BG BL
>`.pickRestart({
  A: "[f4,a4,c5]@7 [f4,a4,c5] [f4,a4,c5]@4 [f4,a4,c5]@4", B: "[a4,c5,e5]@7 [a4,c5,e5] [a4,c5,e5]@7 [a4,c5,e5]",
  C: "~@7 [a4,c5,e5]@4 ~ [a4,c5,e5]@4, [a4,c5,e5]@7 ~@9, ~@4 e4@7 e4@5", D: "[g4,bb4,d5]@7 [g4,bb4,d5] [g4,bb4,d5]@8",
  E: "[g4,bb4,d5]@7 [g4,bb4,d5] [g4,bb4,d5]@4 [g4,bb4,d5]@4", F: "[g4,c5,e5]@7 [g4,c5,e5] [g4,c5,e5]@8",
  G: "[g4,c5,e5]@7 [g4,bb4,e5]@5 [g4,bb4,e5]@4", H: "[f4,a4,c5]@4 [f4,a4,c5]@4 [f4,a4,c5]@4 [f4,a4,c5]@3 [f4,a4,c5]",
  I: "[f4,a4,c5]@4 [f4,a4,c5]@4 [f4,a4,c5]@3 [f4,a4,c5]@4 [f4,a4,c5]", // F
  J: "[e4,a4,c5]@4 [e4,c5]@3 a4 [e4,a4,c5]@3 a4 a4@2 ~ [e4,a4,c5], ~@4 a4@2 ~@5 [e4,c5]@4 ~", // Am C Am C
  K: "[e4,a4,c5]@4 [e4,c5]@3 a4 [e4,a4,c5]@3 a4 a4@3 [e4,a4,c5], ~@4 a4@2 ~@5 [e4,c5]@4 ~", // Am C Am C
  L: "[eb4,g4,c5]@4 [eb4,g4,c5]@3 c5 [eb4,g4,c5]@3 [eb4,g4,c5] [eb4,g4,c5]@4", // Cm
  M: "[gb4,a4,c5]@4 [gb4,c5]@3 ~ [gb4,c5]@3 a4 [gb4,c5]@4, d4@7 d4@9", // Gbdim
  N: "[g4,bb4,d5]@4 [g4,bb4,d5]@4 [bb4,d5]@3 g4 [g4,bb4,d5]@3 [g4,bb4,d5], ~@4 g4 ~@3", // Gm Bb Gm
  O: "[g4,bb4,d5]@4 [bb4,d5]@3 g4 [g4,bb4,d5]@3 g4 g4@3 [g4,bb4,d5], ~@4 g4@2 ~@5 [bb4,d5]@4 ~", // Gm Bb Gm Bb
  P: "[bb4,d5]@7 g4 [g4,bb4,d5]@3 g4 g4@2 ~ [g4,bb4,d5], g4@6 ~@5 [bb4,d5]@4 ~", // Bb Gm Bb
  Q: "[f4,bb4,db5]@4 [f4,db5]@3 [f4,bb4] [f4,bb4,db5]@3 [f4,bb4] [f4,bb4]@2 ~ [f4,bb4,db5], ~@4 bb4@2 ~@5 db5@4 ~", // Bbm Db Bb5 Bbm Bb5 Bbm
  R: "[f4,c5]@4 f4@3 [a4,c5] [f4,a4,c5]@3 [a4,c5] [a4,c5]@3 [f4,c5], a4@7 ~@4 f4@4 ~, ~@2 c5 ~@5", // F5 Am F Am F5
  S: "[f4,a4,d5]@4 [f4,a4]@3 [a4,d5] [a4,d5]@2 ~ [a4,d5] [f4,a4,d5]@4, ~@4 d5@2 ~@2 f4@3 ~@5", // Dm F D5 Dm
  T: "[f4,bb4,d5]@4 [f4,bb4,d5]@3 ~ [f4,bb4,d5]@3 ~ g4@3 [f4,bb4,d5], ~@7 g4@4 [f4,bb4,d5]@4 ~", // Bb
  U: "[f4,bb4,d5]@3 ~ [f4,bb4,d5]@3 ~ [f4,bb4,d5]@3 ~ [f4,bb4,d5]@4, ~@3 g4@4 g4@4 g4@5", // Bb
  V: "[f4,bb4,db5]@4 [bb4,db5]@3 f4 [f4,bb4,db5]@3 f4 f4@4, ~@4 f4@2 ~@5 [bb4,db5]@5", // Bbm
  W: "[e4,g4,c5]@4 [e4,g4,c5]@3 g4 [e4,g4,c5]@4 [e4,g4,c5]@4", X: "[bb3,f4,db5]@3 [bb3,f4,db5]",
  Y: "[bb3,f4,eb5] [bb3,f4,db5]", Z: "[c4,e4,g4,c5]@8 [c4,e4,g4,c5]@7 [c4,e4,g4,c5]", AA: "[c4,e4,g4,c5]@15 ~",
  AB: "[f4,a4,c5]@4 [a4,c5]@3 f4 [f4,a4,c5]@3 [f4,a4,c5] [a4,c5]@3 f4, ~@2 f4 ~@3 f4 ~", // F Am F Am
  AC: "[f4,a4,c5]@4 [a4,c5]@3 f4 [a4,c5]@3 f4 [f4,a4,c5]@4, ~@2 f4 ~ f4 ~@3", // F Am F
  AD: "[[e4,a4,c5]@4 [e4,c5]@3 a4 [e4,a4,c5]@3 a4 a4@2 ~ [a4,c5]@5 [eb4,c5]@3 g4 [eb4,g4,c5]@3 g4 g4@2 ~@6 [eb4,g4,c5]@3 g4 g4@2 ~ [eb4,g4,c5] [eb4,g4,c5]@4, ~@4 a4@2 ~@5 [e4,c5]@4 e4 ~@4 g4@2 ~@5 [eb4,c5]@4 [eb4,g4,c5]@5 ~@3 [eb4,c5]@4 ~@5, ~@4 c4 ~]/3", // Am C Am Cm C Cm
  AE: "[gb4,a4,d5]@4 [gb4,a4,d5]@4 [gb4,a4,d5]@3 [gb4,a4,d5] [gb4,a4,d5]@4", // D
  AF: "[[g4,bb4,d5]@4 [bb4,d5]@3 g4 [g4,bb4,d5]@3 g4 [g4,bb4,d5]@3 ~ [g4,bb4,d5]@4 [g4,bb4,d5]@3 g4 [g4,bb4,d5]@3 [g4,bb4,d5] [bb4,d5]@3 g4, ~@4 g4@2 ~@9 d4@8 ~@5 g4@2 ~@2]/2", // Gm Bb Gm Bb
  AG: "[f4,bb4,db5]!4", AH: "[f4,a4,c5]!2 [e4,a4,c5]!2",
  AI: "[f4,a4,d5]@4 [f4,a4,d5]@4 [a4,d5]@3 f4 [f4,a4,d5]@4, ~@4 f4 ~@3", // Dm D5 Dm
  AJ: "[f4,a4,c5]@4 [f4,a4,c5]@4 [f4,a4,c5]@3 f4 f4@3 [f4,a4,c5], ~@11 [a4,c5]@4 ~", // F Am
  AK: "[f4,a4,db5]@4 [a4,db5]@3 f4 [f4,a4,db5]@3 f4 f4@2 ~ [f4,a4,db5], ~@4 f4@2 ~@5 [a4,db5]@4 ~", // Faug A Faug A
  AL: "[f4,a4,d5]@4 [f4,a4,d5]@3 ~ [f4,a4,d5]@3 ~ d4@3 [f4,a4,d5], ~@7 d4@4 [f4,a4,d5]@4 ~", // Dm
  AM: "[gb4,a4,d5]@4 [gb4,a4,d5]@3 ~ [gb4,a4,d5]@3 ~ d4@4, d4@7 d4@4 [gb4,a4,d5]@5", // D
  AN: "[g4,bb4,d5]@4 [bb4,d5]@3 g4 [g4,bb4,d5]@3 g4 g4@2 ~ [g4,bb4,d5], ~@4 g4@2 ~@5 [bb4,d5]@4 ~", // Gm Bb Gm Bb
  AO: "~@4 [f4,bb4,db5]@4 [f4,bb4,db5]@3 [f4,bb4,db5]@4 [f4,bb4,db5]", // Bbm
  AP: "[g4,bb4,d5]@4 [g4,bb4,d5]@3 ~ [g4,bb4,d5]@3 ~ f4@3 [g4,bb4,d5], ~@7 f4@4 [g4,bb4,d5]@4 ~", // Gm
  AQ: "[e4,g4,c5]@4 [e4,g4,c5]@3 ~ [e4,g4,c5]@3 ~ [e4,g4,c5]@3 c4, ~@7 c4@4 c4@4 ~", // C
  AR: "[f4,a4,c5]@4 [f4,a4,c5]@3 f4 [a4,c5]@3 f4 [a4,c5]@3 f4, ~@4 f4 ~ f4 ~", // F Am
  AS: "~@4 [g4,bb4,d5]@4 [g4,bb4,d5]@3 [g4,bb4,d5]@5", // Gm
  AT: "[eb4,g4,c5]@4 [eb4,g4]@3 c5 [eb4,g4,c5]@3 [eb4,g4,c5] [eb4,g4,c5]@4, ~@2 c5 ~@5", // Cm Eb Cm
  AU: "[f4,bb4,db5]@4 [f4,bb4,db5]@3 [f4,bb4] [f4,bb4,db5]@3 [f4,bb4] [f4,bb4]@2 ~ [f4,bb4,db5], ~@11 db5@4 ~", // Bbm Bb5 Bbm Bb5 Bbm
  AV: "[f4,a4,d5]@4 [a4,d5]@2 ~ [a4,d5] [a4,d5]@2 ~ [a4,d5] [f4,a4,d5]@4, ~@4 f4@3 ~ f4@3 ~@5", // Dm D5 Dm
  AW: "[f4,b4,d5]@4 [f4,b4,d5]@3 ~ [f4,b4,d5]@3 ~ g4@3 [f4,b4,d5], ~@7 g4@4 [f4,b4,d5]@4 ~", // Bdim
  AX: "[f4,b4,d5]@3 ~ [f4,b4,d5]@3 ~ [f4,b4,d5]@3 ~ [f4,b4,d5]@4, ~@3 g4@4 g4@4 g4@5", // Bdim
  AY: "[e4,g4,c5]@4 [e4,c5]@3 g4 [e4,g4,c5]@4 [e4,g4,c5]@4, ~@2 g4 ~@5", // C
  AZ: "[f4,a4,c5]@4 [f4,a4,c5]@3 f4 [f4,a4,c5]@3 [f4,a4,c5] [a4,c5]@3 f4, ~@6 f4 ~", // F Am
  BA: "[f4,a4,c5]@4 [a4,c5]@3 f4 [f4,a4,c5]@3 f4 [f4,a4,c5]@4, ~@2 f4 ~@5", // F Am F
  BB: "[[e4,a4,c5]@4 [e4,a4,c5]@3 a4 [e4,a4,c5]@3 a4 a4@3 [a4,c5]@5 [eb4,c5]@3 g4 [eb4,g4,c5]@3 g4 g4@2 ~@6 [eb4,g4,c5]@3 g4 g4@2 ~ [eb4,g4,c5] [eb4,g4,c5]@4, ~@11 [e4,c5]@4 e4 ~@4 g4@2 ~@5 [eb4,c5]@4 [eb4,g4,c5]@5 ~@3 [eb4,c5]@4 ~@5, ~@4 c4 ~]/3", // Am Cm C Cm
  BC: "[[g4,bb4,d5]@4 [g4,bb4,d5]@3 g4 [bb4,d5]@3 g4 [g4,bb4,d5]@3 ~ [g4,bb4,d5]@4 [bb4,d5]@3 g4 [g4,bb4,d5]@3 [g4,bb4,d5] [bb4,d5]@3 g4, ~@8 g4@2 ~@5 d4@8 ~@9, ~@10 g4 ~@3 g4 ~]/2", // Gm Bb Gm Bb Gm Bb
  BD: "[f4,a4,c5]@4 [f4,a4,c5]@4 [f4,a4,c5]@3 f4 f4@2 ~ [f4,a4,c5], ~@11 [a4,c5]@4 ~", // F Am
  BE: "[f4,a4,db5]@4 [a4,db5]@3 f4 [f4,a4,db5]@3 f4 f4@3 [f4,a4,db5], ~@4 f4@2 ~@5 [a4,db5]@4 ~", // Faug A Faug A
  BF: "~@4 [g4,c5,eb5]@3 g4 [g4,c5,eb5]@3 g4 g4@3 [g4,c5,eb5], ~@11 [c5,eb5]@4 ~", BG: "[g4,c5,e5] ~@3 [g4,c5,e5] ~@3",
  BH: "[[e4,a4,c5]@4 [e4,a4,c5]@3 a4 [e4,a4,c5]@3 a4 a4@2 ~ [a4,c5]@5 [eb4,c5]@3 g4 [eb4,g4,c5]@3 g4 g4@2 ~@6 [eb4,g4,c5]@3 g4 g4@2 ~ [eb4,g4,c5] [eb4,g4,c5]@4, ~@11 [e4,c5]@4 e4 ~@4 g4@2 ~@5 [eb4,c5]@4 [eb4,g4,c5]@5 ~@3 [eb4,c5]@4 ~@5, ~@4 c4 ~]/3", // Am Cm C Cm
  BI: "[f4,a4,d5]@4 [f4,a4,d5]@3 ~ [e4,a4,d5]@3 ~ d4@3 [e4,a4,d5], ~@7 c4@4 [e4,a4,d5]@4 ~", // Dm Dsus2
  BJ: "~@4 [c5,eb5]@3 g4 [g4,c5,eb5]@3 g4 g4@3 [g4,c5,eb5], ~@4 g4@2 ~@5 [c5,eb5]@4 ~", // Cm
  BK: "~@4 [g4,c5,eb5]@3 g4 [g4,c5,eb5]@3 g4 g4@2 ~ [g4,c5,eb5], ~@11 [c5,eb5]@4 ~", // Cm
  BL: "[f3,c4,a4]@2 ~ [f3,c4,a4]@2 ~@11", // F
})).s("gm_acoustic_guitar_steel").gain(0.42).pan(0.3)

// other · piano
const piano = note("<~@52 A B C D E F G H I J K L M N O P ~@65>".pickRestart({
  A: "~@3 [f5,f6] a5@4 [c5,c6]@7 a5", B: "~@3 [f5,f6]@4 c6 [f5,f6]@2 ~ c6@4 a5",
  C: "~@3 c6 [e5,e6]@2 ~ c6 a5@2 ~ [e5,e6]@4 c6", D: "[e5,e6]@4 [e5,e6]@3 c6 a5@2 ~ [e5,e6]@5, ~@4 d5 ~@11",
  E: "~@3 [eb5,eb6]@4 g5 bb5@2 ~ [eb5,eb6]@5", F: "gb5@2 ~ a5 [d5,d6]@4 gb5@2 ~ [d5,d6] a5@3 gb5",
  G: "[d5,d6]@2 ~@2 [d5,d6]@2 ~@2 [d5,d6]@5 ~@2 c6", H: "[d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~",
  I: "~@11 g5 bb5@2 ~ c6", J: "[db5,db6]@2 ~@2 [db5,db6]@2 ~@2 [c5,c6]@2 ~ bb5@4 [c5,c6]",
  K: "a5@4 c5@3 a5 f5@2 ~ c6 a5@2 ~ f5, ~@4 c6@2 ~@5 c5@2 ~@3",
  L: "d5@4 d5@3 a5 f5@2 ~ d6 a5@2 ~ f5, ~@4 d6@2 ~@5 d5@2 ~@3", M: "~@3 [d5,d6] ~@3 [d5,d6] b5@2 ~ [g4,b4]@4 d5",
  N: "f6@2 ~ d6 [g5,g6]@2 ~ d6 b5@2 ~ g5@5", O: "~@4 f6@2 ~ db6 bb5@2 ~ f5 db6@2 ~ bb5",
  P: "[c5,c6]@4 g5@2 ~ f5 e5@2 ~ [c5,c6] e5@4", // C
})).s("gm_piano").gain(0.33).pan(0.8)

// chords · epiano2 · "EP"
const epiano2 = note(`<
  ~@8 A@2 B C D E F G F H A I J@2 H K L M N O A@2 P@2 D@2 Q J@2 H R I A S I Q J H J K ~@4 A@2 B C D E F T U H A I V@2 H
  K L M N O A@2 P@2 D@2 Q J@2 H R I A S I Q J H J K A@2 P@2 D Q W X A@2 P@2 D@2 Q J@2 H I Q J H J K A@2 P@2 D Q W X A@2
  P@2 D Q W X Y
>`.pickRestart({
  A: "~@4 [c4,f4,a4] ~@7 [c4,f4,a4] ~@3", B: "~@3 c5 [e4,a4] ~@3 [e4,a4] ~@2 c4 ~@3 c5, ~@2 c5 ~ c5 ~@3",
  C: "d5@2 ~ c5 [e4,a4] ~@2 c5 d5@2 ~@2 [c4,e4,a4] ~@3, ~@4 d5@2 ~@5 c5@4 ~", D: "~@4 [c4,eb4,g4] ~@7 [c4,eb4,g4] ~@3",
  E: "~@4 [a3,d4,gb4] ~@7 [a3,d4,gb4] ~@3", F: "~@4 [bb3,d4,g4] ~@3 [d4,g4] ~@2 d4 ~@3 bb4, ~@4 bb4@3 ~",
  G: "~@3 bb4 [d4,g4] ~@2 bb4 c5@2 ~@2 [bb3,d4,g4] ~@3, ~@4 c5@3 ~@4 bb4@4 ~", // G5 Gm
  H: "~@4 [db4,f4,bb4] ~@7 [db4,f4,bb4] ~@3", I: "~@4 [d4,f4,a4] ~@7 [d4,f4,a4] ~@3",
  J: "~@4 [bb3,d4,g4] ~@7 [bb3,d4,g4] ~@3", K: "~@4 [c4,e4,g4] ~@7 [c4,e4,g4] ~@3",
  L: "[db4,f4,bb4]@5 ~ [db4,f4,bb4] ~", M: "[eb4,f4,bb4]@7 ~ [db4,f4,bb4]@7 ~",
  N: "[g3,e4,c5]@5 ~@3 [g3,e4,c5]@5 ~@2 [g3,e4,c5]", O: "~@3 [c4,e4,g4]!2 ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3",
  P: "~@4 [c4,e4,a4] ~@7 [c4,e4,a4] ~@3", Q: "~@4 [d4,gb4,a4] ~@7 [d4,gb4,a4] ~@3",
  R: "~@4 [c4,f4,a4] ~@7 [c4,e4,a4] ~@3", S: "~@4 [db4,f4,a4] ~@7 [db4,f4,a4] ~@3",
  T: "~@3 bb4 [d4,g4] ~@2 bb4 c5@2 ~@2 [bb3,d4,g4] ~@3, ~@4 c5@2 ~@5 bb4@4 ~", // G5 Gm
  U: "~@4 [bb3,d4,g4] ~@3 [d4,g4] ~@2 d4 ~@3 bb4, ~@8 bb4@7 ~", V: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3",
  W: "~@4 [d4,g4,bb4] ~@7 [d4,g4,bb4] ~@3", X: "[e4,g4,c5] ~@7 [e4,g4,c5] ~@7", Y: "[c4,f4,a4]@2 ~ [f3,a3,c4]@2 ~@11",
})).s("gm_epiano2").gain(0.26).pan(0.7)

// other · blown bottle · "Flute"
const blown_bottle = note(`<
  A B C D E F G H ~@40 A D I J ~@40 A D C D K D E L ~@16 A D C D K D E L A D C D K D E L ~
>`.pickRestart({
  A: "~@4 f6 ~@3 a6 ~@3 c7 ~@3", B: "d7 ~@3 c7@3 d7 ~@3 c7 a6 ~@3", C: "~@4 e6 ~@3 a6 ~@3 c7 ~@3",
  D: "d7 ~@3 c7@2 ~ d7 ~@3 c7 a6 ~@3", E: "~@4 d6 ~@3 g6 ~@3 bb6 ~@3", F: "c7 ~@3 bb6@3 c7 ~@3 bb6 g6 ~@3",
  G: "~@4 c6 ~@3 g6 ~@3 bb6@2 ~ c7", H: "~@3 c7 bb6 ~@3 a6 bb6 ~ a6 g6 ~@3", I: "~@4 d6 ~@3 g6 ~@3 bb6@3 c7",
  J: "~@3 c7 bb6 ~@3 a6 ~ bb6 a6 g6 ~@3", K: "~@4 eb6 ~@3 g6 ~@3 bb6 ~@3", L: "c7 ~@7 c7 ~@7",
})).s("gm_blown_bottle").gain(0.3).pan(0.3)

// other · blown bottle · "Flute" · soft notes
const blown_bottle_soft = note(`<
  ~@8 A@2 B@2 C D E@2 ~@11 F G H I@2 J@2 H K L M N O ~@31 F G H I@2 J@2 H K L M N O ~@16 G H I@2 J@2 H K L M ~@2 P Q R
  ~@17 S
>`.pickRestart({
  A: "f6/2", B: "e6/2", C: "eb6", D: "d6", E: "bb5/2", F: "e6@2 g6@2 c7 d7 e7@2", G: "f7 e7", H: "d7 c7",
  I: "[a6@5 c7 d7 c7]/2", J: "[g6@5 c7 d7 eb7]/2", K: "bb6", L: "~ d6", M: "db6@2 f6 g6", N: "a6 g6", O: "f6", P: "g5",
  Q: "f5", R: "d5", S: "f7@2 ~ f6@2 ~@11",
})).s("gm_blown_bottle").gain(0.11).pan(0.3)

// other · tubular bells · "Bell"
const tubular_bells = note("<~@40 A B C D ~@40 A B C D ~@24 E F G ~@18>".pickRestart({
  A: "c3", B: "db3", C: "d3@2 f3 g3", D: "a3@15 ~", E: "g5", F: "f5", G: "d5",
})).s("gm_tubular_bells").gain(0.14).pan(0.7)

// chords · brass section · "Brass"
const brass_section = note(`<
  A B C D E F G H ~@27 I ~@4 J K L M ~@4 A D N O ~@20 P Q R S ~@3 I ~@4 J K L M ~@4 A D C D T D E U P Q R S ~@3 I ~@8 A
  D C D T D E U A D C B T D E U V
>`.pickRestart({
  A: "~@4 f4 ~@3 a4 ~@3 c5 ~@3", B: "d5 ~@3 c5@3 d5 ~@3 c5 a4 ~@3", C: "~@4 e4 ~@3 a4 ~@3 c5 ~@3",
  D: "d5 ~@3 c5@2 ~ d5 ~@3 c5 a4 ~@3", E: "~@4 d4 ~@3 g4 ~@3 bb4 ~@3", F: "c5 ~@3 bb4@3 c5 ~@3 bb4 g4 ~@3",
  G: "~@4 c4 ~@3 g4 ~@3 bb4@2 ~ c5", H: "~@3 c5 bb4 ~@3 a4 bb4 ~ a4 g4 ~@3",
  I: "[bb4,d5,g5]@2 ~ [bb4,d5,g5]@2 ~@2 [bb4,d5,g5]@5 ~@4", J: "c4", K: "db4", L: "d4@2 f4 g4", M: "a4@3 ~",
  N: "~@4 d4 ~@3 g4 ~@3 bb4@2 ~ c5", O: "~@3 c5 bb4 ~@3 a4 ~@2 [a4,bb4] g4 ~@3",
  P: "~@4 [c4,f4,a4]@2 ~ [c4,f4,a4] [c4,f4,a4]@2 ~ [c4,f4,a4] [c4,f4,a4]@2 ~ [c4,f4,a4]", // F
  Q: "[c4,f4,a4]@2 ~ [c4,f4,a4] ~@3 [c4,f4,a4]@5 ~@4", // F
  R: "~@4 [c4,e4,a4]@2 ~ [c4,e4,a4] [c4,e4,a4]@2 ~ [c4,e4,a4] [c4,e4,a4]@2 ~ [c4,e4,a4]", // Am
  S: "[c4,e4,a4]@2 ~ [c4,e4,a4] ~@3 [c4,e4,a4]@5 ~@4", T: "~@4 eb4 ~@3 g4 ~@3 bb4 ~@3", U: "c5 ~@7 c5 ~@7",
  V: "f5@2 ~ f3@2 ~@11",
})).s("gm_brass_section").gain(0.25).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A@16 C A D E A F A F A F A F A@13 B A B A@16 C A D E A F A F A F A F A@13 B A B A B A B A F A F A F A
  F A@9 B A B A B A B A B A B A B A B G
>`.pickRestart({
  A: "x!2", B: "x ~@6 x ~@3 x ~@3 x", C: "x ~@2 x", D: "x ~@7 x ~@6 x", E: "x!4", F: "x ~@6 x!2 ~@2 x ~@3 x",
  G: "x ~@2 x ~@12",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<A@7 B A@16 ~@3 C A@23 B A@16 ~@3 C A@27 B A@23 B A@7 B D>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~ x!2 ~@3", C: "~@11 x!2 ~@3", D: "x ~@2 x ~@12",
})).gain(0.57)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ B ~ A@15 ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B ~@2 B ~ A@15 ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B C
>`.pickRestart({
  A: "~@15 x", B: "~@3 x", C: "x",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<A ~@7 A ~@19 A ~@19 A ~@3 A ~@19 A ~@19 A ~@6 B ~@23 B ~@7 B ~>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.36)

// … 9 more lines

More by Tony Orlando