Strudelify
KeyB♭ majorTempo108 bpm
0:00/0:00
// Crying — Malmsteen Yngwie
// 108 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: Full arrangement: all 136 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(108/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel = note(`<
  A@3 B@2 C D@2 E@2 F G@2 H I@2 J K@3 L M N O P Q R S T@3 U V@4 W X@3 Y Z@3 AA AB@3 AC@3 AD AE AF AG AH@2 AI AJ AK AL
  AM@4 AN AO AP@5 AQ AR AS@3 AT AU@3 AV@3 AW AX AY AZ AW AX AY AZ AW AX AY AZ AW AX AY AZ AW AX AY AZ AW AX AY BA BB BC
  BD@4 BE BF BG BH@4 BI BJ BK BL@2 BM BN@3 BO@3 BP BQ ~
>`.pickRestart({
  A: "[~@26 g5@4 d5@4 g4@4 a5@4 d5@4 ~ g4@4 bb5@4 d5@4 c6@4 f5@4 ~ g4@4 bb5@4 f5@4 g4@4 a5@4 ~ f5@4 g5@3]/3",
  B: "[~ eb5@4 g4@4 a5@4 ~ eb5@4 g4@4 bb5@4 eb5@4 c6@4 ~ f5@4 g4@4 bb5@4 f5@4 g4@4 ~ a5@4 f5@4]/2",
  C: "g5@4 d5@4 g4@4 a5@4 ~ d5@4 g4@4 bb5@4 d5@3",
  D: "[~ c6@4 ~ f5@4 g4@4 bb5@4 f5@4 g4@4 ~ a5@4 f5@4 g5@4 eb5@4 g4@4 ~ a5@4 eb5@4 g4@4 bb5@4]/2",
  E: "[eb5@4 ~ c6@4 f5@4 g4@4 bb5@4 f5@4 ~ g4@4 a5@4 f5@4 ~@26]/2", F: "~@8 c6@4 f5@4 g4@4 bb5@4 f5@4 ~ g4@3",
  G: "[~ a5@4 f5@4 g5@4 eb5@4 ~ g4@4 a5@4 eb5@4 g4@4 bb5@4 ~ eb5@4 c6@4 f5@4 g4@4 bb5@4 f5@4 ~]/2", H: "g4 a5 f5 ~@5",
  I: "[~@14 c6@4 f5@4 g4@4 bb5@4 f5@4 g4@4 ~ a5@4 f5@4 g5@4 eb5@4 g4@4 ~ a5@4]/2", J: "eb5 g4 bb5 eb5 ~@4",
  K: "[~@18 g4@4 bb4@4 d5@4 ~ g5@4 a5@4 f5@4 c5@4 a4@4 ~ bb4@4 d5@4 f5@8 bb5@8 ~ f5@8 eb4@4 bb4@4 eb5@3]/3",
  L: "~ g5@4 gb5@4 d5@4 a4@4 d4@4 g4@4 bb4@4 d5@3", M: "~ g5@4 a5@4 g5@4 d5@4 bb4@4 g4@4 bb4@4 d5@3",
  N: "~ g5@4 a5@4 g5@4 c5@4 a4@4 bb4@4 d5@4 f5@3", O: "~ bb5@4 d5@8 bb4@4 f4@4 eb4@4 bb4@4 eb5@3",
  P: "~ g5@4 gb5@4 d5@4 a4@8 g4@4 bb4@4 d5@3",
  Q: "~ g5@3 g5 a5 ~ g5@2 eb5@2 d5@2 d5 eb5 d5 c5 c5@2 bb4@2 eb4@4 bb4@4 eb5@3",
  R: "~ bb4@4 g5@4 bb4@4 eb5@4 bb4@4 eb4@4 bb4@4 eb5@3", S: "~ bb4@4 d4@4 bb4@4 d5@4 f5@4 c4@4 g4@4 c5@3",
  T: "[~ d5@4 [c5,eb5]@4 g5@4 ~ eb5@4 c5@4 c4@4 g4@4 c5@4 d5@4 d4@4 bb4@4 ~ d5@4 f5@4 g5@4 eb5@4 bb4@4 eb5@4 bb4@4 eb5@4 g5@4 ~ eb5@4 e5@4 c5@4]/3", // Cm
  U: "g4@4 eb5@4 c6@4 eb5@4 c5@4 g4@4 ~ f4@4 a4@3",
  V: "[~ c5@4 f5@4 a5@4 f5@4 c5@4 a4@4 gb4@4 ~ c5@4 eb5@4 a5@4 c6@4 gb5@4 eb5@4 a4@4 g5@4 ~ eb5@4 bb4@4 eb5@4 bb4@4 eb5@4 g5@4 eb5@4 c4@4 g4@4 ~ c5@4 d5@4 d4@4 bb4@4 d5@4 f5@4 c4@4]/4",
  W: "g4@4 c5@4 ~ d5@4 [c5,eb5]@4 g5@4 eb5@4 c5@4 c4@3", // Cm
  X: "[~ g4@4 c5@4 d5@4 ~ d4@4 bb4@4 d5@4 f5@4 g5@4 eb5@4 bb4@4 eb5@4 ~ bb4@4 eb5@4 g5@4 eb5@4 e5@4 c5@4 g4@4 e5@4 c6@4 ~ e5@4 c5@4 g4@4]/3",
  Y: "f4@4 a4@4 c5@4 f5@4 a5@4 f5@4 ~ c5@4 a4@3",
  Z: "[~ gb4@4 c5@4 eb5@4 a5@4 c6@4 gb5@4 eb5@4 ~ a4@4 g5@4 d5@4 g4@4 a5@4 d5@4 g4@4 bb5@4 ~ d5@4 c6@4 f5@4 g4@4 bb5@4 f5@4 g4@4 ~ a5@4]/3",
  AA: "f5@4 g5@4 eb5@4 g4@4 a5@4 ~ eb5@4 g4@4 bb5@3",
  AB: "[~ eb5@4 c6@4 f5@4 g4@4 ~ bb5@4 f5@4 g4@4 a5@4 f5@4 g5@4 ~ d5@4 g4@4 a5@4 d5@4 g4@4 bb5@4 d5@4 ~ c6@4 f5@4 g4@4 bb5@4 f5@4 g4@4]/3",
  AC: "[~ a5@4 f5@4 g5@4 eb5@4 g4@4 a5@4 eb5@4 ~ g4@4 bb5@4 eb5@4 c6@4 f5@4 g4@4 ~ bb5@4 f5@4 g4@4 a5@4 f5@4 g4@4 bb4@4 ~ d5@4 g5@4 a5@4]/3",
  AD: "f5 c5 a4 bb4@2 d5 bb5 f5", AE: "f5 d5 bb4 eb4 bb4!2 g5 gb5", AF: "d5@2 a4@4 g4@2 bb4@2 d5@2 g5@2 a5 bb5",
  AG: "a5@2 g5@2 d5 bb4 g4@2 bb4@2 d5@2 g5@2 a5@2", AH: "[f5 c5 a4 bb4 d5 f5@2 c6@2 bb5@2 e4 bb4!2 g5 gb5]/2",
  AI: "d5@2 a4@2 d4@2 g4@2 bb4@2 d5@2 g5@2 a5 bb5", AJ: "a5 g5 d5 eb4 bb4 eb5 bb4 g5",
  AK: "bb4@4 eb5@4 bb4@4 eb4@4 ~ bb4@4 eb5@4 bb4@4 d4@3", AL: "~ bb4@4 d5@4 f5@4 c4@4 g4@4 c5@4 d5@4 [c5,eb5]@3",
  AM: "[~ g5@4 ~ eb5@4 c5@4 c4@4 g4@4 c5@4 d5@4 d4@4 bb4@4 d5@4 f5@4 g5@4 eb5@4 bb4@4 ~ eb5@4 bb4@4 eb5@4 g5@4 eb5@4 e5@4 c5@4 g4@4 eb5@4 c6@4 eb5@4 c5@4 g4@4 f4@4 ~ a4@4 c5@4 f5@4]/4",
  AN: "a5 f5 c5 a4 gb4 c5 eb5 a5", AO: "c6@4 gb5@4 ~ eb5@4 a4@4 eb4@4 bb4@4 eb5@4 bb4@3",
  AP: "[~ g5@4 bb4@4 eb5@4 bb4@4 eb4@4 bb4@4 eb5@4 ~ bb4@4 d4@4 bb4@4 d5@4 f5@4 c4@4 g4@4 c5@4 d5@4 [c5,eb5]@4 g5@4 eb5@4 c5@4 ~ c4@4 g4@4 c5@4 d5@4 d4@4 bb4@4 d5@4 f5@4 g5@4 eb5@4 bb4@4 eb5@4 bb4@4 eb5@4 ~ g5@4 eb5@4 e5@4 c5@4 g4@4]/5", // Cm
  AQ: "e5 c6 e5 c5 g4 f4 a4 c5", AR: "~ f5@4 a5@4 f5@4 c5@4 a4@4 gb4@4 c5@4 eb5@3",
  AS: "[~ a5@4 bb5@4 a5@4 g5@4 gb5@4 ~ g5@4 d5@4 g4@4 a5@4 d5@4 g4@4 bb5@4 d5@4 c6@4 f5@4 g4@4 ~ bb5@4 f5@4 g4@4 a5@4 f5@4 g5@4 ~ eb5@4]/3",
  AT: "g4@4 a5@4 eb5@4 g4@4 bb5@4 eb5@4 ~ c6@4 f5@3",
  AU: "[~ g4@4 bb5@4 f5@4 g4@4 ~ a5@4 f5@4 g5@4 d5@4 g4@4 a5@4 d5@4 ~ g4@4 bb5@4 d5@4 c6@4 f5@4 g4@4 ~ bb5@4 f5@4 g4@4 a5@4 f5@4 g5@4]/3",
  AV: "[eb5@4 ~ g4@4 a5@4 eb5@4 g4@4 bb5@4 eb5@4 ~ g5@16 c5@17 g3@12 g4@8 ~ a3@12]/3",
  AW: "bb3@11 [f4,bb4]@8 bb3@8 c4@3 d4@2", AX: "eb4 d4 a4 gb4", AY: "g4 d4 bb3 a3", AZ: "g3@3 g4@2 a3@3",
  BA: "eb4 bb4 eb5 bb4 g5 bb4 eb5 bb4", BB: "eb4 bb4 eb5 bb4 d4 bb4 d5 f5",
  BC: "~ eb4@4 bb4@4 eb5@4 bb4@4 g5@4 bb4@4 eb5@4 bb4@3",
  BD: "[~ c4@4 g4@4 c5@4 d5@4 d4@4 ~ bb4@4 d5@4 f5@4 g5@4 eb5@4 bb4@4 eb5@4 bb4@4 eb5@4 g5@4 eb5@4 e5@4 c5@4 ~ g4@4 e5@4 c6@4 e5@4 c5@4 g4@4 f4@4 a4@4 c5@4 f5@4 a5@4 f5@4 c5@4 ~]/4",
  BE: "a4 gb4 c5 eb5 a5 c6 gb5 eb5", BF: "a4@4 eb4@4 bb4@4 eb5@4 bb4@4 g5@4 ~ bb4@4 eb5@3",
  BG: "~ bb4@4 eb4@4 bb4@4 eb5@4 bb4@4 d4@4 bb4@4 d5@3",
  BH: "[~ f5@4 eb4@4 bb4@4 ~ eb5@4 bb4@4 g5@4 bb4@4 eb5@4 bb4@4 c4@4 g4@4 c5@4 d5@4 d4@4 bb4@4 d5@4 ~ f5@4 g5@4 eb5@4 bb4@4 eb5@4 bb4@4 eb5@4 g5@4 eb5@4 e5@4 c5@4 g4@4 e5@4 ~ c6@4 e5@4]/4",
  BI: "c5 g4 f4 a4 c5 f5 a5 f5", BJ: "c5@4 a4@4 gb4@4 c5@4 ~ eb5@4 a5@4 c6@4 gb5@3",
  BK: "~ eb5@4 a4@4 g5@4 d5@4 g4@4 a5@4 d5@4 g4@3",
  BL: "[~ bb5@4 ~ d5@4 c6@4 f5@4 g4@4 bb5@4 f5@4 g4@4 ~ a5@4 f5@4 g5@4 eb5@4 g4@4 bb5@4 ~ f5@4]/2",
  BM: "g4@4 a5@4 f5@4 c6@4 f5@4 g4@4 ~ bb5@4 f5@3",
  BN: "[~ g4@4 a5@4 f5@4 g5@4 ~ d5@4 g4@4 a5@4 d5@4 g4@4 bb5@4 d5@4 ~ c6@4 f5@4 g4@4 bb5@4 f5@4 g4@4 ~ a5@4 f5@4 g5@4 eb5@4 g4@4 a5@4]/3",
  BO: "[eb5@4 ~ g4@4 bb5@4 eb5@4 g5@4 d5@4 g4@4 ~ a5@4 d5@4 g4@4 bb5@4 d5@4 c6@4 f5@4 ~ g4@4 bb5@4 f5@4 g4@4 a5@4 f5@4 ~ g5@4 eb5@4 g4@4]/3",
  BP: "a5@4 eb5@4 g4@4 bb5@4 ~ eb5@4 c6@4 f5@4 g4@3", BQ: "~ bb5@4 f5@4 ~ g4@4 a5@4 f5@4 ~@10",
})).s("gm_acoustic_guitar_steel").gain(0.06)

// other · piano · "drums"
const piano = note("<A B C D@2 E F G H@3 I J K L@2 M ~@119>".pickRestart({
  A: "~@17 bb6@4 ~@5 bb6@4 ~@2", B: "~@2 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~",
  C: "~@4 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@5 bb6@3",
  D: "[~@5 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4]/2",
  E: "bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@3", F: "~ bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~",
  G: "~@3 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4",
  H: "[~@5 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@4]/3",
  I: "~ bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@2", J: "~@2 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@5 bb6@4",
  K: "~@4 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@3",
  L: "[~@5 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@4 bb6@4 ~@4 bb6@4 ~@5]/2",
  M: "bb6@4 ~@4 bb6@4 ~@5 bb6@4 ~@11",
})).s("gm_piano").gain(0.05)

// bass · electric bass finger · "bass"
const bass = note(`<
  A@5 B C D E F@8 G H@8 I J K L M@5 N O P@3 Q R S D T@6 U@8 V@7 W X Y@5 Z AA AB@8 AC@2 AD AE AF AG AD AE AF AG AD AE AF
  AG AD AE AF AG AD AE AF AG AD AE AF AH AI AJ AK AL AM AN AO AP@2 AQ@2 AR AS@2 AT AU AV AW AX AY@8 ~
