Strudelify

good omens - main theme

Misc Television

KeyD majorTempo169 bpm
0:00/0:00
// good omens - main theme — Misc Television
// 169 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5887968; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(169/3)

// 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 · harpsichord
const harpsichord = note(`<
  ~@8 A B A B A B A B C D E F C G H@2 I J K L I M N@2 O P Q R O S T@2 U V C D I J W@2 ~@68
>`.pickRestart({
  A: "a4@8 c5@3 e5@5", B: "f5@8 d5@3 b4@5", C: "~@5 e4@3 d#4@3 e4@2 d#4@3", D: "e4@3 ~@2 c4@3 ~@3 a3@3 ~@2",
  E: "e3@5 a3@8 c4@3", F: "e4", G: "e4@5 f4@8 c4@3", H: "[e4@5 d4@27]/2", I: "~@5 d4@3 c#4@3 d4@2 c#4@3",
  J: "d4@3 ~@2 b3@3 ~@3 g#3@3 ~@2", K: "e3@5 g#3@8 b3@3", L: "d4", M: "d4@3 e4@2 f4@3 e4@3 d4@2 b3@3",
  N: "[d4@5 c4@27]/2", O: "~@5 a4@3 g#4@3 a4@2 g#4@3", P: "a4@3 ~@2 e4@3 ~@3 c#4@3 ~@2", Q: "a3@3 ~@2 c#4@8 e4@3",
  R: "a4", S: "a4@5 a#4@8 e4@3", T: "[g4@5 f4@27]/2", U: "~@5 f4@3 e4@3 f4@2 e4@3", V: "f4@3 ~@2 d4@3 ~@3 b3@3 ~@2",
  W: "a3/2",
})).s("gm_harpsichord").gain(0.4)

// other · harpsichord · soft notes
const harpsichord_soft = note("<A B A B A B A B ~@108>".pickRestart({
  A: "a4@8 c5@3 e5@5", B: "g#4@8 d5@3 b4@5",
})).s("gm_harpsichord").gain(0.2)

// other · harpsichord
const harpsichord_2 = note("<~@8 A B A B A B A B ~@100>".pickRestart({
  A: "a4@3 b4@2 c5@3 d5@3 e5@2 f5@3", B: "a4@3 b4@2 c5@3 e5@3 c5@2 a4@3",
})).s("gm_harpsichord").gain(0.15)

// other · violin
const violin = note(`<
  ~@64 A B A C A B D E F G F H F G I J K L M J N O@2 P Q R S P T U@2 V W X I V Y Z@2 AA AB J K P Q ~@5 AC AD
>`.pickRestart({
  A: "e5@11 c#5@5", B: "f#5@11 c#5@5", C: "f#5@11 ~@5", D: "e5@11 b4@5", E: "d5@11 ~@5", F: "f#5@11 d5@5",
  G: "g#5@11 d5@5", H: "g#5@11 ~@5", I: "a5", J: "~@5 e5@3 d#5@3 e5@2 d#5@3", K: "e5@3 ~@2 c5@3 ~@3 a4@3 ~@2",
  L: "e4@5 a4@8 c5@3", M: "e5", N: "e5@5 f5@8 c5@3", O: "[e5@5 d5@27]/2", P: "~@5 d5@3 c#5@3 d5@2 c#5@3",
  Q: "d5@3 ~@2 b4@3 ~@3 g#4@3 ~@2", R: "e4@5 g#4@8 b4@3", S: "d5", T: "d5@3 e5@2 f5@3 e5@3 d5@2 b4@3",
  U: "[d5@5 c5@27]/2", V: "~@5 a5@3 g#5@3 a5@2 g#5@3", W: "a5@3 ~@2 e5@3 ~@3 c#5@3 ~@2", X: "a3@3 ~@2 c#5@8 e5@3",
  Y: "a5@5 a#5@8 e5@3", Z: "[g5@5 f5@27]/2", AA: "~@5 f5@3 e5@3 f5@2 e5@3", AB: "f5@3 ~@2 d5@3 ~@3 b4@3 ~@2",
  AC: "~@5 a#4@3 g#4@3 f#4@2 f4@3", AD: "d#4@3 ~@13",
})).s("gm_violin").gain(0.3)

// other · violin · soft notes
const violin_soft = note("<A B A B A B A B A C D C D C D C ~@93 E@2 F@3 G ~>".pickRestart({
  A: "a3", B: "g#3", C: "g#3@11 ~@5", D: "a3@11 ~@5", E: "a3/2", F: "a#4@3 b4@2 a#4@3 b4@3 a#4@2 b4@3",
  G: "a#4@3 b4@3 ~@10",
})).s("gm_violin").gain(0.05)

