Strudelify

Spiderman, l'araignee

Television Theme Songs

KeyA minorTempo100 bpm
0:00/0:00
// Spiderman, l'araignee — Television Theme Songs
// 100 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 1 "guitar1" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 2 "bass" named as a bass, played on electric bass finger (its piano patch is not one); ch 3 "bass2" named as a bass, played on electric bass finger (its piano patch is not one); ch 7 "guitar4" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 12 "strings" named as a string part, played on string ensemble 1 (its piano patch is not one)
// note: duplicate parts dropped: ch 2 "bass" electric bass finger (copy of ch 3 "bass2" electric bass finger)
// note: Full arrangement: all 54 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// bass · electric bass finger · "bass2" · F
const bass = note("<[a1!8]!20 [f1!8]!4 [a1!8]!8 [[f1,a1]!8]!4 [a1!8]!16 a1 ~>").s("gm_electric_bass_finger").gain(0.45)

// bass · overdriven guitar · "guitar2"
const bass_2 = note(`<
  ~@2 A B C D E F G H I J G H G H K L M J ~@4 C L G H C L G H ~@4 C L G H C L G H C L G H C L G H ~@2
>`.pickRestart({
  A: "a1@2 a1!2 ~@4 a1@2 a1!2 ~@4", B: "a1 ~ a1!2 ~@4 a1@2 a1 a1@2 ~ g1@2", C: "a1 ~ a1!2 ~@4 a1 ~ a1!2 ~@4",
  D: "a1 ~ a1!2 ~@4 a1 ~ a1 a1@3 g1@2", E: "a1 ~ a1 a1@2 ~@3 a1 ~ a1 a1@2 ~@3", F: "a1 ~ a1 a1@2 ~@3 a1 ~ a1 a1@3 g1@2",
  G: "a1@2 a1 a1@2 ~@3 a1 ~ a1 a1@2 ~@3", H: "a1@2 a1 a1@2 ~@3 a1@2 a1 a1@3 g1@2", I: "a1 ~ a1 a1@2 ~@3 a1 ~ a1!2 ~@4",
  J: "a1@2 a1 a1@2 ~@3 a1 ~ a1 a1@3 g1@2", K: "a1@2 a1 a1@2 ~@3 a1@2 a1 a1@2 ~@3",
  L: "a1 ~ a1 a1@2 ~@3 a1@2 a1 a1@3 g1@2", M: "a1 ~ a1!2 ~@4 a1 ~ a1 a1@2 ~@3",
})).s("gm_overdriven_guitar").gain(0.48)

// other · overdriven guitar · "guitar3"
const overdriven_guitar = note(`<
  ~@2 A B C D E F G H I J G H G H K L M J N ~@3 C L G H K H E J N ~@3 C L G H K H E J N C L G H K H E ~@2
>`.pickRestart({
  A: "~@3 a1@2 a1!2 ~@4 a1@2 a1!2 ~", B: "~@3 a1 ~ a1!2 ~@4 a1@2 a1 a1@2", C: "~ g1@2 a1 ~ a1!2 ~@4 a1 ~ a1!2 ~",
  D: "~@3 a1 ~ a1!2 ~@4 a1 ~ a1 a1@2", E: "~ g1@2 a1 ~ a1 a1@2 ~@3 a1 ~ a1 a1@2",
  F: "~@3 a1 ~ a1 a1@2 ~@3 a1 ~ a1 a1@2", G: "~ g1@2 a1@2 a1 a1@2 ~@3 a1 ~ a1 a1@2",
  H: "~@3 a1@2 a1 a1@2 ~@3 a1@2 a1 a1@2", I: "~ g1@2 a1 ~ a1 a1@2 ~@3 a1 ~ a1!2 ~",
  J: "~@3 a1@2 a1 a1@2 ~@3 a1 ~ a1 a1@2", K: "~ g1@2 a1@2 a1 a1@2 ~@3 a1@2 a1 a1@2",
  L: "~@3 a1 ~ a1 a1@2 ~@3 a1@2 a1 a1@2", M: "~ g1@2 a1 ~ a1!2 ~@4 a1 ~ a1 a1@2", N: "g1 ~@7",
})).s("gm_overdriven_guitar").gain(0.31)

// other · piano · "ooh"
const piano = note("<~@4 A B A B A B A B A B A B A B A B ~@34>".pickRestart({
  A: "a3@2 c4 f4@5", B: "e4@3 d#4@5",
})).s("gm_piano").gain(0.46)

