Strudelify

Nocturne for piano No. 8 (9) in E minor, H46b

John Field

KeyB♭ majorTempo120 bpm
0:00/0:00
// Nocturne for piano No. 8 (9) in E minor, H46b — John Field
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 86 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@2 B@8 C@4 D E@6 F@5 G@8 H@4 I J@8 K@4 L@6 M@7 N@8 O P Q@8 R@4>".pickRestart({
  A: "[~@59 bb3@5, ~@4 f5@27 bb3@5 [g3,e5]@28, ~@5 bb2@35 db4@14 ~ db4@9, ~@17 bb3@9 d4@15 ~@3 bb3@15 ~@5, ~@22 f4@19 ~@9 [e4,g5]@14]/2", // C Em
  B: "[~@119 a3@5 ~@88 bb3@6 ~@22 a3@5 ~@4 d4@5 a3@2, ~@2 bb2@56 bb3@8 bb2@20 d4@4 bb3@4 [gb3,eb5]@30 bb4@27 bb3@7 bb4@37 d4@4 bb3@5 f4@15 ~@4 db4@13 db4@10 ~@10, ~@2 f5@26 d5@25 d4@12 d5@33 ~@7 a3@9 c4@11 bb2@42 bb3@4 f4@20 d5@29 ~@12 [g4,a4]@14 ~@10, ~@8 d4@10 f4@20 d4@5 bb3@5 f4@24 d4@4 bb3@5 f4@17 ~@2 c4@10 c5@17 ~@9 bb3@15 d5@38 bb2@19 d4@10 [a2,e5]@28 ~@10, ~@13 bb3@10 d4@5 bb3@6 f5@64 ~@11 eb4@16 ~@6 d4@16 d4@8 c5@64 ~@9 a3@12 ~@5 [d3,f5]@11]/8", // Ebm Gsus2 A5 Dm
  C: "[~@11 a3@6 ~@22 ab3@5 ~@51 g3@5 ~@5 f4@10 ~@11 c4@2, ~@2 f4@15 [b2,e5]@27 c5@46 bb3@10 [f3,f5]@17 ~@11, ~@7 d4@11 ~@4 d4@9 d5@13 c3@22 g3@6 c3@30 ~@13 eb3@13, ~@26 ab3@9 d4@11 ~@3 bb3@8 e4@19 bb3@4 g3@5 [e4,e5]@17 ~@19 [f4,f6]@7, ~@30 f4@16 ~@7 g3@9 bb3@9 d5@30 ~@24 a5@3]/4", // E5 F E F
  D: "~@7 [f3,a4], ~ d3@7 c3@8, ~@6 bb5@15 eb5@11, ~@7 f4@15 eb4@10, ~@11 [bb3,d5]@11 ~@10", // F Bb
  E: "[~@61 bb3@5 ~@29 bb3@6 ~@87 a3@4, ~ bb4@26 d4@5 bb3@6 [g3,e5]@28 f5@28 d5@7 [f3,f5]@63 [gb3,eb5]@28, ~@3 bb2@35 bb4@14 g5@18 ~@8 bb3@12 d4@12 ~@8 bb3@15 ~@17 d4@8 f4@18 ~@6 a3@13 ~@5, ~@7 f5@37 ~@3 bb3@9 db4@11 [bb2,bb4]@35 ~@33 [bb2,d5]@33 ~@10 [eb4,c5]@14, ~@12 d4@5 bb3@5 f4@21 db4@9 [e4,bb4]@15 ~@6 d4@11 f4@18 ~@13 f4@30 bb3@14 bb3@9 ~ c4@14 c4@9]/6", // C F Ebm Bb Cm Edim
  F: "[~@39 bb3, ~@2 bb2@37 d4@4 bb3@5 f4@5 d4@5 bb3@8 [g3,eb5]@30 ~@4 bb3@10 d4@10 d5@32 g4@8, ~@2 bb4@29 c5@38 ~@2 eb4@13 eb4@8 f3@28 e3@19 c4@21, ~@14 bb3@14 d5@41 ~@11 g4@16 d4@9 f4@19 ~@6 bb3@5 c5@25, ~@19 f4@15 [f3,bb4]@35 ~@6 bb3@13 bb3@5 d5@21 [bb3,eb5]@10 ~ c4@9 g4@9 bb3@5 e3@12]/5", // Cm Bb5 Eb5
  G: "[~@11 c5@2 ~@51 a3@6 ~@51 a3@4 ~@36 bb3@5 ~@10 [a3,c5]@7 ~@8 [bb2,f3,bb3]@5 [bb2,bb3,d4]@4 ~ [bb2,bb3]@4 [bb2,bb3,d4]@4 ~ f3@3 [d4,a4]@2 ~@3 [bb2,f3,bb3,d4]@4 [bb2,f3,bb3,d4]@4 [bb2,f3,bb3,d4]@4 [bb2,f3,bb3,d4]@4 ~ f3@4 [bb2,f3,eb4]@2 ~@3 [bb2,f3,eb4,a4]@4 ~ [bb2,a4]@4 [bb2,f3,eb4,b4]@3, eb3@13 d3@16 [eb3,eb5]@13 f3@12 ~ [f3,c5]@18 ~@7 bb3@11 db4@17 bb3@4 [eb3,c5]@14 ~@9 bb3@5 eb3@9 g3@3 bb4@15 ~@16 bb4@17 d4@5 g4@4 [bb2,bb3,d4,ab4]@4 [bb2,bb3] ~@16 db5@9 eb5@14 ~@3, c5@5 f4@8 ~@6 f4@13 ~@10 bb4@17 ~@11 db5@46 ~@23 eb5@14 f3@13 [f3,d5]@17 ~@17 gb4@14 ~@3 bb4@17 [bb2,bb3,d4,d5]@4 ~@10 [f3,eb4,c5]@5 ~@3, ~@4 d5@9 ~ f5@18 ~@6 c5@8 d4@12 ~ eb4@13 ~@4 db4@10 g4@14 e3@16 ~@9 [d3,f5]@17 ~@5 c5@10 ~@39 f4@18 ~@8 b4@17 a4 ~@16, ~@7 c5@2 [a3,b4]@4 ~@11 bb3@8 ~@2 c4@13 ~@4 bb3@8 ~@11 e3@25 bb3@9 g4@12 gb4@9 ~@5 f4@12 ~@2 c4@13 d4@10 ~@4 eb4@12 ~@8 e4@23 ~@12 c5@13 ~@5 d5@9 ~@3]/8", // Am Bb5 Bb D5 Bb Bbsus4 Bbmaj7 Bbsus4 …
  H: "[~@2 [bb2,f3,eb4,a4]@4 ~ [bb2,a4]@4 [bb2,f3,eb4,a4] ~@4 [f3,a4]@4 [bb2,f3,eb4,a4,c5]@4 ~ f3 ~@10 f5@6 ~ bb2@2 ~@3 [bb2,d4]@5 [bb2,f3,d4]@4 ~ [bb2,f3]@4 [bb2,f3,bb3,d4]@4 ~ f3@3 ~ [bb2,f3,bb3] ~@4 f3@3 ~ bb2@4 [bb2,bb3,d4]@4 ~ bb2@4 [bb2,f3,bb3,d4,d5]@5 [bb2,f3]@2 ~@3 [bb2,eb4]@4 ~ [bb2,f3,eb4]@4 [bb2,f3,eb4]@4 [bb2,f3,eb4,a4]@4 ~ [f3,a4,d5]@4 [bb2,f3,a4] ~@2, ~@2 c5@9 eb5@13 b4@19 ~@5 e4@18 [bb2,bb3,d4,ab4]@4 a4@9 ~@9 db5@10 eb5@27 eb5@3, ~@6 [eb4,d5]@4 ~@5 [bb2,eb4]@5 ~@4 a4@5 c5@14 ~@10 f4@18 d4@2 ~@2 [bb2,d4,bb4]@5 ~@32 b4@13 ~@3, ~@16 d5@8 [bb2,eb4]@2 ~@3 [bb2,f3]@5 a4 bb2@7 ~@15 [d4,gb4]@5 g4@9 ~@8 [bb3,d4,b4]@4 ~@5 [bb3,d4]@4 ~@15 c5@9 c5@9 ~@3, ~@31 eb4@11 bb4@29 ~@13 c5@14 a4@5 d5@17 [bb2,eb4]@5 ~@3]/4", // Bbsus4 Bbmaj7 Bbsus4 F F7 Bb Bb5 Bb …
  I: "~@2 [bb2,f3,eb4,a4]@4 ~ a4@4 [f3,eb4]@2 ~@3 f3@2 ~@5 f5@9, ~@2 d5@9 bb2 ~@4 bb2 ~ eb4@14, ~@6 [bb2,f3,eb4,c5]@5 b4@5 c5@16, ~@21 a4@11, ~@11 bb2@5", // Bbsus4 F7 Bbsus4
  J: "[~ bb2@7 ~@37 bb4@28 ~@15 d5@6 ~@58 bb3@6 ~@67 eb5@3 ~@25 bb3@3, ~ bb4@16 bb3@23 ~@2 d4@32 ~@32 bb3@11 d4@4 bb3@6 g3@20 db4@12 bb2@54 f4@6 d4 f5@3 [bb3,e5]@5 d5@28, ~@15 bb2@3 f4@26 ~@29 f4@12 ~@26 f4@17 e5@31 ~@6 d4@10 f4@24 d4@5 c6@25 ~@10 bb3@10 d4@7, ~@20 d5@24 ~@38 bb4@13 f5@37 ~@4 bb3@6 g5@18 ~@10 bb3@11 d4@12 f5@13 bb3@4 bb5@5 a5@14 ~@5 d4@10 f4@12, ~@37 bb2@38 ~@19 bb2@38 db4@9 e4@17 f5@28 d5@32 g5@11 bb2@27]/8", // Bbdim
  K: "[~@27 a3@6 ~@91 bb3@4, ~ [gb3,eb5]@16 bb2@17 bb4@26 d4@4, ~@7 c4@15 ~ c4@12 ~@10 bb3@16 ~ d5@18 bb3@5 f4@5 d4@11 [bb2,d5]@27, ~@13 a3@14 ~@6 bb4@26 bb4@6 c5@63, ~@18 [eb4,c5]@17 ~@5 d4@16 a4@50 d4@5 bb3@4 f4@13]/4", // Ebm Bb Cm
  L: "[~@24 a3@5 ~@24 a3@6 ~@32 c3@6 ~@18 a3@5 ~@22 bb3@6 ~@27 [c4,a4]@4 ~@10 [bb3,bb4]@3, ~ [a2,e5]@29 ~@10 a3@9 d4@10 bb2@18 g5@4 d4@2 e5@3 g3 d5@7 ~@3 c4@13 c4@12 ~@7 b3@8 ~ c4@10 f5@22 ~@9 d3@13, ~@7 db4@13 db4@10 f5@29 e5@14 a5@18 c5@31 ~@11 e5@17 ~@14 eb3@16 ~@12, ~@11 a3@13 ~@5 d3@31 ~@6 d4@6 g3@4 f4@4 f5@12 ~@9 a3@14 ~@5 [ab3,d5]@17 ~@11 f3@32 ~@12, ~@15 [g4,a4]@16 ~@5 d4@9 f4@15 ~@4 f5@5 bb5@23 ~@14 f4@16 ~@2 f4@10 g3@16 ~@3 f4@17 [f4,f5]@10 ~@4 [f4,f5]@8]/6", // F Bb A5 Abdim Gsus2 F
  M: "[~@13 ab4@6 ~@35 f5@3 ~@49 b3@4 ~@24 eb4@7 ~@36 bb3@5 ~@9 bb3@5 ~@9 bb3@14 ~@5, ~ c3@18 b2@33 [g3,g5]@5 [c3,eb5]@17 ~@10 c5@16 ~@10 eb5@15 f5@17 ~@13 f3@18 ~@9 [e3,g4]@16 ~@26, ~@6 f5@14 g4@29 e5@8 ~@14 [f3,d5]@13 g3@13 [g3,d5]@15 ~@7 eb4@7 ~@3 f4@12 ~@5 d4@13 d4@9 [eb3,c5]@16 ~@12 [f3,bb4]@28, ~@7 eb4@14 ~@4 f5@22 d4@10 ~@5 eb4@12 ~@2 d4@12 g4@12 ~ f4@10 ~@4 g4@11 ~@25 bb3@12 bb3@9 ~ c4@11 ~@2 c4@11 ~@4 d4@14 ~@9, ~@12 f3@9 ~@7 d4@6 g3@7 f4@16 ~@10 g3@7 ~@5 ab3@8 ~@6 eb4@8 ~@9 c4@13 a3@18 [bb2,d5]@32 ~@51]/7", // G Cm Em Dm G5 Cm Bb5 Bb
  N: "[~@31 e5@7 ~@49 bb3@5 ~@71 ab3@6 ~@11 g3@4 ~@10 bb3@5 ~@13 a3@7 bb3@3 ~@12 bb3@4 [bb2,f3,bb3,d4]@5 [bb2,f3,bb3,d4]@4 ~ bb2@3 ~ [bb2,bb3,a4]@4, ~ a4@37 eb5@28 f3@26 e3@12 bb3@2 a5@12 bb3@3 a6@3 e3 g6@5 c4@5 bb3@4 eb3@10 b4 c5@5 ~@14 eb3@15 bb4@16 ~@11 c5@8 bb4@24 g4@9 ~@4, ~@6 c4@32 g3@14 gb4@9 bb3@5 d5@16 ~@10 c5@16 g5@5 gb6 c4 g6@3 bb6@21 c5@8 c5 a3@5 d3@18 ~@4 c4@11 ~@3 d4@11 ~@5 eb4@14 ~@8 e4@20 [d4,ab4]@4 ~@5, ~@17 f4@22 ~@4 eb4@10 gb3@16 ~@5 bb3@4 [f4,db5]@16 ~@5 gb5@44 ~ f4@9 ~@5 b3@12 ~@4 eb5@11 f3@15 ~@33 f3@5 gb4@13 ~@5, ~@23 f5@16 ~@9 bb3@7 ~@2 eb4@12 ~ d4@11 ~@2 db4@12 ~@4 c4@2 g5@3 bb5@39 ~@2 d5@8 ~ f5@22 ~@3 c5@7 ~@13 d5@20 ~@14 f4@18 ~@5]/8", // Bb Bbmaj7 Ddim Db
  O: "[bb2,bb3,d4,bb4]@4 ~ bb2@3 ~ [f3,d4]@3 ~ [bb2,f3,d4]@3 ~ [bb2,f3]@4 [f3,eb4,a4] ~@3 [bb2,f3,eb4] a4 ~@2 eb4 [bb2,a4]@2, ~@4 [bb3,d4,b4]@4 [bb3,c5]@4 db5@8 ~ eb5@4 d5@4 c5@3, ~@12 bb3@4 [bb3,d4,d5]@4 ~ bb2@2 ~@7 f3 ~", // Bb Dm Bb Bb5 F7 Bbsus4 Bbmaj7 Bb …
  P: "~@2 [bb2,f3,b4]@4 ~ bb2@3 ~ [bb2,f3,eb4,a4]@4 ~ [bb2,f3,eb4,a4]@4 [f3,eb4,d5]@4 ~ a4@4 [bb2,f3,eb4] ~@2, ~@2 [eb4,a4] ~@3 [f3,eb4,a4,c5]@4 ~ d5@9 ~@4 [f3,eb4,c5]@5 ~@3, ~@15 eb5@8 ~@6 b4@3", // Bb Bbsus4 Dm Bbsus4 Ebdim F7
  Q: "[~ [bb2,f3,eb4,a4,c5] ~@3 a4@2 [bb2,f5]@6 ~@21 [bb2,bb3,d4,g4]@4 [d4,ab4]@4 ~ [bb2,d4]@4 [d4,bb4]@4 [bb2,bb3,d4]@5 [bb2,bb3]@4 [bb2,d4]@5 [bb2,f3,bb3,d4,d5]@5 ~ [bb2,a4]@5 ~ [bb2,eb4]@4 ~ bb2@4 ~ bb2@3 ~ a4@4 [bb2,gb3,eb4,a4,d5]@4 ~ bb2@2 ~@2 [bb2,gb3]@5 [bb2,gb3,eb4,c5]@5 [f3,eb4] ~@5 f3 ~@5 [bb2,f5]@8 [bb3,bb4]@3 ~@10 eb5@6 [d5,f5]@5 ~ c5@5 ~ f4@7 bb4@3 ~@10 eb3@6 ~@7 [g3,e4,c5]@7 [a3,f4]@7 [bb2,bb3]@3 ~@12 eb2@8 f3@10 b2@11, ~@4 eb4@4 ~@5 bb4@24 ~@5 a4@8 ~ b4@19 eb5@16 ~@13 eb5@15 ~@44 [e5,g5]@7 ~@91, ~@21 e4@17 ~@4 bb3@5 ~@23 gb3@6 gb3@5 [gb3,eb4,c5]@5 [gb3,eb4]@4 [bb2,gb3]@5 ~@4 gb3@2 ~@21 eb4@12 ~@45 d3@12 f2@22 ~@7 d2@10 ~@5 f2@4 ~@17, ~@25 f4@12 ~@23 db5@11 ~@6 d5@9 ~@4 c5@9 ~@5 d5@10 ~@28 d5@11 ~@11 [eb5,a5]@8 [d5,bb5]@20 ~@64, ~@29 gb4@8 ~@19 c5@15 ~@15 b4@14 a4 ~@13 b4@6 c5@15 ~@56 [f3,f4,d5]@14 ~@7 [d4,bb4]@18 ~@26]/8", // F7 Bb5 Gm Ddim Bb Gm Bb Bbmaj7 …
  R: "[~@51 bb3@56 ~@21, ~@3 [eb3,a3]@34 d3@64 ~@27, ~@27 bb1@14 f3@64 ~@23, ~@31 f2@64 ~@33, ~@17 bb2@32 ~@15]/4", // Ebdim
})).s("gm_piano").gain(0.24)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A ~@2 B@3 C@3 ~@4 D ~@4 E@3 F@2 ~@4 G ~@3 H@2 I J@2 K L M N@3 O ~ P@3 ~ Q@4 ~@3 R@2 ~@3 S@2 ~ T@3 ~ U@2 ~ V W X Y Z@2
  AA AB@2 ~ AC AD@3 ~@2
