Strudelify

The Courtroom, Scene V: Very Expensive Gaiters

Monty Python

KeyF majorTempo200 bpm
0:00/0:00
// The Courtroom, Scene V: Very Expensive Gaiters — Monty Python
// 200 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "alto sax" alto sax (copy of ch 2 "french horn" french horn); ch 7 "tenor sax" tenor sax (copy of ch 3 "trombone" trombone)
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/3)

// 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 · french horn
const french_horn = note(`<
  A B C D E F G H I J K L M N O P Q R S T E F G H I J K L M N O P Q R S T ~@6 U ~@15 U ~@10 V W X ~ Y Z AA AB AC AD AE
  AF AG AH AI ~ V W X ~ Y Z AA AB AC AD AE AJ AK AL@2 A B C D E F G H I J K L M N O P Q R S T AM AN AO AN AP AQ AR AS AT
  AU AV AU AW AX AY AZ
>`.pickRestart({
  A: "f5@5 e5@2 ~ d5@5 db5@2 ~", B: "c5@5 b4@2 ~ bb4@5 a4@2 ~", C: "g4@2 ~ a4@2 bb4 ~@2 a4@3 ~@2 g4 ~@2",
  D: "c5@2 ~@11 c5@2 ~", E: "f4 ~@4 f4 ~@2 f4@2 ~ e4 ~ f4 ~@2", F: "a4 ~@4 a4 ~@2 a4 ~@4 f4@2 ~",
  G: "g4@2 ~@3 g4 ~@2 g4@2 ~@3 a4 ~@2", H: "bb4@13 g4 ~@2", I: "e4@2 ~@3 e4 ~@2 e4@2 ~ eb4@2 e4 ~@2",
  J: "bb4@2 ~@3 bb4@2 ~ bb4@2 ~@3 g4 ~@2", K: "f4@2 ~@3 f4 ~@2 f4@2 ~@3 g4 ~@2", L: "a4@11 ~@2 a4 ~@2",
  M: "f4@2 ~@3 f4 ~@2 f4@3 e4@2 f4 ~@2", N: "g4@2 ~@3 a4 ~@2 a4@2 ~@3 g4@2 ~", O: "g4@2 ~@3 g4 ~@2 g4@2 ~@3 g4 ~@2",
  P: "b4@11 ~@2 b4@2 ~", Q: "c5@2 ~@3 e5 ~@2 e5@2 ~ eb5@2 e5 ~@2", R: "d5@2 ~@3 f4 ~@2 f4 ~@4 f4 ~@2",
  S: "e4 ~@4 f4 ~@2 e4@2 ~@3 f4 ~@2", T: "e4@5 ~@3 e4@6 ~@2", U: "~@8 b4@3 ~@2 b4 ~@2",
  V: "bb3@3 ~@5 bb3@3 ~@2 bb3 ~@2", W: "f4@2 ~@3 f4@2 ~ f4@2 ~@3 e4@2 ~", X: "f4@2 ~@3 f4 ~@2 d4@2 ~@3 d4 ~@2",
  Y: "~@8 bb3@3 ~@2 bb3 ~@2", Z: "c5@2 ~@3 c5 ~@2 c5@2 ~@3 b4@2 ~", AA: "c5@2 ~@3 c5 ~@2 a4@2 ~@3 a4 ~@2",
  AB: "a4@2 ~@3 a4@2 ~ ab4@2 ~@3 ab4 ~@2", AC: "a4@7 ~", AD: "f4@2 ~@3 f4@2 ~ e4@2 ~@3 e4 ~@2", AE: "f4@7 ~ d4@7 ~",
  AF: "f4@2 ~@3 f4 ~@2 f4@2 ~@3 f4 ~@2", AG: "e4@2 ~@3 e4 ~@2 e4@2 ~@3 e4 ~@2", AH: "eb4@3 ~ eb4@3 ~",
  AI: "eb4@3 ~@5 c4@7 ~", AJ: "eb4@3 ~@2 eb4 ~@2 g4@2 ~@3 g4@2 ~", AK: "f4@3 ~@2 f4 ~@2 eb4@2 ~@3 eb4 ~@2",
  AL: "[d4@21 ~@3 d4@6 ~@2]/2", AM: "c4@4 ~ c4@2 ~ f4@4 ~ f4@2 ~", AN: "c4@4 ~ c4 ~@2 c4@4 ~ c4 ~@2",
  AO: "d4@4 ~ d4@2 ~ e4@4 ~ e4 ~@2", AP: "c4@3 ~@2 c4@2 ~ g4@4 ~ e4 ~@2", AQ: "f4@3 ~@2 f4@2 ~ c5@4 ~ c5 ~@2",
  AR: "c5@3 ~@2 c5@2 ~ b4@4 ~ b4 ~@2", AS: "g4@4 ~ g4@2 ~ g4@4 ~ g4@2 ~", AT: "f4@3 ~@2 f4 ~@2 f4@4 ~ f4 ~@2",
  AU: "db4@4 ~ db4 ~@2 db4@4 ~ db4 ~@2", AV: "d4@3 ~@2 d4 ~@2 d4@4 ~ d4 ~@2", AW: "d4@4 ~ d5@2 ~ bb4@4 ~ g4@2 ~",
  AX: "f4@6 ~@2 f4@7 ~", AY: "c4@6 ~@2 c4@7 ~", AZ: "c4@5 c4@2 ~ c4@2 ~@6",
})).s("gm_french_horn").gain(0.51)

