Strudelify

cant be love

Laura Izibor

KeyF majorTempo90 bpm
0:00/0:00
// cant be love — Laura Izibor
// 90 bpm, 12/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/8 at bar 1, 12/8 at bar 2, 6/8 at bar 19, 12/8 at bar 19, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/24956; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/6)

// 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 B D E F E F G@4 H I J I J K@2 L@2 M E F E F G@4 H I J I J N@2 O@2 P ~@5 Q@2 R@6 S ~@4
>`.pickRestart({
  A: "~@9 a3!2 c4",
  B: "[f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 a3!2 a3@2 c4@2, d3@3 d3", // Dm
  C: "[f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [a2,g3,c4,e4]@6 a3!2 a3@2 [c3,c4]@2, g2@6 ~@3 a2@2 ~", // Bb Am7 C
  D: "[f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [a2,g3,c4,e4] ~@5 a3@2 c4@2 d4@2, g2 ~", // Bb Am7
  E: "[f3,a3,d4]!9 a3 c4 d4, d3@3 d3", F: "[f3,bb3,d4]!6 [a2,g3,c4,e4]@3 a3 c4 [c3,d4], g2@6 ~@3 a2@2 ~",
  G: "[d4,f4,a4]!3 [c4,e4,g4]!3 [bb3,d4,f4]!5 [a2,c4,e4,g4], bb2@3 a2@3 g2@5 ~", // Dm C Bb Am7
  H: "[d4,f4,a4]!3 [c4,e4,g4]!3 [bb3,d4,f4]!3 [c4,e4,g4]!3, [bb1,bb2] [a1,a2] [g1,g2] [a1,a2]", // Dm C Bb C Bb A G A
  I: "[a3,d4,f4]!12, [d2,d3]@3 [d2,d3]", J: "[bb3,d4,f4]!6 [g3,c4,e4]!6, [bb1,bb2] [c2,c3]",
  K: "[[g3,c4,e4]!3 ~@3 [f3,a3,d4]!6 [f3,a3,d4]!3 a3 c4 d4 [f3,bb3,d4]!6, [c2,c3] ~ d3@3 d3 g2@2]/2", // C Dm Bb C
  L: "[[a2,g3,c4,e4]@3 a3 c4 [c3,d4] [f3,a3,d4]!6 [f3,a3,d4]!3 a3 c4 d4 [f3,bb3,d4]!6, ~@3 a2@2 ~ d3@9 d3@3 g2@6]/2", // Am7 Csus2 Dm Bb
  M: "[g3,c4,e4]!6 [a2,g3,c4,e4]@3 a3 c4 d4, a2@2 ~ a2", // C Am7
  N: "[[g3,c4,e4]!6 [f3,a3,d4]!6 [f3,a3,d4]!6 [f3,bb3,d4]!6, [c2,c3]!2 d3@3 d3 bb2@2]/2", // C Dm Bb C
  O: "[[g3,c4,e4]!6 [a3,d4,f4]!6 [a3,d4,f4]!3 a3 c4 d4 [f3,bb3,d4]!6, c3@2 d3@3 d3 g2@2]/2", P: "[a2,g3,c4,e4] ~",
  Q: "[~@3 [c4,g4]!3 [a3,d4,f4]!6 [a3,d4,f4]!6 [bb3,d4,f4]!6, ~ a3 [d2,d3]@3 [d2,d3] [bb1,bb2]@2]/2", // C5 Dm Bb D Bb
  R: "[[g3,c4,e4]!6 [a3,d4,f4]!6 [a3,d4,f4]!6 [bb3,d4,f4]!6, [c2,c3]@2 [d2,d3]@3 [d2,d3] [bb1,bb2]@2]/2", // C Dm Bb C D Bb
  S: "[c2,c3,g3,c4,e4] ~", // C
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@40 A B C B C D E ~@12>".pickRestart({
  A: "~@6 [d4,a4]!6, ~ bb3", B: "[c4,g4]!6 [bb3,f4]!6, a3 g3", C: "[bb3,f4]!5 [a3,c4,g4] [d4,a4]!6, g3@5 ~ bb3@6",
  D: "[c4,g4]!6 [d4,a4]!3 [c4,g4]!3, a3@2 bb3 a3", E: "[bb3,f4]!3 ~@9, g3 ~@3",
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)