Strudelify
Omen III cover art

Omen - The Story Continues

Omen III

Magic Affair

KeyF♯ minorTempo136 bpm
0:00/0:00
// Omen III — Magic Affair
// 136 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass
const bass = note(`<
  ~@16 A B C D A E A F A E A F A E A F A E A F ~@12 G H I J K J L M A E A F A E A F A E A F A E A F A E A F ~@25 N O N P
  N P N Q ~@24
>`.pickRestart({
  A: "f#1 ~ f#1 ~ f#1 f#1@2 e1 f#1 ~ f#1 ~ f#1 f#1@2 e1", B: "f#1 ~ f#1 ~ f#1 f#1@2 e1 f#1 e1 f#1 e1 f#1 e1 f#1 e1",
  C: "f#1 ~ f#1 ~ f#1!2 ~ e1 f#1 ~ f#1 ~ f#1!2 ~ e1", D: "f#1 ~ f#1 ~ f#1!2 ~ e1 f#1@2 ~@6",
  E: "f#1 ~ f#1 ~ f#1@3 e1 f#1 ~ f#1 e1 f#1 e1 f#1 e1", F: "f#1 ~ f#1 ~ f#1 f#1@2 e1 f#1@2 ~ e1 f#1 e1 f#1 e1",
  G: "f#1 ~ f#1 ~ f#1!3 e1 f#1 ~ f#1 ~ f#1!2 ~ e1", H: "f#1 ~ f#1 ~ f#1 ~ f#1 e1 f#1 ~ f#1 e1 f#1 e1 f#1 e1",
  I: "f#1 ~ f#1 ~ f#1@2 ~ e1 f#1 ~ f#1 ~ f#1 ~ f#1 e1", J: "f#1 ~ f#1 ~ f#1 ~ f#1 e1 f#1 ~ f#1 ~ f#1 e1 f#1 e1",
  K: "f#1 ~ f#1 ~ f#1@2 e1 f#1 ~ f#1 ~ f#1 ~ f#1 ~ e1", L: "f#1 ~ f#1 ~ f#1 ~ f#1 e1 f#1 ~ f#1 ~ f#1 ~ f#1!2",
  M: "e1 ~ f#1 ~ f#1 ~ f#1 e1 f#1 ~ f#1 e1 f#1 e1 f#1 e1", N: "f#1 ~ f#1 ~ f#1@3 e1 d1 ~ d1 ~ d1@3 d1",
  O: "e1 ~ e1 ~ e1@2 ~ e1 f#1 ~ f#1 ~ f#1 ~ f#1!2", P: "e1 ~ e1 ~ e1@2 ~ e1 f#1 ~ f#1 ~ f#1@3 e1",
  Q: "e1 ~ e1 ~ e1@2 ~ e1 f#1@2 ~@6",
})).s("gm_fretless_bass").gain(0.42)

