Strudelify

Liebeslieder Waltz, Op. 52, No. 6

Johannes Brahms

KeyB♭ majorTempo120 bpm
0:00/0:00
// Liebeslieder Waltz, Op. 52, No. 6 — Johannes Brahms
// 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 32 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
const piano = note("<A@7 B@2 C@6 D@7 E F@6 G@3>".pickRestart({
  A: "[~@3 f4@3 ~@7 [bb1,bb2,d5]@3 bb4@3 ~@4 [bb3,bb4,bb5]@4 ~@16 a3@3 [g4,eb5,g5]@4 f4@3 ~@15 [bb3,bb4]@4 ~@11 [d4,d5]@4 a4@2 ~@2 [eb5,g5]@3 ~ f4@3 ~ g4@3 [bb1,bb2,bb3]@3 ~@8 [g4,bb4,g5,bb5]@3 ~@4 [d5,d6]@3 ~ [g1,g2] ~@10 [g4,bb4,d5,e5,g5,bb5,d6,e6]@4 [e5,e6]@4 [gb5,gb6]@3 [f1,f2] a4@2 ~@2 g5@3 [c4,c5,g5,g6]@3 ~ [a5,a6]@4 [bb1,bb2] ~@8 [f1,f2]@7 bb1 bb2 ~@4 f5 ~@9 [d4,d5]@3 [bb3,bb4]@3 ~@21 [d4,d5]@3, ~@3 f5@14 ~@3 [d2,d3,d4,f4,d5,f5]@9 ~@13 c5@8 f5@14 ~@3 bb5@7 ~@13 c5@8 ~@3 g5@4 ~@4 bb5@7 ~@4 [g4,g5]@7 g5@11 ~@11 [eb4,g4,a5,eb6,gb6]@9 ~@8 [bb4,d5,bb5,bb6]@15 ~@6 d5@2 [d4,d5]@7 bb1 [bb2,g4,g5]@6 ~ [d2,d3,d5,f5]@14 ~@9, ~@3 d5 ~@5 [bb3,bb4,bb5]@7 [bb3,bb5]@7 ~@4 [eb2,eb3,bb4,c5]@15 a4@2 ~@6 d5 ~@2 [bb4,bb5]@4 [d4,d5]@7 [d2,d3,d4,f4,d5,f5]@10 ~@20 [bb4,d5]@3 ~@5 [d4,g4,d5,g5]@7 bb3@8 [g3,bb3,d4,e4]@14 [d2,d3,g3,d4]@9 ~@10 g6@4 [f2,f3,eb6] ~@35 [bb3,bb4,bb5]@7 ~@12 [eb2,eb3,bb3,c4,bb4,c5]@15, ~@12 g5@5 ~@11 [bb3,c4]@15 c4@7 ~@4 bb3@6 [bb3,bb4,bb5]@8 ~@4 [eb2,eb3,bb3,c4,bb4,c5]@14 ~ f3 ~@6 f5@11 ~@2 bb4@6 ~@3 [bb4,bb5]@7 [g4,bb4,d5,bb5,d6]@12 ~@4 a3@18 ~@5 [bb3,d4]@16 ~@8 f4@11 ~@27, ~@13 g4@17 ~@9 [d4,d5]@5 ~@13 [bb1,bb2,g4,g5]@17 ~@35 d2@14 ~@5 [e5,e6]@7 ~@4 [d4,gb4,a4,d5,a5,d6]@8 [eb5,gb5]@7 [eb4,eb5,c6]@9 ~@20 [d4,f4]@2 f5@12 bb5@7 bb5@11 ~@9]/7", // Bb Cm Bb D Eb Bb Gm D …
  B: "[~ [a3,a4]@2 ~@2 g4@3 [d4,d5,f5]@2 ~@2 bb5@3 [d4,d5] [bb1,bb2] ~@2 bb3@3 d4 [d2,d3] ~@2 bb4@4 ~@12 d4@3 a4@2 ~@2 g5@3 ~ bb3 ~@3 [g4,g5]@3 ~ [bb1,bb2] ~@2, c5@7 ~@8 [g4,g5]@7 [f4,f5]@15 ~@16 [f4,bb4,f5]@9 ~@2, ~ c4@7 ~@3 [bb3,bb4]@4 ~@15 [eb2,eb3,bb4,c5]@15 ~@19, ~@4 [eb4,eb5,g5]@4 f4@8 ~@2 [bb4,bb5]@4 ~@4 bb5@11 ~@4 d5@4 c5@7 ~@8 [d4,g4,d5,g5]@4]/2", // A Dm D Bb D G Bb G …
  C: "[~@7 [g4,bb4,g5,bb5]@4 ~@3 [d5,d6]@4 d5@4 e5@3 ~@4 e6@3 ~ [a4,e5,d6]@3 [gb5,gb6]@4 [f1,f2,eb5] gb5@2 ~ [g5,g6]@3 [f2,eb6] [f3,c5,g5] ~@2 [a5,a6]@4 ~ bb1 ~@15 [bb1,bb2]@5 ~@9 c4@3 ~@12 c4@3 ~@4 gb5@3 g5@4 ~ [a3,c4]@2 ~ [bb1,bb2] ~@2 [eb4,d5]@2 ~@2 [d3,d4]@3 ~ c4@3 ~ [d3,d4]@2 ~ eb5@2 ~@2 d4@3 [c4,gb5]@4 g5@3 [gb5,gb6]@4 [g1,g2] ~@2 [a3,c4,eb6]@4 g6 [bb1,bb2] ~@2 d4@4 ~@7 [c3,c4,c5]@4 [e3,g3]@3 ~@4 [g3,bb3]@4, [bb4,bb5]@7 ~@4 [g4,bb4,g5,bb5]@7 [g4,bb4]@11 [g4,bb4,d5,e5,g5,bb5,d6]@4 [d4,gb4,d5,a5]@9 ~@5 eb4@7 ~@10 f1@14 ~@114, ~@3 bb3@7 ~ [g3,bb3,d4,e4]@10 ~ e6@7 ~@3 e6@4 ~@4 [eb4,g4,a5,eb6,gb6]@8 [c4,c6]@7 ~@8 f2@14 ~@16 a3@7 ~@4 g5@5 ~@9 g5@3 ~@8 d5@2 ~@2 eb6@3 ~@4 gb6@2 ~@6 g6@5 ~@2 g6@5 ~@32, ~@18 [g5,bb5,d6]@8 [d2,g3,d4]@8 ~@6 a4@2 ~@5 [eb5,g6]@3 ~@6 [bb4,bb5,d6]@22 ~@11 d5@16 ~@10 eb5@4 g3@3 ~@15 [gb3,c4]@5 ~@6 [g3,bb3]@12 ~@2 [g3,bb3]@4 ~@4 [c3,c4]@5 ~@10 [c3,e5]@6 ~, ~@18 g1@3 ~@4 [bb3,e4]@8 a3@22 [f3,bb3,d4,bb6]@22 ~@13 d4@7 [d3,d4,gb5]@8 bb3@11 ~@3 bb3@5 ~@16 d3@4 ~@11 g5@2 ~ eb5@2 ~@13 bb3@10 ~ c4@6 ~@2]/6", // Gm D Asus4 Gb F7 G F7 Fsus2 …
  D: "[~@3 e5@4 [f1,f5]@3 [g3,bb3,db5]@3 a1 f5@3 db4@2 ~@2 c4@3 c5 ~@3 [c3,c4,db6]@3 ~@4 [c3,c4,e6]@3 ~ g3@3 ~@11 [g3,bb3,d5]@3 a2 ~@11 [a4,a5]@4 ~@18 [e5,e6]@4 ~@11 [e4,a5,a6]@4 g5@3 [a5,a6]@4 ~ [bb5,a6]@2 ~@10 [a5,a6]@3 ~@8 g6@3 [d5,d6]@4 [f5,f6]@3 [bb4,bb5]@4 ~ g4@3 [a4,a5]@3 bb5 bb4 a5 [a4,bb5] bb4 [a4,a5] [bb4,bb5] [a4,a5] [bb4,bb5] a5 bb5@2 a4@2 [g4,g5] [a4,a5]@2 bb1 ~@7 f1 ~@6 [bb1,bb2]@7 d4 ~ d4@3 c4@4 ~@11 c4@3 ~, [f3,a3]@10 ~@3 [f3,a3]@4 ~@8 bb3@5 ~ [bb3,db5]@5 ~@2 [bb3,e5]@4 f6@7 [f5,f6] f2@7 ~@3 [c5,c6]@4 [f3,a3]@8 [f2,a4,a5]@4 [g3,c5,c6]@3 [a2,f3,a3]@3 c4 [c5,c6]@4 [e3,a4]@22 [a3,g4]@15 [f2,eb4,bb6]@8 ~@37 eb3@8 ~ [d3,bb5]@22 ~@9 [d3,d4]@8 [d3,d4]@7, f5@5 ~@12 c5 ~@14 g3@5 ~@5 a3@10 d6@4 ~ f6@29 db6@8 [e2,db5,e5,db6,e6]@15 g6@10 [a5,bb6] [bb5,a6] bb6 [a5,a6] [c4,bb5]@2 [a5,a6]@2 [g5,g6]@4 ~@5 [f5,f6]@7 ~@11 g5@3 ~@14 bb4 ~ a5 ~@5 bb4@22 ~@8 d5@14 ~, ~@42 f5@3 ~ [e5,e6]@11 ~@3 c4@15 bb3@11 db5 a5@11 [b3,d4]@11 eb4@7 [a5,bb6] f4@15 [bb3,d4,bb5,bb6]@11 ~@4 [f3,bb3]@2 ~@5 [eb3,g3]@8 f3@8 ~@8 bb2@15 ~@20 a3@7 ~@4, ~@43 f3@13 [f3,a3,f5]@8 [f4,f5]@23 db4@11 [a5,a6]@3 [a2,a3,db4]@9 ~@6 [f1,d4]@15 ~@8 [bb1,g5]@4 ~@73 gb5@7 ~]/7", // F Gdim Dbmaj7 C Gm A E A5 …
  E: "~@3 gb5@4 ~ g1 ~@2 c4@3 [bb1,bb2] ~@3 [eb4,d5]@4 [d3,d4]@4 d5 ~@2 [d4,eb6]@3, bb3@10 eb5@4 bb3@4 ~@8 c4@5 ~, [g3,g5]@7 g5@4 ~@3 g5@2 ~@16", // Bb Ebmaj7 D Ebmaj7 G
  F: "[~ [gb3,a3]@4 [d3,d4]@3 c4@4 ~@3 [gb5,gb6]@4 [g1,g2] ~@2 [a3,c4]@4 [bb1,g6] ~@10 [g3,bb3]@4 [c3,c4]@3 [e3,g3]@4 [c3,e5]@2 ~@2 [g3,bb3]@3 ~@3 e5@4 f5@3 ~ db5@3 [a3,f5]@3 ~ db4@3 ~ c4@3 bb3@3 ~ c4@3 ~ e3@2 ~ [c4,e6]@3 [g3,bb3]@4 ~@4 [e5,e6]@3 f6@4 [g3,bb3,d5,d6]@4 f6@3 ~@8 [a4,a5]@4 ~@11 [c4,c5,c6]@4 db6@4 [e5,e6]@4 ~@16 [g5,g6]@3 [a5,a6]@4 ~@15 [a5,a6]@3, ~ eb5@2 ~@2 gb6@2 ~ gb5 ~@3 [g3,bb3]@12 ~@2 bb3@7 c4@5 ~@10 c4@4 ~@4 a3@11 ~@2 f3@8 ~@10 g3@4 ~@7 a3@11 ~@4 [f3,a3,f5]@7 [f4,f5]@23 [e3,a4]@16 a3@3 [a5,a6] e4@4 [a3,g4]@16 [a5,a6] [bb5,bb6]@2 [a5,a6] g5 g6@4, ~@12 [g5,g6]@7 g6@5 ~@5 d6@5 c2@10 ~@18 f2@2 ~ [g3,bb3]@5 ~@2 c5@2 ~@6 c5@2 ~ db6@2 ~@2 db5@2 ~@5 e5@2 ~@2 [f5,f6]@7 f5@2 ~@9 [c5,c6]@12 [f2,a4,a5]@15 db4@12 [a5,a6]@4 [a2,db4]@8 eb4@8 [a5,a6] bb6 bb5 [a5,a6] [bb5,bb6] a6 [a5,bb6] bb5 eb4@9, ~@19 g5@3 [eb5,eb6]@3 ~ g3@3 ~ [d4,d5]@5 ~@6 c5@2 ~@12 f5@4 ~@3 f1 ~@6 [a1,a2] ~@6 c2@10 ~@19 f2 ~@7 a2 ~@2 c4@16 [c5,c6]@3 [a2,f3,a3]@8 a5@12 [b3,d4]@16 ~@4 [d4,f4]@17, ~@121 [f3,a3]@10 [g3,bb3]@12 db5@8 [e2,db5,e5,db6,e6]@20 ~@3 f1@18]/6", // Gbm D Gb G Am Eb Gm C …
  G: "[~@9 g5@3 [d5,d6]@4 bb3 ~@7 [g4,g5]@4 [a4,a5]@4 ~@13 bb4 a5@2 [g4,g5]@2 ~ [a4,a5]@3 bb5@37 ~@5, [bb3,d4,bb5]@11 ~@6 f5@11 ~@4 [bb4,bb5] f3@11 [a4,bb5]@2 ~@50, ~@5 [f5,f6]@7 ~@4 f6@8 eb3@10 [a4,a5] [bb4,bb5] [a4,a5] bb5 bb4 a5 [bb4,bb5] [a4,a5] eb3@10 ~@44, ~@8 [bb1,g6]@4 ~@8 [bb4,bb5]@7 ~@5 f1@10 [f2,bb4,bb5]@3 ~@9 bb1 ~@41, ~@24 g3@19 a5@2 ~@51]/3", // D G A G A Bb Bbmaj7 F …
})).s("gm_piano").gain(0.2)

