Strudelify

Nocturne In G Minor, Op. 15 Nr. 3

Chopin Frederic

KeyD minorTempo120 bpm
0:00/0:00
// Nocturne In G Minor, Op. 15 Nr. 3 — Chopin Frederic
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 124 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@5 B@4 C@6 D@4 E@2 F@5 G@4 H@5 I@6 J@3 K@3 L@7 M@8 N@4 ~@4 O P@3 Q@5 R@6 S@8 T@2 U@3 V@3 W@5 X@7 Y@6 ~@5
>`.pickRestart({
  A: "[d5@11 ~@21 bb4@8 ~@16 a4@7 ~@15 g5@11 f5@71, ~@11 g4@28 ~ a4@16 ~@14 d5@11 ~@79, ~@22 g2@17 ~@5 bb4@18 ~@5 c5@6 ~@87, ~@48 g4@14 ~ [g3,bb3,d4,bb4]@10 ~@87, ~@49 g2@13 ~@9 g2@10 ~@79]/5", // Gm
  B: "[~@21 d5@10 ~@39 d5@8 ~@42 d5@8, ~ bb2@30 ~@8 bb2@23 bb2@16 ~@8 bb2@16 [bb3,d4]@20 ~@6, ~ d5@20 ~@10 c5@15 d5@23 ~@25 d5@17 bb2@12 ~@5, ~@11 bb3@20 ~@8 f3@39 [gb3,a3,c5]@16 ~@7 bb4@21 ~@6, ~@27 [bb3,d4,f4]@12 ~@4 f3@18 ~@3]/4", // Bb Gbdim Bb
  C: "[~@54 bb4@8 ~@5 bb4@4 ~@7 a4@6 ~@6 c5@5 ~@46 [a3,a4]@14 a4@21 ~@16, ~@2 [d3,a4]@25 ~@9 g4@27 a4@11 ~@10 bb3@12 ~@15 d2@64 ~@17, ~@24 d5@15 ~@6 g2@17 ~@9 g4@13 d4@3 ~@8 d5@13 ~@3 f5@77 ~@4, ~@85 bb4@11 ~@6 g5@64 ~@26, ~@119 [a3,f4,a4]@14 d3@8 f4@34 ~@17]/6", // A D5 Dm
  D: "[~ f5@10 ~@16 f5@7 ~@16 f5@7 ~@15 f5@8 ~@18 eb5@9 c5@18 ~@3, ~@11 [a3,e5]@23 [f4,a4]@21 ~@2 [db4,g4,e5]@18 ~@5 [f4,d5]@20 ~@28, ~@19 d3@14 ~@9 d3@14 ~@9 a2@10 ~@15 d3@11 ~@27]/4", // A5 F Dbdim Dm
  E: "[~@4 d5@11 ~@19 bb4@8 ~@4 bb4@4 ~@7 a4@7, ~@15 [bb3,g4]@26 ~@2 [g3,a4]@10 ~@11, ~@25 g4@6 ~]/2", // Eb Gsus2
  F: "[~@4 c5@4 ~@7 g5@8 ~@22 a2@20 ~@23 bb2@4 ~@16 d5@8 ~@36 d5@8, [g3,bb3,d4,bb4]@8 d5@11 ~@4 f5@66 ~@34 f3@36 ~, ~@23 a2@22 ~@54 bb3@17 [gb3,a3,eb4]@15 ~@6 f4@22 ~, ~@32 [f3,eb4]@21 ~@35 d5@20 ~@8 c5@11 ~@3 d5@15 bb2@14 ~, ~@123 bb2@15 [bb3,d4]@21 ~]/5", // Gm Ebdim F7 Bb
  G: "[~@37 d5@3 ~@8 d5@3 ~@17 d5@4 ~ d5@2 d5@4 ~@9 d5@7 ~@24 bb4@8 a4, [gb3,a3,c5]@15 ~ d5@12 ~@12 d5@5 eb5@6 ~@34 eb5@10 ~@33, ~@8 [bb2,f3]@19 ~@7 bb2@17 [d3,gb3,a4]@28 ~@16 [d3,g4]@32 ~, ~@24 [bb3,bb4]@26 ~@59 g1@18 ~, ~@42 f5@8 ~@29 f5@15 ~@34]/4", // Gbdim Bb5 D G5 Bb
  H: "[~@15 a4@7 ~@4 c5@4 ~@7 g5@8 ~@32 d4@13 ~@42 f5@8 ~@16 f5@4, ~@3 bb4@19 ~ bb4@10 ~@13 f5@54 d3@24 ~@16 [g4,e5]@20, ~@8 g4@14 [g3,bb3,d4]@8 [g2,d5]@15 d2@3 ~@6 [a3,f4,a4]@22 a4@14 a4@51 ~@19, ~@69 d3@22 [a3,d4]@23 [a3,ab4]@27 ~@8 d3@11, ~@77 f4@64 ~@19]/5", // C Gm G5 Dm D5 Amaj7
  I: "[~@19 f5@6 g4@2 ~@13 f5@7 ~@22 [a3,d4,f4]@20 d4@53 ~@42 gb4@8, ~@4 a4@21 ~@8 a2@13 ~@2 d5@82 ~@12 c5@20 c5@16 g4 eb2@13, ~@11 d3@14 [a3,db4,e5]@21 ~ f4@21 ~@102 b4@22, ~@16 a3@7 ~@34 [eb3,c4]@7, ~@55 d3@21 ~@79 eb2@19 a4@18]/6", // Dm A Cm
  J: "[~@17 c5@9 b3@3 ~@6 eb2@13 ~@21 b4@10 ~@14 e4@3, [eb3,gb3,a3,c4]@27 ~@23 [d3,b3]@27 ~@6 g4@13, c5@17 ~@9 b4@43 ~@10 a4@17, ~@8 eb2@18 [eb3,g3]@22 ~@13 d2@18 ~@7 gb4@10, ~@29 d2@3]/3", // Ebdim G Eb
  K: "[~@20 a4@7 ~@9 d2@14 ~@41 f4@5, ~@4 c4@23 gb3@4 ~@45 [ab3,bb4]@20, ~@5 d4@23 [d3,b3]@3 ~@19 [d3,f3,ab3,b3]@26 ~@5 ab4@15, ~@9 e5@20 b4@37 b4@30, ~@13 [d2,d5]@17 ~@29 d2@25 [d2,gb4]@12]/3", // Absus2 G Ddim D
  L: "[f4@2 ~@16 b4@9 ~@8 d2@18 ~@70 ab4@9 ~@68 eb4@9 ~@10 eb5@5, ~@2 [d3,ab3,b3]@25 [d3,f3,bb3]@27 [db3,gb3]@23 db3@5 gb4@4 db2@7 eb4@4 db3@16 db5 db2@18 bb4@42 b4@18 [db2,f4]@17 [g3,bb3]@4 ~@11, ~@2 b4@16 ~@9 bb4@42 ~ bb4@29 f3@33 [db3,gb3,bb3]@24 db3@24 bb4@30 ~@5 e5@9, ~@11 d2@18 ~@24 bb3@23 ~ [gb3,bb3]@25 [b3,db4]@31 ~@8 db2@24 db2@23 gb4@22 e4@14, ~@63 db2@15 ab4@9 f4@16 ~@4 eb5@26 ~@22 bb3@29 [db3,bb3,ab4]@26 ~@14]/7", // Abdim Bb Gb5 Db Gm Gb Bsus2 Bbm7
  M: "[~@29 e4@3 ~@11 g4@6 ~@15 eb5@4 ~@2 d4@2 ~@9 f4@7 ~@12 db5@6 gb4@2 ~@32 eb5@8 ~@11 ab4@7 ~ gb4@6 [f4,b4,d5,ab5]@7 ~@58 gb3@4 ~@10 db2@4, ~@2 eb4@5 ab3@9 [db2,f5]@6 f4@5 [bb3,db4]@22 ab4@2 ~@3 e6@14 ab3@20 gb4@3 ~ d6@14 eb4 ~@2 db6@44 ~@13 [c5,eb5,a5,eb6]@8 ~@46 ab4@25 ~@11, ~@6 db3@23 ab4@9 [db2,db3]@12 ~@8 [db2,db3,eb6]@11 gb4@19 d5@18 db5@47 ~@5 [d5,f5,b5]@9 ~@53 ab5@35 ~, ~@8 [b3,gb4]@22 ~@7 g5@12 e5@20 b3@3 gb5@17 [bb3,db4]@17 a3@7 [db1,db2]@5 c5@7 a4@4 f6@4 [db1,db2,eb6]@15 [a4,eb5,gb5,c6,gb6]@20 ~@12 [eb4,a4,c5,gb5,c6]@12 ~@6 [c4,gb4,a4,eb5,a5]@25 ~@11 db3@8 f3@13 ~, ~@12 gb5@18 ~@3 ab5@17 [b3,eb4]@20 ~@6 [db2,db3,f5]@14 ~@5 [db2,db3,db6]@11 ~@6 c6@13 [a3,c4,eb4,gb4,f5]@28 ~@34 [d4,ab4,b4,f5]@19 ~@15 [db4,f4,f5]@25 ~@10]/8", // Fdim Db Bbm Adim Db Dbsus2 Bdim B5 …
  N: "[~@8 [a3,d4,gb4,c5,gb5]@23 ~@14 gb3@5 ~@24 [gb3,a4]@29 ~@16 gb3@6 ~@3, ~@31 [db5,f5]@19 f3@34 ~@44, ~@41 db3@10 ~@10 db2@23 ~@44, ~@73 [c4,d5]@29 ~@26]/4", // D7 Gbm Db Csus2
  O: "~ e4@2 a4, ~ c5@3",
  P: "[~@43 a4@8 d3@8 d3@7 [c3,g4]@8 f3@8 f3@7 ~ [e3,g4]@6, f4@30 ~@5 g4@17 ~@22 [f4,a4]@17 ~@5, ~@17 bb4@13 ~@59 c5@7, ~@27 a4@13 ~@11 [a3,f4]@17 ~@28]/3", // C5 Em F Dm
  Q: "[~ a3@8 ~ a3@7 [d3,f4,a4,d5]@8 g3@7 g3@8 e5@9 ~@27 [a4,d5]@7 ~ b4@2 ~@5 a4@5 ~@4 d2@15 ~ a4@8 ~ [f4,a4]@4 ~@3 [a2,e4,c5]@8 [d3,f4,a4]@8 [g4,bb4]@12, ~ [e4,a4,c5]@18 ~@6 [g4,bb4,d5]@16 ~@8 f5@20 ~@14 e5@11 ~@5 [f4,d5]@17 ~@8 d5@9 ~@27, ~@57 f2@12 ~@6 [d2,f5]@9 ~@7 [a2,e4,c5]@11 ~@23 d2@7 ~@28, ~@66 e2@18 [e2,ab4]@10 ~@5 a4@8 ~@8 c5@12 ~@5 a4@4 ~@24]/5", // Dm D5 F Am Dm Gm Am Gm …
  R: "[~@13 [d4,g4,bb4]@8 e4 ~@7 a3@5 ~@3 c4@15 [f3,c4,f4,a4]@10 ~@8 [a2,db4,a4]@7 ~@9 [a2,db4]@9 ~ bb2@12 ~@31 a4@9 ~@15 [g2,bb4]@7 ~@7 g4@8 a4@7, ~@21 [a2,db4,a4]@12 ~@4 [c3,e4,g4]@27 ~@14 [g2,d4]@11 ~@59 [d2,f4]@22 a4@10 ~@12, ~@29 [d3,d4,f4]@12 ~@21 [d4,g4,bb4]@11 ~@4 bb4@9 a4@14 ~@23 c5@27 ~@20 c4@17 ~@5, ~@86 e4@5 ~@4 g4@29 ~@46 c3@22]/6", // Gm F A Gm A C G5 Dm …
  S: "[~@19 e4@6 ~ f4@7 f3@6 [e3,c4,g4,c5]@7 a3@7 a3@7 d5@7 g3@7 g3@8 [c3,g4,c5,e5]@7 ~@15 e2@8 ~ [a4,d5]@7 [e2,ab4,b4,e5]@7 [a2,e4,a4,c5]@9 ~ d2@16 ~ [a2,e4,a4]@8 [d2,f4,a4,d5]@7 [a2,e4,c5]@7 ~ [d3,d4]@8 [g4,bb4]@16 a4@10 [g2,d4,bb4]@8 [db4,e4,a4]@8 ~@8 g4@16 ~@5, ~@2 f4@19 ~@5 [c4,a4]@14 ~@6 [e4,a4,c5]@16 ~@5 g4@14 ~@16 f2@10 ~@5 [d2,f5]@9 ~@135, ~@11 d3@10 ~@4 f3@7 ~@28 a4 ~@6 [bb4,d5]@17 ~@5 [a4,c5,f5]@18 ~@29 [f4,a4,d5]@18 ~@22 [f4,a4]@10 ~@41 [a3,f4]@11 ~@18, ~@18 [c3,g4]@8 ~@34 [d3,f4]@10 ~@19 f3@11 ~@53 c5@10 ~@93]/8", // C D5 E Am A5 Dm Am D …
  T: "[~@4 [g2,d4,g4,bb4]@8 [a2,db4,e4,a4]@9 bb4@16 ~@27]/2", // Gm A
  U: "[~@30 [c3,e4,g4]@5 ~@4 [c3,g4,e5]@8 ~@29 [a2,c4,e4,c5]@4 ~@6 a2@10, ~@6 c5@43 ~@36 [e4,c5]@10 ~, ~@7 c4@42 ~@5 [a3,a4]@42, ~@22 [f3,f4,a4,d5]@13 ~@3 e4@8 ~@23 [d3,d4,f4,b4]@10 ~@17, ~@29 e5@5 ~@62]/3", // C Am C A Dm Bdim
  V: "[~@6 [c4,c5]@8 [d4,d5]@2 ~@15 [c3,e4,g4,e5]@5 ~@3 [e4,g4,e5]@3 ~@3 [bb3,bb4]@7 ~ a3@4 ~ bb3 ~@9 [d3,d4,b4]@8 [a2,c4,e4,c5]@3 ~@4 [a2,e4,c5]@3 ~@4 [g3,g4]@6, ~@16 [c4,c5]@32 ~@4 a4@6 ~ a4@34 ~@3, ~@24 [f3,f4,a4,d5]@12 ~@3 c3 ~@17 bb4@3 a3@33 ~@3, ~@68 f4@3 ~@12 c4 ~@12]/3", // C D C Em Bb G Am G …
  W: "[~@48 [f3,f4]@5 [g3,g4]@2 ~@8 [bb2,bb3,d4,g4]@10 a4@19 ~ e3@9 ~@21 [d2,gb3,a3]@8 [g2,bb3]@13 ~@9 g3@7, ~ [f3,f4]@40 [e3,e4]@10 ~@4 [f3,f4]@38 ~@9 [d3,d4]@58, ~@15 [d4,g4]@10 a4@19 ~@48 e4@11 ~@49 [g2,bb3]@8, ~@16 [bb2,bb3]@10 a2@25 ~@22 [a2,a3,db4]@31 ~@41 d2@11 ~@4, ~@25 [a3,db4]@26 ~@93 [gb3,a3]@11 ~@5]/5", // F G Gm D Gm F E F …
  X: "[~@8 [g3,c4]@10 ~@52 [c3,e4,g4,e5]@3 ~@5 [e4,g4,e5]@4 ~@25 [d3,d4,f4,b4]@8 [a2,c4,e4,c5]@3 ~@5 [a2,c4,e4,c5]@9 ~@6 [c4,c5]@5 ~@17 [c3,e4,g4,e5]@4 ~@4 [c3,e4,g4,e5]@5 ~@9 [a3,a4]@7 ~@10 [d3,d4]@7 [a2,c4,e4,c5]@4 ~@5 a2@2 ~@7, ~@7 e4@12 ~@27 c5@41 ~@65 d5@11 ~@61, ~@8 c3@4 ~@6 [f2,a3,f4]@37 ~@7 [a4,d5]@10 ~@126 [f4,b4]@7 ~@19, ~@47 c4@41 ~@4 [a3,a4]@40 ~@11 [d4,d5]@5 ~@5 [f3,f4,a4]@11 ~@27 [a3,a4]@33, ~@63 [f3,f4]@10 ~@72 [c4,c5]@29 ~ [bb3,bb4]@10 ~@4 [bb3,bb4]@4 ~@21 [c4,e4,c5]@3 ~@7]/7", // C5 C Em Bdim Am C A D …
  Y: "[~@70 g3@2 ~@91 bb3@20 ~@9, g4@15 ~@21 [a2,a3,db4,a4]@21 ~@16 f3@43 e4@18 ~@58, ~ g3@14 ~@10 [bb2,bb3,d4,g4]@15 ~@13 e4@20 ~@8 [bb3,d4,g4]@11 [a3,db4,a4]@31 ~@4 [d3,d4]@56 ~@9, ~@8 f4@48 ~@13 g4@4 ~@9 bb2@11 a2@24 e3@17 ~@58, ~@9 f3@48 ~@4 [f3,f4]@11 f4@50 ~@70]/6", // A Gm A D F
})).s("gm_piano").gain(0.32)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A@2 B C@2 D@2 E ~ F G@6 H@5 I J K L@2 M@5 N@2 O@3 P@5 ~ Q@2 R ~ S T ~@3 U@4 ~@7 V@2 W@7 X@4 Y@2 Z AA@2 AB@5 AC AD ~@3
  AE@7 AF ~@7 AG AH@2 AI ~@5 AJ@2 ~ AK@7
>`.pickRestart({
  A: "[~@6 [g3,bb3,d4]@14 [g3,c4] ~@11, ~@20 eb4@11 ~]/2", B: "~@25 a2@3 ~@4",
  C: "[~@24 [f3,c4,eb4]@15 ~@10 a2@15, ~ eb4@11 ~@8 c4@12, ~@3 [f3,c4]@21 ~@15 [f3,eb4]@25, ~@17 a2@32 ~@15]/2", // F7 F5 F7
  D: "[~@11 [f3,d4]@20 [gb3,eb4]@13 ~@20, ~@31 a3@2 ~@31]/2", E: "~@14 eb4@3 ~@15",
  F: "~@12 d2@15 ~@5, ~@2 [gb3,c4]@25 ~@5", // Gbdim
  G: "[~@4 [d3,bb3]@27 c4@2 ~@6 g2@13 ~ g3@10 g2@13 ~@12 d4@21 d4@14 ~@7 d3@13 ~ d4@2 ~@7 d3@17 ~ db4@21, ~@31 [g3,eb4]@11 ~@81 [a3,d4]@20 ab4@28 ~@21, ~@143 a3@2 ~@25 g4@3 ~@19]/6", // Gm Cm D5
  H: "[~@2 [a3,d4]@21 ~@2 a3@18 ~@5 [a3,d4]@20 ~@21 gb3@18 ~@15 g2@15 ~@9 g2@12 ~@2, ~@75 eb4@32 ~@32 [c4,eb4]@10 ~@11, ~@75 a3@17 ~@19 [g3,d4]@26 ~@23, ~@76 f3@17 ~@67]/5", // D5 Cm G5
  I: "~@9 g2@10 ~@13", J: "c4@21 [f3,c4,eb4]@11", K: "~@5 a2@7 ~@4, ~ [f3,c4,eb4]@11 ~@4",
  L: "[~@3 [f3,d4]@17 ~@11 c5@4 ~@29]/2", // Dm
  M: "[eb4@15 ~@10 d4@26 ~@11 d2@9 d2@24 [g2,bb3]@32 ~ g3@2 ~@5 g2@15 ~@10, ~@51 c4@28 ~@48 [c4,eb4]@23 ~@10]/5", // Gm Cm
  N: "[~@22 d4@22 ~ a3@14 ~@5]/2", O: "[~@28 d3@16 ~ a3@22 ~ [a3,d4]@22 ~@6, ~@18 d4@26 db4@23 f4@3 ~@26]/3",
  P: "[~@16 d4@21 ~@54 d3@20 [eb3,gb3,a3]@28 [gb3,a3]@21, ~@44 d3@21 d3@26 ~@20 c4@4 ~@45, ~@57 [a3,f4]@24 [a3,f4]@31 ~@48]/5", // Ebdim Gbm Dm
  Q: "[~@18 g3@27 [d3,g3]@19, ~@45 b3@3 ~@16]/2", R: "~ [d3,gb3]@6 ~", S: "~@3 [d3,f3,b3]@5", T: "~@2 f3@25 ~@5",
  U: "[~@28 gb3@28 gb3@25 ~@10 db2@13 ~@24, ~@81 db3@21 ~@26]/4", V: "[~@31 [ab3,db4,f4]@20 ~@13]/2",
  W: "[~@51 db3@9 ~@25 db2@23 db2@25 db2@30 db2@23 c2@14 a4@16 [c4,e4]@8, ~@10 d4@29 ~@185, ~@18 [db4,ab4,db5]@13 ~@4 ab2@10 ~@55 c2@12, ~@36 f3@23 ~ f3@14 ~@150]/7", // C Db5
  X: "[~ a3@6 ~@20 [c3,c4,e4]@24 d4@15 e4@8 c4@16 c4@9 ~@29, d4@17 d4@13 ~@36 c4@4 ~@58, ~ d2@29 ~@98, ~@9 g2@6 ~@49]/4", // C
  Y: "[~@9 c5@8 [f3,a4,c5]@20 ~@27, ~@9 [c3,g4]@11 ~@44]/2", Z: "~@20 [a2,e4]@11 ~",
  AA: "[~@12 d4@8 ~ d4@15 [d3,d4,f4,a4]@9 g2@9 ~@10, ~@20 g2@17 ~@27]/2", // Dm
  AB: "[~@30 g2@8 e4@8 g4@11 ~@6 d4@12 ~@16 a4@16 [c4,e4]@9 d4@15 [d4,g4]@8 e4@15 ~@6, ~@75 c3@43 ~@42, ~@75 e4@32 ~@9 a3@6 ~@38, ~@91 c2@27 ~@42]/5", // C G5
  AC: "~@3 [a3,d4]@16 c4@4 ~@9, ~@3 d3@8 ~@21", AD: "~ f4@7 ~@24",
  AE: "[~@9 a4@3 ~@13 [g2,d4]@17 [d3,d4,f4]@9 g4@8 a2@8 ~@9 [c4,e4]@15 [f3,c4,f4,a4]@9 ~@17 g4@12 [c4,e4,g4]@21 ~ f2@44 ~@29, ~@67 [d3,d4]@11 ~@51 c3@26 ~@69, ~@75 c3@16 ~@26 [g2,d4]@15 ~@18 [f4,a4]@32 ~@42, ~@75 c4@8 ~@29]/7", // G5 Dm C F C D G5 F
  AF: "~@21 c4@10 ~", AG: "~@3 g3@14 ~@15", AH: "[~@8 c2@10 c3@37 ~@9, ~@18 c4@29 ~@17]/2", AI: "~@14 c3@5 ~@13",
  AJ: "[~@22 e3@19 ~@23]/2",
  AK: "[~@27 d2@9 [g2,g3]@18 ~ g3@13 [d2,d3,a3,d4]@30 [d3,d4]@35 [g1,g2,g3,b3,d4]@82 ~@9, ~@26 [gb3,a3]@10 ~@18 [c2,c3,c4,eb4]@18 ~@26 [d2,gb3,a3]@51 ~@75, ~@68 g3@34 ~@31 d3@77 ~@14]/7", // G D5 D G Gbm Cm D
})).s("gm_piano").gain(0.16)

stack(piano, piano_soft)

More by Chopin Frederic