Strudelify

Marble Halls

Enya

KeyB♭ majorTempo100 bpm
0:00/0:00
// Marble Halls — Enya
// 100 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 57 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@8 B@8 C@5 D@8 E F@6 G@5 H@6 I@7 J@3>".pickRestart({
  A: "[~@23 f4@7 ~@17 f3@3 ~@17 f3@3 ~@3 f3@4 ~@9 f3@4 ~@18 f3@3 ~@17 c3@4 ~@18 c3@4 ~@40 f3@4 ~@36 f3@3 ~@16 f3@3, ~@31 [bb2,f4]@20 bb2@19 bb2@20 bb2@22 f2@20 [f2,c4]@23 ~@6 bb3@8 bb3@15 bb3@6 bb3@8 ~@3 f3@7 f3@7 f3@4 ~@2 f3@3 bb3@3 f3@3 bb3@7 bb2@19, ~@34 f3@4 bb4@14 ~@5 a4@14 ~@6 g4@13 ~@7 bb3@7 [bb3,d4]@9 ~@5 f3@4 c3@3 [f3,b3]@8 ~@2 c3@8 c3@7 ~@4 bb2@22 bb2@22 [bb2,f4]@19 bb2@14 g4@7 ~@2 f3@3 bb3@3 f3@7 ~@3, ~@37 bb3@4 f3@6 ~@3 f4@19 ~ f4@10 f3@6 ~@7 f3@7 f3@7 ~@8 c3@4 eb4@13 ~@7 f3@7 [f3,eb4]@8 ~@3 f3@8 f3@7 ~ f3@7 f3@7 f3@4 f4@7 ~@7 bb4@14 ~@5 a4@14 ~@5 g4@13, ~@44 [bb3,a4]@7 ~@3 f3@3 bb3@3 f3@3 [bb3,g4]@7 ~@7 bb3@6 [bb3,f4]@7 d4@14 ~@7 f4@20 ~@23 d4@45 ~@6 bb3@6 [bb3,a4]@7 f4@19 f4@12 [bb3,f4]@7]/8", // Bb5 F5 Bb Fdim Bb5 F7 Bbmaj7 Eb …
  B: "[~@17 f3@4 ~@16 c3@3 ~@18 c3@4 ~@40 [f3,f4]@4 ~@17 g3@3 ~@17 gb3@4 ~@18 d3@3 ~@63 e3@4 ~@15 a3@5 gb3, bb2@21 [f2,f4]@20 ~@24 f3@8 f3@7 f3@7 f3@7 ~ f3@4 bb3@7 g4@14 bb4@7 ~@6 bb3@7 [bb3,bb4]@8 ~@6 f3@7 [f3,bb4]@8 ~@3 d3@7 d3@8 d3@5 ~@5 f4@14 a2@25 ~@10 d4@10, d4@14 ~@13 eb4@13 ~@7 f3@7 [f3,eb4]@8 d4@45 ~@3 g3@3 bb3@3 g3@3 bb3@7 ~@4 gb3@6 gb3@7 ~@4 [bb2,f4]@21 bb2@23 ~@6 g3@7 [g3,g4]@7 a4@12 db4@13 ~@6 a3@8 ~@6, ~@3 f3@7 f3@7 ~@7 c3@6 c3@7 ~@3 [f2,c4]@22 ~@7 bb3@7 bb3@14 ~ bb3@7 eb4@9 ~@6 c5@14 ~@6 c5@15 ~@6 c5@15 ~@6 f3@8 [f3,f4]@8 ~@3 e3@7 e3@7 e3@5 ~@2 e3@16 ~@4 [d3,a4]@21, ~@7 bb3@7 [bb3,d4]@8 ~@5 f3@6 [f3,b3]@8 ~@2 c3@7 ~ c3@7 ~@4 bb2@21 bb2@24 eb3@19 [eb3,gb4]@22 ~@3 d3@7 d3@7 ~@3 f4@15 ~@7 [c3,e4]@22 ~@7 a3@8 [a3,a4]@9 ~@3 gb3@16 ~]/8", // F Bb Bb5 F7 Bb5 G F5 F …
  C: "[~@32 f4@8 ~@17 f3@3 ~@16 f3@3 ~@17 f3@3 ~@18 f3@4 ~@16 c3@3 ~@18 c3@2, ~@4 f2@37 ~@6 bb3@6 [bb3,a4]@7 ~@6 bb3@6 ~ [bb3,g4]@7 ~@3 f3@3 bb3@3 f3@4 f4@6 d4@14 ~@14 eb4@13 ~@7 f3@7 ~ [f3,eb4]@5, ~@8 c3@18 f3@14 [bb2,f4]@20 [bb2,f4]@19 bb2@19 ~ bb2@23 ~@2 c3@6 c3@7 ~@3 [f2,c4]@20, ~@13 f3@9 c4@19 ~@6 bb4@14 ~@5 a4@14 ~@6 g4@14 ~@6 bb3@7 [bb3,d4]@8 ~@6 f3@6 ~ [f3,b3]@7 ~@3 c3@7 c3@7 ~@2, ~@17 a3@23 ~@3 f3@7 f3@6 ~@7 f3@6 f3@7 ~@3 f4@13 bb3@8 ~@2 f3@7 ~ f3@7 ~@4 [f2,f4]@20 ~@19]/5", // Bbmaj7 Eb F7 Bb5 F5 Bb Fdim F
  D: "[~@21 [f3,f4]@4 ~@3 bb2@4 ~@11 [d4,f4]@2 bb4@3 ~@54 f3@3 ~@7 eb3@3 ~@10 bb4@3 ~@51 a4@7 ~@43 f4@7 ~@17 f3@3, ~@2 [bb2,d4]@24 ~@6 eb3@6 [eb3,bb4]@7 ~@3 f3@2 a4@11 [f3,f4]@3 ~ f3@16 a3@4 bb2@20 [eb2,bb3,g4]@17 eb3@2 f4@2 ~@2 f3@3 a4@8 bb3@4 f4@6 a3@37 d4@5 f3@4 bb3@3 d4@21 bb3@17 ~@7 bb3@6 [bb3,a4]@7, ~@6 f3@7 f3@7 ~@5 [eb2,g4]@20 ~@4 bb4@2 bb3@3 f3@3 [bb3,bb4]@5 a4@9 g4@12 f3@5 f3@3 bb3@4 f3@3 [bb3,f4]@7 ~@4 bb2@9 bb2@5 d4@2 bb2@17 f3@3 d5@11 f4@5 c5@9 g4@17 bb2@15 bb3@4 f3@4 bb2@26 [bb2,f4]@19 ~, ~@9 bb3@8 [bb3,eb4]@8 ~@7 a4@13 ~@3 c5@15 c5@19 bb3@3 ~@6 eb4@14 ~@10 eb3@4 bb4@6 ~@4 c5@15 a4@9 c4@33 f4@29 f3@22 ~@3 f3@6 f3@7 ~@3, ~@34 bb2@7 ~ bb2@3 bb2@19 ~@3 a3@3 c4@4 a3@3 [c4,a4]@7 bb4@20 ~@8 a4@13 ~@4 bb4@2 bb3@4 f3@3 bb4@8 f3@42 bb4@49 ~@6 bb4@13]/8", // F Dm Bb Eb5 F Eb Bbmaj7 Eb …
  E: "~@16 f3@3 ~@9 f3@4, [bb2,f4]@19 [bb2,f4]@13, ~@3 f3@6 f3@7 ~@6 f3@6 ~@4, ~@3 a4@7 ~@6, ~@6 bb3@6 [bb3,g4]@7 ~@6 [bb3,g4]@7", // Bb5 Eb
  F: "[~@3 f3@4 ~@18 f3@4 ~@15 c3@3 ~@18 c3@4 ~@40 f3@3 ~@35 f3@3 ~@16 f3@3 ~@19 f3@3 f4, [bb3,f4]@7 bb2@22 [f2,f4]@19 f2@22 ~@6 bb3@7 bb3@14 ~ bb3@7 [bb3,f4]@8 ~@3 f3@3 bb3@3 f3@3 [bb3,a4]@8 ~@5 bb3@6 [bb3,g4]@7 ~@3 f3@3 bb3@3 f3@6 ~@7 f3@8 f3@7 ~@4, ~@7 d4@15 ~@13 eb4@13 ~@6 f3@7 ~ [f3,eb4]@8 ~@3 f3@7 f3@7 f3@7 f3@7 f3@8 ~@3 f4@17 f3@4 ~@2 f3@6 f3@6 ~@3 f4@13 [bb3,f4]@7 d4@14 ~@8, ~@10 f3@8 f3@7 ~@7 c3@6 c3@6 ~@3 c4@22 d4@44 ~@6 bb4@14 ~@5 a4@14 ~@5 g4@13 ~@7 bb3@7 [bb3,d4]@8, ~@14 bb3@8 [bb3,d4]@7 ~@6 f3@6 [f3,b3]@7 ~@3 c3@7 c3@7 ~@4 bb2@21 bb2@22 ~ bb2@18 [bb2,f4]@19 bb2@19 bb2@23]/6", // Bb5 F Bb5 Bbmaj7 Eb F7 Bb5 Bb …
  G: "[~@15 c3@3 ~@18 c3@4 ~@41 [f3,f4]@4 ~@16 g3@4 ~@37 d3@4 ~@11 d3@3, f2@18 [f2,c4]@22 ~@7 bb3@19 f3@3 bb3@16 ~@3 g3@7 g3@6 ~@4 [eb3,gb4]@20 f4@20 ~@8 f3@7, ~@3 c3@6 c3@6 ~@7 c3@7 c3@7 ~@4 bb2@19 f3@3 bb2@11 f3@4 [bb2,eb4]@8 ~@7 bb3@6 [bb3,bb4]@8 ~@5 bb3@7 [bb3,bb4]@8 bb2@20 [bb2,f4]@14, ~@6 eb4@13 ~@21 d4@45 ~@7 c5@14 ~@5 c5@15 ~@6 c5@14 ~@14, ~@6 f3@6 [f3,b3]@7 ~@6 f3@7 [f3,eb4]@8 ~@4 f3@7 f3@4 d3@30 [eb3,g4]@21 ~@2 gb3@7 gb3@7 gb3@5 ~@2 d3@3 f3@4 d3@3 [f3,bb4]@7 ~@3 d3@8 ~@3]/5", // F F5 Ebm Eb5 Bb Bb5 Fdim F7 …
  H: "[~ f4@6 ~@17 e3@4 ~@15 a3@4 a3@4 ~@18 gb3@5 ~@28 f4@8 ~@17 f3@3 ~@16 f3@3 ~@17 f3@3 ~@19 f3@4, f3@7 c3@21 a2@24 ~@10 d4@13 ~@11 a3@9 f3@15 [bb2,f4]@19 ~ [bb2,f4]@19 bb2@20 bb2@23, ~@8 e4@20 a4@11 db4@13 ~@6 a3@7 a3@9 ~@7 f3@9 c4@21 ~@6 bb4@13 ~@6 bb3@6 bb3@7 f4@10 f3@7 ~@7 f3@7 f3@8 ~@4, ~@11 e3@3 g3@3 e3@4 [g3,g4]@8 ~@3 e3@20 ~@2 gb3@15 ~@5 f2@37 ~@6 bb3@6 a4@7 ~@6 a4@14 ~@5 g4@14 ~@8 bb3@7 bb3@8, ~@14 f4@15 ~@6 a3@8 a4@8 [d3,a4]@24 ~@2 c3@34 ~@3 f3@6 f3@4 bb3@6 ~@3 f3@6 f3@4 g4@7 ~@2 f3@3 bb3@7 [bb3,f4]@7 d4@15 ~ d4@7]/6", // Bb5 G D5 Bb5
  I: "[~@16 c3@3 ~@18 c3@3 ~@44 bb4@4 ~@32 c4@2 d4@2 ~@7 bb3@4 ~@7 f3@4 ~@16 eb3@2 [d4,f4]@2 bb4@3 ~@48 a4@7, [f2,f4]@20 ~@21 bb2@28 eb3@3 a4@3 eb3@3 bb4@3 eb3@2 f4@2 ~@5 bb4@2 bb3@5 bb4@5 f4@9 g4@11 f4@13 bb3@11 ~@4 bb2@15 ~ bb2@18 a4@9 c4@6 c5@9 g4@16, ~@3 c3@6 c3@7 ~@3 [f2,c4]@22 ~@7 bb3@8 [bb3,eb4]@26 d4@3 ~@3 [f3,c5]@15 a4@2 ~@3 a3@6 c4@3 a4@7 ~@4 f3@11 f4@7 ~@7 a4@12 ~@5 bb4@2 a4@3 bb3@3 bb4@4 bb3@3 [f3,d5]@39, ~@6 eb4@14 ~@6 f3@7 [f3,eb4]@8 ~@3 f3@8 f3@8 [f3,f4]@24 bb2@20 c5@19 ~@8 eb4@15 ~@10 eb3@3 bb4@6 ~@4 c5@17 ~@3 a3@35, ~@6 f3@6 ~ [f3,b3]@8 ~ c3@7 c3@7 ~@4 d4@25 [eb2,g4]@19 ~@7 a4@10 bb3@4 f3@19 [bb2,bb4]@22 [eb2,bb3,eb4,g4]@19 ~@5 f3@13 f4@41]/7", // Dm F F5 Eb5 F5 Dm F7 F …
  J: "[~@51 f3@9 [bb1,bb2,d3,f3,bb3]@32 ~@4, ~ bb4@64 ~@31, ~ d4@32 ~@15, ~@2 bb2@19 f3@4 bb2@35 ~@36, ~@6 f3@3 bb3@4 f3@4 bb3@13 f3@5 bb3@5 f3@5 bb3@15 ~@36]/3", // Bb
})).s("gm_piano").gain(0.43)

