Strudelify

Se non ho te

Nomadi

KeyG majorTempo75 bpm
0:00/0:00
// Se non ho te — Nomadi
// 74.5 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 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): Chitarra El..
setcpm(74.5/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.

// bass · acoustic bass · "Basso"
const bass = note(`<
  ~@5 A B C D A B C E ~@15 F A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C H ~@5
>`.pickRestart({
  A: "a2 g2", B: "f2@3 e2 d2@4", C: "g2", D: "c2@2 c3 b2", E: "c2", F: "~@3 b2", G: "c3@3 b2", H: "c3@3 ~",
})).s("gm_acoustic_bass").gain(0.11)

// chords · piano
const piano = note(`<
  ~@4 A B C D E B C D F@3 G H I J K F@3 G H I L M N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N O P
  Q N O P Q R ~@5
>`.pickRestart({
  A: "~@5 g4 a4 b4", B: "d5@2 ~@2 c4 e4 a4@2 d4@2 e4@2 f4@2 g4@2, ~ c5@3 ~@4",
  C: "~@2 c4 f4@3 e4@2 d4@2 d4@2 e4@2 f4@2, a4 ~@3", D: "c5 b4!2 a4!2 g4!2 d4",
  E: "~ c4 e4 g4@2 c4 ~ c4 e4@2 g4@2 a4@2 b4@2, e4 ~@2 d4 ~@4",
  F: "~ c4 e4 g4@2 c4 ~ c4 ~ c4 e4 g4@2 c4 ~ c4, e4 ~@2 d4 e4 ~@2 d4",
  G: "~ b3 e4 g4@2 b3 ~ b3 ~ b3 e4 g4@2 b3 ~ b3, e4 ~@2 d4 e4 ~@2 d4",
  H: "~ c4 e4 g4@2 c4 ~ c4 ~ c4 e4 g4@2 c4 ~ g4, e4 ~@2 d4 e4 ~@2 d4",
  I: "~ c4 e4 g4 ~ c4 ~ c4 ~ b3 e4 g4@2 b3 ~ g4, a4 ~ a4 e4!2 ~@2 d4",
  J: "~ c4 e4 g4 ~ c4 ~ c4 ~ b3 e4 g4@2 b3 ~ b3, a4 ~ a4 e4!2 ~@2 d4",
  K: "~ a3 d4 a4@2 a3 ~ a3 ~ g3 d4 g4@2 b3 ~ b3, d4 ~@2 d4 b3 ~@2 d4",
  L: "~ c4 e4 g4 ~ c4 ~ c4 ~ b3 e4 g4@2 b3 ~ c4, a4 ~ a4 e4!2 ~@2 d4",
  M: "~ a3 d4 a4@2 a3 ~ a3 ~ g3 d4 g4@2 b3 ~ b3, d4 ~@2 c4 b3 ~@2 d4",
  N: "~ c4 e4 g4@2 c4 ~ c4 e4 c4 e4 g4 d4 b3 d4 b3, e4 ~@2 d4 ~@4",
  O: "~ a3 c4 e4@2 c4 ~ c4 ~ g3 b3 d4@2 b3 ~ b3, e4 ~@2 a4 d4 ~@2 g4",
  P: "~ a3 c4 f4@2 c4 ~ c4 ~ a3 d4 f4@2 d4 ~ d4, f4 ~@2 e4 d4 ~@2 a4",
  Q: "~ b3 d4 g4@2 b3 ~ b3 ~ b3 d4 g4@2 b3 ~ b3, g4 ~@2 d4 g4 ~@2 d4",
  R: "~ c4 e4 g4@2 c4 ~ c4 e4 c4 e4 g4 ~@4, e4 ~@2 d4 ~@4",
})).s("gm_piano").gain(0.48)

// other · flute · "Flauto 1"
const flute = note(`<
  ~@8 A B C D E ~@12 F G H@2 ~@15 A B C D I B C J K B C D I B C D I B C D I B C D E ~@5
>`.pickRestart({
  A: "~@5 g5 a5 b5", B: "d6 c6@3 ~ e5 f5 g5", C: "a5@3 ~@2 d5 e5 f5", D: "c6 b5!2 a5!2 g5!2 d5", E: "e5 ~",
  F: "a5 ~ a5 ~ a5@2 e5 g5@5 ~@4", G: "a5@8 g5@4 ~@2 g5!2", H: "[g5@2 f5@4 d5!2 d5@2 d5 d5@2 c5@2 c5@5 ~@12]/2",
  I: "e5@4 ~ g5 a5 b5", J: "c6 b5@2 b5 b5@2 c6@2", K: "c6@4 ~ g5 a5 b5",
})).s("gm_flute").gain(0.45)

// chords · string ensemble 1 · "Archi"
const string_ensemble_1 = note(`<
  ~@5 A B C D A B C E ~@4 F@2 G ~ H@2 I J K F L M A B C N A B C N A B C N A B C N A B C N A B C N A B C N A B C N O P Q
  R O P Q S ~@5
>`.pickRestart({
  A: "[a3,c4,e4] [g3,b3,d4]", B: "[f3,a3,c4] [f3,a3,d4]", C: "[g3,b3,d4]", D: "c4@2 c4 b3, [g3,e4]", E: "[g3,c4,e4]",
  F: "a3 g3", G: "d3 [d3,g3]", H: "c4/2", I: "b3", J: "c4", K: "a3 g3, e3", L: "d4 g3", M: "c4@3 b3",
  N: "c4@3 b3, [g3,e4]", O: "~ [c5,c6] [b4,b5] [c5,c6] [g3,b3,d4]@4, [a3,c4,e4]@4 [g4,g5]@3 ~",
  P: "~ [a4,a5] [g4,g5] [a4,a5] [f3,a3,d4]@4, [f3,a3,c4]@4 [f4,f5]@3 ~", // A G A Dm F
  Q: "d4 d5 [e4,e5] [f4,f5] [b4,b5]@2 [a4,a5]@2, [g3,b3], ~ d4@7", R: "[c4,g5]@3 b3, [g3,e4]",
  S: "[g3,e4], [c4,g5]@3 ~", // C C5
})).s("gm_string_ensemble_1").gain(0.29)

// chords · acoustic guitar steel · "Chitarra Ac."
const acoustic_guitar_steel = note(`<
  ~@5 A B C D A B C E ~@16 F G H D I B C E F G H D I B C D A G H D I B C D A B H D I B C D A B C E A B C D ~@5
>`.pickRestart({
  A: "~ [c4,e4]@7 ~ [b3,g4]@7, [a2,e3,a3] [g2,d3,g3]", B: "~@4 c4@2 c4@2 ~ f4@7, f3 [d3,a3,d4], ~ a3@3 ~@4, ~ f4 ~@2",
  C: "~ g4@15, [g2,d3,g3]@15 ~, ~ b3@11 ~@4", D: "~ [c4,e4]@6 ~@9, [c3,e3,g3]@15 ~", E: "~ [c4,e4]@6 ~@9, [c3,e3,g3]",
  F: "~ [c4,e4]@7 ~ [b3,g4]@7, [a2,e3,a3]@7 ~ [g2,d3,g3]@8", // C Em A5 G5
  G: "~@4 c4@2 c4@2 ~ f4@7, f3@8 [d3,a3,d4]@7 ~, ~ a3@3 ~@4, ~ f4 ~@2", H: "~ g4@15, [g2,d3,g3], ~ b3@11 ~@4",
  I: "~ [c4,e4]@7 ~ [b3,g4]@7, [a2,e3,a3]@8 [g2,d3,g3]@7 ~", // C Em A5 G5
})).s("gm_acoustic_guitar_steel").gain(0.21)

// chords · overdriven guitar · "Chitarra El."
const overdriven_guitar = note(`<
  ~@21 A B C D E@2 F G ~@4 H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J L ~@5
>`.pickRestart({
  A: "[g3,c4]", B: "~@3 e4@9 ~@4, ~ g4@7", C: "[b3,e4]!2", D: "~@3 e4@11 ~@2, ~ g4@7",
  E: "[e4,a4]@8 ~@3 e4@4 ~, ~@5 g4@3", F: "~@3 d4@4 ~@4 d4@5, ~ a4@3 ~ g4@3", G: "[c4,g4]", H: "[a3,c4] [g3,b3]",
  I: "[f3,a3] [a3,d4]", J: "[g3,d4]", K: "c4@3 b3, g3", L: "g3, c4@3 ~",
})).s("gm_overdriven_guitar").gain(0.21)

// other · string ensemble 2 · "Archi"
const string_ensemble_2 = note(`<
  ~@5 A B C D A B C E F@2 G E H I J E F@2 G E H I J D A K C D A K C D A K C D A K C D A K C D A K C D A K C D A K C D A
  K C D A K C L ~@5
>`.pickRestart({
  A: "[a2,a3] [g2,g3]", B: "[f2,f3] [d2,d3]", C: "[g2,g3]", D: "c3@3 b2", E: "c3", F: "c3/2", G: "[b2,e3]", H: "a2 e3",
  I: "a2 e2", J: "d2 g2", K: "[f2,f3]@3 e3 [d2,d3]@4", L: "c3@3 ~",
})).s("gm_string_ensemble_2").gain(0.58)

// other · flute · "Flauto 2"
const flute_2 = note("<~@32 A B@2 C@2 ~@37>".pickRestart({
  A: "~@5 g4 a4 b4", B: "[d5@2 c5@6 ~@2 e4@2 f4@2 g4 a4@5 ~@6 d4@2 e4@2 f4@2]/2",
  C: "[c5@2 b4@4 a4 g4 g4@4 d4@3 e4@5 ~@12]/2",
})).s("gm_flute").gain(0.35)

// other · timpani · "Timpano"
const timpani = note("<~@52 [~@4 g1!12] ~@21>").s("gm_timpani").gain(0.38)

// other · timpani · "Timpano" · soft notes
const timpani_soft = note("<~@52 [g1!4 ~@12] ~@21>").s("gm_timpani").gain(0.19)

// drums · splash
const splash = s("cr").struct("<~@9 x ~@19 x ~@23 x ~@20>").gain(0.19)

stack(
  bass, piano, flute, string_ensemble_1, acoustic_guitar_steel, overdriven_guitar, string_ensemble_2, flute_2, timpani,
  timpani_soft, splash
)

More by Nomadi