// other · french horn · soft notes
const french_horn_soft = note(`<
  ~@36 A B C D E F G H I J K L M N O P A B C D E F G H I J K L M N O P Q R ~@2 S T ~@10 Q R ~@2 S T ~@46
>`.pickRestart({
  A: "c4@4 ~ c4@2 ~ f4@4 ~ f4@2 ~", B: "c4@3 ~@2 c4 ~@2 c4@3 ~@2 c4@2 ~", C: "d4@4 ~ d4@2 ~ e4@4 ~ e4@2 ~",
  D: "c4@3 ~@2 c4 ~@2 c4@4 ~ c4 ~@2", E: "c4@3 ~@2 c4 ~@2 g4@3 ~@2 e4@2 ~", F: "f4@4 ~ f4@2 ~ c5@4 ~ c5 ~@2",
  G: "c5@3 ~@2 c5 ~@10", H: "g4@4 ~ g4 ~@2 g4@4 ~ g4 ~@2", I: "f4@3 ~@2 f4 ~@2 f4@3 ~@2 f4 ~@2",
  J: "db4@3 ~@2 db4 ~@2 db4@3 ~@2 db4@2 ~", K: "d4@4 ~ d4 ~@2 d4@4 ~ d4 ~@2", L: "db4@4 ~ db4 ~@2 db4@4 ~ db4 ~@2",
  M: "d4@3 ~@2 d5@2 ~ bb4@3 ~@2 g4@2 ~", N: "f4@3 ~ f4@3 ~", O: "c4@5 ~@3 c4@6 ~@2", P: "c4@4 ~ c4 ~@2 c4@5 ~@3",
  Q: "bb3@2 ~@3 bb3 ~@2 bb3@2 ~@3 bb3@2 ~", R: "~@5 bb3@2 ~@9", S: "bb3@2 ~@3 bb3 ~@2 bb3@2 ~@3 bb3 ~@2",
  T: "bb3@2 ~@3 bb3@2 ~@9",
})).s("gm_french_horn").gain(0.26)

