Strudelify

il postino

Luis Bacalov

KeyC majorTempo42 bpm
0:00/0:00
// il postino — Luis Bacalov
// 42 bpm, 2/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2049391; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(42/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN ~ AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF
>`.pickRestart({
  A: "~@2 g4 e4 g5 e5 g6 e6, e3@15 ~", B: "~ e3 g3 e3 ~ e4 g4 e4, [c2,c3,g6,g7]@15 ~, ~ g3",
  C: "~ g3 [e3,g4] [g3,e4] g5 e5 [a5,a6] e6, g4 ~ e3@2", // Em C A
  D: "[g6,a6] ~ d4@2 a4@2 d4@2 ~@2 d3@2 a3@2 d3@2, [b1,b2]@15 ~, ~ g6@14 ~, ~ g4", // Gsus2 B
  E: "~@2 f#6@2 a6@2 g6@2 f#6 a6 g6 f#5 a5 g5 f#4 a4, g2 g1", F: "g4 c4!2 b3!2 a3 c4 a3, e1 f2, ~@3 a4",
  G: "e4@2 f4@2 [a3,c5]@3 f4, [f2,a3] ~", H: "~ e3 ~ f3 f#3 g3 ~ b3 d4 c4 ~ b3 c4 e4@2 g4, [c3,e4]@15 ~",
  I: "d5 c5 ~ [g6,c7,e7]@5 [g6,c7,e7]@8", J: "~ [f3,c4,e4]!2 [f3,a3,d4]!2 [f3,a3,c4]!2 [f3,a3,d4], [f1,f2]",
  K: "~ g4@15, [f1,f2,a3,c4]", L: "~ [e3,g3,d4]!2 [e3,g3,c4]!2 [e3,g3,b3]!2 [e3,g3,c4], [c1,e2]@15 ~",
  M: "[c1,e2,e3,g3,c4]@15 ~", N: "~ c5 e6 d6 c6 b3 [e4,a4] g4, [a1,a2] e2 c3 e2",
  O: "~@2 b3@2 e4@2 d4@2 ~ [e4,a4]@7, [d2,d3] f#3 [d2,a3,c4]@2", P: "~ a3 f4 c4 g4 a4 f5 c5, [g1,g2]@15 ~",
  Q: "[g3,d4,b4,d5,g5] [g2,f3,b3,d4,g4]", R: "~ g3 e4 g3 e4 g4 e5 g4, [c1,c2] [c3,g3]",
  S: "[g4,c5,e5] [g3,c4,e4], [c2,c3]@15 ~", T: "~ g3 d4 g3 d4 g4 e5 g4, [b1,b2] [d3,g3,b3]", U: "[g2,b4,g5]@15 ~",
  V: "~ g3 c4 [a#3,d4] [c4,e4] g4 c5 [a#4,d5], [c2,c3] [c3,g3]", // A# C A# C C5
  W: "[c5,e5] g5 c6 [b5,d6] [c6,e6] e5 [a#4,d5,g5]@2, [c4,g4] [c3,a#3]", X: "c7 f6 c6 f5 c6 f5 c5 f4, [f2,f3] [f3,a3]",
  Y: "[f2,c3,f3,g#3,c4,f4]@15 ~", Z: "[c2,c3,g3,c4,e4]@4 ~ [g4,g5] [c5,e5] [g4,g5], ~ [e3,g3,c4]",
  AA: "[e3,g3,c4,c5,e5] ~", AB: "[c4,d4,g4]@4 ~ [g4,g5] [b4,d5] [g4,g5], [g2,f3], ~ b3", AC: "[g2,f3]@15 ~, [b4,d5] ~",
  AD: "g#2 d#3 g#3 a#3 c#4 [c4,c5] [a#3,d#5] [g#3,c5]", // C D#5 G#
  AE: "g2@2 d#3@2 a#3@2 d#3@2 d#5 a#4 c5 d5 d#5 f5 g5 d#5, d#5 a#3",
  AF: "d3 c4 f4 g4 [a#4,c5,g#5] [g#4,g#5] [g4,c5,c6] [f4,g#5], [c5,g#5] ~", // Fm G# C5 Fm
  AG: "g4 a3 g4 c4 [d#5,g5,d#6] d#5 f5 d#5, [d#5,g5,d#6] g4", // D#
  AH: "d#5@2 c#5@2 [c#5,d#5] c#5 c5@2 [a#2,a#3] [f3,f#3] g3 [g#3,a#3] c#4 c4 a#3 [g#3,a3], f4@15 ~, [a#2,a#3] c#5", // C#sus2 A# F#maj7 G#sus2 Amaj7 A#
  AI: "d5@4 c5@4 [a#4,c5] a#4@3 g#4@4, [g3,c#4,f4] [d#3,g3,c#4,e4]", AJ: "~ g3!2 d#3!2 d3!2 c3, [d#4,c5]",
  AK: "[e4,c5] c6 a#5 g#5, [g#2,b2]@15 ~", AL: "g5@2 f5@2 [f5,g5] f5 e5@2 f5@8, [d4,g4,g#4,c5]@15 ~", AM: "~@7 e5",
  AN: "g5@2 f5@2 [f5,g5] f5 e5@2 f5@8, [g3,d4,f4]@15 ~", AO: "~@2 g4 e4 g5 e5 g6 e6, c3, ~ e3@3 e3@4",
  AP: "[c3,e3,g7]@15 ~", AQ: "~ d4 a4 d4 a5 d5 a6 d6, [b1,b2]@15 ~", AR: "[g6,a6] ~@7 b2@8, ~ g6@14 ~",
  AS: "~ g3 c4 [a#3,d4] [c4,e4] g4 c5 [a#4,d5], [a#1,a#2]", // A# C A#
  AT: "[c5,e5] g5 c6 [a#5,d6] [e5,c6] g5 [e5,c6] [c6,g6], [b1,b2]@2 [b1,b2] [a#1,a#2]", // C A# C C5 B A#
  AU: "[c6,d6,f6,g6] [c6,f6] a5@2 [a5,c6]@2 a5@2 [a5,e6]@2 f5@2 [c5,f5]@2 f4@2, [a1,a2]@15 ~", // Csus4 F5 Am A5 F5 A
  AV: "[f4,c5,f5] [g#4,f5] [c5,g5] [g#4,f5], [g#1,g#2]@15 ~", AW: "[c5,e5]@2 g4@2 g4 [c5,e5] ~ g4 [c5,e5]@8, [g1,g2]",
  AX: "[c5,e5] [g4,e5] [a4,f5] [g4,e5], [g1,g2]@15 ~", AY: "[c5,d5]@2 g4@2 g4 [c5,d5] ~ g4 [c5,d5]@8, [g1,g2]",
  AZ: "[g1,g2,g3,c4,d4] [g3,b3,d4]", BA: "~ c3 f3 g3 a#3 ~ g3 a3, [f2,c4]@15 ~, a3@5 a3@2 ~",
  BB: "[c4,d#4] a#3 c4 d#4 c#5 c5 a#4 c5, [g#1,g#2]@15 ~", BC: "~ a#4 c5 f5 f6 c6 a#5 c6, [c#2,c#3,g#3,c4,f4]@15 ~",
  BD: "~ g3 c4 [b3,d4] [c4,e4] g4 a4 [g4,b4], [c2,e3]", BE: "[a4,c5] g5 c6 [b5,d6] [c6,e6] g6 c7 [b6,d7], [c2,b2]",
  BF: "[c2,b2,c7,e7]@15 ~", // Cmaj7
})).s("gm_piano").gain(0.19)

stack(piano)