Strudelify

Hark The Herald Angels Sing

Mahalia Jackson

KeyE majorTempo110 bpm
0:00/0:00
// Hark The Herald Angels Sing — Mahalia Jackson
// 110 bpm, 4/4, key E 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/5851656; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 40 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · french horn · "Horn in F"
const french_horn = note("<~@8 A B A B C D E F C D E G H@8 I@8 J@4>".pickRestart({
  A: "f#4", B: "g4 f#4!2 e4", C: "g4@3 g4 g4@2 f#4@2", D: "e4 d#4 e4@2", E: "e4 a4", F: "d4 c#4 a3@2", G: "d4 c#4 d4@2",
  H: "[~@22 a3@6 d4@6 d4@9 c#4@3 d4@6 f#4@6 f#4@6 e4@6 a4@6 a4@6 a4@9 g4@3 f#4@6 e4@6 f#4@12 a3@6 d4@6 d4@9 c#4@3 d4@6 f#4@6 f#4@6 e4@6 a4@6 e4@6 e4@9 d4@3 c#4@2]/8",
  I: "[~@4 b3@6 a3@12 a4@6 a4@6 a4@6 d4@6 g4@6 f#4@6 f#4@6 e4@6 a4@6 a4@6 a4@6 d4@6 g4@6 f#4@6 f#4@6 e4@6 g4@9 g4@3 g4@6 f#4@6 e4@6 d#4@6 e4@12 e4@6 f#4@3 g4@3 a4@9 g4@3 f#4@2]/8",
  J: "[~@4 g4@6 f#4@12 e4@7 f#4@4 g4@3 a4@11 g4@4 a4@7 g4@7 f#4@14 ~@17]/4",
})).s("gm_french_horn").gain(0.3)

// other · trombone
const trombone = note("<~@8 A B A B C D E F C D E F G@8 H@8 I@4>".pickRestart({
  A: "d3", B: "b2 c#3", C: "b3@3 b3 b3@2 a3@2", D: "g3 f#3 g3@2", E: "c#3@2 d3 e3 d3@3 a2", F: "a2 c#3 d3@2",
  G: "[~@22 a2@6 d3@6 d3@9 c#3@3 d3@6 f#3@6 f#3@6 e3@6 a3@6 a3@6 a3@9 g3@3 f#3@6 e3@6 f#3@12 a2@6 d3@6 d3@9 c#3@3 d3@6 f#3@6 f#3@6 e3@6 a3@6 e3@6 e3@9 d3@3 c#3@2]/8",
  H: "[~@4 b2@6 a2@12 a3@6 a3@6 a3@6 d3@6 g3@6 f#3@6 f#3@6 e3@6 a3@6 a3@6 a3@6 d3@6 g3@6 f#3@6 f#3@6 e3@6 b3@9 b3@3 b3@6 a3@6 g3@6 f#3@6 e3@12 e3@6 f#3@3 g3@3 f#3@9 e3@3 d3@2]/8",
  I: "[~@4 c#3@6 d3@12 e3@7 f#3@4 g3@3 f#3@11 e3@4 d3@7 c#3@7 d3@14 ~@17]/4",
})).s("gm_trombone").gain(0.3)

stack(french_horn, trombone)

More by Mahalia Jackson