Strudelify
Bard Dance cover art

1992 · 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: 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 F G H I J K L M N O P Q R S P T N U M V>".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: "~@14 x ~@2 x ~@5 x ~@13 x ~@2 x ~@5 x ~", G: "~@13 x ~@2 x ~@5 x ~@11 x ~@11 x ~",
  H: "~@13 x ~@2 x ~@5 x ~@13 x ~@2 x ~@5 x ~@2", I: "~@4 x!2 ~ x ~@3 x ~@3 x",
  J: "~@12 x ~@2 x ~@4 x ~@14 x ~@2 x ~@5 x ~@3", K: "~@11 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@3",
  L: "~@11 x ~ x ~@5 x ~@14 x ~@2 x ~@5 x ~@4", M: "~@10 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@4",
  N: "~@3 x!2 ~ x ~@4 x!2 ~ x ~", O: "~@3 x!2 ~ x ~@7 x ~", P: "~@8 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@6",
  Q: "~@8 x ~@2 x ~@5 x ~@11 x ~@5 x ~@4 x ~@7", R: "~@7 x ~@2 x ~@5 x ~@14 x ~@2 x ~@5 x ~@7",
  S: "~@7 x ~@2 x ~@5 x ~@11 x ~@11 x ~@7", T: "~@8 x ~@2 x ~@5 x ~@14 x ~@2 x ~@6 x ~@5",
  U: "~@9 x ~@2 x ~@5 x ~@15 x ~@2 x ~@5 x ~@4", V: "~@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 E F G H I J K L M@2 N@2 M@2 K O P Q>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@11 x ~@23 x ~@12", D: "~@5 x ~@11 x ~@6", E: "~@10 x ~@22 x ~@14", F: "~@3 x ~@12",
  G: "~@2 x", H: "~ x ~@2 x ~", I: "~@8 x ~@22 x ~@16", J: "~@7 x ~@23 x ~@16", K: "~ x ~@3 x ~@2", L: "~ x ~@6",
  M: "~@5 x ~@23 x ~@18", N: "~ x ~@5 x ~@4", O: "~@6 x ~@24 x ~@16", P: "~@7 x ~@40", Q: "~@7 x ~@24 x ~@15",
})).gain(0.41)

stack(bass, pan_flute, kick, tambourine)

More by Enya