Strudelify
Bard Dance cover art

1987 · The Celts

Bard Dance

Enya

KeyG minorTempo88 bpm
0:00/0:00
// Bard Dance — Enya
// 88 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 30 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 2 · "SYN BASS 2"
const bass = note("<~@21 A@3 B@6>".pickRestart({
  A: "[~@10 bb2@3 f2@3 bb2@6 bb2@6 g2@6 bb2@2]/3",
  B: "[~@5 f2@12 bb2@24 bb2@24 g2@24 ~ g2@24 g2@24 f2@24 g2@24 ~ g2@24 g2@24 f2@24 g2@24 ~@5]/6",
})).s("gm_synth_bass_2").gain(0.41)

// other · pan flute
const pan_flute = note("<~@13 A@2 B C D@2 E@3 ~@3 F@2 G@2 H>".pickRestart({
  A: "[~@45 bb5@6 d6@6 c6@6 f6@5 d6@6 bb5@12 bb5@3 c6@3 d6@4]/2",
  B: "~@2 d6@2 c6 bb5@2 ~ bb5@6 a5@6 f5@6 g5@3 a5@3 bb5@12 bb5@4", C: "~@2 d6@6 c6@5 f6@6 d6@6 bb5@12 bb5@3 c6@3 d6@5",
  D: "[~ d6@2 c6 bb5@2 ~ bb5@6 a5@6 bb5@12 bb5@12 d6@11 c6@6 f6@6 d6@6 bb5@12 bb5@3 c6@3 d6@6]/2",
  E: "[~ c6 ~ bb5@2 ~ bb5@6 a5@6 f5@6 g5@3 a5@3 bb5@12 d6@11 c6@6 f6@6 d6@6 bb5@12 bb5@3 c6@3 d6@6 ~ c6 ~ bb5@2 ~ bb5@6 a5@6 bb5@12 bb5@12 ~@7, d6@2 ~@93 d6@2 ~@47]/3",
  F: "[~@14 d6@4 c6@2 f6@2 d6@2 bb5@4 bb5 c6 d6@2]/2",
  G: "[d6@2 c6 bb5@2 ~ bb5@6 a5@6 f5@6 g5@3 a5@3 ~ bb5@12 d6@12 c6@6 f6@6 d6@6 bb5@12 bb5@3 c6@3 d6@5]/2",
  H: "~ d6@2 c6 bb5@2 ~ bb5@6 a5@6 bb5@24 ~@5",
})).s("gm_pan_flute").gain(0.26)

// drums · kick
const kick = s("bd").struct("<A B C B C@4 D E@2 F G H I J K@2 L M N O P Q N@2 L@2 K R>".pickRestart({
  A: "~@5 x!2 ~ x ~@4 x!2 ~", B: "x ~@4 x!2 ~ x ~@3 x ~@3", C: "x ~@4 x!2 ~ x ~@4 x!2 ~",
  D: "x ~@14 x ~@2 x ~@5 x ~@14 x ~@2 x ~@4 x", E: "~@14 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x",
  F: "~@13 x ~@2 x ~@5 x ~@11 x ~@11 x ~", G: "~@13 x ~@2 x ~@5 x ~@13 x ~@2 x ~@5 x ~@2", H: "~@4 x!2 ~ x ~@3 x ~@3 x",
  I: "~@12 x ~@2 x ~@4 x ~@14 x ~@2 x ~@5 x ~@3", J: "~@11 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@3",
  K: "~@10 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@4", L: "~@3 x!2 ~ x ~@4 x!2 ~ x ~", M: "~@3 x!2 ~ x ~@7 x ~",
  N: "~@8 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@6", O: "~@8 x ~@2 x ~@5 x ~@11 x ~@5 x ~@4 x ~@7",
  P: "~@7 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@7", Q: "~@7 x ~@2 x ~@5 x ~@11 x ~@11 x ~@7",
  R: "~@10 x ~@2 x ~@5 x ~@12 x ~@15",
})).gain(0.31)

// drums · tambourine
const tambourine = s("tb").struct("<A@4 B@5 C@2 D@2 E F G H I J K L@2 M@2 L@2 J@2 N G>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@11 x ~@23 x ~@12", D: "~@5 x ~@11 x ~@6", E: "~@3 x ~@12", F: "~@2 x",
  G: "~ x ~@2 x ~", H: "~@8 x ~@22 x ~@16", I: "~@7 x ~@23 x ~@16", J: "~ x ~@3 x ~@2", K: "~ x ~@6",
  L: "~@5 x ~@23 x ~@18", M: "~ x ~@5 x ~@4", N: "~@7 x ~@40",
})).gain(0.41)

stack(bass, pan_flute, kick, tambourine)

More by Enya