Strudelify
L'eredita cover art

1996 · Quando Ci Sarai

L'eredita

Nomadi

KeyF majorTempo118 bpm
0:00/0:00
// L'eredita — Nomadi
// 118 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 153 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(118/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  A B C D E F C G H I J K F L M N A B O P Q F R S T U V W E F R X Q Y F Z AA AB F AC AD AE AF K AA AG AH AI A B C D E F
  C G H I J K F L M N A B O P Q F R S A B O P Q F R S T U V W E F R X Q Y F Z AA AB F AC AD AE AF K AA AG AH AI A B C D
  E F C G H AJ AK AL AM L M N Q Y F Z AA AB F AC AD AE AF K AA AG AH AI Q Y F Z AA AB F AC AD AE AF K AA AG AH AN@2
>`.pickRestart({
  A: "f2@3 f2 c2@2 f2@2", B: "bb1@6 f2@2 f2@2 bb2@5 ~", C: "f2@3 f2 f2@2 bb2@2", D: "f2@6 c2@2 c2@2 f2@2 e2@3 ~",
  E: "d2@3 d2 a1@2 d2@2", F: "bb1@6 bb1@2 a1@4 bb1@3 ~", G: "f2@6 c2@2 c2@2 f2@2 c2@3 ~", H: "g1@5 ~ g1 ~ g1@8",
  I: "d2@6 d2@2 a1@4 d2@3 ~", J: "c2@5 ~ c2 ~ c2@4 f2@4", K: "c2@5 ~ c2@2 g1@4 c2@3 ~", L: "c2@5 ~ c2 ~ c2@4 bb1@4",
  M: "f2@3 f2 f2@2 bb2 c3", N: "f2@3 c3@2 bb2@3", O: "f2@3 f2 f2@2 f2@2", P: "c2@6 c2 ~ c2@4 bb1@2 c2@2",
  Q: "d2@3 d2 a2@2 d2@2", R: "f2@3 f2 c2@2 g2@2", S: "f2@6 c3@2 c3@4 a2@3 ~", T: "f2@6 f2@2 c2@4 f2@3 ~",
  U: "bb1@6 f2@4 bb2@5 ~", V: "f2@5 ~ f2@5 ~ f2@4", W: "c2@5 ~ c2@2 c2@2 bb1@2 a1@3 ~",
  X: "f2@5 ~ f2 ~ f2@2 c2@2 f2@2 e2 ~", Y: "a1@6 e2@4 a2@2 g2@3 ~", Z: "f2@8 f2@5 ~ f2 ~", AA: "a1@3 a1 g1@2 a1@2",
  AB: "d2@3 d2 c2@2 d2@2", AC: "c2@5 ~ c2@3 ~ c2@2 g1@3 ~", AD: "f2@3 c2@2 f2 c2@2", AE: "bb1@5 ~ bb1@2 f1@4 bb1@3 ~",
  AF: "f1@5 ~ f1@2 f1@3 ~ f1@4", AG: "d2@5 ~ d2@2 a1@4 d2@2 c2@2", AH: "bb1@5 ~ bb1@2 c2@4 bb1@4",
  AI: "f2@7 ~ f2@3 ~ f2@4", AJ: "c2@3 c2 g1@4", AK: "d2@7 ~ c2@8", AL: "bb1@5 ~ bb1@2 bb1@4 a1@3 ~",
  AM: "f1@3 f1 c2@2 f1@2", AN: "[f2@7 ~]/2",
})).s("gm_electric_bass_finger").gain(0.49)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B A C D B A C E F G H I G J@2 ~@32 A B A C D B A C E F G H I G J@2 ~@16 K L K M N L O P ~@16 A B A C D B A C E Q R C
  A G J@2 ~@16 S T B U V D B H A W X H V D Y Z@2
>`.pickRestart({
  A: "[f3,f4]@4 [a3,a4]@4 [c4,c5]@3 ~ [c4,c5]@4", B: "[bb3,bb4] [f3,f4] [bb3,bb4] [d4,d5]", C: "[f3,f4]",
  D: "[f3,f4]@4 [a3,a4]@4 [d4,d5]@3 ~ [d4,d5]@4", E: "[bb3,bb4] [d4,d5] [bb3,bb4] [g3,g4]",
  F: "[a3,a4] [d4,d5] [a3,a4] [f3,f4]", G: "[g3,g4] [c4,c5] [g3,g4] [e3,e4]", H: "[g3,g4]",
  I: "[bb3,bb4] [d4,d5] [bb3,bb4] [f3,f4]", J: "[f3,f4]/2", K: "f4 a4 c5@2", L: "bb4 f4 bb4 d5", M: "g4",
  N: "f4 a4 d5@2", O: "f4@3 a4@5 c5@8", P: "f4", Q: "[c4,c5] [g3,g4] [e3,e4] [g3,g4]",
  R: "[f3,f4] [a3,a4] [g3,g4] [e3,e4]", S: "[f3,f4] [a3,a4] [d4,d5]@2", T: "[e3,e4] [a3,a4] [c4,c5]@2", U: "[c4,c5]",
  V: "[e3,e4]@4 [a3,a4]@4 [c4,c5]@3 ~ [c4,c5]@4", W: "[f3,f4]@4 [bb3,bb4]@4 [d4,d5]@3 ~ [d4,d5]@4",
  X: "[a3,a4] [f3,f4] [a3,a4] [c4,c5]", Y: "[bb3,bb4] [f3,f4] [c4,c5] [g3,g4]", Z: "[[f3,f4]@7 ~]/2",
})).s("gm_string_ensemble_1").gain(0.56).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@8 B@2 C@2 D E@3 F@4 G@2 H@2 F@4 I@4 J@2 K@5 L M@8 A@8 B@2 C@2 D E@3 F@4 G@2 H@2 F@4 G@2 H@2 F@4 I@4 J@2 K@5 L M@8
  A@8 N L O D P E@3 J@2 K@5 L M@8 J@2 K@5 L Q@6 R@3
