Strudelify
KeyA minorTempo105 bpm
0:00/0:00
// le clan des siciliens — Ennio Morriconearr. Veronica Jakubowski
// 105 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5831113; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/4)

// 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("<~@18 A B C D@2 E A F G H@2 G I@2 J@2 K@2 L@2 M@2 N@2 O@2 P Q R@2 S@2 T@2 U V W@2>".pickRestart({
  A: "a5", B: "c6 b5", C: "a#5", D: "[a5@3 c6]/2", E: "b5@3 a#5", F: "c6", G: "b5 a#5", H: "[a#5 a5@2 c6]/2",
  I: "[a5@3 ~]/2", J: "[f5@8 e5@16 f5!4 g5!4]/2", K: "[f5 e5@5 ~@2]/2", L: "[e5@24 g5!4 f5!4]/2",
  M: "[f5@4 e5@20 d5!4 c#5!4]/2", N: "[d5@24 e5!8]/2", O: "[e5@4 d5@16 c#5!4 e5!4 d5!4]/2", P: "d5", Q: "c5!8 b4!8",
  R: "[e5@4 d5@20 c5!4 b4!4]/2", S: "[c5@4 c5@20 b4!4 a4!4]/2", T: "[d5@4 c5@16 a4!4 d5!6 c5@2]/2", U: "b4",
  V: "a#4@8 a4!4 g#4!4", W: "[b4 a4@5 ~@2]/2",
})).s("gm_violin").gain(0.21)

// other · viola
const viola = note("<~@18 A B C D@2 E F C G H@2 G I@2 J@2 K@2 L@2 M@2 N@2 O@2 P Q R@2 S@2 T@2 U V W@2>".pickRestart({
  A: "a4", B: "c5 b4", C: "g4", D: "[a4@3 c5]/2", E: "b4@3 a#4", F: "e4", G: "b4 a#4", H: "[a#4 a4@2 c5]/2",
  I: "[a4@3 ~]/2", J: "[f4@8 e4@16 f4!4 g4!4]/2", K: "[f4 d4@5 ~@2]/2", L: "[d4@24 g4!4 f4!4]/2",
  M: "[f4@4 e4@20 d4!4 c#4!4]/2", N: "[a3@24 b3!8]/2", O: "[e4@4 d4@16 b3!4 c4!4 d4!4]/2", P: "d4", Q: "c4!8 b3!8",
  R: "[e4@4 d4@20 c4!4 b3!4]/2", S: "[c4@4 c4@20 b3!4 a3!4]/2", T: "[d4@4 c4@16 a3!4 b3!6 a3@2]/2", U: "g3",
  V: "a#3@8 a3!4 g#3!4", W: "[b3 a3@5 ~@2]/2",
})).s("gm_viola").gain(0.21)

// bass · acoustic bass · "Contrabass"
const bass = note(`<
  A@4 B A C D E F B G H I B H I@2 A@2 C D E F B G H I B H I@2 J@2 K@2 L@2 J@2 M@4 L@2 N@2 J@2 O@2 P Q R S
>`.pickRestart({
  A: "a2@2 ~@4 a2 ~ e2@2 ~@2 e2@2 ~@2", B: "a2@2 ~@4 a2 ~ a2@2 ~@2 a2@2 ~@2", C: "g2@2 ~@4 g2 ~ a2@2 ~@2 a2@2 ~@2",
  D: "d2@2 ~@4 d2 ~ d2@2 ~@6", E: "d2@2 ~@4 d2 ~ d2@2 ~@2 d2@2 ~@2", F: "e2@2 ~@4 e2 ~ e2@2 ~@2 e2@2 ~@2",
  G: "a2@2 ~@4 a2 ~ d2@2 ~@2 d2@2 ~@2", H: "e2@2 ~@4 e2 ~ e2@2 ~@6", I: "a2@2 ~@4 a2 ~ a2@2 ~@6",
  J: "a2@2 ~ a2 e2@2 e2@2", K: "b2@2 ~ b2 e2@2 e2@2", L: "g2@2 ~ g2 e2@2 e2@2", M: "d2@2 ~ d2 a2@2 a2@2",
  N: "e2@2 ~ e2 c3@2 c3@2", O: "d#2@2 ~ d#2 a2@2 a2@2", P: "e2@2 ~ e2 b2@2 b2@2", Q: "e2@2 ~ e2 a#2@2 a#2@2",
  R: "e2@2 ~ e2 a2@2 a2@2", S: "a2",
})).s("gm_acoustic_bass").gain(0.4).pan(0.7)

stack(violin, viola, bass)