Strudelify
Watermark cover art

1988 · Watermark

Watermark

Enya

KeyF majorTempo53 bpm
0:00/0:00
// Watermark — Enya
// 53 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 7 "e. piano" epiano1 (copy of ch 2 "grand piano" piano); ch 8 "e. piano" epiano1 (copy of ch 3 "grand piano" piano)
// note: Full arrangement: all 111 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(53/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 · "grand piano"
const piano = note(`<
  A@3 B@6 C@3 ~@3 D@8 E@3 F@6 ~@4 G H@8 I@3 J@3 K@8 ~ L@5 M@7 N@3 ~ O@4 P Q@3 R@6 S@6 T@5 U@7 V@2 ~
>`.pickRestart({
  A: "[~@20 c3@5 ~@20 c3@4 ~@19 c3@3 ~@21 e3@4, f2@25 f2@24 f2@22 ~@12 c4@13, ~@3 c3@16 ~@10 c3@16 ~@8 c3@15 ~@3 a2@25, ~@7 g3@8 ~ g3@16 g3@8 g3@16 g3@7 g3@9 ~@3 e3@17 ~@4, ~@11 a3@15 ~@9 a3@14 ~@10 a3@12 ~@8 a3@8 a3@9]/3",
  B: "[~@18 c3@4 ~@19 e3@4 ~@18 bb3@5 ~@21 g3@5 ~@18 c3@4 ~@22 c3@7 ~@17 c3@4 ~@22 e3@4, ~ f2@20 ~@11 c4@14 ~@6 bb3@7 d4@10 ~@10 g3@5 bb3@11 ~@7 g3@6 g3@15 g3@9 g3@19 ~ g3@7 g3@8 ~@2 e3@18 ~@5, ~@5 c3@13 ~@4 a2@25 ~@8 c4@13 ~@7 eb3@20 ~@4 c3@13 ~@7 c3@18 ~@11 c3@14 ~@4 a2@26, ~@8 g3@7 g3@8 ~@2 e3@16 ~@4 bb2@23 eb2@27 ~@10 a3@11 ~@11 a3@17 ~@11 a3@11 ~@7 a3@9 a3@10, ~@11 a3@11 ~@7 a3@7 a3@10 ~@2 f3@20 ~@3 bb2@23 f2@21 ~ f2@28 ~ f2@22 ~@11 c4@14]/6",
  C: "[~@18 c3@3 ~@17 e3@5 ~@18 bb3@5 ~@23 g3@7, ~ f2@20 ~@10 c4@14 ~@4 bb3@7 d4@22 g3@5 bb3@12 ~, ~@5 c3@12 ~@4 a2@23 ~@8 c4@13 ~@9 eb3@21 ~, ~@8 g3@6 g3@7 ~@3 e3@14 ~@5 bb2@23 eb2@29 ~, ~@11 a3@10 ~@6 a3@7 a3@10 ~@2 f3@20 ~@4 bb2@25 ~]/3",
  D: "[~@48 c3@5 ~@42 a2@4 ~@22 g3@5 ~@22 f3@5 ~@80 c3@3 ~@15 a3@5, ~@27 f2@27 ~@9 e4@5 f4@8 ~@7 a3@4 c4@13 ~@8 eb3@18 ~@7 db3@20 ~@4 g2@27 c2@46 g3@7 ~@10 c4@9, ~@31 c3@17 ~@5 d3@23 a2@15 a3@9 ~@3 bb2@22 ~@4 ab2@24 c2@25 e3@59 ~@3 e3@16, ~@35 g3@8 g3@10 ~@7 d4@12 e4@28 ~@12 g3@4 bb3@9 ~@13 f3@5 ab3@11 ~@7 c3@57 f2@19 a2@19, ~@39 a3@15 ~@3 a3@19 ~@3 e3@20 ~ eb2@26 db2@28 ~@12 e3@6 g3@49 c3@4 g3@2 a3@10 ~@7 a3@7 ~@5]/8",
  E: "[e3@5 ~@17 c3@3 ~@19 a2@5 ~@18 bb3@4 ~@21 g3@4, ~@5 f2@20 ~@10 c4@15 ~@9 c4@12 ~@7 eb3@5 g3@4 c2@9, ~@9 c3@13 ~@3 a2@18 ~@6 bb2@22 eb2@25, ~@12 g3@6 g3@8 ~@2 e3@21 ~@3 f3@19 ~@3 bb2@22, ~@15 a3@10 ~@7 a3@8 a3@10 ~@6 bb3@7 d4@33]/3",
  F: "[~@19 c3@4 ~@21 c3@6 ~@16 c3@3 ~@18 a2@5 ~@16 c3@3 ~@19 a2@5 ~@45 c3@6 ~@6, f2@22 ~ f2@27 f2@19 ~@10 c4@13 ~@10 a3@10 ~@6 a3@8 a3@9 ~@6 bb3@8 d4@21 g3@5 c2@11 ~@6, ~@4 c3@15 ~@7 c3@18 ~@9 c3@13 ~@3 a2@18 ~@5 f2@20 ~@10 c4@13 ~@10 c4@13 eb2@28 ~@6, ~@7 g3@7 g3@16 g3@9 g3@17 g3@6 g3@7 ~@3 e3@20 ~@4 c3@12 ~@4 a2@18 ~@5 bb2@24 ~@3 bb2@24 ~@6, ~@10 a3@12 ~@12 a3@16 ~@9 a3@10 ~@6 a3@8 a3@9 ~@7 g3@6 g3@7 ~@3 e3@20 ~@3 f3@21 ~@7 eb3@20 ~@6]/6",
  G: "~@3 c3@13",
  H: "[~@93 d3@32 ~@3, ~@15 e4@64 ~@38 e4@64 ~@2 g3@64 ~@9, ~@53 c4@64 ~@19 c4@64 ~@56, ~@75 d3@64 ~@9 f3@64 ~@44]/8",
  I: "[~@41 b3@52 ~ b3@2, ~ c3@16 ~@7, ~ a3@4 ~, ~@11 f3@32 ~@5]/3",
  J: "[~@23 bb3, ~@4 e4@5 b3@15, ~@9 a3@13 c3@26, ~@21 f2@64 ~@11, ~@13 [f3,d4]@32 ~@3]/3", // Dm
  K: "[~@221 g3@22 ~@5 e4@8, ~@9 ab3@42 eb4@64 ~@10 ab2@64 ~@5 bb3@62, ~@9 eb4@35 bb3@64 ~@10 bb3@43 f4@64 ~@31, ~@6 eb3@32 ~@2 g4@32 ~ eb3@31 eb4@24, ~@14 c3@32 ~@7 c3@25 c4@32 ~@18]/8",
  L: "[~@54 c3@3 ~@16 g3@7, ~@4 a3@64 ~@7 c3@33 ~@6 c3@46, ~@16 [g2,b3]@64 ~@5 bb2@64 ~@11, ~@33 g3@64 ~@24 d3@39]/5", // G
  M: "[~@176 c3@27 c3@15 ~@6, ~@2 c3@32 ~@19 f2@32 ~@2 d3@25, ~@15 g3@64 ~@8 a3@64 ~@6 a3@64 ~@3, ~@12 c4@32 ~@6 e4@32 ~ c4@29, ~@18 bb3@32 ~@31 d4@31]/7",
  N: "[~@3 d4@8 ~, ~ c4@32 ~@15]/3",
  O: "[~@31 c3@4 ~@21 bb2@4 ~@21 a2@4 ~@11 g3@15 ~@17, ~@12 c3@19 ~@4 bb2@20 ~@5 a2@21 ~@4 f2@25 ~@18, ~@15 g3@13 g3@8 ~@2 f3@13 ~@12 f3@13 ~ f3@9 ~@2 c3@16 ~@24, ~@18 bb3@6 ~@18 a3@6 a3@13 ~@5 a3@7 a3@12 ~@43, ~@21 c4@15 ~@8 bb3@16 ~@10 c4@16 ~@42]/4",
  P: "~@5 f5@2 ~@17 g3@4 c3 ~@3, ~@3 g5@4 [c3,g5]@22 ~@3, ~@10 g3@13 ~@9, ~@17 c4@12 ~@3", // C5
  Q: "[~@15 [f3,bb5]@4 bb2 ~@26 a2@5 ~@43 d5@2, [bb2,f5]@18 ~@5 a2@23 ~@5 f6@41 [eb5,g5]@4, ~@3 f3@9 a3@7 ~@10 a3@7 ~ a3@15 f2@25 f2@19, ~@6 a5@12 ~ c6@33 ~@7 f3@4 g3@33, ~@6 a3@2 bb3@10 ~@15 c4@19 ~@3 c3@12 f3@29]/3", // Bb5 Eb
  R: "[~@20 c3@4 ~@20 bb2@4 ~@3 f3@4 ~@14 a2@4 ~@38 bb5@2 c3@3 ~@18 c3@3 ~@12 [f3,c6]@4 a5@4 ~@9 a3@11 ~@9 g3@4 [d3,f5]@2, [eb5,g5]@24 ~ [d5,f5]@5 a5@17 ~@2 [f5,a5,c6]@25 [a5,c6]@40 ~@6 bb3@6 ~ e5@7 g5@20 ~@10 bb3@14 ~@4 d6@10, c3@20 ~@4 bb2@16 f3@8 a2@5 ~@21 f2@4 ~@5 g3@30 c6@24 e3@7 ~ [e3,e6]@9 ~@7 a3@5 ~@12 g3@8 ~@6, ~@3 g3@13 ~@11 f3@10 [a3,d5,f5,bb5]@11 ~@7 a3@7 ~@18 f3@7 ~@23 g5@4 ~@2 g3@14 [g3,f5]@8 ~@3 g3@12 bb2@21 ~@18, ~@6 bb3@3 c4@15 ~@6 [a3,d5,f5]@3 bb3@15 ~@10 c4@15 ~@2 f6@39 ~@9 c4@15 ~@3 c6@8 ~@8 bb5@20 ~@2 bb5@6 bb5@7]/6", // F5 Dm Eb Dm F Am E Bbmaj7 …
  S: "[~@2 c3@3 ~ g3@3 bb3@3 ~@11 [c3,g5]@4 ~@8 eb3@5 ab2@6 ~@24 bb2@8 ~@4 g3@3 bb3@3 ~ c4@6 g3@4 c3 ~@63 g3@19 ~@10, ~@5 g5@18 ~@4 bb5@13 ~@17 bb3@18 ~@37 bb3@19 f3@13 f3@11 c3@16 ~@21, ~@12 c4@16 ~@3 [g3,g5]@10 ~@5 bb2@24 ~@9 c3@7 ~@17 bb2@20 bb2@9 ~@5 c4@20 ~@35, ~@15 bb3@12 eb3@8 c5@12 ~@6 a3@7 ~ a3@15 ~@33 a3@6 a3@17 ~@2 a3@6 a3@13 f2@4 ~@35, ~@65 f3@11 ~@30 f3@13 ~@8 a2@21 a2@8 ~@36]/6", // C5 G
  T: "[~@10 c3@4 ~@24 f3@3 ~@31 a3@9 a2@2 ~@75 f3@2, ~@7 g5@3 g5@25 f5@15 [f3,bb5]@4 c6@32 f6@45 c3@3 g3@4 bb3@3 c4@14 bb2 [d5,f5]@4, ~@8 f5@6 g3@13 g3@8 bb2@6 ~@3 bb3@10 bb2@4 a2@23 ~@6 f2@25 f2@48, ~@20 c4@20 ~ a5@20 ~@7 c4@14 ~@12 f3@4 g3@18 ~@11 eb5@2 d5@23 c3@8, ~@31 c3@9 ~ a3@6 a3@14 ~@4 a3@7 ~@19 c3@11 f3@14 ~@12 g5@3 [eb5,g5]@29]/5", // Bb5 Dm Eb
  U: "[~@51 f3@4 g3@19 ~@39 c6@3 ~@19 bb3@3 ~@12 bb5@3 d6@3 ~@34 [eb3,bb5]@4 [g3,g5]@4 eb3 ~@4 ab2@2 ~@4 bb2@8 a3@3 bb3@4, ~ a3@7 [a3,d5,bb5]@15 f3@13 ~@5 a2@4 f2@4 ~@36 c3@2 g3@4 bb3@3 c4@11 [c3,g5]@4 e3@5 ~@2 [e3,e6]@12 bb5@22 ~@6 bb5@13 g3@3 bb3@3 c4@20 ~@29, ~@2 a5@9 f3@8 a2 f5@26 [c6,f6]@28 ~@9 bb5@29 g3@4 ~@4 f3@5 a5@7 a3@5 ~ a3@16 ~@7 d3@7 g5@18 ~ g5@7 ~@4 c5@21 ~@5, ~@2 [d5,f5]@6 f5@7 bb2@5 [a5,c6]@25 a5@29 ~@7 g5@17 e5@16 ~@10 bb2@14 ~@11 g3@5 ~@3 g3@9 c3@12 bb3@16 ~@30, ~@4 bb3@21 ~ a3@3 c4@19 ~@36 c6@17 g3 f5@12 ~@6 c6@18 ~@24 f5@16 ~@8 c3@8 ~@30]/7", // Eb5 G Bbmaj7 C5 E F5 Dm Am
  V: "[~@9 bb2@34 ~@21, a3@9 ~@55, ~@4 f3@11 ~@49]/2",
})).s("gm_piano").gain(0.2).pan(0)

