Strudelify
L'uomo Dell'armonica cover art

1970 · C’era una volta il West

L'uomo Dell'armonica

Ennio Morricone

KeyD majorTempo116 bpm
0:00/0:00
// L'uomo Dell'armonica — Morricone Ennio
// 116 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note("<~@31 A@3 ~@12 B@2 C@5 D@6 E@2 F ~ G@6 H@3 I@2 J@2 K@4 L@2 M@2 N@6>".pickRestart({
  A: "[~@16 d2@35 ~@21]/3", B: "[~@8 b1@4 b1@3 ~ a#1@11 ~ a#1@3 ~ a#1@12 a#1@4]/2", C: "[~ a1@30 g1@33 a1@38 ~@18]/5",
  D: "[~@8 d2@23 ~ c#2@24 b1@24 a1@24 g1@38 ~@2]/6", E: "[~@4 d2@11 ~@9]/2", F: "b1@23 ~",
  G: "[f#1@40 g1@16 a1@23 ~ d2@32 g1@16 a1@16]/6", H: "[~@8 d2@27 ~@6 a#1@31]/3", I: "[d#2@14 ~@2 d2@15 c2@16 ~]/2",
  J: "[a#1@15 ~ g#1@31 ~]/2", K: "[d2@29 ~@3 c2@27 ~ c2@3 ~ g1@32]/4", L: "[g#1@16 a#1@16 d#2@15 ~]/2",
  M: "[~@17 g#2@15 a#1@16]/2", N: "[d#2@8 g#2@11 d#2@12 ~@5]/6",
})).s("gm_acoustic_bass").gain(0.37).pan(0.7)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@24 A@3 ~@4 B@5 C@4 D@4 E@4 F@5 G@8 H@2 I@2 J@3 K@2 ~ L M N@3 O P@6 Q R@5 ~
>`.pickRestart({
  A: "[~ g2@71, [g3,b3]]/3", B: "[~ [a3,d4]@10 [b3,d4]@2 [a3,c4]@2]/5",
  C: "[~@8 b4@13 a4@5 ~ g4@5 f#4@19 ~@21 d4@24, [b3,d4]@31 ~ [a3,c#4]@32 b3@32, ~@13 e4@5 ~@6]/4", // Bm A
  D: "[[a3,c#4]@32 [b3,d4]@24 [c#4,e4]@8 [a3,c#4,f#4]@31 ~]/4", // A Bm C#m F#m
  E: "[g#3@2 g3@2 [a#3,d4,g4] [g#3,a#3,g#4], [b3,d4,f#4]@2 ~]/4", // Gm G#sus2 Bm
  F: "[~@16 d6@10 a5@3 ~@11 g5@16 ~@16 e5@18 e5@18 ~@12, [a2,f#3,a3]@15 a5@5 ~@8 f#5@8 ~@24, ~ d4@30 b3@34 ~@55, ~@16 g2@17 ~@27, ~@32 g3@31 ~@2 [a2,c#4]@35 ~@20]/5", // D A
  G: "[~@9 f#5@31 g5@5 f#5@7 e5@4 d5@38 ~@9 b5@13 g6@27 f#6@5 e6@4 f#6@28 ~ e6@11, ~@47 d5@9 ~@40]/8",
  H: "[e6@12 d6@19 c#6@6 d6@5 b5@5 ~]/2", I: "[a5@29 ~@2 a5@9 b5@8]/2", J: "[g6@10 e6@18 d6@4 f#6@24 a5@7 ~ b5@8]/3",
  K: "[g6@2 e6@5 d6 d6@4]/2", L: "~@8 a#4@15 ~", M: "g5@5 g#5", N: "[g5@4 f5@3 d#5@24 ~ d#5@7 c6@8 g#6@17 g6@4 f6@4]/3",
  O: "g6@23 ~",
  P: "[f6@7 f6@8 d#6@13 d6@4 d#6@4 c6@4 a#5@22 ~ a#5@7 c6@9 ~ g#6@7 f6@13 d#6@4 g6@23 ~@4 [a#4,a#5]@5 [c5,c6]@8]/6", // A# C
  Q: "~ g#5@6 f6@12 ~ d#5@4, g#6@8 ~@11 d#6@4 ~", R: "[[d#5,d#6]@29 ~]/5",
})).s("gm_string_ensemble_2").gain(0.33).pan(0.8)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@19 A@5 ~@26 B@3 ~@30 C ~@6>".pickRestart({
  A: "[~@6 f#3@11 ~@11 c#4@2, [d2,d3], ~@3 [f#3,a3]@2]/5", B: "[~@17 a3@36 ~@19]/3", C: "~@2 f5@3 ~",
})).s("gm_string_ensemble_2").gain(0.23).pan(0.8)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note("<~@32 A@2 B@2 C@4 D@4 E@4 F@5 G@8 H@8 I@3 J@8 K@6 ~@4>".pickRestart({
  A: "[d3@47 ~]/2", B: "[c#3 b2 a2]/2", C: "[g2 d2 b2]/4", D: "[f#2@31 ~ g2@32 c#3@31 ~]/4",
  E: "[b2@31 ~ b2@30 ~ a#2@15 ~@15 g#5@3, ~@79 a#2@17, ~@23 g#4]/4",
  F: "[~ a5@14 [f#5,f#6]@11 [c#5,c#6]@4 ~@10 [b4,b5]@16 ~@16 [g4,g5]@16 [g4,g5]@28 ~@4, a4@15 ~@15 [c#5,c#6]@9 ~@17 [a4,a5]@16 ~@48, ~ a2@29 ~ g2@33 a2@39 ~@17]/5", // F# C# B G C# A
  G: "[~ d3@3 c#3@3 [b2,f#3,b3]@3 [a2,f#3,c4]@3 [g2,g3,b3]@6 [d3,f#3,c#4]@5, ~ [f#3,a3]@6 ~@17]/8", // B5 F#dim G Dmaj7 F#m
  H: "[~@2 b3@4 [f#1,a3,c#4]@5 [d3,g3,b3]@2 ~ a1@2 ~@2 c4@2 [d3,g3,b3]@2 [e3,a3,c#4]@2, f#3@11 ~@2 a3@7 ~@4, [b1,d3]@6 ~@5 g1@3 ~@2 [d2,f#3]@4 ~@4, ~@13 c#4@5 ~@6, ~@13 e3@3 ~@8]/8", // F#m G A Bm D
  I: "[~ [d3,f#3,a3]@4 [d3,f3,g#3,a#3]@4]/3", // D A#7
  J: "[d#3 d3 c4 [a#3,c#4] [g#3,c4]@2 a#3@2 [d#3,c4]@2 [g3,a#3,d4]@2, a#3 d#3@3 ~@2]/8", // A#m G# Cm Gm
  K: "[[d#3,g#3,c4] [f3,a#3,d4] d4 c#4 [g#3,c4] [f3,d4] ~@3, ~@2 d#3@3 ~@4, ~@2 [g3,a#3]@2 ~ a#3@3 ~]/6", // G# A# G# Dm Gm
})).s("gm_string_ensemble_2").gain(0.32)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft_2 = note("<~@42 A@2 ~@28 B@3 ~ C@3 ~@5 D@2 ~@4>".pickRestart({
  A: "[~@16 d2@31 ~]/2", B: "[g3@8 ~]/3", C: "[g3@4 g3@4 ~]/3", D: "[[d#3,g3]@2 ~]/2",
})).s("gm_string_ensemble_2").gain(0.19)

// other · french horn · "FR.HORN"
const french_horn = note(`<
  ~@19 A B C@2 ~@21 D E F@2 G@3 H ~@12 I J@3 ~@2 K L@2 M N O P@6 Q ~@2 R@2 S@2 ~
