Strudelify

The Eyes of Truth

Enigma

KeyC♯ minorTempo92 bpm
0:00/0:00
// The Eyes of Truth — Enigma
// 92 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · pad halo · "HALO PAD"
const pad_halo = note(`<
  A@21 B@4 C@2 B@4 C@2 D E@2 B@4 C@2 E@2 C@2 E@2 C@2 E@2 F@2 E@2 C@2 G H B@4 C@2 B@4 C@2 D E@16
>`.pickRestart({
  A: "c#2/7", B: "c#2/4", C: "a1/2", D: "b1", E: "c#2/2", F: "f#2/2", G: "g#2", H: "g#1",
})).s("gm_pad_halo").gain(0.33).pan(0.6)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note("<A@21 B@8 C@4 D E@2 F@8 G@2 H@2 G@2 H@2 I@8 B@8 C@4 D E@16>".pickRestart({
  A: "[g#3 a3 g#3 a3, [c#3,e3]]/7", B: "[g#3@2 a3 [g#3,c#4,d#4], [c#3,e3]]/8", C: "[g#3 a3, [c#3,e3]]/4",
  D: "[d#3,f#3,b3]", E: "[e3,g#3,c#4]/2", F: "[g#3@2 a3 g#3, [c#3,e3]]/8", G: "a3/2", H: "g#3/2",
  I: "[g#4 ~ g#3 ~ a3 ~@2 c4, c#4@7 ~, a3 ~@2 [g#3,d#4], ~ f#4@2 e4@3 ~@2]/8", // G#5
})).s("gm_synth_strings_2").gain(0.27).pan(0.4)

// other · shakuhachi
const shakuhachi = note("<~@36 A@2 B C D E@3 F G H@4 I@2 ~@37>".pickRestart({
  A: "[f#4 g#4@10 c#5 ~@2 g#4@10 ~ b4@3 ~ f#4@2 ~, ~@6 g#4!2]/2", B: "g#4@11 ~@2 f#4@2 ~, f#4 ~@11 e4@2 ~@2",
  C: "c#4@13 ~@3", D: "b4 c#5@8 f#5 ~ c#5@5",
  E: "[~ e5@4 d#5@4 c#5@2 b4@3 f#4 g#4@11 f#4@2 b4@2 g#4@16 ~@2, ~ d#5 ~@7 b4 ~@18 a4 ~ f#4 ~@17]/3",
  F: "g#4 d#5@9 g#5 ~ d#5@2 c#5@2, ~ c#5 ~@14", G: "f#5@2 e5@2 d#5 c#5@2 b4, e5 ~@3 d5 ~@3 c#5 ~@7",
  H: "[~ c#5@9 f#4 g#4@2 f#4@2 g#4@11 ~@3 c#4 d#4 e4@13 g#4@2 ~ f#4@5 e4@5 b3 c#4@2 b3@4, b4@2 ~@42 f#4 ~@2 e4 ~@16]/4",
  I: "[~ c#4@13 ~@2, ~@2 b3 ~@29]/2",
})).s("gm_shakuhachi").gain(0.53).pan(0.3)

// other · bagpipe · "BAG PIPE"
const bagpipe = note("<~@3 A B C D@2 E@2 A B C ~ A B C D@2 E@2 ~@68>".pickRestart({
  A: "e4@10 e4@2 a#4 [a#4,b4]!3", B: "[a#4,b4] b4@2 g#4@5 g#4@4 a#4 [a#4,b4]!3, ~ a#4 ~@14",
  C: "[a#4,b4] b4@2 g#4@13, ~ a#4 ~@14", D: "[~@8 e4@10 e4@2 a#4 [a#4,b4]!4 b4@2 g#4@5, ~@25 a#4 ~@6]/2",
  E: "[g#4@4 a#4 [a#4,b4]!4 b4@2 g#4@13 ~@8, ~@9 a#4 ~@22]/2", // Bmaj7
})).s("gm_bagpipe").gain(0.12).pan(0.3)

// other · taiko drum · "TAIKO"
const taiko_drum = note("<~@14 [d3 ~@6 d3]!45 [d3 ~@7] [d3 ~@6 d3]!28 [d3 ~@7]>").s("gm_taiko_drum").gain(0.39).pan(0.6)

