Strudelify

Lied ohne Worte Op.109

Felix Mendelssohn Bartholdy

KeyD majorTempo68 bpm
0:00/0:00
// Lied ohne Worte Op.109 — Felix Mendelssohn Bartholdy
// 68 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4112996; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 67 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "Klavier"
const piano = note(`<
  ~@7 A B C D E F G H I J C D E F G K I J L@2 M N L O P@2 Q R S T U V W X Y Z AA ~@10 AB ~@3 AC@2 AD ~@6
>`.pickRestart({
  A: "~@2 [g#3,b3,c#4]!2 [g#3,b3,c#4]@2 [c#4,f4,g#4]@2 ~@2 [a3,c#4]!2 [a3,c#4]@2 [a3,c#4]@2, [c#2,c#3]@11 ~@13 [c#2,c#3]@11 ~@13", // C#7 C# A C#
  B: "[g#3,b3,c#4]@2 [f#3,b3,c#4]@2 [f3,b3,c#4]@2 [f3,b3,c#4]@2 ~@2 [f#3,a3,c#4]!2 [f#3,a3,c#4]@2 f#4@2, [c#2,c#3]@11 ~@13 [f#1,f#2]@11 ~@13", // C#7 F#sus4 C#7 F#m C# F#
  C: "~@2 [f#3,a3,c4]!2 [f#3,a3,c4]@2 f#4@2 ~@2 [f#3,a3,b3]!2 [f#3,a3,b3]@2 f#4@2, [f#1,f#2]@11 ~@13 [b1,b2]@11 ~@13", // F#dim B7 F# B
  D: "[g3,b3]@2 [f#3,a3,b3]!2 [e3,a3,b3]@2 [d#3,a3,b3]@2 ~@2 [d#3,a3,b3]!2 [e3,g3,b3]@2 e4@2, [b1,b2]@11 ~@13 e2@11 ~@13", // G B7 Esus4 B7 Em B
  E: "~@2 [e3,g3,b3]!2 ~@2 [f#3,a3,d#4]!2 ~@2 [g3,b3,e4]!2 ~@2 [e3,b3,d4]!2, e2@11 ~ f#2@11 ~ g2@11 ~ [g#1,g#2]@11 ~", // Em D#dim Em E7 G#
  F: "~@2 [e3,a3,c#4]!2 ~@2 [d3,g#3,b3]!2 ~@2 [g3,a3]!2 [g3,a3]@2 e4@2, [a1,a2]@11 ~ [b1,b2]@11 ~ [c#2,c#3]@23 ~", // A G#dim Gsus2 A B C#
  G: "~@2 [f#3,a3]!2 [f#3,a3]@2 [d4,f#4]@2 ~@2 [f#3,a3]!2 [f#3,a3]@2 [d4,f#4]@2, [d2,d3]@11 ~@13 [d2,d3]@11 ~@13", // F#m D F#m D
  H: "~@2 [f#3,a#3]!2 [f#3,a#3]@2 [d4,f#4]@2 ~@2 [a#3,c#4]!2 [a#3,c#4]@2 e4@2, [d2,d3]@11 ~@13 [g1,g2]@11 ~@13", // F# D A#m D G
  I: "~@2 [e3,b3]!2 [g#3,b3]@2 [d4,e4]@2 ~@2 [f#3,a3,d4]@2 [b3,d4]@2 [a3,d4]@2, [g#1,g#2]@11 ~ e2@11 ~ [a1,a2]@11 ~@13", // E5 G#m Dsus2 D Bm D5 G# A
  J: "[a1,a2,g3,a3,d4]@11 ~ [a1,a2,g3,a3,c#4]@11 ~@7 [f#3,a3]@3 [f#3,a3]@3 [f#3,a3]@6 d4@6, ~@24 [d2,d3]@11 ~@13", // Dsus4 A7 F#m D
  K: "~@2 [f#3,a#3]!2 [f#3,a#3]@2 [d4,f#4]@2 ~@2 [g3,b3]!2 [g3,b3]@2 e4@2, [d2,d3]@11 ~@13 [g1,g2]@11 ~@13", // F# D G D G
  L: "~ f3 a3 f4 a3 f3 ~ f3 a#3 f4 a#3 f3 ~ g3 a#3 g4 a#3 g3 ~ g3 a3 [a1,a2,c#4] ~ g3, [d2,d3]@3 ~@3 d3@3 ~@3 e3@3 ~@3 c#3@3 ~ a3 ~, ~@15 [a1,a2]", // A D A
  M: "~ f3 a3 f4 a3 f3 ~ f3 a#3 f4 a#3 f3 ~ g3 a#3 g4 a#3 g3 ~ a3 c4 [f1,f2,a4] ~ a3, [d2,d3]@3 ~@3 d3@3 ~@3 e3@3 ~@3 f3@3 ~ c4 ~, ~@15 [f1,f2]", // F D F
  N: "~ a#3 d4 g4 d4 a#3 ~ g3 d4 e4 d4 g3 ~ a3 d4 f4 e4 d4 c#4 a#3 a3 g3 f3 e3, [a#1,a#2] ~ [a#1,a#2] ~ [a#1,a#2] ~@3", // A#
  O: "~ f3 a3 f4 a3 f3 ~ f3 a3 f4 a3 f3 ~ b3 d4 e4 d4 b3 ~ b3 d4 [g#1,g#2,e4] ~ b3, [d2,d3]@3 ~@3 b2@3 ~@3 g#2@3 ~@3 g#2@3 ~ d4 ~, ~@15 [g#1,g#2]", // C#m D G#
  P: "~ c4 e4 f4 e4 c4 ~ d4 e4 g#4 e4 d4 ~ e4 a4 c5 b4 a4 ~ b3 d4 [g#1,g#2,e4] ~ b3, [a1,a2]@11 ~ [b1,b2]@11 ~ [c2,c3]@11 ~ g#2@6 ~@2 d4@2 ~@2, ~@15 [g#1,g#2]", // C#m A B C G#
  Q: "~ c4 e4 f4 e4 c4 ~ d4 f4 g4 f4 d4 ~ e4 g4 a4 g4 e4 ~ f4 a4 a#4 a4 f4, [a1,a2]@12 [b1,b2]@12 [c2,c3]@12 [d2,d3]@11 ~", // A B C D
  R: "~ e4 a4 c5 a4 e4 d4 f4 e4 [e2,d4] ~ b3 ~ e3 c4 e4 c4 e3 ~ e3 c4 [a1,a2,e4] ~ e3, [e2,e3]@3 ~@3 e3@3 ~ c4 ~@11 c4 ~, ~@7 e2 [a1,a2]@2 ~@2 a2@2 ~ [a1,a2]", // E7 A5 E A
  S: "~ e3 a3 e4 a3 e3 ~ a3 c4 [a1,a2,e4] ~ a3 ~ a3 c4 a4 c4 a3 ~ a3 d4 g4 d4 a3, c3@6 ~@6 a2@6 ~@2 c4@2 ~@14 [d#3,g3]@11 ~, ~@7 [a1,a2] [c2,c3]@2 ~@6", // A5 D# A C
  T: "g4 c4 a3 f#4 c4 a3 g4 d#4 d4 a4 d#4 d4 a#4 a#3 d4 g4 d4 a#3 ~ a#3 d4 g4 d4 a#3, d3!2 [a#2,d3,g3] [a2,d3,f#3] [g2,g3] ~ [f2,f3] ~", // Gm D G F
  U: "~ g3 a#3 g4 a#3 g3 ~ g3 a#3 [g2,f4] ~ g3 ~ g3 a#3 e4 a#3 g3 ~ g3 a#3 e4 a#3 g3, [e2,e3]@3 ~@3 [d2,d3]@3 ~ a#3 ~@7 e3@3 ~@3, ~@7 g2 [c#2,c#3]@2 ~@6", // G7 E D C#
  V: "e3 g3 a#3 [e4,g4] ~ g3 ~ g3 a#3 [e4,a4,c5] ~ g3 ~ a3 c4 [f4,a4] ~ a3 ~ a3 d4 f4 d4 a3, ~@4 a#3 ~@5 a#3 ~@5 c4 ~@7, ~@3 [g4,a#4] [a#4,d5]@2 ~ [g4,a#4] [g4,a#4]@2 ~ a4 d5@2 a4@2", // Em Am F Gm A# Gm
  W: "~@2 b3@2 d4@2 [g#4,b4]@2 ~@2 b3@2 ~@2 b3@2 d4@2 [g#4,e5]@2 ~ d5 b3@2 c#5@2 c#4@2 e4@2 a4@2 e4@2 c#4@2 a3@2 c#4@2 f4@2 [f1,f2,a4]@2 ~@2 c#4@2, ~@8 d4@2 ~@10 d4@2 ~@2 a3@6 ~@6 f3@6 ~@3 [f1,f2]@3, ~@9 [b4,d5]@3 [d5,f5]@6 ~@26 f4@2 ~@2", // G#m C#m F Bm Dm
  X: "~ d4 f4 g4 f4 d4 ~@12 a3 c#4 f4 [f1,f2,a4] ~ c#4, [a#1,a#2]@3 ~@15 f3@3 ~ f4 ~, ~@15 [f1,f2]", // F A# F
  Y: "~@2 d4@2 f4@2 g4@2 f4@2 d4@2 ~@2 d4@2 e4@2 g#4@2 e4@2 d4@2 ~@2 c#4@2 e4@2 a4@2 e4@2 c#4@2 a3@6 [a1,a2,a3,d4,f4]@3 [a1,a2,a3,d4,f4]@3, [a#1,a#2] ~ a#2 ~ a2 ~@3", // Dm A#
  Z: "[a1,a2,g3,c#4,e4]@2 ~@4 [a1,a2,f3,a3,d4]!2 [a1,a2,e3,g3,c#4]@2 ~@4 [a1,a2,d3,f3,a#3]!2", // A7 Dm A7 A#maj7
  AA: "[g1,g2,c#3,e3,a3] ~@7", AB: "~@6 [a#3,c#4,a#4]@3 [a#3,c#4,a#4]@3 [a#3,c#4,a#4]@11 ~@25, [g2,g3]@23 ~@25",
  AC: "~ b3 c#4 b4 c#4 b3 ~ b3 c#4 b4 c#4 b3 ~ a#3 c#4 [c#3,e4] ~ a#3 ~ a#3 c#4 [f#1,f#2,e4] ~ a#3, [g1,g2]@11 ~ [g1,g2]@11 ~ [f#1,f#2]@6 ~@2 c#4@2 ~@10 c#4@2 ~@2, ~@11 c#3 f#3@2 ~ [f#1,f#2]", // C#m F#7 G F#
  AD: "~ a#3 c#4 a#4 c#4 a#3 a#4 c#4 a#3 a#4 c#4 a#3 a#4 c#4 a#3 a#4 c#4 a#3 a4 c#4 a3 a4 c#4 a3, [g1,g2]@17 ~@7", // G
})).s("gm_piano").gain(0.35)

