Strudelify

The Elder Scrolls II Daggerfall

Eric Herberling

KeyE♭ majorTempo68 bpm
0:00/0:00
// The Elder Scrolls II Daggerfall — Eric Herberling
// 68 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2, 3/4 at bar 26, 1/4 at bar 26, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Violin" named as a string part, played on violin (its tuba patch is not one); ch 11 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/3779956; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 51 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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · violin
const violin = note(`<
  A B C D E F G H I J K L M N O P Q B C H R S G T U V B C D E F G H I J K L M N O P Q B C H R S G T U W
>`.pickRestart({
  A: "~@3 g2", B: "c5@5 g4 eb5 bb5", C: "ab5@6 g5 f5", D: "g5@3 f5 eb5@2 d5 c5", E: "d5@3 g4",
  F: "c5@3 g4 eb5 c5 g5 c6", G: "bb5@4 ab5@2 g5 f5", H: "g5@3 f5 eb5@2 d5 eb5", I: "f5@3 g5",
  J: "ab5@10 f5@2 bb5@2 ab5 g5", K: "ab5 f5@2 g5", L: "ab5@7 g5 ab5 bb5 ab5 g5", M: "ab5@3 g4",
  N: "eb5@7 d5 eb5 f5 eb5 d5", O: "eb5 g4 c5@2", P: "c5@10 d5 eb5 f5@2 eb5 f5", Q: "g5@3 g4", R: "f5@3 g4",
  S: "c5@5 g4 eb5 c6", T: "g5@4 f5 eb5 d5@3 g4@3", U: "c5", V: "c5@3 g2", W: "c5@3 c5",
})).s("gm_violin").gain(0.3)

// chords · violin · soft notes
const violin_soft = note(`<
  ~ A B A C A B D E F G F H I J K L A B A C A B M N O A B A C A B D E F G F H I J K L A B A C A B M N P
>`.pickRestart({
  A: "c3", B: "f3", C: "g3", D: "eb3", E: "bb3@2 ab3 g3", F: "f3@3 bb3", G: "f3@6 f3 g3 ab3@4 f3@4",
  H: "f3@6 f3 g3 ab3@4 d3@4", I: "c3@3 f3", J: "c4 bb3 ab3 g3", K: "f3 eb3 d3 c3", L: "bb3@6 g3 ab3 bb3@4 g3@4",
  M: "eb3 d3", N: "c3 g2", O: "c3@3 ~", P: "c3@3 c3",
})).s("gm_violin").gain(0.15)

// other · cello · "Violoncello"
const cello = note(`<
  A B C D E F G H I J G K L M N O P B C D E F G Q R S B C D E F G H I J G K L M N O P B C D E F G Q R T
>`.pickRestart({
  A: "~@3 g2", B: "eb3@7 d3", C: "c3@5 bb2 c3 d3", D: "eb3@5 f3 g3 ab3", E: "bb3@9 ab3 bb3 ab3 g3@6 c3@3 d3@3",
  F: "eb3@15 f3@3 g3@2 ab3@2 bb3@2", G: "c4", H: "bb3@7 c4", I: "d4@3 c4 bb3!2 c4 d4", J: "c4@3 d4", K: "c4@3 db4",
  L: "c4@3 f3", M: "g3@3 ab3", N: "g2@2 f2 eb2 f2 g2 ab2@6", O: "g3", P: "g3@3 d3", Q: "c4 bb3",
  R: "ab3@4 g3 f3 eb3@3 g2@3", S: "c3@3 g2", T: "c3@3 c3",
})).s("gm_cello").gain(0.2)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  A B C D E F G H I J K J L M N O P B C D E F G Q R S B C D E F G H I J K J L M N O P B C D E F G Q R T
>`.pickRestart({
  A: "~@3 g1", B: "eb2@7 d2", C: "c2@5 bb1 c2 d2", D: "eb2@5 f2 g2 ab2", E: "bb2@9 ab2 bb2 ab2 g2@6 c2@3 d2@3",
  F: "eb2@15 f2@3 g2@2 ab2@2 bb2@2", G: "c3", H: "bb2@7 c3", I: "d3@3 c3 bb2!2 b2 d3", J: "f2@3 bb2",
  K: "f2@6 f2 g2 ab2@4 f2@4", L: "f2@6 f2 g2 ab2@4 d2@4", M: "c2@3 f2", N: "c3 bb2 ab2 g2", O: "f2 eb2 d2 c2",
  P: "bb2@6 g2 ab2 bb2@4 g2@4", Q: "c3 bb2", R: "ab2@4 g2 f2 eb2@3 g1@3", S: "c2@3 g1", T: "c2@3 c2",
})).s("gm_acoustic_bass").gain(0.2)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~ A B C D E F G H I F J K L M N O A B C D E F P Q R A B C D E F G H I F J K L M N O A B C D E F P Q S
>`.pickRestart({
  A: "eb4@7 d4", B: "c4@5 bb3 c4 d4", C: "eb3@5 f3 g3 ab3", D: "bb3@9 ab3 bb3 ab3 g3@6 c3@3 d3@3",
  E: "eb3@15 f3@3 g3@2 ab3@2 bb3@2", F: "c4", G: "bb3@7 c4", H: "d4@3 c4 bb3!2 c4 d4", I: "c4@3 d4", J: "c4@3 db4",
  K: "c4@3 f3", L: "g3@3 ab3", M: "g3@2 f3 eb3 f3 g3 ab3@6", N: "g3", O: "g3@3 d3", P: "c4 bb3",
  Q: "ab3@4 g3 f3 eb3@3 g2@3", R: "c3@3 ~", S: "c3@3 c3",
})).s("gm_french_horn").gain(0.2)

