Strudelify
1492: Conquest of Paradise cover art

1992 · 1492: Conquest of Paradise

1492: Conquest of Paradise

Vangelis

KeyD majorTempo75 bpm
0:00/0:00
// 1492: Conquest of Paradise — Vangelis
// 75 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 4) are rendered on a constant 3/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 118 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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: edit a riff to change every repeat.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@33 A B C D E F G H I ~ J K L M J K N O J K L M J K N P B C D E F G H I ~@9 J K L M J K N O J K L M J K N O ~@7 Q B C
  D E F G H R@2 S H S T@4 ~@2
>`.pickRestart({
  A: "~@17 [a4,a5]@7", B: "[f5,f6]@6 e5@2 [d5,d6]@7 ~ [c#5,c#6]@6 [d5,d6]@2, ~@6 e6 ~@17",
  C: "[e5,e6]@5 ~ [c#5,c#6]@2 [a4,a5]@10 ~@2 [a4,a5]@4", // E C# A
  D: "[f5,f6]@5 ~ [e5,e6]@2 [d5,d6]@8 [c#5,c#6]@6 d5@2, ~@22 d6 ~", E: "[e5,e6]@2 [c5,c6]",
  F: "[a5,a6]@3 [g5,g6] [f5,f6]@4 [e5,e6]@3 [f5,f6]", G: "[g5,g6]@6 [e5,e6]@2 [c5,c6]@13 ~ c5@2, ~@22 c6 ~",
  H: "[a#4,a#5]@5 ~ [c5,c6]@2 [d5,d6]@6 [e5,e6]@2 [c5,c6]@6 [a#4,a#5]@2", I: "[a4,a5]@23 ~",
  J: "[d1,d2,a3,d4,f#4]@23 ~", K: "[g1,g2,b3,d4,g4]", L: "[d1,d2,a3,d4,f#4]", M: "[g1,g2,b3,d4,g4]@23 ~",
  N: "[d1,d2,a3,d4,f#4], g4 ~@11", O: "[a1,a2,a3,c#4,e4]@7 ~", P: "~@16 [a4,a5]@7 ~, [a1,a2,a3,c#4,e4]@7 ~",
  Q: "~@16 [a4,a5]@7 ~", // A
  R: "[a4@20 ~@4 [a#4,a#5]@5 ~ [c5,c6]@2 [d5,d6]@6 [e5,e6]@2 [c5,c6]@6 [a#4,a#5]@2, a5@23 ~@25, ~@5 a4@5 ~@2]/2", // A# C D E C A#
  S: "[a4,a5]@20 [a4,a5]@3 ~", // A
  T: "[~ [d6,d7], d3@19 f#4 a4@24 ~@4, d4@11 f#4@6 a3@24 ~@7, a4@7 f#4 a4@10 e4@24 ~@6, ~@6 e4@3 f#4 e4@2 d4@9 f#4@24 ~@3]/4", // D
})).s("gm_piano").gain(0.41).pan(0.1)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@2 A@4 B@2 C D C E F E G D@2 C D C E F E G D C D C E F E G D@2 C D C E F E G D@2 H I H I H I J D H I H I H I J K C D
  C E F E G D C D C E F E G D@2 H I H I H I J D H I H I H I J K C D C E F E G D C D C E F E G D G ~@3 J ~@5
>`.pickRestart({
  A: "[d1@47 ~]/2", B: "[d1@15 ~]/2", C: "d2", D: "a1", E: "c2", F: "f1", G: "a#1", H: "d1@3 a1 d2@8", I: "g1", J: "d1",
  K: "a1 ~@2",
})).s("gm_fretless_bass").gain(0.45).pan(0.3)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note("<A@2 ~@107 B C B ~ D@4 ~>".pickRestart({
  A: "[d1@23 ~]/2", B: "a1", C: "a#1", D: "[~@3 d1, d2@23 ~ d2@24, ~@12 d1@23 ~@13]/4",
})).s("gm_fretless_bass").gain(0.25).pan(0.3)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note("<~@43 A@16 B ~@16 A@8 C@8 B ~@25>".pickRestart({
  A: "[a4@22 ~ b4@7 ~ a4@8 g4@7 ~ a4@23 ~ b4@7 ~ a4@6 ~@2 g4@6 ~@2 a4@24 b4@8 c#5@7 ~ d5@7 ~ f#4@24 e4@18 ~@7]/8",
  B: "d4@3 ~@5",
  C: "[a4@22 ~ b4@11 ~@2 a4@3 g4@7 ~ a4@23 ~ b4@12 a4@4 g4@6 ~@2 a4@24 b4@8 c#5@7 ~ d5@7 ~ f#4@24 e4@18 ~@7]/8",
})).s("gm_synth_brass_1").gain(0.6).pan(0.3)

