Strudelify
Caribbean Blue cover art

1991 · Shepherd Moons

Caribbean Blue

Enya

KeyA minorTempo169 bpm
0:00/0:00
// Caribbean Blue — Enya
// 169 bpm, 3/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "CLAVINET" clavinet (copy of ch 2 "SLAPBASS 2" slap bass 2)
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(169/3)

// 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, A@4 for four bars: edit a riff to change every repeat.

// bass · slap bass 2 · "SLAPBASS 2"
const bass = note(`<
  A B C D A C B E A B C D A F G H I J K H J I L H I J K H M N@2 O P Q@2 O P R@2 O S T@2 O U V@2 W@2 H I J K H J I L H X
  J K H M Y H I J K H J I L H I J K H J Y Z AA AB AC H AD AE AF AG AH AF AC H AD AE AF AH@2 AF AI AG AE AF AJ AG AF AE
  AK AG AE AF AJ AG AF AE AK AG AE AF AJ AG AF AE AK AG AE AF AJ AG AF AE AK AG AE AF AJ AG AF AE AK AL AE AF AJ AG AF
  AE AK AG AE AF AJ AG AF AE AK AG AE AF AJ AG AM AN@3
>`.pickRestart({
  A: "~@5 [e3,a3]@5 ~ [e3,a3]@5, a2", B: "~@5 [e3,g#3]@5 ~ [e3,g#3]@5, c#3", C: "~@5 [f#3,b3]@5 ~ [f#3,b3]@5, b2",
  D: "~@5 [c#3,a3]@5 ~ [c#3,a3]@5, f#2", E: "~@5 [d#3,g#3]@5 ~ [d#3,g#3]@5, g#2",
  F: "~@5 [d#3,f#3]@5 ~ [d#3,f#3]@5, b2", G: "[e2,e3,g#3,b3]", H: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3",
  I: "c#3@3 e3@2 g#3@3 e3@3 g#3@2 e3@3", J: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3", K: "f#2@3 c#3@2 a3@3 c#3@3 a3@2 c#3@3",
  L: "g#2@3 g#3@2 b2@3 g#3@3 c#3@2 g#3@3", M: "b2@3 f#3@2 b3@3 f#3@3 b2@5",
  N: "[e4@3 e3@2 g#3@3 b3@3 e4@2 e3@3 g#3@3 b3@2 e4@3 g#4@3 b4@2 e5@3, e2]/2",
  O: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, d#4", P: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, c#4",
  Q: "[e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3 e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3, b3]/2",
  R: "[a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3 a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3, c#4]/2",
  S: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, e4@11 d#4@5",
  T: "[e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3 e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3, e4@21 f#4@5 ~ e4@5]/2",
  U: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, e4",
  V: "[a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3 a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3, c#4@21 d#4@5 ~ e4@5]/2",
  W: "[b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3 b2@3 f#3@2 b3@3 ~@8, d#4@3 ~]/2", X: "c#3@3 e3@2 g#3@3 e3@3 g#3@2 [e3,g#3]@3",
  Y: "e2@3 b2@2 e3@3 b2@3 e3@2 b2@3", Z: "e2@3 b2@2 e3@3 g#3@3 b3@2 e4@3", AA: "f3@3 a3@2 c4@3 a3@3 c4@2 a3@3",
  AB: "c3@3 e3@2 g3@3 e3@3 g3@2 e3@3", AC: "e3@3 g3@2 b3@3 g3@3 b3@2 g3@3", AD: "g2@3 d3@2 b3@3 d3@3 b3@2 d3@3",
  AE: "d3@3 f3@2 a3@3 f3@3 a3@2 f3@3", AF: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3", AG: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 f3@3",
  AH: "b2@3 g3@2 b3@3 g3@3 b3@2 g3@3", AI: "c3@3 g3@2 c4@3 ~@8", AJ: "g2@3 d3@2 a#3@3 d3@3 a#3@2 d3@3",
  AK: "a2@3 a3@2 c3@3 a3@3 d3@2 a3@3", AL: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 [f3,a#3]@3", AM: "c3@3 g3@3 c4@3 g3@3 c4@4",
  AN: "[g3@4 f2@31 ~@13]/3",
})).s("gm_slap_bass_2").gain(0.06)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D E F G H I B C D E J K L M N O P Q R S L M N O P T U@2 V W X@2 V W Y@2 V Z AA@2 V AB AC@2 AD@2 L M N O P Q AE@2
  L AF N O P AG AH AI R AJ AK AL AM AN AO AI R AP AK AL AQ AR@2 AS AT AU AV AW AX AY AZ BA BB BC BD AW AX BE BA@2 BF@2
  BG BH BI BJ BK BL BM BN BO BH BI BJ BK BP BQ@2 BR BM BS BT BU BV BW BX BR BM BS BT BU BY BZ@2 BR BM BS BT BU BV BW BX
  CA BM BS BT BU BY BZ@2 BR BM BS BT CB BV BW BX BR BM BS BT BU CC@4
>`.pickRestart({
  A: "~@5 [e3,a3]@5 ~ [e3,a3]@5, a2, ~ c#4@5 ~@2", B: "~@5 [e3,g#3]@5 ~ [e3,g#3]@5, [c#3,c#4]",
  C: "~@5 [f#3,b3]@5 ~ [f#3,b3,d#4]@5, b2, e4@11 ~@5", D: "~@5 [c#3,a3]@5 ~ [c#3,a3]@5, [f#2,f#4]",
  E: "e4@2 d#4@3 c#4@3 ~@3 [e3,a3]@5, a2, ~@5 [e3,a3]@5 ~@6, ~ b3", // A5
  F: "~@5 [f#3,b3]@5 ~ d#4@2 e4@3, b2, ~ c#4@10 [f#3,b3]@5", G: "~@5 [e3,g#3]@5 ~ [e3,g#3,e4]@5, c#3, d#4@11 ~@5",
  H: "~@5 [d#3,g#3]@5 ~ [d#3,g#3]@5, g#2, d#4@3 ~", I: "~@5 [e3,a3]@5 ~ [e3,a3]@5, a2, c#4@13 ~@3",
  J: "~@5 [d#3,f#3]@5 ~ [d#3,f#3]@5, [b2,c#4]", K: "[e2,e3,g#3,b3]", L: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, e4@11 c#4@5",
  M: "c#3@3 e3@2 g#3@3 e3@3 g#3@2 e3@3, e4@11 c#4@5", N: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, e4@11 f#4@5",
  O: "f#2@3 c#3@2 a3@3 c#3@3 a3@2 c#3@3, c#4@11 b3@5", P: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, c#4@11 e4@5",
  Q: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, d#4@11 e4@5", R: "c#3@3 e3@2 g#3@3 e3@3 g#3@2 e3@3, c#4",
  S: "g#2@3 g#3@2 b2@3 g#3@3 c#3@2 g#3@3, ~@11 c#4@5", T: "b2@3 f#3@2 b3@3 f#3@2 ~ b2@5, d#4@5 e4@2 ~",
  U: "[e4 ~@2 e3@2 g#3@3 b3@3 ~@2 e3@3 g#3@3 b3@2 ~@3 g#4@3 b4@2 e5@3, e2, ~ e4@10 e4@10 e4@11]/2",
  V: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, d#4", W: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, c#4",
  X: "[e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3 e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3, b3]/2",
  Y: "[a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3 a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3, c#4]/2",
  Z: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, e4@11 d#4@5",
  AA: "[e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3 e2@3 b2@2 g#3@3 b2@3 g#3@2 b2@3, e4@21 f#4@5 ~ e4@5]/2",
  AB: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, e4",
  AC: "[a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3 a#2@3 f#3@2 a#3@3 f#3@3 a#3@2 f#3@3, c#4@21 d#4@5 ~ e4@5]/2",
  AD: "[b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3 b2@3 f#3@2 b3@3 ~@3 c#4@5, d#4@3 ~]/2",
  AE: "[c#3@3 e3@2 g#3@3 e3@3 g#3@2 e3@3 g#2@3 g#3@2 b2@3 g#3@3 c#3@2 g#3@3, c#4@23 ~@4 c#4@5]/2",
  AF: "c#3@3 e3@2 g#3@3 e3@3 g#3@2 [e3,g#3]@3, e4@11 c#4@5", AG: "b2@3 f#3@2 b3@3 f#3@3 [b2,e4]@5, d#4@11 ~@5",
  AH: "e2@3 b2@2 e3@3 b2@3 e3@2 b2@3, e4@13 ~@3", AI: "a2@3 e3@2 a3@3 e3@3 a3@2 e3@3, c#4@13 ~@3",
  AJ: "~@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, b2@3 ~@8 d#4@5, ~ e4@11 ~@4", AK: "f#2@3 c#3@2 a3@3 c#3@3 a3@2 c#3@3, f#4",
  AL: "[a2,e4]@3 [e3,d#4]@2 [a3,c#4]@3 e3@3 a3@2 e3@3, ~ b3", // A5 Emaj7 A
  AM: "b2@3 f#3@2 b3@3 f#3@3 [b3,d#4]@2 [f#3,e4]@3, c#4@11 ~@5", AN: "c#3@3 e3@2 g#3@3 e3@3 g#3@2 e3@3, d#4@11 e4@5",
  AO: "g#2@3 g#3@2 b2@3 g#3@3 c#3@2 g#3@3, d#4@13 ~@3", AP: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, e4@11 d#4@5",
  AQ: "b2@3 f#3@2 b3@3 f#3@3 b3@2 f#3@3, c#4",
  AR: "[e2@3 b2@2 e3@3 b2@3 e3@2 b2@3 e2@3 b2@2 e3@3 g#3@3 b3@2 e4@3, b3@27 ~@5]/2",
  AS: "f3@3 a3@2 c4@3 a3@3 c4@2 a3@3, f4", AT: "c3@3 e3@2 g3@3 e3@3 g3@2 e3@3, c4",
  AU: "~@3 g3@2 b3@3 g3@3 b3@2 g3@3, e3@3 ~@13, ~ e4@15",
  AV: "a2@3 e3@2 ~@3 e3@3 a3@2 ~ e4@2, c4@5 a3@3 ~@5 e3@3, ~@3 d4@4 ~", AW: "g2@3 d3@2 b3@3 d3@3 b3@2 d3@3, d4",
  AX: "d3@3 f3@2 a3@3 f3@3 a3@2 f3@3, f4", AY: "~@3 g3@2 c4@3 g3@3 c4@2 g3@3, c3@3 ~@13, ~ e4@15",
  AZ: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 f3@3, d4@5 ~@3", BA: "b2@3 g3@2 b3@3 g3@3 b3@2 g3@3, d4",
  BB: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3, e4@7 ~", BC: "e3@3 g3@2 b3@3 g3@3 b3@2 g3@3, e4",
  BD: "a2@3 e3@2 a3@3 e3@3 a3@2 [e3,e4]@3, c4@5 d4@8 ~@3", BE: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3, e4",
  BF: "[c3@3 g3@2 c4@3 g3@3 c4@2 g3@3 c3@3 g3@2 c4@3 ~@3 d4@5, e4@21 ~@11]/2",
  BG: "~@3 f3@2 a#3@3 f3@3 a#3@2 f3@3, a#2@3 ~@13, ~ f4@10 d4@5", BH: "d3@3 f3@2 a3@3 f3@3 a3@2 f3@3, f4@11 d4@5",
  BI: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3, f4@11 g4@5", BJ: "g2@3 d3@2 a#3@3 d3@3 a#3@2 d3@3, d4@11 c4@5",
  BK: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 f3@3, d4@11 f4@5", BL: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3, e4@11 f4@5",
  BM: "d3@3 f3@2 a3@3 f3@3 a3@2 f3@3, d4", BN: "a2@3 a3@2 c3@3 a3@3 d3@2 a3@3, ~@11 d4@5",
  BO: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 f3@3, f4@11 d4@5", BP: "c3@3 g3@2 c4@3 g3@3 ~@2 g3@3, e4@11 [c4,f4]@4 ~",
  BQ: "[d3@3 f3@2 a3@3 f3@3 a3@2 f3@3 a2@3 a3@2 c3@3 a3@3 d3@2 a3@3, f4@29 ~@3]/2",
  BR: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 f3@3, d4@7 ~", BS: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3, f4@11 e4@5",
  BT: "g2@3 d3@2 a#3@3 d3@3 a#3@2 d3@3, g4", BU: "[a#2,f4]@3 [f3,e4]@2 [a#3,d4]@3 f3@3 a#3@2 f3@3, ~ c4",
  BV: "c3@3 g3@2 c4@3 g3@3 [c4,e4]@2 [g3,f4]@3, d4@3 ~", BW: "d3@3 f3@2 a3@3 f3@3 a3@2 f3@3, e4@11 f4@5",
  BX: "a2@3 a3@2 c3@3 a3@3 d3@2 a3@3, e4", BY: "c3@3 g3@2 c4@3 g3@3 c4@2 g3@3, d4@7 ~",
  BZ: "[d3@3 f3@2 a3@3 f3@3 a3@2 f3@3 a2@3 a3@2 c3@3 a3@3 d3@2 a3@3, d4@7 ~]/2",
  CA: "a#2@3 f3@2 a#3@3 f3@3 a#3@2 [f3,a#3]@3, d4@13 ~@3", // A#5
  CB: "[a#2,f4]@3 [f3,e4]@2 ~ d4@2 f3@3 a#3@2 f3@3, ~@5 a#3@3 c4@8", // A#5 Fmaj7
  CC: "[c3@3 g3@3 c4@3 g3@3 c4@4 g3@4 ~@2 f4@36 ~@6, d4@23 ~@41, ~@5 f2@5 ~@6]/4",
})).s("gm_piano").gain(0.4)

// chords · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel = note(`<
  ~@49 A B C D E C B F E B C D E G H@2 B C D E C B I E B C D E G J@2 K L M N O P L Q R L M S T P U V@2 U W X Y Z T X AA
  P AB X AC AD T AE U P AF AE P L T X AA P AG X AH Z T X Z AI@2 AE P L T X AA P AG X AH Z T X Z P AF AE P L T X AA P AG
  X AH Z T X AJ@4
>`.pickRestart({
  A: "~@5 e4@5 ~ [e4,a4]@5, a3", B: "~@5 [e4,g#4]@5 ~ [e4,g#4]@5, c#4", C: "~@5 [f#4,b4]@5 ~ [f#4,b4]@5, b3",
  D: "~@5 [c#4,a4]@5 ~ [c#4,a4]@5, f#3", E: "~@5 [e4,a4]@5 ~ [e4,a4]@5, a3", F: "~@5 [d#4,g#4]@5 ~ [d#4,g#4]@5, g#3",
  G: "~@5 [d#4,f#4]@5 ~ [d#4,f#4]@5, b3", // D#m
  H: "[[d#4,f#4]@5 ~@16 [e4,a4]@5 ~ [e4,a4]@5, [e3,e4] a3, ~@5 [g#4,b4]@16 ~@11]/2", // D#m A5 E G#m
  I: "g#3@5 [b3,d#4,g#4]@5 ~ [c#4,d#4,g#4]@5", J: "[[g#4,b4] ~, e3]/2", K: "~@5 [a4,c5]@5 ~ [a4,c5]@5, f4",
  L: "~@5 [g4,c5]@5 ~ [g4,c5]@5, c4", M: "~@5 [g4,e5]@5 ~ [g4,e5]@5, e4", N: "~@5 [a4,c5]@5 ~ [a4,c5]@5, a3",
  O: "~@5 [g4,b4]@5 ~ [g4,b4]@5, g3", P: "~@5 [a4,d5]@5 ~ [a4,d5]@5, d4", Q: "~@5 [f4,a#4]@5 ~ [f4,a#4]@5, a#3",
  R: "~@5 [g4,b4]@5 ~ [g4,b4]@5, b3", S: "~@5 [a4,e5]@5 ~ [a4,e5]@5, a3", T: "~@5 [g4,d5]@5 ~ [g4,d5]@5, g3",
  U: "~@5 [g4,e5]@5 ~ [g4,e5]@5, c4", V: "~@5 [g4,d5]@5 ~ [g4,d5]@5, b3", W: "[c4,g4,e5]@5 ~@11",
  X: "~@5 [a#4,f5]@5 ~ [a#4,f5]@5, a#3", Y: "~@5 [a4,f5]@5 ~ [a4,f5]@5, d4", Z: "~@5 [c5,f5]@5 ~ [c5,e5]@5, c4",
  AA: "~@5 [c5,e5]@5 ~ [c5,e5]@5, c4", AB: "a3@5 [c4,a4,e5]@5 ~ [d4,a4,e5]@5", AC: "~@5 [d5,f5]@5 ~ [a4,f5]@5, d4",
  AD: "~@5 [c5,f5]@5 ~@6, c4", AE: "~@5 [a#4,d5]@5 ~ [a#4,d5]@5, a#3", AF: "a3@5 [c4,a4,d5]@5 ~ [d4,a4,d5]@5",
  AG: "a3@5 [c4,a4,c5]@5 ~ [d4,a4,c5]@5", AH: "~@5 [d5,f5]@5 ~ [d5,f5]@5, d4",
  AI: "[~@5 [a4,d5]@5 ~ [a4,d5]@5 ~@5 [a4,d5]@5 ~ [a4,d5]@5, d4]/2", // D5
  AJ: "[~@6 [c5,f5]@6 [c5,e5]@8 ~@15 f5@17 ~@12, c4@20 [f3,a3]@12 c5@19 ~@13, ~@6 c4@7 ~@3, ~@27 f4@25 ~@12, ~@29 a4@22 ~@13]/4", // F5 C F
})).s("gm_acoustic_guitar_steel").gain(0.15)

stack(bass, piano, acoustic_guitar_steel)

More by Enya