// chords · piano · "Klavier" · soft notes
const piano_soft = note("<A@2 B C D A E ~@33 F ~@2 G H I J K L M N O P Q R S T U ~@3 V W X Y Z AA>".pickRestart({
  A: "~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2 ~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2, [d2,d3]@11 ~@13 [d2,d3]@11 ~@13", // F#m D
  B: "~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2 ~@2 [g3,b3]!2 [g3,b3]@2 e4@2, [d2,d3]@11 ~@13 [d2,d3]@11 ~@13", // F#m G D
  C: "~@2 [g3,b3]!2 [g3,b3]@2 e4@2 ~@2 [e3,g3]!2 [e3,g3]@2 e4@2, [d2,d3]@11 ~@13 [c#2,c#3]@11 ~@13", // G Em D C#
  D: "~@2 [e3,g3]!2 [e3,g3]@2 [a3,c#4]@2 ~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2, [a1,a2]@11 ~@13 [d2,d3]@11 ~@13", // Em A F#m A D
  E: "~@2 [f#3,b3]!2 [f#3,b3]@2 f#4@2 ~@2 [g#3,b3]!2 [g#3,b3]@2 c#4@2, [d2,d3]@11 ~@13 [c#2,c#3]@11 ~@13", // B5 G#m D C#
  F: "~@7 d4 e4 g#4 e4 d4 ~ c#4 e4 a4 e4 c#4 ~@6, ~@2 a#2 ~ a2 ~@3",
  G: "~@6 [g1,g2,d#3,a3,c4]!2 [f#1,f#2,d3,a3,c4]@2 ~@4 [d#2,g3,a3,c4]!2", // Am7b5 D7 Am7b5
  H: "[d2,f#3,a3,c4]@2 ~@6 g2@2 [g3,a#3]!2 [g3,a#3,d4]@2 ~@2", // D7 Gm
  I: "e2@2 [g3,a#3,c4]!2 [g3,a#3,c4,g4]@2 ~@2 f2@2 [a3,c4]!2 [a3,c4]@2 ~@2", // C7 Am
  J: "[d2,d3]@2 [f3,a3,b3,f4,a4]!2 [f3,a3,b3,f4,a4]@2 ~@2 [e3,g#3,b3,e4,g#4]@2 ~@2 [e3,g3,a#3,e4,g4]@2 ~@2", // D Bm7b5 E Edim
  K: "[c#2,c#3,a3,e4,g4] ~@7", // A7
  L: "~@2 [f#3,a3]!2 [f#3,a3]@2 a2!2 ~@2 [f#3,a3]!2 [f#3,a3]@2 a2!2, [d2,d3]@17 ~ d4@6 [d2,d3]@17 ~ d4@6", // F#m D
  M: "~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2 ~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2, [d2,d3]@23 ~ [d2,d3]@23 ~", // F#m D
  N: "~@2 [g3,b3]!2 [g3,b3]@2 e4@2 ~@2 [e3,g3]!2 [e3,g3]@2 c#4@2, [d2,d3]@23 ~ [c#2,c#3]@23 ~", // G Em D C#
  O: "~@2 [e3,g3]!2 [e3,g3]@2 c#4@2 ~@2 [f#3,a3]!2 [f#3,a3]@2 d4@2, [a1,a2]@23 ~ [d2,d3]@23 ~", // Em F#m A D
  P: "~@2 [f#3,a3,f#4]!2 [d#2,d#3,f#3,a3,f#4]@2 [b1,b2,d#4]@2 ~@2 [f#3,a3,d#4]!2 [g#3,b3,e4]@2 g#4@2, [d2,d3]@11 ~@13 e2@23 ~", // F#m D#dim B D#dim E D
  Q: "~@2 [g#3,b3,g#4]!2 [f2,f3,g#3,b3,g#4]@2 [c#2,c#3,f4]@2 ~@2 [g#3,b3,f4]!2 [a#3,c#4,f#4]@2 a#4@2, [e2,e3]@11 ~@13 [f#2,f#3]@23 ~", // G#m Fdim C# Fdim F# E F#
  R: "~@10 [a3,d4,a4]!2 [g3,b3,d4]@2 [g3,b3,d4]@2, ~@24 [f#1,f#2]@11 ~ [g1,g2]@11 ~", // D5 G F# G
  S: "~@2 [f#3,a3,d4]@2 ~@2 [g3,a3,c#4]@2 ~@2 [g3,a3,c#4]!2 [d2,f#3,a3,d4]@2 d2!2, [a1,a2]@11 ~ [a1,a2]@11 ~ [a1,a2]@11 ~@7 [f#3,a3,f#4]@6", // D A7 D A F#m
  T: "~@2 [f#3,a3,f#4]!2 [d#2,d#3,f#3,a3,f#4]@2 [b1,b2]!2 ~@2 [f#3,a3,d#4]!2 [e2,g#3,b3,e4]@2 [e2,e3]!2, [d2,d3]@11 ~@7 d#4@6 [e2,e3]@11 ~@7 g#4@6", // F#m D#dim B D#dim E D E
  U: "~@2 [g#3,b3,g#4]!2 [f2,f3,g#3,b3,g#4]@2 [c#2,c#3]!2 ~@2 [g#3,c#4,f4]!2 [f#1,f#2,a#3,c#4,f#4]@2 [f#1,f#2]!2, [e2,e3]@11 ~@7 f4@6 [f#2,f#3]@11 ~@7 a#4@6", // G#m Fdim C# F# E F#
  V: "~@2 [a3,d4]!2 ~@2 [g3,b3]!2 ~@2 [f#3,a3,d4]@2 ~@2 [g3,a3,c#4]@2, [f#1,f#2]@11 ~ [g1,g2]@11 ~ [a1,a2]@11 ~ [a1,a2]@11 ~", // D5 G D A7 F# G A
  W: "~@2 [f#3,a3] [f#3,a3,d4] [f#3,a3,f#4]@2 [f#3,a3,e4] [f#3,a3,d4] [e3,g3,d4]@2 [e3,g3,c#4] [e3,g3,d4] [e3,g3,e4]@2 [e3,g3,a3]@2, [d2,d3]@23 ~ [d2,d3]@23 ~", // F#m D F#m F#m7 D Em7 C#dim Em7 …
  X: "~@2 [f#3,a3] [f#3,a3,d4] [f#3,a3,f#4]@2 [f#3,a3,e4] [f#3,a3,d4] [g3,a#3,d4]@2 [g3,a#3,c#4] [g3,a#3,d4] [g3,a#3,e4]@2 [g3,a3]@2, [d2,d3]@23 ~ [d2,d3]@23 ~", // F#m D F#m F#m7 D Gm Gdim Gm …
  Y: "~@2 [f#3,a3] [f#3,a3,d4] [f#3,a3,f#4]@2 [f#3,a3,e4] [f#3,a3,d4] ~@2 g3 [g3,b3] [g3,b3,d4]@2 [g3,b3]!2, [d2,d3]@23 ~ [d2,d3]@23 ~", // F#m D F#m F#m7 D G D
  Z: "[d2,d3,f#3,a3]@23 ~ [d2,d3,f#3,a3,d4]@11 ~ [d2,d3,f#3,a3,d4]@11 ~", AA: "[d2,a2,d3,f#3,a3,d4]@23 ~",
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)