Strudelify

Sonatina per flauto e pianoforte

J. C. Dovicchi

KeyE minorTempo132 bpm
0:00/0:00
// Sonatina per flauto e pianoforte — J. C. Dovicchi
// 132 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 5/4 at bar 47, 4/4 at bar 49) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5672663; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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.

// chords · piano
const piano = note(`<
  A@6 B@4 C@8 D@8 E@7 F@8 G@4 H@2 I@3 J K L M N O P@2 Q R@4 S T@2 U@6 V@5 W@6 ~ X@8 Y@6 Z AA AB AC AD AE AF AG AH AI AJ
  AK AL AM AN AO AP@8 AQ@2 Z AA AB AR AD AE AS AG AH AI AJ AK AL AM AT AO AU@2 AV@6 AW AX AY AZ BA BB@2
>`.pickRestart({
  A: "[~@13 [a#1,c#3]@20 ~ [a#1,c#3]@20 ~ [a#1,c#3]@20 ~ [a#1,c#3]@20, ~@13 [c4,g#4,c#5]@40 ~@2 [c4,g#4,c#5]@40 ~]/6", // A#m C#maj7
  B: "[~@2 [a#1,c#3]@20 ~ [a#1,c#3]@20 ~ [a1,a2,c4,a4,d5]@20, ~ [c4,g#4,c#5]@20 ~@11]/4", // A#m D7 C#maj7
  C: "[~ [a#1,c#3]@20 ~ [a#1,c#3]@20 ~ [a#1,c#3]@20 ~ [a#1,c#3]@20 ~ [c2,c3]@20 ~@2 [f2,e3]@20 ~, ~ [c4,g#4,c#5]@40 ~@2 [c4,g#4,c#5]@40 ~@2 [d4,a4,e5]@40 ~@3]/8", // A#m C Fmaj7 C#maj7 Dsus2
  D: "[[c2,b2,b4,f5,c6]@20 ~ [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [g2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [g2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [g2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [g2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [g2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [d#3,d#5,g#5]@2 [a#2,d#5,g#5]@2 [c3,c5,a5]@2 [g2,d#5,g#5]@2 [d3,b4,g5]@2 [f3,d5,f5]@2 [b2,d5,f5]@2 [d3,b4,g5]@2 [f3,d5,f5]@2 [b2,d5,f5]]/8", // F G#5 D#sus4 F G#5 D#sus4 F G#maj7 …
  E: "[~ [d3,b4,g5]@2 [f2,d5,f5]@2 c3@2 d#3@2 a#2@2 c3@2 d5 c5 d5 f5 c3@2 g2@2 c3@2 d#3@2 a#2@2 c3@2 d#3@2 a#2@2 [c3,g5]@2 f#5 a#5 d6 a5 c6 f5 d5 f5 g#5 e5 d5 a4 c5 f5 c3@2 g2@2 c3@2 d#3@2 a#2@2 c3@2 d#3@2 a#2@2 c3@2 g2@2 [g#2,c#4,a#4,d#5]@2 [c#3,f#3]@2 g2@2 [c3,f3]@2 f2@2 [b2,f3]@2 e2 a2 d3 a2 c2 ~ c3 ~ b2 ~ c3 ~ d#2 ~ d#3 ~ d3 ~ d#3 ~ d6@2 c6@2 f#3 ~ g3 ~ g5@2 [f#3,f#5], ~@5 c5 ~ d5 ~ f5 ~ e5 ~ d#3@2 a#2@2 a5 ~ e6 ~ c6@8 ~@6 g2@2 c3@2 d#3@2 a#2@2 c3@2 d#3@2 a#2@2 e6 ~ a5 ~ c5@8 [a4,c5,d5]@4 [f#4,b4,e5]@4 ~@6 [d4,b4,e5]@4 ~@2 [e4,a4,d5]@2 [a4,d5,e5]@2 [c5,f5,b5,c6]@8 d#6@8 g2 ~ g3 ~ b5@4 f#2 ~@2]/7", // G Dm C5 G#sus4 F#5 F5 Bdim F# …
  F: "[~ f3 ~ f#3 ~ d#2 ~ d#3 ~ d3 ~ d#5@2 d2 ~ d3 ~ f3 ~ b2 ~ c2 ~ c3 ~ b2 ~ c3 ~ d#2 ~ d#3 ~ d3 ~ d#3 ~ d6@2 c6@2 f#3 ~ g3 ~ g5@2 f#5@2 f3 ~ f#3 ~ d#2 ~ d#3 ~ d3 ~ d#5@2 d2 ~ d3 ~ g3 ~ a#3 ~ f2 ~ f3 ~ g#3 ~ f3 ~ e2 ~ e3 ~ g3 ~ e3 ~ f2 ~ f3 ~ g#3 ~ f3 ~ [e5,e6]@2 [d5,d6]@2 [c5,c6]@2 [b4,b5]@2 a2 ~ e3 ~ c3 ~ a2 ~ e2 ~ c3 ~ g#2 ~ d2 ~ c2 ~ g2 ~ [g#2,c4] d4 [g2,d#4] f4 d#4@2 g2, ~ g#5@4 f#5@6 d#3 ~ g5@8 ~@8 d#6@8 g2 ~ g3 ~ b5@4 f#2 ~ f#3 ~ g#5@4 f#5@6 d#3 ~ a#4@8 [f4,f5]@4 [g4,g5]@4 [g#4,g#5]@8 [b4,b5]@8 e2 ~ e3 ~ g3 ~ e3 ~ [a4,a5]@8 [g#4,g#5]@8 ~@8 c2 ~@2]/8", // E D C B G# Cm F G …
  G: "[~ g#2 ~ g2 ~ [c2,c3,f4,b4,d5]@4 [d#2,d#3,a4,c5,d#5]@4 [a4,c5,f#5]@4 [c5,f5,b5]@4 [a2,g3,b4,f5,c6]@21 ~ [f2,e3,g#4,d5,a#5]@21, ~ c4@4 ~@8 [f#2,f#3]@8 ~@43]/4", // Bdim Adim F#dim F A#7 F#
  H: "[~ [g2,f3,a4,f5,c6]@21 ~ d#6@5 c6@4]/2", I: "[~@2 b5@5 e5@5 ~ g5@5 c5@21 ~@9]/3",
  J: "~@5 [c3,c5,a5] [d#3,d#5,g#5] [a#2,d#5,g#5]", // F G#5 D#sus4
  K: "[b2,b4,g#5] [d3,d5,g5] [a2,d5,g5] [a#2,a#4,g5] [f2,c#5,f#5] [a2,a4,f#5] [c3,c5,f5] [g2,c5,f5]", // E G5 Dsus4 D# F#maj7 D F5 Csus4
  L: "[a2,a4,f#5] [c3,c5,f5] [g2,c5,f5] [a2,a4,f#5] [e2,c5,f5] [a2,a4,f#5] [c3,c5,f5] [g2,c5,f5]", // D F5 Csus4 D Fmaj7 D F5 Csus4
  M: "[a2,a4,f#5]@2 d#3@2 a#2@2 [c3,g5]@2 f#5 a#5 d6 a5 c6 f5 d5 f5, ~@4 g2 c3 d#3 a#2", // D C5
  N: "g#5 e5 d5 a4 c5 f5 c3@2 g2@2 c3@2 d#3@2 a#2@2, c3@2 d#3@2 a#2@2 e6 ~ a5 ~ c5@6",
  O: "[a#2,a#4,g5] [c#3,c#5,f#5] [g#2,c#5,f#5] [b2,b4,g#5] [f#2,d5,g5] [c3,c5,a5] [d#3,d#5,g#5] [a#2,d#5,g#5]", // D# F#5 C#sus4 E Gmaj7 F G#5 D#sus4
  P: "[c3,c5,a5] [d#3,d#5,g#5] [a#2,d#5,g#5] [c3,c5,a5] [g2,d#5,g#5] [c3,c5,a5] [d#3,d#5,g#5] [a#2,d#5,g#5]", // F G#5 D#sus4 F G#maj7 F G#5 D#sus4
  Q: "[c3,c5,a5]@2 d#3@2 a#2@2 [c3,g5]@2 f#5 a#5 d6 a5 c6 f5 d5 f5, ~@4 g2 c3 d#3 a#2", // F C5
  R: "[g#5 e5 d5 a4 c5 f5 c3@2 g2@2 c3@2 d#3@2 a#2@2 c3@2 d#3@2 a#2@2 c3@2 g2@2 c2 ~ c3 ~ b2 ~ c3 ~ d#2 ~ d#3 ~ d3 ~ d#3 ~ d6@2 c6@2 f#3 ~ g3 ~ g5@2 f#5@2 f3 ~ f#3 ~ d#2 ~ d#3 ~ d3 ~, c3@2 d#3@2 a#2@2 e6 ~ a5 ~ c5@8 ~@8 [c5,c6]@4 [d5,d6]@4 [d#5,d#6]@8 g2 ~ g3 ~ b5@4 f#2 ~ f#3 ~ g#5@4 f#5@6]/4", // C D D#
  S: "d#5@2 d2 ~ d3 ~ f3 ~ b2 ~ c2 ~ c3 ~ b2 ~, d#3 ~ g5@8 ~@6",
  T: "[c3 ~ d#2 ~ d#3 ~ d3 ~ d#3 ~ d6@2 c6@2 f#3 ~ g3 ~ g5@2 f#5@2 f3 ~ f#3 ~ d#2 ~ d#3 ~ d3 ~, ~@2 d#6@8 g2 ~ g3 ~ b5@4 f#2 ~ f#3 ~ g#5@4 f#5@6]/2",
  U: "[d#5@2 d2 ~ d3 ~ g3 ~ a#3 ~ f2 ~ f3 ~ g#3 ~ f3 ~ e2 ~ e3 ~ g3 ~ e3 ~ f2 ~ f3 ~ g#3 ~ f3 ~ [e5,e6]@2 [d5,d6]@2 [c5,c6]@2 [b4,b5]@2 a2 ~ e3 ~ c3 ~ a2 ~ e2 ~ c3 ~ g#2 ~ d2 ~ g#2 ~ g#3 ~ b3 ~ g#3 ~ g2 ~ g3 ~ a#3 ~ g3 ~ g#2 ~ g#3 ~ b3 ~ g#3 ~ [e5,e6]@2 [f5,f6]@2 [d#5,d#6]@2 [d5,d6]@2 [c5,c6]@2 [b4,b5]@2 [g#4,g#5]@2, d#3 ~ a#4@8 [f4,f5]@4 [g4,g5]@4 [g#4,g#5]@8 [b4,b5]@8 e2 ~ e3 ~ g3 ~ e3 ~ [a4,a5]@8 [g#4,g#5]@8 [e4,e5]@4 [g#4,g#5]@4 [b4,b5]@8 [e5,e6]@8 g2 ~ g3 ~ a#3 ~ g3 ~ c3 ~ g3 ~ d#3 ~]/6", // E D C B E F D# D …
  V: "[[g4,g5]@2 g2 ~ d#3 ~ b2 ~ [g4,g5]@2 e2 ~ e3 ~ d3 ~ e3 ~ g#2 ~ g#3 ~ f3 ~ g#3 ~ e2 ~ e3 ~ d3 ~ e3 ~ g#2 ~ g#3 ~ [b4,b5]@2 [a4,a5]@2 e2 ~ e3 ~ d3 ~ e3 ~ g#2 ~ g#3 ~ f3 ~ g#3 ~ a2 ~ a3 ~ e3 ~ d3 ~ c3 ~ e3 ~ b4@2 a4@2 f2 ~ c3 ~ e5@2, c3 ~ [b4,b5]@6 f2 ~ [g#4,g#5]@8 ~@8 [e5,e6]@8 [c5,c6]@4 f3 ~ g#3 ~ [g#4,g#5]@8 ~@8 e5@8 c5@4 c3 ~ a2 ~ b4@4 a2 ~]/5", // G B A B G# E C G#
  W: "[f2 ~ [d#2,d#5]@4 d#5 d5 d#5 f5 [b1,b2,b4,b5]@10 [a4,e5,g5,b5]@5 ~ [a4,d5,f5,a5]@5 [b2,b3,b4,e5,g5,b5]@10 ~ [f2,f3,a4,d5,f5,a5]@10 [e2,e3]@20 ~ [e1,e2]@20 ~@3, ~@3 d#3@2 ~@5 [f2,f3]@5 ~@11 [b4,e5,g5,b5]@20 ~@2]/6", // D# B Em Dm Em Dm E F …
  X: "[~@15 [a3,d4,f#4,a4], [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~, ~@8 [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [b3,e4,g4,b4]@15 ~@9]/8", // D E Em D Em D Em D …
  Y: "[~@11 [a3,c4,f4,a4], [e1,e2]@15 ~ [e1,e2]@15 ~ [d1,d2]@15 ~ [d1,d2]@15 ~ [e1,e2]@15 ~ [f1,f2]@15 ~, ~@8 [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [a3,c4,e4,g4]@15 ~ [a3,c4,e4,a4]@15 ~ [a3,c4,f4,b4]@15 ~@9]/6", // F E D E F Em D Am7 …
  Z: "e3 [b3,e4,g4], e5", AA: "[e3,d5]@2 g5 d5, ~ [a3,d4,f#4]", AB: "[e3,e5] [b3,e4,g4,a5]",
  AC: "e3 [a3,d4,f#4], b5@15 ~", AD: "e3@2 b5 d6, ~ [b3,e4,g4]", AE: "[e3,b5] [a3,d4,f#4,g5]",
  AF: "d3 [g3,a3,c4], a5@15 ~", AG: "d3@2 g5 a5, ~ [a3,c4,e4]", AH: "[e3,g5] [f3,a3,b3,e5]",
  AI: "b2 [f3,a3,c4], d5@15 ~", AJ: "a2 [e3,g3,b3]", AK: "a4 b4 d5 f5, ~ [e3,g3,b3]",
  AL: "e2@2 g5 a5, a5 ~ [f3,a3,b3]@2", AM: "b2 [f3,a3,c4], e5 ~ e5 ~", AN: "a2 [e3,g3,c4], e5@15 ~",
  AO: "d5 [e3,g3,b3,c5]", // Cmaj7
  AP: "[~@15 [a3,c4,e4,a4], [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [e1,e2]@15 ~ [d1,d2]@15 ~ [d1,d2]@15 ~, ~@8 [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [b3,e4,g4,b4]@15 ~ [a3,d4,f#4,a4]@15 ~ [a3,c4,e4,g4]@15 ~@9]/8", // Am E D Em D Em D Em …
  AQ: "[~@3 [a3,c4,f4,a4], [e1,e2]@15 ~ [f1,f2]@15 ~, ~@8 [a3,c4,f4,b4]@15 ~@9]/2", // F E F
  AR: "b5 c6 ~@6 [a3,d4,f#4]@8, e3 ~, ~@2 b5@13 ~", AS: "a5 g5 ~@6 [g3,a3,c4]@8, d3 ~, ~@2 a5@13 ~",
  AT: "a2 [e3,g3,c4], e5", AU: "[b4@8 [g4,d#5,f#5,b5]@23 ~, e2@23 ~@9, ~@8 e3@15 ~@9]/2",
  AV: "[c3,c5,a5] [d#3,d#5,g#5] [a#2,d#5,g#5] [c3,c5,a5] [d#3,d#5,g#5] [a#2,d#5,g#5] [c3,c5,a5] [g2,d#5,g#5]", // F G#5 D#sus4 F G#5 D#sus4 F G#maj7
  AW: "[d3,b4,g5] [f3,d5,f5] [b2,d5,f5] [d3,b4,g5] [f3,d5,f5] [b2,d5,f5] [d3,b4,g5] [f2,d5,f5]", // G Dm Bdim G Dm Bdim G Dm
  AX: "[c3,c5]@2 [d#3,d5]@2 [a#2,f5]@2 [c3,e5]@2 d5 c5 d5 f5 c3@2 g2@2, ~@8 d#3@2 a#2@2 a5 ~ e6 ~", // C D#maj7 A#5 C
  AY: "c3@2 d#3@2 a#2@2 c3@2 d#3@2 a#2@2 [c3,g5]@2 f#5 a#5, c6@4 ~@3 g2", // C5
  AZ: "d6 a5 c6 f5 d5 f5 g#5 e5 d5 a4 c5 f5 c3@2 g2@2, c3@2 d#3@2 a#2@2 c3@2 d#3@2 a#2@2 e6 ~ a5 ~",
  BA: "c3 d#3 a#2 c3 d#3 a#2 c3 g2, c5@2 [a4,c5,d5] [f#4,b4,e5]", // D7 Esus2
  BB: "[[g#2,c#4,a#4,d#5]@2 ~ g2@2 [c3,f3,d4,b4,e5]@2 ~ [b2,f3]@2 e2 a2 [a2,d3] c2 ~ c3 b2 ~ c3 ~ c2 c3 ~ f#3 ~ g#3 [c1,c2,c6,c7]@3 ~@3, ~@2 [c#3,f#3]@2 ~@3 f2@2 ~ [e4,a4,d5]@2 [a4,d5,e5]@2 ~@18, ~@13 [c5,f5,b5,c6]@6 ~ c6@6 ~@6]/2", // G#sus4 Bdim D5 C F#5 Dsus2 Asus4 F
})).s("gm_piano").gain(0.15)

stack(piano)