Strudelify

Carol Of the Bells

Megan Moore

KeyB♭ majorTempo164 bpm
0:00/0:00
// Carol Of the Bells — Megan Moore
// 164 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "Piccolo" named as a pipe, played on piccolo (its tuba patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/1547246; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(164/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 · piccolo
const piccolo = note("<~@4 A B C D C D E F@8 G H@4 I J K L A B C M ~@5 N@4 O P Q R S T U ~@2 G@2 ~ V@8>".pickRestart({
  A: "g3", B: "f3", C: "eb3", D: "d3", E: "c3",
  F: "[~@80 bb6@5 a6@3 bb6@3 g6@5 bb6@5 a6@3 bb6@3 g6@5 bb6@5 a6@3 bb6@3 g6@5, g2]/8", G: "bb6@5 a6@3 bb6@3 g6@5",
  H: "d7@5 c7@3 d7@3 bb6@5", I: "d7@5 c7@3 d7@3 bb6@5, g2", J: "d7@5 c7@3 d7@3 bb6@5, bb2",
  K: "d7@5 c7@3 d7@3 bb6@5, d3", L: "d7@5 c7@3 d7@3 bb6@5, g3", M: "g2", N: "[bb2@5 a2@3 bb2@3 g2@53]/4", O: "[g2,bb2]",
  P: "[g2,d3]", Q: "[g2,g3]", R: "g6@5 g6@5 ~ f6@2 eb6@3, [g2,g3]", S: "d6@5 d6@5 ~ c6@2 bb5@3, [g2,f3]",
  T: "c6@5 c6@5 ~ d6@2 eb6@3, [g2,eb3]", U: "d6@5 g5@5 ~ g5@5, g2", V: "[bb6@18 a6@6 bb6@12 g6@85 ~@7]/8",
})).s("gm_piccolo").gain(0.3)

// other · piccolo · soft notes
const piccolo_soft = note("<~@32 A@4 ~@12 A@2 ~@7 B@4>".pickRestart({
  A: "d3", B: "[~@9 g2@49 ~@6]/4",
})).s("gm_piccolo").gain(0.2)

// other · oboe
const oboe = note("<~@4 A B C D E F G H@2 I D A@2 B C J@6 K L M N O P Q ~@12 R S T Q ~@13>".pickRestart({
  A: "g5", B: "f5", C: "eb5", D: "d5", E: "[c5,eb5]", F: "[bb4,d5]", G: "[a4,c5]", H: "g4", I: "bb4", J: "d5/6",
  K: "g5@5 g5@3 g5@3 g5@2 g5@3", L: "bb5@5 bb5@3 bb5@3 bb5@2 bb5@3", M: "d6@5 d6@3 d6@3 d6@2 d6@3",
  N: "g5@11 f5@2 g5@3", O: "d5@11 c5@2 d5@3", P: "c5@11 bb4@2 c5@3", Q: "d5@5 g4@5 ~ g4@5", R: "g5@5 g5@5 ~ f5@2 eb5@3",
  S: "d5@5 d5@5 ~ c5@2 bb4@3", T: "c5@5 c5@5 ~ d5@2 eb5@3",
})).s("gm_oboe").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@4 A@28 B C B C ~@2 A@6 ~@9 D@8>".pickRestart({
  A: "bb4@5 a4@3 bb4@3 g4@5", B: "d4@3 e4@2 gb4@3 g4@3 a4@2 bb4@3", C: "c5@3 d5@2 c5@5 ~ bb4@5",
  D: "[bb4@18 a4@6 bb4@12 g4@85 ~@7]/8",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@44 A B C D E F G@2 ~@9>".pickRestart({
  A: "g4@11 f4@2 g4@3", B: "d4@11 c4@2 d4@3", C: "c4@11 bb3@2 c4@3", D: "d4@5 g3@5 ~ g3@5",
  E: "d4@3 e4@2 gb4@3 g4@3 a4@2 bb4@3", F: "c5@3 d5@2 c5@5 ~ bb4@5", G: "bb4@5 a4@3 bb4@3 g4@5",
})).s("gm_clarinet").gain(0.2)

// other · bassoon
const bassoon = note("<~@20 A@8 ~@20 B C ~@7 D@4>".pickRestart({
  A: "d4@5 c4@3 d4@3 bb3@5", B: "d3@3 e3@2 gb3@3 g3@3 a3@2 bb3@3", C: "c4@3 d4@2 c4@5 ~ bb3@5", D: "[~@9 g2@49 ~@6]/4",
})).s("gm_bassoon").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@12 A@4 B C D E@5 ~@4 F G H I ~@12 F G H I ~@5 J@8>".pickRestart({
  A: "bb4@5 a4@3 bb4@3 g4@5", B: "g4", C: "f4", D: "eb4", E: "g3/5", F: "g4@11 f4@2 g4@3", G: "d4@11 c4@2 d4@3",
  H: "c4@11 bb3@2 c4@3", I: "d4@5 g3@5 ~ g3@5", J: "[bb4@18 a4@6 bb4@12 g4@85 ~@7]/8",
})).s("gm_alto_sax").gain(0.25)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@12
  [d3@5 d3@3 d3@3 d3@5]
  [g3@5 g3@3 g3@3 g3@5]
  [bb3@5 bb3@3 bb3@3 bb3@5]
  [d4@5 d4@3 d4@3 d4@5]
  ~@4
  [d3@5 c3@3 d3@3 bb2@5]!8
  ~@33
