Strudelify

Die Ruinen von Athen Op.113

Ludwig van Beethoven

KeyE majorTempo84 bpm
0:00/0:00
// Die Ruinen von Athen Op.113 — Ludwig van Beethoven
// 84 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6075329; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 40 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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.

// other · piano · E5
const piano = note("<~@15 [[e4,b4]@3 b4 ~ b4@3 b4@3 b4 ~ b4@3]!2 [b4@3 b4 ~ b4@3 b4@3 b4 ~ b4@3]!5 ~@18>")
  .s("gm_piano").gain(0.4)

// other · piano · soft notes · E5
const piano_soft = note("<~@36 [[e4,b4]@3 b4 ~ b4@3 b4@3 b4 ~ b4@3]!2 [b4@3 b4 ~ b4@3 b4@3 b4 ~ b4@3]!2>")
  .s("gm_piano").gain(0.2)

// chords · string ensemble 1 · "Violins"
const string_ensemble_1 = note("<A@3 ~@7 B C D E F G@7 ~@4 H I J K L M N O P@2 Q R S T>".pickRestart({
  A: "[~@2 f#5, [b4,e5]]/3", B: "a3",
  C: "[g#3,c#4] ~ [c#4,e4] ~ [c#4,e4] ~ [g#3,c#4] ~ [g#3,c#4] ~ [c#4,e4] ~ [c#4,e4] ~ [g#3,c#4] ~", // C#5 C#m C#5 C#m C#5
  D: "[b3,c#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [b3,c#4] ~ [b3,c#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [b3,e4] ~", // Bsus2 F#5 Bsus2 F#5 E5
  E: "[g#3,b3,e4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [g#3,b3,e4] ~", // E
  F: "[a3,c4,e4] [a3,c4,f#4]", G: "b4 e5 f#5 e5 b5 b4 e5 f#5 b4 e5 f#5 e5 b5 b4 e5 f#5",
  H: "b3@3 [a3,b3]@3 [b3,e4]@2 [b3,e4]@4 [b3,e4]!4", // Asus2 E5
  I: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3] ~ [g#3,b3,e4] [g#3,b3] [g#3,b3,e4] [g#3,b3]", // E G#m E G#m E G#m E G#m
  J: "[a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4] ~ [a3,c#4,f#4] ~ [g#3,b3,e4] [a3,c#4,f#4]", // F#m A F#m A F#m E F#m
  K: "[c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4] ~ [c#4,e4,g#4] ~ [b3,e4] ~", // C#m E5
  L: "[a3,c#4,e4] ~ [a3,c#4,e4]!2 ~ [a3,c#4,e4]!2 ~ [a3,c#4,e4]@4 [b3,d#4]@3 [b3,d#4]", // A B
  M: "[c#4,e4] [b3,d#4] [c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [c#4,e4] [b3,d#4] [c#4,e4] [b3,d#4]", // C#m B C#m B C#m B
  N: "[b3,d#4,f#4] [b3,c#4,e4] [b3,d#4,f#4] ~ [d#4,f#4] ~ [d#4,f#4] ~ [d#4,f#4] ~ [d#4,f#4] ~ [d#4,f#4] [c#4,e4] [d#4,f#4] [c#4,e4]", // B C#m7 B D#m C#m D#m C#m
  O: "[b3,e4,g#4] [b3,d#4,f#4] [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E B E
  P: "[[a3,c4,e4]@6 e4 f#4, ~@3 [a3,c4]]/2", // Am
  Q: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
  R: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // B
  S: "[c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,e4,g#4] ~", // C#m
  T: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
})).s("gm_string_ensemble_1").gain(0.25)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_2 = note("<~@10 A B C D E F G H I D G H D ~@3 J K L M N O P Q R@2 S@2 T U>".pickRestart({
  A: "a3", B: "c#2", C: "d#2", D: "e2", E: "a2", F: "e3", G: "b2", H: "c#3", I: "a2@3 a2", J: "e3@3 e3@3 e3@2 e3@8",
  K: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~", L: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  M: "g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~", N: "a2 ~ a2!2 ~ a2!2 ~ a2@2 ~@2 b2@2 ~@2",
  O: "g#3 f#3 g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 f#3 g#3 f#3", P: "d#3 c#3 d#3 ~ d#3 ~ d#3 ~ d#3 ~ d#3 ~ d#3 c#3 d#3 e3",
  Q: "[b2,e3] [b2,d#3] [b2,e3] ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", R: "c3", S: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  T: "c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~", U: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
})).s("gm_string_ensemble_1").gain(0.3)

