Strudelify

Jesus Christ Superstar Overture

Andrew Lloyd Webber

KeyD minorTempo185 bpm
0:00/0:00
// Jesus Christ Superstar Overture — Andrew Lloyd Webber
// 185 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 6/4 at bar 28, 5/4 at bar 34, 4/4 at bar 35, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 church organ (copy of ch 7 church organ, 0.083 beats late)
// note: Full arrangement: all 158 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(185/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 pick
const bass = note(`<
  ~@34 A B C D E ~@3 D E F ~@2 G@15 H@5 I J@3 K L@3 M@3 N O P Q@2 R@2 S T@3 U@9 V W@2 X Y@4 Z@7 AA@7 AB@4 AC AD AE@2
  AF@3 AG@2 ~@25
>`.pickRestart({
  A: "b2@3 bb2 ab2@3 f2", B: "eb2@3 c2 bb1 ab1 eb1 ~", C: "f1@3 ~@13", D: "~@4 f1@3 ~@9", E: "~@8 f1@3 ~@5",
  F: "~@12 f1@3 ~", G: "gb1 ~@3 gb1 ~@3 gb1 ~@3 gb1 ~@3", H: "ab1 ~@3 ab1 ~@3 ab1 ~@3 ab1 ~@3",
  I: "ab1 ~@3 ab1 ~@3 a1 ~@3 a1 ~@3", J: "a1 ~@3 a1 ~@3 a1 ~@3 a1 ~@3", K: "a1 ~@3 a1 ~@3 b1 ~@3 b1 ~@3",
  L: "b1 ~@3 b1 ~@3 b1 ~@3 b1 ~@3", M: "[b1 ~@3 b1 ~@3 db1@12 ~@2 db1@12 ~@2 db1@4 ~@4 db1@4]/3", N: "~ db1 ~ db1",
  O: "~ eb1@3", P: "~ eb1@6 ~", Q: "eb1 ~ eb1 ~", R: "[e1@6 ~ e1@6 ~ e1@2]/2", S: "~ e1 ~ e1",
  T: "[~@4 e1@4 ~@4 d2@2 d2 d2@2 ~ d1@3 d1@3 d2@5 ~ eb2@5 c2@4 d2@3 d1@3 d1@3]/3",
  U: "[d2@5 ~ eb2@5 c2@4 d2@3 d1@3 d1@3 d2@5 ~ eb2@5 c2@4 d2@3 d1@3 d1@3]/3", V: "d2@5 ~@2 eb2@4 c2@5",
  W: "[d2@3 d1@3 d1@3 d2@5 ~ eb2@4 c2@5 d2@3 d1@3 d1@2]/2", X: "~ d2@5 ~ eb2@4 c2@5",
  Y: "[d2@3 d1@3 d1@3 d2@5 ~ eb2@4 c2@5 d2@3 d1@37]/4", Z: "[~ c1@38 bb0@38 b0@35]/7",
  AA: "[~@3 f1@37 ab1@38 eb1@34]/7", AB: "[~@4 a1@43 d1@12 d1@5]/4", AC: "~ d1@6 ~", AD: "~@2 d1@3 d1@3",
  AE: "[d1@12 ~ d1@6 d1@12 ~]/2", AF: "[~@5 d1@6 ~ d1@6 d1@12 d1@6 d1@12]/3", AG: "[~@7 d1@6 d1@6 ~@13]/2",
})).s("gm_electric_bass_pick").gain(0.32)

// bass · contrabass
const bass_2 = note("<~@150 A@3 ~ B@2 C ~>".pickRestart({
  A: "[~@11 ab1@12 ab1@12 ~ ab1@6 ab1@6]/3", B: "[~@9 ab1@12 ab1@11]/2", C: "~ ab1@6 ~ ab1@6 ~@2",
})).s("gm_contrabass").gain(0.16)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@3 A@3 B@2 C D E@3 F G H@2 I J@8 ~@8 K L M N O ~@3 N O P ~@22 Q@2 R Q@3 R Q S ~@10 T@2 U V@2 U V@2 U V@2 U W X@2 Y Z
  AA@3 AB@7 AC@7 AD@3 ~@35
