Strudelify

Für Elise WoO 59

Beethoven

KeyE minorTempo60 bpm
0:00/0:00
// Für Elise WoO 59 — Beethoven
// 60 bpm, 3/8, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 3/8 at bar 2) are rendered on a constant 3/8 grid of one bar per cycle
// note: duplicate parts dropped: ch 7 "Violin" violin (copy of ch 2 "Flute" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/225871; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 30 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/1.5)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · flute
const flute = note("<A B C D E B C F G B C D E B C F H ~@7 I B C F J@2>".pickRestart({
  A: "~@11 e5@2 d#5@3", B: "e5@3 d#5@2 e5@3 b4@3 d5@2 c5@3", C: "a4@5 ~@3 c4@3 e4@2 a4@3",
  D: "b4@5 ~@3 e4@3 g#4@2 b4@3", E: "c5@5 ~@3 e4@3 e5@2 d#5@3", F: "b4@5 ~@3 e4@3 c5@2 b4@3",
  G: "a4@5 ~@3 e4@3 e5@2 d#5@3", H: "a4@11 ~@5", I: "~@8 e4@3 e5@2 d#5@3", J: "a4/2",
})).s("gm_flute").gain(0.3)

// other · trumpet · "C Trumpet"
const trumpet = note("<~@16 A B C D E F G H I F G J K@2>".pickRestart({
  A: "~@8 b4@3 c5@2 d5@3", B: "e5@5 ~@3 g4@3 f5@2 e5@3", C: "d5@5 ~@3 f4@3 e5@2 d5@3", D: "c5@5 ~@3 e4@3 d5@2 c5@3",
  E: "b4@5 ~@3 e4@3 e5@2 d#5@3", F: "e5@3 d#5@2 e5@3 b4@3 d5@2 c5@3", G: "a4@5 ~@3 c4@3 e4@2 a4@3",
  H: "b4@5 ~@3 e4@3 g#4@2 b4@3", I: "c5@5 ~@3 e4@3 e5@2 d#5@3", J: "b4@5 ~@3 e4@3 c5@2 b4@3", K: "a4/2",
})).s("gm_trumpet").gain(0.2)

// other · tubular bells
const tubular_bells = note("<~@17 A B C D ~ E D C ~ E D F@2>".pickRestart({
  A: "e5", B: "d5", C: "c5", D: "b4", E: "a4", F: "a4/2",
})).s("gm_tubular_bells").gain(0.25)

// chords · vibraphone
const vibraphone = note("<~ A B C D A B C B A B C D A B C B A E D C A B C D A B C F@2>".pickRestart({
  A: "[e4,g4,b4,e5]", B: "[e4,a4,c5,e5]", C: "[g4,b4,e5,g5]", D: "[c4,e4,g4,c5]", E: "[d4,f4,a4,d5]@11 ~@5",
  F: "[e4,a4,c5,e5]/2", // Am
})).s("gm_vibraphone").gain(0.2)

// other · cello · "Violoncello"
const cello = note("<~@2 A B A ~ A B A ~ A B A ~ A B A C D A E ~ A B A@2 B A F G>".pickRestart({
  A: "a2@3 e3@2 a3@3 ~@8", B: "e2@3 e3@2 g#3@3 ~@8", C: "c3@3 g3@2 c4@3 ~@8", D: "g2@3 g3@2 b3@3 ~@8",
  E: "e2@3 e3@2 e4@3 ~@8", F: "[a3,c4]", G: "[a2,a3]",
})).s("gm_cello").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~ A@15 ~ A@3 ~ A@4 ~ A@2 ~@2>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<A@4 B A@3 C A@3 B A@3 ~ A@3 ~@2 A@3 ~ A D ~@2>".pickRestart({
  A: "~@11 x ~@4", B: "~@8 x ~@2 x ~@4", C: "~@5 x ~@10", D: "~@5 x ~@5 x ~@4",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ A@15 ~ B@3 ~@2 B@3 ~ B@2 ~@2>".pickRestart({
  A: "x ~@4 x ~@5 x ~@4", B: "x ~@10 x ~@4",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@16 [~@11 x ~ x ~@2] ~@13>").gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@16
  [~@5 x ~@2 x ~@7]
  ~@3
  [~@5 x ~@2 x ~@2 x ~ x ~@2]!2
  ~@3
  [~@5 x ~@2 x ~@2 x ~ x ~@2]
  ~@4
>`).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@17 [~@5 x ~@10]!3 ~@2 [~@5 x ~@10]!3 ~ [~@5 x ~@10]!2 ~@2>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@16 [x ~@2 x ~@12] ~@3 [x ~@2 x ~@12]!2 ~@3 [x ~@2 x ~@12] ~@4>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@3 A ~@4 A ~ A ~>".pickRestart({
  A: "x",
})).gain(0.5)

stack(flute, trumpet, tubular_bells, vibraphone, cello, kick, snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash)

More by Beethoven