Strudelify

Halloween

Sarah Dee

KeyE minorTempo130 bpm
0:00/0:00
// Halloween — Sarah Dee
// 130 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1, 2/4 at bar 43, 4/4 at bar 43) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1378471; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "a, b" plays two voices at once · [...]/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 · alto sax · "Alto Saxophone"
const alto_sax = note("<~@7 A@4 B C D E F G H I ~@14 J K I ~@6 L ~@6 M N@3>".pickRestart({
  A: "[~@16 f5@2 f5@2 f5 f5@2 f5@2 f5@2 f5@2 f5@2 f5@2 a#5@4 d5 a#5@4 g5 ~ d#5@3 c5@6 a5 ~ a5@4 c5 a5@4 ~ f5 d5@3 a#5@6 ~ f5 a#5@4 d5 ~ a#5@4 g5 d#5@3 c5@5]/4",
  B: "~ a#5@2 a5@4 ~ f5 g5@4 a5 ~ a#5@3 ~@6", C: "~@2 f#5@11 a5@5 g5@6", D: "~@4 e3@2 a#3 b3", E: "e3@6 a#3 b3",
  F: "e4@2 g4 e4 a#4 b4 e5@2", G: "c5 b4 a4@2 ~@2 b4 a4", H: "g4@2 a4 g4 f#4 e4 d4@2", I: "e4 ~@3", J: "a4!3 g4",
  K: "f#4 g4 e4 f#4 d4@4", L: "f#5 b4 ~@6", M: "f5@2 f5 f5@2 f5@2 f5@2 f5 f5@2 f5@2 f5@2 a#5@4 d5 a#5@3",
  N: "[~ g5 d#5@3 c5@5 ~ a5 a5@4 c5 ~ a5@4 f5 d5@2 a#5@5 ~@2 f5 a#5@4 d5 a#5@4 g5 ~ d#5@2 c5@5 a#5@3 a5@4 f5 g5@4 a5 a#5@3 ~@5]/3",
})).s("gm_alto_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<~@13 A@2 ~@3 B A@2 ~@3 B A@2 ~@8 B A@2 ~@4 C ~@10>".pickRestart({
  A: "e2@6 a#2 b2", B: "g3!2 d#3 e3 g3!2 d#3 e3", C: "f#3 b3 ~@6",
})).s("gm_baritone_sax").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@8 A@3 B ~@15 C D E F ~@2 G H ~@7 I ~@6 J K@3>".pickRestart({
  A: "[~@7 f4@2 a#4@4 d5 a#4@4 g4 ~ d#4@3 c5@6 a4 ~ a4@4 c5 a4@4 ~ f4 d4@3 a#4@6 ~ f4 a#4@4 d5 ~ a#4@4 g4 d#4@3 c5@5]/3",
  B: "~ a#4@2 a4@4 ~ f4 g4@4 a4 ~ a#4@3 ~@6", C: "e4@2 g4 e4 a#4 b4 e5@2", D: "c5 b4 a4@2 ~@2 g4 a4",
  E: "b4@2 b3@2 b3 c#4 d#4@2", F: "e4@3 ~", G: "a4 ~ a4 ~ a4 ~ g4@2", H: "f#4 g4 e4 f#4 d4@4", I: "b4 ~@3",
  J: "~@14 f4@2 a#4@4 d5 a#4@3",
  K: "[~ g4 d#4@3 c5@5 ~ a4 a4@4 c5 ~ a4@4 f4 d4@2 a#4@5 ~@2 f4 a#4@4 d5 a#4@4 g4 ~ d#4@2 c5@5 a#4@3 a4@4 f4 g4@4 a4 a#4@3 ~@5]/3",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note("<A B C D E F G@2 ~@10 H ~@5 H ~@10 H ~@6 I J K L@3 M ~@4>".pickRestart({
  A: "~@17 f2@2 ~ a2@2 a#2@2, ~@19 g2@2 ~@3", B: "~@15 g2@2 a2@2 b2@2 c3@3", C: "~@13 g2@2 a2@2 b2@2 c3@3 ~@2",
  D: "g2@2 a2@2 b2@2 c3@3 ~@4 g2@2 a2@2 a#2@3 ~@4, ~@6 f2 ~@5", E: "~@10 f2@2 g2@2 ~ a#2@3 ~@6, ~@7 a2 ~@4",
  F: "~@8 g2@2 a2@2 b2@2 c3@3 ~@7",
  G: "[~@6 g2@2 a2@2 b2@2 c3@3 ~@4 a2@2 b2@2 c3@3 ~@3 f2@2 ~ a2@2 a#2@3 ~@11, ~@18 g2@2 ~@11 g2@2 ~@15]/2",
  H: "g3!2 d#3 e3 g3!2 d#3 e3", I: "b3@6 ~@6 f2@2 ~ a2@2 a#2@3 ~@4, ~@7 g2 ~@4",
  J: "~@9 g2@2 ~ b2@2 c3@3 ~@7, ~@11 a2@2 ~@11", K: "~@7 a2@2 b2@2 c3@3 ~@2 g2@2 ~ b2@2 c3@3, ~@3 g2 ~@5 a2 ~@2",
  L: "[~@2 f2@2 g2@2 a2@2 a#2@3 ~@12 f2@2 g2@2 ~ a#2@3 ~@13 g2@2 ~ b2@2 c3@3 ~@13 g2@2 ~ b2@2 c3@2, ~@27 a2@2 ~@17 a2@2 ~@19 a2@2 ~@3]/3",
  M: "~@3 g2@2 a2@2 ~ c3@3 ~@4 g2@2 a2@2 a#2@3 ~@2, ~@7 b2@2 ~@5 f2@2 ~@8",
})).s("gm_trombone").gain(0.3)