// chords · piano · "grand piano" · soft notes
const piano_soft = note(`<
  ~@30 A ~@6 B@3 ~@10 C@3 ~ D@4 E@3 ~@10 F@3 ~@2 G@2 H@3 I@2 J K L@5 M N O@2 P@5 Q R ~ S@2 T U V W ~@3
>`.pickRestart({
  A: "~@25 bb3@5 ~@2", B: "[~@27 g3@64 ~@5]/3", C: "[~ g3@8 ~@3]/3", D: "[~@5 g2@8 ~@3, f3 ~]/4",
  E: "[~@19 g3@64 ~@13, ~@15 c3@64 ~@17]/3", F: "[~@15 g3@32 ~, ~@13 c3@32 ~@3]/3", G: "[~@25 bb3@11 ~@16 f3@8 ~@4]/2",
  H: "[~@28 f3@8 ~@5 c3@5 f2@26 ~@6 bb3@6 bb3@8 ~@4, ~@36 f3@11 ~@49]/3", I: "[~@26 f3@15 f3@11 ~@12]/2",
  J: "~@4 c3@11 f5", K: "~@2 g3 ~, ~@13 bb3@12 ~@7",
  L: "[~@33 f3@8 ~@23 f2@18 ~@12 bb3@12 ~@20 f3@12 ~@4 bb2@4 ~@4 bb3@10, ~@30 a3@12 ~@3 c3@15 c3@21 ~@79, ~@55 f3@27 ~@56 f3@8 ~@14]/5",
  M: "~@19 g3@8 ~@5", N: "~@9 f3@7", O: "[~@28 bb3@7 ~@20 f3@9]/2",
  P: "[~@31 f3@8 ~@10 f2@29 ~@3 bb3@7 bb3@16 ~@21 f3@15 f3@6 ~@14, ~@39 f3@14 ~@107, ~@22 c3@5 ~@53]/5",
  Q: "~@11 c3@9 ~@12", R: "~@5 g3@3, ~ f5@13 ~@2, ~ bb3",
  S: "[~@2 f3@6 c3@2 ~@8 f2@5 ~@9, ~ a3@15 ~@11 f3@15 ~@22, ~@31 c3@11 ~@22]/2", T: "~ bb3@16 ~@15",
  U: "~ f3@9 ~@7 bb2@8 bb3@4 ~@3, ~@13 f3@12 ~@7", V: "~@11 g3@5", W: "~@11 f3@3 ~@2",
})).s("gm_piano").gain(0.1).pan(0)

