Strudelify
Anywhere Is cover art

1997 · Paint the Sky with Stars

Anywhere Is

Enya

KeyE♭ majorTempo97 bpm
0:00/0:00
// Anywhere Is — Enya
// 97 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 1, 4/4 at bar 2, 2/4 at bar 13, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 90 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/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.

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@3 A B C D E B C D F G H G H I J@2 K I J@2 L@2 M N M O I J@2 K I J@2 P@2 ~@12 I J@2 K I J@2 Q@2 M N M O I J@2 K I J@2
  K I J@2 K I J@2 R ~ A B C D E B C D S@2
>`.pickRestart({
  A: "~ eb2", B: "d2 ab1", C: "g1 ab1", D: "g1 bb1", E: "eb2!2", F: "eb2", G: "c2@24 d2@23 ~", H: "ab1@23 ~ bb1@24",
  I: "eb2 d2", J: "ab1 g1", K: "bb1 eb2", L: "[bb1 eb2@2 c2]/2", M: "d2@23 ~ ab1@23 ~", N: "bb1 c2", O: "bb1@25 ~@23",
  P: "[bb1 eb2@3]/2", Q: "[bb1 ~@2 c2, ~ eb2@3]/2", R: "bb1 ~", S: "[eb2@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.48)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@29 A B@2 C A B@2 C D ~@12 A B@2 C A B@2 C ~@5 A B@2 C A B@2 C A B@2 C A B@2 E ~ F G H I J G H I K ~
>`.pickRestart({
  A: "eb2@2 ~ bb2 ~@2 eb3 ~@2 bb2 ~@2 d2 ~@2 bb2 ~@2 d3 ~@2 bb2 ~@2",
  B: "ab2@2 ~@4 eb3@2 ~@4 ab3@2 ~@4 eb3@2 ~@4 g2@3 ~@3 eb3@2 ~@4 g3@2 ~@4 eb3@2 ~@4",
  C: "bb2@2 ~@4 d3@2 ~@4 f3@2 ~@4 d3@2 ~@4 eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4",
  D: "eb2@2 ~ bb2 ~@2 eb3 ~@2 bb2 ~@2 eb2 ~@2 bb2 ~@2 eb3 ~@2 bb2 ~@2",
  E: "bb2@2 ~@4 d3@2 ~@4 f3@2 ~@4 d3@2 ~@4 eb2@3 ~@21", F: "~@12 eb2@2 ~ bb2 ~@2 eb3 ~@2 bb2 ~@2",
  G: "d2 ~@2 bb2 ~@2 d3 ~@2 bb2 ~@2 ab2 ~@2 eb3 ~@2 ab3 ~@2 eb3 ~@2",
  H: "g2@3 ~@3 eb3@2 ~@4 g3@2 ~@4 eb3@2 ~@4 ab2@2 ~@4 eb3@2 ~@4 ab3@2 ~@4 eb3@2 ~@4",
  I: "g2@3 ~@3 eb3@2 ~@4 g3@2 ~@4 eb3@2 ~@4 bb2@2 ~@4 d3@2 ~@4 f3@2 ~@4 d3@2 ~@4",
  J: "eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4 eb2@4 ~@2 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4", K: "eb2 ~@15",
})).s("gm_string_ensemble_1").gain(0.56)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~ A B C D E F C D E F G H I H I J K@2 L J K@2 L M N O N P J K@2 L J K@2 L Q R@2 S T@3 U R@2 S T V J K@2 L J K@2 L M N
  O N W J K@2 L J K@2 L J K@2 L J K@2 X ~ A D E F C D E F Y ~