>`).s("gm_baritone_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone" · soft notes
const baritone_sax_soft = note("<~@44 A B C D ~@9 E@4>".pickRestart({
  A: "g3@11 f3@2 g3@3", B: "d3@11 c3@2 d3@3", C: "c3@11 bb2@2 c3@3", D: "d3@5 g2@5 ~ g2@5", E: "[~@9 g2@49 ~@6]/4",
})).s("gm_baritone_sax").gain(0.2)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@4 A B C D E F G H@2 I D A@2 B C J@5 H I D A@2 B C H K L K L ~@2 M@6 N O P Q K L ~@3 R@8
>`.pickRestart({
  A: "g4", B: "f4", C: "eb4", D: "d4", E: "[c4,eb4]", F: "[bb3,d4]", G: "[a3,c4]", H: "g3", I: "bb3", J: "d4/5",
  K: "d3@3 e3@2 gb3@3 g3@3 a3@2 bb3@3", L: "c4@3 d4@2 c4@5 ~ bb3@5", M: "bb4@5 a4@3 bb4@3 g4@5",
  N: "g4@5 g4@5 ~ f4@2 eb4@3", O: "d4@5 d4@5 ~ c4@2 bb3@3", P: "c4@5 c4@5 ~ d4@2 eb4@3", Q: "d4@5 g3@5 ~ g3@5",
  R: "[bb3@18 a3@6 bb3@12 g3@85 ~@7]/8",
})).s("gm_french_horn").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@24 A B C D E F G H ~@8 I@2 J@2 K L M N ~@5 O@8>".pickRestart({
  A: "d4@5 d4@3 d4@3 d4@2 d4@3", B: "g4@5 g4@3 g4@3 g4@2 g4@3", C: "bb4@5 bb4@3 bb4@3 bb4@2 bb4@3",
  D: "d5@5 d5@3 d5@3 d5@2 d5@3", E: "g5@5 g5@5 ~ f5@2 eb5@3", F: "d5@5 d5@5 ~ c5@2 bb4@3", G: "c5@5 c5@5 ~ d5@2 eb5@3",
  H: "d5@5 g4@5 ~ g4@5", I: "bb4@5 a4@3 bb4@3 g4@5", J: "d5@5 c5@3 d5@3 bb4@5", K: "g4@5 g4@5 ~ f4@2 eb4@3",
  L: "f4@5 f4@5 ~ eb4@2 d4@3", M: "eb4@5 eb4@5 ~ d4@2 eb4@3", N: "d4@5 bb3@5 ~ bb3@5",
  O: "[bb5@18 a5@6 bb5@12 g5@85 ~@7]/8",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<~@12 A B C D ~@10 E F G H I J ~@8 K@4 L M N O P Q ~@3 R@8>".pickRestart({
  A: "d4@5 d4@3 d4@3 d4@5", B: "g4@5 g4@3 g4@3 g4@5", C: "bb4@5 bb4@3 bb4@3 bb4@5", D: "d5@5 d5@3 d5@3 d5@5",
  E: "g4@5 g4@3 g4@3 g4@2 g4@3", F: "bb4@5 bb4@3 bb4@3 bb4@2 bb4@3", G: "g4@5 g4@5 ~ f4@2 eb4@3",
  H: "f4@5 f4@5 ~ eb4@2 d4@3", I: "eb4@5 eb4@5 ~ d4@2 eb4@3", J: "d4@5 bb3@5 ~ bb3@5", K: "bb4@5 a4@3 bb4@3 g4@5",
  L: "g5@11 f5@2 g5@3", M: "d5@11 c5@2 d5@3", N: "c5@11 bb4@2 c5@3", O: "d5@5 g4@5 ~ g4@5",
  P: "d4@3 e4@2 gb4@3 g4@3 a4@2 bb4@3", Q: "c5@3 d5@2 c5@5 ~ bb4@5", R: "[bb4@18 a4@6 bb4@12 g4@85 ~@7]/8",
})).s("gm_trumpet").gain(0.2)

// other · trombone
const trombone = note("<~@8 A@8 B C D E@5 B C D F B C D G H@4 ~@8 B C D G I J ~@7 K@4>".pickRestart({
  A: "bb3@5 a3@3 bb3@3 g3@5", B: "g3", C: "f3", D: "eb3", E: "d3/5", F: "d3", G: "g2", H: "d4",
  I: "d3@3 e3@2 gb3@3 g3@3 a3@2 bb3@3", J: "c4@3 d4@2 c4@5 ~ bb3@5", K: "[~@9 g2@49 ~@6]/4",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_2 = note("<~@12 A B C D ~@12 E F G H ~@5 I@4 J K L ~@17>".pickRestart({
  A: "d3@5 d3@3 d3@3 d3@5", B: "g3@5 g3@3 g3@3 g3@5", C: "bb3@5 bb3@3 bb3@3 bb3@5", D: "d4@5 d4@3 d4@3 d4@5",
  E: "g3@11 f3@2 g3@3", F: "d3@11 c3@2 d3@3", G: "c3@11 bb2@2 c3@3", H: "d3@5 g2@5 ~ g2@5",
  I: "[bb2@5 a2@3 bb2@3 g2@53]/4", J: "bb2", K: "d3", L: "g3",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note("<~@32 A@4 ~@12 A@2 ~@7 B@4>".pickRestart({
  A: "d3", B: "[~@9 g2@49 ~@6]/4",
})).s("gm_trombone").gain(0.2)

stack(
  piccolo, piccolo_soft, oboe, clarinet, clarinet_soft, bassoon, alto_sax, baritone_sax, baritone_sax_soft, french_horn,
  trumpet, trumpet_2, trombone, trombone_2, trombone_soft
)