// bass · tuba
const bass = note("<~@4 A B C@2 ~@10 D E@2 ~@3 D E@2 ~@3 F ~@4 D E@2 ~@4 G ~@2 H@3 I ~@4>".pickRestart({
  A: "~@10 f2@2 g2@2 ~ a#2@3 ~@6, ~@7 a2 ~@4", B: "~@8 g2@2 a2@2 b2@2 c3@3 ~@7",
  C: "[~@6 g2@2 a2@2 b2@2 c3@3 ~@4 a2@2 b2@2 c3@3 ~@3 f2@2 ~ a2@2 a#2@3 ~@11, ~@18 g2@2 ~@11 g2@2 ~@15]/2",
  D: "g3!2 d#3 e3 g3!2 d#3 e3", E: "e2@6 a#2 b2", F: "g3!2 f#3 g3 e3@2 ~@2", G: "f#2 b2 ~@6",
  H: "[~@23 f2@2 g2@2 ~ a#2@3 ~@13 g2@2 ~ b2@2 c3@3 ~@13 g2@2 ~ b2@2 c3@2, ~@27 a2@2 ~@17 a2@2 ~@19 a2@2 ~@3]/3",
  I: "~@3 g2@2 a2@2 ~ c3@3 ~@4 g2@2 a2@2 a#2@3 ~@2, ~@7 b2@2 ~@5 f2@2 ~@8",
})).s("gm_tuba").gain(0.3)

// other · violin
const violin = note("<~@7 A@4 B C ~@8 D E F G ~@5 H I J ~@5 D E K L M ~@6 N O@3>".pickRestart({
  A: "[~@16 f5@2 f5@2 f5 f5@2 f5@2 f5@2 f5@2 f5@2 f5@2 a#5@4 d6 a#5@4 g5 ~ d#5@3 c6@6 a5 ~ a5@4 c6 a5@4 ~ f5 d5@3 a#5@6 ~ f5 a#5@4 d6 ~ a#5@4 g5 d#5@3 c6@5]/4",
  B: "~ a#5@3 ~@20", C: "~@2 f#5@5 b5@11 g5@6", D: "e4@2 g4 e4 a#4 b4 e5@2", E: "c5 b4 a4@2 ~@2 b4 a4",
  F: "g4@2 a4 g4 f#4 e4 d4@2", G: "e4 ~@3", H: "~@3 d4", I: "d5!3 c5", J: "b4 c5 a4 b4 g4@4", K: "g4@2 e4@2 ~@2 b4 a4",
  L: "g4@2 e4@2 f#4 g4 a4@2", M: "f#5 b4 ~@6", N: "f5@2 f5 f5@2 f5@2 f5@2 f5 f5@2 f5@2 f5@2 a#5@4 d6 a#5@3",
  O: "[~ g5 d#5@3 c6@5 ~ a5 a5@4 c6 ~ a5@4 f5 d5@2 a#5@5 ~@2 f5 a#5@4 d6 a#5@4 g5 ~ d#5@2 c6@5 a#5@3 ~@18]/3",
})).s("gm_violin").gain(0.3)

stack(alto_sax, baritone_sax, trumpet, trombone, bass, violin)