Strudelify
KeyB♭ majorTempo118 bpm
0:00/0:00
// X-Files — Television Theme Songs
// 118 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "Piano" piano (copy of ch 1 "Eerie sound" synth choir); ch 6 "Piano #1" piano (copy of ch 2 "Eerie sound echo #1" synth choir); ch 7 "Piano #2" piano (copy of ch 3 "Eerie sound echo #2" synth choir); ch 8 "Piano #3" piano (copy of ch 4 "Eerie sound echo #3" synth choir); ch 15 "2nd Whistle" whistle (copy of ch 9 "Whistle" whistle, 0.125 beats late)
// note: Full arrangement: all 24 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/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 · whistle
const whistle = note("<~ A B C A D E F G E F H E A B E A D E I E ~@3>".pickRestart({
  A: "~@3 bb5", B: "f6 eb6 f6 ab6", C: "f6", D: "f6 eb6 f6 bb6", E: "f6@3 ~", F: "~@3 db7", G: "c7 bb6 ab6 bb6",
  H: "c7 bb6 ab6 c7", I: "~@3 bb6",
})).s("gm_whistle").gain(0.3)

// chords · synth strings 2 · "Background hum"
const synth_strings_2 = note("<A@2 B C D E@8 F G H@8 ~>".pickRestart({
  A: "[~@2 bb3@13 bb3@17, ~ bb2@15]/2", B: "~ [bb2,bb3]@31", C: "~ [bb2,bb3]@7", D: "~@15 f4@17, ~@3 [bb2,bb3]@13",
  E: "[~@8 [bb2,bb3,f4]@35 [bb2,bb3,f4]@35 [bb2,bb3,f4]@36 [bb2,bb3,f4]@36 [bb2,bb3,f4]@35 [bb2,bb3,f4]@36 [bb2,bb3,f4]@35]/8", // Bb5
  F: "[bb2,bb3,f4]", G: "~ [bb2,bb3,f4]@7",
  H: "[~@7 [bb2,bb3,f4]@35 [bb2,bb3,f4]@35 [bb2,bb3,f4]@35 [bb2,bb3,f4]@32 [bb2,bb3,f4]@32 [bb2,bb3,f4]@32 ~ [bb2,bb3,f4]@32 [bb2,bb3,f4]@8 ~@7]/8", // Bb5
})).s("gm_synth_strings_2").gain(0.19)

// other · timpani · "Big drum"
const timpani = note("<bb2 ~@13 bb2 ~@6 [bb2@3 ~@29] ~@2>").s("gm_timpani").gain(0.64)

// other · synth strings 2 · "2nd background hum"
const synth_strings_2_2 = note("<A@2 B C D E@8 F C G@8 ~>".pickRestart({
  A: "[~@2 [bb0,bb1]@13 [bb0,bb1]@17]/2", B: "~ [bb0,bb1]@31", C: "~ [bb0,bb1]@7", D: "~@3 [bb0,bb1]@13",
  E: "[~@8 [bb0,bb1]@35 [bb0,bb1]@35 [bb0,bb1]@36 [bb0,bb1]@36 [bb0,bb1]@35 [bb0,bb1]@36 [bb0,bb1]@35]/8", // Bb
  F: "[bb0,bb1]", // Bb
  G: "[~@7 [bb0,bb1]@35 [bb0,bb1]@35 [bb0,bb1]@35 [bb0,bb1]@32 [bb0,bb1]@32 [bb0,bb1]@32 ~ [bb0,bb1]@32 [bb0,bb1]@15]/8", // Bb
})).s("gm_synth_strings_2").gain(0.22)

// drums · kick
const kick = s("bd").struct("<x ~@13 x ~@6 x ~@2>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<x ~@13 x ~@6 [x!2 ~@30] ~@2>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 x ~@2>").gain(0.8)

stack(whistle, synth_strings_2, timpani, synth_strings_2_2, kick, low_tom, mid_tom)

More by Television Theme Songs