Strudelify

Tosca: "E lucevan le stelle..."

Andrea Bocelli

KeyB minorTempo120 bpm
0:00/0:00
// Tosca: "E lucevan le stelle..." — Andrea Bocelli
// 120 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 5 "Cordas" viola (copy of ch 2 "Orquestra" string ensemble 1)
// note: Full arrangement: all 90 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · tenor sax · "Cavaradossi"
const tenor_sax = note(`<
  ~@12 A B ~@4 C@2 D@3 E ~ F@2 G ~@2 H@3 ~@4 I J K ~@2 L M@3 N@8 ~ O@2 P@6 Q@2 R@5 S@6 T@5 ~@9
>`.pickRestart({
  A: "~@4 f#3@3 ~@9", B: "~@8 f#3@11 ~@13", C: "[~@31 b3@5 b3@4 ~@24]/2",
  D: "[~@14 b3@10 ~ b3@13 b3@10 ~@2 b3@10 ~@2 b3@14 c#4@20]/3", E: "~ c#4@5 ~@2",
  F: "[~@14 b3@12 ~@3 b3@9 ~@11 b3@5 ~@2 b3@5 ~@3]/2", G: "~@10 b3@5 ~@17",
  H: "[~@25 g3@10 ~@5 g3@8 ~@2 g3@6 ~@2 g3@3 g3@6 g3@12 ~@17]/3", I: "~@27 f#3@5", J: "~@2 f#3@5 ~@3 f#3@18 ~@4",
  K: "~ f#3@5 ~ f#3@4 ~@2 f#3@15 ~@4", L: "~@17 c#4@15", M: "[d4@16 e4@19 f#4@27 e4@4 d4@5 c#4@21 ~@4]/3",
  N: "[~@23 b3@21 ~@3 b3@12 c#4@10 d4@14 g3@24 ~@2 g3@13 ~@2 g3@9 ~@2 a3@4 b3@5 c#4@4 d4@5 e4@10 f#4@11 g4@12 a4@9 ~ g4@2 a4@2 g4@21 e4@6 f#4@29]/8",
  O: "[~@26 f#3@15 c#4@11 d4@12]/2",
  P: "[~@2 e4@5 f#4@5 e4@5 d4@4 ~ c#4 ~ c#4@19 ~ f#3@4 b3@11 ~@3 b3@18 ~@2 b3@12 c#4@11 d4@11 g4@24 ~ g4@41 ~@10, ~@23 d4@2 ~@167]/6",
  Q: "[~@4 g4@10 ~ g4@11 ~@2 g4@11 e4@17 ~@2 c#4@6]/2",
  R: "[~@2 f#4@23 ~@2 f#4@51 ~@16 e4@14 e4@11 ~ e4@12 c#4@20 a#3@8]/5",
  S: "[~ d4@28 ~@2 d4@44 ~@20 a3@14 e4@14 f4@16 g4@16 a4@28 g4@4 ~@2 e4@3, ~@187 f4@4 ~]/6",
  T: "[~ a3@3 d4@7 ~@5 d4@22 ~@9 c#4@14 ~ c#4@25 f#3@5 b3@26 ~@2 b3@34 ~@6]/5",
})).s("gm_tenor_sax").gain(0.43).pan(0.4)

// other · tenor sax · "Cavaradossi" · soft notes
const tenor_sax_soft = note("<~@12 A B@2 ~@3 C D ~@6 E F G ~@3 H ~@6 I@2 ~ J ~@3 K ~@7 L@2 ~@34>".pickRestart({
  A: "~@2 f#3@5 ~@9 f#3@10 ~@2 f#3@4", B: "[~@2 f#3@4 ~@15 f#3@22 ~@21]/2", C: "~@2 b3@8 ~@2 b3@6 ~@2 b3@9 ~@3",
  D: "~@10 b3@9 ~@3 b3@10", E: "~@5 b3@3 ~@8", F: "b3@3 ~@7 b3@6", G: "~@5 b3@15 ~@12", H: "~@4 g3@3 ~",
  I: "[~@31 f#3@25 ~@8]/2", J: "~ f#3@8 ~@7", K: "f#3@2 b3@3 ~@3", L: "[~@2 f#4@41 ~@21]/2",
})).s("gm_tenor_sax").gain(0.21).pan(0.4)

