Strudelify

O Holy Night

Adolphe Adam

KeyB♭ majorTempo75 bpm
0:00/0:00
// O Holy Night — Adolphe Adam
// 75 bpm, 6/8, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5316035; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B C D E F G H@2 I D C D J K L M ~ N O P Q N O R D S T U@2 V@2 W X Y Z AA AB AC@2 AD@2 AE@2 AF AG AA AH AA
>`.pickRestart({
  A: "bb3@3 bb3@2 bb3", B: "d4@5 d4", C: "eb4@2 eb4 c4@2 eb4", D: "d4", E: "d4@2 d4 bb3@2 a3", F: "f3@3 bb3@2 c4",
  G: "eb4@3 c4@2 f3", H: "f4/2", I: "bb3", J: "bb3@3 g3@2 f3", K: "f4@2 g4 d4@2 e4", L: "db4@3 d4@2 db4", M: "a3",
  N: "c4 d4", O: "a3 c4", P: "d4@2 c4 d4@2 f4", Q: "eb4@3 d4@2 d4", R: "d4@2 d4 g4@2 bb3", S: "g4 a4",
  T: "bb4@3 f4@2 eb4", U: "[f4@3 a4]/2", V: "[a4@8 d4 d4@2 d4]/2", W: "g4", X: "f4@3 ~@2 f4", Y: "bb4", Z: "a4@5 d4",
  AA: "f4", AB: "bb3@3 f4@2 eb4", AC: "[d4@8 c4 d4@2 c4]/2", AD: "[d4@3 g4]/2", AE: "[a4@9 ~@2 f4]/2", AF: "d5",
  AG: "c5 a4", AH: "f4@3 g4@2 a4",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note(`<
  A B C D E F G D F A B H B I J K L ~ M N O P M Q R B S@2 T U V@2 F W X Y F Z AA@2 AB@2 AC AD AE AF F AG F
>`.pickRestart({
  A: "f4", B: "bb3", C: "bb3@3 bb3@2 a3", D: "bb3 c4", E: "f3@2 bb3 f3@2 eb3", F: "d4", G: "a3@3 a3@2 a3",
  H: "g3@3 g3@2 bb3", I: "d4@3 bb3@2 d4", J: "d4@3 f4@2 g4", K: "a3@2 bb3 g3@2 a3", L: "f3", M: "a3 bb3", N: "c4 a3",
  O: "bb3@2 a3 bb3@2 c4", P: "c4@3 bb3@2 bb3", Q: "f3 a3", R: "bb3@2 bb3 d4@2 f3", S: "[eb4@9 d4@2 c4]/2", T: "d4 c4",
  U: "d4 f4", V: "[f4@8 g3 g3@2 g3]/2", W: "d4@3 ~@2 d4", X: "g4", Y: "f4@5 bb3", Z: "g3@3 c4@2 bb3",
  AA: "[bb3@8 a3 bb3@2 a3]/2", AB: "[bb3@3 eb4]/2", AC: "c4 d4", AD: "eb4@3 ~@2 d4", AE: "f4 bb4", AF: "eb4 f4",
  AG: "d4@3 eb4@2 f4",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_3 = note(`<
  A B C A D B E F B A B C A G H I B ~ J K L M N@2 O A P@2 Q@2 R@2 S T U V U W X@2 Y@2 J Z AA AB U AC U
>`.pickRestart({
  A: "f3", B: "d3", C: "eb3@3 eb3@2 eb3", D: "bb3@2 f3 bb3@2 a3", E: "f3@3 f3@2 f3", F: "f3 a3", G: "d3@3 e3@2 d3",
  H: "a3@3 d3@2 e3", I: "e3!2", J: "a3 bb3", K: "f3@2 g3 a3@2 f3", L: "d3@2 eb3 f3@2 d3", M: "g3@3 f3@2 f3", N: "f3 g3",
  O: "f3@2 f3 bb3@2 f3", P: "[g3@9 f3@2 eb3]/2", Q: "[f3@3 a3]/2", R: "[c4@8 d3 d3@2 d3]/2", S: "g3 a3",
  T: "bb3@3 ~@2 bb3", U: "bb3", V: "c4@3 f3@2 f3", W: "eb3@3 f3@2 eb3", X: "[f3@8 f3 g3@2 f3]/2", Y: "[f3@3 bb3]/2",
  Z: "c4@3 ~@2 f4", AA: "d4 g4", AB: "c4 d4", AC: "a3@3 bb3@2 f3",
})).s("gm_clarinet").gain(0.3)

stack(clarinet, clarinet_2, clarinet_3)

More by Adolphe Adam