// chords · pad metallic · "METAL PAD"
const pad_metallic = note(`<
  ~ A@4 B@8 ~ C@7 D@4 E@2 F@2 D@2 E@2 G D@6 E@2 D@2 E@2 D@2 E@2 D@6 E@2 F@2 D@4 E@2 F@2 D@2 E@2 G D@2 ~@14
>`.pickRestart({
  A: "[~@3 a5@7 g#5@6, ~@3 [c#3,e5]@13]/4", B: "[~ a5@7 g#5@7 a5@7 g#5@7 ~@3, ~ [c#3,e5]@14 [c#3,e5]@14 ~@3]/8",
  C: "[[c#2,e4,g#4]@28 [c#2,e4,a4]@27 ~ [c#2,e4,g#4]@27 ~ [c#2,e4,a4]@27 ~]/7", D: "[c#2,e4,g#4]/2", E: "[a1,e4,a4]/2",
  F: "[c#2,e4,d#5]/2", G: "[b1,f#4,b4]",
})).s("gm_pad_metallic").gain(0.06).pan(0.6)

// other · shakuhachi
const shakuhachi_2 = note("<~@36 A B@2 ~ C@2 ~@2 D E ~@2 F ~ G@2 ~@37>".pickRestart({
  A: "~@4 f#4 g#4@10 c#5", B: "[~@2 g#4@17 ~@13]/2", C: "[~@4 b4 c#5@8 f#5 ~ c#5@6 ~@11]/2",
  D: "~@4 g#4 d#5@9 g#5 ~, ~@5 c#5 ~@10", E: "d#5 ~@7", F: "~ c#4 d#4 e4@13", G: "[b3@5 ~ c#4@26, ~@6 b3 ~@25]/2",
})).s("gm_shakuhachi").gain(0.22).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A B A@2 B A C A B A C A B A C A B A C A@2 C A B A C A B A C A B A C A@3 C A B A C A B A D A B A C A B A C A B A C
  A@2 C A B A C A B A C A B A C A D
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~@2 x ~@3", B: "x!2 ~ x!3 ~ x!3 ~@2 x ~ x ~", C: "x!2 ~ x!3 ~ x!6 ~ x!2", D: "x",
})).gain(0.39)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@14 A@6 ~ A@3 ~ A@3 ~ A@3 ~ A@2 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 B A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@2 ~ A@3 ~ A@3 ~ A@3 ~ A ~
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@13 x ~@2",
})).gain(0.26)

// drums · hihat
const hihat = s("hh").struct(`<
  A@2 B A@2 C A@3 D A@5 E A E@2 F E A E A E A E F A@2 E A E A F E A E A E A E F A@2 E A E A@2 F E A E A E A E F G A E A
  E A E F A@2 E A E A F E A E A E A E F A@2 E A E A G
>`.pickRestart({
  A: "x!16", B: "x!3 ~ x!12", C: "x!15 ~", D: "x!7 ~ x!8", E: "x!6 ~ x!9", F: "x!11 ~ x!4", G: "x",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@9 [~@5 x ~@2] ~@3 [~@15 x] ~@75>").gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@12 A B C ~ C@2 ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C@2 ~ C ~ C ~ C ~ C ~ C ~ C ~ C@3 ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~
  C ~ C@2 ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@13 x!2 ~", C: "~@13 x ~@2",
})).gain(0.26)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@2 B ~@3 C ~@5 D ~ D@2 E D ~ D ~ D ~ D E ~@2 D ~ D ~ E D ~ D ~ D ~ D E ~@2 D ~ D ~@2 E D ~ D ~ D ~ D E ~@2 D ~
  D ~ D E ~@2 D ~ D ~ E D ~ D ~ D ~ D E ~@2 D ~ D ~@2
>`.pickRestart({
  A: "~@3 x ~@12", B: "~@15 x", C: "~@7 x ~@8", D: "~@3 x ~@4", E: "~@11 x ~@4",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@13 [~@8 x!2 ~ x!2 ~@3] ~@75>").gain(0.32)

// drums · china
const china = s("cr").struct("<~@6 x ~@81 x>").gain(0.52)

// drums · ride bell
const ride_bell = s("rd").struct("<~@5 [~@14 x!2] ~@83>").gain(0.19)

// drums · tambourine
const tambourine = s("tb").struct("<~@12 [~@6 x!2 ~@8] ~@76>").gain(0.32)

// drums · triangle
const triangle = s("triangles:30").struct("<[~ x!3 ~ x!3 ~ x!3 ~ x!3]!59 ~ [~ x!3 ~ x!3 ~ x!3 ~ x!3]!28 ~>").gain(2.81)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<[x!4]!59 x [x!4]!28 x>").gain(2.81)

// drums · shaker
const shaker = s("sh").struct("<~@14 [~@5 x ~@2]!45 ~ [~@5 x ~@2]!28 ~>").gain(0.39)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  [~@3 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!13
  ~@75
>`).gain(0.28)

stack(
  pad_halo, synth_strings_2, shakuhachi, bagpipe, taiko_drum, pad_metallic, shakuhachi_2, kick, snare, snare_soft,
  hihat, low_tom, mid_tom, open_hat, high_tom, china, ride_bell, tambourine, triangle, triangle_2, shaker, jingle_bells
)

More by Enigma