>`.pickRestart({
  A: "f#4@5 ~@3", B: "~@15 d4@8 ~", C: "[~@23 e4@16 d4@7 ~@2]/2", D: "f#4 b4!2 f#4!2 ~", E: "~ d4 f#4 c#5!2 b4",
  F: "[f#4@10 ~@2 f#4@3 g4@4 d5@3 ~ d5@4 g4@4 g#4@5 d5@4 d5@4 g#4@4]/2",
  G: "[~@2 a4@24 a4@4 ~ a4@4 ~@5 g4@12 f#4@8 f#4@12, ~ [a3,d4,f#4]@15 ~@20]/3", H: "~ e4@7 ~@4", I: "~@8 a3@7 ~ b3@8",
  J: "[g4@8 ~ e4@19 d4@4 f#4@34 ~@6]/3", K: "~ a3 a#3", L: "[a#4@7 f4@9 g4@32]/2", M: "a#3@8 g4@11 ~ f4@4",
  N: "g#4 g4 f4", O: "~ d#4@15 ~ d#4@7", P: "[d4@11 ~ c4@3 a#3@14 ~@3 d#4@32 d4@23 ~ d4@7 d#4@16 ~ f4@16 d4@8 d4@8]/6",
  Q: "c#4 ~@2", R: "[a#3@8 c4@8 g#4@7 d#4@16 f4@9]/2", S: "[~@2 g4@45 ~]/2",
})).s("gm_french_horn").gain(0.19).pan(0.4)

// other · french horn · "FR.HORN" · soft notes
const french_horn_soft = note("<~@19 A@3 ~ B@8 C@3 ~@17 D@2 ~@14 E ~@14 F ~@7>".pickRestart({
  A: "[~@15 e4@8 e4@15 ~@9 d4@16 c#4@8 ~]/3",
  B: "[d4@15 c#4@8 b3@43 ~@5 b4@15 ~ a4@6 ~ a4@17 g4@5 ~@2 g4@16 ~ f#4@7 a4@17 g4@6 ~@2 g4@21 f#4@4]/8",
  C: "[~@7 f#4@23 ~@6]/3", D: "[~@17 e4@31]/2", E: "~ c4@15 ~@8", F: "~@4 c#4@3 ~@5",
})).s("gm_french_horn").gain(0.1).pan(0.4)

// chords · trumpet
const trumpet = note("<~@44 A@7 ~@39>".pickRestart({
  A: "[[b2,d3,f#3]@31 ~@29 f#4@3 ~ g4@4 d5@3 ~ d5@4 g4@4 g#4@4 d5@4 d5@5 ~ g#4@4 [f#3,a3]@29 [g3,b3]@33 ~@8, ~@16 [b2,d3,g3]@16 [a#2,d3,g3]@7 ~ [a#2,g#3]@9 d4@31 ~@4]/7", // Bm F#m G Gm A#7
})).s("gm_trumpet").gain(0.37)

// other · pad warm · "WARM PAD"
const pad_warm = note("<~@8 A@4 B@4 C@2 D@8 E@8 F@6 G@4 H@4 I@6 ~@18 J@4 K@5 L@8 ~>".pickRestart({
  A: "[~@23 g2@73]/4", B: "a2/4", C: "d2/2", D: "[~@22 d2@121 g2@49]/8", E: "[~@23 a2@113 d2@40 d2@16]/8",
  F: "[c#2@16 b1@15 a1@16 g1@33 d2@32 b1@32]/6", G: "[f#1@31 g1@32 ~ d2@31 ~]/4",
  H: "[d4@32 d4@32 ~ [a#1,a#2]@14 ~ a#2@16, ~@79 a#1@17]/4", I: "[~ [a1,a2]@15 [g1,g2]@15 ~ [a1,a2]@32 ~@8]/6",
  J: "[~ d#2@14 d2@17 c2@15 a#1@16 g#1@33]/4", K: "[d#2@31 c2@32 ~ g1@31 g#1@16 a#1@9]/5",
  L: "[~@7 d#2@35 g#1@14 a#1@15 d#2@32 ~ g#1@44 d#2@36 ~@8]/8",
})).s("gm_pad_warm").gain(0.21)

// chords · harpsichord · "HARPSICHRD"
const harpsichord = note(`<
  ~@4 A B C B C D@2 E F G H I J@2 ~ A B C B C K@4 L@6 ~@14 M@2 N@3 O P Q R S T U V W X@2 Y Z AA AB AC AD ~@20