>`.pickRestart({
  A: "~@13 d4@13 ~@6", B: "[~ f3@32 ~@15]/3",
  C: "[~@35 d4@14 ~@5 bb3@17 ~@25, ~@13 f4@30 ~@6 d4@18 ~@29, ~@30 f3@61 ~@5]/3", D: "~@14 a3@7 ~@11",
  E: "[~@10 d4@14 ~@5 bb3@20 ~@10 d4@13 ~@24, ~@5 bb4@64 ~@27, ~@8 d4@7 ~@17]/3",
  F: "[~@9 d4@14 ~@5 bb3@15 ~@21, ~@23 d4@16 ~@25]/2", G: "~@3 g3@4 ~@9",
  H: "[~@23 bb3@8 d4@5 f3@5 f3@4 f3@5 ~@4 f3@4 ~@6, ~@23 d4@2 ~@39]/2", I: "~@29 a4@2 ~",
  J: "[~@7 f3@4 ~@18 a4@5 ~@4 a4@4 [f3,d4]@3 ~@2 f3@6 bb3@5 bb3@4 ~@2, ~@29 eb4@2 ~@4 f3@7 ~@22]/2", // Dm
  K: "~@11 bb3@4 ~ f3@4 f3@5 f3@4 ~@3", L: "~@2 eb4@2 ~@3 [f3,a4]@5 a4@4 a4@4 ~@9 eb4 ~@2", M: "~@11 a4 ~@11 f3@9",
  N: "[~ [f3,d4]@15 f3@22 ~@3 bb3@34 ~@21, ~@13 f3@12 ~@7]/3", O: "~@5 d4@16 ~@11",
  P: "[~@11 f3@12 ~@9, ~@13 bb3@10 ~@25]/3",
  Q: "[~@43 d4@15 ~@5 bb3@16 ~@49, ~@9 f4@17 ~@38, ~@12 d4@9 ~@43, ~@29 bb3@18 ~@81, ~@36 f3@61 ~@31]/4",
  R: "[~@15 a3@11 ~@6]/2", S: "[~@28 c4@17 ~@19]/2",
  T: "[~@43 a3@29 ~@24, ~@3 f4@3 ~@10, ~@23 d4@13 ~@60, ~@9 bb3@3 ~@20, ~@32 f3@39 ~@25]/3", U: "[~@13 g4@34 ~@17]/2",
  V: "~@8 f3@19 d4@2 ~@3", W: "~@4 [bb2,f3,bb3,d4]@5 ~ bb2@4 ~@9 [f3,bb3]@4 ~ [f3,d4]@4, ~@9 d4@5 ~@18",
  X: "f3@3 ~ f3@4 bb2@4 ~@20", Y: "~@21 bb2@3 bb2@5 a4@3, ~@5 a4 ~@2",
  Z: "[~@8 f3@5 ~ bb2 ~@6 bb3@4 ~ [bb2,f3,d4]@3 ~ [bb2,bb3,d4]@4 f3@4 ~ [f3,bb3]@3 f3@5 [bb2,f3,bb3]@4 f3@5 [f3,d4]@4 [f3,bb3]@4, ~@13 d4@12 bb3@4 f3@4 ~@31, ~@13 f3@7 [bb2,f3]@6 ~@12 bb2@3 ~@23, ~@21 db4@17 ~@26]/2", // Bb Bb5 Dm Bb5
  AA: "~@7 eb4@2 ~@4 a4@4 ~ a4@4 a4@4 eb4@5 ~",
  AB: "[~@4 eb4 ~@4 a4@4 a4@5 ~ a4 ~@4 [bb2,eb4,a4] ~@6 f3@7 [f3,d4]@2 ~@24, ~@8 eb4@5 ~@5 bb2@2 ~@9 a4@9 bb2@19 ~@7]/2", // Eb Dm
  AC: "~@12 eb4@9 ~@11", AD: "[~@21 f2@4 ~@11 f2@27 ~@33, ~@7 g3@6 ~@19, ~@35 c3@61, ~@35 f3@8 ~@53]/3",
})).s("gm_piano").gain(0.16)

stack(piano, piano_soft)

More by John Field