Strudelify

Jingle Bell Rock

Hoang Nguyen

KeyB♭ majorTempo120 bpm
0:00/0:00
// Jingle Bell Rock — Hoang Nguyen
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4850174; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 38 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// 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 · clarinet · "B♭ Clarinet"
const clarinet = note("<A B C D E F G H I J K L E F G H I J M@2 N O P Q R@2 S T E F U V W X Y Z AA AB>".pickRestart({
  A: "bb4 ~@3 bb4 ~ bb4@3 ~@3 bb4 ~@3 bb4 ~ bb4@3 ~@3", B: "g4 gb4 f4 eb4", C: "f4 ~ e5 ~ f4 ~ e5 ~",
  D: "~@2 f5 eb5@3 d5@3 c5@3", E: "bb3@2 bb3 bb3@3 bb3@2 bb3 bb3@3", F: "bb3@2 bb3 bb3@2 bb3@7",
  G: "bb3@2 bb3 bb3@3 d4@3 f4@3", H: "bb3 a3", I: "g3@2 g3@3 g3 a3@2 a3@3 a3", J: "g3@2 g3 g3@3 a3@6",
  K: "~@3 bb3@2 bb3 a3@6", L: "a3@2 ~ g3@2 g3@7", M: "[~@3 bb3@2 bb3 c4@2 a3@3 bb3@4 c4@3 d4@3 d4@3]/2",
  N: "eb4@5 eb4@4 eb4@3", O: "db4@5 db4@6 db4", P: "d4 bb3!3", Q: "bb3@3 d4", R: "d4@5 d4@7",
  S: "~@2 a3 a3@3 bb3@2 bb3 bb3@2 bb3", T: "c4@2 bb3@3 a3@4 ~@3", U: "bb3 c4", V: "b3", W: "bb3 eb4",
  X: "bb3@3 eb4@2 eb4@7", Y: "~@3 c4@3 c4@2 bb3 a3@3", Z: "~@3 c4@3 eb4@2 eb4 eb4@3", AA: "~@2 g4 f4@3 eb4@3 db4@3",
  AB: "d4@3 ~",
})).s("gm_clarinet").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note("<A@2 B C D E F G H@2 I J D E F G H@2 K L M N O P Q R S T D U V W X Y Z@2 AA AB>".pickRestart({
  A: "bb2 ~ bb3 ~ bb2 ~ bb3 ~", B: "a3 ~@3 g3 ~@3", C: "~@2 f3 eb3@3 d3@3 c3@3", D: "bb2 f3 f2 f3",
  E: "bb2@6 f3@4 f2@6 f2@2 g2@3 ~ a2@2", F: "bb2 b2", G: "c3@2 f2 f3", H: "eb3 d3 c3 f2", I: "c3 f2",
  J: "f3@16 f2@2 g2@3 ~ a2@2", K: "c3 ~ f2 f3", L: "bb2@3 bb2", M: "eb3@2 eb2 eb3", N: "e3@2 e2 e3", O: "f3 f2",
  P: "bb2 a2 g2 f2", Q: "g2@5 c3 c3@3 c3@3", R: "g2@5 c3@4 c3@3", S: "f2 ~ c3@2",
  T: "f3@6 c3@6 f2 ~@3 f2@2 g2@3 ~ a2@2", U: "bb2@3 f3@2 f2@3 f2 g2@2 a2", V: "bb2 ab2", W: "g2 f2 eb2 d2",
  X: "eb2 eb3", Y: "c3@10 eb3@8 eb3@3 ~ d3@2", Z: "c3!2 f2 f3", AA: "~@2 eb3 d3@3 c3@3 a2@3",
  AB: "bb2@3 f2@2 bb2@4 ~@3",
})).s("gm_electric_bass_finger").gain(0.3)

stack(clarinet, bass)