// chords · pad new age · "FANTASIA"
const pad_new_age = note("<~ A@2 B@5 C@8 D@5 E@3 F@8 G@4 H@5 I@6 J@7 K@3>".pickRestart({
  A: "[~ bb2@63, [bb1,bb3,d4]]/2", // Bb
  B: "[~@14 [f1,f2,f3,a3,c4,eb4]@43 [bb1,bb3]@44 ~ f3@58, ~@57 d4@103, ~@101 [bb1,bb2,bb3]@59]/5", // F7 Bb
  C: "[~@62 [bb1,bb2,bb3]@44 g3@20 gb3@20 [bb1,bb2,d3,f3]@44 [c2,c3,e3,g3]@20 [a1,db3,e3]@24 ~ d2@21, ~@19 [a3,c4,eb4]@42 d4@45 ~@104 a3@46, ~@10 [f1,f2]@22 ~@21 [eb2,eb3,bb3]@21 ~@43 [d3,gb3]@11]/8", // Bb C A Adim F Eb5 D
  D: "[~@4 [f3,a3,c4,eb4]@37 [bb3,d4]@73 ~@6 [f2,f3,a3,c4,eb4]@40, ~@3 f2@38 bb1@76 ~@43]/5", // F7 Bb F7
  E: "[~@2 [bb1,f3]@23 [eb2,eb3,g3,bb3]@19 ~ [f3,d4]@18 [f2,f3,a3,c4,eb4]@20 [bb2,f3,bb3,d4]@13, ~ [bb3,d4]@24 ~@19 [bb2,bb3]@20 ~@32]/3", // Bb5 Eb Dm F7 Bb
  F: "[~@9 [eb2,eb3,g3,bb3]@20 [bb2,f3,bb3,d4]@19 ~ [f2,f3,a3,c4]@43 [bb1,f3,bb3,d4]@48 [bb1,f3,bb3]@73 ~@8 [f2,f3,a3,c4,eb4]@35, ~@24 eb4@22 ~@24 d4@35 ~@23]/8", // Eb Bb F Bb Bb5 F7
  G: "[~@4 [bb1,f3,bb3,d4]@44 [f3,bb3,d4]@71 ~@9, ~@48 bb1@75 ~@5]/4", // Bb
  H: "[[f2,f3,a3,c4,eb4]@39 [bb1,f3,bb3,d4]@46 g3@19 gb3@21 ~ bb3@34, ~@17 [eb2,eb3,bb3]@8 [bb2,d4,f4]@7]/5", // F7 Bb Eb5 Bb
  I: "[~@7 [c3,g3,c4]@19 ~ [a2,a3]@22 ~ d2@22 ~ [f2,f3,c4]@36 [f3,bb3,d4]@73 ~@10, ~@7 e4@42 [a3,d4,gb4]@24 ~@36 bb2@83, ~@26 db4@25 ~@21 a3@38 ~@82]/6", // C5 A F5 Bb D
  J: "[[f2,f3,a3,c4,eb4]@39 [bb2,f3,bb3,d4]@24 ~ [eb3,g3]@25 [bb2,f3]@16 ~ [c4,eb4]@17 [bb2,bb3,d4]@22 [eb2,eb3,g3,bb3]@19 ~ [f3,bb3,d4]@19 [f2,f3,a3,c4,eb4]@40, ~@63 eb2@26 ~@16 f2@19 ~@40 bb2@21 ~@39, ~@32 bb3@21 f3@20 ~@39]/7", // F7 Bb Eb Bb5 Cm Bb Eb Bb …
  K: "[~@3 bb1@64 ~@29]/3",
})).s("gm_pad_new_age").gain(0.36)

// chords · pad new age · "FANTASIA" · soft notes
const pad_new_age_soft = note("<~ A@3 B@3 ~ C@4 ~@5 D@3 ~@23 E@2 ~@4 F@2 ~@3 G@3>".pickRestart({
  A: "[~ f3@72 ~@23]/3", B: "[~@25 [bb2,f3]@44 ~@27]/3", C: "[~@20 f3@42 f3@45 ~@21]/4", D: "[~@3 f3@24 ~@5]/3",
  E: "[~@4 eb4@19 ~@9]/2", F: "[~@25 d3@17 a3@18 ~@4]/2", G: "[~@3 [bb3,d4,f4]@64 ~@29]/3",
})).s("gm_pad_new_age").gain(0.14)

stack(piano, pad_new_age, pad_new_age_soft)

More by Enya