>`.pickRestart({
  A: "f#5@15 ~ [c#5,e5]@7 ~, d5 ~", B: "[c#5,e5]@15 ~ [b4,d5]@7 ~", C: "[b4,d5]@2 [a4,c#5]",
  D: "[~@2 [g4,b4]@41 ~@5]/2", E: "[g5,b5]@16 [f#5,a5]@7 ~", F: "[f#5,a5]@16 [e5,g5]@7 ~",
  G: "g5@16 [d5,f#5]@7 ~, e5 ~", H: "[f#5,a5]@8 [e5,g5]@3 ~", I: "[e5,g5]@8 [d5,f#5]@3 ~", J: "[~@4 [d5,f#5]@41 ~@3]/2",
  K: "[[g4,b4]@41 ~@6 [g5,b5]@16 [f#5,a5]@7 ~ [f#5,a5]@16 [e5,g5]@7 ~ [e5,g5]]/4", // G F#m Em
  L: "[~@15 [d5,f#5]@7 ~ [f#5,a5]@16 [e5,g5]@6 ~@2 [e5,g5]@16 ~@5 [d5,f#5]@18 [d5,f#5]@41 ~@17]/6", // D F#m Em D
  M: "[~@4 [d5,f#5]@3 [b4,d5] [b4,d5]@2 [a4,c#5]@2]/2", // D Bm A
  N: "[[a4,c#5]@8 [g4,b4]@6 [g4,b4]@15 [f#4,a4]@15 [f#4,a4]@15 ~@13]/3", O: "~@8 a3@4 d4@4 f#4@3 ~ d4@4",
  P: "f#4@4 d4@4 f#4@3 ~ d4@3 ~ a3@4 d4@4", Q: "f#4 d4 b3 d4 f#4 d4", R: "f#4@4 d4@4 b3@3 ~ c4@4 f#4@4 c4@4",
  S: "f#4 c4 g4 d4 b3 d4", T: "g4@4 d4@4 g4@4 d4@4 g4@3 ~ d4@4", U: "g4 d4 f#4 d4 a3 d4", V: "a3 d4 f#4 d4 f#4 d4",
  W: "b3 d4 f#4 d4 f#4 d4",
  X: "[f#4@4 d4@4 f#4@4 d4@3 ~ f#4@3 ~ d4@3 ~ a4@4 f#4@4 c#4@4 f#4@4 a4@4 f#4@4, ~@23 c#4@3 ~@22]/2",
  Y: "c#4 f#4 c#4 f#4 g4 d4", Z: "b3 d4 a4 e4 a4 e4", AA: "a4@4 e4@4 a3@3 ~ c#4@4 f#4@4 c#4@4",
  AB: "c4 f#4 c4 f#4 d4 g4", AC: "d4 b3 a4 e4 a4 e4", AD: "a4@4 e4@3 ~@17",
})).s("gm_harpsichord").gain(0.06).pan(0.7)

// chords · french horn · "FR.HORN"
const french_horn_2 = note("<~@19 A@5 B@3 C@4 ~@13 D@4 ~@5 E@8 F@2 G@6 H@4 ~@14 I@2 ~>".pickRestart({
  A: "[~@9 a3@5 c#4, [d2,d3], ~@24 f#3@35 ~]/5", B: "[g2,g3,b3]/3", C: "[a2@37 ~@11]/4",
  D: "[[g#3,d4]@2 [g3,b3,f#4]@2 [g3,a#3,g4] [g#3,a#3,g#4]]/4", // G#dim Gmaj7 Gm G#sus2
  E: "[~ a3@6 b3@3 [a3,c4]@3 [g3,b3]@6 [f#3,a3]@5, ~@8 f#3@45 ~@3 f#3@47 ~@89]/8", F: "[b3@23 ~, f#3@5 ~]/2",
  G: "[[a3,c#4]@40 [g3,b3]@16 [a3,c#4]@23 ~ c#4@16 c4@15 ~ [g3,b3]@16 ~ [a3,c#4]@15, ~@80 a3@31 ~@33]/6", // A G A G A
  H: "[~@4 a3@11 ~ a3@4 a#3@4 a#4@4 f4@8 g4@4 ~@8, ~ d4@4 d4@6 ~]/4", I: "[~@3 a#3@44 ~]/2",
})).s("gm_french_horn").gain(0).pan(0.1)

// chords · vibraphone
const vibraphone = note("<~@4 A B C B D E@2 F G H I J@3 ~ A B C B D K@2 L M@2 N O@4 ~@18 P@2 ~@36>".pickRestart({
  A: "[d5,f#5]@16 [c#5,e5]@7 ~", B: "[c#5,e5]@15 ~ [b4,d5]@7 ~", C: "d5@2 [a4,c#5], b4@13 ~@11",
  D: "[b4,d5]@2 c#5, ~@4 a4 ~", E: "[~@4 b4@39 ~@5, ~@3 g4@40 ~@5]/2", F: "[g5,b5]@15 ~ [f#5,a5]@7 ~",
  G: "[f#5,a5]@15 ~ [e5,g5]@7 ~", H: "[e5,g5]@2 [d5,f#5]", I: "[f#5,a5]@16 [e5,g5]@7 ~",
  J: "[[e5,g5]@16 [d5,f#5]@11 ~ [d5,f#5]@43 ~]/3", K: "[[g4,b4]@5 ~]/2", L: "[g5,b5]@15 [f#5,a5]@7 ~@2",
  M: "[[f#5,a5]@15 [e5,g5]@7 ~@2 g5@16 [d5,f#5]@8, ~@23 e5@14 ~@11]/2", N: "[f#5,a5]@15 [e5,g5]@7 ~@2",
  O: "[[e5,g5]@18 ~@2 [d5,f#5]@18 [d5,f#5]@43 ~@15]/4", P: "[~@22 f#5@9 ~ f#5@9 ~@7]/2",
})).s("gm_vibraphone").gain(0.05).pan(0.7)

// other · synth brass 2 · "SYNBRASS 2"
const synth_brass_2 = note("<~@44 A@2 B@2 C ~@41>".pickRestart({
  A: "[f#4@4 b4@3 b4@4 f#4@4 ~ f#4@12 d4@4 f#4@4 c#5@4 c#5@3 b4@4 ~]/2",
  B: "[f#4@12 f#4@4 g4@4 d5@3 d5@4 ~ g4@4 g#4@4 d5@4 d5@4 g#4@4]/2", C: "~ a4@18 ~@5",
})).s("gm_synth_brass_2").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@47 [~@8 x!2 ~ x!13] x ~@41>").gain(0.37)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@47 [~@5 x ~@6] ~@42>").gain(0.21)

// drums · splash
const splash = s("cr").struct("<~@48 [~ x ~@22] ~@41>").gain(0.26)

stack(
  bass, string_ensemble_2, string_ensemble_2_soft, string_ensemble_2_2, string_ensemble_2_soft_2, french_horn,
  french_horn_soft, trumpet, pad_warm, harpsichord, french_horn_2, vibraphone, synth_brass_2, low_tom, low_tom_soft,
  splash
)

More by Ennio Morricone