>`.pickRestart({
  A: "~@12 eb2@2 ~ bb2 ~@2 eb3 ~@2 bb2 ~@2", B: "eb2 ~@2 bb2 ~@2 eb3 ~@2 bb2 ~@2 eb2 ~@2 bb2 ~@2 eb3 ~@2 bb2 ~@2",
  C: "eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4 eb2@4 ~@2 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4",
  D: "d2 ~@2 bb2 ~@2 d3 ~@2 bb2 ~@2 ab2 ~@2 eb3 ~@2 ab3 ~@2 eb3 ~@2",
  E: "g2@3 ~@3 eb3@2 ~@4 g3@2 ~@4 eb3@2 ~@4 ab2@2 ~@4 eb3@2 ~@4 ab3@2 ~@4 eb3@2 ~@4",
  F: "g2@3 ~@3 eb3@2 ~@4 g3@2 ~@4 eb3@2 ~@4 bb2@2 ~@4 d3@2 ~@4 f3@2 ~@4 d3@2 ~@4",
  G: "eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4 eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4",
  H: "c3@2 ~@4 g3@2 ~@4 c4@3 ~@3 g3@2 ~@4 d3@2 ~@4 bb3@2 ~@4 d4@2 ~@4 bb3@2 ~@4",
  I: "ab2@2 ~@4 eb3@2 ~@4 ab3@3 ~@3 eb3@2 ~@4 bb2@2 ~@4 f3@2 ~@4 bb3@2 ~@4 f3@2 ~@4",
  J: "eb2@2 ~ bb2 ~@2 eb3 ~@2 bb2 ~@2 d2 ~@2 bb2 ~@2 d3 ~@2 bb2 ~@2",
  K: "ab2@2 ~@4 eb3@2 ~@4 ab3@2 ~@4 eb3@2 ~@4 g2@3 ~@3 eb3@2 ~@4 g3@2 ~@4 eb3@2 ~@4",
  L: "bb2@2 ~@4 d3@2 ~@4 f3@2 ~@4 d3@2 ~@4 eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4",
  M: "eb2@3 ~@3 bb2@2 ~@4 eb3@2 ~@4 bb2@2 ~@4 c3@2 ~@4 g3@2 ~@4 c4@3 ~@3 g3@2 ~@4",
  N: "d3@2 ~@4 bb3@2 ~@4 d4@2 ~@4 bb3@2 ~@4 ab2@2 ~@4 eb3@2 ~@4 ab3@3 ~@3 eb3@2 ~@4",
  O: "bb2@2 ~@4 f3@2 ~@4 bb3@2 ~@4 f3@2 ~@4 c3@2 ~@4 g3@2 ~@4 c4@3 ~@3 g3@2 ~@4",
  P: "bb2@2 ~@4 f3@2 ~@4 bb3@2 ~@4 f3@2 ~@4 bb1@3 ~@21",
  Q: "eb2@2 ~ bb2 ~@2 eb3 ~@2 bb2 ~@2 eb2 ~@2 bb2 ~@2 eb3 ~@2 bb2 ~@2",
  R: "ab2 ~ eb3 ~ ab3 ~ eb3 ~ eb2 ~ bb2 ~ eb3 ~ bb2 ~", S: "ab2 ~ eb3 ~ ab3 ~ eb3 ~ db2 ~ ab2 ~ db3 ~ ab2 ~",
  T: "eb2 ~ bb2 ~ eb3 ~ bb2 ~ ab2 ~ eb3 ~ ab3 ~ eb3 ~", U: "db2 ~ ab2 ~ db3 ~ ab2 ~ eb2 ~ bb2 ~ eb3 ~ bb2 ~",
  V: "bb2 ~ f3 ~ bb3 ~ f3 ~ bb2 ~@7", W: "bb2 ~@2 f3 ~@2 bb3 ~@2 f3 ~@14",
  X: "bb2@2 ~@4 d3@2 ~@4 f3@2 ~@4 d3@2 ~@4 eb2@3 ~@21", Y: "eb2 ~@15",
})).s("gm_pizzicato_strings").gain(0.56)

// other · pizzicato strings · soft notes
const pizzicato_strings_soft = note("<~@38 A B C D E F G H I J K ~@41>".pickRestart({
  A: "ab4@2 ~@10 ab4@2 ~@10 g4 ~@23", B: "ab4 ~@5 ab4 ~@5 bb4 ~@11", C: "c5@2 ~@10 c5@2 ~@10 db5 ~@11 ab4@2 ~@10",
  D: "ab4 ~@5 g4 ~@5 ab4 ~@5 ab4 ~@5", E: "g4 ~@11 ab4 ~@5 ab4 ~@5", F: "bb4 ~@11 c5 ~@5 c5 ~@5",
  G: "db5@2 ~@10 ab4 ~@11 ab4@2 ~@10 g4@2 ~@10", H: "ab4 ~@5 ab4 ~@5 g4 ~@11", I: "ab4 ~@11 ab4@2 ~@10 bb4@2 ~@22",
  J: "c5 ~@5 c5 ~@5 db5 ~@5 ab4 ~@5", K: "ab4 ~@11 g4@2 ~@34",
})).s("gm_pizzicato_strings").gain(0.32)

// chords · string ensemble 1
const string_ensemble_1_3 = note(`<
  ~ A B C D E F C D E F G H I H J K L M N K L M N O P Q P R K L M N K L M N S ~@11 T K L M N K L M N O P Q P U K L M N K
  L M N K L M N K L M V ~ W D E F C D E F ~@2
