Strudelify

como la flor

Selena

KeyB♭ majorTempo80 bpm
0:00/0:00
// como la flor — Selena
// 80 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 32, 4/4 at bar 32) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/6055189; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 37 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// other · french horn · "B♭ Trumpet"
const french_horn = note("<A ~@6 B C D E F G H@2 I J K L ~@5 M N O P Q@8 ~>".pickRestart({
  A: "~@8 [g3,g5]@7 [f3,f5]@7 [a3,a5]@3 ~@7", B: "~ bb2 f3@5 d3", C: "g3 g3@5 bb3@2", D: "bb3 a3@6 bb2",
  E: "f3@3 d3 eb3 d3 eb3 g3", F: "f3@2 g3 f3@13", G: "~ bb3 eb4@2", H: "f4/2", I: "g4@3 [d4,g4]",
  J: "bb4 bb4@4 [bb2,eb4] [eb3,g4] [g3,bb4], bb3@5 ~@3", K: "f3@2 g3 f3@9 [c4,c5]@4, c5@3 ~",
  L: "[eb4,eb5]@2 [d4,d5] [d4,a4]", M: "[g3,eb5] [f3,bb4]", N: "~ [a3,c5]@31", O: "~@9 [bb3,bb4]@7",
  P: "~@2 [d4,d5]@16 ~@9 [bb3,bb4]@5", // D Bb
  Q: "[~@3 [bb3,bb4]@16 ~ [c4,c5]@16 eb5@8 bb4@8 ~ [f4,c5]@16 [c4,f5]@33 ~@16 [bb3,f5]@131 ~@7, ~@9 eb4@4 ~@51]/8", // Bb C F5 Bb5
})).s("gm_french_horn").gain(0.3)

