Strudelify

piel canela

Bobby Cappo

KeyE♭ majorTempo120 bpm
0:00/0:00
// piel canela — Bobby Cappo
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/204226; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 47 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 · "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 · "Horn"
const french_horn = note(`<
  ~ A B A C D E D F G H I J D E D F G H I K L M N O L M P Q R S ~ T L M N O L M U V ~@2 W X Y@2
>`.pickRestart({
  A: "~@2 g4@4 g4 ~@3 g4@2 ~@2 g4@2", B: "~@2 f4@4 f4 ~@3 f4@2 ~@2 f4@2", C: "g4 ~ eb4@2 db4 ~@3",
  D: "db4@2 c4@2 bb3@3 ~", E: "~@2 db3 d3 eb4@2 ~@2", F: "~@2 g3 ab3 bb3 ab3 g3 ab3 eb4@4 ~@4", G: "c4@2 db4@2 d4@3 ~",
  H: "~@2 f3 g3 ab3 ~ ab3 g3 f3@4 ~@4", I: "f3@2 g3@2 ab3@3 ~", J: "~@2 eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~@5", K: "db4 ~@7",
  L: "~@2 db4 ~ db4 ~@5 db4 ~ db4 ~@3", M: "~@2 db4 [db4,eb4]!3 eb4 ~@9", N: "~@2 c4 ~ c4 ~@5 c4 ~ c4 ~@3",
  O: "~@2 c4 [c4,db4]!3 db4 ~@9", P: "~@4 ab3@2 bb3@2 c4@3 bb3@2 ab3@3", Q: "eb4 c4 b3 bb3", R: "a3@2 ~ a3", S: "c4 ~",
  T: "e4 ~@7", U: "~@8 f4 g4 ~ ab4 f4 g4 ~ ab4", V: "bb4 ~@15", W: "~@4 ab3 bb3 ~ c4 ab3 bb3 ~ c4 ab3 bb3 ~ c4",
  X: "e3@4 e4@8 e4!2 ~ e4", Y: "[eb4@5 ~@3]/2",
})).s("gm_french_horn").gain(0.3)

// other · tuba · "Euphonium"
const tuba = note(`<
  A B C D E F G F H I J K L F G F H I J K M N@2 O@2 P@2 Q R S T ~ M N@2 O@2 P@2 U V ~ W X Y Z@2
>`.pickRestart({
  A: "~@6 ab3 a3", B: "bb3@2 db4@4 ab3 a3 bb3@2 db4@2 c4@2 eb4@2", C: "bb3@2 ab3@4 g3 ab3 c4@2 bb3@4 ab3@2",
  D: "g3@2 f3@4 ~@2 e3 f3 ~ g3 ab3 bb3 ~ c4", E: "bb3 ~ c4@2 db4 ~ eb3 e3", F: "f3!4 c4!4", G: "bb3 ab3@4 ~ eb3 e3",
  H: "eb4@4 ~@2 db4 c4", I: "db4 c4!2 bb3!2 ab3!2 g3", J: "g3 f3@4 ~ c4 bb3", K: "c4 bb3!2 ab3!2 f3 g3 ab3",
  L: "bb3 ~@5 eb3 e3", M: "bb3 ~@7", N: "[bb3@2 db4 ab3@2 db4@2 g3@2 db4 ~ c3 db3 eb3 f3 g3]/2",
  O: "[ab3@2 c4 g3@2 c4@2 f3@2 c4 ~@3 g3 ab3 a3]/2",
  P: "[bb3@2 db4 ab3@2 db4@2 ~ f3 db4 ~ c3 db3 eb3 f3 g3, ~@7 g3@2 ~@7]/2", Q: "ab3@3 ~", R: "~ ab3 g3 gb3",
  S: "f3@2 ~ f3", T: "a3 ~", U: "f3@8 db4 eb4 ~ f4 db4 eb4 ~ f4", V: "g4 ~@11 eb3@2 e3@2",
  W: "f3 db4 ~ c3 db3 eb3 f3 g3", X: "~@4 ab3 bb3 ~ c4 ab3 bb3 ~ c4 ab3 bb3 ~ c4", Y: "db3@4 db4@8 db4!2 ~ db4",
  Z: "[c4@5 ~@3]/2",
})).s("gm_tuba").gain(0.3)

// bass · tuba · "Bb Tuba"
const bass = note(`<
  ~ A B C D E F E G H I J K E F E G H I J L M E N O M P N Q R@2 S T M E N O M P U V ~@2 W X Y Z
>`.pickRestart({
  A: "bb2@2 ~@2 eb2 ~ eb2 ~", B: "ab2@2 ~@2 f2 ~ f2 ~", C: "bb2@2 ~@2 bb2 ~ bb2 ~", D: "eb2 ~ eb2@2 f2 ~@3",
  E: "bb2 ~ eb2!2", F: "ab2 ~ f2!2", G: "ab2 ~ ab2 db2", H: "c2 ~ c2!2", I: "f2 ~ f2!2", J: "bb2 ~ bb2!2", K: "eb2 ~@3",
  L: "eb2 ~@7", M: "bb2@2 ~@4 f2!2", N: "ab2@2 ~@4 eb2!2", O: "ab2 ~ ab2 a2", P: "bb2@2 ~@4 eb2!2", Q: "ab2!2 g2 gb2",
  R: "f2 ~ c2!2", S: "bb1@2 ~ bb1@2 c2 db2 eb2", T: "e2 ~@7", U: "ab2 ~ db2 d2", V: "eb2 eb3 ~@2", W: "ab2 ~ ab2!2",
  X: "db2 ~ db2!2", Y: "ab2!2 eb2 c2", Z: "ab1 ~@3",
})).s("gm_tuba").gain(0.3)

stack(french_horn, tuba, bass)