Strudelify

Orinoco Flow

Enya

KeyG majorTempo117 bpm
0:00/0:00
// Orinoco Flow — Enya
// 117 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(117/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 · timpani
const timpani = note(`<
  ~@25 A B C B C B C B C B C B C B C B C D E D E D E D E B@2 ~@13 B C B C B C B C B C B C B C B C B C B C B C B C B C B
  C B C B C B C B C B C B C B C B C B C B C ~@13
>`.pickRestart({
  A: "~@14 f2 ~", B: "g2 ~@5 g2 ~@9", C: "f2 ~@5 c2 ~@9", D: "c3 ~@5 c3 ~@9", E: "a#2 ~@7 f2 ~@7",
})).s("gm_timpani").gain(0.72)

// bass · fretless bass · "Fretless Bs."
const bass = note("<~@52 A B C D A E F G F H I J@2 ~@61>".pickRestart({
  A: "c3@15 ~", B: "g2@6 ~ g2", C: "a2", D: "f2@7 ~ g2@8", E: "g2@13 ~ g2@2", F: "a2@15 ~", G: "f2@8 g2@7 ~",
  H: "g2@15 ~", I: "f2@11 ~ e2@4", J: "[d2@21 ~@11]/2",
})).s("gm_fretless_bass").gain(0.4)

// other · pizzicato strings · "Pizzicato"
const pizzicato_strings = note(`<
  A B A C A B A C A B A C A B A C D E F G F E F G H I J B J C K B J C J B J C K B J C D E F G F E F G H I ~@13 J B K C J
  B J C J L J C K L J C J B J C K B J C J B J C K C J C J B J C K C J C J B J C J B J C K B J C J B J ~@6
>`.pickRestart({
  A: "[g2,g3] ~ g3 ~@7 [g2,g3] ~ g3 ~@3", B: "[f2,f3] ~ f3 ~@3 [c2,c3] ~ c3 ~@5 d3 ~",
  C: "[f2,f3] ~ f3 ~@3 [c2,c3] ~ c3 ~@7", D: "[c2,c3] ~ c3 ~@3 c3 ~ c3 ~@3 g2 ~ c3 ~",
  E: "a#2 ~ a#2 ~@3 f3 ~ f3 ~@5 g2 ~", F: "c3 ~ c3 ~@3 c3 ~ c3 ~@3 g2 ~ c3 ~", G: "a#2 ~ a#2 ~@3 f3 ~ f3 ~@7",
  H: "g3 ~ g3 ~@3 g3 ~ g3 ~@5 d3 ~", I: "g3 ~ g3 ~@13", J: "[g2,g3] ~ g3 ~@3 [g2,g3] ~ g3 ~@7",
  K: "[g2,g3] ~ g3 ~@3 [g2,g3] ~ g3 ~@3 d3 ~ g3 ~", L: "[f2,f3] ~ f3 ~@3 [c2,c3] ~ c3 ~@5 d2 ~",
})).s("gm_pizzicato_strings").gain(0.4)

// chords · piano · "Piano 1"
const piano = note(`<
  A B A B A B A B A B A B A B A B C D C D C D C D E@2 A B A B A B A B A B A B A B A B C D C D C D C D E@2 ~@13 A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A F ~@7
>`.pickRestart({
  A: "b3 d4 g4 d4 ~ d4 g4 d4, g2, ~@2 b3 ~", B: "a3 c4 f4 c4 g3 c4 e4 c4, f2 c2",
  C: "g3 c4 d#4 c4 ~ c4 d#4 c4, c2@15 ~, ~@2 g3 ~", D: "f3 a#3 d4 a#3 a3 c4 f4 c4, a#1 f2",
  E: "[g3 b3 d4 b3 g3 b3 d4 b3 g3 b3 d4 b3 g4@2 ~@2, g2@29 ~@3]/2", F: "f2 ~, a3 ~@7",
})).s("gm_piano").gain(0.3)

// chords · pizzicato strings · "Pizzicato"
const pizzicato_strings_2 = note(`<
  A B A B A B A B A B A B A B A B C D C D C D C D E F E B E B E B E B E B E B E B E B C D C D C D C D E F ~@13 A B A B A
  B A B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E B E ~@6
>`.pickRestart({
  A: "~@4 [b4,d5,g5] ~@9 [b4,d5,g5] ~", B: "~@4 [a4,c5,f5] ~@5 [g4,c5,e5] ~@5",
  C: "~@4 [c5,d#5,g5] ~@5 [c5,d#5,g5] ~@5", D: "~@4 [a#4,d5,f5] ~@5 [a4,c5,f5] ~@5",
  E: "~@4 [b4,d5,g5] ~@5 [b4,d5,g5] ~@5", F: "~@4 [b4,d5,g5] ~@11",
})).s("gm_pizzicato_strings").gain(0.3)

// chords · string ensemble 2 · "Slow Str."
const string_ensemble_2 = note("<~@52 A B C D A B C D A B E F@2 ~@61>".pickRestart({
  A: "[g3,c4,e4]", B: "[g3,b3,d4]", C: "[a3,c4,e4]", D: "[a3,c4,e4] [g3,b3,d4]", E: "[a3,c4,f4]",
  F: "[[f#3,a3,d4]@21 ~@11]/2", // D
})).s("gm_string_ensemble_2").gain(0.19)

// other · pad new age · "Fantasia"
const pad_new_age = note("<~@25 [~ g3 d4 b3 g4 ~@3] ~@25 [~ g3 d4 b3 g4 ~@3] ~@74>").s("gm_pad_new_age").gain(0.16)

// other · orchestral harp · "Harp"
const orchestral_harp = note("<~@16 A B C D E F G H I J ~@16 A B C D E F G H I J ~@74>".pickRestart({
  A: "~@4 c3 g3 c4 d#4 g4 c5 g4 d#4 c4 g3 d#3 c3", B: "a#3 f4 a#4 d5 a#4 f4 a#3 d4 c4 f4 a4 c5 a4 f4 a3 c4",
  C: "g3 c4 d#4 c4 g3 c4 d#4 g4 c5 d#5 c5 g4 d#4 g4 d#4 c4", D: "a#3 d5 f4 a#4 f4 a#4 d4 a#3 a3 f3 a3 c4 f3 a3 c4 f4",
  E: "c4 d#4 g4 c5 d#5 c5 d#5 g5 d#5 c5 g4 d#4 c4 d#3 g3 c4", F: "d4 f4 a#3 a#4 d5 f5 d5 a#4 a4 f4 c4 a3 f3 a3 c4 f4",
  G: "g4 c5 d#5 g5 d#5 c5 g4 d#4 c4 g4 d#4 g4 c4 g4 c5 d#5", H: "d5 a#4 d4 f4 a#4 f4 a#4 f5 a4 c4 f4 c5 a4 f4 a4 c5",
  I: "g3 b3 d4 g4 b3 d4 g4 b4 d5 g5 d5 b4 g4 d4 g4 b4", J: "d4 b3 g4 d4 b4 d4 g4 b4 ~@8",
})).s("gm_orchestral_harp").gain(0.37)

// drums · tambourine
const tambourine = s("tb").struct("<~@52 [~ x]!11 ~@63>").gain(0.22)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@52 [x!4]!11 [x!3 ~] ~@62>").gain(0.97)

stack(
  timpani, bass, pizzicato_strings, piano, pizzicato_strings_2, string_ensemble_2, pad_new_age, orchestral_harp,
  tambourine, cabasa
)

More by Enya