>`.pickRestart({
  A: "~@23 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4]", // Eb
  B: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4]", // Eb
  C: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [f3,bb3,d4]", // Eb Bb
  D: "~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [g3,bb3,eb4]", // Bb Ab Eb
  E: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [g3,bb3,eb4]", // Eb Ab Eb
  F: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [g3,bb3,eb4]", // Eb Bb Eb
  G: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,c4,eb4]", // Eb Cm
  H: "~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [ab3,c4,eb4]", // Cm Bb Ab
  I: "~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [g3,c4,eb4]", // Ab Bb Cm
  J: "~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [g3,bb3,eb4]", // Ab Bb Eb
  K: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [ab3,c4,eb4]", // Eb Bb Ab
  L: "~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [ab3,c4,eb4]", // Ab Eb Ab
  M: "~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [f3,bb3,d4]", // Ab Eb Bb
  N: "~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4]", // Bb Eb
  O: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [bb3,d4,f4]", // Eb Cm Bb
  P: "~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~@5 [bb3,d4,f4]", // Bb Ab Bb
  Q: "~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [g3,c4,eb4] ~@5 [bb3,d4,f4]", // Bb Cm Bb
  R: "~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [f3,bb3,d4] ~@23 [g3,bb3,eb4]", // Bb Eb
  S: "~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@6", // Eb
  T: "~@47 [g3,bb3,eb4]", U: "~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@29 [g3,bb3,eb4]",
  V: "~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [g3,bb3,eb4] ~@24", // Bb Eb
  W: "~@23 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [g3,bb3,eb4] ~@5 [f3,bb3,d4]", // Eb Bb
})).s("gm_string_ensemble_1").gain(0.48)

// other · string ensemble 1
const string_ensemble_1_4 = note(`<
  ~@11 A B C B D ~@7 E F G H G I J K L M J K L N O P Q R S T U V W X R Y E J K L M J K L M F G H G I J K L M J K L M J K
  L M J K L Z ~ AA AB AC AD AE AB AC AD ~@2
