Strudelify

From Where I Am

Enya

KeyD♭ majorTempo100 bpm
0:00/0:00
// From Where I Am — Enya
// 100 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 47 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 B@3 C D@6 E@4 F@8 G@5 H@8 I@6 J@5>".pickRestart({
  A: "~@17 ab3@12 ~@3, ~@2 db3@21 ~@9, ~@7 ab3@10 ~@15, ~@3 db4@5",
  B: "[~@34 ab3@5 ~@11 f4@6 f4@5 ~@28 [bb3,eb4]@5 [f3,db4]@2, ~@20 f4@20 ~@21 db4@32 ~@3, ~@21 db3@19 ~@21 bb2@19 bb2@16, ~@25 ab3@9 ~@5 [f3,ab4]@23 ~@4 f3@9 ~@10 f3@9 ~@2, ~@30 db4@10 ~@4 c4@18 ~@8 bb3@19 ~@7]/3", // Eb5 Db Fm
  C: "~@7 ab3, ~@2 db3@19 ~ db3@10, ~@3 f4@29, ~@7 ab3@9 ab3@11 ~@5, ~@3 db4@5",
  D: "[~@6 ab3@5 ~@32 gb3@6 ~@22 ab3@4 ~@5 db3@6 ~@32 db3@5 ~@34 ab3@14 ~@13 ab3@4 [f3,ab4]@4, ~@11 gb4@38 db3@31 ~@6 bb3@37 ab2@21 ab2@28 ~@20, ~@11 b2@17 [b2,e4]@22 ~@8 db4@9 db4@19 gb2@18 [gb2,db4]@21 ~@8 ab3@24 ~@19 ab3@8 ~@8, ~@15 gb3@8 ~ gb3@8 gb3@11 ~@6 f4@39 ~@7 gb3@17 ~ [gb3,f4]@12 ~@3 eb3@10 eb3@12 eb3@14 ~@7 [db3,f4]@18 ~@3, ~@19 b3@18 ~ [b3,eb4]@12 ~@3 ab3@8 ~ ab3@9 ~@4 ab3@12 ~@4 db3@8 db3@9 db3@9 ~@6 eb4@49 ~@8 db4@9 ~@3]/6", // Fm E5 Gb5 Gbmaj7 Db B
  E: "[~@11 bb4@6 ~@31 [f3,db4]@5 ~@34 ab3@5 ~@32 gb3@4, ~ c4@17 db4@30 ~@5 f4@39 b2@17 ~ [b2,e4]@18, ~@6 f4@11 bb2@18 ~ bb2@18 ~@7 db4@20 ~ db4@11 ~@8 b3@18 [b3,eb4]@9, ~@22 f3@9 f3@9 f3@8 ~@5 db3@18 db3@22 ~@4 gb3@8 gb3@9 gb3@10 ~@4, ~@26 bb3@18 [bb3,eb4]@9 ~@4 ab3@9 ab3@10 ab3@11 ~@5 gb4@36]/4", // Db E5 B Eb5
  F: "[~@36 ab3@6 ~@23 db3@9 ~ db3@5 ~@21 ab3@4 ~@5 db3@6 ~@27 [gb3,f4]@10 ~@38 db4@7 ~@38 ab3@7 ~@9 gb4@4, ~@2 f4@40 gb2@18 ~ [gb2,db4]@20 ~@7 db4@9 db4@19 gb2@18 db4@21 ~@8 ab3@21 ab3@15 ~@4 ab3@9 ab3@12 ~@19 [gb3,bb4]@13, ~@2 db3@18 db3@23 ~@5 db3@8 db3@9 ~@15 db3@30 ~@6 bb3@38 ~@4 eb3@9 eb3@11 eb3@21 db3@19 db3@27 ~@11, ~@7 ab3@8 ab3@10 ab3@11 ~@6 bb3@39 ~@3 ab3@8 ab3@9 ~@4 ab3@12 ~@4 db3@8 db3@9 db3@10 ~@6 ab2@19 ab2@27 ~@56, ~@11 db4@19 db4@13 ~@9 gb3@18 ~@10 f4@38 ~@7 gb3@18 ~@10 eb4@46 db4@9 db4@22 db4@14 ~@3 db4@8 ~]/8", // Gbmaj7 Gb5 Gb
  G: "[~@8 db4@5 ~@4 eb4@5 ~@27 ab4@10 ~@29 ab4@10 ~@21 ab3@5 ~@4 ab3@5 ~@23 db3@4, db4@8 ~@5 [ab3,c5]@9 db5@37 gb3@18 gb3@21 [db3,f4]@17 [db3,f4]@10 ~@8 gb2@27, ~@4 [gb3,bb4]@11 ~@7 bb3@17 [bb3,c5]@21 ~@3 db4@9 db4@10 db4@17 ~@3 ab3@9 ab3@8 ~@5 [c3,ab4]@11 ~@3 db3@9 db3@9 ~@4, ~@26 f4@8 f4@9 ~ f4@17 ~@7 gb4@32 ~@6 db4@18 ~@18 gb3@18, ~@30 bb4@29 bb4@40 ~@35 bb4@17 bb4@9]/5", // Ab Db Gb Bbsus2 Fm
  H: "[~@6 eb3@5 ~@29 [bb3,ab4]@10 ~@30 ab4@13 ~@11 ab3@37 ~@13 ab3@5 ~@16 f4@6 ~@33 [f3,db4]@5 ~@33 ab3@4, ~ [ab2,c5]@10 [bb2,db5]@40 ~@9 gb4@33 [c4,eb4,ab4]@49 ~@4 ab3@8 ~@5 [f3,ab4]@23 ~@3 f3@8 f3@11 f3@10 ~@5 db3@18 db3@19, ~@16 f3@9 f3@9 f3@17 gb3@18 gb3@24 ab2@25 ~@32 db4@11 ~@3 c4@18 ~@8 bb3@19 [bb3,eb4]@10 ~@4 ab3@9 ab3@10 ab3@10 ~@4, ~@21 bb3@19 ~@10 bb4@44 ~@47 f4@19 ~@21 db4@33 ~@5 f4@37, ~@30 c5@21 ~@4 db4@8 ~ db4@10 db4@20 ~@4 eb3@12 ~@32 db3@19 ~@20 bb2@18 bb2@21 ~@7 db4@20 db4@9]/8", // Bb7 Db Ab Bbm Ab Fm Eb5
  I: "[~@35 gb3@6 ~@24 ab3@5 ~@5 db3@7 ~@32 db3@5 ~@22 ab3@4 ~@6 db3@6 ~@28 [gb3,f4]@6 db3, ~@2 gb4@39 db3@34 ~@7 bb3@39 ~@3 ab3@9 ab3@8 ~@5 ab3@11 gb2@18 [gb2,db4]@17, ~@2 b2@17 ~ [b2,e4]@23 ~@7 db4@9 ~ db4@25 ~@6 gb3@18 gb3@12 ~@7 db4@9 db4@21 ~@4 db3@8 db3@9 ~ db3@11 ~, ~@6 gb3@9 gb3@10 gb3@10 ~@6 f4@41 gb2@17 [gb2,db4]@21 f4@38 ~@8 gb3@19 ~@7, ~@11 b3@19 [b3,eb4]@12 ~@4 ab3@9 ab3@10 ~@5 ab3@15 ~@2 db3@8 db3@9 db3@10 ~@5 db3@32 ~@6 bb3@35]/6", // Gbmaj7 Gb5 E5 Gb5 B
  J: "[~@50 db4@29 [db2,f3]@58 ~@23, ~@5 eb4@64 ~@91, ~@3 ab2@11 ~@66, ~@10 eb3@11 ~@14 eb3@48 ~@77, ~@8 ab3@13 ab3@18 ~@41]/5", // Db
})).s("gm_piano").gain(0.36)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<A@2 ~ B ~ C ~@4 D ~@6 E ~ F ~@2 G ~@8 H@2 ~@9 I@5>".pickRestart({
  A: "[~@22 ab3@5 ~@5, ~@23 db3@30 ~@11, ~@29 ab3@15 ~@20, ~@36 db4@17 ~@11]/2", B: "~@11 f3@9 ~@12",
  C: "~ db4@11 ~@20", D: "~ eb3@2 ~@5", E: "~@6 gb3@11 ~@15", F: "~@10 db3@3 ~@3, ~@3 gb2@10 ~@3", G: "ab3@3 ~@5",
  H: "[~@11 ab2@12 ~@9, ~@14 eb3@31 ~@19]/2", I: "[~@79 [db3,ab3,db4]@58 ~@23, ~@22 eb3@13 ~@125, ~@14 ab2@27 ~@39]/5",
})).s("gm_piano").gain(0.21)

stack(piano, piano_soft)

More by Enya