// chords · piano · "grand piano"
const piano_2 = note("<~ A@2 B@8 C@7 D@8 E@2 F@8 G H@7 I@4 J@8 K@4 L@7 M@8 ~@33 N@3>".pickRestart({
  A: "[~@15 e6@3 ~@17 f6@5 ~@15 a5@9, ~@8 c6@10 f6@17 ~@5 e6@24, ~@31 g6@8 ~@7 c6@18]/2",
  B: "[~@36 a5@9 d6@22 ~@16 g5@11 c6@22 a5@16 c6@9 e6@2 f6@15 ~@24 a5@12 ~@13 g6@6 ~@13 a5@9 d6@21, ~@2 f6@43 ~@117 f6@31 ~ f6@20 ~@42, ~@18 g6@27 ~@114 g6@35 ~@62, ~@22 e6@23 ~@22 d6@27 ~@72 e6@28 ~@19 e6@22 ~@21, ~@29 c6@16 ~@30 bb5@19 ~@79 c6@21 ~@25 c6@15 ~@22]/8",
  C: "[~@19 g5@12 ~@21 c3@4 ~@23 c3@6 ~@20 g6@3 ~@19 e3@2 ~@21 g3@5 ~ c6@24 ~@25 e6@18 c6, ~ d6@30 ~@5 c3@16 ~@8 c3@19 ~@6 [a5,d6]@12 e4@4 f4@7 a5@15 [a3,c6]@6 g5@9 [eb3,eb6]@17 a5@25 a5@23 a5@21, ~@9 bb5@21 ~ [f2,c6]@26 [f2,a5]@29 ~@7 d4@16 c6@3 e3@4 a3@3 c4@11 ~@4 bb2@8 g3@3 d6 bb3@10 ~@44 g6@5 ~@19, ~@40 g3@8 g3@17 g3@9 g3@12 [d3,f6]@23 a2@21 ~ [eb2,f6]@25 ~@48 c6@19 ~, ~@44 a3@12 ~@13 a3@17 ~@3 a3@20 ~ e6@20 bb5@26 ~@25 [d6,f6]@24 ~@19]/7", // D5 Am Eb F5 F Dm Ebsus2 Dm
  D: "[~@20 d6@9 ~@17 c6@11 ~@2 c6@51 ~@8 e6@4 f6@15 ~@2 f6@2 ~@18 f6@6 ~@13 g6@7 ~@14 a5@9 d6@23 ~@16 g5@9, ~@3 [g5,bb5]@27 ~@7 db6@20 e5@64 ~@44 f6@21 ~@70, ~@4 f6@26 eb6@28 ~@52 c6@12 ~@15 g6@4 e6@44 e6@23 ~@23 d6@25, ~@11 eb6@18 [f5,ab5]@29 g5@64 ~@25 c6@38 ~@6 c6@16 ~@31 bb5@18]/8", // Gm Fm
  E: "[c6@23 a5@15 c6@8 e6@3 f6@13 g6@2]/2",
  F: "[~@5 e6@6 c6@11 ~ f6@3 ~@2 f6@13 ~ g6@6 e6@6 c6@7 a5@9 d6@21 ~@20 g5@11 ~@8 g3@3 a3@4 ~@32 c3@5 ~@36 c4@32 ~@14, ~@94 d6@28 ~@4 c3@11 g3@17 ~ g3@19 ~@8 g3@9 ~ g3@45 ~@19, ~@102 bb5@20 [f2,c6]@25 [f2,a5]@27 f2@35 ~@47, ~@151 c3@12 c2@11 ~@13 a3@22 ~@47, ~@159 a3@15 f5@64 ~@18]/8", // F5 F
  G: "~@6 c3@15 ~@11, ~@3 e4@4 ~@9",
  H: "[~@33 [g3,f4]@3 ~@8 f3@2 ~@10 g3@3 ~@3 c3@4 ~@3 c3@3 ~@3 d3@8 ~@4 c4@7 ~@10 g3@8 ~@26 [g3,f4]@3 ~@7 f3@2 ~@7 c4@7 [f2,a3]@9 c3@3 ~@3 d3@7 d3@4 c3@15 ~@19, ~@8 c3@15 c3@14 ~@2 f3@5 ~@6 g3@6 ~@10 f3@6 ~@15 c3@14 c3@16 c3@13 c3@11 [bb2,d4]@10 ~@2 g3@7 ~@64, ~@8 e4@7 [c4,e4]@15 e4@6 ~@6 [bb3,f4]@5 ~@6 c4@7 ~@34 c4@14 ~@9 e4@7 [c4,e4]@12 [c4,e4]@5 ~@5 [bb3,f4]@5 e4@14 ~@25 c4@7 ~@27, ~@11 g3@7 ~@18 [bb2,d4]@10 ~ [c3,e4]@13 [f2,a3]@12 [g2,b3]@15 ~@33 g3@7 g3@6 g3@5 ~@5 f3@5 ~@2 c3@14 ~@12 [g2,b3]@14 ~@34]/7", // G7 F Bb C Bb5 C Bb5 Bb …
  I: "[~@24 f4@2 ~@7 f3@2 ~@6 c4@7 ~@8 c3@4 ~@13 b3@2 ~@9 e3@8 ~@6 e3@3 ~@9 c3@3 ~@12 b3@2 ~, ~@3 e4@7 [c4,e4]@11 [c4,e4]@5 ~@5 [bb3,f4]@4 ~ e4@12 ~@6 f3@6 ~@7 g3@8 ~@5 a3@20 ~@4 c3@6 ~@6 d3@12, ~@4 c3@12 c3@10 [bb2,d4]@9 c3@13 [f2,a3]@12 [g2,b3]@15 a2@13 ~@13 [f2,a3]@12 g2@15, ~@7 g3@6 g3@6 g3@4 g3@2 ~@3 f3@5 ~@5 g3@6 ~@7 c3@5 ~@7 d3@12 ~@2 e3@6 ~@12 e4@6 ~@12 b3@12 ~@3, ~@72 a3@3 c4@26 ~@6 f3@6 ~@7 g3@8]/4", // C Bb5 Bb F G F
  J: "[~@18 a3@3 ~@7 c3@2 ~@10 d3@3 ~@15 c3@20 ~@8 g3@3 ~@8 bb3@3 ~@8 eb3@2 ~@4 eb3@7 eb3@3 ~@8 [g3,eb4]@3 ~@9 f3@3 ~@9 [g3,eb4]@2 ~@5 [bb3,bb4]@3 f3@2 ~@8 g4@3 ~@3 f3@9 ~@18 g3@2 ~@8 bb3@2 ~@5 [ab3,eb4]@5 ~@7 g3@8 ~@8 [g3,eb4]@2, [a2,c4]@21 [f2,a3]@9 [g2,c4]@12 ~@58 ab2@11 g2@14 ~@4 g4@5 ~@19 [c4,g4]@5 ~@10 g4@8 ~@3 f4@23 ~@10 bb4@9 ~@35, ~@3 e3@5 e3@5 e3@8 ~@2 c3@5 ~@5 d3@6 ~@5 c3@14 ~@20 [c3,g4]@11 [eb3,bb4]@11 ~@2 eb3@6 ~@16 [c3,eb4]@10 ~ [bb2,f4]@13 ~@11 [bb2,f4]@9 ~@5 c4@6 ~@28 c4@4 ~@3 bb3@5 ~@4 eb3@6 ~@5 eb3@8 ~@7 g3@5 ~@2, ~@6 a3@10 e4@5 ~@23 c4@7 c4@16 ~@17 c4@6 ~@2 bb3@5 ~@8 [ab3,eb4]@5 ~@17 g3@3 c4@5 ~@2 f3@7 ~@3 [c3,eb4]@11 ~@10 c3@11 ~@23 [c3,g4]@10 ~@4 [eb4,g4]@5 eb4@5 ~@6 eb4@14 ~@6 [c4,g4]@4, ~@11 b3@10 ~@5 [f3,d4]@5 ~@5 [g3,b3]@7 ~@4 g3@7 g3@8 ~@19 g3@5 ~@8 [eb4,g4]@5 ~ eb4@5 ~@5 eb4@14 ~@3 f4@8 ~@5 bb3@7 ~@3 [g3,f4]@8 ~@3 f3@5 ~@4 [g3,eb4]@9 ~@25 g3@5 ~@2 eb3@9 ~ ab2@10 ~@25]/8", // Cm Bb Ab5 Cm Am F C5 Eb5 …
  K: "[~@10 f3@3 ~@9 [g3,eb4]@3 ~@14 eb4@9 ~@6 eb3@25 ~ e4@8 ~@18 [g3,f4]@3 ~@8 f3@2 ~@6 c4@3, ~ [bb2,f4]@13 ~@2 f4@9 ~@9 bb3@13 ~ [bb3,eb4]@32 ~@35 bb3@5 ~@8, ~@4 f3@6 ~@3 c3@12 ~ [bb2,f4]@21 ~@4 bb2@28 ~@16 c3@14 [bb2,d4]@10 [c3,e4]@9, ~@7 bb3@6 eb4@6 g4@6 ~@63 e4@15 e4@6 ~@5 f4@5 ~@9, ~@17 g3@3 c4@6 ~@3 f3@18 ~@65 f3@5 ~@5 g3@6]/4", // Cm G7 Bb5 Eb5 Bb5 Bb C
  L: "[g3@3 ~@10 c3@3 ~@10 d3@4 ~@7 c4@16 ~@27 [c4,e4]@3 [g3,f4]@2 ~@4 [bb3,f4]@3 f3@2 ~@2 g3@4 ~@3 g3@3 ~@8 c3@2 ~@5 d3@14 c4@7 ~@13 c4@9 e4@7 ~@16 [g3,f4]@3 ~@8 f3@2 ~@9 g3@3 ~@9 c3@3, ~@4 [f2,a3]@13 ~@5 g3@7 ~ c4@7 ~@26 e4@6 e4@11 ~@37 b3@17 ~@8 c4@13 ~@16 e4@12 ~ [c4,e4]@7 d4@9 ~@6 c4@6 ~@12, ~@6 c3@7 ~@3 [g2,b3]@13 ~@4 g3@8 ~@25 g3@4 c4@10 ~@20 c4@6 ~@5 f3@5 ~@29 g3@6 ~ g3@7 ~@22 g3@6 ~@6 f3@5 ~@5 g3@6 ~@6 c3@6 ~@3, ~@10 f3@6 ~@3 d3@7 ~@4 c3@15 ~@18 c3@12 c3@10 [bb2,d4]@9 [c3,e4]@12 [f2,a3]@11 ~ g2@17 ~@61 [bb3,f4]@4 ~@18 f3@6, ~@72 g3@5 ~ g3@5 ~@4 f3@4 ~@17 c3@6 ~@21 c3@13 c3@15 ~ c3@14 c3@12 bb2@9 ~ [c3,e4]@12 [f2,a3]@12]/7", // C G7 Bb5 G7 F C G Bb …
  M: "[~@4 d3@4 ~@7 b3@2 ~@9 e3@6 ~@7 e3@3 ~@8 c3@2 ~@7 g3@4 d3@3 ~@25 e3@2 ~@7 c3@2 ~@7 d3@2 ~@14 c3@14 ~@23 [c4,d4]@11 ~@20 g4@63, ~ g2@17 ~@5 a3@19 a3@10 ~@28 b3@13 ~@3 c3@4 ~@4 d3@5 ~@3 c3@13 ~@14 c3@15 ~@27 c4@64 ~@11, ~ b3@12 a3@4 ~@3 e3@6 ~@10 e4@7 ~@5 f3@5 ~@3 d3@7 ~@25 e4@5 ~@5 [f3,d4]@5 ~@4 [g3,b3]@5 c4@6 c4@13 ~@9 e4@7 e4@19 ~@7 e4@16 ~@67, ~@8 g3@9 [a2,c4]@25 ~@3 c3@5 ~@3 [g2,b3]@13 [a2,c4]@27 [f2,a3]@9 [g2,c4]@10 ~@3 g3@7 g3@6 ~@15 g3@7 ~@27 g3@64 ~@15]/8", // Csus2 Dm G Am G Am F C5
  N: "[~@24 eb4@13 ~@11, ~@15 c3@59 ~@22, ~@21 g3@53 ~@22, ~@14 c4@23 ~@11, ~@37 d4@37 ~@22]/3",
})).s("gm_piano").gain(0.2).pan(0.6)

