Strudelify
Fire cover art

Omen - The Story Continues

Fire

Magic Affair

KeyA minorTempo123 bpm
0:00/0:00
// Fire — Magic Affair
// 123 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · synth bass 1 · "+SYNBASS 3"
const bass = note(`<
  ~@4 A B C D A B C D A B C D E@2 F D A B C D A B C D A B C D A B C D A B C D G@3 ~ E@2 F H E@2 F H ~ A B C D A B C D
  ~@8 I J K L A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "a2!16", B: "a2!12 g2!4", C: "f2!16", D: "f2!8 g2!8", E: "a2!2 c3 e3 a2!2 c3 e3 a2!2 c3 e3 a2!2 c3 e3",
  F: "a2!2 c3 f3 a2!2 c3 f3 a2!2 c3 f3 a2!2 c3 f3", G: "a1 a2 a1 a2 a1 a2 a1 a2",
  H: "a2!2 c3 d3 a2!2 c3 d3 a2!2 c3 d3 a2!2 c3 d3", I: "a2 ~@2 a2 ~@2 a2 ~ a2 ~@5 a2 ~",
  J: "a2 ~@2 a2 ~@2 a2 ~ g2 ~@5 g2 ~", K: "f2 ~@2 f2 ~@2 f2 ~ f2 ~@7", L: "f2 ~@2 f2 ~@2 f2 ~ g2 ~@3 g2 ~@3",
})).s("gm_synth_bass_1").gain(0.39)

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@8 A B C D A B C D ~@4 A B C D A B C D A B C D A B C D A B C D E F E G ~@4 E F E G ~ A B C D A B C D ~@16 A B C D A B
  C D ~@9
>`.pickRestart({
  A: "[a3,e4]@3 [a3,e4] ~@2 [a3,e4] ~ [a3,e4]!3 ~ [a3,e4] ~ [a3,d4] ~", // A5 D5
  B: "[a3,e4]@3 [a3,e4] ~@2 [a3,e4] ~ [a3,e4]!3 ~ [a3,e4] ~ [a3,e4] ~", // A5
  C: "[c4,f4]@3 [c4,f4] ~@2 [c4,f4] ~ [c4,f4]!3 ~ [c4,f4] ~ [c4,f4] ~", // F5
  D: "[c4,f4]@3 [c4,f4] ~@2 [c4,f4] ~ [c4,f4]!3 ~ [d4,g4] ~ [d4,g4] ~", // F5 G5
  E: "[g3,d4,g4,d5] [a3,e4,a4,e5] ~ [a3,e4,a4,e5] ~ [a3,e4,a4,e5] ~ [a3,e4,a4,e5]", // G5 A5
  F: "~ [a3,e4,a4,e5] ~ [a3,e4,a4,e5] ~ [a3,g4,a4,g5] [g3,g4] [a3,d4,a4,d5]", // A5 A7 G D5
  G: "~ [a3,f4,a4,f5] ~ [a3,f4,a4,f5] ~ [a3,d4,a4,d5] [g3,g4] [a3,d4,a4,d5]", // Dm D5 G D5
})).s("gm_lead_2_sawtooth").gain(0.29).pan(0.4)

// chords · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  A B C D A B C D E@2 F G E@2 F G ~@4 E@2 F H E@2 F G E@2 F G E@2 F G E@2 F G ~@13 E@2 F G E@2 F G A B C D A B C D A B C
  D A B C D E@2 F G E@2 F G A B C D A B C D ~
>`.pickRestart({
  A: "e4!2 [e4,a4] a4 [a4,e5] e5 [a4,e5] a4 [a4,c5] c5 [a4,c5] a4 [a4,b4] b4 [b4,c5] c5", // A5 Am Asus2 Cmaj7
  B: "[e4,c5]!2 [e4,a4] a4 [a4,e5] e5 [a4,e5] a4 [a4,c5] c5 [a4,c5] a4 [a4,b4] b4 [b4,c5] c5", // C A5 Am Asus2 Cmaj7
  C: "[f4,c5] f4 [f4,a4] a4 [a4,e5] e5 [a4,e5] a4 [a4,c5] c5 [a4,c5] a4 [a4,b4] b4 [b4,c5] c5", // F5 F A5 Am Asus2 Cmaj7
  D: "[f4,c5]!2 [f4,a4] a4 [a4,e5] e5 [a4,e5] a4 [a4,c5] c5 [a4,c5] a4 [a4,b4] b4 [b4,c5] c5", // F5 F A5 Am Asus2 Cmaj7
  E: "e4!2 a4!2 e5!2 a4!2 c5!2 a4!2 b4!2 c5!2", F: "f4!2 a4!2 e5!2 a4!2 c5!2 a4!2 b4!2 c5!2",
  G: "f4 [f4,c5] a4!2 e5!2 a4!2 c5!2 a4!2 b4!2 c5!2", H: "~ c5 ~@14",
})).s("gm_synth_bass_1").gain(0.14).pan(0.6)

// chords · synth bass 1 · "SYN BASS 1" · soft notes
const synth_bass_1_soft = note(`<
  A B C D A B C D E F G H E F G H ~@4 E F G I E F G H E F G H E F G H E F G H ~@13 E F G H E F G H A B C D A B C D A B C
  D A B C D E F G H E F G H A B C D A B C D ~
