Strudelify
KeyG minorTempo120 bpm
0:00/0:00
// havana — Camila Cabello
// 120 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6159697; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 67 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 · [...]/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 · clarinet · "Clarinete en Si♭"
const clarinet = note(`<
  A B A B A B A B A B A B C ~ C ~ D@2 C ~@2 E F G ~ E H I J@4 K L ~@4 M@10 N O P@2 Q@2 R S T U V@4 W X Y Z AA
>`.pickRestart({
  A: "~@2 g4!2 ~@2 eb4 ~", B: "~@2 gb4@3 ~@3", C: "g5!2 ~ g5 d5!2 ~ d5 eb5@2 d5@2 c5@2 d5@2",
  D: "[g5!2 ~ g5 g5@2 a5@2 bb5@2 a5@2 g5@2 a5@4 ~@14]/2", E: "~@3 f5!5", F: "g5 d5 ~ d5 c5 d5 c5 bb4",
  G: "d5@2 a4@2 ~@6 g5!5 ~", H: "g5@2 d5@2 ~@2 g5@2 d5@3 d5 bb5@2 a5@2", I: "~ g5!6 ~",
  J: "[~@2 g4@2 bb4@2 bb4 a4@7 eb5 d5]/2", K: "~@2 g4@2 bb4@2 bb4 a4", L: "~@2 a4 bb4 c5@2 a4 bb4 c5@2 ~@2 eb5@2 d5@2",
  M: "[~@2 d5@2 ~ eb5 ~ d5@9]/2", N: "f4 g4@2 f4 g4 d5@2 ~", O: "g4 bb4 ~@2 bb4 d5 ~@2 d5 eb5 ~@2 g5 a5 bb5 c6",
  P: "[d6@14 ~ g5]/2", Q: "[a5 d5@5 ~ g5]/2", R: "a5@3 g5 d5@12", S: "~@4 d5@2 c5 d5 eb5 d5 c5 bb4 a4@4", T: "~@7 a5",
  U: "bb5 a5@7", V: "[~@2 g4@2 d5@2 bb4 a4@7 eb5 d5]/2", W: "~@2 g4@2 d5@2 bb4 a4", X: "a4@6 ~ d5",
  Y: "c6@6 a5 g5 a5@2 d5@4 c5 bb4", Z: "a4@3 bb4 a4 bb4 a4 bb4", AA: "g4 ~",
})).s("gm_clarinet").gain(0.3)

// other · cello · "Violonchelo"
const cello = note(`<
  A B A B A B A B A B A B A B A B A C A B A B A B A B A D A B A B A B E F E F E F E F E F E F E F E F E F E F E F E F A
  B A B A B A C G
>`.pickRestart({
  A: "g2@2 d3@2 eb3!2 ~ d3", B: "~ a2 d3@3 ~ eb3 d3", C: "~ a2 d3@3 ~@3", D: "~ g3!6 ~",
  E: "g2@6 g2@2 bb2 ~ g2@2 ~@2 gb2@2", F: "~@2 gb2@2 a2@2 a2@2 ~@2 c3@2 d3 c3 bb2 a2", G: "g2 ~",
})).s("gm_cello").gain(0.3)

stack(clarinet, cello)