Strudelify

Evening Eall

Enya

KeyF♯ majorTempo100 bpm
0:00/0:00
// Evening Eall — Enya
// 100 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 59 bars on a 32-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.

// chords · piano · "A.PIANO 1"
const piano = note("<A@3 B@8 C D@8 E@5 F@5 G@3 H@5 ~@4 I J@3 K@7 L@5 ~>".pickRestart({
  A: "[~@56 f#4@3 ~@17 d#4@4 ~@13 f4@3, ~@25 d#4@18 a#2@7 a#3@9 f#4@21 f4@13 ~@3, ~@32 f4@29 ~@11 f4@7 ~ c#3@16, ~@40 d#2@12 d#4@8 b2@21 ~@5 g#4@10, ~@40 f#4@7 d#3@14 ~@3 f#3@17 ~@2 g#3@7 g#3@6]/3",
  B: "[~@24 f4@4 ~@17 f#4@4 ~@19 f#4@3 ~@16 g#4@8 ~@21 f4@3 ~@14 f#4@3 ~@16 d#4@3 ~@12 f4@8 ~@19 d#4@4 ~@18 f#4@4 ~@3 g#3@7 ~@5 c#4@7 ~@4 f3@10, ~@5 [a#2,c#4]@23 b2@22 ~@7 g#3@15 ~@3 g#3@8 g#3@12 f4@20 ~@4 f#4@9 a#3@2 d#4@5 ~ [b2,f#4]@19 f4@12 ~@8 c#4@16 c#4@7 d#4@22 [c#3,f4]@23 ~@13, ~@8 f3@8 ~@5 d#4@7 f#4@17 ~@4 g#2@22 ~@8 c#5@18 ~@6 c#4@16 d#4@6 d#3@11 d#4@13 f4@6 [c#3,c#4]@21 ~@2 f3@8 f3@13 ~@3 f#3@19 ~@35, ~@12 a#3@17 ~@3 f#3@6 f#3@12 ~@3 d#3@19 c#3@25 ~@2 f3@10 ~@4 d#4@6 d#2@17 b3@6 b3@14 ~@5 g#4@15 ~@6 a#3@18 ~@13 f4@7 ~@10 d#4@13 ~@13, ~@35 b3@15 f#4@14 a#4@7 g#4@16 ~@8 a#2@25 ~@2 a#2@15 ~@2 f#3@6 ~ f#3@10 ~@2 g#3@6 g#3@7 ~@4 a#2@24 b2@22 ~@21 [a#2,c#4]@14]/8", // A#m B5 C# A#m
  C: "~ c#4 ~@5 g#4, ~ a#3@7 d#4@24, ~@9 b2@23, ~@3 f#3@2 ~ f#4@2, ~ b3",
  D: "[~@27 c#4@9 ~@39 f4@5 ~@15 f#4@3 ~@13 f4@4 d#4@3 ~@13 f4@8 ~@16 f4@3 ~@16 f#3@4 ~@16 f#4@4 ~@16 g#3@4 ~@20 f4@4 ~@11 d#4@3, ~ f4@17 f4@18 d#4@34 ~ d#4@9 d#4@7 d#3@5 d#4@6 [b2,f#4]@21 ~@5 g#4@16 ~@12 d#4@6 f#4@13 f#4@7 f#4@12 a#4@8 g#4@12 g#4@8 f4@16 d#4@8 d#4@8 a#3@6, ~@2 c#3@35 ~@4 a#2@40 d#2@17 d#4@17 ~@3 f4@13 ~@14 a#3@13 ~@3 f#3@6 f#3@7 ~@5 g#2@20 ~@5 c#5@15 ~@6 c#4@17 ~@5 d#3@9, ~@7 g#3@30 ~@8 d#3@36 ~@3 a#2@14 b3@6 b3@14 c#3@22 ~@2 f3@7 f3@5 f3@4 [b2,d#4]@22 ~@2 d#3@16 c#3@21 ~@5 f3@18 [d#2,f#4]@14, ~@14 f#4@22 ~@45 f#4@9 a#3@9 ~@2 f#3@7 f#3@11 ~@2 g#3@7 ~@11 [a#2,c#4]@20 ~@5 b3@16 ~@6 g#3@12 ~@3 g#3@6 g#3@6 ~@5 a#2@25 ~@2 a#2@11]/8", // B5 B D#m A#m
  E: "[f#4@3 ~@16 d#4@3 ~@14 f4@7 ~@21 d#4@4 ~@19 f#4@4 ~@19 c#4@4 ~@19 c#4@4 ~@20 g#4@3, ~@3 [b2,f#4]@20 ~@6 g#4@15 ~@40 f4@7 ~@7 c#4@12 ~@4 c#4@19 ~@20 f#4@7, ~@3 d#4@13 f4@6 f4@14 ~@7 c#4@17 c#4@9 ~@25 g#3@11 ~@9 a#2@23 [b2,d#4]@23, ~@3 b3@6 b3@13 c#3@22 ~@6 a#3@19 ~@4 f#3@18 [c#3,f4]@24 ~@3 f3@19 ~@4 f#3@19, ~@6 f#3@6 ~ f#3@10 ~@3 g#3@6 g#3@7 ~@4 a#2@26 [b2,d#4]@23 ~@9 d#4@13 ~@15 a#3@8 ~@23]/5", // B5 B C# B
  F: "[~@2 f4@12 ~@15 c#4@11 ~@34 f4@5 ~@25 c#4@5 ~@11 f#4@5 ~@17 f4@4 c#4@14, ~@2 c#3@38 d#4@36 ~@17 c#4@6 a#3@10 f#4@10 ~@6 f4@17 ~@18, ~@14 f4@8 f4@19 ~@4 a#2@32 ~@2 [f#2,f#4]@31 ~@8 g#4@8 ~@13 f#4@9 ~@12, ~@18 f#4@23 ~@7 d#3@28 ~@8 c#3@26 b2@15 c#3@22 ~@13, ~@70 f#4@7 ~@20 f#3@13 ~@4 f#3@11 ~@35]/5", // F#
  G: "[~@9 a#4@5 ~ b4@12 ~@22 a#4@5 ~@24 f#4@4 ~@10 f#4@4, ~ c#4@13 b2@13 [c#3,g#4]@27 [f#2,a#4]@29 ~@7 g#4@6, ~@5 f#4@10 ~@17 g#3@22 ~@4 c#3@24 b2@14, ~@37 c#4@17 ~@14 f#4@9 ~@5 f#4@10 ~@4, ~@45 b4@9 ~@18 c#4@10 ~@5 f#3@9]/3", // C#5 F#
  H: "[~@18 f4@6 ~@23 c#4@5 ~@13 f#4@11 ~@26 f#4@42 ~@16, ~ c#3@24 ~@4 f3@13 [f3,f#4]@11 ~@47 [a#3,c#4]@44 ~@16, ~ f4@17 ~@6 a#2@29 b2@23 [c#3,f4]@27 ~@57, ~@14 f#4@10 c#4@13 c#4@10 ~@5 d#4@24 ~@84]/5", // F#maj7 A#m C#
  I: "~@25 f4@7, ~@19 d#4@13",
  J: "[~@17 f#4@6 ~@20 d#4@4 ~@15 f4@9 ~@21 f4@4, d#4@23 [b3,f#4]@25 ~@5 g#4@19 ~@16 d#4@8, ~ d#2@22 d#4@20 ~@4 c#3@25 ~@24, ~ f#4@11 d#3@12 b2@25 ~@22 [a#2,c#4]@25, ~@7 a#2@18 ~@14 f4@8 f4@15 ~@17 a#3@17]/3", // B5 A#m
  K: "[~@19 f#4@6 ~@19 f#4@4 ~@13 g#4@8 ~@20 f4@4 f#4@17 f#4@5 ~@18 d#4@3 ~@14 f4@8 ~@18 d#4@5 ~@19 f#4@3 ~@17 c#4@4, ~@2 f#4@17 ~@6 f#4@19 ~@4 g#4@13 ~@8 f4@19 ~@41 f4@7 f4@13 ~@9 c#4@15 c#4@9 ~@15 f4@6 [c#3,f4]@21, ~@3 b2@23 ~@22 c#3@23 ~@5 c#4@18 ~@21 [b3,f#4]@22 c#3@23 ~@5 a#3@17 ~@5 f#3@17 ~@20, ~@8 f#3@17 [g#2,g#3,b3]@23 ~@45 d#2@23 ~@26 g#3@11 ~@6 a#2@23 b2@22 ~@20, ~@14 b3@11 ~@15 a#4@8 ~@5 c#5@17 ~@15 d#4@9 ~@21 d#4@18 ~@9 g#4@17 ~@22 d#4@23 ~@8 d#4@12]/7", // C# B5 G#m
  L: "[~@22 c#4@5 ~@19 g#4@5 ~@15 f4@21 d#4@64 ~@9, ~@2 a#2@25 [b2,d#4]@25 c#3@37 ~@71, ~@3 c#4@19 ~@20 f#4@10 ~@10 f#4@26 ~@72, ~@18 a#3@9 ~@24 f4@15 ~@94]/5", // B
})).s("gm_piano").gain(0.43)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@3 A ~@2 B ~ C ~ D E ~ F@2 ~ G ~@4 H@2 I ~ J@3 ~ K@2 L@2 M N@4 ~@5 O@2 P@2 Q R S@2 T ~ U V@5
>`.pickRestart({
  A: "~ g#3@6 ~@10 f3@12 ~@3", B: "~@13 f3@11 ~@8", C: "~@11 g#3@5 ~@16", D: "~@7 g#3@7 ~ g#3@4 ~@13", E: "~@21 f#3@11",
  F: "[~ d#2@11 ~@4]/2", G: "g#3@7 g#3@5 ~@20", H: "[~@8 g#3@4 ~@3 f3@8 f3@15 ~@26]/2", I: "~@9 g#3@9 ~@14",
  J: "[~@7 g#3@33 ~@18 d#1@19 ~@12 f#3@7, ~@10 d#2@9 ~@5]/3",
  K: "[~@4 g#3@15 ~@9 f#3@18 ~@5 f#3@8 ~@5, ~@19 f#2@28 ~@17, ~@24 c#3@23 ~@17]/2", L: "[~@31 f#3@19 ~@14]/2",
  M: "~@7 g#3@18 ~@7",
  N: "[~@27 f#3@17 ~@18 f#4@7 ~@23 f#2@20 ~@16, ~@49 g#3@22 ~@4 c#3@11 c#3@26 ~@16, ~@55 c#4@13 ~ f#2@23 ~@36, ~@5 f#3@2 ~]/4",
  O: "[~@30 f#3@18 ~@5 g#3@11]/2", P: "[~ g#3@7 ~@4 f3@23 ~@29]/2", Q: "d#3@8 ~@3 g#3@5",
  R: "~ g#3@5 ~@5 f3@19 ~@2, ~@3 a#2@12 ~", S: "[~@8 d#3@11 ~@6 f#3@16 ~@17 g#3@5 ~, ~@3 a#2@16 b2@22 ~@23]/2",
  T: "~@2 f3@3 f3@6 ~@5", U: "~@8 f3@19 ~@5",
  V: "[~ f#3@18 ~@25 c#4@12 ~@14 d#3@64 ~@26, ~@13 g#3@15 d#2@32 ~@20, ~@31 a#2@32 ~@17]/5",
})).s("gm_piano").gain(0.21)

// chords · pad new age · "FANTASIA"
const pad_new_age = note("<~ A@2 B@6 C@3 D@3 E@5 F@5 G@8 H@3 I@7 J@3 K@7 L@5 ~>".pickRestart({
  A: "[~@6 [a#3,d#4,f#4]@21 [b3,d#4,f#4]@20 [g#3,c#4,f4]@17]/2", // D#m B C#
  B: "[~@4 [a#3,c#4,f4]@24 [b3,d#4,f#4]@21 [g#3,b3,f#4]@22 [g#3,c#4,f4]@23 [a#3,c#4,f4]@26 [a#3,d#4,f#4]@16 [b3,d#4,f#4]@19 [g#3,c#4,f4]@19 [a#3,c#4,f4]@18]/6", // A#m B G#m7 C# A#m D#m B C# …
  C: "[~@6 [b3,d#4,f#4]@22 [g#3,c#4,f4]@21 [a#3,c#4,f4]@23 [b3,d#4,f#4]@24]/3", // B C# A#m B
  D: "[~ [g#3,c#4,f4]@35 [d#2,d#3,a#3]@44 [a#3,d#4,f#4]@16]/3", // C# D#5 D#m
  E: "[~@2 [b3,d#4,f#4]@20 [g#3,c#4,f4]@20 [a#3,c#4,f4]@20 ~ b3@17 ~ [g#3,b3,f#4]@19 [g#3,c#4,f4]@19 ~ [a#3,f4]@25 [a#3,d#4,f#4]@15, ~@62 [d#4,f#4]@18 d#4@20 ~@19 c#4@25 ~@16]/5", // B C# A#m G#m7 C# A#5 D#m
  F: "[~@4 [b3,d#4,f#4]@18 [g#3,c#4,f4]@21 [a#3,c#4,f4]@25 [b3,d#4,f#4]@23 [g#3,c#4,f4]@23 [a#3,c#4,f4]@23 [b3,d#4,f#4]@23]/5", // B C# A#m B C# A#m B
  G: "[~@2 [g#3,c#4,f4]@34 ~ d#1@33 ~@8 [a#3,c#4,f#4]@30 [b3,d#4,f#4]@17 [c#4,f4]@21 [a#3,c#4,f#4]@27 ~ [b3,f#4]@12 [g#3,c#4,f4]@28 [a#3,c#4,f#4]@28 ~ b3@13, ~@36 [d#3,a#3]@34 ~@103 d#4@13 ~@56 [d#4,f#4]@14]/8", // C# F# B C# F# B5 C# F# …
  H: "[~ [g#3,c#4,f4]@22 [a#3,c#4,f4]@28 ~ [b3,d#4,f#4]@21 [c#4,f4]@23]/3", // C# A#m B C#
  I: "[~@5 [f#3,a#3,c#4]@44 ~@2 d#4@28 ~@29 [b3,d#4]@29 f#4@17 f4@17 [f#2,f#4]@53, ~@49 d#2@32 a#1@28 ~@28 [c#2,g#3]@35 ~@52, ~@51 a#3@58 ~@28 c#4@64 ~@23, ~@79 c#4@26 b1@33 ~@86, ~@91 f3@18 ~@115]/7", // F# B F# C#5
  J: "[[d#2,a#3,d#4,f#4]@22 ~ b1@24 ~ g#3@22 [a#1,a#3,c#4]@26, ~@22 [b3,d#4,f#4]@25 [c#2,c#4,f4]@24 ~@25]/3", // D#m A#m B C#
  K: "[[b1,b2,b3,d#4,f#4]@25 [g#1,g#2,b3,d#4,f#4]@23 ~ f4@21 [a#3,c#4]@23 ~@6 d#3@16 [b1,b3,d#4]@21 ~ [c#2,c#3,g#3,c#4]@21 ~ a#2@22 [b1,b2,b3,d#4,f#4]@23 [c#2,c#3,g#3,c#4,f4]@20, ~@48 [c#3,c#4,g#4]@23 ~@22 d#2@24 ~@41 [a#1,a#3,c#4,f4]@24 ~@42, ~@47 a#3@12 ~@53, ~@94 [d#4,f#4]@21 ~@21 f4@22 ~@66]/7", // B G#m7 A#m B C#5 B C# C#5 …
  L: "[~@2 a#2@24 ~@5 b2@20 ~@58 d#1@45 ~@6, ~ [a#1,a#3,c#4,f4]@25 [b1,d#4,f#4]@25 f4@36 d#2@64 ~@9, ~@27 b3@25 [c#2,c#3,g#3,c#4]@36 [d#3,a#3]@64 ~@8]/5", // A#m B C#5 D#5
})).s("gm_pad_new_age").gain(0.29)

// chords · pad new age · "FANTASIA" · soft notes
const pad_new_age_soft = note("<~@13 A@2 ~@11 B@2 C@2 ~@5 D@4 E@2 F@2 G@3 H@2 I J@2 ~@4 K@3 ~>".pickRestart({
  A: "[~ d#4@11 ~@4]/2", B: "[~@5 d#2@33 ~@26, ~@4 d#4@33 ~@27]/2", C: "[~@29 g#3@22 ~@13]/2",
  D: "[~@9 g#3@28 f#4@44 ~@2 f#3@40 ~@5]/4", E: "[~@12 f#3@31 ~@21]/2", F: "[~@11 a#3@53]/2",
  G: "[d#3@22 b2@25 c#3@23 [a#2,f4]@26]/3", H: "[~@25 g#3@25 ~@14]/2", I: "~@6 [a#1,a#2,f4]@25 ~",
  J: "[~@25 b2@17 ~@22, ~@19 f#4@23 ~@22]/2", K: "[~@23 d#4@64 ~@9]/3",
})).s("gm_pad_new_age").gain(0.17)

// chords · church organ · "CHURCH ORG"
const church_organ = note("<~@31 A@2 B@3 C@8 D@6 E@8 ~>".pickRestart({
  A: "[~@23 a#4@28 [b3,d#4,f#4]@13, ~@11 [c#4,f#4]@15 ~@6]/2", // B F#5
  B: "[~ [g#3,c#4,f4]@22 [a#3,c#4,f4]@28 ~ b3@20 [g#3,c#4,f4]@24, ~@51 [d#4,f#4]@22 ~@23]/3", // C# A#m C# D#m
  C: "[~@7 [a#3,c#4,f#4]@46 [d#2,d#4]@27 ~@14 f3@16 ~@30 f#4@16 f4@16 ~ f#2@43 ~@4 [a#3,f#4]@25 [b3,d#4,f#4]@11, ~@53 a#3@59 ~@28 c#4@64 ~@15 d#4@26 ~@11, ~@53 f#3@43 ~@14 [b1,b2,f#3,b3,d#4]@32 ~@30 [f#1,f#4]@44 ~@40, ~@80 [a#1,c#4]@32 ~@27 c#2@34 ~@83, ~@81 a#2@31 ~@28 g#3@34 ~@82]/8", // F# D# D#m B F# A#m
  D: "[~@14 [g#3,c#4,f4]@22 [c#4,f4]@27 ~ [b3,f#4]@25 [b3,d#4]@23 [c#4,f4]@21 ~@25 [a#3,d#4,f#4]@22 d#4@12, ~@63 d#4@25 ~@104]/6", // C# B5 B C# D#m
  E: "[~@9 [c#4,f4]@20 [c#4,f4]@24 ~ d#4@21 [g#3,c#4,f4]@23 [a#3,c#4,f4]@23 [b3,d#4,f#4]@26 ~ g#3@31 ~ [d#1,d#2]@68 ~@8, ~@53 f#4@22 ~@72 [c#4,f4]@32 d#4@70 ~@7]/8", // C# A#m B D# C#
})).s("gm_church_organ").gain(0.21)

// chords · church organ · "CHURCH ORG" · soft notes
const church_organ_soft = note("<~@37 A@2 ~ B@3 ~@2 C D@3 E@4 ~@2 F@3 ~>".pickRestart({
  A: "[~@15 d#3@10 ~@7]/2", B: "[~@12 c#3@32 a#3@43 ~@9]/3", C: "~ a#3@7",
  D: "[~@25 [g#3,f#4]@23 g#3@21 ~ f4@24 ~@2, ~@23 [a#3,c#4]@8 ~]/3", // G#7 A#m
  E: "[~@20 b3@21 g#3@20 a#3@24 b3@22 ~@21, ~@19 f#4@22 ~@87]/4", F: "[~@20 d#3@69 ~@7, ~@19 a#3@69 ~@8]/3",
})).s("gm_church_organ").gain(0.14)

stack(piano, piano_soft, pad_new_age, pad_new_age_soft, church_organ, church_organ_soft)

More by Enya