Strudelify

love runs out

Tate Hofmann

KeyF majorTempo120 bpm
0:00/0:00
// love runs out — Tate Hofmann
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/291171; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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(`<
  ~@3 A B C B D E F G H I J K L B C B D E F M N I J K O P@4 Q@2 P@2 R@2 P S T U V W X Y Z AA AB J AC AD P@4 Q@2 P@2 R@2
  P ~ AE@2 AF AG AE@2 AF AH AI AJ@3 B C B AK P@4 AL@2 P@2 R@2 P@6 Q@2 P@2 AM@2 P@2 ~@2
>`.pickRestart({
  A: "~@5 bb4!2 g4", B: "g4@2 ~ g4 g4@2 ~ g4", C: "g4 g4@2 bb4@2 bb4!2 g4", D: "g4!3 bb4@2 g4 bb4 d5",
  E: "d5 bb4 g4 ~ g4@4 g4@2 f4@2 bb4@2 d5@2", F: "d5 bb4 g4@2 g4@4 g4@2 f4@2 g4@2 bb4@2", G: "bb4 bb4@3 ~ g4 f4 g4",
  H: "bb4 bb4@3 ~ g4!2 a4", I: "gb4 gb4@4 d4!2 gb4", J: "g4 a4@4 f4 g4 bb4", K: "g4 g4@4 f4 g4 bb4",
  L: "g4 g4@4 bb4!2 g4", M: "bb4 bb4@2 bb4@2 g4 f4 g4", N: "bb4 bb4@2 bb4@2 g4!2 a4", O: "g4 g4@4 ~@3",
  P: "[bb3,g4] ~@2 [bb3,g4] ~@2 [bb3,g4] ~", Q: "[g3,g4] ~@2 [g3,g4] ~@2 [g3,g4] ~", R: "d4 ~@2 d4 ~@2 d4 ~",
  S: "~@5 g4!2 bb4", T: "bb4 bb4@4 bb4 a4 bb4", U: "g4 g4@4 bb4!3", V: "bb4@2 g4@2 f4@2 g4@2 f4@2 g4@2 f4@2 bb4 ~",
  W: "bb4 ~ bb4@3 ~@3 g4@2 g4@2 g4@2 bb4@2", X: "bb4 c5 d5@3 g4!2 bb4", Y: "bb4 c5 d5 g5 ~ g5!2 bb5",
  Z: "bb5 a5!2 g5 g5@2 d5 c5", AA: "c5 bb4 g4@2 ~ g4!2 d4", AB: "gb4 a4@4 d4!2 gb4", AC: "g4 g4@4 f4 g4 d5",
  AD: "c5 bb4 g4 f4@2 g4@4 ~@7", AE: "[~@6 g4@4 bb4@4 g4@4 f4 e4 c4@12]/2", AF: "c4 d4@2 d4@4 d4", AG: "c4 bb3@3",
  AH: "c4@2 bb3@4 ~ bb3", AI: "a3@2 a3 g3@2 g3 a3@2", AJ: "[a3 bb3@2 bb3 c4@2 c4 d4@2 d4 e4@2 e4!2 g4@6 ~ bb4!2 g4]/3",
  AK: "g4!3 bb4@2 ~@3", AL: "[c4,g4] ~@2 [c4,g4] ~@2 [c4,g4] ~", AM: "a3 ~@2 a3 ~@2 a3 ~",
})).s("gm_violin").gain(0.3)

// chords · viola
const viola = note(`<
  ~@16 A@4 B@2 A@2 C@2 A D E@4 F@2 E@2 G@2 E ~ A@4 B@2 A@2 C@2 A ~ E@4 F@2 E@2 G@2 E ~ H I J K H I J K L M N O P@3 Q E@4
  R@2 E@2 G@2 E@6 F@2 E@2 S@2 E@2 ~@2
>`.pickRestart({
  A: "bb3 ~@2 bb3 ~@2 bb3 ~", B: "c4 ~@2 c4 ~@2 c4 ~", C: "gb3 ~@2 gb3 ~@2 gb3 ~", D: "bb3 ~@2 bb3 ~@4",
  E: "[g3,d4] ~@2 [g3,d4] ~@2 [g3,d4] ~", F: "[bb3,c4] ~@2 [bb3,c4] ~@2 [bb3,c4] ~",
  G: "[gb3,a3] ~@2 [gb3,a3] ~@2 [gb3,a3] ~", H: "bb3!4", I: "[f3,c4]!4", J: "[e3,bb3]!4", K: "[eb3,bb3]!4", L: "gb3!4",
  M: "gb3!8", N: "gb3!5 [gb3,d4] [gb3,a3,d4]!2", O: "[g3,d4]@2 ~ [g3,d4]@2 ~ [g3,d4]@2", P: "bb3@2 ~ bb3@2 ~ bb3@2",
  Q: "[g3,d4]@5 ~@3", R: "[g3,bb3] ~@2 [g3,bb3] ~@2 [g3,bb3] ~", S: "[gb3,d4] ~@2 [gb3,d4] ~@2 [gb3,d4] ~",
})).s("gm_viola").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  A@2 B A@5 C D A@2 E@2 B F A@4 C D A@2 E@2 B F A@4 C D A@2 E@2 A G A@4 C D A@2 E@2 A H A@4 C D A@2 E@2 A ~ I J K L I J
  K L M E@2 N@4 H A@4 C D A@2 E@2 A@6 C D A@2 E@2 A@2 ~@2
>`.pickRestart({
  A: "g2!8", B: "g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2 f2", C: "c3!8", D: "c3!4 bb2!4", E: "d2!8", F: "g2!5 ~@3",
  G: "g2!4 ~@4", H: "g2@5 ~@3", I: "g2", J: "f2", K: "e2", L: "eb2", M: "d2", N: "g2/4",
})).s("gm_cello").gain(0.3)

stack(violin, viola, cello)