Strudelify

demons

Maé Formey

KeyE♭ majorTempo90 bpm
0:00/0:00
// demons — Maé Formey
// 90 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5856906; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "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.

// chords · piano
const piano = note(`<
  A B C D E B C D E F G H I F G H J K L M@2 N O P@2 B C D E B C D E F G H I F G H J K L M@2 N O P@2 Q R S T Q R U V K L
  M@2 N O W X Y
>`.pickRestart({
  A: "[eb3,g3,bb3]@15 ~", B: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [eb3,g3,bb3]@15 ~",
  C: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [d3,f3,bb3]@15 ~", D: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [c3,eb3,g3]@15 ~",
  E: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [c3,eb3,ab3]@15 ~", F: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [eb4,g4]!2",
  G: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [bb3,d4]!2", H: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [c4,eb4]!2",
  I: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [ab3,c4]!2", J: "d5 eb5 bb4 d5!2 eb5 bb4 eb5, [ab3,c4]!2",
  K: "~@4 [bb4,eb5,g5]@2 [bb4,eb5,g5]@2 [eb5,g5,bb5]@3 [g4,bb4,eb5]@3 [f4,bb4,d5]@2", // Eb Bb
  L: "~@4 [bb4,d5,g5]@2 [bb4,d5,g5]@2 [d5,bb5]@3 [g4,bb4,d5]@3 [g4,bb4,c5]@2", // Gm C7
  M: "[~@2 [c5,eb5,g5]@2 [c5,eb5,g5]@2 [c5,eb5,g5]@2 [c5,eb5,g5]@3 [c5,eb5,g5]@3 [c5,eb5,ab5]@4 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@3 [c5,eb5,g5]@3 [c5,eb5,g5]@2]/2", // Cm Ab Cm
  N: "~@2 [bb4,eb5,g5]@2 [eb5,g5,bb5] [g4,bb4,eb5]@2 [f4,bb4,d5]", // Eb Bb
  O: "~@4 [bb4,eb5,g5]@4 [d5,g5,bb5]@3 [g4,bb4,d5]@3 [c4,g4,c5]@2", // Eb Gm C5
  P: "[~@2 [c5,eb5,g5]@2 [c5,eb5,g5]@2 [c5,eb5,g5]@2 [c5,eb5,g5]@3 [c5,eb5,g5]@3 [c5,eb5,ab5]@4 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@3 [d5,g5]@3 [eb5,g5]@2]/2", // Cm Ab G5 Eb
  Q: "[eb2,eb3] bb2 [eb2,eb3] bb2 [eb2,eb3] bb2 [eb2,eb3] bb2, [eb4,g4,bb4]@15 ~", // Eb
  R: "[bb1,bb2] f2 [bb1,bb2] f2 [bb1,bb2] f2 [bb1,bb2] f2, [d4,f4,bb4]@15 ~", // Bb
  S: "[c2,c3] g2 [c2,c3] g2 [c2,c3] g2 [c2,c3] g2, [eb4,g4,c5]@15 ~", // C Cm
  T: "[ab1,ab2] eb2 [ab1,ab2] eb2 [ab1,ab2] eb2 [ab1,ab2] eb2, [eb4,ab4,c5]@15 ~", U: "[c3,eb4,g4,c5]@15 ~",
  V: "[ab2,eb4,ab4,c5]@15 ~", // Ab
  W: "~@2 [c5,eb5,g5]@2 [c5,eb5,g5]@2 [c5,eb5,g5]@2 [c5,eb5,g5]@3 [c5,eb5,g5]@3 [c5,eb5,ab5]@2", // Cm Ab
  X: "[c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@3 [d5,g5]@3 [eb5,g5]@2", // Ab G5 Eb
  Y: "[bb3,eb4,g4,bb4]@15 ~", // Eb
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note(`<
  ~ A B C D A B C D E F G H E F G H I J K L M J K L A B C D A B C D E F G H E F G H I J K L M J K L N O P Q N O R S I J
  K L M J K L T
>`.pickRestart({
  A: "d5 eb5 bb4 d5!2 eb5 bb4 d5, bb3@3 g3@3 g3@2", B: "d5 eb5 bb4 d5!2 eb5 bb4 [g3,d5], bb3@3 g3@4 ~",
  C: "d5 eb5 bb4 d5!2 eb5 bb4 d5, c4@3 g3@3 g3@2", D: "d5 eb5 bb4 d5!2 eb5 bb4 d5, ab3@3 ab3@3 g3@2",
  E: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [eb3,g3]!2", F: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [bb2,d3]!2",
  G: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [c3,eb3]!2", H: "d5 eb5 bb4 d5!2 eb5 bb4 d5, [ab2,c3]!2",
  I: "[eb2,eb3] bb2 [eb2,eb3] bb2 [eb2,eb3] bb2 [eb2,eb3] bb2, [bb3,eb4,g4,bb4]@15 ~", // Eb
  J: "[bb1,bb2] f2 [bb1,bb2] f2 [bb1,bb2] f2 [bb1,bb2] f2, [d4,f4,bb4,d5]@15 ~", // Bb
  K: "[c2,c3] g2 [c2,c3] g2 [c2,c3] g2 [c2,c3] g2, [eb4,g4,c5,eb5]@15 ~", // C Cm
  L: "[ab1,ab2] eb2 [ab1,ab2] eb2 [ab1,ab2] eb2 [ab1,ab2] eb2, [eb4,ab4,c5,eb5]@15 ~", // Ab
  M: "[eb2,eb3] bb2 [eb2,eb3] bb2 [eb2,eb3] bb2 [eb2,eb3] bb2, [eb4,g4,bb4,eb5]@15 ~", // Eb
  N: "eb4@3 [eb4,g4]@3 [eb4,g4]@2, eb3@15 ~", O: "d4@3 [d4,f4]@3 [d4,f4]@2, d3@15 ~",
  P: "c4@3 [c4,eb4]@3 [c4,eb4]@2, eb3@15 ~", Q: "ab3@3 [ab3,eb4]@3 [c4,eb4]@2, eb3@15 ~", R: "[c2,eb3,g3,c4]@15 ~",
  S: "[ab1,eb3,ab3,c4]@15 ~", T: "[bb2,eb3,g3,bb3]@15 ~",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)