>`.pickRestart({
  A: "[[a3,c4]@16 [bb3,d4]@16 c4@32 ~@16 bb3@15 ~ [a3,c4]@32, f3, ~@2 a3@3 ~@3, ~@2 d4 ~]/8", // Am Bb Am
  B: "[[g3,bb3]@16 [f3,a3]@15 ~, d4]/2", C: "[e3,g3,c4]/2", D: "[f3,bb3,d4]", E: "[[e3,g3]@16 [f3,a3]@31 ~, c4]/3",
  F: "[[a3,c4] [bb3,d4] a3 [e3,g3], f3@3 ~, ~ c4]/4", G: "[a3@16 bb3@15 ~, [f3,d4]@31 ~]/2",
  H: "[[f3,a3]@8 [e3,g3]@8 [f3,a3]@15 ~, c4@31 ~]/2", // F Em F
  I: "[a3@16 bb3@15 ~ [a3,c4]@8 [e3,g3]@8 [f3,a3]@15 ~, f3@5 ~@3, d4@4 ~ c4@3]/4", J: "[[f3,d4] [e3,c4], a3@31 ~]/2",
  K: "[[bb3,d4]@16 ~@16 e3@16 ~@16 bb3@15 ~, f3@31 ~@17 [f3,d4]@31 ~, ~ a3@3 ~, ~ c4@2 ~@2]/5", L: "[e3,g3,c4]",
  M: "[[a3,c4]@16 [bb3,d4]@16 a3@16 g3@16 ~@32 bb3@7 ~ [e3,g3]@8 [f3,a3]@15 ~, f3@48 e3@31 ~ [f3,d4]@23 ~@25, ~@32 c4@48 ~@24 c4@23 ~, ~@64 a3@31 ~@33]/8", // Am Bb Em F Dm
  N: "[g3,bb3,d4]", O: "[f3,a3,d4] [e3,g3,c4]", P: "[f3,a3,c4]",
  Q: "[[a3,c4] [bb3,d4] a3 g3 ~ [f3,d4], f3@48 e3@31 ~@17, ~@2 c4@3 ~, ~@64 a3@31 ~]/6", // Am Bb Dm
  R: "[bb3@7 ~ [e3,g3]@8 [f3,a3]@28 ~@4, ~@2 c4@9 ~]/3", // Em F
})).s("gm_string_ensemble_2").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A@2 C B A@2 D C E@2 B E A@3 B A E C B F A@2 B A E C B F G C H B A H C B E A B A E H C I A@2 B A@2 C B A@2 D C E@2
  B E A@3 B A E C B F A@2 B A E C B F A@2 B A E C B F G C H B A H C B E A B A E H C I A@2 B A@2 C B A@2 D E J B A E A@2
  C H B A H C B E A B A E H C I A C H B A H C B E A B A E H C I K@2
>`.pickRestart({
  A: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]@2", // F
  B: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] ~ [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] ~ [bb3,d4,f4]@2", // Bb
  C: "[a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4] ~ [a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4] ~ [a3,d4,f4]@2", // Dm
  D: "[bb3,d4,g4]@2 [bb3,d4,g4]@2 [bb3,d4,g4] ~ [bb3,d4,g4]@2 [bb3,d4,g4]@2 [bb3,d4,g4]@2 [bb3,d4,g4] ~ [bb3,d4,g4]@2", // Gm
  E: "[g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2", // C
  F: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2", // F C
  G: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,d4,f4]@2", // F Dm
  H: "[a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2", // Am
  I: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] ~ [bb3,d4,f4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2", // Bb C
  J: "[a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4] ~ [a3,d4,f4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2", // Dm C
  K: "[[a3,c4,f4]@15 ~]/2", // F
})).s("gm_acoustic_guitar_steel").gain(0.22)