// other · electric guitar clean · "guitar4"
const electric_guitar_clean = note("<~@4 A@16 B@4 ~@30>".pickRestart({
  A: "[~ a2@2 c3 f3@5 e3@3 d#3@5 a2@2 c3 f3@5 e3@3 d#3@5 a2@2 c3 f3@5 e3@3 d#3@5 a2@2 c3 f3@5 e3@3 d#3@4]/8",
  B: "[~@2 d4@2 c4 a4@5 d4@2 c4 a3@5 d4@2 c4 a4@5 d4@2 c4 a3@5 d4@2 c4 a4@5 d4@2 c4 a3@5 ~@14]/4",
})).s("gm_electric_guitar_clean").gain(0.46)

// chords · piano · "gunshot!"
const piano_2 = note("<~ A@2 ~@2 B@3 C@4 ~@3 D@4 ~@6 E ~@4 F ~@23>".pickRestart({
  A: "[~@13 c3@16 ~@3]/2", B: "[~@23 a5@16 ~@9, ~@3 [g#2,a#2]@28 ~@17]/3",
  C: "[~@29 b0@19 ~@9 e2 ~@6, ~@11 c#3@39 ~@14]/4",
  D: "[~@29 a3 ~ [a3,b3] ~@5 b3 ~@26, ~@4 g3@41 ~@19, ~@15 c3@10 ~@7]/4", E: "~@9 [f2,g2,a2] ~@6",
  F: "~@10 [a5,b5,c6] c6 ~@4", // Am
})).s("gm_piano").gain(0.51).pan(1)

// other · string ensemble 1 · "strings"
const string_ensemble_1 = note("<~@2 A@6 B@8 C@4 D@6 E@4 F@2 G@8 H@4 ~@10>".pickRestart({
  A: "[e4@23 f4, a4]/6", B: "[e4@31 f4]/8", C: "e4/4", D: "[[c4,f4]@16 e4@7 f4]/6", E: "[e4@7 f4]/2", F: "[e4@31 ~]/2",
  G: "[[c4,f4]@64 ~ e4@59 f4@4, a4]/8", H: "[e4@63 ~]/4",
})).s("gm_string_ensemble_1").gain(0.31)

// drums · kick
const kick = s("bd").struct("<[x!2]!52 x [~ x ~@7 x ~@6]>").gain(0.46)

// drums · snare
const snare = s("sd").struct("<A@19 B A@3 C A@7 D A@11 E A E A@3 E A F G ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x!9 ~@3", C: "~@4 x ~@5 x ~ x!2 ~@2", D: "~@2 x!11 ~@3", E: "~@4 x ~@7 x!2 ~@2",
  F: "~@4 x ~@3 x!2 ~ x!2 ~@2 x", G: "x!2 ~@14",
})).gain(0.51)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@51 [~@10 x ~@2 x!2 ~] [~@2 x!14] x>").gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@35 [~@4 x ~ x ~@2 x ~ x ~@2 x!2] ~@11 [~@14 x!2] ~@6>").gain(0.51)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@35 [~ x ~@6] ~@17 [~@7 x!3 ~@6]>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!24
  [~@4 x!2 ~@2 x!2 ~@2 x!2 ~@2]
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!27
  ~@2
>`).gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@3 B ~@7 A ~@3 C ~@9 A ~ D ~ A ~@4>".pickRestart({
  A: "~@14 x!2", B: "~@8 x ~@5 x!2", C: "~@2 x ~ x ~ x ~ x ~ x ~ x!2 ~@2", D: "~@12 x!2 ~@2",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct(`<
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!20
  [x ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!2
  [~@2 x!2 ~@2 x!2 ~@3 x ~@2 x ~]
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!12
  [~ x!3 ~@2 x!2 ~@2 x!2 ~@2 x!2]
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!15
  ~@2
>`).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@3 B ~@7 A ~@11 C ~@3 D ~@6>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@11 x ~ x!2 ~", C: "~@14 x!2", D: "~@8 x!4 ~@4",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~ A ~ A ~@2 B A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A B A ~@5 A ~ A ~ A ~ A ~ A C
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x ~@8 x ~@6",
})).gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@7 [~@9 x ~@6] ~@6 x ~@39>").gain(0.51)

stack(
  bass, bass_2, overdriven_guitar, piano, electric_guitar_clean, piano_2, string_ensemble_1, kick, snare, snare_soft,
  low_tom, low_tom_soft, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Television Theme Songs