>`.pickRestart({
  A: "~@3 e4 ~ a4 ~ e5 ~@5 a4 ~ b4", B: "~@2 c5 e4 ~ a4 ~ e5 ~ a4 ~ c5 ~ a4 ~ b4",
  C: "~ c5 ~ f4 ~ a4 ~ e5 ~ a4 ~ c5 ~ a4 ~ b4", D: "~@3 f4 ~ a4 ~ e5 ~ a4 ~ c5 ~ a4 ~ b4",
  E: "~@2 e4!2 a4!2 e5!2 a4 ~ c5 ~ a4!2 b4!2", F: "c5!2 [e4,c5] e4 a4!2 e5!2 a4!2 c5!2 a4!2 b4!2",
  G: "c5!2 f4!2 a4!2 e5!2 a4!2 c5!2 a4!2 b4!2", H: "c5 ~ f4!2 a4!2 e5!2 a4!2 c5!2 a4!2 b4!2", I: "c5 ~@15",
})).s("gm_synth_bass_1").gain(0.07).pan(0.6)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A@4 B@4 ~@16 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 E@3 ~@14 C@2 D@2 A@4 B@4 A@4 B@4 ~@4 C@2 F G A@4 H@4 I
>`.pickRestart({
  A: "[[a2,e4]@4 [f2,f4]@3 [g2,d4,g4,b4], [a4,c5]@7 ~]/4", B: "[[a2,e4]@4 [f2,f4]@3 [g2,d4,g4,b4], [c4,a4]@7 ~]/4",
  C: "[[e4,a4,c5]@3 [d4,g4,b4]]/2", D: "[[c4,f4,a4]@3 [d4,g4,b4]]/2", E: "[e4,a4]/3", F: "[c4,f4,a4]",
  G: "~ [d4,g4,b4]", H: "[[a2,e4]@4 [f2,f4]@3 [g2,b3,d4,g4], [c4,a4]@7 ~]/4", I: "[a2,a3,c4,e4]@13 ~@3",
})).s("gm_synth_strings_1").gain(0.21).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@8 A@15 B A@19 C A@8 ~ A@8 ~@15 D A@16 ~>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~ x!6", C: "x ~ x!2", D: "~@2 x!2",
})).gain(0.61)

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

// drums · clap
const clap = s("cp").struct(`<
  ~ A ~ A ~ A ~@2 B@15 C B@19 ~ B@8 ~ B@8 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 B@8 D@7 E ~
>`.pickRestart({
  A: "~@6 x!2", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@5 x ~ x!2 ~@2", E: "~ x!8 ~@3 x ~@3",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<A B A B A B A ~@36 C ~@8 D ~@8 A B A B A B A B A B A B A B A E ~@17>".pickRestart({
  A: "x", B: "~ x", C: "x ~ x!2", D: "x!2 ~@2", E: "x ~@2 x ~@4 x ~@3 x ~@3",
})).gain(0.49)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@7 B@5 A@3 B A@19 ~ B@8 ~ A@8 ~@16 A@16 ~>".pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", B: "x!4",
})).gain(0.37)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@35 ~ A@8 ~ A@8 ~@16 A@16 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct("<~@23 [x!3 ~] ~@19 [x ~ x!2] ~@32 [~@2 x!2] ~@17>").gain(0.31)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 [x!16]!8 ~@16 [x!16]!3 ~ [x!16]!8 ~@42>").gain(0.31)

// drums · claves
const claves = s("clave:2").struct("<A ~ A ~ A ~ A ~@54 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@18>".pickRestart({
  A: "~ x",
})).gain(2.7)

stack(
  bass, lead_2_sawtooth, synth_bass_1, synth_bass_1_soft, synth_strings_1, kick, snare, clap, low_tom, hihat, open_hat,
  crash, tambourine, claves
)

More by Magic Affair