Strudelify

Camila Cabello Habana

Camila Cabello Trans: Joaquín Salas

KeyF majorTempo105 bpm
0:00/0:00
// Camila Cabello Habana — Camila Cabello Trans: Joaquín Salas
// 105 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5523563; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 C B C D C B C E F@4 G@2 H@2 I B C B A B A J K@2 F@2 K@2 L@2 M N M N O@4 P@2 F@2 A B Q J K@2 F@2 R S F@2 K@2
  F@4 R B Q B K@2 F@2 K@2 F@2 R S Q J K@2 F@2 K@2 Q T ~
>`.pickRestart({
  A: "~@3 g3 ab2!2 [ab3,c4,eb4] g2, c3@3 ~@5, ~ [c4,eb4,g4] ~@2", B: "~ d3 f3@3 d3 [f3,ab4] [d3,g4], ~ [b3,d4,f4]@2 b3",
  C: "~@3 g3 ab2!2 [c4,eb4,g4] g2, c3@3 ~@5, ~ [c4,eb4,g4] ~@2", D: "~ d3 f3@3 d3 [f3,ab4] [d3,f4], ~ [b3,d4,f4]@2 b3",
  E: "~@3 ab2 g2 ab2 g2 b2",
  F: "[~@3 eb3 ~@2 [c4,eb4,g4] g2@3 [b3,d4,f4]@4 [g2,ab4] [g2,g4], c3@3 ~ ab2@3 ~@9, ~ [c4,eb4,g4] ~@5 b3]/2", // Cm Bdim Abmaj7 G Cm
  G: "[~@3 eb3 ~@3 g2@3 [b3,d4,f4]@4 [g2,ab4] [g2,g4], c3@3 ~ ab2@3 ~@9, ~ [c4,eb4,g4] ~ [ab3,c4,eb4] ~@3 b3]/2", // Bdim Abmaj7 G Cm Ab
  H: "[~@3 eb3 ~@3 g2@3 [b3,d4,f4]@4 [g2,ab4] [g2,g4], c3@3 ~ ab2@3 ~@9, ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~@3 b3]/2", // Bdim Abmaj7 G Cm
  I: "~@3 g3 ab2!2 ~ g2, c3@3 ~@5, ~ [c4,eb4,g4] ~ [ab3,c4,eb4]", J: "~@6 g2 b2",
  K: "[~@3 eb3 ~@2 [ab3,c4,eb4] g2@3 [b3,d4,f4]@4 [g2,ab4] [g2,g4], c3@3 ~ ab2@3 ~@9, ~ [c4,eb4,g4] ~@5 b3]/2", // Ab Bdim Abmaj7 G Cm
  L: "[~@3 eb3 ~@2 [c4,eb4,g4] g2@3 ~@4 g2!2, c3@3 ~ ab2@3 ~@9, ~ [c4,eb4,g4] ~@6]/2", M: "c4!2 eb4!2 ~ c4 ~ b3",
  N: "~ b3 d4!2 ~ d4 ab4 g4",
  O: "[c4!2 eb4 [eb3,eb4] ~ c4 ~ b3 ~ b3 d4!2 ~ d4 [g2,ab4] [g2,g4], c3@3 ~ ab2@3 g2@3 ~@6]/2", // Eb Abmaj7 G
  P: "[~@2 ab2 c3 ~@2 [c4,eb4,g4] g2@3 [b3,d4,f4]@4 [g2,ab4] [g2,g4], ~@2 [c4,eb4,g4]@2 ab2@3 ~@7 b3@2]/2", // Cm Bdim Abmaj7 G Cm
  Q: "~@3 eb3 ~@2 [c4,eb4,g4] g2, c3@3 ~ ab2@3 ~, ~ [c4,eb4,g4] ~@2", // Cm
  R: "~@3 eb3 ~@2 [ab3,c4,eb4] g2, c3@3 ~ ab2@3 ~, ~ [c4,eb4,g4] ~@2", S: "g2@2 [b3,d4,f4]@4 [g2,ab4] [g2,g4], ~@3 b3",
  T: "g2 ~",
})).s("gm_piano").gain(0.45)

stack(piano)