Strudelify

whats not to love

Mark Lowry

KeyE majorTempo112 bpm
0:00/0:00
// whats not to love — Mark Lowry
// 112 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5894128; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 70 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/4)

// 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(`<
  ~@4 A B@2 C@4 D@2 E@2 F@2 G@2 H@2 G@2 I@4 J@2 E@2 K@2 L ~@2 M@2 ~ N@2 O P Q@2 O P R@3 ~@8 S@3 J@2 T@2 U V W@3
>`.pickRestart({
  A: "~@4 b3 c#4 d4 e4", B: "[f#4@5 b3 f#4 e4@3 d4 c#4@3 ~ a3]/2",
  C: "[b3 c#4@2 d4@2 e4@2 g4@2 f#4@3 ~ f#4 b4 b4@5 ~ c#5 d5 c#5@3 b4 a4@3 ~ g4]/4",
  D: "[f#4@2 f#4 f#4@2 a4@2 b4@5 ~@3 f#4]/2", E: "[g4@3 f#4@2 e4 d4 e4@2 f#4@3 ~@2 g4@2]/2",
  F: "[f#4@3 g4 f#4 g4@2 f#4@4 ~ b4 c#5 d5 e5]/2", G: "[f#5@5 b4 f#5 e5@3 d5 c#5@3 ~ a4]/2",
  H: "[b4 c#5@2 d5@2 e5@2 d5@2 c#5@2 ~ b4 c#5 d5 e5]/2",
  I: "[b4 c#5@2 d5@2 e5@2 [e5,g5]@2 [d5,f#5]@2 ~@2 f#5 [g5,b5] [g5,b5]@5 ~ [a5,c#6] [b5,d6] [a5,c#6]@3 [g5,b5] [e5,a5]@3 ~ [e5,g5]]/4", // Em D G A Bm A G A5 …
  J: "[[d5,f#5]@2 [d5,f#5] [d5,f#5]@2 [f#5,a5]@2 [f#5,b5]@5 ~@3 f#4]/2", K: "[f#4@3 g4 f#4 g4@2 f#4@4 ~ f#4@3 e4]/2",
  L: "c#4 a3 b3@6", M: "[~@3 b4@2 d5@2 c#5@7 ~@2]/2", N: "[~@7 d5@4 c#5@3 ~ a#4]/2",
  O: "[b4,d5]@2 [b4,d5] [b4,d5]@3 ~ b4", P: "[c#5,e5]@2 [d5,f#5]!2 [c#5,e5]@2 ~ c#5",
  Q: "[d5@3 c#5 b4@2 a4 b4@5 ~@3 a4]/2", R: "[d5@2 e5 f#5@3 g5 f#5@15 ~@2]/3",
  S: "[~@5 f#5 [g5,b5] [g5,b5]@5 ~ [a5,c#6] [b5,d6] [a5,c#6]@3 [g5,b5] [e5,a5]@3 ~ [e5,g5]]/3", // G A Bm A G A5 Em
  T: "[g4@3 f#4@2 e4 d4 e4@2 f#4@3 ~@2 f#4 g4]/2", U: "f#4", V: "a#4", W: "b4/3",
})).s("gm_violin").gain(0.3)

// other · violin · soft notes
const violin_soft = note("<~@51 A B C D E B C F ~@11>".pickRestart({
  A: "[d5,f#5]", B: "[c#5,e5]", C: "[b4,d5]", D: "[b4,c#5]", E: "~ [d5,f#5] [c#5,e5] [b4,d5]", F: "[b4,c#5] ~",
})).s("gm_violin").gain(0.2)

stack(violin, violin_soft)