Strudelify

Cavalleria rusticana

P. Mascagni

KeyD majorTempo47 bpm
0:00/0:00
// Cavalleria rusticana — P. Mascagni
// 47 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5500933; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(47/3)

// 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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N M O P Q R S T U V W X Y Z AA AB AC AD AE AF Y AG AH AI Y AG AH AI Y AJ AK AL AM@3 ~
>`.pickRestart({
  A: "~ c#4 b3, [d4,f#4,a4]@23 ~", B: "e3@4 f#3 g3, [b3,d4,b4]@23 ~",
  C: "[g#3,b3,d4,b4] [a3,a4] [g#3,b4], ~ [d4,f#4]@2", D: "[a3,e4] [a#3,f#4]@2, [c#4,c#5]@23 ~",
  E: "[b3,d4,f#4,b4]@15 ~ [e3,d4,g#4,b4]@8", F: "d4 c#4 [e3,b3,d4,g4], [a3,e4,a4]@2 ~",
  G: "[a3,c#4,e4]@15 ~ [e3,b3,d4,g4]@8", H: "a3 a#3 [b3,d4,f#4], [c#4,g4]@2 ~",
  I: "[e3,d4,e4,b4]@15 ~ f#3@4 g#3@4, ~@2 [b3,e4,b4]", J: "[a3,e4,a4]@4 [b2,a3,d4,f#4]@4 [e3,g#3,d4,g#4]@15 ~",
  K: "~@2 [a1,a2], [a3,c#4,e4,a4], ~ [e2,e3]@2", L: "[g3,b3,g4] [f#3,a3,a4] [e3,g3,b4]",
  M: "~ a5@2 g#5 f#5 c#5, [f#3,a3,a4]@23 ~", N: "[g3,b3,g4,b4] [f#3,a3,a4] [e3,g3,b4]",
  O: "[e3,a3,c#4]@15 ~ [d#3,a3,c#4]@8, [a4,c#5]@23 ~", // A D#m7b5 A
  P: "c#5 b4 [d3,g#3,e4,b4]@2 [c#3,a3,e4,a4]@2, [d3,a3,d4,f#4] ~@2", Q: "[b2,f#3,a3,d4,a4]@8 [e2,g#3,d4,e4]@15 ~",
  R: "~@2 [a1,a2], [a3,c#4,e4], a2@2 ~, ~ [e2,e3]@2", // A E
  S: "~@5 f#4@3 [d4,f#4,a4]@4 [f#4,a4,d5]@4 ~@4 [a3,e4,a4]@4, [d2,d3]@2 [c#2,c#3], ~ [a3,d4] ~@4", // D A5 D C# D5
  T: "~@5 d4@3 [b3,d4,f#4]@4 [d4,f#4,b4]@4 ~@4 [f#3,c#4,f#4]@4, [b1,b2]@2 [a1,a2], ~ [f#3,b3] ~@4", // Bm F#5 B A B5
  U: "~@5 b3@3 [g3,b3,d4]@4 [b3,d4,g4]@4 ~@4 [g3,b3,d4,g4]@4, [g1,g2]@2 e2, ~ [d3,g3] ~@4", // G G5
  V: "~@5 a3@3 [g3,a3,c#4]@4 [a3,c#4,g4]@4 ~@4 [a3,c#4,g4]@4, [a1,a2]@15 ~ [a1,a2]@8, ~ [c#3,g3] ~@4", // A7 A C#dim
  W: "~@5 b3@3 [g3,b3,e4]@4 [b3,e4,g4]@4 ~@4 [b3,d4]@4, e2@15 ~ [g1,g2]@8, ~ [e3,g3] ~@4", // Em Bm G Em
  X: "~@5 d4@3 [a3,d4,f#4]@4 [d4,f#4,a4]@4 ~@4 [d4,f#4]@4, d2@15 ~ [b1,b2]@8, ~ [f#3,a3] ~@4", // D B F#m
  Y: "~@5 d4@3 [a3,d4,f#4]@4 [d4,f#4,a4]@4 ~@4 [g3,a3,c#4]@4, [a1,a2]@15 ~ [a1,a2]@8, ~ [f#3,a3] ~@4", // D A7 A F#m
  Z: "~@5 d4@3 [a3,d4,f#4]@4 [d4,f#4,a4]@4 ~@4 [a3,d4,a4]@4, d2@15 ~ [f#1,f#2]@8, ~ [f#3,a3] ~@4", // D D5 F# F#m
  AA: "~@5 b3@3 [g3,b3,d4]@4 [b3,d4,g4]@4 ~@4 [b3,d4,g4]@4, [g1,g2]@15 ~ e2@8, ~ [d3,g3] ~@4", // G G5
  AB: "~@5 a3@3 [g3,a3,c#4]@4 [a3,c#4,g4]@4 ~@4 [a3,c#4,g4]@4, [a1,a2]@15 ~ [c#2,c#3]@8, ~ [c#3,g3] ~@4", // A7 A C# C#dim
  AC: "~ [g3,d4] [b3,d4,g4] [d4,g4,b4] ~ [e3,b3,e4], [b1,b2]@15 ~ [g1,g2]@8", // G5 G E5 B G
  AD: "~@5 a3@3 [g3,a3,e4]@4 [a3,e4,g4]@4 ~@4 [e3,g3,a3,c#4]@4, e2@15 ~ g2@8, ~ [e3,g3] ~@4", // A7 Em
  AE: "~@5 d4@3 ~@4 [d3,f#3,d4]@4 ~@4 [e3,b3,d4]@4, [b1,b2] [a1,a2] [g1,g2], ~ [d3,f#3] ~@4", // D E7 B A G D
  AF: "~@5 d4@3 [a3,d4,f#4]@4 [d4,f#4,a4]@4 ~@4 [d4,g4,b4]@4, [f#1,d2]@15 ~ [e1,e2]@8, ~ [f#3,a3] ~@4", // D G D E F#m
  AG: "~@5 d4@3 ~@4 [f#3,a3,d4]@4 ~@4 [f#3,b3,d4]@4, [d2,d3] [c#2,c#3] [b1,b2], ~ [f#3,a3] ~@4", // D Bm D C# B F#m
  AH: "~@5 d4@3 ~@4 [g3,b3,d4]@4 ~@4 [g3,b3,d4]@4, [a1,a2] [g1,g2] [f#1,f#2], ~ [f#3,b3] ~@4", // G A G F# B5
  AI: "~@5 d4@3 [b3,d4,g4]@4 [d4,g4,b4]@4 ~@4 [e3,g3,b3,d4]@4, [e1,e2]@15 ~ [g1,g2]@8, ~ [g3,b3] ~@4", // G Em7 E G
  AJ: "~@5 d4@3 ~ f#4@3 ~@8 [f#3,a3,d4]@4, [d2,d3]@15 ~ [c#2,c#3]@8, ~ [f#3,a3] [a3,d4] ~@3", // D C# F#m D5
  AK: "~@5 d4@3 [b3,d4,f#4]@4 ~@8 [f#3,b3,d4]@4, [b1,b2]@15 ~ [a1,a2]@8, ~ [f#3,b3] ~@4", // Bm B A B5
  AL: "~@5 d4@3 [b3,d4,g4]@4 ~@8 [g3,b3,d4]@4, [g1,g2]@15 ~ [e1,e2]@8, ~ [g3,b3] ~@4", // G E G
  AM: "[~@5 f#3@3 ~ a3@3 ~ d4@3 ~ f#4@3 ~ a4@3 ~@9 [a3,d4]@7 ~ [a3,d4]@7 ~ [a3,d4]@23, [d1,d2]@4 [d3,f#3]!2 [d3,f#3]@3, ~ a2@12 ~@5, ~ d3!2 a3!2 f#4 [f#4,a4]@12, ~@8 f#3@4 f#3@4 d4@4 d4@5 d5@47]/3", // D5 D F#m
})).s("gm_piano").gain(0.2)

stack(piano)