// other · trombone
const trombone = note(`<
  A B C D E@3 F G@2 E F H E I J K L M N E@3 F G@2 E F H E I J K L M N ~@13 O ~@15 O ~@2 P Q R@2 ~@2 S T U V W@2 X Y Z AA
  P Q R@2 ~@2 S T U V W@2 F AB AC AD A B C D E@3 F G@2 E F H E I J K L M N AE@2 AF AE AG AH AI AJ AK AL AM AN AO AP AQ
  AR
>`.pickRestart({
  A: "f4@5 e4@2 ~ d4@5 db4@2 ~", B: "c4@5 b3@2 ~ bb3@5 a3@2 ~", C: "g3@2 ~ a3@2 bb3 ~@2 a3@3 ~@2 g3 ~@2", D: "c4 ~@7",
  E: "c4@2 ~@3 c4 ~@2 c4@2 ~@3 c4 ~@2", F: "c4@15 ~", G: "bb3@2 ~@3 bb3 ~@2 bb3@2 ~@3 bb3 ~@2",
  H: "c4@3 ~@2 c4 ~@2 c4@2 ~@3 c4 ~@2", I: "d4@2 ~@3 b3 ~@2 b3@2 ~@3 b3 ~@2", J: "g3", K: "c4@7 ~", L: "b3@15 ~",
  M: "c4@2 ~@3 d4 ~@2 c4@2 ~@3 d4@2 ~", N: "c4@6 ~@2 bb3@7 ~", O: "~@13 a3 ~@2", P: "~@8 c3@7 ~", Q: "~@8 d3@7 ~",
  R: "[bb3@19 ~@2 bb3 ~@2 f3@4 ~ d3 ~@2]/2", S: "a3@11 ~@2 ab3@2 ~", T: "a3@4 ~ f3@2 ~ c4@4 ~ d4@2 ~",
  U: "eb4@5 ~@3 d4@7 ~", V: "eb4@3 ~@2 f3@2 ~ e3@3 ~@2 f3 ~@2", W: "[bb3@19 ~@2 f3@2 ~ e3@4 ~ f3@2 ~]/2",
  X: "f3@3 ~ a3@3 ~", Y: "g3@3 ~ bb3@3 ~", Z: "c4@3 ~ bb3@3 ~", AA: "a3@2 ~@6 a3@7 ~", AB: "bb3@6 ~@2 a3@7 ~",
  AC: "bb3@3 ~@2 bb3@2 ~ f3@3 ~@2 d3@2 ~", AD: "bb2@3 ~@5 bb2@4 ~@4", AE: "a3@15 ~", AF: "f3@7 ~ bb3@6 ~@2",
  AG: "bb3@13 ~@3", AH: "a3@7 ~ ab3@7 ~", AI: "g3@6 ~@2 f4@7 ~", AJ: "e4@15 ~", AK: "bb3@15 ~", AL: "a3@7 ~ g3@7 ~",
  AM: "a3@6 ~@2 f3@7 ~", AN: "e3@15 ~", AO: "g3@4 ~ g3 ~@2 g3@4 ~ g3@2 ~", AP: "f3@4 ~ f3@2 ~ a3@4 ~ a3@2 ~",
  AQ: "bb3@4 ~ bb3@2 ~ g3@3 ~@2 g3 ~@2", AR: "a3@5 a3@2 ~ a3@2 ~@6",
})).s("gm_trombone").gain(0.51)

// other · trombone · soft notes
const trombone_soft = note(`<
  ~@15 A ~@15 A ~@5 B C D E F G H I J K L M N O P ~ B C D E F G H I J K L M N O P ~ Q ~@2 R S ~@11 Q ~@2 R S ~@25 A ~@20
>`.pickRestart({
  A: "db4 ~@15", B: "a3@15 ~", C: "f3@6 ~@2 bb3@7 ~", D: "a3@7 ~", E: "bb3@7 ~", F: "a3@6 ~@2 ab3@7 ~",
  G: "g3@6 ~@2 f4@7 ~", H: "e4@13 ~@3", I: "bb3@15 ~", J: "a3@3 ~ g3@3 ~", K: "a3@3 ~ f3@3 ~", L: "e3@7 ~",
  M: "g3@4 ~ g3@2 ~ g3@4 ~ g3 ~@2", N: "f3@4 ~ f3@2 ~ a3@4 ~@4", O: "bb3@3 ~@2 bb3 ~@2 bb3@3 ~@2 g3@2 ~",
  P: "a3@3 ~@2 a3@2 ~ a3@5 ~@3", Q: "db3@7 ~@9", R: "~@3 bb2@5 c3@7 ~", S: "db3@7 ~ d3@7 ~",
})).s("gm_trombone").gain(0.31)

