Strudelify

Sonata per piano in Re maggiore "La Chasse", Op. 16: I. Allegro

Clementi

KeyG majorTempo120 bpm
0:00/0:00
// Sonata per piano in Re maggiore "La Chasse", Op. 16: I. Allegro — Clementi
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 41 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "A.PIANO 1"
const piano = note("<A@6 B@3 C@4 D@6 E@2 F@3 G@2 H@7 I@8>".pickRestart({
  A: "[~@17 f#4@5 ~@12 a4@4 ~@13 a4@6 ~@49 c5@5 ~@13 c5@5 ~@32 f#5@5 ~@9 [c4,g5]@7 ~@2 b3@8, ~@2 g4@20 g4@16 b4@19 g4@25 ~@2 d4@15 ~@12 g3@38 e4@18 ~@16 g5@9, ~@30 d4@9 g3@43 ~@6 e5@11 ~@12 b4@17 ~ d5@22 ~@6 g4@9 [d4,g5]@11 ~@15, ~@75 d5@18 [a3,d5]@19 ~@36 g5@18 ~@7 f#5@4 ~@5 f#5@3 ~@7]/6", // C5 G5 D5
  B: "[~@5 a5@5 ~@8 a5@2 g5@8 f#5@2 ~@7 d5@2 c5@8 b4@2 ~@23 b4@23 ~, d4@10 b5@10 ~@10 e5@10 ~@10 a4@9 f#4@17 ~@20, ~@11 g4@10 ~@9 c4@19 c#4@27 ~@20, ~@57 g4@4 ~@10 g4@23 ~@2]/3",
  C: "[~@52 a4@4 b4@13 a4@5 g4@18 ~@13 e5@5 ~ a3@7 ~@4 c5@6, ~@21 g4@18 ~ g4@17 ~@35 d5@18 d5@18, ~@35 f#4@11 ~ d4@9 ~@36 f#3@36, ~@101 d4@10 ~@7 d4@10]/4",
  D: "[~@12 c5@5 d5@19 ~@13 f#5@4 ~@8 f#5@2 [c4,g5]@7 f#5@3 ~@13 a5@6 ~@8 a5@3 ~@17 d5@2 c5@8 b4@3 a4@8 g4@3 ~@7 g4@3 [g4,b4]@23 ~@15, b4@18 ~@18 [e4,g5]@17 g5@9 ~@11 g5@16 ~@3 b5@12 ~@6 f#5@5 ~@77, ~@45 g4@9 d4@10 ~@9 b3@13 ~@27 c4@19 ~ c#4@22 ~@37, ~@82 d4@9 ~@12 g5@10 e5@11 ~@20 f#4@12 ~@36]/6", // C5 G Em
  E: "[~@8 a4@10 ~@9 a4@9 [g4,b4]@10 ~@14 b4@4, ~@7 c5@15 d5@7 ~@27 d4@8, ~@13 c5@6 ~@4 [f#4,a4]@9]/2", // G F#m
  F: "[~@15 c#5@5 ~@14 e5@5 b4@9 ~@4 c5@6 g4@9 ~@5 c5@5 d5@19, ~ [a4,c5]@19 [b4,d5]@19 d5@18 ~@10 d4@9 ~@20, ~@10 d4@12 ~@8 d4@11 ~@7 a4@9 ~ b4@19 ~@19]/3", // Am Bm
  G: "[~@15 f#5@5 ~@11 c4@8 ~@2 b3@12 ~@5 c6@6, ~ g5@19 [d4,g5]@13 ~@20 d4@11, ~@2 e4@19 ~@9 b5@9 c6@4 ~@21, ~@11 g4@10 ~@8 a5@4 ~@8 d6@19 ~@4]/2", // G5
  H: "[~@19 f#5@2 ~@18 b4@2 ~ [d3,c4,a4]@7 g4@3 [d3,c4]@4 ~@8 [c4,a4]@21 g4@17 ~@26 a4@11 ~@42 c#5@5 ~@34 c5@4, [g4,b5]@15 ~@6 c3@21 ~@75 d4@15 ~@16 f#4@20 a4@20 ~@28 a4@8, ~@8 a5@6 ~@7 e5@11 c5@10 ~@19 b4@5 ~@41 c5@21 c5@19 ~ a4@19 c5@20 ~@14 e5@8 ~@15, ~@11 g5@11 ~@7 d5@5 ~@7 b4@3 ~@8 a4@9 ~@47 a4@20 ~@11 g4@10 ~@9 d4@14 ~@5 d4@15 ~@4 d4@13 ~@15, ~@122 d5@10 ~@11 b4@8 ~@11 b4@10 ~@14 [b4,d5]@20 [b4,d5]@18]/7", // D7 F G Bm
  I: "[~ g4@10 ~@4 c5@5 d5@20 ~@14 f#5@5 ~@18 c6@3 ~@17 c6@7 ~@20 f#5@3 ~@19 b4@2 ~@2 d3@5 ~@3 g4@3 ~@13 b4@5 [f#4,a4]@50 ~@27, ~ b4@19 ~@20 [e4,g5]@19 [d4,g5]@11 [c4,b5]@10 b3@18 ~@6 [g4,b5]@14 ~@9 c3@24 ~@105, ~@50 g4@12 ~@5 a5@6 ~@8 d6@19 ~@13 a5@6 ~@8 e5@15 ~@7 a4@11 ~ a4@18 ~@77, ~@92 d4@13 ~@10 g5@13 ~@8 d5@6 ~@6 b4@3 ~@105, ~@139 c5@12 ~@105]/8", // F#m Em G5 Cmaj7 G
})).s("gm_piano").gain(0.32)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<A@4 B ~@3 C@4 ~ D@2 E@2 F@2 G ~@3 H ~@4 I@2 ~@3 J@2 ~@2 K L@3>".pickRestart({
  A: "[~@13 d4@9 b3@16 ~@9 d4@10 ~@44 d4@11 ~@7 d4@9, ~@3 g3@27 ~@27 b3@25 ~@46, ~@65 d4@17 ~@46, ~@75 f#3@37 ~@16]/4",
  B: "~@9 d4@14 ~@9, ~ b3@22 ~@9",
  C: "[~@4 g4@3 ~ d4@11 d3@11 ~ [d4,f#4,a4]@15 ~@26 b3@17 ~@7 d4@10 ~@9 d4@10 ~@3, ~@54 g3@23 ~@12 g3@37 ~@2, ~@63 d4@15 ~@28 b3@20 ~@2]/4", // D
  D: "[~@8 d4@9 ~@9 d4@10 ~@28, g3@9 ~@7, ~@17 b3@19 ~@28]/2", E: "[~@7 g4@3 ~@6]/2",
  F: "[~@27 d4@10 d3@11 [f#4,a4]@12 ~@4, ~@6 d4 ~]/2", G: "~@17 d4@12 ~@3", H: "~@23 d4@9, ~@13 b4@19",
  I: "[~@11 b3@8 ~@13, f#4@23 ~@41, ~ g3@30 ~@33]/2", J: "[~@10 d4@9 ~@10 d4@11 ~@24, ~@5 b4@5 ~@6]/2",
  K: "~@21 c4@5 ~@6", L: "[~ [d3,c4]@18 ~@40 b3@27 ~@10, ~@19 c4@50 ~@27, ~@5 g3@16 ~@3, ~@58 g4@27 ~@11]/3",
})).s("gm_piano").gain(0.16)

stack(piano, piano_soft)

More by Clementi