Strudelify

Headline News

"Weird Al" Yankovic

KeyE♭ majorTempo94 bpm
0:00/0:00
// Headline News — "Weird Al" Yankovic
// 94 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 47, 4/4 at bar 48) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 1 "Lead Vox 1" overdriven guitar (copy of ch 2 "Lead Vox 2" choir aahs); ch 3 "Lead Vox 3" baritone sax (copy of ch 2 "Lead Vox 2" choir aahs)
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(94/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.

// other · piano
const piano = note("<~@80 A B A C D@2 A C ~@3>".pickRestart({
  A: "~@3 [ab4,ab5]", B: "[g4,g5] [f4,f5] ~@2", C: "[g4,g5]@4 [f4,f5]@5 ~@7",
  D: "[~@4 [g4,g5] [f4,f5] ~@2, ~@3 [ab4,ab5]@2 ~@3]/2", // G F Ab
})).s("gm_piano").gain(0.4).pan(0.2)

// chords · piano
const piano_2 = note(`<
  A B C@2 D E F G H I J K L@2 M N O A B C@2 ~@13 A B C@2 A B C@2 P Q P R@3 S@2 T U@2 V W X@2 Y Z@3 AA AB@3 AA AC@4 AD@2
  AE@2 AF@2 AD@2 AG@2 AH@2 AD@2 AI@2 AD@2 AJ@2 ~
>`.pickRestart({
  A: "d4@2 f4@2 bb4@2 f4@2 c5@7 ~", B: "d4 f4 bb4 f5 c5@3 ~",
  C: "[[eb4,ab4]@8 [d4,f4]@8 [eb4,ab4]@8 [d4,f4]@7 ~, bb4@31 ~]/2", // Ab5 Dm Ab5 Dm
  D: "~@3 eb5 ~@3 eb5, [c3,c5] [bb2,bb4], eb5@3 ~ eb5@3 ~, g4!2 f4!2, ~ c4@3 ~ bb3@3", // C Bb
  E: "~@7 eb5, [eb3,eb5] g2, bb4@3 bb4@5, g4!2 ~ g4, ~ eb4@3 ~ g3@3", // Eb
  F: "~@3 c5 ~@3 eb5, [ab2,ab4]@2 ~ bb4, c5@3 ~@2 eb4@3, ~ ab3@3 [eb3,g4]@4, ~@2 eb5@2 eb5@3 ~", // Ab Eb
  G: "~@3 bb3 ~@3 eb5, [bb2,bb4,f5] [eb3,bb4], ~ bb3@2 ~ g4@2 g4@2, ~@2 d5@2 eb5@3 ~, ~@5 eb4@3", // Bb5 Eb5
  H: "~@7 ab4, [ab2,c5], eb5@3 eb5@3 eb5@2, ab4@2 ab4@3 ab4@2 ~, ~ ab3@3 ab3@4", // Ab
  I: "~@3 bb4 ~@3 eb5, bb2 [eb3,bb4], f5@2 f5@2 eb5@3 ~, ~ bb3@3 ~ eb4@3, ~ bb4@2 ~ g4@2 g4@2", // Eb5
  J: "~@3 bb3 ~@3 eb4, [bb2,f5] [eb3,g5], bb4!4, ~ bb3@2 ~@2 eb4@2 ~", // Bb5 Eb
  K: "~@3 ab5 ~@3 g5, ab3 eb3, ab5@3 ~ g5@3 ~, c5!2 bb4!2, ~ ab4@3 ~ eb4@3",
  L: "[~@11 [bb2,f5] ~@3 gb5, bb2@4 bb2@4 bb2@3 ~ [b2,eb5]@4, f5@3 f5@8 ~ gb5@3 ~, bb4 bb4@2 bb4@2 bb4 b4!2, ~ bb3@4 bb3@2 bb3@2 bb3@3 ~ b3@3]/2", // Bb5 B
  M: "~@3 eb5 ~@3 gb5, [eb3,bb4] [b2,eb5], eb5@3 ~ gb5@3 ~, g4!2 b4!2, ~ eb4@3 ~ b3@3", // Eb5 B
  N: "~@7 ab2, ab2@7 ~, ~ ab3@3 ab3@2 ab3@2, ~@2 eb4@3 eb4@3, ~@3 [ab4,bb4]@5", // Absus2
  O: "~@12 ab3@2 ab2 ~, ab2@7 ~, bb4@4 ab3 bb4@2 ~, eb5@2 ab4@5 ~, ab4 ab3@2 eb5@4 ~", P: "[f5,ab5,c6]",
  Q: "[eb5,g5,bb5] [d5,f5,bb5]", // Eb Bb
  R: "[[eb5,g5,bb5]@8 ~@28 [ab3,bb3,d4]@2 eb3 ~@7 eb5@2, ~@4 [d5,f5,bb5]@15 ~ eb5@3 ~, ~@4 [ab3,bb3,d4]!4 [ab3,bb3,d4] ~ g4!2, ~@9 eb3@2 eb3@2 eb3@2 eb3@2 eb3@2 ~ [c3,c5]@4, ~@7 c4]/3", // Eb Bb7 Bb Bb7 C
  S: "[~@3 eb5 ~@7 eb5 ~@3 c5, [bb2,bb4] [eb3,eb5] g2 [ab2,ab4], eb5@3 ~ bb4@3 bb4@5 c5@3 ~, f4!2 g4!2 ~ g4 ~ eb5, ~ bb3@3 ~ eb4@3 ~ g3@3 ~ ab3@3]/2", // Bb Eb Ab
  T: "~@3 eb5 ~@3 bb3, [eb3,g4] [bb2,bb4,f5], eb5@3 ~@3 d5@2, ~ eb4@3 ~ bb3@2 ~, ~ bb4 ~@2", // Eb Bb5
  U: "[~@3 eb5 ~@7 ab4 ~@3 bb4, [eb3,bb4] [ab2,c5]@2 bb2, eb5@3 ~ eb5@3 eb5@3 eb5@2 f5@2 f5@2, g4@2 g4@2 ab4@2 ab4@3 ab4@2 ~@2 bb4@2 ~, ~ eb4@3 ~ ab3@3 ab3@4 ~ bb3@3]/2", // Eb5 Ab
  V: "~@3 eb5 ~@3 bb3, [eb3,bb4] [bb2,f5], eb5@3 ~@5, g4!2 bb4!2, ~ eb4@3 ~ bb3@2 ~", // Eb5 Bb5
  W: "~@3 eb4 ~@3 ab5, [eb3,g5] ab3, bb4@2 bb4@2 ab5@3 ~, ~ eb4@2 ~ c5@2 c5@2, ~@5 ab4@3", // Eb
  X: "[~@3 g5 ~@11 [bb2,f5], eb3@4 bb2@4 bb2@4 bb2@3 ~, g5@3 ~ f5@3 f5@8 ~, bb4!3 bb4@2 bb4@2 bb4, ~ eb4@3 ~ bb3@4 bb3@2 bb3@2 bb3@3]/2", // Bb5
  Y: "~@3 gb5 ~@3 eb5, [b2,eb5] [eb3,bb4], gb5@3 ~ eb5@3 ~, b4!2 g4!2, ~ b3@3 ~ eb4@3", // B Eb5
  Z: "[~@6 gb5@2 ~@14 ab2@2 ~@12 ab3@2 ab2 ~ d4@2 f4@2 bb4@2 f4@2, [b2,eb5]@9 ~@5 [ab4,bb4]@10 bb4@8 ab3@2 bb4@4 ~@10, gb5@3 ~ ab2@7 ~ ab2@7 ~@5, b4@4 b4@5 ~@3 eb4@6 eb4@6 eb5@4 ab4@10 ~@10, ~@2 b3@7 ~ ab3@6 ab3@4 ab3@4 ab4@2 ab3@4 eb5@8 ~@10]/3", // B Absus2
  AA: "c5@7 ~ d4@2 f4@2 bb4@2 f5@2",
  AB: "[c5@6 ~@2 [eb4,ab4]@8 [d4,f4]@8 [eb4,ab4]@8 [d4,f4]@7 ~ d4@2 f4@2 bb4@2 f4@2, ~@8 bb4@31 ~@9]/3", // Ab5 Dm Ab5 Dm
  AC: "[c5@6 ~@2 [eb4,ab4]@8 [d4,f4]@8 [eb4,ab4]@8 [d4,f4]@7 ~ [f5,ab5,c6]@16 [eb5,g5,bb5]@8, ~@8 bb4@31 ~@25]/4", // Ab5 Dm Ab5 Dm Fm Eb
  AD: "[[d5,f5,bb5] [f5,ab5,c6]@2 [eb5,g5,bb5]]/2", // Bb Fm Eb
  AE: "[~@2 [ab3,bb3,d4]!2 [ab3,bb3,d4]!2 [g3,bb3,eb4]!2, [d5,f5,bb5]@3 ~]/2", // Bb7 Eb Bb
  AF: "[[g3,bb3,eb4]@2 [g3,bb3,eb4] ~ [f5,ab5,c6]@8 [eb5,g5,bb5]@4]/2", // Eb Fm Eb
  AG: "[~@2 [ab3,bb3,eb4]!2 [ab3,bb3,eb4]!2 [g3,bb3,eb4]!2, [d5,f5,bb5]@3 ~]/2", // Absus2 Eb Bb
  AH: "[[g3,bb3,eb4]@4 [g3,bb3,eb4]@3 ~ [f5,ab5,c6]@16 [eb5,g5,bb5]@8]/2", // Eb Fm Eb
  AI: "[f5 [f5,ab5,c6]@2 [eb5,g5,bb5], [d5,bb5]@3 ~]/2", AJ: "[d5,f5,bb5]/2",
})).s("gm_piano").gain(0.3).pan(0.7)

// chords · acoustic guitar nylon · "Acous Gui"
const acoustic_guitar_nylon = note(`<
  A@2 B C D E F G H G I J K@2 L M N A@2 B C D E F G H G I J K@2 L M N A@2 B C A@2 B C O P Q P R S T@2 U V@2 U W X@2 Y
  Z@3 AA AB AC AD AA AB AC AE@2 AF@2 AG@4 AF@2 AH@4 AF@2 AI@2 AF@2 AJ@3
>`.pickRestart({
  A: "~@3 g3 ~@3 a3, g1 d2, ~ g3@2 ~@3 [d4,f4]@2, ~@2 [bb3,d4,f4]@2 ~ a3@2 ~", // Dm Bb
  B: "~@3 eb3 ~@3 f3, ab1 bb1, ~ eb3@2 ~@2 f3@2 ~, ~ [ab3,bb3] ~ [d3,bb3]", // Absus2 Gm
  C: "~@3 eb3 ~@3 d3, ab1 bb1, ~ eb3@2 ~@2 d3@2 ~, ~ [ab3,bb3] ~ [f3,bb3]", // Absus2 Bb5
  D: "~@3 g3 ~@3 f3, c2 bb1, ~ g3@2 ~@2 f3@2 ~, ~ [c4,eb4] ~ [bb3,eb4]", // Cm Eb5
  E: "~@7 g3, eb2, ~ g3@2 g3@2 g3@2 ~, ~ [bb3,eb4]@2 [bb3,eb4], ~ g2", // Eb5
  F: "~@3 ab3 ~@3 g3, ab1 eb2, ~ ab3@2 ~@2 g3@2 ~, ~ [c4,eb4] ~ [bb3,eb4]", // Cm Eb5
  G: "~@3 bb3 ~@3 g3, bb1 eb2, ~ bb3@2 ~@2 g3@2 ~, ~ [d4,f4] ~ [bb3,eb4]", // Dm Eb5
  H: "~@7 ab3, ab1!2, ~ ab3@2 ab3@2 ab3@2 ~, ~ [c4,eb4]@2 [c4,eb4]", // Cm
  I: "~@3 bb3 ~@3 bb3, bb1 eb2, ~ bb3@2 ~@2 bb3@2 ~, ~ [d4,f4] ~ [eb4,g4]", // Dm Eb
  J: "~@3 c4 ~@3 bb3, ab2 eb2, ~ c4@2 ~@2 bb3@2 ~, ~ [eb4,ab4] ~ [eb4,g4]", // Ab5 Eb
  K: "[~@11 bb3 ~@3 gb4, bb1!2 bb1 [b1,eb4], ~ bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 ~ b3@2 b3@2, ~@2 [d4,f4]@4 [d4,f4]@4 [d4,f4]@2 gb4@3 ~, ~@13 b2@3]/2", // B Dm
  L: "~@3 eb4 ~@3 gb4, [eb2,bb3] [b1,eb4], eb4@3 ~ gb4@3 ~, g3!2 b3!2, ~ eb3@3 ~ b2@3", // Eb5 B
  M: "~@7 eb3, ab2!2, ~ eb3@2 eb3@2 eb3@2 ~, ~ [ab3,bb3,d4]@2 [ab3,bb3,d4]", // Bb7
  N: "~@7 eb3, ab2!2, ~ eb3@2 eb3@2 eb3@2 ~, ~ [ab3,bb3,eb4]@2 [ab3,bb3,eb4]", // Absus2
  O: "~@3 f3@2 ~@2 f3, f1, ~ f3@2 ~@2 f3@2 ~, ~ [ab3,c4]@2 [ab3,c4]", // Ab
  P: "~@3 eb3 ~@3 f3, eb2@2 ~ [bb3,d4], ~ eb3@2 ~ bb2@4, ~@2 [g3,bb3]@2 ~ f3@2 ~", // Bb Gm
  Q: "~@3 f3@2 ~@2 f3, f2, ~ f3@2 ~@2 f3@2 ~, ~ [ab3,c4]@2 [ab3,c4]", // Ab
  R: "~@3 eb3 ~@3 eb3, ab2!2, ~ eb3@2 ~@2 eb3@2 ~, ~ [ab3,bb3,d4] ~ [ab3,bb3,d4]", // Bb7
  S: "~@3 eb3 ~@3 g3, ab2 c2, ~ eb3@2 ~@3 [c4,eb4]@2, ~@2 [ab3,bb3,d4]@2 ~ g3@2 ~", // Cm Bb7
  T: "[~@3 f3 ~@7 g3 ~@3 ab3, bb1 eb2@2 ab1, ~ f3@2 ~@2 g3@2 g3@2 g3@2 ~@2 ab3@2 ~, ~ [bb3,eb4] ~ [bb3,eb4]@2 [bb3,eb4] ~ [c4,eb4], ~@2 g2 ~]/2", // Eb5 Cm
  U: "~@3 g3 ~@3 bb3, eb2 bb1, ~ g3@2 ~@3 [d4,f4]@2, ~@2 [bb3,eb4]@2 ~ bb3@2 ~", // Dm Eb5
  V: "[~@3 g3 ~@7 ab3 ~@3 bb3, eb2 ab1 ab1 bb1, ~ g3@2 ~@2 ab3@2 ab3@2 ab3@2 ~@2 bb3@2 ~, ~ [bb3,eb4] ~ [c4,eb4]@2 [c4,eb4] ~ [d4,f4]]/2", // Eb5 Cm Dm
  W: "~@3 bb3 ~@3 c4, eb2 ab2, ~ bb3@2 ~@2 c4@2 ~, ~ [eb4,g4] ~ [eb4,ab4]", // Eb Ab5
  X: "[~@3 bb3 ~@11 bb3, eb2 bb1 bb1!2, ~ bb3@2 ~@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 ~, ~ [eb4,g4] ~ [d4,f4]@2 [d4,f4]@2 [d4,f4]]/2", // Eb Dm
  Y: "~@3 gb4 ~@3 eb4, [b1,eb4] [eb2,bb3], gb4@3 ~ eb4@3 ~, b3!2 g3!2, ~ b2@3 ~ eb3@3", // B Eb5
  Z: "[~@3 gb4 ~@7 eb3 ~@7 eb3 ~@3 g3, [b1,eb4] ~@4 g1, gb4@3 ~@3 [ab3,bb3,d4]@4 [ab3,bb3,d4]@2 ~@2 [ab3,bb3,eb4]@4 [ab3,bb3,eb4]@2 ~ g3@2 ~, b3@2 b3@2 ~ eb3@2 eb3@2 eb3@2 ~@2 eb3@2 eb3@2 eb3@2 ~@3 [bb3,d4,f4]@2, ~ b2@3 ab2@4 ab2@4 ab2@4 ab2@4 ~@4]/3", // B Bb7 Absus2 Bb
  AA: "~@3 a3 ~@3 g3, d2 g1, ~ a3@2 ~@2 g3@2 ~, ~ [d4,f4] ~ [bb3,d4,f4]", // Dm Bb
  AB: "~@3 a3 ~@3 eb3, d2 ab1, ~ a3@2 ~@2 eb3@2 ~, ~ [d4,f4] ~ [ab3,bb3]", // Dm Absus2
  AC: "~@3 f3 ~@3 eb3, bb1 ab1, ~ f3@2 ~@3 [ab3,bb3]@2, ~@2 [d3,bb3]@2 ~ eb3@2 ~", // Absus2 Gm
  AD: "~@3 d3 ~@3 g3, bb1 g1, ~ d3@2 ~@3 [bb3,d4,f4]@2, ~@2 [f3,bb3]@2 ~ g3@2 ~", // Bb Bb5
  AE: "[~@3 d3 ~@3 f3@2 ~@2 f3 ~@3 eb3, bb1 f1@2 eb2, ~ d3@2 ~@3 [ab3,c4]@4 [ab3,c4]@2 ~@2 [g3,bb3]@2, ~@2 [f3,bb3]@2 ~ f3@2 ~@2 f3@2 ~@2 eb3@2 ~]/2", // Ab Gm Bb5
  AF: "[~@3 f3 ~@3 f3@2 ~@2 f3 ~@3 eb3, bb2 f2@2 eb2, ~ f3@2 ~@2 f3@2 ~@2 f3@2 ~@2 eb3@2 ~, ~ [bb3,d4] ~ [ab3,c4]@2 [ab3,c4] ~ [g3,bb3]]/2", // Bb Ab Gm
  AG: "[~@22 ab3@2 ~@12 [bb3,eb4]@2 g3 ~@7 f3@4 ~@4 f3@2 ~@6 eb3@2, bb2@9 ab3 [bb3,d4]@2 ~@2 [bb3,eb4]@4 ~@4 [ab3,c4]@4 [ab3,c4]@2 ~@2 [g3,bb3]@2, ~ f3@2 f3@9 ~ g3@2 g3@2 g3@2 ~@2 f3@2 ~@2 f3@2 ~@5, ~@4 [bb3,d4]@6 ab3@2 [bb3,d4]@2 ab3@2 ab2@8 eb2@15 ~ f1@16 eb2@8, ~@8 ab1@16 ~@8 eb3@7 ~@19 eb3@4 ~@2]/4", // Eb5 Bb Eb5 Ab Gm Bb
  AH: "[~@11 bb3 g3 ~@4 g3 ~ g2 ~@3 f3@2 ~@2 f3 ~@3 eb3, bb2@10 ab2@2 ab3@2 [bb3,eb4]@2 ab2@2 ab3@2 eb4@4 eb4@4 bb3@13 ~@3 [ab3,c4]@8 [ab3,c4]@4 ~@4 [g3,bb3]@4, ~ f3@2 f3@9 g2@3 g3 g2@3 ~ f1@8 ~@4, ~@4 d4@20 [f3,bb3]@2 g3@4 eb4@6 [g3,eb4]@5 ~ f3@4 ~@4 f3@4 ~@4 eb3@4 ~@2, ~@4 bb3@4 ab1@16 g1@17 ~@15 eb2@8]/4", // Eb5 Ab Gm Bb5 Cm
  AI: "[~@7 f3@2 ~@2 f3 ~@3 eb3, bb2@3 eb2, ~ f3@2 f3@2 f3 [ab3,c4]@3 f3 [ab3,c4]@2 ~ eb3@2 ~, ~ [bb3,d4]@5 ~ [g3,bb3], ~ f1@2 ~]/2", // Ab Bb Gm
  AJ: "[~@3 f3@16 ~@5, bb2@2 ~, ~ f3@2 ~@21, ~ [bb3,d4]@8 ~@3]/3", // Bb
})).s("gm_acoustic_guitar_nylon").gain(0.38).pan(0.1)

// chords · pad warm · "SynthStrn"
const pad_warm = note(`<
  ~@17 A@2 B@2 C@2 D E F G@3 H@2 I J K L M N@2 L M N@2 O@2 P Q R@2 ~@10 S@4 T U V@2 T U W@4 X@6 Y@8 Z@3 ~@2
>`.pickRestart({
  A: "[[g3,bb3,d4,f4]@7 [a3,d4,f4]@8 ~ [bb3,d4]@8 [a3,d4,f4]@8, ~@15 [g3,f4]@8 ~@9]/2", // Gm7 Dm Bb Dm G7
  B: "[[eb3,ab3,bb3]@8 [d3,f3,bb3]@7 [eb3,ab3,bb3]@9 [d3,f3,bb3]@8]/2", // Ebsus4 Bb Ebsus4 Bb
  C: "[[g3,c4,eb4]@7 [f3,bb3,eb4]@8 [g3,bb3,eb4]@16 ~]/2", D: "[ab3,c4,eb4]@7 ~ [g3,bb3]@8, ~@7 eb4@8 ~",
  E: "[bb3,d4,f4] [g3,bb3,eb4]", F: "[ab3,c4,eb4]",
  G: "[[bb3,d4,f4]@7 ~ g3@7 [bb3,d4,f4]@8 ~ [bb3,eb4,g4]@7 ~ [c4,ab4]@7 ~ [bb3,g4]@8, ~@7 [bb3,eb4]@8 ~@16 eb4@8 eb4@8 ~]/3", // Bb Eb Fm Eb Eb5
  H: "[[bb3,d4,f4]@3 [b3,eb4,gb4]]/2", I: "[g3,bb3,eb4] [b3,eb4,gb4]", J: "eb3 ~ eb3@14, [ab3,bb3,d4]",
  K: "[ab3,bb3,eb4]", L: "[g3,bb3,d4,f4]@7 [a3,d4,f4]@8 ~", M: "[g3,bb3,d4,f4]@7 ~ f4@8, ~@7 [a3,d4]@8 ~",
  N: "[[eb3,ab3,bb3]@7 ~ [d3,f3]@7 ~ [ab3,bb3]@8 [d3,f3,bb3]@6 ~@2, ~@7 bb3@8 eb3@8 ~@9]/2", // Ebsus4 Dm Absus2 Bb
  O: "[[c4,f4,ab4]@15 [eb4,g4,bb4]@8 ~ [d4,bb4]@8, ~@23 f4@8 ~]/2", P: "[c4,f4,ab4]",
  Q: "bb4@7 [d4,f4,bb4]@9, [eb4,g4]", R: "[[ab3,bb3,eb4]@5 ~@3]/2",
  S: "[~@8 [eb3,ab3,d4]@16 [eb3,ab3,eb4]@16 [g3,bb3,d4,f4]@7 [a3,d4,f4]@8 ~ [bb3,d4]@8, ~@55 [g3,f4]@8 ~]/4", // Ab Ab5 Gm7 Dm Bb G7
  T: "[a3,d4,f4] [eb3,ab3,bb3]", U: "[d3,f3,bb3]@7 [eb3,ab3,bb3]@9",
  V: "[bb3@8 [g3,bb3,d4,f4]@7 [a3,d4,f4]@8 ~ [bb3,d4]@8, [d3,f3]@16 ~@7 [g3,f4]@8 ~]/2", // Gm7 Dm Bb Dm G7
  W: "[~@8 [c4,f4,ab4]@15 [eb4,g4,bb4]@8 ~ [d4,bb4]@8 [c4,f4,ab4]@16 [eb4,g4,bb4]@7 [d4,f4,bb4], [d3,f3,bb3]@24 ~@7 f4@8 ~@25]/4", // Fm Eb Gm Fm Eb Bb
  X: "[~@8 [ab3,bb3,d4]@16 [g3,bb3,eb4]@16 [c4,f4,ab4]@15 [eb4,g4,bb4]@8 ~ [d4,bb4]@8 [c4,f4,ab4]@16 [eb4,g4,bb4]@7 [d4,f4,bb4], ~@63 f4@8 ~@25]/6", // Bb7 Eb Fm Eb Gm Fm Eb Bb
  Y: "[~@8 [ab3,bb3,eb4]@16 [g3,bb3,eb4]@15 ~ [c4,f4,ab4]@15 [eb4,g4,bb4]@8 ~ [d4,bb4]@8 [c4,f4,ab4]@16 bb4@7 [d4,f4,bb4]@9 [c4,f4,ab4]@15 [eb4,g4,bb4]@8 f4, ~@63 f4@8 ~@17 [eb4,g4]@16 ~@24]/8", // Absus2 Eb Fm Eb Gm Fm Bb Fm …
  Z: "[[d4,bb4]@8 [c4,f4,ab4]@16 [eb4,g4,bb4]@7 [d4,f4,bb4]@3 ~@14]/3", // Gm Fm Eb Bb
})).s("gm_pad_warm").gain(0.25).pan(0.8)

// bass · fretless bass · "FretlessB"
const bass = note(`<
  ~@20 A B C D E F G@2 H I J K L M N@2 O P N Q R S T U V U W X G Y Z AA@2 AB AC AD AE AF AG AH AI AJ AK AL AM AJ AN AO
  AP AQ AR AS AT@3 AQ AR AS AU AV AW AQ AR AS AR AQ AR AS AX ~@2
>`.pickRestart({
  A: "ab1@8 bb1@7 ~", B: "c2 bb1", C: "eb1 g1", D: "ab1 eb2", E: "bb1@5 ~ d2 ~ eb2 ~ d2 ~ c2 ~ bb1@2", F: "ab1",
  G: "bb1 eb1", H: "ab1@8 eb2@7 ~", I: "bb1@7 ~@9", J: "bb1@7 ~ b1@7 ~", K: "eb2@7 ~ b1@8", L: "ab1@7 ~@9",
  M: "ab1@9 ~@7", N: "g1@5 ~ g1@2 d2@5 ~ d2@2", O: "ab1@5 ~ ab1@2 bb1@5 ~ bb1@2", P: "ab1@5 ~ ab1@2 bb1@4 ~@2 bb1@2",
  Q: "g1@5 ~ g1@2 d2@5 ~ g2@2", R: "ab2@2 g2@2 f2@2 eb2@2 bb2@5 ~ g2@2", S: "ab2 g2 f2 eb2 c3@2 bb2@2",
  T: "f1@4 ~@2 f1 ~ f1@6 ~@2", U: "eb1@5 ~ ab1@2 bb1@5 ~ bb1@2", V: "f1@4 ~@2 f1 ~ f1@5 ~ f1@2",
  W: "ab1@5 ~ g1@2 ab1@5 ~ c2@2", X: "~@4 ab2@3 ~ c2@8, eb2@3 ~@5", Y: "g1 ab1", Z: "eb2@8 bb1@5 ~ d2 ~",
  AA: "[eb2 ~ d2 ~ c2 ~ bb1@2 ab1@16 bb1@8]/2", AB: "eb1 bb1", AC: "eb1 ab1", AD: "eb2@7 ~ bb1@7 ~", AE: "~@8 bb1@7 ~",
  AF: "b1@7 ~ eb2@7 ~", AG: "b1@8 ab1@7 ~", AH: "~ ab1", AI: "~@8 g1@5 ~ g1@2", AJ: "d2@5 ~ d2@2 g1@5 ~ g1@2",
  AK: "d2@5 ~ d2@2 ab1@5 ~ ab1@2", AL: "bb1@5 ~ bb1@2 ab1 ~@5 ab1@2", AM: "bb1@4 ~@2 bb1@2 g1@5 ~ g1@2",
  AN: "d2@5 ~ g2@2 ab2@2 g2@2 f2@2 eb2@2", AO: "bb2@5 ~ g2@2 ab2@2 g2@2 f2@2 eb2@2",
  AP: "g2@2 f2@2 eb2@2 d2@2 f1@4 ~@2 f1 ~", AQ: "f1@6 ~@2 eb1@5 ~ ab1@2", AR: "bb1@5 ~ bb1@2 f1@4 ~@2 f1 ~",
  AS: "f1@5 ~ f1@2 eb1@5 ~ ab1@2", AT: "[bb1@5 ~ bb1@2 ab1@12 c2@2 d2@2 eb2@13 ~@3 f1@4 ~@2 f1 ~]/3",
  AU: "bb1@5 ~ bb1@2 ab2@5 ~ ab2 ~", AV: "ab2@6 f2@2 g2@5 ~ g2 ~", AW: "g2@5 ~@3 f1@4 ~@2 f1 ~",
  AX: "bb1@5 ~ bb1@2 ~@8",
})).s("gm_fretless_bass").gain(0.49).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@47 [~@3 x] [~ x ~ x]!12 [~ x ~@2] ~@30>").gain(0.64)

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

// drums · hihat
const hihat = s("hh").struct("<~@20 A B@4 C B@16 ~@5 D B@20 E ~@22>".pickRestart({
  A: "~@5 x ~@2", B: "x!8", C: "~@6 x!2", D: "~@4 x!4", E: "x!4 ~@4",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@41 [~@7 x] ~@22 [~@3 x ~@4] ~@3 [~@3 x ~@4] ~@22>").gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@33 A ~@3 A ~@3 B ~@18 C ~@3 C ~@3 C ~@22>".pickRestart({
  A: "~@6 x!2", B: "~@4 x!4", C: "~@2 x!2 ~@4",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@20 [~@3 x] ~@4 [x!3 ~ x!3 ~ x!2 ~@6] ~@25 [~ x] ~@39>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@33 A ~@3 A ~@3 B ~@18 C ~@3 D ~@3 D ~@22>".pickRestart({
  A: "~@5 x!2 ~", B: "~@4 x!3 ~", C: "~ x!2 ~@5", D: "~ x ~@6",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@34 A ~@3 A ~@3 A ~ A ~@2 B ~@12 C ~@3 C ~@3 C ~ C ~ C B C ~ C ~ C ~ C ~ C ~ C ~ C ~@4
>`.pickRestart({
  A: "x", B: "~@3 x!2 ~@3", C: "~ x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@42 [x!8]!5 [x!4 ~@4] ~@20 [~@4 x!4] [x!8]!19 [x!4 ~@4] ~@2>").gain(0.72)

stack(
  piano, piano_2, acoustic_guitar_nylon, pad_warm, bass, kick, rim, snare, hihat, low_tom, mid_tom, open_hat, high_tom,
  crash, ride
)

More by "Weird Al" Yankovic