// other · church organ · "Organ"
const church_organ = note("<~@79 A B C D A E F@2 G H I J G K L@2 M N O P M Q R@2 S T A B ~@7 U V>".pickRestart({
  A: "~@5 e4@3 d#4@3 e4@2 d#4@3", B: "e4@3 ~@2 c4@3 ~@3 a3@3 ~@2", C: "e3@5 a3@8 c4@3", D: "e4", E: "e4@5 f4@8 c4@3",
  F: "[e4@5 d4@27]/2", G: "~@5 d4@3 c#4@3 d4@2 c#4@3", H: "d4@3 ~@2 b3@3 ~@3 g#3@3 ~@2", I: "e3@5 g#3@8 b3@3", J: "d4",
  K: "d4@3 e4@2 f4@3 e4@3 d4@2 b3@3", L: "[d4@5 c4@27]/2", M: "~@5 a4@3 g#4@3 a4@2 g#4@3",
  N: "a4@3 ~@2 e4@3 ~@3 c#4@3 ~@2", O: "a3@3 ~@2 c#4@8 e4@3", P: "a4", Q: "a4@5 a#4@8 e4@3", R: "[g4@5 f4@27]/2",
  S: "~@5 f4@3 e4@3 f4@2 e4@3", T: "f4@3 ~@2 d4@3 ~@3 b3@3 ~@2", U: "~@8 g#4@3 f#4@2 f4@3", V: "d#4@3 ~@13",
})).s("gm_church_organ").gain(0.4)

// other · church organ · "Organ" · soft notes
const church_organ_soft = note("<~@107 A B C@2 D@3 E ~>".pickRestart({
  A: "~@5 d4@3 c#4@3 d4@2 c#4@3", B: "d4@3 ~@2 b3@3 ~@3 g#3@3 ~@2", C: "a3/2", D: "a#4@3 b4@2 a#4@3 b4@3 a#4@2 b4@3",
  E: "a#4@3 b4@2 a#4@3 ~@8",
})).s("gm_church_organ").gain(0.05)