// other · piano
const piano = note(`<
  A B A B A B A B A B A B A B A B ~@20 A B A B A B A B A B A B A B A B A B A B ~@20 A B A B A B A B A B A B A B A B ~ A
  B A B ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "f#5 c#5 f#5 c#5 a4 d5 a4 d5", B: "b4 e5 b4 e5 f#5 c#5 f#5 c#5",
})).s("gm_piano").gain(0.15).pan(0.6)

// bass · synth bass 2
const bass_2 = note(`<
  A B A B A B A B A B A B A B A B ~@8 C D C D C D C E F D F E A B A B A B A B A B A B G H G H ~@4 C I C I C D C D C I C
  I C D C D C I C I A B A B A B A B A B A B A B A B ~ J K J K J K J K J K J K J K J K A B A B A B A B A B A B A B A B
  ~@8
>`.pickRestart({
  A: "f#1!8 d1!8, f#2 d2", B: "e1!8 f#1!8, e2 f#2",
  C: "[f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4]@2 [f#3,a3,c#4] ~ [f#3,a3,c#4] ~", // F#m
  D: "[f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@3 [f#3,a3,c#4]@3 ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4] ~, ~@7 f#4", // F#m Bm
  E: "[f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@3 ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,f#4]@2, ~@14 d4 ~", // F#m Bm B5
  F: "[f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@3 ~ [f#3,a3]@2 [f#3,c#4] ~ [f#3,a3,c#4] ~, ~@10 c#4 ~ a3@2 ~@2", // F#m F#5 F#m
  G: "f#1!8 d1!8", H: "e1!8 f#1!8",
  I: "[f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 ~@2 [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", J: "f#2!8 d2!8",
  K: "e2!8 f#2!8",
})).s("gm_synth_bass_2").gain(0.24).pan(0.2)

// chords · lead 8 bass lead
const lead_8_bass_lead = note("<~@20 A B@8 C@4 D@8 ~@7 E F G F ~@12 A C@4 H@5 A ~@58>".pickRestart({
  A: "[f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@4, ~@3 c#4 ~@4", // F#m
  B: "[~@10 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@20 [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@14 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@20 [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@4, ~@5 d4!2 d4@30 d4!2 d4@25, ~@11 c#4 ~@15 c#4 ~@15 c#4 ~@15 c#4 ~@4]/8", // B5 F#m B5 F#m
  C: "[~@10 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@20 [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@4, ~@5 d4!2 d4@25, ~@11 c#4 ~@15 c#4 ~@4]/4", // B5 F#m
  D: "[~@10 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@100, ~@5 d4!2 d4@57, ~@11 c#4 ~@52]/8", // B5 F#m
  E: "c#5 e5 f#5 ~ f#5 ~ f#5 ~ f#5!2 ~ f#5!2 ~ f#5!2", F: "c#5 e5 f#5 ~ f#5 ~ f#5 ~ f#5!2 ~ f#5!5",
  G: "c#5 e5 f#5 ~ f#5 ~ f#5 ~ f#5!2 ~ f#5 ~ f#5!3",
  H: "[~@10 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@20 [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3] ~@3 [f#3,a3,c#4]@2 ~@14 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~, ~@10 d4@2 d4@67 ~, ~@11 c#4 ~@15 c#4 ~@12]/5", // B5 F#m B5
})).s("gm_lead_8_bass_lead").gain(0.06).pan(0.9)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@4 A B A B A B A B A B A B ~@20 A B A B A B A B A B A B ~@28 A B A B A B A B A B A B A B A B ~@5 C D C D C D C D C D
  C D A B A B A B A B A B A B A B A B ~@8
>`.pickRestart({
  A: "[f#4,f#5] [e4,e5] [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~", // F# E F#
  B: "[e4,e5] [f#4,f#5]!2 ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~", // E F#
  C: "[f#4,f#6] [c#4,c#6] [f#4,f#6] [c#4,c#6] [a3,a5] [d4,d6] [a3,a5] [d4,d6]", // F# C# F# C# A D A D
  D: "[b3,b5] [e4,e6] [b3,b5] [e4,e6] [f#4,f#6] [c#4,c#6] [f#4,f#6] [c#4,c#6]", // B E B E F# C# F# C#
})).s("gm_synth_brass_1").gain(0.24).pan(0.4)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@4 A B A B A B A B A B A B ~@20 A B A B A B A B A B A B ~@28 A B A B A B A B A B A B A B A B ~@17 A B A B A B A B A B
  A B A B A B ~@8
>`.pickRestart({
  A: "[f#5,f#6] [c#5,c#6] [f#5,f#6] [c#5,c#6] [a4,a5] [d5,d6] [a4,a5] [d5,d6]", // F# C# F# C# A D A D
  B: "[b4,b5] [e5,e6] [b4,b5] [e5,e6] [f#5,f#6] [c#5,c#6] [f#5,f#6] [c#5,c#6]", // B E B E F# C# F# C#
})).s("gm_string_ensemble_2").gain(0.17).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@4 A@15 B A@35 B A@36 ~@3 A@13 B A@16 ~@8>".pickRestart({
  A: "x!4", B: "x!3 ~",
})).gain(0.72)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@4 A@15 B A@35 B A@36 ~@3 A@13 B A@16 ~@8>".pickRestart({
  A: "x!4", B: "x!3 ~",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@11 A ~@4 B@15 A B@11 A B@7 C B@19 A B@16 ~@3 B@9 ~@4 A B@16 ~@3 D ~@4
>`.pickRestart({
  A: "x!16", B: "~ x ~ x", C: "~ x ~@2", D: "~@8 x!8",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@15 B ~@16 A@19 C ~@20 A@16 ~ D@2 A@13 B A@20 ~@4>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x ~@7", C: "x!2 ~@2 x!2 ~@2 x!2 ~@6", D: "x!4",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@15 B ~@16 A@19 C ~@20 A@16 ~ A@15 B A@20 ~@4>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~ x ~ x ~ x ~@2",
})).gain(0.24)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@20 [~ x ~ x ~ x ~ x]!16 ~@20 [~ x ~ x ~ x ~ x]!20 ~@57>").gain(0.16)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@27 A ~@3 A ~@11 A ~@23 A ~@3 A ~@7 A ~@24 A ~@7 A ~@11 A ~@3>".pickRestart({
  A: "x",
})).gain(0.32)

// drums · shaker
const shaker = s("sh").struct("<~@4 A@15 B A@35 C A@36 ~@3 A@13 B A@20 ~@4>".pickRestart({
  A: "x!16", B: "x!9 ~@7", C: "x!12 ~@4",
})).gain(0.32)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@20 A@16 ~@13 A ~ A ~ A ~ A@21 ~@57>".pickRestart({
  A: "~@3 x",
})).gain(0.69)

stack(
  bass, piano, bass_2, lead_8_bass_lead, synth_brass_1, string_ensemble_2, kick, kick_soft, snare, hihat, open_hat,
  open_hat_soft, crash, shaker, jingle_bells
)

More by Magic Affair