>`.pickRestart({
  A: "[~@9 d4@5 ~ db4@5 d4@5 ~ e4@22]/3", B: "[~@5 d4@10 d4@5 ~ a4@5 a4@5 ~]/2", C: "ab4@11 ~@5",
  D: "d4@5 db4@5 ~ d4@5", E: "[e4@22 ~@5 d4@11 d4@5 a4@5]/3", F: "~ a4@5 ab4@10", G: "~@6 d4@5 ~ db4@4",
  H: "[~ d4@5 e4@22 ~@4]/2", I: "~ f4@11 f4@4",
  J: "[~@2 c5@5 c5@5 b4@11 ~@6 f4@5 e4@5 f4@5 ~ g4@22 ~@5 f4@11 f4@5 c5@5 ~ c5@5 b4@27 ~@2]/8", K: "a4@3 bb4 ab4@3 f4",
  L: "eb4@3 c4 bb3 ab3 eb3 ~", M: "f5@3 ~@13", N: "~@4 f5@3 ~@9", O: "~@8 f5@3 ~@5", P: "~@12 f5@3 ~",
  Q: "~ [d5,g5]!4 ~ [db5,g5] ~", R: "~ [d5,g5]!4 ~ [db5,g5] [e5,g5]", S: "~ [d5,g5]!3 ~@4",
  T: "[~@12 d3@2 d3 d3@2 ~ d2@3 d2@3 d3@2 ~ d3 ~ d3 eb3@2]/2", U: "c3!2 ~ c3@3 ~ d3@3 d2@3 d2@3",
  V: "[d3@2 ~ d3 ~ d3 eb3@2 c3!2 ~ c3@3 ~ d3@3 d2@3 d2@3 d3@2 ~ d3 ~ d3 eb3@2]/2",
  W: "d3@2 ~ d3 ~ d3 ~@2 c3 ~ c3 c3@3 ~@2, ~@7 eb3@3 ~@6",
  X: "[d3@3 d2@3 d2@3 d3@2 ~ d3!2 ~@2 c3 ~ c3 c3@3 ~@2 d3@3 d2@3 d2@2, ~@15 eb3@3 ~@14]/2",
  Y: "~ d3@2 ~ d3!2 ~@2 c3 ~ c3 c3@3 ~@2, ~@7 eb3@3 ~@6", Z: "d3@3 d2@3 d2@3 d3@2 ~ d3!2 ~ eb3",
  AA: "[c3 ~ c3 c3@3 ~@2 d3@3 [d2,d3,a3]@37]/3", AB: "[~ [c2,c3,g3]@38 [bb1,bb2,f3]@38 [b1,b2,gb3,eb4]@35]/7",
  AC: "[~@3 [f2,f3,c4]@37 [ab2,ab3,eb4]@38 [eb2,eb3,bb3]@34]/7", AD: "[~@4 [e2,a2,e3]@43 ~]/3",
})).s("gm_distortion_guitar").gain(0.25).pan(1)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@3 A@3 B C D E F@3 G@2 H@2 I@3 J@6 ~@8 K L M N O ~@3 N O P ~@22 Q@2 R Q@3 R Q S ~@27 T@3 U@7 V@7 W@3 ~@35
>`.pickRestart({
  A: "[~@10 d4@5 db4@5 ~ d4@5 e4@22]/3", B: "~@5 d4@11", C: "d4@5 a4@5 ~ a4@5", D: "ab4@11 ~@5", E: "d4@5 ~ db4@5 d4@5",
  F: "[~ e4@22 ~@5 d4@10 d4@5 ~ a4@4]/3", G: "[~ a4@5 ~ ab4@11 ~@5 d4@5 db4@4]/2", H: "[~@2 d4@5 e4@22 ~@3]/2",
  I: "[~@2 f4@11 f4@5 c5@5 ~ c5@5 b4@11 ~@5 f4@3]/3", J: "[~@3 e4@5 f4@5 g4@22 ~@5 f4@11 f4@5 ~ c5@5 c5@5 b4@27 ~@2]/6",
  K: "a3@3 bb3 ab3@3 f3", L: "eb3@3 c3 bb2 ab2 eb2 ~", M: "f2@3 ~@13", N: "~@4 f2@3 ~@9", O: "~@8 f2@3 ~@5",
  P: "~@12 f2@3 ~", Q: "~ [d5,g5]!4 ~ [db5,g5] ~", R: "~ [d5,g5]!4 ~ [db5,g5] [e5,g5]", S: "~ [d5,g5]!3 ~@4",
  T: "[~ [d2,d3,a3]@3]/3", U: "[~ [c2,c3,g3]@19 [bb1,bb2,f3]@19 [b1,b2,gb3,eb4]@17]/7",
  V: "[~@3 [f2,f3,c4]@38 [ab2,ab3,eb4]@38 [eb2,eb3,bb3]@33]/7", W: "[~@5 [e2,a2,e3]@31 c4@12]/3",
})).s("gm_distortion_guitar").gain(0.25).pan(0)

