Strudelify

Carol of the Bells

Mykola Leonovych

KeyF majorTempo184 bpm
0:00/0:00
// Carol of the Bells — Mykola Leonovych
// 184 bpm, 3/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/31431; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(184/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// chords · clarinet · "Bb Clarinet"
const clarinet = note(`<
  A@4 B@4 C D E F G H I J K L M N A@4 B@4 C D E F G H I J K L M N ~@4 O@4 C D E P C D E Q@6
>`.pickRestart({
  A: "eb4@5 d4@3 eb4@3 c4@5", B: "[eb4,g4]@5 [d4,f4]@3 [eb4,g4]@3 [c4,eb4]@5", C: "c5@5 c5@3 c5@3 bb4@2 ab4@3",
  D: "g4@5 g4@3 g4@3 f4@2 eb4@3", E: "f4@5 f4@3 f4@3 g4@2 f4@3", F: "eb4@5 c4@3 c4@3 c4@5",
  G: "[c5,eb5]@5 [c5,eb5]@3 [c5,eb5]@3 [bb4,d5]@2 [ab4,c5]@3", // Cm Bb Ab
  H: "[g4,bb4]@5 [g4,bb4]@3 [g4,bb4]@3 [f4,ab4]@2 [eb4,g4]@3", // Gm Fm Eb
  I: "[f4,ab4]@5 [f4,ab4]@3 [f4,ab4]@3 [g4,bb4]@2 [f4,ab4]@3", J: "[eb4,g4]@5 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@5",
  K: "g3@3 ab3@2 bb3@3 c4@3 d4@2 eb4@3", L: "f4@3 g4@2 f4@5 ~ eb4@5",
  M: "[g3,bb3]@3 [ab3,c4]@2 [bb3,d4]@3 [c4,eb4]@3 [d4,f4]@2 [eb4,g4]@3", // Gm Ab Bb Cm Dm Eb
  N: "[f4,ab4]@3 [g4,bb4]@2 [f4,ab4]@5 ~ [eb4,g4]@5", O: "g4@5 f4@3 g4@3 eb4@5", P: "eb4@5 d4@5 ~ c4@5",
  Q: "[eb4@14 d4@13 c4@14 [c4,c5]@41 ~@14]/6", // C
})).s("gm_clarinet").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note(`<
  A B C D E F G H A B C D E F G H I J I K A B C D E F G H A B C D E F G H I J I K L@8 M N O P M N O Q@6
>`.pickRestart({
  A: "c3", B: "bb2", C: "ab2", D: "g2", E: "[c3,eb3]", F: "[bb2,d3]", G: "[ab2,g3]", H: "[g2,ab3]",
  I: "g2@5 bb2@5 ~ d3@5", J: "ab3@5 g3@5 ~ eb3@5", K: "ab3@5 ab3@5 ~ g3@5", L: "eb3@5 d3@3 eb3@3 c3@5",
  M: "c3@5 c3@3 c3@3 ~@5", N: "g2@5 g2@3 g2@3 ~@5", O: "f2@5 f2@3 f2@3 ~@5", P: "eb2 c3",
  Q: "[eb2@20 c3@20 ~ [c3,c4]@41 ~@14]/6", // C
})).s("gm_electric_bass_finger").gain(0.3)

stack(clarinet, bass)