// other · piano
const piano = note(`<
  ~@16 A B A C A B@2 D E F G D H F A I A B A I A B J K L A@2 B@2 I A I ~@16 M N M O M N P Q R S R T R S U V W X Y V Z
  AA@2 AB AC AD AE AF AG AH@2 AI AJ AK AL AI AM AN@2 AO AP V W AQ AR ~@5 AS AT
>`.pickRestart({
  A: "[a1,a2]@5 ~@11", B: "[e1,e2]@5 ~@11", C: "[e1,e2]@3 ~@2 [f#1,f#2]@3 ~@3 [b1,g#2]@3 ~@2",
  D: "[b1,b2]@3 ~@2 [c2,c3]@3 ~@3 [d2,d3]@3 ~@2", E: "[e2,e3] ~", F: "[b1,b2]@5 ~@11", G: "e2@15 ~",
  H: "[e2,e3]@5 ~@11", I: "[e1,e2]@3 ~@2 [f#1,f#2]@3 ~@3 [g#1,g#2]@3 ~@2", J: "[d1,d2]@5 ~@11",
  K: "[a1,a2]@3 ~@2 [b1,b2]@3 ~@3 [c#2,c#3]@3 ~@2", L: "[d2,d3]@5 ~@11", M: "e5@10 ~ c#5@5", N: "f#5@10 ~ c#5@5",
  O: "f#5@5 ~@3", P: "e5@10 ~ b4@5", Q: "d5@5 ~@3", R: "f#5@10 ~ d5@5", S: "g#5@10 ~ d5@5", T: "g#5@5 ~@3",
  U: "a5@15 ~", V: "[a1,a2]@5 e4@3 d#4@3 e4@2 d#4@3", W: "[e1,e2]@5 c4@3 ~@3 a3@3 ~@2, e4@3 ~@13",
  X: "[a1,a2,e3]@5 a3@8 c4@3", Y: "[e1,e2]@3 ~@2 [f#1,f#2]@3 ~@3 [g#1,g#2]@3 ~@2, e4@15 ~", Z: "[e1,e2,e4]@5 f4@8 c4@3",
  AA: "[[e1,e2,e4]@5 ~@11 [b1,b2]@3 ~@2 [c2,c3]@3 ~@3 [d2,d3]@3 ~@2, ~@5 d4@25 ~@2]/2", // E B C D
  AB: "~@5 d4@3 c#4@3 d4@2 c#4@3, [e2,e3] ~", AC: "[b1,b2]@5 b3@3 ~@3 g#3@3 ~@2, d4@3 ~@13",
  AD: "e3@5 g#3@8 b3@3, e2@15 ~", AE: "[b1,b2]@3 ~@2 [c2,c3]@3 ~@3 [d2,d3]@3 ~@2, d4@15 ~",
  AF: "[e2,e3]@5 d4@3 c#4@3 d4@2 c#4@3", AG: "d4@3 e4@2 f4@3 e4@3 d4@2 b3@3, [b1,b2]@5 ~@11",
  AH: "[[a1,a2,d4]@5 ~@11 [e1,e2]@3 ~@2 [f#1,f#2]@3 ~@3 [g#1,g#2]@3 ~@2, ~@5 c4@25 ~@2]/2", // D5 E F# G#
  AI: "[a1,a2]@5 a4@3 g#4@3 a4@2 g#4@3", AJ: "[e1,e2]@5 e4@3 ~@3 c#4@3 ~@2, a4@3 ~@13",
  AK: "[a1,a2]@5 c#4@8 e4@3, a3@3 ~@13", AL: "[e1,e2]@3 ~@2 [f#1,f#2]@3 ~@3 [g#1,g#2]@3 ~@2, a4@15 ~",
  AM: "[e1,e2,a4]@5 a#4@8 e4@3", AN: "[[d1,d2,g4]@5 ~@11 [a1,a2]@3 ~@2 [b1,b2]@3 ~@3 [c#2,c#3]@3 ~@2, ~@5 f4@25 ~@2]/2",
  AO: "[d2,d3]@5 f4@3 e4@3 f4@2 e4@3", AP: "[a1,a2]@5 d4@3 ~@3 b3@3 ~@2, f4@3 ~@13", AQ: "~@5 d4@3 c#4@3 d4@2 c#4@3",
  AR: "[e1,e2,d4]@3 ~@2 [f#1,f#2,b3]@3 ~@3 [g#1,g#2,g#3]@3 ~@2", // E7 B5 G#
  AS: "~@5 a#4@3 g#4@3 f#4@2 f4@3, ~@5 [c2,c3]@5 ~ [d2,d3]@5", AT: "[d#2,d#3]@5 ~@11, d#4@3 ~@13",
})).s("gm_piano").gain(0.3)

// other · piano · soft notes
const piano_soft = note("<~@107 A ~ B@2 C@3 D ~>".pickRestart({
  A: "[e1,e2]@5 ~@11", B: "[a3@15 ~]/2", C: "a#4@3 b4@2 a#4@3 b4@3 a#4@2 b4@3, [a#1,a#2]@5 [a#1,a#2]@5 ~ [a#1,a#2]@5",
  D: "a#4@3 b4@3 ~@10, [a#1,a#2]@5 ~@11", // A#
})).s("gm_piano").gain(0.05)

// other · timpani
const timpani = note(`<
  ~@16 A B A C A B@2 D B E B D F E A C A B A C A B G H I A@2 B@2 C A C ~@15 J A K L B A B K B E B E B E B A@2 B A C A
  B@2 D B E B D F E A C A B A C A B G H I A@2 B@2 C ~@5 M N
>`.pickRestart({
  A: "a2", B: "e2", C: "e2@5 f#2@5 ~ g#2@5", D: "b2@5 c3@5 ~ d3@5", E: "b2", F: "e3", G: "d2", H: "a2@5 b2@5 ~ c#3@5",
  I: "d3", J: "~@8 a2@3 a2@2 a2@3", K: "g#2", L: "f#2", M: "~@5 c3@5 ~ d3@5", N: "d#3@3 ~@13",
})).s("gm_timpani").gain(0.3)

// other · timpani · soft notes
const timpani_soft = note("<~@63 [~@5 a2@3 ~@8] ~@47 [a#2@5 a#2@5 ~ a#2@5]!3 [a#2@5 ~@11] ~>")
  .s("gm_timpani").gain(0.05)

// other · glockenspiel
const glockenspiel = note("<~ A B C D C D C D ~@55 E F E G E F H I J K J L J K M ~@37>".pickRestart({
  A: "~@5 d7@5 ~ b6@5", B: "a6@11 ~@5", C: "~@5 d6@5 ~ b5@5", D: "a5@11 ~@5", E: "e7@11 c#7@5", F: "f#7@11 c#7@5",
  G: "f#7@11 ~@5", H: "e7@11 b6@5", I: "d7@11 ~@5", J: "f#7@11 d7@5", K: "g#7@11 d7@5", L: "g#7@11 ~@5", M: "a7",
})).s("gm_glockenspiel").gain(0.3)