// chords · string ensemble 1 · "Orquestra"
const string_ensemble_1 = note(`<
  ~@3 A@8 B@3 C@3 D@5 E@7 F@6 ~ G@7 H ~ I J@6 ~ K@5 L@7 M@5 N@5 ~ O@6 P@7 ~
>`.pickRestart({
  A: "[~@41 [f#3,b3,d4]@63 ~@17 g3@64 ~@5 [b3,c#4]@26 b3@40, ~@11 b1@32 ~@17 [b3,d4]@32 ~@36, ~@3 b2@8 ~@2 b2@8 ~@11]/8", // Bm Bsus2 Bm
  B: "[~@25 b3@34 b3@25 ~@12]/3", C: "[~@5 f#3@43]/3",
  D: "[~@37 d4@23 [f#3,b3,d4]@22 ~ f#3@11 ~@18 [b3,d4]@25 [b3,d4]@22 [b3,d4], ~@8 b2@32 ~@7 b1@32 ~, ~@36 [f#3,b3]@23 ~@23 b3@12 ~ b2@64 ~]/5", // Bm B5
  E: "[~@26 [a3,c#4]@25 [a3,c#4]@27 [a3,c#4]@15 ~@20 b3@25 ~@26 [g3,b3,d4]@15 ~@16 [g3,b3]@25 ~ g3@3, ~@11 a1@64 ~@18 g1@58 c#4@28 ~@45, ~@12 a2@64 ~@19 g2@64 ~@20 c#2@45, ~@56 g3@13 b3@13 ~@28 b3@2, ~@139 g3@25 ~@60]/7", // A G
  F: "[~@26 [f#3,a#3]@15 ~@18 [g3,a#3,d4]@26 [a#3,d4]@22 [g3,a#3]@12 ~@3 a3@15 a3@31 ~@24, ~@9 f#1@32 e1@64 ~@17 [a1,a2]@46 ~@24, ~@10 f#2@33 e2@64 ~@85]/6", // F# Gm A# Gm A
  G: "[~@8 a3@4 d4@11 d4@13 ~@19 [f#3,a#3]@56 ~@16 d4@20 f#3@23 b3@42 ~@12, ~@9 f#1@16 ~@3 b1@16 ~@12, ~@38 f#2@64 ~@9 d4@15 b3@21 ~@77]/7", // F#
  H: "d4@17 ~@15", I: "~@3 d4@8 ~@21",
  J: "[~@22 [f#3,b3]@24 ~@25 d4@13 ~@15 g3@24 ~@36 b3@2 c#4@3 ~@28, ~@6 b1@41 f#3@37 b1@56 b3@7 d4@15 ~@30, ~@7 b2@51 c#4@26 ~@15 b3@25 g3@28 ~@40, ~@22 d4@49 ~@28 d4@35 a3@18 ~@40, ~@46 b3@38 ~ b2@59 c#4@8 ~@40]/6", // B5
  K: "[~@20 [f#3,b3,d4]@26 [f#3,b3]@24 ~@34 c#4@12 d4@15 ~@14 d4@5 c#4@10, ~ b1@16 ~@23, ~@5 b2@64 ~@22 f#3@69]/5", // Bm B5
  L: "[~@31 [f#3,b3]@19 ~@23 d4@11 ~@13 [b3,d4]@22 [b3,d4]@19 ~ [b3,d4]@11 ~@14 [a3,c#4]@25 [a3,c#4]@23 [a3,c#4]@12, ~@15 b1@47 c#4@22 ~@140, ~@8 b2@32 ~@2 [b1,b2]@32 ~ a1@32 ~@5, ~@30 d4@20 f#3@33 ~@68 a2@64 ~@9, ~@50 d4 b3@33 ~@140]/7", // B5 Bm A B
  M: "[~@15 [g3,b3]@30 ~@23 [g3,b3]@11 ~@17 b3@24 [g3,b3]@10 ~@16 [f#3,a#3]@14, g1@64 ~@16 [c#1,c#2]@51 ~ f#2@28, ~ g2@64 ~@2 d4@11 ~@82, ~@45 [g3,b3]@23 ~@27 g3@25 ~@10 f#1@30, ~@57 c#4@22 ~@81]/5", // G F# C# G
  N: "[~@18 [g3,a#3,d4]@25 [g3,a#3,d4]@23 ~ d4@13 ~@16 a3@43 ~@21, ~ e1@64 ~ [g3,a#3]@13 ~@2 a3@15 ~@64, ~@3 e2@64 ~@15 [a1,a2]@58 ~@20]/5", // Gm A
  O: "[~ a3@4 d4@11 ~@31 [e3,f#3,a#3,c#4]@45 [b1,f#2,b2]@28 ~@37 f#3@7 ~@20 e3@8, ~@4 d4@8 ~@11 [d3,f#3,b3]@16 ~@9, ~@29 [f#1,f#2]@63 ~@28 f#2@44 [e2,b2,g3,c#4]@28]/6", // F#7 B5 Bm F# C#m7b5
  P: "[~ b3@27 [d3,f#3,b3]@21 ~@30 f#3@7 ~ [e2,c#4]@43 ~ b4@9 ~@8 [b3,d4]@22 [b3,d4]@36 ~@18, b1@31 ~@81, ~ f#2@61 f#2@26 ~@136, ~@49 b3@38 ~@43 b3@18 ~@76, ~@49 f#3@29 ~ f#4@2 ~@5 g4@15 ~@123]/7", // Bm C#m Bm
})).s("gm_string_ensemble_1").gain(0.2).pan(0.7)

