Strudelify

2 Sonatinas for Piano Anh.5

Leichte Sonatine

KeyG majorTempo80 bpm
0:00/0:00
// 2 Sonatinas for Piano Anh.5 — Leichte Sonatine
// 80 bpm, 4/4, key G major. 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, 3/8 at bar 36, 6/8 at bar 36, 3/8 at bar 41, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5410325; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 87 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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(`<
  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 AH AI AJ AK AL AM AN@3
  AO AP AQ AR AS@2 ~ AT AU AV AW@2 AX AY@2 AZ AP BA BB BC@2 ~ BD BE BF BG BH BI BJ@2 BK@2 BL BM BN BO BP
>`.pickRestart({
  A: "~@2 b3", B: "d4@2 g3 ~@3", C: "a3@2 g3@2 d4 ~", D: "~@4 g3 d4 b3 d4 f4@2 b3@2",
  E: "g3 e4 c4 e4 g3@2 a3@2 b3@2 c4@2", F: "d4 c4 d4 a3 g3 ~", G: "f#4 d4 b3 g3 a3 ~", H: "~@2 g4 d4 a3 c4",
  I: "b3 ~@3 a4 ~", J: "~@2 f#4 ~ g4@2 ~@4 e4 ~", K: "f#4 ~@5", L: "~ b3 d4", M: "g3 ~@3 a3@2", N: "g3@2 d4 ~@3",
  O: "g3 d4 b3 d4 f4@2 b3@2 g3 e4 c4 e4", P: "g3 a3 b3 c4 d4 c4", Q: "d4 a3 g3 ~ f#4 d4", R: "b3 g3 a3 ~@3",
  S: "g4 d4 a3 c4 b3 ~", T: "~@4 a4@2 ~@4 f#4 ~", U: "g4@2 ~@4 e4 ~ f#4@2 ~@2", V: "b3@2 d4@2 g3 ~", W: "~ a3 g3",
  X: "d4@2 ~@6 g3 d4 b3 d4", Y: "f4@2 b3@2 g3 e4 c4 e4 g3@2 a3@2", Z: "b3 c4 d4 c4 d4 a3",
  AA: "g3@2 ~@2 a3 c4 d4 c4 a3 c4 d4 c4", AB: "g3 b3 d4 b3 g3 b3 d4 b3 a3 c4 d4 c4",
  AC: "a3 c4 d4 c4 g3 b3 d4 b3 g3 b3 d4 b3", AD: "a3 c4 d4 c4 a3 c4 d4 c4 g3 b3 d4 b3",
  AE: "g3 b3 d4 b3 c4 d4 f#4 a4 d4 f#4 a4 d5", AF: "g4 ~ g3 b3 d4 g4", AG: "d4 b3 g3@4",
  AH: "~@9 g3 ~@2 d4 ~@2 d4 ~@2 a3 ~@2 c4 ~@2", AI: "c4 ~@2 g3 ~@2 d4 ~@2 b3 ~@11 b3 ~@2",
  AJ: "e4 ~@2 e4 ~@2 a3 ~@2 c#4 ~@2 c#4 ~@2 d4 ~@2 f#4 ~@2 f#4 ~@2", AK: "~@3 g3 b3!2 d4 f4", AL: "f4 e4@2 ~@4 g4",
  AM: "d4 b3 f#4 d4 c4 g3@2 ~", AN: "[~@3 f#4@6 e4@6 a3@3 c#4@3 d4@2 ~]/3", AO: "d4 e4 f#4 g3 a3 b3 d4 e4",
  AP: "f#4 g3 a3 b3 d4 e4 f#4 g3", AQ: "~@2 a3 ~@2 a3@2 ~", AR: "~@3 f#4@2 ~@3", AS: "[~ d4@2 ~@4 f#4@2 ~@7]/2",
  AT: "~@3 g3 ~@2 d4 ~@2 d4 ~@2 a3 ~@2 c4 ~@2 c4 ~@2 g3 ~@2", AU: "d4 ~@2 b3 ~@11 b3 ~@2 e4 ~@2 e4 ~@2",
  AV: "a3 ~@2 c#4 ~@2 c#4 ~@2 d4 ~@2 f#4 ~@2 f#4 ~@8", AW: "[~ g3 b3!2 d4 f4!2 e4@2 ~@4 g4 d4 b3]/2",
  AX: "f#4 d4 c4 g3@2 ~@3", AY: "[~ f#4@6 e4@6 a3@3]/2", AZ: "c#4@3 d4@2 ~ d4 e4", BA: "a3 b3 d4 e4 f#4 g3 ~@2",
  BB: "a3 ~@2 a3@2 ~@3", BC: "[~ f#4@2 ~@4 d4@2 ~@4 f#4@2 ~]/2", BD: "~@21 g3 ~@2",
  BE: "d4 ~@2 d4 ~@2 a3 ~@2 c4 ~@2 c4 ~@2 g3 ~@2 d4 ~@2 b3 ~@2", BF: "~@9 b3 ~@2 e4 ~@2 e4 ~@2 a3 ~@2 c#4 ~@2",
  BG: "c#4 ~@2 d4 ~@2 f#4 ~@2 f#4 ~@11 g3@3", BH: "b3!2 d4 f4!2 e4@2 ~", BI: "~@3 g4 d4 b3 f#4 d4",
  BJ: "[c4 g3@2 ~@4 f#4@6 e4@2 ~]/2", BK: "[~@3 c4@3 c#4@3 d4@2 ~@4 a3]/2", BL: "d4 f#4 a3 c4 f#4 b3 e4 g4",
  BM: "c4 e4 g4 b3 d4 g4 c4 d4", BN: "f#4 g4 e4 b3 c4 e4 g4 b3", BO: "d4 g4 f#4 d4 c4 b3@2 ~", BP: "d4@2 ~ g3@2 ~@3",
})).s("gm_violin").gain(0.3)

stack(violin)