Strudelify

why have you chosen me

Rodger Strader

KeyE♭ majorTempo100 bpm
0:00/0:00
// why have you chosen me — Rodger Strader
// 100 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5903804; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · glockenspiel
const glockenspiel = note("<A B C D E F G H I J K L M N O P Q R S L Q T U V Q W X Y Z AA AB@2>".pickRestart({
  A: "[eb6,bb6] ~@3", B: "[eb6,c7]@2 c6 d6 eb6@2 bb6@2", C: "[eb6,c7] ~ [eb6,ab6] ~", D: "[eb6,bb6] ~ bb6 ab6",
  E: "[eb6,g6] ~ [eb6,c7] ~", F: "[eb6,c7] bb6 ab6 g6", G: "[c6,f6] a6 [f6,c7] f7", H: "[f6,d7] [eb6,c7] [d6,bb6]@2",
  I: "[ab6,c7] ~@2 [c7,eb7]", J: "[bb6,d7]@2 ~@2 eb7@2 d7 c7", K: "[d6,bb6] ~ [d6,b6] d7", L: "d7@2 ~@2 eb7 d7 c7 bb6",
  M: "[f6,c7] ~@2 [c7,f7]", N: "[bb6,d7] [ab6,c7] [f6,bb6] [f6,ab6]", O: "g6 bb6 eb7 eb6",
  P: "[eb6,g6] [g6,bb6] [eb6,db7]!2", Q: "[eb6,c7] ~@2 [ab6,eb7]", R: "[f6,d7] ~ [eb6,c7] [d6,bb6]", S: "bb6 d6 b6 d7",
  T: "[f6,d7] c7 [d6,bb6] f6", U: "[db6,f6] db6 f6 ab6", V: "[eb6,g6] ab6 [g6,bb6]@2", W: "d7 f6 d7 [b6,f7]",
  X: "[g6,eb7]@2 ~@2 eb7 d7 c7 bb6", Y: "[eb6,g6] ~ eb7 ~", Z: "[c6,f6] ~@2 [eb6,c7]", AA: "d7 bb6", AB: "eb7/2",
})).s("gm_glockenspiel").gain(0.33)

// chords · violin · "Violin I"
const violin = note("<A B C D A E F@2 G H I J K L M@2 G N I O G P Q@2 G R S T K L U@2>".pickRestart({
  A: "g4@2 ab4 bb4, eb4", B: "eb4@3 eb4 eb4@2 f4 g4, c4", C: "ab4@2 ab4 g4, eb4",
  D: "[eb4,g4]@3 [d4,f4] f4@2 ~ bb4, ~ d4", E: "eb4@2 f4 g4, c4", F: "[c4@6 ~ eb4, f4@7 ~, ~@3 d4]/2",
  G: "c5@2 c5!2, eb4", H: "[d4,bb4]@3 [d4,bb4] ab4@2 ~ g4, ~ c4", I: "[d4,bb4]@4 g4@3 f4, ~ b3",
  J: "f4@3 eb4 eb4@2 ~ eb4, c4", K: "[c4,f4]@2 [e4,g4] [f4,ab4]", L: "d4@2 eb4 f4, ab3", M: "[[bb3,eb4]@6 ~ eb4]/2",
  N: "[d4,bb4]@2 [c4,ab4] [bb3,g4]", O: "eb4@2 ~ eb4, c4", P: "bb4@3 ab4 g4@2 bb4@2, d4",
  Q: "[db4@4 ~@3 eb4, bb4@3 ~, ~ g4]/2", R: "[f4,d5]@2 ~ f5, ~ f4", S: "eb5@2 eb5 bb4, eb4", T: "g4@2 ~ eb4, bb3",
  U: "[bb3,eb4]/2", // Eb5
})).s("gm_violin").gain(0.23)

// chords · cello · "Violoncello"
const cello = note("<A B C D A E F@2 G H I J K H L@2 G H I M G N@2 O G P B Q K H R@2>".pickRestart({
  A: "bb3@2 ab3 [d3,g3], eb3@3 ~", B: "[c3,g3]", C: "[f2,c4]", D: "[bb2,bb3]!2", E: "c3 bb2, g3",
  F: "[a2@2 ab2 bb2, f3]/2", G: "[ab2,ab3]", H: "[bb2,f3]", I: "[g2,bb3] [d3,f3]", J: "c3@3 bb2, eb3",
  K: "[ab2,f3]@2 [g2,g3] [f2,f3]", L: "[eb3 db3, g3]/2", M: "c3@3 bb2, g3", N: "[bb2,ab3]", O: "[eb3,bb3]",
  P: "[bb2,ab3] [b2,ab3]", Q: "[g2,d3]", R: "[eb3,g3]/2",
})).s("gm_cello").gain(0.23)

stack(glockenspiel, violin, cello)