// chords · string ensemble 1 · "Orquestra" · soft notes
const string_ensemble_1_soft = note("<~@6 A@3 B@7 ~ C@3 ~@11 D@2 ~@6 E@6 F@2 ~@7 G@3 ~@22 H@3 I@8>".pickRestart({
  A: "[~@7 b1@64 ~@25]/3",
  B: "[~@24 c#4@47 ~@18 [f#3,d4]@34 [f#3,d4]@25 [b3,d4]@64 ~@12, ~@71 b1@64 ~@89, ~@36 b2@32 ~@6 f#3@11 ~@27]/7", // D Bm
  C: "[~@15 b1@64 ~@4 d4@12 ~]/3", D: "[~@21 g3@22 d4@12 ~@9]/2",
  E: "[~@30 f#3@21 [b3,d4]@23 f#3@24 ~@17 c#4@14 ~@63, ~@37 d4@21 ~@38, ~@49 f#3@32 ~@15]/6", F: "[~@11 c#4@27 ~@26]/2",
  G: "[~@7 d4@12 [b3,d4]@23 ~@6, ~@38 f#3@21 ~@37]/3", H: "[~@6 [b1,b2]@11 ~@7]/3",
  I: "[~@62 [b1,b2]@25 ~@29 e3@15 ~@17 f#3@22 f#3@36 [f#3,b3,d4]@44 ~@6, ~ b2@61 ~@25 [b2,g3]@45 b1@114 ~@10, ~@50 d3@38 ~@28 e4@3 ~@12 [f#2,b2]@114 ~@11]/8", // B Bm Em B5
})).s("gm_string_ensemble_1").gain(0.08).pan(0.7)

stack(tenor_sax, tenor_sax_soft, string_ensemble_1, string_ensemble_1_soft)

More by Andrea Bocelli