// other · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@42 A B C B D B C B E B C B D B C B F ~@16 A B C B D B C B E B C B D B C B F ~@21 G ~@4
>`.pickRestart({
  A: "~@6 g4!2 a3 ~ e4!2 a3 ~ g4!2 a3 ~ a4!2 a3 ~ e5!2",
  B: "d3 ~ d4!2 d3 ~ a3!2 d3 ~ d4!2 d3 ~ a4!2 d3 ~ d4!2 d3 ~ a4!2",
  C: "g3 ~ d5!2 g3 ~ d4!2 g3 ~ a4!2 g3 ~ d5!2 g3 ~ d4!2 g3 ~ d5!2",
  D: "g3 ~ d5!2 g3 ~ g4!2 g3 ~ a5!2 g3 ~ d5!2 g3 ~ d6!2 g3 ~ a5!2",
  E: "a3 ~ e5!2 a3 ~ a4!2 a3 ~ a5!2 a3 ~ d5!2 a3 ~ a5!2 a3 ~ e5!2", F: "a3 ~ e5!2 a3 ~@19", G: "~@14 d3!2 d2 ~@7",
})).s("gm_pad_poly").gain(0.27)

// other · pad poly · "POLYSYNTH" · soft notes
const pad_poly_soft = note("<~@41 A B ~@15 C ~@15 A B ~@15 C ~@20 D E F ~@3>".pickRestart({
  A: "~@8 a3 ~ a4!2 a3 ~ g4!2 a3 ~ a4!2 a3 ~ g4!2", B: "e4 ~ a4!2 a3 ~@19",
  C: "~@6 a4!2 a3 ~ a5!2 a3 ~ d5!2 a3 ~ a5!2 a3 ~ e5!2",
  D: "d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2",
  E: "d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2 d2 ~@5 d3!2 d2 ~ d3!2",
  F: "d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2 d2 ~ d3!2 d2 d3 ~ d3 d2 d3!2 ~",
})).s("gm_pad_poly").gain(0.1)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C D A B C D E F G H I J K L M E F G H I J K L E F G H I J K L M E F G H I J K L M N O P Q P Q N R S@2 T@2 U V W X
  E Y Z AA AB AC AD@2 E AE AF AG AH AI K L M N O P Q P Q N R S@2 T@2 U V W X E AE AF AG AH AI K L E F G H I J K L K L K
  L ~@6
>`.pickRestart({
  A: "[a4,d5] ~@7 [a4,d5] ~@7 a4 ~@3 a4 ~@3", B: "[a4,d5] ~@7 [a4,d5] ~@7 [a4,d5] ~@3 a4 ~@3",
  C: "[a4,d5] ~@7 [a4,d5] ~@7 [a4,d5] ~@7", D: "[a4,d5] ~@7 a4 ~@7 [a4,d5] ~@3 a4 ~@3",
  E: "[d4,f4,a4] ~@7 [d4,f4,a4] ~@7 [d4,f4,a4] ~@7", // Dm
  F: "[c#4,e4,a4] ~@3 [e4,a4] ~@3 [c#4,e4,a4] ~@3 e4 ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // A A5 A
  G: "[d4,f4,a4] ~@7 [d4,f4,a4] ~@7 [d4,f4,a4] ~@3 [f4,a4] ~@3", // Dm F
  H: "[c4,e4,g4] ~@3 g4 ~@3 [c4,e4,g4] ~@7 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3", // C
  I: "[c4,f4,a4] ~@3 [f4,a4] ~@3 [c4,f4,a4] ~@7 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3", // F
  J: "[c4,e4,g4] ~@3 [e4,g4] ~@3 [c4,e4,g4] ~@3 [e4,g4] ~@3 [c4,e4,g4] ~@3 [e4,g4] ~@3", // C Em C Em C Em
  K: "[d4,f4,a#4] ~@7 [d4,f4,a#4] ~@7 [d4,f4,a#4] ~@3 [d4,f4,a#4] ~@3", // A#
  L: "[c#4,e4,a4] ~@3 e4 ~@3 [c#4,e4,a4] ~@3 e4 ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // A
  M: "[c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // A
  N: "[a3,d4,f#4]", O: "[b3,d4,g4]", P: "[a3,f#4], d4 ~@23", Q: "[b3,g4], d4 ~@23",
  R: "e6@8 [f#4,f#6]@8 [g4,g6]@7 ~, [a3,c#4,e4]", // F# G A
  S: "[[a3,d4,f#4,a5,a6]@23 ~@9 [a5,a6]@8 [g5,g6]@8, ~@23 [b5,b6]@8 ~@17, ~ [b3,d4,g4]]/2", // D A G B G
  T: "[[a3,f#4,a5,a6]@23 ~ d4 ~@7 [a5,a6]@8 [g5,g6]@8, d4 ~@22 [b5,b6]@9 ~@16, ~ [b3,g4]]/2", // D A G B Em
  U: "[a3,f#4,a5,a6], d4 ~@23", V: "[b5,b6]@8 [c#6,c#7]@7 [d6,d7]@8 ~, [b3,g4], d4 ~@23", W: "[a3,d4,f#4,f#5,f#6]",
  X: "[c#4,e4] ~, a3", Y: "[c#4,e4,a4] ~@3 [e4,a4] ~@3 [c#4,e4] ~@3 e4 ~@3 [c#4,e4] ~@3 [c#4,e4] ~@3, ~ a4 [g4,c#5]",
  Z: "[a4,f5]@6 [g4,e5]@2 d4 ~@7 d4 ~@3 a4 ~@3, [d4,f4] ~@7 [f4,d5]@14 ~@2", // Dm C Dm
  AA: "[c4,e4,g4] ~@3 g4 ~@3 [c4,e4,g4] ~@7 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3, ~@2 [c5,g5]", // C C5
  AB: "[c4,f4,a4] ~@3 [f4,a4] ~ [c5,g5]@2 [c4,f4,a4] ~@7 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3, [c5,a5]@4 ~@4 [c5,f5]@13 ~@3", // F C5 F F5
  AC: "[c4,e4,g4] ~@3 [e4,g4] ~@3 [c4,e4] ~@3 e4 ~@3 [e4,g4] ~@3 [e4,g4] ~@3, ~@8 [g3,g4]@7 [c4,c5]@8 ~", // C Em C Em G C
  AD: "[[d4,f4] ~@7 [d4,f4] ~@7 [d4,f4] ~@3 [d4,f4] ~@3 [c#4,e4] ~@3 e4 ~@3 [c#4,e4] ~@3 e4 ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3, [a#3,a#4]@23 [a3,a4]@16 ~@9]/2", // Dm C#m A A# A
  AE: "[c#4,e4,a4] ~@3 [e4,a4] ~@3 a3@8 [g3,c#4]@8", AF: "[a3,f4]@3 [g3,e4] ~@4 [a4,a5]@4, ~@8 [f3,d4]@15 ~",
  AG: "[c4,e4,g4] ~@3 g4 ~@3 [c4,e4,g4] ~@7 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3, [c5,c6]@4 [c5,g5] ~, ~@8 g5@7 ~@9", // C C5
  AH: "[c4,f4,a4] ~@3 [f4,a4] ~@3 [c4,f4,a4] ~@7 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3, ~@16 [f5,a5]@7 ~", // F
  AI: "[c4,e4,g4] ~@3 [e4,g4] ~@3 [c4,e4,g4] ~@3 [e4,g4] ~@3 [c4,e4,g4] ~@3 [e4,g4] ~@3, e5@23 ~, c6 g5 ~", // C Em C Em C Em
})).s("gm_string_ensemble_1").gain(0.14)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  A B C D A B C D E F G H I J K L ~ E F G H I J K L E F G H I J K L ~ E F G H I J K L ~@16 M E F N H I J O F E P ~ H I J
  K L ~@16 M E P ~ H I J K L E F G H I J K L K L K L ~@6