// other · trombone
const trombone = note(`<
  ~ A B C D E F G H I J K L M N O P Q B C D E F R S T A B C D E F G H I J K L M N O P Q B C D E F R S U
>`.pickRestart({
  A: "eb3@6 eb3 d3", B: "c3@5 bb2 c3 d3", C: "eb3@5 f3 g3 ab3", D: "bb3@9 ab3 bb3 ab3 g3@6 c3@3 d3@3",
  E: "eb3@15 f3@3 g3@2 ab3@2 bb3@2", F: "c4", G: "bb3@7 c4", H: "d4@3 c4 bb3!2 c4 d4", I: "c3@3 d3", J: "c3",
  K: "c3@3 db3", L: "c3@3 f2", M: "g2@3 ab2", N: "g2@2 f2 eb2 f2 g2 ab2@6", O: "g2", P: "g2@3 d2", Q: "eb3@7 d3",
  R: "c4 bb3", S: "ab3@4 g3 f3 eb3@3 g2@3", T: "c3@3 ~", U: "c3@3 c3",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass_2 = note(`<
  A B C B D B C E F G H G I J K L M B C B D B C N O P B C B D B C E F G H G I J K L M B C B D B C N O Q
>`.pickRestart({
  A: "~@3 g1", B: "c2", C: "f2", D: "g2", E: "eb2", F: "bb2@2 ab2 g2", G: "f2@3 bb2", H: "f2@6 f2 g2 ab2@4 f2@4",
  I: "f2@6 f2 g2 ab2@4 d2@4", J: "c2@3 f2", K: "c3 bb2 ab2 g2", L: "f2 eb2 d2 c2", M: "bb2@6 g2 ab2 bb2@4 g2@4",
  N: "eb2 d2", O: "c2 g1", P: "c2@3 g1", Q: "c2@3 c2",
})).s("gm_tuba").gain(0.15)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A B A B A C A D A D A D A D A B A B A B A D E A B A B A B A C A D A D A D A D A B A B A B A D F
>`.pickRestart({
  A: "x ~@2 x!4 ~@5 x ~@11", B: "x ~@5 x ~ x ~ x ~ x ~@11 x!13 ~@11",
  C: "x ~@5 x ~ x ~ x ~ x ~@11 x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x",
  D: "x ~@5 x ~ x ~ x ~ x ~@11 x!13 ~ x!2 ~ x!2 ~ x!2 ~ x", E: "x!35 ~@13", F: "x!35 ~ x ~@11",
})).gain(0.25)

stack(violin, violin_soft, cello, bass, french_horn, trombone, bass_2, kick, snare)