// other · trombone
const trombone = note(`<
  ~@36 A B C D E F G H I J K ~@9 L M ~@7 N O P Q@3 R S@3 T@3 U V W X@2 Y@2 Z AA ~@35 AB@2 AC@2 AD@7 ~@25
>`.pickRestart({
  A: "~@2 f4 g4 ab4 ~ f4 g4", B: "ab4 ~@3 f4 g4 ab4 ~", C: "b4 ~ bb4 ~@3 f4 g4", D: "ab4 ~ b4 ~ bb4 ~ eb5 ~",
  E: "d5 ~ ab5 ~ g5 ~ gb5 f5", F: "e5 eb5 c5 b4 f4 ab4 b4 ~", G: "bb4 ~@3 f4 g4 ab4 ~", H: "f4 g4 ab4 ~@3 f4 g4",
  I: "ab4 ~ b4 ~ bb4 ~@3", J: "f4 g4 ab4 ~ b4 ~ bb4 ~", K: "eb5 ~ d5 ~ d5 ~ c5 ~", L: "g5@3 ~ f5@3 ~",
  M: "e5@3 ~ d5@3 ~", N: "~@4 g5@3 ~", O: "f5@3 ~ e5@3 ~", P: "d5@6 ~@6 a4 ~ a4 ~", Q: "~@6 a4 ~@5 a4 ~ a4 ~",
  R: "~@6 a4 ~@5 bb4 ~ bb4 ~", S: "~@6 bb4 ~@5 bb4 ~ bb4 ~", T: "[~@6 bb4 ~ b3@12 ~@2 b3@12 ~@2 b3@4 ~@4 b3@4]/3",
  U: "~ b3 ~ b3", V: "~ c4@3", W: "~ c4@6 ~", X: "c4 ~ c4 ~", Y: "[gb3@6 ~ gb3@6 ~ gb3@2]/2", Z: "~ gb3 ~ gb3",
  AA: "~ gb3 ~@2", AB: "[~@15 d5@12 d5@5]/2", AC: "[~ d5@15]/2", AD: "[d5@12 ~ d5@6 d5@31 d5@12 d5@6 d5@31 ~@13]/7",
})).s("gm_trombone").gain(0.4).pan(0)

// other · trombone · soft notes
const trombone_soft = note("<~@132 A@6 B@6 C@8 D ~ E@2 F ~>".pickRestart({
  A: "[~ d1@31]/6", B: "[~ d1@15]/6", C: "[~@8 d1@99 db3@9 ~@3 db3@9]/8", D: "~@4 db3@5 ~ db3@6",
  E: "[~@9 db3@9 ~@3 db3@9 ~@2]/2", F: "~ db3@5 ~@2 db3@6 ~@2",
})).s("gm_trombone").gain(0.2).pan(0)