>`.pickRestart({
  A: "~@23 g5 ~@11 bb5 ~@11 eb6", B: "~@11 c6 ~@11 f6 ~@11 d6 ~@11 ab5", C: "~@11 g5 ~@11 f5 ~@11 d5 ~@11 eb6",
  D: "~@11 g5 ~@11 f5 ~@11 d5 ~@12", E: "~@47 g5", F: "~@11 bb5 ~@11 eb6 ~@11 c6 ~@11 f6",
  G: "~@11 d6 ~@11 ab5 ~@11 g5 ~@11 f5", H: "~@11 d5 ~@11 eb6 ~@11 c6 ~@11 f6", I: "~@11 d5 ~@35 g5",
  J: "~@11 g5 ~@11 f5 ~@11 g5 ~@5 bb5 ~@5 c6", K: "~@11 c6 ~@11 bb5 ~@11 g5 ~@11 c6",
  L: "~@11 c6 ~@11 bb5 ~@11 g5 ~@11 f5", M: "~@11 f5 ~@11 g5 ~@11 g5 ~@11 g5", N: "~@11 f5 ~@11 g5 ~@11 g5 ~@12",
  O: "~@47 ab4", P: "~@11 ab4 ~@11 g4 ~@23 ab4", Q: "~@11 ab4 ~@11 bb4 ~@23 c5",
  R: "~@11 c5 ~@11 db5 ~@11 ab4 ~@11 ab4", S: "~@11 g4 ~@11 [ab4,c5] ~@11 [ab4,c5] ~@11 [g4,bb4]",
  T: "~@23 [ab4,c5] ~@11 [ab4,c5] ~@11 [g4,bb4]", U: "~@23 c5 ~@11 c5 ~@11 db5",
  V: "~@11 ab4 ~@11 ab4 ~@11 g4 ~@11 [ab4,c5]", W: "~@11 [ab4,c5] ~@11 [g4,bb4] ~@23 [ab4,c5]",
  X: "~@11 [ab4,c5] ~@11 [g4,bb4] ~@23 c5", Y: "~@11 g4 ~@36", Z: "~@11 f5 ~@11 g5 ~@24", AA: "~@23 g5 ~@11 g5 ~@11 f5",
  AB: "~@11 g5 ~@5 bb5 ~@5 c6 ~@11 c6 ~@11 bb5", AC: "~@11 g5 ~@11 c6 ~@11 c6 ~@11 bb5",
  AD: "~@11 g5 ~@11 f5 ~@11 f5 ~@11 g5", AE: "~@11 g5 ~@11 g5 ~@11 g5 ~@11 f5",
})).s("gm_string_ensemble_1").gain(0.35)

// other · piano
const piano = note(`<
  ~@3 A B C D E B C D F ~@4 G H I J G H I K ~@5 G H I J G H I K ~@13 G H I J G H I K ~@5 G H I J G H I J G H I J G H I L
  ~ M B C D E B C D N ~