>`.pickRestart({
  A: "~@16 d5 ~@3 d5 ~@3", B: "~@20 d5 ~@3", C: "~@20 [a4,d5] ~@3", D: "~@8 d5 ~@11 d5 ~@3",
  E: "~@4 [d4,f4,a4] ~@7 [d4,f4,a4] ~@7 [d4,f4,a4] ~@3", F: "~@4 c#4 ~@7 c#4 ~@11",
  G: "~@4 [d4,f4,a4] ~@7 [d4,f4,a4] ~@7 d4 ~@3", H: "~@4 [c4,e4] ~@7 [c4,e4,g4] ~@11", I: "~@4 c4 ~@7 [c4,f4,a4] ~@11",
  J: "~@4 c4 ~@7 c4 ~@11", K: "~@4 [d4,f4,a#4] ~@7 [d4,f4,a#4] ~@11", L: "~@4 [c#4,a4] ~@7 [c#4,a4] ~@11",
  M: "[e5,e6] ~", N: "~@4 [d4,f4] ~@7 d4 ~@7 d4 ~@3", O: "~@4 [d4,f4] ~@7 [d4,f4] ~@11", P: "~@4 c#4 ~@19",
})).s("gm_string_ensemble_1").gain(0.07)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@15 A B@6 C@8 D@3 E@8 ~@17 F@6 G@8 D@3 ~@16 E@8 F@6 H@4 ~@9>".pickRestart({
  A: "a3@5 a3@3",
  B: "[~@6 b3@9 c#4@8 [f3,a3,d4]@22 [e3,a3,c#4]@24 ~ [f3,a3,d4]@24 [g3,c4,e4]@23 ~ [a3,c4,f4]@24 [g3,c4,e4]@2, ~@3 g3@8 ~@61]/6", // Dm A Dm C F C
  C: "[~@22 [f3,a#3,d4]@24 ~ [e3,a3,c#4]@23 ~ [f3,a3,d4]@22 [e3,a3,c#4]@24 ~ [f3,a3,d4]@24 [g3,c4,e4]@23 ~ [a3,c4,f4]@24 [g3,c4,e4]@2]/8", // A# A Dm A Dm C F C
  D: "[~@22 [f3,a#3,d4]@24 ~ [e3,a3,c#4]@4 ~@21]/3", // A# A
  E: "[~@23 [f3,a3,d4]@22 [e3,a3,c#4]@24 ~ [f3,a3,d4]@24 [g3,c4,e4]@23 ~ [a3,c4,f4]@24 [g3,c4,e4]@23 ~ [f3,a#3,d4]@24 ~ [e3,a3,c#4]]/8", // Dm A Dm C F C A# A
  F: "[~@23 [f3,a3,d4]@22 [e3,a3,c#4]@24 ~ [f3,a3,d4]@24 [g3,c4,e4]@23 ~ [a3,c4,f4]@24 [g3,c4,e4]@2]/6", // Dm A Dm C F C
  G: "[~@22 [f3,a#3,d4]@24 ~ [e3,a3,c#4]@24 [f3,a3,d4]@22 [e3,a3,c#4]@24 ~ [f3,a3,d4]@24 [g3,c4,e4]@23 ~ [a3,c4,f4]@24 [g3,c4,e4]@2]/8", // A# A Dm A Dm C F C
  H: "[~@22 [f3,a#3,d4]@24 ~ [e3,a3,c#4]@23 [f3,a#3,d4]@24 ~@2]/4", // A# A A#
})).s("gm_synth_strings_1").gain(0.15).pan(0)

// chords · synth strings 1 · "SYN STR 1" · soft notes
const synth_strings_1_soft = note("<~@108 A@4 B@4 ~@2>".pickRestart({
  A: "[~@23 [e3,a3,c#4]@23 [f3,a#3,d4]@24 ~ [e3,a3,c#4]@25]/4", B: "[[d2,d3,f#3,a3]@23 ~, d1@29 ~@3, d4@41 ~@7]/4",
})).s("gm_synth_strings_1").gain(0.06).pan(0)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  A B C B A B C B A D C E F E G D@2 A D C E F E G D A D C E F E G D@2 A D C E F E G D@2 ~@16 A D C E F E G D A D C E F E
  G D@2 ~@16 A D C E F E G D A D C E F E G D G D G D H I ~@4
>`.pickRestart({
  A: "[d2,d3,a3] ~@3 [d2,a2,a3] ~ [d2,a2,a3] ~ [d2,d3,a3] ~@3 [d2,a2,a3] ~ [d2,a2,a3] ~ [d2,d3,a3] ~@3 [d2,a2,a3] ~@3, d1 ~@11", // D5
  B: "[d2,d3,a3] ~@3 [d2,a2,a3] ~ [d2,a2,a3] ~ [d2,d3,a3] ~@3 [d2,a2,a3] ~ [d2,a2,a3] ~ [d2,d3,a3] ~@3 [d2,a2,a3] ~@3", // D5
  C: "[d1,d2,d3,a3] ~@3 [d2,a2,a3] ~ [d2,a2,a3] ~ [d2,d3,a3] ~@3 [d2,a2,a3] ~ [d2,a2,a3] ~ [d2,d3,a3] ~@3 [d2,a2,a3] ~@3", // D5
  D: "[a1,a2,e3] ~@3 [a1,e2,e3] ~ [a1,e2,e3] ~ [a1,a2,e3] ~@3 [a1,e2,e3] ~ [a1,e2,e3] ~ [a1,a2,e3] ~@3 [a1,e2,e3] ~@3", // A5
  E: "[c2,c3,g3] ~@3 [c2,g2,g3] ~ [c2,g2,g3] ~ [c2,c3,g3] ~@3 [c2,g2,g3] ~ [c2,g2,g3] ~ [c2,c3,g3] ~@3 [c2,g2,g3] ~@3", // C5
  F: "[f2,f3,a3] ~@3 [f2,c3,a3] ~ [f2,c3,a3] ~ [f2,f3,a3] ~@3 [f2,c3,a3] ~ [f2,c3,a3] ~ [f2,f3,a3] ~@3 [f2,c3,a3] ~@3, f1 ~@11", // F
  G: "[a#0,a#1,a#2,f3] ~@3 [a#1,f2,f3] ~ [a#1,f2,f3] ~ [a#1,a#2,f3] ~@3 [a#1,f2,f3] ~ [a#1,f2,f3] ~ [a#1,a#2,f3] ~@3 [a#1,f2,f3] ~@3", // A#5
  H: "[d2,a2] ~@3 [d2,a2] ~@3 [d2,a2] ~@3 [d2,a2] ~ [d2,a2] ~ [d2,a2] ~@3 [d2,a2] ~@3", // D5
  I: "[d2,a2] ~@3 [d2,a2] ~@3 [d2,a2] ~@3 [d2,a2] ~@3 [d2,a2] ~@7", // D5
})).s("gm_string_ensemble_1").gain(0.35).pan(0.7)