// bass · tuba
const bass = note(`<
  A B C D E F G H I J K L E M N O P Q R S E F G H I J K L E M N O P Q R S ~ T U ~@3 V ~@2 W X Y ~ Z AA AB ~ T U ~@3 V
  ~@2 W X Y ~ Z AA AB AC AD AE AF AG AH AI AJ AK@2 AL AM AN AO AP AQ AC AD AE AF AG AH AI AJ AK@2 AL AM AR AS AT AU A B
  C D E F G H I J K L E M N O P Q R S AV AW AX AY AZ BA BB BC BD BE BF Y BG BH BI BJ
>`.pickRestart({
  A: "f3@5 e3@2 ~ d3@5 db3@2 ~", B: "c3@5 b2@2 ~ bb2@5 a2@2 ~", C: "g2@2 ~ a2@2 bb2 ~@2 a2@3 ~@2 g2 ~@2", D: "c2 ~@7",
  E: "f2 ~@3 c2 ~@3", F: "f2 ~@7 c2@2 ~@6", G: "e2@5 f2@2 ~ g2@5 f2@3", H: "e2@4 ~ d2@2 ~ c2@5 d2 ~@2",
  I: "e2 ~@3 c2 ~@3", J: "g2 ~@3 c2 ~@3", K: "f2@5 g2@3 a2@5 g2@3", L: "f2@5 e2@3 d2@5 c2@2 ~", M: "f2@2 ~@6 c2@3 ~@5",
  N: "d3@5 e3@2 ~ f3@5 e3@3", O: "d3@5 c3@3 b2@5 a2@3", P: "g2@15 ~", Q: "g2@7 ~", R: "c3@2 ~@3 g2 ~@2 c3@3 ~@2 g2@2 ~",
  S: "c3@3 ~ c2@3 ~", T: "f2@7 ~ a2@7 ~", U: "~@4 c3@3 ~", V: "g2@7 ~ g2@6 ~@2", W: "a2@7 ~ a2@6 ~@2",
  X: "d3@7 ~ bb2@7 ~", Y: "a2@7 ~", Z: "c3@6 ~@2 c3@5 ~@3", AA: "e2@3 ~@5", AB: "~@8 f2@3 ~@5", AC: "bb2 ~@3 c3 ~@3",
  AD: "~@4 d3 ~@3", AE: "bb2@2 ~@6 f2@3 ~@5", AF: "bb2 ~@3 f2 ~@3", AG: "bb2 ~@7 c3@2 ~@6", AH: "db3 ~@3 d3 ~@3",
  AI: "c3@2 ~@6 f2@3 ~@5", AJ: "c3@3 ~@5 f2@3 ~@5", AK: "f2@3 ~@5 f2@3 ~@5", AL: "bb2@2 ~@6 bb2@3 ~@5",
  AM: "bb2@3 ~@5 bb2@3 ~@5", AN: "c3@3 ~@5 c3@3 ~@5", AO: "c2 ~@3 c2 ~@3", AP: "f2 ~@3 f2 ~@3", AQ: "f2 ~@3 f2@4",
  AR: "eb2@3 ~ c2@3 ~", AS: "f2@3 ~ f2@2 ~@2", AT: "bb2@4 ~ f2@2 ~ bb2@3 ~@2 f2@2 ~", AU: "bb2 ~ bb2 ~",
  AV: "f2@7 ~ c2@7 ~", AW: "f2@7 ~ a2@6 ~@2", AX: "bb2@7 ~ c3@6 ~@2", AY: "f2@7 ~ c2@6 ~@2", AZ: "e2@7 ~ c2@7 ~",
  BA: "f2@7 ~ d2@7 ~", BB: "g2@7 ~ g2@7 ~", BC: "c2@7 ~", BD: "bb2@7 ~", BE: "a2@7 ~ a2@7 ~", BF: "d3@6 ~@2 bb2@7 ~",
  BG: "bb2@7 ~ bb2@6 ~@2", BH: "c3@3 ~ c3@3 ~", BI: "e2@3 ~ c2@3 ~", BJ: "f2@5 f2@2 ~ f2@2 ~@6",
})).s("gm_tuba").gain(0.51)

// bass · tuba · soft notes
const bass_soft = note(`<
  ~@14 A ~@15 A ~@5 B ~ C D E F ~ G H ~@3 I ~ J K B ~ C D E F ~ G H ~@3 I ~ J K ~ L ~@15 L ~@28 A ~@21
>`.pickRestart({
  A: "~@8 e3 ~@7", B: "f2@7 ~ c2@7 ~", C: "bb2@7 ~@9", D: "f2@7 ~ c2@6 ~@2", E: "e2@7 ~ c2@6 ~@2", F: "f2@6 ~@2 d2@7 ~",
  G: "c2@7 ~", H: "bb2@15 ~", I: "bb2@3 ~ bb2@3 ~", J: "~@8 c2@7 ~", K: "f2@3 ~@2 c2@2 ~@9", L: "db3 ~@7",
})).s("gm_tuba").gain(0.31)