// chords · piano · "grand piano" · soft notes
const piano_soft_2 = note(`<
  ~@14 A B@2 ~@11 C ~@3 D E@3 F@3 G H ~ I J@2 K L@2 ~ M@2 N ~ O@2 P ~ Q@3 ~ R ~ S@3 ~ T@2 U ~ V@5 ~@35
>`.pickRestart({
  A: "~@9 e4@23", B: "[~@27 f5@27 ~@10]/2", C: "~ f6@2 ~@13", D: "~@14 c3@5 ~@13",
  E: "[~@18 c3@20 ~@11 [f2,f3,a3]@32 ~@15, ~@38 c3@39 ~@19]/3", // F
  F: "[~@35 g3@6 ~@10 g3@7 ~@4 c4@6 ~@28, ~@10 g3@7 g3@8 g3@9 ~@24 g3@7 ~@31, ~@7 e4@13 ~@28, ~@7 c4@8 c4@5 ~@28, ~@21 c3@19 ~@56]/3",
  G: "~@19 d3@4 ~@4 g3@5, ~@15 g3@8 ~@9", H: "~@2 g3@6 ~@9 g3@4 ~@11, ~@13 c4@8 ~@11",
  I: "~ g3@4 ~@5 f3@5 ~@8 g3@7 ~@2, ~@7 c3@6 ~@19",
  J: "[~@28 g3@7 ~@29, ~ g3@4 g3@4 g3@5 ~@18, ~@6 c4@16 c4@13 ~@29, ~@7 c3@11 ~@14]/2", K: "~@13 g3@3 ~@16",
  L: "[~@14 e3@3 ~@13 a3@2, ~@24 a2@13 ~@27]/2", M: "[~@40 g3@7 ~@17, ~@15 g3@5 ~@12, ~@35 c4@12 ~@17]/2",
  N: "~@21 g3@7 ~@4", O: "[~@16 f3@5 ~@11, ~@19 bb2@23 ~@22, ~@27 bb3@15 ~@22]/2",
  P: "~@5 eb3@3 ~@10 eb3@4 ~@3 f4@7, ~@4 g2@7 [c3,eb4]@5", // Cm
  Q: "[~@37 f3@10 ~@12 g3@8 ~@4 c4@6 ~@19, ~@15 eb2@32 ~@9 c4@15 ~@25, ~@15 g3@14 g3@18 ~@4 g3@8 ~@8 g3@7 ~@22, ~@25 f3@12 ~@10 c3@16 ~@33]/3",
  R: "~@26 g3@5 ~, ~@9 g3@7 g3@9 ~@7, ~@13 c3@18 ~, ~@21 c4@10 ~",
  S: "[~@29 g3@10 ~@3 g3@7 ~@14 g3@4 ~@12 g3@6 ~@11, ~@71 g3@8 ~@17, ~@25 c4@4 ~@3]/3",
  T: "[~@9 d3@9 ~@14 e3@7 ~@3 f2@10 ~@12, ~@29 b3@13 ~@22]/2", U: "~@12 e3@8 e3@7 ~@5, ~@5 e3@7 ~@20, ~@9 a3@20 ~@3",
  V: "[~@7 g3@4 ~@27 e4@6 ~@44 c2@53 ~@19, g3@7 ~@15 g3@8 g3@15 ~@16 e4@64 ~@35, ~@4 c4@7 ~@8 c4@15 ~@22 d4@64 ~@40, ~@26 c3@18 c3@33 e5@64 ~@19, ~@35 c5@32 ~@13]/5",
})).s("gm_piano").gain(0.1).pan(0.6)

