Strudelify
KeyF majorTempo85 bpm
0:00/0:00
// Orobroy cordes — David Pena Dorantesarr: Yardani Torres Maiani
// 85 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (6/8 at bar 1, 3/8 at bar 31, 6/8 at bar 33, 3/8 at bar 57, ...) are rendered on a constant 6/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5948212; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/3)

// 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 · violin
const violin = note(`<
  ~@4 A@3 B ~@8 C@2 D E C F D G C@2 D E C F D G H ~@9 I@2 J K I L M@2 I@2 J K I L N O I@2 J K I L N P Q R@2 S T R@2 S U
  V@3 W R@2 X@2 Y Z AA AB ~ I@2 J K I L N O I@2 J K I L N P AC@2
>`.pickRestart({
  A: "e4", B: "e4@5 ~", C: "~ f4", D: "~ e4", E: "~ g4", F: "~@3 f4@2 ~", G: "~ a4 bb4 db5 d5 e5 f5 a5 f5 g5 e5 f5",
  H: "d5 g5 e5 f5 d5 e5 db5@6", I: "f4 ~", J: "e4 ~", K: "g4 ~", L: "f4 ~@2", M: "[e4@3 ~]/2",
  N: "e4@12 ~@2 a4 ~ bb4 ~ db5 ~ d5 ~ e5 ~", O: "f5 ~ a5 ~ f5 ~ g5 ~ e5 ~ f5 ~@13",
  P: "f5 ~ a5 ~ f5 ~ g5 ~ e5 ~ f5 ~ d5 ~ g5 ~ e5 ~ f5 ~ d5 ~ e5 ~", Q: "db5", R: "~@4 d4 ~ e4 ~ f4@3 ~@13",
  S: "~@4 d4 ~ e4 ~ f4@3 ~@5 f4 ~ g4 ~ a4 ~ f4 ~", T: "~@2 d4@3 e4@3 f4@3 e4", U: "~@2 d4@3 e4@3 f4@3 gb4",
  V: "~@4 g4 ~ a4 ~ bb4@3 ~@13", W: "~@2 g4@3 a4@3 bb4@3 a4",
  X: "bb4@2 a4@2 a4 ~ a4@2 a4 ~ a4@2 a4 ~ a4@2 a4 ~ a4@2 a4 ~ a4@2",
  Y: "db5@2 bb4@2 bb4 ~ bb4@2 bb4 ~ bb4@2 bb4 ~ bb4@2 bb4 ~ bb4@2 bb4 ~ bb4@2",
  Z: "db5@2 bb4@2 bb4 ~ bb4@2 bb4 ~ bb4@2 a4@8 ~@4", AA: "~@2 a4@2 bb4 ~ db5 ~ d5 ~ e5 ~ f5 ~ a5 ~ f5 ~ g5 ~ e5 ~ f5 ~",
  AB: "d5 ~@23", AC: "[db5 bb4 a4 g4 f4 e4 f4@10 ~@8]/2",
})).s("gm_violin").gain(0.4)

// other · violin · soft notes
const violin_soft = note("<A@2 B@2 ~@30 C@2 D E C F G@2 ~@44 H@2 ~@18>".pickRestart({
  A: "d4", B: "e4", C: "f4 ~", D: "e4 ~", E: "g4 ~", F: "f4 ~@2", G: "[e4@3 e4@5 ~@4]/2",
  H: "[~ g5 e5 f5 d5 e5 db5@10 ~@8]/2",
})).s("gm_violin").gain(0.25)

// other · pizzicato strings
const pizzicato_strings = note("<~@8 A@2 B C A D B E ~@90>".pickRestart({
  A: "~ f4", B: "~ e4", C: "~ g4", D: "~@3 f4@2 ~", E: "~@3 e4@2 ~",
})).s("gm_pizzicato_strings").gain(0.2)