// chords · rock organ
const rock_organ = note(`<
  ~@31 A B C D E F@3 G E D E G C B H E ~@39 A B C D E F@3 G E D E G C B H E ~@15 I B C D E F@3 G E D E G C B H E B C D E
  F@3 G E D E G C B H J@2
>`.pickRestart({
  A: "~@12 [b3,c4,db4,d4] [e4,f4,g4,a4,b4] c5 f5", B: "[a5,d6,f6]", C: "[a5,c6,e6]", D: "[bb5,d6,f6]", E: "[a5,c6,f6]",
  F: "[[c6,e6] ~ bb5, a5@31 ~@17, ~@16 [d6,f6]@31 ~]/3", G: "[g5,c6,e6]", H: "[bb5,d6,f6] [c6,e6,g6]",
  I: "~@12 [f1,g1,a1,b1,c2,d2,e2,f2,g2] ~ [c4,d4] a4", J: "[[a5,c6,f6]@7 ~]/2",
})).s("gm_rock_organ").gain(0.24).pan(0.7)

// chords · rock organ · soft notes · Am G7 Em
const rock_organ_soft = note(`<
  ~@31
  [~@14 d5 e5]
  ~@55
  [~@14 d5 e5]
  ~@31
  [~@13 [a2,b2,c3,d3,e3] [f3,g3,a3,b3] [e4,f4,g4]]
  ~@33
>`).s("gm_rock_organ").gain(0.12).pan(0.7)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!32 [x ~@2 x ~@4]!16 [x ~@2 x!2 ~@3]!40 [x ~@2 x ~@4]!63 x ~>").gain(0.8)

// drums · rim
const rim = s("rim").struct("<~@16 [~ x]!15 ~@33 [~ x]!23 ~@66>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@31 A B@7 A B@8 ~@39 C B@7 A B@17 C D B@4 E B@7 C B@7 F B@7 A B@7 ~@2>".pickRestart({
  A: "~@8 x!2 ~@2 x ~@3", B: "~ x", C: "~@8 x ~@3 x!2 ~@2", D: "x!2", E: "~@12 x!2 ~@2", F: "~@11 x!2 ~@3",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@15 A ~@7 B ~@7 C ~@7 C ~@7 B ~@15 D ~@7 B ~@7 B ~@7 C ~@7 C ~@7 B ~@7 E ~@7 C ~@7 F ~@7 G ~@7 C ~@9
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~@6 x!2", C: "~@10 x ~@3 x!2", D: "~@5 x!3", E: "~@15 x", F: "~@5 x ~ x", G: "~@8 x ~@5 x!2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@7 A B@7 A B@6 C A B@7 ~@16 A B@7 A B@6 A@2 B@6 C A B@6 C A B@7 ~@16 A B@2 D A B@3 A B E A B@2 F B ~@33
>`.pickRestart({
  A: "~ x!6 ~", B: "x!7 ~", C: "x!5 ~ x ~", D: "x!4 ~ x!2 ~", E: "~ x!3 ~ x!2 ~", F: "~ x!5 ~@2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<A@15 ~ A@7 ~ A@7 ~@17 A@15 ~ A@7 ~ A@7 ~ A@7 ~@17 A@14 ~@35>".pickRestart({
  A: "~@7 x",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@7 B ~@23 B ~@15 A ~@7 B ~@7 B ~@23 B ~@7 C ~@7 A ~@33>".pickRestart({
  A: "~ x", B: "~@5 x ~@2", C: "~@6 x!2",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  A ~@7 A ~@7 A ~@7 A ~@7 A ~@2 B A ~@3 A ~@2 B A ~@3 A ~@7 A ~@6 A@2 ~@7 A ~@7 A ~@7 A ~@2 B A ~@3 A ~@2 B A ~@3 A ~@2
  B A ~@3 A ~ C A ~@2 D ~ A ~@2 B C B A ~ A ~@2 B A ~@3 A ~@2 B A ~@3 A ~@2 B A ~@2 A ~
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2", D: "x ~@2 x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  ~@32 A B@2 C A B@2 D A B@2 C A B@2 D ~@40 A B@2 C A B@2 D A B@2 C A B@2 D ~@16 A B@2 C E C A D A B@2 C A B@2 D A B@2 C
  A B@2 D A B@2 C A B@2 ~@2
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~ x", D: "x!2 ~@2", E: "~ x ~ x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@32 A B A C B A D A E D B A@3 F G ~@40 A B A C B A D A E D B A@3 F G A B A C B A D A E D B A@3 F G A B A C B A D A E
  D B A@3 F G A B A C B A D A E D B A@3 F H ~
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!5 ~ x!2", D: "x ~ x!6", E: "x!6 ~ x", F: "x!3 ~ x!4", G: "x!5 ~ x ~", H: "x",
})).gain(0.32)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@33 A ~ B A ~ C ~ D C A ~@3 E F ~@41 A ~ B A ~ C ~ D C A ~@3 E F ~ A ~ B A ~ C ~ D C A ~@3 E F ~ A ~ B A ~ C ~ D C A
  ~@3 E F ~ A ~ B A ~ C ~ D C A ~@3 E ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~ x ~@6", D: "~@3 x", E: "~@3 x ~@4", F: "~@5 x ~ x",
})).gain(0.16)

stack(
  bass, string_ensemble_1, string_ensemble_2, acoustic_guitar_steel, rock_organ, rock_organ_soft, kick, rim, snare,
  low_tom, hihat, open_hat, mid_tom, crash, ride, tambourine, tambourine_soft
)

More by Nomadi