// other · piccolo
const piccolo = note(`<
  ~@20 A B C D E F G H A I J K L M N O ~@45 P@3 Q R S T Q R U V W X Y Z AA AB AC@2 AD AE AF AG A B C AH E F G AI A I J
  AJ L M N O AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ
>`.pickRestart({
  A: "a6@2 ~@3 a6 ~@2 a6@3 ab6@2 a6 ~@2", B: "f7@2 ~@3 c7 ~@2 c7@2 ~@3 a6 ~@2", C: "bb6 ~@4 bb6 ~@2 bb6 ~@4 c7 ~@2",
  D: "d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [bb6,e7] ~@2, ~@13 b6@2 ~", // Dsus2 Bbdim
  E: "g6 ~@4 g6 ~@2 g6@2 ~ gb6@2 g6 ~@2", F: "e7 ~@4 d7 ~@2 d7@2 ~@3 bb6 ~@2", G: "a6@2 ~@3 a6 ~@2 a6@2 ~@3 bb6 ~@2",
  H: "d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [b6,c7]@2 ~, c7@12 ~ e7 ~@2", // Dsus2 Cmaj7
  I: "a7 ~@4 f7 ~@2 f7@2 ~@3 c7 ~@2", J: "b6@2 ~@3 g7 ~@2 g7@2 ~@3 g7 ~@2",
  K: "d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [b6,g7]@2 ~, g7@12 ~ e7 ~@2", // Dsus2 Em
  L: "e7@2 ~@3 g7 ~@2 g7@3 gb7@2 g7 ~@2", M: "d7 ~@4 g7 ~@2 g7@3 gb7@2 g7@2 ~", N: "c7@2 ~@3 b6 ~@2 c7@2 ~@3 b6 ~@2",
  O: "c7@5 ~@3 c7@5 ~@3", P: "d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7] d7 [d7,e7] e7 [d7,e7]",
  Q: "d6 eb6", R: "e6 f6", S: "d7@2 ~@3 d7 ~@2 d7@2 ~@3 db7 ~@2", T: "d7@11 ~@2 f6@3",
  U: "eb7 ~@4 eb7 ~@2 eb7@2 ~@3 d7 ~@2", V: "eb7@12 ~ d7@3", W: "c7 b6", X: "c7@4 ~ f6@3 e6@5 f6@2 ~", Y: "d7 db7",
  Z: "d7@3 ~@2 f6@3 e6@5 f6 ~@2", AA: "g6 eb7", AB: "d7@5 bb6@3 c7@5 a6@3", AC: "[bb6@11 ~ bb6@3 ~]/2",
  AD: "f7@5 e7@2 ~ d7@5 db7@2 ~", AE: "c7@5 b6@2 ~ bb6@5 a6@2 ~", AF: "g6@2 ~ a6@2 bb6 ~@2 a6@3 ~@2 g6 ~@2",
  AG: "c7@2 ~@11 c7@2 ~", AH: "d7@12 ~ bb6 ~@2", AI: "c7@12 ~ c7@2 ~", AJ: "g7@12 ~ g7@2 ~",
  AK: "a6@3 ab6@2 a6 ~@2 d7@5 c7@3", AL: "a6@7 ~ f6@8", AM: "d6 g6", AN: "f6@12 ~ f6@3",
  AO: "g6@3 a6@2 bb6@2 ~ e7@5 d7@3", AP: "c7@8 f7@7 ~", AQ: "e7@7 ~ d7@8", AR: "c7@12 ~ c7@3",
  AS: "d7@4 ~ d7 ~ e7 d7@2 db7@3 d7@2 e7", AT: "e7@7 ~ e7@6 ~@2, d7 ~@15", AU: "f7@5 f6@2 a6 g6@2 f6@2 g6@3 a6",
  AV: "a6@11 ~@2 a6@2 a6", AW: "g6@3 ~@2 f7@3 d7@5 bb6@2 ~", AX: "a6 f6", AY: "g6 e6", AZ: "f6@5 f6@2 ~ f6@2 ~@6",
})).s("gm_piccolo").gain(0.51)

