Strudelify
Baggy Trousers cover art

Total Madness

Baggy Trousers

Madness

KeyF majorTempo143 bpm
0:00/0:00
// Baggy Trousers — Madness
// 143 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 6/4 at bar 21, 4/4 at bar 22, 6/4 at bar 75, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(143/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 · electric bass finger · "Bass"
const bass = note(`<
  A B C B D E F G D E F H I J K L I M N O P Q R S P Q R S T U V W T U X Y Z AA Z AA Z AA Z AB AC P Q R S P Q R S T U V W
  T U X Y Z AA Z AA Z AA Z AB AC AD AE AF AG AH AI AJ AK AC AD AE AF AG AH AI AJ AK AC AD AE AF AG AL AM@2
>`.pickRestart({
  A: "~ b1", B: "bb1@4 ab1@4 f1@4 c2 ~ c2 ~", C: "c2 ~ c2 ~ f1@2 c2 ~ b1@8", D: "c2 ~ c2@2 f1@2 c2@2 ab1@4 eb2 ~ eb2 ~",
  E: "eb2 ~ eb2 ~ ab1@2 eb2 ~ bb1@4 f2 ~ f2 ~", F: "f2 ~ f2@2 bb1@2 f2@2 b1@8", G: "bb1@4 ab1@3 ~ f1@4 c2 ~ c2 ~",
  H: "bb1@4 ab1@3 ~ bb1@4 ~@2 bb1@2", I: "a2 bb2 a2 bb2 f1@2 ~ f1", J: "e2@2 f2@2 e2@2 f2@2 bb1@4 ~@2 bb1 ~",
  K: "a2@2 bb2@2 a2@2 bb2@2 c2 ~ c2 ~ c2@2 b1@2", L: "c2 ~@3 bb1@2 ~ bb1", M: "e2 f2 e2 f2 bb1@3 bb1",
  N: "a2@2 bb2@2 a2@2 ~@2 c2 ~ c2 ~ c2 ~ c2 ~", O: "b1@8 bb1@3 ~ ab1@3 ~", P: "f1@4 c2 ~ c2 ~ c2 ~ c2@2 f1@2 c2@2",
  Q: "ab1@4 eb2 ~ eb2 ~ eb2 ~ eb2 ~ ab1@2 eb2 ~", R: "bb1@4 f2 ~ f2 ~ f2 ~ f2@2 bb1@2 f2@2", S: "b1@8 bb1@4 ab1@3 ~",
  T: "bb1@2 ~ bb1 a2 bb2 a2 bb2", U: "f1@2 ~ f1 e2 f2 e2 f2", V: "bb1@4 ~@2 bb1 ~ a2@2 bb2@2 a2@2 bb2@2",
  W: "c2 ~ c2 ~ c2@2 b1@2 c2@2 ~@6", X: "bb1@2 ~ bb1 a2 bb2 a2 ~", Y: "c2 ~ c2 ~ c2 ~ c2 ~ c2@4 db2@3 ~",
  Z: "~@2 d2 ~ d2 ~ d2@2 ~@2 e2 ~ e2 ~ e2 ~", AA: "~@2 d2 ~ d2 ~ d2@2 b1 ~ b1@2 bb1@2 b1@2",
  AB: "~@2 d2 ~ d2 ~ d2 ~ b1@4 bb1@3 ~", AC: "a1 ab1", AD: "f1@2 f2@2 f1@2 f2@2 f1@2 f2 ~ f1@2 f2 ~",
  AE: "ab1@2 ab2 ~ ab1@2 ab2 ~ ab1@2 ab2 ~ ab1@2 ab2 ~", AF: "bb1@2 bb2@2 bb1@2 bb2 ~ bb1@2 bb2 ~ bb1@2 bb2 ~",
  AG: "b1 bb1 a1@2", AH: "ab1@4 f1 f2 f1 f2", AI: "f1@2 f2 ~ f1@2 f2 ~ ab1@2 ab2 ~ ab1@2 ab2 ~",
  AJ: "ab1@2 ab2 ~ ab1@2 ab2 ~ bb1@2 bb2@2 bb1@2 bb2 ~", AK: "bb1@2 bb2 ~ bb1@2 bb2 ~ b1@4 bb1@4", AL: "ab1 ~",
  AM: "[f1@20 f1 ~@11]/2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · piano
const piano = note(`<
  ~ A B C D E F G D E F H I J K L I J M N O P Q R O P Q R S T S U S T S V W X W X W X W Y Z O P Q R O P Q R S T S U S T
  S V W X W X W X W Y Z O P AA AB AC D AD AE AF O P AA AB AC D AD AE AF O P AA AB AG AH@2
>`.pickRestart({
  A: "~@10 [a3,c4,f4] ~@3 [a3,c4,f4] ~", B: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [b1,b2]@8",
  C: "[bb1,bb2]@4 [ab1,ab2]@3 ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // Bb Ab F
  D: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~", // F Ab
  E: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Ab Bb
  F: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~ [b1,b2]@8", G: "[bb1,bb2]@4 [ab1,ab2]@4 ~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~",
  H: "[bb1,bb2]@4 [ab1,ab2]@4 ~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", // Bb Ab Bb
  I: "~@2 [db4,f4,bb4] ~@3 [db4,f4,bb4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~", // Bbm F
  J: "~@2 [c4,f4,ab4] ~@3 [c4,f4,ab4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", // Fm Bb
  K: "~@2 [db4,f4,bb4] ~@3 [db4,f4,bb4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [b3,eb4] ~", // Bbm C B
  L: "[c4,e4] ~@9 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", // C Bb
  M: "~@2 [db4,f4,bb4] ~@3 [db4,f4,bb4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~", // Bbm C
  N: "[b3,eb4]@7 ~ [bb3,d4]@4 [ab3,c4]@3 ~", O: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~",
  P: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~", // Ab
  Q: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", R: "[b1,b2]@2 [bb1,bb2] [ab1,ab2]",
  S: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [db4,f4,bb4] ~@3 [db4,f4,bb4] ~", // Bb Bbm
  T: "~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,ab4] ~@3 [c4,f4,ab4] ~", // F Fm
  U: "[c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [b3,eb4] ~ [c4,e4] ~@7", // C B C
  V: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5]@3 ~ [e4,ab4,db5]@3 ~", // C Dbm
  W: "~@2 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~", // Dm Em
  X: "~@2 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [b3,d4,gb4] ~@3 [b3,d4,gb4] ~", // Dm Bm
  Y: "~@2 [d4,f4,a4] ~@3 [d4,f4,a4] ~ [b1,b2]@4 [bb1,bb2]@4", Z: "[a1,a2]@7 ~ [ab1,ab2]@7 ~",
  AA: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", AB: "[b1,b2] [bb1,bb2] [a1,a2]@2",
  AC: "[ab1,ab2]@8 ~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // Ab F
  AD: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Ab Bb
  AE: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [b1,b2]@4 [bb1,bb2]@4", AF: "[a1,a2] [ab1,ab2]", AG: "[ab1,ab2] ~",
  AH: "[[f1,f2]@3 ~]/2", // F
})).s("gm_piano").gain(0.21).pan(0.3)

// chords · electric guitar clean · "RhythmGtr"
const electric_guitar_clean = note(`<
  A B C B D E F B D E F G H I J K H I L M N O P Q N O P Q R N R S R N R T U V W V U X U Y Z N O P Q N O P Q R N R S R N
  R T U X W V U V U Y Z AA AB AC AD AE AF AG AH AI AA AB AC AD AE AF AG AH AI AA AB AC AD AJ AK@2
>`.pickRestart({
  A: "~ b2", B: "bb2@4 ab2@4 ~@2 [a4,c5] ~@3 [a4,c5] ~", C: "~@2 [a4,c5] ~@3 [a4,c5] ~ b2@8",
  D: "~@2 [a4,c5] ~@3 [a4,c5] ~@3 [ab4,c5] ~@3 [ab4,c5] ~", E: "~@2 [ab4,c5] ~@3 [ab4,c5] ~@3 [bb4,d5] ~@3 [bb4,d5] ~",
  F: "~@2 [bb4,d5] ~@3 [bb4,d5] ~ b2@8", G: "bb2@4 ab2@4 ~@2 [bb4,d5] ~@3 [bb4,d5] ~",
  H: "~@2 [bb4,db5] ~@3 [bb4,db5] ~@3 [a4,c5] ~@3 [a4,c5] ~", I: "~@2 [a4,c5] ~@3 [a4,c5] ~@3 [bb4,d5] ~@3 [bb4,d5] ~",
  J: "~@2 [bb4,db5] ~@3 [bb4,db5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,b4] ~", K: "[g4,c5] ~@9 [bb4,d5] ~@3 [bb4,d5] ~",
  L: "~@2 [bb4,db5] ~@3 [bb4,db5] ~ c4@2 c4 ~ c4 ~ c4 ~", M: "b3@8 bb3@3 ~ ab3@3 ~",
  N: "~@2 [a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~", O: "~@2 [ab4,c5] ~@3 [ab4,c5] ~@3 [ab4,c5] ~@3 [ab4,c5] ~",
  P: "~@2 [bb4,d5] ~@3 [bb4,d5] ~@3 [bb4,d5] ~@3 [bb4,d5] ~", Q: "b2@2 bb2 ab2",
  R: "~@2 [bb4,d5] ~@3 [bb4,d5] ~@3 [bb4,db5] ~@3 [bb4,db5] ~", // Bb Bbm
  S: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,b4] ~ [g4,c5] ~@7", T: "c4 ~ c4 ~ c4 ~ c4 ~ c4@4 db4@4",
  U: "~@2 [f4,a4] ~@3 [f4,a4] ~@3 [g4,b4] ~@3 [g4,b4] ~", V: "~@2 [f4,a4] ~@3 [f4,a4] ~@3 [gb4,b4] ~@3 [gb4,b4] ~",
  W: "~@2 [f4,a4] ~@3 [f4,a4] ~@3 [g4,b4]@2 ~@2 [g4,b4] ~", X: "~@2 [f4,a4] ~@3 [f4,a4] ~@3 [gb4,b4]@2 ~@2 [gb4,b4] ~",
  Y: "~@2 [f4,a4]@2 ~@2 [f4,a4] ~ b3@4 bb3@4", Z: "a3@8 ab3@7 ~",
  AA: "~@3 [ab3,c4] ~@2 [ab3,c4] ~@3 [ab3,c4] ~@3 [ab3,c4] ~", // Ab
  AB: "~@2 [c4,eb4] ~@3 [c4,eb4] ~@3 [c4,eb4] ~@3 [c4,eb4] ~", AC: "~@2 [d4,f4] ~@3 [d4,f4] ~@3 [d4,f4] ~@3 [d4,f4] ~",
  AD: "b3@3 ~ bb3@3 ~ a3@8", AE: "ab3@8 ~@3 [ab3,c4] ~@2 [ab3,c4] ~",
  AF: "~@2 [ab3,c4] ~@3 [ab3,c4] ~@3 [c4,eb4] ~@3 [c4,eb4] ~", // Ab Cm
  AG: "~@2 [c4,eb4] ~@3 [c4,eb4] ~@3 [d4,f4] ~@3 [d4,f4] ~", AH: "~@2 [d4,f4] ~@3 [d4,f4] ~ b3@3 ~ bb3@3 ~",
  AI: "a3 ab3", AJ: "ab3 ~", AK: "[f3@3 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.12)

// other · harmonica
const harmonica = note(`<
  ~@36 A B A B C D C E F ~@16 A B A B C D C E F ~@3 G H ~@2 I F ~@3 G H ~@2 I F ~@3 G H ~@2
>`.pickRestart({
  A: "a5@4 f5@2 d5@2 e5@7 ~", B: "f5@4 d5@2 f5@2 gb5@7 ~", C: "a5@2 a5@2 f5@2 d5@2 b5 ~ b5@2 g5@2 e5@2",
  D: "a5 ~ a5@2 f5@2 d5@2 b4@7 ~", E: "a5 ~ a5@2 f5@2 d5@2 eb5@4 d5@4", F: "db5 c5", G: "eb5 d5 db5@2", H: "c5 ~",
  I: "~@2 eb5 d5",
})).s("gm_harmonica").gain(0.32)

// other · baritone sax · "Sax"
const baritone_sax = note(`<
  A B A B ~@11 C@2 D@2 E F@3 G@4 H I J I K I J I L M@6 N@2 O P@3 Q P@3 Q I J I K I J I L M@6 N@2 R S T U V W X Y Z R S T
  U V W X Y Z R S T U V AA AB ~
>`.pickRestart({
  A: "~ b3", B: "bb3 ab3 ~@2", C: "[~@2 b3@2 c5 ~@3 f3@16 ~@8]/2", D: "[~@2 ab3@6 f3@16 ~@2 b3@2 c4 ~@3]/2",
  E: "~@8 bb3@4 ab3@3 ~", F: "[~@14 eb3@4 f3 ~@11 eb3@4 f3 ~@13]/3",
  G: "[b3@8 bb3@3 ~ ab3 ~ eb3@4 f3 ~@11 eb3@4 f3 ~@11 eb3@4 f3 ~@13]/4", H: "b3@8 bb3@3 ~ ab3 ~@3", I: "f3",
  J: "~@5 ab3@3", K: "~@10 b3@2 c5 ~@3", L: "c4 ~ c4 ~ c4 ~ c4 ~ c4@4 db4@4", M: "d4/6",
  N: "[d4@19 ~ b4@2 ~@2 b3@4 bb3@4, ~@20 bb4 ~@11]/2", O: "a3 ab3", P: "f3@2 ab3 ~@3 f3 ~@2 f3 ab3 f3 eb3@2 f3@2",
  Q: "b3@2 bb3 ab3", R: "a3 ~ ab3 ~", S: "f3 ~ ab3 ~ f3 ~ ab3 ~ f3 ab3 ~ f3 ab3 ~@3",
  T: "f3!2 ab3 ~ f3 ~ ab3 ~ f3 ab3 ~ f3 ab3 ~@3", U: "f3!2 bb3 ~ f3 ~ bb3 ~ f3 bb3 ~ f3 bb3 ~@3", V: "b3 bb3 a3 ~",
  W: "ab3@4 ~@4 f3 ~ ab3 ~ f3 ~ ab3 ~", X: "f3 ab3 ~ f3 ab3 ~@3 f3!2 ab3 ~ f3 ~ ab3 ~",
  Y: "f3 ab3 ~ f3 ab3 ~@3 f3!2 bb3 ~ f3 ~ bb3 ~", Z: "f3 bb3 ~ f3 bb3 ~@3 b3@4 bb3@4", AA: "ab3 ~@3", AB: "f2@5 ~@11",
})).s("gm_baritone_sax").gain(0.25)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  A B C D E F G D E F G H I J K L I J M N O P Q R O P Q R S T S U S T S V W X Y Z AA AB AC AD AE O P Q R O P Q R S T S U
  S T S V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AF AG AH AI AJ AK AL AM AN AF AG AH AI AO AP@2
>`.pickRestart({
  A: "~ b5", B: "bb5 ab5 ~@2", C: "~ [eb5,b5]", D: "[d5,bb5]@4 [c5,ab5]@3 ~ [a5,c6] ~ [a5,c6] ~@3 [a5,c6] ~",
  E: "~@2 [a5,c6] ~@3 [a5,c6] ~@3 [c6,eb6]@2 ~@2 [c6,eb6] ~", // Am Cm
  F: "~@2 [c6,eb6] ~@3 [c6,eb6] ~@3 [bb5,d6]@3 ~ [bb5,d6] ~", G: "~@2 [bb5,d6] ~@3 [bb5,d6] ~ [eb5,b5]@7 ~",
  H: "[d5,bb5]@4 [c5,ab5]@3 ~ [d6,d7]@2 [bb5,bb6]@2 [f6,f7]@2 [bb5,bb6]@2", // Gm Fm D Bb F Bb
  I: "[db6,db7] [bb5,bb6] [f6,f7] [bb5,bb6] [c6,c7] [a5,a6] [f5,f6] [a5,a6]", // Db Bb F Bb C A F A
  J: "[ab5,ab6] [a5,a6] [c6,c7] [a5,a6] [d6,d7] [bb5,bb6] [f6,f7] [bb5,bb6]", // Ab A C A D Bb F Bb
  K: "[db6,db7]@2 [bb5,bb6]@2 [f6,f7]@2 [bb5,bb6]@2 [e5,c6,e6,c7] ~ [e5,c6,e6,c7] ~ [e5,c6,e6,c7] ~ [eb5,b5,eb6,b6] ~", // Db Bb F Bb C Abm
  L: "[e5,c6,e6,c7] ~@3 [d6,d7] [bb5,bb6] [f6,f7] [bb5,bb6]", // C D Bb F Bb
  M: "[db6,db7]@2 [bb5,bb6]@2 [f6,f7]@2 [bb5,bb6]@2 [e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~", // Db Bb F Bb C
  N: "[eb5,b5]@2 [d5,bb5] [c5,ab5]", O: "[a5,c6] ~ [a5,c6] ~@3 [a5,c6] ~@3 [a5,c6] ~@3 [a5,c6] ~",
  P: "~@2 [c6,eb6]@2 ~@2 [c6,eb6] ~@3 [c6,eb6] ~@3 [c6,eb6] ~", // Cm
  Q: "~@2 [bb5,d6]@3 ~ [bb5,d6] ~@3 [bb5,d6] ~@3 [bb5,d6] ~", R: "[eb5,b5]@7 ~ [d5,bb5]@4 [c5,ab5]@3 ~",
  S: "[d6,d7] [bb5,bb6] [f6,f7] [bb5,bb6] [db6,db7] [bb5,bb6] [f6,f7] [bb5,bb6]", // D Bb F Bb Db Bb F Bb
  T: "[c6,c7] [a5,a6] [f5,f6] [a5,a6] [ab5,ab6] [a5,a6] [c6,c7] [a5,a6]", // C A F A Ab A C A
  U: "[e5,c6,e6,c7] ~ [e5,c6,e6,c7] ~ [e5,c6,e6,c7] ~ [eb5,b5,eb6,b6] ~ [e5,c6,e6,c7]@2 ~@6", // C Abm C
  V: "[e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [e5,c6]@3 ~ [f5,db6]@3 ~", // C Db
  W: "~@2 [d5,f5,a5]@4 [d5,f5,a5] ~@3 [e5,g5,b5] ~@3 [e5,g5,b5] ~", // Dm Em
  X: "~@2 [d5,f5,a5]@4 [d5,f5,a5] ~@3 [b4,d5,gb5] ~@3 [b4,d5,gb5] ~", // Dm Bm
  Y: "~@2 [d5,f5,a5]@4 [d5,f5,a5] ~@3 [e5,g5,b5]@4 [e5,g5,b5] ~", // Dm Em
  Z: "~@2 [d5,f5,a5] ~@3 [d5,f5,a5] ~@3 [b4,d5,gb5]@4 [b4,d5,gb5] ~", // Dm Bm
  AA: "[d5,f5,a5] ~ [d5,f5,a5] ~@3 [d5,f5,a5] ~@3 [e5,g5,b5]@4 [e5,g5,b5] ~", // Dm Em
  AB: "[d5,f5,a5] ~ [d5,f5,a5] ~@3 [d5,f5,a5] ~@3 [b4,d5,gb5]@3 ~ [b4,d5,gb5] ~", // Dm Bm
  AC: "~@2 [d5,f5,a5]@3 ~ [d5,f5,a5] ~@3 [e5,g5,b5]@4 [e5,g5,b5] ~", AD: "~@2 [d5,f5,a5]@4 [d5,f5,a5] ~ b4@4 bb4@4",
  AE: "a4@7 ~ ab4@8", AF: "~@2 [f4,c5] ~@3 [f4,c5] ~@3 [f4,c5] ~@3 [f4,c5] ~",
  AG: "~@2 [ab4,eb5] ~@3 [ab4,eb5] ~@3 [ab4,eb5] ~@3 [ab4,eb5] ~", // Ab5
  AH: "~@2 [bb4,f5] ~@3 [bb4,f5] ~@3 [bb4,f5] ~@3 [bb4,f5] ~", AI: "[gb5,b5] [f5,bb5] [e5,a5]@2",
  AJ: "[eb5,ab5]@7 ~@3 [f4,c5] ~@3 [f4,c5] ~", AK: "~@2 [f4,c5] ~@3 [f4,c5] ~@3 [ab4,eb5] ~@3 [ab4,eb5] ~",
  AL: "~@2 [ab4,eb5] ~@3 [ab4,eb5] ~@3 [bb4,f5] ~@3 [bb4,f5] ~", // Ab5 Bb5
  AM: "~@2 [bb4,f5] ~@3 [bb4,f5] ~ [gb5,b5]@4 [f5,bb5]@4", AN: "[e5,a5]@8 [eb5,ab5]@7 ~", AO: "[eb5,ab5]@7 ~@9",
  AP: "[[f5,c6,f6]@20 [g5,a5,b5] [b4,c5,d5,e5] [e4,f4,g4,a4] [c4,d4] ~@8, e6 ~@31]/2", // F5 G Cmaj7 Fmaj7 Csus2
})).s("gm_rock_organ").gain(0.18).pan(0.3)

// chords · vibraphone · "Vibes"
const vibraphone = note(`<
  ~ A B A C D E A C D E F G H I J G H K L M N O ~ M N O ~ P Q R S P Q R T U V W X Y Z AA AB AC M N O ~ M N O ~ P Q R S P
  Q R T U V W X Y Z AA AB AC M N O AD AE C D AF AG M N O AD AE C D AF AG M N O AD AH AI ~
>`.pickRestart({
  A: "~@10 [f5,c6] ~@3 [f5,c6] ~", B: "~@2 [f5,c6] ~@3 [f5,c6] ~@9",
  C: "~@2 [f5,c6] ~@3 [f5,c6] ~@3 [ab5,eb6] ~@3 [ab5,eb6] ~", // F5 Ab5
  D: "~@2 [ab5,eb6] ~@3 [ab5,eb6] ~@3 [bb5,f6] ~@3 [bb5,f6] ~", E: "~@2 [bb5,f6] ~@3 [bb5,f6] ~@9",
  F: "~@8 d6 ~ bb5 ~ f6@2 bb5 ~", G: "db6 ~ bb5 ~ f6 ~ bb5 ~ [a5,c6] ~ [f5,a5] ~ c5 ~ [f5,a5] ~",
  H: "ab5 ~ [f5,a5] ~ c6 ~ [f5,a5] ~ [bb5,d6] ~ [f5,bb5] ~ f6 ~ bb5 ~", // F Bb Bb5
  I: "[bb5,db6] ~ [f5,bb5] ~ f6 ~ bb5 ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [eb5,b5] ~", // Bbm Bb5 C Abm
  J: "[e5,c6] ~@7 d6 ~ bb5 ~ f6@2 bb5 ~", // C
  K: "[bb5,db6] ~ [f5,bb5] ~ f6 ~ bb5 ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~", // Bbm Bb5 C
  L: "[eb5,b5] ~@7 [d5,bb5] ~@3 [c5,ab5] ~@3", M: "~@2 [f5,c6] ~@3 [f5,c6] ~@3 [f5,c6] ~@3 [f5,c6] ~",
  N: "~@2 [ab5,eb6] ~@3 [ab5,eb6] ~@3 [ab5,eb6] ~@3 [ab5,eb6] ~", // Ab5
  O: "~@2 [bb5,f6] ~@3 [bb5,f6] ~@3 [bb5,f6] ~@3 [bb5,f6] ~", P: "d6 ~ bb5 ~ f6@2 bb5 ~ db6 ~ bb5 ~ f6 ~ bb5 ~",
  Q: "[a5,c6] ~ [f5,a5] ~ c5 ~ [f5,a5] ~ ab5 ~ [f5,a5] ~ c6 ~ [f5,a5] ~", // Am F
  R: "[bb5,d6] ~ [f5,bb5] ~ f6 ~ bb5 ~ [bb5,db6] ~ [f5,bb5] ~ f6 ~ bb5 ~", // Bb Bb5 Bbm Bb5
  S: "[e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [eb5,b5] ~ [e5,c6] ~@7", // C Abm C
  T: "[e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~ [e5,c6] ~@3 [f5,db6] ~@3", U: "a5@2 ~@2 f5 ~ [a4,d5] ~ [b4,e5]@2 ~@6",
  V: "f5 ~@3 [a4,d5] ~ f5 ~ gb5 ~@7", W: "d5@2 ~@2 f5 ~ [a4,d5] ~ e5@2 ~@6, a5 ~@7 b4 ~@7",
  X: "f5 ~ f5 ~ [a4,d5] ~ f5 ~ gb5@2 ~@6", Y: "[f5,a5] ~ [f5,a5] ~ f5 ~ d5 ~ [g5,b5] ~ [g5,b5] ~ g5@2 e5 ~",
  Z: "[f5,a5] ~ [f5,a5] ~ f5 ~ d5 ~ b4@3 ~@5", // F
  AA: "[f5,a5] ~ [f5,a5] ~ [d5,f5] ~ [a4,d5] ~ [g5,b5] ~ [g5,b5] ~ e5@2 [b4,e5] ~, ~@12 g5 ~@3", // F Dm D5 G E5
  AB: "[f5,a5] ~ [f5,a5] ~ [d5,f5] ~ [a4,d5] ~ b4@2 ~@2 bb4@2 ~@2", AC: "a4@3 ~@5 ab4@2 ~@6",
  AD: "b4 ~@3 bb4 ~@3 a4@2 ~@6", AE: "ab4 ~@9 [f5,c6] ~@3 [f5,c6] ~", AF: "~@2 [bb5,f6] ~@3 [bb5,f6] ~ b4 ~@3 bb4 ~@3",
  AG: "a4@2 ~@6 ab4 ~@7", AH: "ab4 ~@15", AI: "f4@3 ~",
})).s("gm_vibraphone").gain(0.28).pan(0.7)

// chords · tubular bells · "Bells" · G5
const tubular_bells = note("<[[d5,g5]!5 ~@11] ~ [[d5,g5]!5 ~@11] ~@8 [[d5,g5]!5 ~@11] ~@81 [f4@5 ~@11] ~>")
  .s("gm_tubular_bells").gain(0.21)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A C@7 D C@2 E F C@2 E G C@7 H C@3 I C@3 J C@8 ~ C@7 H C@3 I C@3 J C@8 ~ C@3 ~ A C@2 B ~ C@3 ~ A C@2 B ~ C@3 ~ K
  ~ B
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~ x", D: "x!5 ~ x ~@5 x ~@3", E: "~@4 x ~@5 x!3 ~ x ~", F: "~@2 x!3 ~ x ~@5 x ~@3",
  G: "~@10 x!3 ~ x ~", H: "~@4 x ~@3 x!5 ~ x ~", I: "~@2 x!3 ~ x ~@3 x!3 ~ x ~", J: "~@2 x!3 ~ x ~@9",
// … 58 more lines

More by Madness