// other · cello
const cello = note("<~ A@2 B@6 C@2 D@7 E@8 F@8 ~@4 G@6 H@7 I@5 J@4 K@7 L@8 ~@36>".pickRestart({
  A: "[~@18 f2@21 ~ a2@24]/2", B: "[~@2 f2@20 a2@24 bb2@21 eb2@27 f2@72 a2@26]/6", C: "[~ f2@20 a2@22 bb2@21]/2",
  D: "[~ eb2@29 f2@55 d3@25 a2@21 eb2@24 f2@26 d3@18 c3@5 a2@20]/7",
  E: "[~@3 eb2@26 db2@28 c2@64 f2@19 a2@24 f2@21 a2@22 bb2@23 ~ eb2@16 c2@9]/8",
  F: "[f2@69 a2@22 f2@21 a2@23 bb2@23 eb2@16 c2@12 f2@41 c2@11 ~@18]/8",
  G: "[~@4 bb2@10 ~ c3@12 ~ f3@11 ~ g3@16 ~ c3@51 ~ bb2@9 c3@14 ~ f3@12 ~ g3@13 c3@33]/6",
  H: "[~@5 c3@21 bb2@9 ~ c3@12 f3@11 g3@16 ~ a3@25 f3@11 ~ g3@14 a3@21 ~@3 f3@7 g3@13 c4@29 ~@12 c3@5 eb3@7]/7",
  I: "[~@4 ab3@10 g3@14 ~ c4@10 bb3@13 c4@11 bb3@9 c4@11 bb3@17 ~@7 c4@9 eb4@9 ab3@9 g3@16 ~ c4@9]/5",
  J: "[bb3@13 ~ c4@11 bb3@19 eb3@31 ~@6 c3@28 bb2@9 ~@2 c3@8]/4",
  K: "[~@4 f3@12 g3@13 ~ c4@24 ~@8 c3@23 bb2@8 c3@12 ~ f3@11 g3@17 c4@30 ~ c3@25 bb2@10 c3@11 ~ f3@12]/7",
  L: "[g3@17 a3@25 f3@11 g3@14 a3@21 ~@6 f3@8 g3@10 c3@128 ~@16]/8",
})).s("gm_cello").gain(0.05).pan(0.3)