// chords · piano · soft notes
const piano_soft = note("<A B C D E F G H@2 I J@3 K L M ~ N@2 O P@2 Q@2 R S T U V W X@2>".pickRestart({
  A: "~ [d4,f4,d5,f5] ~@4 d5@6 ~ d4@4 ~@15, ~@3 d4@9 ~@20, ~@6 f4@11 ~@15", B: "~@11 [f2,f3]@7 d4@2 ~@12",
  C: "~@23 f2 ~@3 [eb4,g4]@4 d4, ~@23 c4@8 ~", D: "~@14 d3@13 ~@5, ~@14 g3@7 ~@11", E: "~@4 e4@9 ~@19, ~@3 bb3@9 ~@20",
  F: "~@3 d6@15 ~@14, ~ f3@8 ~@7", G: "~@13 [bb3,bb4]@4 ~@15, ~@9 [d4,f4]@14 ~@9",
  H: "[~ [f2,f3]@7 ~@15 d5 ~@2 bb3@4 ~ c4@14 f2 ~@4 [eb4,g4]@3 [d4,d5] ~@7 g3 ~@2, ~@30 bb3@15 f3@7 ~@12, ~@46 c4@7 ~@11, ~@49 eb5@3 ~@12]/2", // F Eb D
  I: "~@4 [d2,d3]@17 ~@11, ~@4 g3@7 ~@21", // D
  J: "[~@23 bb2 d5@21 ~@3 [d3,d4] ~ [d3,d4]@4 a3@4 ~@10 a3@4 ~ g3@7 [g1,g2] ~@15, ~@58 d3@7 ~@31, ~@61 gb3@12 ~@23]/3", // D G
  K: "~@2 gb3@3 ~@11 a3@4 ~@12", L: "~@2 g5@2 ~ d5@5 ~@4 g3@3 ~@15, ~@5 d6 ~@26", M: "~@7 f2 ~@5 a2 ~@11 g3@5 ~@2",
  N: "[~@23 a3@14 ~@27]/2", O: "~@19 d2@2 ~@11",
  P: "[~@2 d3@6 ~ f2 a4 ~@15 f2@14 d3 ~ d3@3 a3@4 ~@11 a3@3 ~, ~@2 f1 ~@6 c3@3 ~@40 gb3@11 ~]/2",
  Q: "[~@8 g2 ~@2 a3@4 ~@11 a3@4 d3@4 ~@6 a3 ~@17 g5@2 ~@4, ~@58 bb2 ~@5]/2", R: "~ c3 ~@10 f3@4", S: "~@17 g3@4 ~@11",
  T: "~@2 f3@11 ~@19", U: "~@15 a3@16 ~", V: "~@23 [f2,c4]@9", W: "bb6@12 ~@4 f3 d2 ~@14",
  X: "[~@7 a4@2 ~ c3@5 a4 ~@17 [f1,f2]@8 ~@5 bb1@13 ~@5, d3@13 ~@9 [d3,bb4]@37 ~@5, ~@22 bb2@19 ~@4 bb2@14 ~@5]/2", // F Gm
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)

More by Johannes Brahms