// other · tubular bells · "Chimes"
const tubular_bells = note("<A B A B A B A B A C A C A C A C ~@100>".pickRestart({
  A: "a4@8 c5@3 e5@5", B: "g#4@8 d5@3 b4@5", C: "f5@8 d5@3 b4@5",
})).s("gm_tubular_bells").gain(0.15)

// other · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@23 A B ~@6 C D ~@6 E F ~@7 G H I J G K J@2 L J L J L J M ~@16 N O P Q N R S@2 T U V W T X Y@2 Z AA AB AC Z AD AE@2
  AF AG N O T U AH@2 ~@3 AI AJ
>`.pickRestart({
  A: "~@13 b4 [c5,c#5] [d5,d#5]", B: "e5@5 ~@11", C: "~@13 f#4 [g4,g#4] [a4,a#4]", D: "b4@5 ~@11",
  E: "~@5 e6 [d6,d#6] c#6 [b5,c6] [a5,a#5] [g5,g#5] [f5,f#5] e5 [d5,d#5] [c5,c#5] [a#4,b4]", F: "a4@5 ~@11",
  G: "a3@3 e4@2 a4@3 e4@3 a4@2 e4@3", H: "g#3@3 c#4@2 g#4@3 c#4@3 g#4@2 c#4@3",
  I: "f#3@3 c#4@2 f#4@3 c#4@3 f#4@2 c#4@3", J: "e3@3 b3@2 e4@3 b3@3 e4@2 b3@3",
  K: "c#3@3 g#3@2 c#4@3 g#3@3 c#4@2 g#3@3", L: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3", M: "a3@5 ~@11",
  N: "~@5 e4@3 d#4@3 e4@2 d#4@3", O: "e4@3 ~@2 c4@3 ~@3 a3@3 ~@2", P: "e3@5 a3@8 c4@3", Q: "e4", R: "e4@5 f4@8 c4@3",
  S: "[e4@5 d4@27]/2", T: "~@5 d4@3 c#4@3 d4@2 c#4@3", U: "d4@3 ~@2 b3@3 ~@3 g#3@3 ~@2", V: "e3@5 g#3@8 b3@3", W: "d4",
  X: "d4@3 e4@2 f4@3 e4@3 d4@2 b3@3", Y: "[d4@5 c4@27]/2", Z: "~@5 a4@3 g#4@3 a4@2 g#4@3",
  AA: "a4@3 ~@2 e4@3 ~@3 c#4@3 ~@2", AB: "a3@3 ~@2 c#4@8 e4@3", AC: "a4", AD: "a4@5 a#4@8 e4@3", AE: "[g4@5 f4@27]/2",
  AF: "~@5 f4@3 e4@3 f4@2 e4@3", AG: "f4@3 ~@2 d4@3 ~@3 b3@3 ~@2", AH: "a3/2", AI: "~@3 b4@2 a#4@3 g#4@3 f#4@2 f4@3",
  AJ: "d#4 ~",
})).s("gm_orchestral_harp").gain(0.2)

// other · orchestral harp · "Harp" · soft notes
const orchestral_harp_soft = note("<~@111 [a#4@3 b4@2 a#4@3 b4@3 a#4@2 b4@3]!3 [a#4@3 ~@13] ~>")
  .s("gm_orchestral_harp").gain(0.05)

// drums · crash
const crash = s("cr").struct("<~@16 x ~@77 [~@11 x ~@4] ~@21>").gain(0.4)

// drums · claves
const claves = s("clave:2").struct("<A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@101>".pickRestart({
  A: "x ~@4 x ~@5 x ~@4",
})).gain(0.49)

// drums · triangle
const triangle = s("triangles:35").struct("<~@24 A ~@7 A ~@7 A ~@23 B@3 A B@3 A B@3 A B@2 A ~@37>".pickRestart({
  A: "x", B: "x ~@2 x ~ x ~@5 x ~@4",
})).gain(1.3)

stack(
  harpsichord, harpsichord_soft, harpsichord_2, violin, violin_soft, church_organ, church_organ_soft, piano, piano_soft,
  timpani, timpani_soft, glockenspiel, tubular_bells, orchestral_harp, orchestral_harp_soft, crash, claves, triangle
)

More by Misc Television