>`.pickRestart({
  A: "~@18 bb3@4 ~@2 bb3@4 ~@2 c4@4 ~@2 eb4@5 ~ c4@4 ~@2",
  B: "eb4@6 ~@3 g4@4 ~@5 bb3@4 ~@2 bb3@5 ~ c4@4 ~@2 eb4@5 ~ c4@4 ~@2",
  C: "eb4@6 ~@3 eb4@3 ~@6 bb3@4 ~@2 bb3@4 ~@2 c4@4 ~@2 eb4@4 ~@2 c4@4 ~@2",
  D: "eb4@6 ~@3 g4@5 ~@4 bb3@4 ~@2 bb3@3 ~@3 bb3@4 ~@2 eb4@5 ~ c4@4 ~@2",
  E: "eb4@7 ~@2 eb4@3 ~@6 bb3@5 ~ bb3@4 ~@2 c4@4 ~@2 eb4@5 ~ c4@4 ~@2", F: "eb4@7 ~@2 eb4@15 ~@24",
  G: "bb3@4 ~@2 c4@4 ~@2 eb4@5 ~ c4@4 ~@2 eb4@6 ~@3 g4@4 ~@5 bb3@4 ~@2",
  H: "bb3@5 ~ c4@4 ~@2 eb4@5 ~ c4@4 ~@2 eb4@6 ~@3 eb4@3 ~@6 bb3@4 ~@2",
  I: "bb3@4 ~@2 c4@4 ~@2 eb4@4 ~@2 c4@4 ~@2 eb4@6 ~@3 g4@5 ~@4 bb3@4 ~@2",
  J: "bb3@3 ~@3 bb3@4 ~@2 eb4@5 ~ c4@4 ~@2 eb4@7 ~@2 eb4@3 ~@6 bb3@5 ~",
  K: "bb3@3 ~@3 bb3@4 ~@2 eb4@5 ~ c4@4 ~@2 eb4@7 ~@2 eb4@15", L: "bb3@3 ~@3 bb3@4 ~@2 eb4@5 ~ c4@4 ~@2 eb4@7 ~@17",
  M: "~@18 bb3@6 bb3@4 ~@2 c4@4 ~@2 eb4@5 ~ c4@4 ~@2", N: "eb4@7 ~@41",
})).s("gm_piano").gain(0.64).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@4 B C D E B C D F G H G H I J@2 K I J@2 L@2 M N M O P Q@2 R P Q@2 R S ~@7 T U V W X P Q@2 R P Q@2 Y@2 M N M O P Q@2
  R P Q@2 R P Q@2 R P Q@2 Z@3 AA AB P AC AA AB P AD@2
>`.pickRestart({
  A: "[[gb2,db3,gb3,bb3]@71 ~ [eb2,bb2,eb3,g3,bb3]@96 [eb2,bb2,eb3,g3,bb3]@24]/4", // Gb Eb
  B: "[d2,bb2,d3,f3,bb3] [ab2,eb3,ab3,c4]", C: "[g2,eb3,g3,bb3] [ab2,eb3,ab3,c4]", D: "[g2,eb3,g3,bb3] [bb2,d3,f3,bb3]",
  E: "[eb2,bb2,eb3,g3] [eb2,bb2,eb3,g3,bb3]", F: "[eb2,bb2,eb3,g3]", G: "[c3,eb3,g3,c4] [d3,f3,bb3,d4]",
  H: "[ab2,eb3,ab3,c4] [bb2,f3,bb3,d4]", I: "[eb2,bb2,eb3,g3,bb3] [d2,bb2,d3,f3,bb3]",
  J: "[ab2,eb3,ab3,c4] [g2,eb3,g3,bb3]", K: "[bb2,d3,f3,bb3] [eb2,bb2,eb3,g3]",
  L: "[[bb2,d3,f3,bb3] [eb2,bb2,eb3,g3]@2 [c3,eb3,g3,c4]]/2", M: "[d3,f3,bb3,d4] [ab2,eb3,ab3,c4]",
  N: "[bb2,f3,bb3,d4] [c3,eb3,g3,c4]", O: "[bb2,f3,bb3,d4] ~", P: "[bb2,g3,eb4] [bb2,f3,d4]",
  Q: "[c3,ab3,eb4] [bb2,g3,eb4]", R: "[bb2,f3,d4] [bb2,g3,eb4]", S: "[bb2,g3,eb4]",
  T: "[eb4,ab4,c5]@11 ~ [eb4,g4,bb4]@12", U: "[eb4,ab4,c5]@23 ~ [eb4,g4,bb4]@24",
  V: "[eb4,ab4,c5]@12 [db4,f4,ab4]@11 ~", W: "[eb4,g4,bb4]@21 ~@3 [eb4,ab4,c5]@23 ~", X: "[f4,bb4,d5]@9 ~@7",
  Y: "[[bb2,f3,d4] [bb2,g3,eb4]@2 [c3,eb3,g3,c4]]/2", Z: "[[bb2,f3,d4] [bb2,g3,eb4,eb5]@4 [bb2,g3,eb4]]/3",
  AA: "[bb2,f3,d4] [c3,ab3,eb4]", AB: "[bb2,g3,eb4] [c3,ab3,eb4]", AC: "[bb2,g3,eb4]!2", AD: "[[bb2,g3,eb4,eb5]@3 ~]/2",
})).s("gm_synth_strings_1").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ A@11 B@12 C A@4 B@9 ~@12 B@8 C A@4 B@15 C ~ A@8 B ~>".pickRestart({
  A: "~ x", B: "x", C: "x!2",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@28 A B A B A B A B A ~@12 A B A B A B A B A ~@4 A B A B A B A B A B A B A B A B ~@2 C ~ C ~ C ~ C ~@3
>`.pickRestart({
  A: "~@44 x!4", B: "x", C: "~@20 x!5 ~@23",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@28 A ~ A ~ A ~ A ~ A ~@12 A ~ A ~ A ~ A ~ A ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 B ~ B ~ B ~ B ~@3
>`.pickRestart({
  A: "~@42 x!2 ~@4", B: "~@18 x!2 ~@28",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<[~@4 x ~@2 x] [x ~@2 x ~@4] ~@88>").gain(0.4)

stack(
  string_ensemble_1, string_ensemble_1_2, pizzicato_strings, pizzicato_strings_soft, string_ensemble_1_3,
  string_ensemble_1_4, piano, synth_strings_1, kick, snare, snare_soft, low_tom
)

More by Enya