Strudelify

Mistero

Battisti

KeyF majorTempo90 bpm
0:00/0:00
// Mistero — Battisti
// 90 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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 · piano · "Canto"
const piano = note(`<
  ~@14 A@2 B C D E F G H I J K H I L@2 M N@2 O@2 P A@2 B C D E F G H I J K H Q L@2 M N@2 O@2 P A@2 B C D E F G H I J K H
  I ~@2
>`.pickRestart({
  A: "[~@4 f5 ~ f5 f5@2 ~ e5 ~ e5 ~ d5 d5@2 ~ a4 ~@13]/2", B: "~@4 a5 ~ a5 ~ g5 ~ f5 ~ a5@3 ~", C: "g5@3 ~ f5@3 ~@9",
  D: "~@4 f5 ~ f5 f5@2 ~ e5 e5@3 ~ d5", E: "d5 ~ a4 ~@9 f5 ~ f5 ~", F: "f5 ~ e5 ~ e5 ~ e5 f5@2 ~ e5 ~ e5!2 ~ f5",
  G: "e5 ~ d5 ~@13", H: "~@10 c5 ~ e5 ~ d5@2", I: "~@2 c5 ~@13", J: "~@10 a5 ~ c6 ~ b5@2", K: "~@2 a5 ~@13",
  L: "[d5 ~ d5 ~ d5 ~ d5 ~ d5!2 ~ d5 e5 ~ gb5 gb5@2 ~ gb5 ~@7 a4 ~ b4 ~ db5 ~]/2",
  M: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ e5 ~ gb5 ~ gb5@2",
  N: "[~@2 gb5 ~@7 e5 ~ e5 ~ d5 e5@2 ~ d5 ~ d5 ~ d5 ~ e5 ~ gb5@3 ~ gb5@2]/2",
  O: "[~@2 gb5 ~@7 gb5 ~ gb5 ~ gb5 g5@2 ~ gb5@3 ~ gb5 g5@2 ~ gb5 ~ gb5!4]/2", P: "g5 ~ gb5 ~@3 gb5 ~ e5 ~ d5 ~@5",
  Q: "~@2 c5@5 ~@9",
})).s("gm_piano").gain(0.64)

// chords · drawbar organ · "Org."
const drawbar_organ = note(`<
  A@3 B C B D@2 E D E F E G A@3 B C B D@2 E D E F E G D H D H I H J K A@3 B C B D@2 E D E F E G D H D H I H J L A@3 B C
  B D@2 E D E F E G M@2
>`.pickRestart({
  A: "[e4,f4,a4]/3", B: "[c4,f4,a4]", C: "[e4,f4,a4]", D: "[g4,b4,d5]", E: "[a4,d5,e5]", F: "[a4,c5,f5]",
  G: "[g4,c5,d5]", H: "[d4,gb4,a4]", I: "[d4,gb4,a4] [d4,g4,b4]", J: "[d4,g4,b4] [e4,a4,c5]",
  K: "[g4,a4]@4 [gb4,a4]@3 ~, d5", L: "[g4,a4] [gb4,a4], d5", M: "[[e4,a4]@11 [ab4,b4]@5]/2",
})).s("gm_drawbar_organ").gain(0.04)

// other · epiano2 · "Synth."
const epiano2 = note("<~@35 A B C B D B E F G H I H J H K L@7 M N O P Q R S F G T U V W X Y ~@2>".pickRestart({
  A: "~@14 g4 [d5,e5]", B: "a5 d5 e5 a5 d5 e5 a5 c5", C: "e5@2 a5@2 c5@2 e5@2 a5@2 c5@2 e5@2 a4 [d5,e5]",
  D: "f5@2 a5@2 c6@2 f5@2 a5@2 a4 [d5,e5] a5@2 c5@2", E: "f5 a5 c5 e5 a5 c5 e5 a5", F: "d5 g5 c6 d5 g5 c6 d5 g5",
  G: "b5 d5 g5 c6 b5 a5 g5 a5", H: "d5 e5 a5 d5 e5 a5 d5 e5", I: "c5@2 e5@2 a5 [e5,g5] g5@2 g5@2 e5@2 g5@2 e5@2",
  J: "c5@2 f5@2 a5@2 c5@2 a5 [e5,g5] g5@2 a5@2 e5@2", K: "c5 e5 g5 c6 e5 g5 c5 e5", L: "d5 g5 d5 g5 d5 g5 d5 g5",
  M: "d5 g5 d5 g5 d5 a5 d5 g5", N: "c5 [d5,e5] a5@2 d5@2 e5@2 a5@2 d5@2 e5@2 a5@2",
  O: "c5@2 f5@2 a5@2 c5@2 a5 [f5,g5] g5@2 a5@2 e5@2", P: "a4 [d5,e5] a5@2 d5@2 e5@2 a5@2 d5@2 e5@2 a5@2",
  Q: "c5 f5 a5 c5 e5 a5 c5 e5", R: "d5@2 e5@2 a5@2 d5@2 e5@2 a5@2 a4 [d5,e5] a5@2",
  S: "a5 [f5,g5] g5@2 a5 [f5,g5] g5@2 a5 [f5,g5] g5@2 a5 [f5,g5] g5@2", // Fsus2
  T: "a4 [d5,e5] a5@2 a4 [d5,e5] a5@2 g5@2 f5@2 e5@2 f5@2", U: "g5@2 c5@2 c6@2 c5@2 b5@2 c5@2 c6@2 a4 [d5,e5]",
  V: "a5@2 a4 [d5,e5] a5@2 d5@2 e5@2 a5@2 d5@2 e5@2", W: "a5@2 c5@2 f5@2 a5@2 c5@2 f5@2 a5@2 a4 [d5,e5]",
  X: "a5@2 a4 [d5,e5] a5@2 g5@2 f5@2 e5@2 f5@2 g5@2", Y: "c5 c6 c5 b5 c5 c6 c5 a5",
})).s("gm_epiano2").gain(0.23)

stack(piano, drawbar_organ, epiano2)

More by Battisti