// other · flute
const flute = note(`<
  ~@4 A B C D E F G H A I J K L M N O ~@17 P Q R S T U V W X Y Z AA ~ AB AC ~ P Q R S T U V W X Y Z AA ~ AB AC ~ AD AE
  AF ~ AD AG AH AI AJ AK AL AM AN AO AP ~ AD AE AF ~ AD AG AH AI AJ AK AL AQ AR AS@2 AT AU AV AW A B C D E F G H A I J K
  L M N O AX AY AZ BA BB BC BD BE W BF Y Z BG BH BI BJ
>`.pickRestart({
  A: "a5@2 ~@3 a5 ~@2 a5@3 ab5@2 a5 ~@2", B: "f6@2 ~@3 c6 ~@2 c6@2 ~@3 a5 ~@2", C: "bb5 ~@4 bb5 ~@2 bb5 ~@4 c6 ~@2",
  D: "d6@12 ~ bb5 ~@2", E: "g5 ~@4 g5 ~@2 g5@2 ~ gb5@2 g5 ~@2", F: "e6 ~@4 d6 ~@2 d6@2 ~@3 bb5 ~@2",
  G: "a5@2 ~@3 a5 ~@2 a5@2 ~@3 bb5 ~@2", H: "c6@12 ~ c6@2 ~", I: "a6 ~@4 f6 ~@2 f6@2 ~@3 c6 ~@2",
  J: "b5@2 ~@3 g6 ~@2 g6@2 ~@3 g6 ~@2", K: "g6@12 ~ g6@2 ~", L: "e6@2 ~@3 g6 ~@2 g6@3 gb6@2 g6 ~@2",
  M: "d6 ~@4 g6 ~@2 g6@3 gb6@2 g6@2 ~", N: "c6@2 ~@3 b5 ~@2 c6@2 ~@3 b5 ~@2", O: "c6@5 ~@3 c6@5 ~@3", P: "~ f5",
  Q: "~ g5", R: "f5@11 ~@5", S: "~@5 bb5@2 ~@9", T: "~ f6", U: "e6 d6", V: "c6@11 ~@2 c6@3",
  W: "d6@4 ~@3 e6 d6@3 ~@4 e6", X: "e6@3 ~ e6@3 ~", Y: "f6@5 ~@2 a5 ~@7 a5", Z: "a5@11 ~@4 a5", AA: "~@5 f6@3 ~@8",
  AB: "g5 ~", AC: "f5@12 ~ f5@2 ~", AD: "e5 f5", AE: "d6@2 ~@3 d6 ~@2 d6@2 ~@3 db6 ~@2", AF: "d6@11 ~@5",
  AG: "eb6 ~@4 eb6 ~@2 eb6@2 ~@3 d6 ~@2", AH: "eb6@12 ~ d6@3", AI: "c6 b5", AJ: "c6@4 ~ f5@3 e5@5 f5@2 ~", AK: "d6 db6",
  AL: "d6@3 ~@2 f5@3 e5@5 f5 ~@2", AM: "a5 c6", AN: "bb5@5 c6@2 ~ g5@5 bb5@3", AO: "a5@5 bb5@3 g5@5 a5@3",
  AP: "f5@5 g5@2 ~ eb5@5 f5@3", AQ: "g5 eb6", AR: "d6@5 bb5@3 c6@5 a5@3", AS: "[bb5@11 ~ bb5@3 ~]/2",
  AT: "f6@5 e6@2 ~ d6@5 db6@2 ~", AU: "c6@5 b5@2 ~ bb5@5 a5@2 ~", AV: "g5@2 ~ a5@2 bb5 ~@2 a5@3 ~@2 g5 ~@2",
  AW: "c6@2 ~@11 c6@2 ~", AX: "a5@3 ab5@2 a5 ~@2 d6@5 c6@3", AY: "a5@7 ~ f5@8", AZ: "d5 g5", BA: "f5@12 ~ f5@3",
  BB: "g5@3 a5@2 bb5@2 ~ e6@5 d6@3", BC: "c6@8 f6@7 ~", BD: "e6@7 ~ d6@8", BE: "c6@12 ~ c6@3", BF: "e6@7 ~ e6@6 ~@2",
  BG: "g5@3 ~@2 f6@3 d6@5 bb5@2 ~", BH: "a5 f5", BI: "g5 e5", BJ: "f5@5 f5@2 ~ f5@2 ~@6",
})).s("gm_flute").gain(0.51)

