Strudelify

on a pale horse

Halo

KeyD majorTempo120 bpm
0:00/0:00
// on a pale horse — Halo
// 120 bpm, 12/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 16/8 at bar 3, 12/8 at bar 4, 16/8 at bar 6, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/69122; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 37 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/6)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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
const violin = note("<A@8 B C D@3 E F A@2 G H I J K L ~@4 M@3 N@2 O@2 P A Q>".pickRestart({
  A: "e5!12", B: "e5!4 b5!2 c#6!2 d6!4", C: "d6!2 c#6!2 a5!2 c#6!2 b5!4", D: "b5!12", E: "g5!6 f#5!2 a5!2 g5!2",
  F: "f#5!6 e5!2 g5!2 f#5!2", G: "e5!6 d5!2 f#5!2 e5!2", H: "d5!6 c#5 d5 e5!4", I: "e5!4 d5!2 f#5!2 e5!2 d5!2",
  J: "d5!4 c#5 d5 e5!2 d5 e5 f#5!2", K: "f#5!4 e5 d5 c#5!6", L: "c#5!6 ~@6",
  M: "[~ b4@2 c#5 d5 e5@2 d5 f#5@6 e5 g5 a5@2]/3", N: "[g5@2 f#5 a5 b5@3 c#6 b5 [f#5,b5]@3]/2",
  O: "[g5@2 a5@2 f#5@2 b5@2 a5@2 g5@3 f#5@9 g5@2]/2", P: "f#5@2 e5@6 e5!4", Q: "e5!2 ~@10",
})).s("gm_violin").gain(0.3)

// other · violin
const violin_2 = note("<~ A B C D@13 E@5 F G H I J K L M N O P Q R D S>".pickRestart({
  A: "e4 ~@11", B: "e4!6 f#4!2 g4!2 f#4!2", C: "a4!2 g4!2 f#4!3 e4!5", D: "e4!12", E: "b3!12", F: "b3!6 ~@2 g4@2 ~@2",
  G: "f#4 ~ a4 ~ g4 ~", H: "f#4 g4 a4@2 ~@2 g4 a4 b4@2 ~@2", I: "a4 ~ c#5 ~ b4 ~", J: "a4 g4 f#4@2 ~@2 g4 f#4 e4@4",
  K: "~ d4 ~ c#4 ~ e4", L: "~@2 d4@2 ~@2 c#4 d4 e4@2 ~@2", M: "d4 e4 f#4@2 ~@2 e4@2 ~@2 g4@2",
  N: "~@2 f#4@2 ~@2 g4 f#4 e4@2 ~@2", O: "f#4 e4 d4@4 e4!6", P: "g4!2 a4!2 f#4!2 b4!2 a4!2 g4!2", Q: "g4 f#4!9 g4!2",
  R: "f#4!2 e4!10", S: "e4!2 ~@10",
})).s("gm_violin").gain(0.3)

stack(violin, violin_2)