// other · viola
const viola = note(`<
  ~@4 A@2 B C ~@8 D@3 E D F G H D@3 E D F G H I ~@9 J@3 K J L M@2 J@3 K J L N O J@3 K J L N P B Q@3 R Q@3 S T@3 U Q@2
  V@2 W X Y Z ~ J@3 K J L N O J@3 K J L N P AA@2
>`.pickRestart({
  A: "d4", B: "db4", C: "db4@5 ~", D: "~ d4", E: "~ e4", F: "~@3 d4@2 ~", G: "~ bb3",
  H: "~ a3 bb3 db4 d4 e4 f4 a4 f4 g4 e4 f4", I: "d4 g4 e4 f4 d4 e4 db4@6", J: "d4 ~", K: "e4 ~", L: "d4 ~@2",
  M: "[bb3@3 ~]/2", N: "bb3@12 ~@2 a3 ~ bb3 ~ db4 ~ d4 ~ e4 ~", O: "f4 ~ a4 ~ f4 ~ g4 ~ e4 ~ f4 ~@13",
  P: "f4 ~ a4 ~ f4 ~ g4 ~ e4 ~ f4 ~ d4 ~ g4 ~ e4 ~ f4 ~ d4 ~ e4 ~", Q: "~@10 f3 ~ g3 ~ a3 ~@9",
  R: "~@2 d3 ~ d3 ~@3 e3 ~ e3 ~@3 f3 ~ f3 ~@3 e3 ~ e3 ~", S: "~@2 d3 ~ d3 ~@3 e3 ~ e3 ~@3 f3 ~ f3 ~@3 gb3 ~ gb3 ~",
  T: "~@10 bb3 ~ c4 ~ d4 ~@9", U: "~@2 g3 ~ g3 ~@3 a3 ~ a3 ~@3 bb3 ~ bb3 ~@3 a3 ~ a3 ~",
  V: "~@2 bb4 ~ ab4 ~ g4 ~ f4 ~ e4 ~", W: "~@2 db5 ~ a4 ~ ab4 ~ g4 ~ f4 ~", X: "e4 ~ f4 ~ d4 ~ db4@4 ~@2",
  Y: "~@2 a3@2 bb3 ~ db4 ~ d4 ~ e4 ~ f4 ~ a4 ~ f4 ~ g4 ~ e4 ~ f4 ~", Z: "d4 ~@23",
  AA: "[db4 bb3 a3 g3 f3 e4 d4@10 ~@8]/2",
})).s("gm_viola").gain(0.4)

// other · viola · soft notes
const viola_soft = note("<A@2 B@2 ~@30 C@3 D C E F@2 ~@44 G@2 ~@18>".pickRestart({
  A: "bb3", B: "c4", C: "d4 ~", D: "e4 ~", E: "d4 ~@2", F: "[bb3@3 bb3@5 ~@4]/2", G: "[~ g4 e4 f4 d4 e4 db4@10 ~@8]/2",
})).s("gm_viola").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@8 [~ d4]!3 [~ e4] [~ d4] [~@3 d4@2 ~] [~ bb3] [~@3 bb3@2 ~] ~@90>")
  .s("gm_pizzicato_strings").gain(0.2)