// bass · electric bass finger · "Electric Bass"
const bass = note("<~ A@2 B C D B@2 C D E F G H I J K L M N K L O P Q R S P T U V W X Y Z@2 N AA L M>".pickRestart({
  A: "a3/2", B: "e3", C: "f#3", D: "g#3", E: "a3", F: "c#2", G: "d#2", H: "e2", I: "a2", J: "[e2,e3]", K: "[b1,b2]",
  L: "[c#2,c#3]", M: "[a1,a2]@3 [a1,a2]", N: "[e1,e2]", O: "a1", P: "e1@2 e1@2 e1@2 e1!2 e1@2 e1@2 e1@2 e1!2",
  Q: "f#1@2 f#1@2 f#1@2 f#1!2 f#1@2 f#1@2 f#1@2 b1 c2", R: "c#2@2 c#2@2 c#2@2 c#2!2 c#2@2 c#2@2 c#2@2 c#2 b1",
  S: "a1@2 a1@2 a1@2 a1!2 a1@2 a1@2 a1@2 a1!2", T: "f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 b1 c2", U: "c#2!6 b1!2",
  V: "a1!4 a1@2 [e1,b1]@2", W: "c#2 ~@2 c#3@5", X: "d#2 ~@2 d#3@5", Y: "e2 ~@2 e2@5", Z: "a1/2", AA: "[f#1,f#2]",
})).s("gm_electric_bass_finger").gain(0.2)

// other · french horn · "Horn in F"
const french_horn = note("<~@15 A B C D E F G ~@18>".pickRestart({
  A: "e4@2 e4 b3", B: "e4@3 d#4", C: "c#4@3 d#4@5", D: "c#4@3 b3@5", E: "e4@3 b3", F: "f#4@3 d#4", G: "c#4",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note("<~@36 [g#4 e4] [f#4@2 e4 d#4] [e4@3 d#4@5] [c#4@3 b3 b3@4]>")
  .s("gm_french_horn").gain(0.2)

// chords · acoustic guitar steel · "Acoustic Guitar (Treble Clef)"
const acoustic_guitar_steel = note(`<
  ~@3 A B C D A B E F G H I J K L M N O L P Q R S T U V W X Y ~@4 Z AA AB AC AD
>`.pickRestart({
  A: "[e3,b3,e4]", B: "[f#3,b3,e4]", C: "c#4@3 g#3@3 e4@4 ~@6", D: "a3@3 e4@3 [a3,b3,e4]@8 ~@2",
  E: "c#3@3 g#3@3 e4@8 ~@2", F: "~ [a3,b3,e4]@7 ~@8, [a2,b2] ~", G: "~ g#4@15, [c#4,e4]", H: "~ f#4@15, [b3,d#4]",
  I: "~ g#4@11 ~@2 e2 [a2,e3], [b3,e4]@3 ~", J: "[c4,e4]@12 ~@2 e2 [b2,e3], a3 ~@15",
  K: "[b3,e4]@12 ~@2 g#3 [b3,e4], g#3 ~@15", L: "e4@12 ~@2 g#2 [c#3,g#3], f#4 ~@15",
  M: "[e4,g#4]@8 ~@6 e2 [b2,e3], c#4 ~@15", N: "[b3,e4]@8 ~@5 [b3,e4,a4]@3, g#3 ~@11 [b2,e3]@4",
  O: "~@2 e4@10 ~@2 g#3 [b3,e4], [e2,b2]@3 ~, ~ [e3,g#3,b3]@11 ~@4", P: "[e4,g#4], c#4 ~@15", Q: "[a3,c4,e4]",
  R: "e3@3 [b3,e4]@3 e3@10", S: "f#3@3 [c#4,f#4]@3 f#3@10", T: "c#3@3 [g#3,c#4]@13", U: "[a2,e3]@3 a3@3 [a3,e4]@10",
  V: "e3@3 [b3,e4]@3 e3@6 e3@2 [e3,b3]@2", W: "f#3@3 [c#4,f#4]@3 f#3@6 f#3@2 [e3,b3]@2",
  X: "c#3@3 [g#3,c#4]@3 [c#3,g#3]@10", Y: "[a2,e3]@3 a3@3 [a3,e4]@6 [f#3,b3,d#4]@4",
  Z: "c3 e2 a2 b2 c3 e3 a3 b3 c4 e4 a4 b4 c5 e4 g#4 a4", AA: "[b3,e4,b4]@6 [b2,e3,b3]@6 ~@2 g#3 [b3,e4]",
  AB: "e4@6 b3@6 ~@2 g#2 [c#3,g#3], f#4 ~@15", AC: "[e4,g#4]@6 [d#4,g#4]@6 ~@2 e2 [b2,e3], c#4 ~@15",
  AD: "[b3,e4]@3 [b3,e4]@3 ~@2, g#3 ~@15", // E5
})).s("gm_acoustic_guitar_steel").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@31 [x ~@2 x ~@2 x ~]!3 x [~@6 x!2] ~@4>").gain(0.3)

stack(
  piano, piano_soft, string_ensemble_1, string_ensemble_1_2, bass, french_horn, french_horn_soft, acoustic_guitar_steel,
  kick
)

More by Ludwig van Beethoven