// other · trombone
const trombone_2 = note(`<
  ~@36 A B C D E F G H I J K ~@9 L M ~@7 N O P ~@7 Q@3 R S T U@2 V@2 W X ~@35 Y@2 Z@2 AA@7 ~@25
>`.pickRestart({
  A: "~@2 f3 g3 ab3 ~ f3 g3", B: "ab3 ~@3 f3 g3 ab3 ~", C: "b3 ~ bb3 ~@3 f3 g3", D: "ab3 ~ b3 ~ bb3 ~ [eb3,eb4] ~",
  E: "[d3,d4] ~ ab4 ~ g4 ~ gb4 f4", F: "e4 eb4 c4 b3 [f2,f3] [ab2,ab3] [b2,b3] ~", G: "[bb2,bb3] ~@3 f3 g3 ab3 ~",
  H: "f3 g3 ab3 ~@3 f3 g3", I: "ab3 ~ b3 ~ bb3 ~@3", J: "f3 g3 ab3 ~ b3 ~ bb3 ~", K: "eb4 ~ d4 ~ ab4 ~ g4 ~",
  L: "gb4 ~ f4 ~ e4 ~ eb4 ~", M: "d4 ~ db4 ~ c4 ~ b3 ~", N: "~@4 gb4 ~ f4 ~", O: "e4 ~ eb4 ~ d4 ~ db4 ~",
  P: "c4 ~ b3 ~@5", Q: "[~@4 db4@6 ~ db4@6 ~ db4@2 ~@2 db4@2]/3", R: "~ db4 ~ db4", S: "~ eb4@3", T: "~ eb4@6 ~",
  U: "eb4 ~ eb4 ~", V: "[e4@6 ~ e4@6 ~ e4@2]/2", W: "~ e4 ~ e4", X: "~ e4 ~@2", Y: "[~@15 a3@12 a3@5]/2",
  Z: "[~ a3@15]/2", AA: "[b3@12 ~ b3@6 b3@31 c4@24 b3@25 ~@13]/7",
})).s("gm_trombone").gain(0.4).pan(1)

// other · trombone · soft notes
const trombone_soft_2 = note("<~@150 A@2 B ~ C@2 D ~>".pickRestart({
  A: "[~@11 db4@9 ~@3 db4@9]/2", B: "~@4 db4@5 ~ db4@6", C: "[~@9 db4@9 ~@3 db4@9 ~@2]/2", D: "~ db4@5 ~@2 db4@6 ~@2",
})).s("gm_trombone").gain(0.2).pan(1)

// other · church organ
const church_organ = note("<A@3 B@8 C@7 D@8 ~@77 E@3 F@6 G@2 H@3 I@6 ~@9 J@6 K@6 L@7 ~@7>".pickRestart({
  A: "[~@3 d1@13]/3", B: "[~@4 d1@43 d1@43 d1@38]/8", C: "[~@6 d1@43 d1@21 f1@42]/7", D: "[~@2 f1@43 f1@43 f1@40]/8",
  E: "[~@11 [ab5,ab6]@4 [g5,g6]@9 ~ [f5,f6]@5 [d5,d6]@9 [ab5,ab6]@9]/3", // Ab G F D Ab
  F: "[~ [g5,g6]@4 [f5,f6]@9 ~ [d5,d6]@5 [ab5,ab6]@4 [g5,g6]@14 ~ [ab5,ab6]@4 [g5,g6]@9 ~ [f5,f6]@5 [d5,d6]@9 [ab5,ab6]@9 ~ [g5,g6]@4 [f5,f6]@9 ~ [d5,d6]@5]/6", // G F D Ab G Ab G F …
  G: "[[ab5,ab6]@4 [g5,g6]@14 ~ [ab5,ab6]@4 [g5,g6]@9]/2", // Ab G Ab G
  H: "[~ [f5,f6]@4 [d5,d6]@9 ~ [ab5,ab6]@9 [g5,g6]@5 [f5,f6]@9 ~ [d5,d6]@4 [ab5,ab6]@5]/3", // F D Ab G F D Ab
  I: "[[g5,g6]@14 [ab5,ab6]@5 [g5,g6]@9 ~ [f5,f6]@4 [d5,d6]@9 ~ [ab5,ab6]@9 [g5,g6]@5 [f5,f6]@9 ~ [d5,d6]@4 [ab5,ab6]@6 [g5,g6]@18 ~]/6", // G Ab G F D Ab G F …
  J: "[~ d1@31]/6", K: "[~ d1@15]/6", L: "[~@8 d1@99 ~@5]/7",
})).s("gm_church_organ").gain(0.19).pan(0)