// other · french horn · "B♭ Trumpet" · soft notes
const french_horn_soft = note("<~@2 A B C D E ~@12 F ~@17>".pickRestart({
  A: "~ f3 bb3@5 bb3", B: "eb4 eb4@7", C: "f4@2 f4!2 f4@2 eb4!2 eb4@2 d4@4 f3@2", D: "bb3!2", E: "a3", F: "[c4,a4]",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn in F"
const french_horn_2 = note("<A@2 ~@10 B C D E F G H ~@5 I J K L@3 M@6 ~>".pickRestart({
  A: "[~@8 g4@7 f4@7 a4@42]/2", B: "~@24 eb4@3 g4@2 bb4@3", C: "bb4 a4@6 a4", D: "g4@6 f4@2 f4@16 d4@3 f4@2 a4@3",
  E: "a4@4 bb4 a4 ~ g4@25", F: "bb4", G: "a4@3 a4", H: "bb4@2 bb4 ~", I: "g4 f4", J: "~ a4@16 c5@5 ~ d5@5 eb5@4",
  K: "~ eb5@4 d5@11", L: "[~@2 d5@16 ~@9 d4@8 g4@8 f4@8 ~ a4@16 bb4@16 ~ a4@8 c5@2 d5]/3",
  M: "[~@2 eb5@3 eb5@8 d5@8 c5@74 f4@8 c5@5 ~ d5@5 c5@5 ~ d5@66 ~@6]/6",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft_2 = note("<~@2 A@2 B C B ~@11 D E ~@17>".pickRestart({
  A: "bb4/2", B: "c5", C: "bb4", D: "~@3 a4", E: "g4 f4 a4@2",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn in F"
const french_horn_3 = note("<A ~@11 B C D E F G H ~@5 I J K L@3 M@6 ~>".pickRestart({
  A: "~@8 g4@7 f4@7 a4@3 ~@7", B: "~@24 eb4@3 g4@2 bb4@3", C: "bb4 a4@6 a4", D: "g4@6 f4@2 f4@16 d4@3 f4@2 a4@3",
  E: "a4@4 bb4 a4 ~ g4@25", F: "g4", G: "f4@3 f4", H: "f4@2 f4!2", I: "g4 f4", J: "~ a4@16 c5@5 ~ d5@5 eb5@4",
  K: "~ eb5@4 d5@11", L: "[~@2 d5@16 ~@9 d4@8 g4@8 f4@8 ~ a4@16 bb4@16 ~ a4@8 c5@2 d5]/3",
  M: "[~@2 eb5@3 eb5@8 d5@8 c5@74 f4@8 c5@5 ~ d5@5 c5@5 ~ bb4@66 ~@6]/6",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft_3 = note("<~@2 A B C D C ~@12 E ~@17>".pickRestart({
  A: "[d4,f4]", B: "[eb4,g4]", C: "[f4,a4]", D: "[d4,f4] [eb4,g4]", E: "g4 f4 a4@2",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Baritone Horn"
const french_horn_4 = note("<A ~@14 B C D E ~@5 F G H I J@8 ~>".pickRestart({
  A: "~@8 g3@7 f3@7 a3@3 ~@7", B: "~@3 d3", C: "eb3 eb3@4 bb2 eb3 g3", D: "f3@2 g3 f3@9 f3@4", E: "f3@2 f3!2", F: "eb3",
  G: "~ f3@31", H: "~@9 f3@7", I: "~@2 g3@16 ~@9 g3@5", J: "[~@3 eb3@16 ~ f3@16 eb3@16 ~ f3@49 ~@16 f3@131 ~@7]/8",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Baritone Horn" · soft notes
const french_horn_soft_4 = note("<~@7 A B C D E ~@7 C ~@17>".pickRestart({
  A: "d3", B: "eb3", C: "f3", D: "d3 bb2", E: "c3",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Baritone Horn"
const french_horn_5 = note("<A ~@15 B C D ~@5 E F G H I@8 ~>".pickRestart({
  A: "~@8 g2@7 f2@7 a2@3 ~@7", B: "bb2", C: "c3@3 d3", D: "bb2@2 bb2 ~", E: "eb3 bb2", F: "~ c3@31", G: "~@9 bb2@7",
  H: "~@2 d3@16 ~@9 d3@5", I: "[~@3 bb2@16 ~ c3@16 eb3@8 bb2@8 ~ c3@49 ~@16 d3@66 bb2@66 ~@6]/8",
})).s("gm_french_horn").gain(0.45)

// other · french horn · "Baritone Horn" · soft notes
const french_horn_soft_5 = note("<~@7 A@2 B C D ~ B E F ~@2 G B ~@17>".pickRestart({
  A: "bb2/2", B: "c3", C: "bb2 g2", D: "f2", E: "bb2 a2", F: "g2", G: "~@3 a2",
})).s("gm_french_horn").gain(0.2)

// bass · tuba
const bass = note("<A ~@16 B C ~@5 D E F G@2 H@7 ~>".pickRestart({
  A: "~@8 g1@7 f1@7 a1@3 ~@7", B: "~@3 f2", C: "f2 ~", D: "bb1", E: "~ c2@31", F: "~@9 bb1@7",
  G: "[~@2 g1@16 ~@9 d2@8 eb2@16 ~ f2@10 eb2@2]/2",
  H: "[d2@2 c2@2 bb1@16 ~ c2@16 f1@33 ~@82 bb0@66 ~@6, ~@86 bb1@131 ~@7]/7",
})).s("gm_tuba").gain(0.45)

// bass · tuba · soft notes
const bass_soft = note("<~@13 A B C D E F A ~@17>".pickRestart({
  A: "f2", B: "bb1 d2", C: "g2", D: "eb2", E: "f2@3 ~", F: "~@2 f2!2",
})).s("gm_tuba").gain(0.2)

// other · glockenspiel · G F A C D Eb D F …
const glockenspiel = note(`<
  ~@20
  [[g6,g7]@4 [f6,f7]@4 [a6,a7]@4 [c6,c7]@2 [d6,d7] [eb6,eb7]]
  [[eb6,eb7]@4 [d6,d7]@6 f7@2 f7@2 f7@2 c8 d8 c8@2 bb7@2 bb7@2 [f6,f7]@8]
  [[g6,g7] [f6,f7] [a6,a7] [bb6,bb7]]
  [[c7,c8] ~@3]
  ~@13
>`).s("gm_glockenspiel").gain(0.3)

// chords · vibraphone · Eb F Eb D F Bb D Eb …
const vibraphone = note(`<
  ~@20
  [[g4,bb4,eb5] f5 [f4,c5,f5,a5]@2, g5, ~ [g4,bb4,eb5]@3]
  [~@3 [d4,d5] ~@2 [f4,f5]@2, [bb4,bb5], f5@3 ~, d5@3 ~ [d4,d5]@4, ~ [eb4,eb5]@3]
  [[g4,bb4,eb5] f5 ~ [bb4,d5,g5,bb5], g5@3 ~, ~ [g4,eb5]@3, ~ bb4@2 ~, ~ [f4,c5,f5,a5]]
  [[c5,f5,a5,f6]]
  ~@13
>`).s("gm_vibraphone").gain(0.3)

// chords · vibraphone · Eb F Eb D F Bb D Eb …
const vibraphone_2 = note(`<
  ~@20
  [[g3,bb3,eb4] f4 [f3,c4,f4,a4]@2, g4, ~ [g3,bb3,eb4]@3]
  [~@3 [d4,d5] ~@2 [f4,f5]@2, [bb3,bb4], f4@3 ~, d4@3 ~ [d4,d5]@4, ~ [eb4,eb5]@3]
  [[g3,bb3,eb4] f4 ~ [bb3,d4,g4,bb4], g4@3 ~, ~ [g3,eb4]@3, ~ bb3@2 ~, ~ [f3,c4,f4,a4]]
  [[c4,f4,a4,c5]]
  ~@13
>`).s("gm_vibraphone").gain(0.3)

// drums · crash
const crash = s("cr").struct("<A ~@17 B ~@4 C B ~ D E F G ~ H ~ I ~ J ~>".pickRestart({
  A: "~@8 x ~@6 x ~@6 x ~@9", B: "x", C: "~@17 x!15", D: "~@9 x ~@6", E: "~ x ~@14", F: "~@3 x ~@28", G: "~ x ~@6",
  H: "~@11 x ~@4", I: "~@3 x", J: "~@25 x ~@6",
})).gain(0.35)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@23 [~@8 x!9 ~@15] ~@13>").gain(0.15)

stack(
  french_horn, french_horn_soft, french_horn_2, french_horn_soft_2, french_horn_3, french_horn_soft_3, french_horn_4,
  french_horn_soft_4, french_horn_5, french_horn_soft_5, bass, bass_soft, glockenspiel, vibraphone, vibraphone_2, crash,
  crash_soft
)

More by Selena