Strudelify

the first noel

Amelia Knighton

KeyD majorTempo80 bpm
0:00/0:00
// the first noel — Amelia Knighton
// 80 bpm, 3/4, key D 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/5858685; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · violin
const violin = note("<A B C D C D E F G B C D C D E F G H I J K L M N O ~@16 P Q R S T U V W>".pickRestart({
  A: "~@4 f#4 e4", B: "d4@3 e4 f#4 g4", C: "a4@4 b4 c#5", D: "d5 c#5 b4", E: "a4 b4 c#5", F: "d5 a4 g4",
  G: "f#4@4 f#4 e4", H: "f#4@3 g4 a4 b4", I: "c#5@4 f#5 e5", J: "d5@2 d5", K: "c#5", L: "f#5 e5 d5", M: "c#5 d5 e5",
  N: "f#5 c#5 b4", O: "a4@2 ~", P: "d5@3 e5 f#5 g5", Q: "a5@4 d6 c#6", R: "b5@4 d6 e6", S: "d6@2 c#6", T: "d6 c#6 b5",
  U: "a5 b5 c#6", V: "d6 a5 g5", W: "d6",
})).s("gm_violin").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note("<~@25 A B C B C A D B A B C B C A D B ~@8>".pickRestart({
  A: "d4 a4 f#5", B: "a4 e5 c#6", C: "b4 f#5 d6", D: "g4 d5 b5",
})).s("gm_pizzicato_strings").gain(0.25)

// other · violin
const violin_2 = note("<~ A B C B C D E F A B C B C D E F G H I J K L K H ~@16 G H I J K L K M>".pickRestart({
  A: "f#4@3 e4 f#4 g4", B: "f#4@4 b4 c#5", C: "b4 a4 g4", D: "f#4 g4 a4", E: "b4 f#4 e4", F: "f#4@2 a4", G: "[d5,a5]",
  H: "[a4,e5]", I: "[b4,f#5]", J: "[f#4,c#5]", K: "[g4,d5]", L: "[d4,a4]", M: "[a4,d5]",
})).s("gm_violin").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@25 A B C B C A D B A B C B C A D B ~@8>".pickRestart({
  A: "d4 a4 d5", B: "a4 e5 a5", C: "b4 f#5 b5", D: "g4 d5 g5",
})).s("gm_pizzicato_strings").gain(0.2)

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

// other · pizzicato strings
const pizzicato_strings_3 = note("<~@25 A B C D E F E G A B C D E F E G ~@8>".pickRestart({
  A: "d4 a4 b4", B: "a3 e4 f#4", C: "b3 f#4 b4", D: "f#3 c#4 f#4", E: "g3 d4 g4", F: "d3 a3 d4", G: "a3 e4 a4",
})).s("gm_pizzicato_strings").gain(0.4)

stack(violin, pizzicato_strings, violin_2, pizzicato_strings_2, viola, pizzicato_strings_3)