// bass · lead 8 bass lead · "BASS&LEAD"
const bass_2 = note(`<
  ~@16 A ~ A ~ B ~ B C A ~ A ~ B ~ B C A ~@2 A ~ B ~ B C D@2 E F G H I J K L E F G H I J K L ~ A ~ B ~ B C ~@2 A ~ B ~ B
  C M@2 E F G H I J K L E F G H I J K L ~ A ~ B ~ B C ~@2 A ~ B ~ B C A C A C A N O P ~@3
>`.pickRestart({
  A: "~@4 a2 ~ e3 ~ a3 ~@15", B: "~@4 c3 ~ g3 ~ c4 ~@15", C: "~@4 a#2 ~ f3 ~ a#3 ~@15",
  D: "[~@12 a4@11 ~, a3@23 ~, ~@16 e4@29 ~@3]/2", E: "d1@7 ~@5", F: "g1@13 ~@11", G: "d1@11 ~@13", H: "g1@11 ~@13",
  I: "d1@13 ~@11", J: "g1 ~@2", K: "d1@5 ~@7", L: "a1@7 ~@5", M: "[~@24 a4@23 ~, a2@47 ~, ~@8 a3@39 ~]/2", N: "d2 ~@23",
  O: "f#3 ~@7 a3 ~@15", P: "f#4@3 ~@5",
})).s("gm_lead_8_bass_lead").gain(0.23).pan(1)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@43 A@7 B A@7 C ~@17 A@7 B A@7 C ~@20 D E D ~@3>".pickRestart({
  A: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  B: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", C: "a2 ~ a2 ~ a2 ~ a2 ~@17", D: "d2 ~@23",
  E: "~@16 d2 ~@3 d2 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.11).pan(1)