// other · epiano1
const epiano1 = note("<~@26 A@2 B@7 ~@123>".pickRestart({
  A: "[~@3 [b1,b2]@29]/2", B: "[~@4 [b1,b2]@32 [b1,b2]@32 ~ [b1,b2]@31 ~@12]/7",
})).s("gm_epiano1").gain(0.25).pan(1)

// other · flute
const flute = note("<~@75 A@2 B@2 C D E@2 F G B H ~@71>".pickRestart({
  A: "[~@8 c7 [db5,d5] c5@8 ~@4 c7 [db5,d5] c5@8]/2", B: "~@4 c7 [db5,d5] c5@3 ~@3 c7 [db5,d5] c5@2",
  C: "~@4 c7 [db5,d5] c5@8 ~@2", D: "~@2 c7 [db5,d5] c5@8 ~@4", E: "c7 [db5,d5] c5@3 ~@3 c7 [db5,d5] c5@3 ~@3",
  F: "c7 [db5,d5] c5@8 ~@4 c7 [db5,d5]", G: "c5@8 ~@4 c7 [db5,d5] c5@2", H: "~@4 c7 [db5,d5] c5@3 ~@7",
})).s("gm_flute").gain(0.25).pan(1)

// other · oboe
const oboe = note("<~@47 A B C D@2 E F G H ~ I J K J K J K J L ~@9 M N O P Q N R@2 N@2 P S ~@71>".pickRestart({
  A: "gb5@3 ~ f5@3 ~ e5@3 ~ [f5,gb5]@3 ~", B: "g5@3 ~ gb5@3 ~ bb5@3 ~ a5@3 ~", C: "ab5@3 ~ a5@3 ~ bb5@8",
  D: "[bb5@8 bb5@12 ~@4 gb5@3 ~ f5@3 ~]/2", E: "e5@3 ~ ab5@3 ~ g5@3 ~ gb5@3 ~", F: "bb5@3 ~ a5@3 ~ ab5@3 ~ a5@3 ~",
  G: "bb5!2", H: "bb5@3 ~", I: "~@10 g4 ~ gb4 ~ g4 ~", J: "bb4@4 ~@6 g4 ~ gb4 ~ g4 ~",
  K: "e5 ~ d5 ~ db5 ~@5 g4 ~ gb4 ~ g4 ~", L: "e5 ~ d5 ~ db5 ~@11", M: "~@4 c5!4", N: "c5!8", O: "c5!5 ~ c5!2",
  P: "c5 ~ c5!3 ~ c5!2", Q: "c5 ~ c5!6", R: "c5!3 ~ c5!3 ~", S: "c5 ~ c5!3 ~@3",
})).s("gm_oboe").gain(0.25).pan(0)

// other · timpani
const timpani = note("<~@122 A@2 B C D@2 E@3 F@2 ~@25>".pickRestart({
  A: "[~@15 d2@12 d2@5]/2", B: "~ d2@6 ~", C: "~@2 d2@3 d2@3", D: "[d2@12 ~ d2@6 d2@12 ~]/2",
  E: "[~@5 d2@6 ~ d2@6 d2@12 d2@6 d2@6 d2@6]/3", F: "[~@7 d2@6 d2@6 ~@13]/2",
})).s("gm_timpani").gain(0.29)

// chords · vibraphone · Eb
const vibraphone = note("<~@58 [~@8 [bb4,g5]@3 ~@5]!7 ~@93>").s("gm_vibraphone").gain(0.07).pan(0)

