Strudelify

carol of the bells

John Williams

KeyG minorTempo120 bpm
0:00/0:00
// carol of the bells — John Williams
// 120 bpm, 3/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/423476; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · flute
const flute = note("<A@2 B@14 C@4 D E F G H I H I J@8 B@12 C@4 D E F G H I H I J@10 K L>".pickRestart({
  A: "bb4@3 ~@2 a4@3 bb4@3 g4@3 ~@2", B: "bb4@5 a4@3 bb4@3 g4@5", C: "d5@5 c5@3 d5@3 bb4@5",
  D: "g5@5 g5@3 g5@3 f5@2 eb5@3", E: "d5@5 d5@3 d5@3 c5@2 bb4@3", F: "c5@5 c5@3 c5@3 d5@2 c5@3",
  G: "g5@5 g5@3 g5@3 g5@5", H: "d5@3 e5@2 gb5@3 g5@3 a5@2 bb5@3", I: "c6@3 d6@2 c6@5 ~ bb5@5",
  J: "bb5@5 a5@3 bb5@3 g5@5", K: "d6@5 d6@3 d6@3 e6@2 gb6@3", L: "g6@5 ~@6 g5@5",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_2 = note(`<
  ~@2 A@2 B C D E B C D E F@2 G@2 H@8 I J I J I K L M N@3 ~ B C D E B C D E F@2 G@2 H@8 I J I J I K L M N@3 ~ G O P Q
>`.pickRestart({
  A: "bb4@5 a4@3 bb4@3 g4@5", B: "~@11 g4@5", C: "~@11 a4@5", D: "~@11 c5@5", E: "~@11 d5@5",
  F: "g5@3 ~@2 g5 ~@2 g5 ~@2 g5@3 ~@2", G: "g5@5 g5@3 g5@3 g5@5", H: "bb5@5 a5@3 bb5@3 g5@5", I: "d5",
  J: "e5@5 gb5@5 ~ g5@5", K: "c5", L: "f5", M: "eb5", N: "d5/3", O: "d5@5 d5@3 d5@3 d5@5",
  P: "d5@5 d5@3 eb5@3 d5@2 c5@3", Q: "g4@5 ~@6 g4@5",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_3 = note(`<
  ~@3 A B C D E B C D E F G H I J K L M N I O I J@5 P Q R S@3 ~ B C D E B C D E F G H I J K L M N I O I J@5 P Q R S@3 ~
  T U V W
>`.pickRestart({
  A: "bb4@5 a4@3 bb4@3 g4@5", B: "~@5 g5@11", C: "~@5 f5@11", D: "~@5 eb5@11", E: "~@5 d5@11",
  F: "bb5@3 ~@2 bb5 ~@2 bb5 ~@2 bb5@3 ~@2", G: "d5@3 ~@2 d5 ~@2 d5 ~@2 d5@3 ~@2", H: "eb5@5 eb5@3 eb5@3 eb5@5",
  I: "d5@5 d5@3 d5@3 d5@5", J: "d5", K: "e5", L: "f5@5 eb5@5 ~ d5@5", M: "g5@3 f5@2 eb5@5 ~ d5@5",
  N: "d5@5 eb5@3 eb5@3 d5@2 c5@3", O: "eb5@5 eb5@3 eb5@3 f5@2 eb5@3", P: "c5", Q: "bb5", R: "a5", S: "g5/3",
  T: "d6@5 d6@3 d6@3 d6@5", U: "d6@5 d6@3 d6@3 d6@2 d6@3", V: "d6@5 d6@3 d6@3 e6@2 gb6@3", W: "g6@5 ~@6 g5@5",
})).s("gm_flute").gain(0.3)

// other · clarinet · "Bb Clarinet"
const clarinet = note(`<
  ~@2 A@2 B C D E B C D E F@2 G@2 A@8 E H E H E I C D J@3 ~ B C D E B C D E F@2 G@2 A@8 E H E H E I C D J@3 ~ G K L M
>`.pickRestart({
  A: "bb4@5 a4@3 bb4@3 g4@5", B: "g4", C: "f4", D: "eb4", E: "d4", F: "g4@3 ~@2 g4 ~@2 g4 ~@2 g4@3 ~@2",
  G: "g4@5 g4@3 g4@3 g4@5", H: "e4@5 gb4@5 ~ g4@5", I: "c4", J: "d4/3", K: "d4@5 d4@3 d4@3 d4@5",
  L: "d4@5 d4@3 eb4@3 d4@2 c4@3", M: "g3@5 ~@6 g3@5",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "Bb Clarinet"
const clarinet_2 = note(`<
  ~@3 A ~@4 B C D E F G H I J K L M N I O I J@5 P Q R S@3 ~@5 B C D E F G H I J K L M N I O I J@5 P Q R S@3 ~ I T U V
>`.pickRestart({
  A: "bb4@5 a4@3 bb4@3 g4@5", B: "eb5", C: "d5", D: "c5", E: "g4", F: "bb3@3 ~@2 bb3 ~@2 bb3 ~@2 bb3@3 ~@2",
  G: "d4@3 ~@2 d4 ~@2 d4 ~@2 d4@3 ~@2", H: "eb4@5 eb4@3 eb4@3 eb4@5", I: "d4@5 d4@3 d4@3 d4@5", J: "d4", K: "e4",
  L: "f4@5 eb4@5 ~ d4@5", M: "g4@3 f4@2 eb4@5 ~ d4@5", N: "d4@5 eb4@3 eb4@3 d4@2 c4@3",
  O: "eb4@5 eb4@3 eb4@3 f4@2 eb4@3", P: "c4", Q: "bb3", R: "a3", S: "g3/3", T: "d4@5 d4@3 d4@3 d4@2 d4@3",
  U: "d4@5 d4@3 d4@3 e4@2 gb4@3", V: "g4@5 ~@6 g3@5",
})).s("gm_clarinet").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note("<~@12 A B C D@9 E F E F G H G H I@3 ~@9 A B C D@9 E F E F G H G H I@3 ~ J@2 K L>".pickRestart({
  A: "eb3@3 ~@2 eb3 ~@2 eb3 ~@2 eb3@3 ~@2", B: "g2@3 ~@2 g2 ~@2 g2 ~@2 g2@3 ~@2", C: "c3@5 c3@3 c3@3 c3@5",
  D: "g2@5 g2@3 g2@3 g2@5", E: "d3", F: "c3", G: "g2", H: "c3@3 f3@2 eb3@3 g3@8", I: "g2/3",
  J: "bb2@5 bb2@3 bb2@3 bb2@5", K: "bb2@5 a2@5 ~ gb2@5", L: "g2@5 ~@6 g2@5",
})).s("gm_electric_bass_finger").gain(0.3)

stack(flute, flute_2, flute_3, clarinet, clarinet_2, bass)

More by John Williams