// other · cello
const cello = note(`<
  A@4 B@2 C D ~@8 E@2 F G H I J K E@2 F G H I J K L M N O P Q R S T U N O P Q R S T V N O P Q R S W X N O P Q R S W Y Z
  AA@3 AB AA@3 AC AD@3 AE AA@2 AF@2 AG AH AI AJ@2 N O P Q R S W X N O P Q R S W Y AK@2
>`.pickRestart({
  A: "ab3", B: "bb3", C: "a3", D: "a3@5 ~", E: "d3 bb3", F: "g2 bb3", G: "c3 c4", H: "bb2 bb3", I: "bb2 ab2", J: "a2 ~",
  K: "~ a2 bb2 db3 d3 e3 f3 a3 f3 g3 e3 f3", L: "d3 g3 e3 f3 d3 e3 db3@6", M: "~ d3", N: "bb3 d3", O: "bb3 g2",
  P: "bb3 c3", Q: "c4 bb2", R: "bb3 bb2", S: "ab2 a2", T: "a3 a2", U: "a3@2 ~ d3@3", V: "a3 d3",
  W: "~@14 a2 ~ bb2 ~ db3 ~ d3 ~ e3 ~", X: "f3 ~ a3 ~ f3 ~ g3 ~ e3 ~ f3 ~ d3@12",
  Y: "f3 ~ a3 ~ f3 ~ g3 ~ e3 ~ f3 ~ d3 ~ g3 ~ e3 ~ f3 ~ d3 ~ e3 ~", Z: "db3", AA: "d2 ~ d3 ~@17 a2@3 ~",
  AB: "d2 ~ d2 ~ d2 ~ e2 ~ e2 ~ e2 ~ f2 ~ f2 ~ f2 ~ e2 ~ e2 ~ e2 ~",
  AC: "d2 ~ d2 ~ d2 ~ e2 ~ e2 ~ e2 ~ f2 ~ f2 ~ f2 ~ gb2 ~ gb2 ~ gb2 ~", AD: "g2 ~ g3 ~@17 d3@3 ~",
  AE: "g2 ~ g2 ~ g2 ~ a2 ~ a2 ~ a2 ~ bb2 ~ bb2 ~ bb2 ~ a2 ~ a2 ~ a2 ~", AF: "~@2 bb3 ~ ab3 ~ g3 ~ f3 ~ e3 ~",
  AG: "~@2 db4 ~ a3 ~ ab3 ~ g3 ~ f3 ~", AH: "e3 ~ f3 ~ d3 ~ db3@4 ~@2",
  AI: "~@2 a2@2 bb2 ~ db3 ~ d3 ~ e3 ~ f3 ~ a3 ~ f3 ~ g3 ~ e3 ~ f3 ~",
  AJ: "[d3 ~ g3@2 e3@2 f3@2 d3@2 e3@2 db3@20 ~@4 d3@12]/2", AK: "[db3@3 d3@5 ~@4]/2",
})).s("gm_cello").gain(0.4)

// other · pizzicato strings
const pizzicato_strings_3 = note("<~@8 A@2 B C D E F G ~@90>".pickRestart({
  A: "d3 ~", B: "g2 ~", C: "c3 ~", D: "bb2 ~", E: "~ ab2", F: "a2 a3", G: "a2@3 a3@2 ~",
})).s("gm_pizzicato_strings").gain(0.3)

// other · pizzicato strings · soft notes
const pizzicato_strings_soft = note("<~@8 [~ bb3]!3 [~ c4] [~ bb3] [bb2 ~] ~@92>").s("gm_pizzicato_strings").gain(0.2)

// bass · contrabass
const bass = note("<~@16 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E F@2 G@8 H@8 G@8 I@7 J@2 E ~@20 G@8 I@7 J@2 K ~>".pickRestart({
  A: "d3", B: "c3", C: "bb2", D: "a2/2", E: "a2", F: "[a2@3 a2]/2", G: "[~ d3@2 d3@2 c3@2 c3@2 bb2@2 bb2@2 a2@3]/8",
  H: "[~ d3@2 d3@2 c3@2 c3@2 bb2@2 bb2@2 a2@2 a2]/8", I: "[~ d3@2 d3@2 c3@2 c3@2 bb2@2 bb2@2 a2]/7", J: "[~ a2@3]/2",
  K: "a2 ~",
})).s("gm_contrabass").gain(0.3)

// bass · acoustic bass
const bass_2 = note("<~@105 [d2 ~@2]>").s("gm_acoustic_bass").gain(0.4)

stack(
  violin, violin_soft, pizzicato_strings, viola, viola_soft, pizzicato_strings_2, cello, pizzicato_strings_3,
  pizzicato_strings_soft, bass, bass_2
)