// other · flute · soft notes
const flute_soft = note(`<
  ~@36 A B C D E F ~@2 G ~ H I J K L ~ A B C D E F ~@2 M ~ N I J K L ~ O ~@2 D O ~@11 O ~@2 D O ~@39 M P N I ~@4
>`.pickRestart({
  A: "a5@3 ab5@2 a5@2 ~ d6@4 ~ c6@2 ~", B: "a5@7 ~@9", C: "d5 ~", D: "~@13 f5@3", E: "g5@3 a5@3 ~@2 e6@5 d6@3",
  F: "c6 ~", G: "~@5 d6 ~@4 db6 db6@2 d6@2 ~", H: "~@5 f5@2 ~ g5@2 f5 ~ g5 g5@3, ~@11 f5@3 ~@2", I: "~@13 a5@2 ~",
  J: "g5@6 ~@2 d6@5 bb5@3", K: "a5 f5", L: "~ e5", M: "~@5 d6 ~@4 db6@3 d6@2 ~", N: "~@5 f5@2 ~ g5@2 f5@2 g5@3 ~",
  O: "d5 eb5", P: "d6 ~@15",
})).s("gm_flute").gain(0.31)

// other · glockenspiel
const glockenspiel = note("<~@52 A B C D E F G H I J K L M N O P ~@68>".pickRestart({
  A: "a4@3 ab4@2 a4@2 ~ d5@4 ~ c5@2 ~", B: "a4@7 ~ f4@8", C: "d4 g4", D: "f4@11 ~@2 f4@3",
  E: "g4@3 a4@2 bb4@2 ~ e5@5 d5@3", F: "c5 f5", G: "e5 d5", H: "c5@11 ~@2 c5@3", I: "d5@4 ~ d5 ~ e5 d5@2 db5@3 d5@2 e5",
  J: "e5@3 ~ e5@3 ~", K: "f5@5 f4@2 a4 g4@2 f4@2 g4@3 a4", L: "a4@11 ~@2 a4@2 a4", M: "g4@5 f5@3 d5@5 bb4@3",
  N: "a4 f4", O: "g4 e4", P: "f4@12 ~ f4@2 ~",
})).s("gm_glockenspiel").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@3 A B@32 ~@33 B@3 ~ B@11 ~ B@3 ~ B@10 A ~@3 A B@32>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.46)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@36 A@33 ~@3 A ~@11 A ~@3 A ~@47>".pickRestart({
  A: "x!2",
})).gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C@3 D C@3 D C@3 E F@2 G H C@3 D C@3 D C@3 E F@2 G H C@8 E C@2 E C@12 E C@2 E C@12 E C E C E@4 C@8 E C E C@4 I
  ~@2 A B C@3 D C@3 D C@3 E F@2 G H C@8 E C@2 E C@3 J
>`.pickRestart({
  A: "~@14 x!2", B: "x ~@13 x!2", C: "x ~@4 x ~@2 x ~@4 x ~@2", D: "x ~@4 x ~@2 x ~@4 x!3", E: "x!16",
  F: "x ~@4 x ~@2 x!8", G: "x ~@4 x!4 ~@4 x!3", H: "x ~@5 x!3 ~@7", I: "x", J: "x ~@4 x ~@2 x ~@7",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct("<~@74 x ~@15 x ~@45>").gain(0.51)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@84 x ~@51>").gain(6.02)

// drums · ride
const ride = s("rd").struct("<~@3 A ~@12 A@2 B@2 ~@12 A@2 B@2 ~@34 A ~@15 A ~@12 C ~@18 B@18>".pickRestart({
  A: "x", B: "x!2", C: "~ x",
})).gain(0.46)
// … 11 more lines

More by Monty Python