// other · string ensemble 2 · "strings"
const string_ensemble_2 = note(`<
  ~ A@4 B@6 C@4 D@3 E@8 F@2 G@8 ~ H@7 I J@6 K@5 L@6 M@5 N@8 ~ O@2 P@3 Q@7 ~@2 R@2 S@8 T@4 ~ U V W ~@3
>`.pickRestart({
  A: "[~@19 f3@20 c4@26 f3@20 c4@24 ~ d4@18, ~@19 a3@84 ~@6 bb3@19]/4",
  B: "[~@3 g4@26 [c4,f4]@50 ~@16 bb3@7 c4@26 ~@14 bb3@7 ~ c4@20 [bb3,d4]@22, ~@79 a3@15 ~@8 a3@41 ~@6 a3@21 ~@22, ~@80 f3@22 ~@26 f3@21 ~@43]/6", // F5 Bb
  C: "[~ [eb4,g4]@29 ~ f4@54 [d4,f4]@24 [a3,c4,e4]@19, ~@15 c4@27 ~@22]/4", // Eb Dm Am
  D: "[~@2 [eb4,g4]@24 ~ [f3,a3,c4]@25 [d4,f4]@24 [a3,c4,e4]@20]/3", // Eb F Dm Am
  E: "[~@3 [eb4,g4]@26 [db4,f4]@29 [c4,e4]@63 a4@13 bb4@8 c5@21 ~@15 bb4@7 [a4,c5]@23 d5@22 ~ g5@25, ~@121 f4@21 a4@36 ~@52 eb5@26, ~@163 f4@22 ~@71]/8", // Eb Db C Am
  F: "[~ f5@48 ~ [f4,a4]@12 bb4@2]/2", // F
  G: "[~@5 c5@22 ~@15 bb4@6 [a4,c5]@22 [bb4,d5]@23 [eb5,g5]@28 eb-1@135, ~@5 a4@37 ~@79 f5@103 ~@32, ~@27 f4@22 ~@207]/8", // Am Bb Eb
  H: "[~@10 c4@26 bb3@11 c4@12 f4@12 ~ g4@16 c5@30 c4@22 ~ bb3@10 c4@14 f4@12 g4@13 c5@34]/7", I: "~ c4@25 bb3@6",
  J: "[~@3 c4@13 f4@11 g4@15 ~ a4@25 ~ f4@12 g4@14 a4@22 f4@9 g4@13 c6@35 ~ c5@10 eb5@7]/6",
  K: "[~@4 ab4@10 g4@14 c5@10 bb4@13 c5@11 ~ bb4@8 c5@11 ~ bb4@20 c5@13 eb5@9 ab5@10 ~ g5@16 ~@8]/5",
  L: "[~@14 c5@11 bb4@21 eb5@31 ~@5 c5@27 bb4@9 ~ c5@13 f5@12 g5@15 c6@19 ~@14]/6",
  M: "[c6@21 bb5@8 c6@12 ~ f6@11 g6@19 ~ c7@28 c6@25 bb5@11 c6@11 f6@12]/5",
  N: "[~ g6@16 a6@25 ~ f6@10 g6@14 a6@18 ~@9 f6@8 g6@10 c7@137 ~@7]/8", O: "[~@16 c4@21 ~@27]/2",
  P: "[~@21 f3@50 c4@25]/3", Q: "[~@22 a3@29 f3@46 c4@23 bb3@24 ~ a3@25 f3@37 ~@17]/7",
  R: "[~@25 eb4@10 ab3@14 ~@15]/2", S: "[~@17 c3@23 bb2@23 a2@26 f2@43 ~@7 c3@24 bb2@19 a2@31 f2@43]/8",
  T: "[~@4 c3@23 bb2@20 a2@30 f2@36 ~@15]/4", U: "bb4", V: "c5", W: "~@3 ab4@6 ~@7",
})).s("gm_string_ensemble_2").gain(0.2).pan(0.9)

// other · string ensemble 2 · "strings" · soft notes
const string_ensemble_2_soft = note("<~@5 A ~@18 B@2 C@2 ~@49 D@2 ~@2 E ~@9 F@2 ~@10 G@2 ~@2 H@4>".pickRestart({
  A: "~@2 eb4@27 ~@3", B: "[~@15 bb4@23 ~@26]/2", C: "[~ c5@48 ~@15]/2", D: "[~@4 bb3@25 a3@25 ~@10]/2",
  E: "bb3@11 ~@5", F: "[~@16 bb3@33 ~@15]/2", G: "[~@11 c5@17 f5@4]/2",
  H: "[eb5@6 ~@43 c5@67 ~@12, ~@17 bb4@58 ~@53]/4",
})).s("gm_string_ensemble_2").gain(0.15).pan(0.9)

stack(piano, piano_soft, piano_2, piano_soft_2, cello, string_ensemble_2, string_ensemble_2_soft)

More by Enya