Strudelify

Gothic Theme

Kai Rosenkranz

KeyD majorTempo120 bpm
0:00/0:00
// Gothic Theme — Kai Rosenkranz
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4924972; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// bass · contrabass · "Kontrabas"
const bass = note(`<
  A B C D A B C D E F G H E F G I@2 J I K L M N O P J I K L M N Q R S T U V W X Y Z AA@2 AB AC V AD AE AF AG AH AI V@2
  AD AE AF AG AH AI V@2 AD AJ AF AG AH AI V@2 AK AL AM AN AO AN AP AQ AR AS AT AK ~ AU AV AU AW AX AY AZ BA AK
>`.pickRestart({
  A: "b1@4 f#2@3 e2", B: "g2@4 d2@3 e2", C: "b1 a1", D: "g1@2 g2 f#2", E: "g2@6 f#2 g2 a2@6 f#2@2",
  F: "b2@3 b1 c#2 d2 c#2 b1", G: "g1@2 d2@2 c#2@3 a1", H: "b1 f#1 b1 c#2 e2 d2 c#2 b1",
  I: "b1 f#2 b2 f#2 c#3 d3 c#3 b2", J: "b1 f#2 b2 f#2 c#3 f#2 b2 f#2", K: "b1 f#2 b2 f#2 b1 f#2 b1 a1",
  L: "f#1 c#2 f#2 c#2 g#2 a2 g#2 f#2", M: "g1 d2 g2 d2 a2 d2 g2 d2", N: "d2 a1 e2 a1 f#2 a1 d2 a1",
  O: "a1 c#2 e2 a2 b2 c#3 b2 a2", P: "c#3 a2 e2 a2 c#3 a2 c#3 a2", Q: "a1 c2 e2 a2 c3 a2 e2 c2", R: "a1 c2 e2 a2",
  S: "f2 e2 f2 f1", T: "f2 e2 f2 g2", U: "a1!2", V: "a1", W: "f1", X: "f2", Y: "g1", Z: "g2@7 ~",
  AA: "[~@2 a1@3 c2 e2 c2]/2", AB: "a2 e2 c3 a2", AC: "a1 c2 e2 c2", AD: "a1 e2 a2@4 a1@2", AE: "f1 c2 f2@4 g1@2",
  AF: "a1 g1", AG: "f1@2 f1 e1", AH: "d2@2 d2 c2", AI: "a#1", AJ: "f1 c2 f2@4 g2@2", AK: "d2",
  AL: "d2 a2 d3 a2 e3 a2 f3 a2", AM: "d2 a2 d3 a2 d2@4", AN: "d2 a1", AO: "a#1 f1", AP: "a#1 c2", AQ: "g1 a1",
  AR: "a#1@2 a#1 a1", AS: "g1 a#1", AT: "c2!2", AU: "d2 ~ a1 ~", AV: "a#1 ~ f1 ~", AW: "a#1 ~ c2 ~", AX: "g1 ~ a1 ~",
  AY: "a#1 f1 a#1 c2!2 d2 ~@2", AZ: "g1 ~ a#1 ~", BA: "c2 ~ c2 ~",
})).s("gm_contrabass").gain(0.3)

stack(bass)