// other · string ensemble 1
const string_ensemble_1 = note("<~@50 A B ~@40 C@2 D@3 E@2 F G@2 F ~@19 H@2 I@2 J@7 ~@25>".pickRestart({
  A: "~@6 [b3,b4] [c4,c5]", B: "[d4,d5] ~ [b3,b4] [c4,c5] [d4,d5] ~@3", C: "[~@15 g4@2 ~ [a5,d6]@3 ~@11]/2",
  D: "[~@10 ab6@2 ab6@2 ~@2 d6@2 ~ c6@2 ab5@2 ~ g5@2 ~@2 d5@2 ~ c6@2 ~ [a5,d6]@3 ~@11, ~@15 f6@2 ~@10 f5@2 ~@19]/3", // D5
  E: "[~@10 ab6@2 g6@2 ~@2 d6@2 ~ c6@2 ab5@2 ~ g5@2 ~ f5@2 d5@2 ~, ~@15 f6@2 ~@15]/2", F: "c6@2 ~ [a5,d6]@3 ~@10",
  G: "[~@11 ab6 ab6@2 ~ f6@2 d6@2 ~@2 ab5@2 ~ g5@2 ~ f5@2 d5@2 ~, ~@10 c6 ~@5]/2", H: "[~@15 a4@12 gb4@5]/2",
  I: "[~ d4@15]/2", J: "[b4@12 ~ g4@6 d4@31 c5@12 a4@6 c5@6 b4@12 ~ a4@6 g4@6 ~@13]/7",
})).s("gm_string_ensemble_1").gain(0.19).pan(0)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@47 A B C D@2 E F G H ~ I J K J K J K J L ~@26 M@2 N@3 O@2 P Q@2 P ~@19 R@2 S@2 T@7 ~@25
>`.pickRestart({
  A: "gb4@3 ~ f4@3 ~ e4@3 ~ [f4,gb4]@3 ~", B: "g4@3 ~ gb4@3 ~ bb4@3 ~ a4@3 ~", C: "ab4@3 ~ a4@3 ~ bb4@8",
  D: "[bb4@8 bb4@12 ~@4 gb4@3 ~ f4@3 ~]/2", E: "e4@3 ~ ab4@3 ~ g4@3 ~ gb4@3 ~", F: "bb4@3 ~ a4@3 ~ ab4@3 ~ a4@3 ~",
  G: "bb4!2", H: "bb4@3 ~", I: "~@10 g4 ~ gb4 ~ g4 ~", J: "bb4@4 ~@6 g4 ~ gb4 ~ g4 ~",
  K: "e5 ~ e5 ~ e5 ~@5 g4 ~ gb4 ~ g4 ~", L: "e5 ~ e5 ~ e5 ~@11", M: "[~@15 c5@2 ~ d5@3 ~@11]/2",
  N: "[~@10 ab5@2 g5@2 ~@2 d5@2 ~ c5@2 ab4@2 ~ g4@2 ~@2 d4@2 ~ c5@2 ~ d5@3 ~@11, ~@15 f5@2 ~@10 f4@2 ~@19]/3",
  O: "[~@10 ab5@2 g5@2 ~@2 d5@2 ~ c5@2 ab4@2 ~ g4@2 ~ f4@2 d4@2 ~, ~@15 f5@2 ~@15]/2", P: "c5@2 ~ d5@3 ~@10",
  Q: "[~@12 g5@2 ~ f5@2 d5@2 ~@2 ab4@2 ~ g4@2 ~ f4@2 d4@2 ~, ~@11 ab5@2 ~@7 c5@2 ~@10]/2", R: "[~@15 a5@12 gb5@5]/2",
  S: "[~ d5@15]/2", T: "[b5@12 ~ g5@6 d5@31 c6@12 a5@6 c6@6 b5@12 ~ a5@6 g5@6 ~@13]/7",
})).s("gm_string_ensemble_1").gain(0.19).pan(1)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@150 A@2 B ~ C@2 D ~>".pickRestart({
  A: "[~@11 f4@9 ~@3 f4@9]/2", B: "~@4 f4@5 ~ f4@6", C: "[~@9 f4@9 ~@3 f4@9 ~@2]/2", D: "~ f4@5 ~@2 f4@6 ~@2",
})).s("gm_string_ensemble_1").gain(0.1).pan(1)

// other · piano
const piano = note("<~@47 A@4 B A@10 C@5 D E@3 F G@3 H ~@82>".pickRestart({
  A: "[gb3,gb4] f4 [gb3,gb4] f4 [gb3,gb4] f4 [gb3,gb4] f4", B: "[gb3,gb4] f4 gb4 f4 [gb3,gb4] f4 [gb3,gb4] f4",
  C: "[ab3,ab4] g4 [ab3,ab4] g4 [ab3,ab4] g4 [ab3,ab4] g4", D: "[ab3,ab4] g4 [ab3,ab4] g4 [a3,a4] ab4 [a3,a4] ab4",
  E: "[a3,a4] ab4 [a3,a4] ab4 [a3,a4] ab4 [a3,a4] ab4", F: "[a3,a4] ab4 [a3,a4] ab4 [b3,b4] bb4 [b3,b4] bb4",
  G: "[b3,b4] bb4 [b3,b4] bb4 [b3,b4] bb4 [b3,b4] bb4", H: "[b3,b4] bb4 [b3,b4] bb4 ~@4",
})).s("gm_piano").gain(0.14).pan(1)

// other · tubular bells
const tubular_bells = note("<~@122 A B C D E F G H I J K ~@25>".pickRestart({
  A: "~@15 d6", B: "~ d7 d6 ~ d7 d6 ~ d7 d6 ~ d7 d6 ~ d7 d6 ~", C: "d7 ~ d6 d7 ~ d6 d7 ~ d6 d7 ~ d6 d7 ~ d6 d7",
  D: "~ d6 ~ d7 d6 ~ d7 d6 ~ d7 d6 ~ d7 d6 ~ d7", E: "e6 ~ e7 e6 ~ e7 ~ e6 e7 ~ e6 e7 ~ e6 e7 ~",
  F: "e6 e7 ~ e6 e7 ~ e6 ~ e7 e6 ~ e7 e6 ~ e7 e6", G: "~ e7 e6 ~ e7 e6 ~ e7 e6 ~ e7 ~ e6 e7 ~ e6",
  H: "e7 ~ e6 e7 ~ e6 e7 ~ e6 e7 ~ e6 ~ e7 e6 ~", I: "e7 e6 ~ e7 e6 ~ e7 e6 ~ e7 e6 ~ e7 e6 ~ e7",
  J: "~ e6 e7 ~ e6 e7 ~ e6 e7 ~ e6 e7 ~ e6 e7 ~", K: "e6 ~ e7 ~@13",
})).s("gm_tubular_bells").gain(0.09).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~@26 A ~ B ~ B ~ C ~@14 D E@27 F ~@11 G H I G H I G H I G H J K L J K M ~@2 N ~ O ~ P ~@2 A ~ Q ~ R ~@2 B ~ S ~@3 T
  ~@2 U ~@28
>`.pickRestart({
  A: "~@3 x ~@12", B: "~ x ~@2", C: "~@5 x ~@10", D: "~ x!3", E: "x!4", F: "x!2 ~@2", G: "~@2 x ~@2 x ~@8 x ~",
  H: "~ x ~@8 x ~@2 x ~@2", I: "~@6 x ~@2 x ~@6", J: "~@7 x ~@2 x ~@5", K: "~@3 x ~@2 x ~@8 x",
  L: "~@2 x ~@8 x ~@2 x ~", M: "~@2 x ~@8 x ~@4", N: "~ x ~@14", O: "~@7 x ~@8", P: "~@13 x ~@2", Q: "~ x", R: "~@7 x",
// … 44 more lines

More by Andrew Lloyd Webber