>`.pickRestart({
  A: "[~@26 g1@31 ~@2 g1@31 ~@3 g1@31 ~@2 g1@31 ~@3]/5", B: "g1@31 ~", C: "~ g1@31", D: "~@3 g1@29", E: "~@5 g1@27",
  F: "[~@6 g1@31 ~@3 g1@31 ~@2 g1@31 ~@3 g1@31 ~@2 g1@31 ~@3 g1@31 ~@2 g1@31 ~@3 g1@15]/8",
  G: "~ d2@4 ~ c2@4 bb1@4 a1@4 g1@14",
  H: "[~@3 a1@15 ~@2 bb1@7 ~ bb1@8 bb2@8 ~ c2@4 d2@4 eb2@8 eb2@8 d2@7 ~ gb2@7 ~ g2@7 ~ d2@7 ~ bb1@7 ~ a1@7 ~ g1@14 ~@2 a1@14 ~@2 bb1@7 ~ bb1@8 bb2@8 c2@4 d2@4 eb2@8 eb2@8 d2@7 ~ gb2@7 ~ g2@7 ~ d2@7 ~ bb1@7 ~ a1@7 ~ eb2@4 eb2@7]/8",
  I: "~ eb2@4 eb2@14 ~@2 eb2@4 eb2@7", J: "~ eb2@4 d2@14 ~@2 c2@4 c2@7", K: "~ c2@4 c2@14 ~@3 c2@4 c2@6",
  L: "~@2 c2@4 d2@14 ~@3 eb2@4 eb2@5",
  M: "[~@3 eb2@4 eb2@14 ~@3 e2@31 ~@2 f2@31 ~@2 gb2@31 ~ eb2@4 ~ eb2@7 ~ eb2@4 eb2@14 ~@2 eb2@4 ~]/5",
  N: "eb2@7 ~ eb2@4 d2@14 ~@2 c2@4", O: "c2@7 ~@2 c2@4 c2@14 ~@2 c2@3",
  P: "[~ c2@7 ~@2 c2@4 d2@14 ~@2 eb2@4 eb2@7 ~ eb2@4 ~ eb2@14 ~@2 e2@31 ~@2]/3", Q: "f2@31 ~", R: "~ gb2@31",
  S: "~ g1@15", T: "[~@4 g1@31 ~@2 g1@31 ~@2 g1@31 ~@3 g1@31 ~@2 g1@31 ~@2 g1@15 ~@2 d2@4 c2]/6",
  U: "[~@3 bb1@4 a1@4 g1@15 ~@2 a1@15 ~ bb1@7 ~ bb1@8 bb2@8 c2@4 d2@4 eb2@8 eb2@8 d2@7 ~ gb2@7 ~ g2@7 ~ d2@7 ~ bb1@7 ~ a1@7 ~ g1@14 ~@2 a1@14 ~@2 bb1@7 ~ bb1@8 bb2@8 c2@4 d2@4 eb2@8 eb2@8 d2@7 ~ gb2@7 ~ g2@7 ~ d2@7 ~ bb1@4]/8",
  V: "[~@4 a1@7 ~ eb2@4 eb2@7 ~ eb2@4 eb2@14 ~@3 eb2@4 eb2@7 ~ eb2@4 d2@14 ~@2 c2@4 c2@7 ~ c2@4 c2@14 ~@3 c2@4 c2@7 ~ c2@4 d2@14 ~@2 eb2@4 eb2@7 ~@2 eb2@4 eb2@14 ~@2 e2@4 e2@7 ~ e2@4 e3@14 ~@3 f2@4 f2@7 ~ f2@4]/7",
  W: "f3@14 ~@2 gb2@4 gb2@7 ~ gb2@4", X: "gb3@14 ~@3 eb2@4 eb2@7 ~ eb2@3",
  Y: "[~ eb2@14 ~@2 eb2@4 eb2@7 ~@2 eb2@4 d2@14 ~@2 c2@4 c2@7 ~ c2@4 c2@14 ~@3 c2@4 c2@7 ~ c2@4 d2@14 ~@2 eb2@4 eb2@7 ~ eb2@4 eb2@14 ~@3 e2@4 e2@7 ~]/5",
  Z: "e2@4 e3@14 ~@2 f2@4 f2@7 ~", AA: "~ f2@4 f3@14 ~@2 gb2@4 gb2@7",
  AB: "[~ gb2@4 gb3@14 ~@3 g1@31 ~ g1@31 ~@2 g1@31 ~@3 g1@31 ~@2 g1@31 ~@2 g1@31 ~@2 g1@31 ~@3 g1@2]/8",
  AC: "[~@14 d2@4 c2@4 ~ bb1@4 a1@4 g1@15 ~ a1@15 ~@2]/2", AD: "bb1@7 ~ bb1@8 bb2@8 c2@4 d2@4",
  AE: "eb2@8 eb2@8 d2@7 ~ gb2@7 ~", AF: "g2@7 ~ d2@7 ~ bb1@7 ~ a1@7 ~", AG: "g1@7 ~ a1@7 ~",
  AH: "eb2@4 eb2@7 ~ eb2@4 eb2@14 ~@2", AI: "eb2@4 eb2@7 ~ eb2@4 d2@14 ~@2", AJ: "~ c2@4 c2@7 ~ c2@4 c2@14 ~",
  AK: "~ c2@4 c2@7 ~ c2@4 ~ d2@14", AL: "~@2 eb2@4 eb2@7 ~ eb2@4 eb2@14", AM: "~@2 e2@4 ~ e2@7 ~ e2@4 e3@13",
  AN: "~@3 f2@4 f2@7 ~ f2@4 f3@13", AO: "~@4 gb2@4 gb2@7 ~ gb2@4 gb3@12",
  AP: "[~@4 eb2@4 eb2@7 ~ eb2@4 ~ eb2@14 ~@2 eb2@4 eb2@7 ~ eb2@4 d2@11]/2",
  AQ: "[~@5 c2@4 ~ c2@7 ~ c2@4 c2@14 ~@2 c2@4 c2@7 ~ c2@4 d2@10]/2", AR: "~@7 eb2@4 eb2@7 ~ eb2@4 eb2@9",
  AS: "[~@7 e2@4 e2@7 ~@2 e2@4 e3@14 ~@2 f2@4 f2@7 ~ f2@4 f3@8]/2", AT: "~@8 gb2@4 ~ gb2@7 ~ gb2@4 gb3@7",
  AU: "~@9 g1@23", AV: "~@5 g1@11", AW: "~@11 g1@21", AX: "~@3 g1@5",
  AY: "[~@13 g1@31 ~@3 g1@31 ~@2 g1@31 ~@2 g1@31 ~@2 g1@31 ~@3 g1@31 ~@2 g1@31 ~@12]/8",
})).s("gm_electric_bass_finger").gain(0.18)

stack(acoustic_guitar_steel, piano, bass)

More by Malmsteen Yngwie