Strudelify

Away in a manger

Traditional

KeyG majorTempo120 bpm
0:00/0:00
// Away in a manger — Traditional
// 120 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5821605; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · violin · "Violin I"
const violin = note(`<
  A B C D E F G H I B C D E J C K L@2 M@2 N M O M@5 N M P M O M Q R S T S T U V W R S T X Y Z AA AB AC AD AA AE
>`.pickRestart({
  A: "~@2 b4", B: "b4@3 a4 g4@2", C: "g4 f#4 e4", D: "e4 d4 c4", E: "b3@2 b3", F: "a3@3 a3 a3@2", G: "a3 f#4 d4",
  H: "c4 b3 d4", I: "g4@2 b4", J: "a4@3 g4 f#4@2", K: "f#4 c4 d4", L: "[d4@5 ~]/2",
  M: "d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4 d4 d#4",
  N: "d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4 f#4",
  O: "c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4",
  P: "d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4 d#4 f4", Q: "b4 g4 d4 g4 b4 a4",
  R: "g4@3 a4 b4 c5", S: "d5@4 e5 f#5", T: "g5 f#5 e5", U: "d5 e5 f#5", V: "g5 d5 c5", W: "b4@4 b4 a4", X: "d5@2 ~",
  Y: "f#4@3 g4 d4@2", Z: "e4 d4 b3", AA: "e4@2 f#4", AB: "b3@2 ~", AC: "f#4", AD: "e4", AE: "b3",
})).s("gm_violin").gain(0.25)

// other · viola
const viola = note(`<
  ~ A B A B C D E F A B A G H I J K@2 L@4 M@3 L@5 N L M L O P Q R S A T U V P Q R S W Q X Y W Q X Z
>`.pickRestart({
  A: "d4@3 e4 d4@2", B: "b3", C: "a4@2 a4", D: "f#4", E: "g4@2 g4", F: "d4", G: "b3@2 ~", H: "f#4@3 g4 d4@2",
  I: "e4 d4 b3", J: "e4@2 f#4", K: "[b3@5 ~]/2",
  L: "g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3",
  M: "f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3 f#3 g3",
  N: "a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4 a3 c4", O: "g3 a3 b3 d4 g4 a4",
  P: "d5@3 c5 b4@2", Q: "b4 a4 g4", R: "g4 f#4 e4", S: "d4@2 d4", T: "d4 a4 f#4", U: "e4 d4 g4", V: "b4@2 d5",
  W: "c5@3 b4 a4@2", X: "a4 e4 f#4", Y: "g4@2 d4", Z: "g4",
})).s("gm_viola").gain(0.25)

// other · cello
const cello = note("<~@17 A B C D E F G H I B C D E J C K L M ~@20>".pickRestart({
  A: "~@2 d3", B: "d3@3 c3 a#2@2", C: "a#2 a2 g2", D: "g2 f2 d#2", E: "d2@2 d2", F: "d2@3 d#2 d2@2", G: "d2 a2 f#2",
  H: "d#2 d2 g2", I: "a#2@2 d3", J: "c3@3 a#2 a2@2", K: "a2 d#2 f2", L: "g2", M: "d2",
})).s("gm_cello").gain(0.3)

// other · cello · soft notes
const cello_soft = note("<~@51 d2 e2 [c2@2 d2] g2>").s("gm_cello").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<~@8 A B C D B E F G H ~@18 B C D B E I J K B C D B E F G H ~@4>".pickRestart({
  A: "~@2 b2", B: "g2 b2 d3", C: "g3 d3 b2", D: "c3 e3 g3", E: "d2 f#2 a2", F: "e3 b2 g2", G: "c3!2 d3", H: "g2 ~@2",
  I: "c3 a2 f#2", J: "c3 b2 a2", K: "g2 a2 b2",
})).s("gm_pizzicato_strings").gain(0.3)

// other · pizzicato strings · soft notes
const pizzicato_strings_soft = note("<~ A B C A D E F G ~@46>".pickRestart({
  A: "g2 b2 d3", B: "g3 d3 b2", C: "c3 e3 g3", D: "d2 f#2 a2", E: "c3 a2 f#2", F: "c3 b2 a2", G: "g2 a2 ~",
})).s("gm_pizzicato_strings").gain(0.2)

stack(violin, viola, cello, cello_soft, pizzicato_strings, pizzicato_strings_soft)

More by Traditional