// other · lead 2 sawtooth · "SAW WAVE" · soft notes
const lead_2_sawtooth_soft = note("<~@58 A ~@32 A ~@20 B C B D ~@2>".pickRestart({
  A: "~@8 a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", B: "~@4 d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@3",
  C: "d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@11", D: "d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.04).pan(1)

// other · french horn · "FR.HORN"
const french_horn = note("<~@50 A B@2 C@2 D E F G ~@24 A H@2 I@2 D E F G ~@26>".pickRestart({
  A: "e3 f#3 g3", B: "[a3@22 ~ b3@8 a3@8 g3@8 ~]/2", C: "[a3@22 ~ b3@8 ~ a3@7 ~ g3@7 ~]/2", D: "a3@23 ~",
  E: "b3@8 c#4@7 ~ d4@8", F: "f#3@23 ~", G: "e3@11 ~", H: "[a3@22 ~ b3@12 ~ a3@3 g3@8 ~]/2",
  I: "[a3@22 ~ b3@13 a3@3 ~ g3@7 ~]/2",
})).s("gm_french_horn").gain(0.6).pan(0.7)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  A B A C A B A C A D A E F G H I@2 A D A E F G H I A D A E F G H I@2 A D A E F G H I@2 ~@16 A D A E F G H I A D A E F G
  H I@2 ~@16 A D A E F G H I A D A E F G H I H I J I K L ~@4
>`.pickRestart({
  A: "[d1,d4,a4,d5] ~@7 [d4,a4,d5] ~@7 [d4,a4,d5] ~@3 [d4,a4,d5] ~@3", // D5
  B: "[d4,a4,d5] ~@7 [d4,a4,d5] ~@7 [d4,a4,d5] ~@3 a4 ~@3", // D5
  C: "[d4,a4,d5] ~@7 [d4,a4,d5] ~@7 [d4,a4,d5] ~@3 [d4,a4,d5] ~@3", // D5
  D: "[e4,a4,e5] ~@7 [e4,a4,e5] ~@7 [e4,a4,e5] ~@3 a4 ~@3", // A5
  E: "[g4,c5,e5] ~@7 [g4,c5,e5] ~@7 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3", // C
  F: "[d1,f4,c5,f5] ~@7 [f4,a4,c5] ~@7 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // Dm7 F
  G: "[g4,c5,e5] ~@7 [e4,g4,c5] ~@7 [g4,c5,e5] ~@3 c5 ~@3", // C
  H: "[d1,f4,a#4] d5 ~@6 [d4,f4] a#4 ~@6 [f4,a#4] d5 ~@2 a#4 ~@3", // A# Dm A#5
  I: "[e4,a4,e5] ~@7 [e4,a4,e5] ~@7 [e4,a4,e5] ~@3 [e4,a4,e5] ~@3", J: "~@8 [d4,f4,a#4] ~@7 [f4,a#4,d5] ~@3 a#4 ~@3",
  K: "[d4,a4] ~@3 [d4,a4] ~@3 [d4,a4] ~@7 [d4,a4] ~@7", L: "a4 ~@23",
})).s("gm_pizzicato_strings").gain(0.17).pan(0.2)

// chords · pizzicato strings · "PIZZICATO" · soft notes
const pizzicato_strings_soft = note(`<
  A B A@3 B A@3 C A D E F G H@2 A C A D E F G H A C A D E F G H@2 A C A D E F G H@2 ~@16 A C A D E F G H A C A D E F G
// … 101 more lines

More by Vangelis