Strudelify
Gli aironi neri cover art

1991 · Gente Come Noi

Gli aironi neri

Nomadi

KeyA majorTempo106 bpm
0:00/0:00
// Gli aironi neri — Nomadi
// 106 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 16 "organ mt32" named as an organ, played on drawbar organ (its tubular bells patch is not one)
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106/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.

// other · piccolo · "d50 digitalnativedance"
const piccolo = note(`<
  ~ A@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 B@2 ~@2 A@2 ~@31 A@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 B@2 ~@2 A@2 ~@51
>`.pickRestart({
  A: "[~@2 b4 g4 a4 e5@2 b4@3 ~@6]/2", B: "[~@2 b4 g4 a4 e5@2 b4@4 ~@5]/2", C: "[~@2 b4 g4 a4 e5@2 b4@5 ~@4]/2",
})).s("gm_piccolo").gain(0.24)

// bass · acoustic bass · "basso"
const bass = note(`<
  ~ A B A C D E F G H E F G H E F G H E I J K L M N@2 O@2 P Q R S T U V W X@2 Y@2 Z AA Y AB AC@2 Y AD Z AE AF AG A B A C
  D E F G H E F G H E F G H E I J K L M AH N AI O P@2 R S T U V W X@2 Y@2 Z AA Y AJ AC@2 Y AD Z AE AK AL AM AN AO AP AQ
  AR AO AP AS AN AO AP AT AR AU AV AP AV AW ~
>`.pickRestart({
  A: "g1@13 ~ g1 ~", B: "g1@14 d1 e1", C: "g1@13 ~@3", D: "d2 ~ d2@2 a2@2 d2 ~ d2@2 a2@4 d2@2", E: "a2@13 ~ a2@2",
  F: "e2 ~ e2@2 b2@2 e2 ~ e2@2 b2@4 e2 f2", G: "g2@13 ~ g2@2", H: "d2 ~ d2@2 a2@2 d2 ~ d2@2 a2@4 d2 e2",
  I: "e2 ~ e2@2 b2@2 e2 ~ e2@2 b2@4 [d2,e2] f2", J: "g2@13 ~@3", K: "g2@9 ~ a2@2 g2@2 f2@2",
  L: "d2 ~ d2@2 a2@2 d2 ~ d2@2 a2@2 ~@2 a2@2, ~@3 f#2", M: "d2 ~ d2@2 a2 ~ d2 ~@3 a2@2 f#2@2 a2@2, ~@2 d2 ~",
  N: "a1 ~ a1@2 e2 ~ a1 ~ a1@2 e2@2 a1@2 e2@2", O: "e2 ~ e2@2 b2 ~ e2 ~ e2@2 b2@2 e2@2 b2@2",
  P: "g2 ~ g2@2 d3@2 g2 ~ g2@2 d3@2 g2@2 d3@2", Q: "g2 ~ g1@2 d2@2 g1 ~ g1@2 d2@2 g1@2 d2@2",
  R: "d2 ~ d2@2 a2@2 d2 ~ d2@2 a2@2 d2@2 a2@2", S: "d2 ~ d2@2 a2 ~ d2 ~ d2@2 a2@2 f#2@2 a2@2",
  T: "~@2 a1@2 e2@2 a1 ~ a1@2 e2@2 a1@2 e2@2", U: "a1 ~ a1@2 e2@2 a1 ~ a1@2 e2@2 ~@2 e2@2, ~@3 c#2",
  V: "e1 ~ e2@2 b2@2 e2@2 e2@2 b2@2 e2@2 b2@2", W: "e2@15 ~", X: "d2 ~ d2@2 a2@2 d2@3 ~ d2@2 a2@2 d2@2",
  Y: "e2 ~ e2@2 a2@2 e2@4 e2@2 a2@2 e2@2", Z: "e2 ~ e2@2 b2@2 e2@3 ~ e2@2 b2@2 e2 ~",
  AA: "e2 ~ e2@2 b2@2 e2@3 ~ e2@2 b2@2 e2@2", AB: "e2 ~ e2@2 a2@2 e2@3 ~@3 e3@2 a2@2, ~@5 e2@2 ~",
  AC: "d2 ~ d2@2 a2@2 d2@3 ~ d2@2 a2@2 d2 ~", AD: "e2@2 e2@2 a2@2 e2@4 e2@2 a2@2 e2 ~",
  AE: "e2 ~ e2@2 b2@2 e2@3 ~ e2!2 b2@2 e2@2", AF: "e2 ~ e2@2 a2@2 e2@3 ~ a2@2 c#3@2 a2@2", AG: "g2@3 ~@13",
  AH: "a2 ~ a1@2 e2@2 a1 ~ a1@2 e2@2 a1@2 e2@2", AI: "e1 ~ e2@2 b2 ~ e2 ~ e2@2 b2@2 e2@2 b2@2",
  AJ: "e2 ~ e2@2 a2@2 e2@3 ~ a2 ~ e3@2 a2@2, ~@5 e2@2 ~", AK: "e2 ~ e2@2 a2@2 e2@3 ~ a2@2 e2@2 a2@2",
  AL: "e2 ~ e2@2 a2@2 e2 ~ e2 ~ e2@2 a2@2 e2 ~", AM: "d2 ~ d2@2 a2@2 d2 ~ d2 ~ d2@2 a2@2 d2 ~",
  AN: "d2 ~ d2@2 a2@2 d2 ~ d2 ~ d2@2 a2@2 d2@2", AO: "a2 ~ a1@2 e2@2 a1 ~ a1 ~ a1@2 e2@2 a1 ~",
  AP: "a1 ~ a1@2 e2@2 a1 ~ a1 ~ a1@2 e2@2 a1@2", AQ: "e1 ~ e2@2 b2@2 e2@3 ~ e2@2 b2@2 e2 ~",
  AR: "e2 ~ e2@2 b2@2 e2 ~ e2 ~ e2@2 b2@2 e2@2", AS: "d1@2 d2@2 a2@2 d2 ~ d2 ~ d2@2 a2@2 d2 ~",
  AT: "e1 ~ e2@2 b2@2 e2 ~ e2 ~ e2@2 b2@2 e2 ~", AU: "a2@2 a1@2 e2@2 a1 ~ a1 ~ a1@2 e2@2 a1@2",
  AV: "g1 ~ g1@2 d2@2 g1 ~ g1 ~ g1@2 d2@2 g1@2", AW: "a1@15 ~",
})).s("gm_acoustic_bass").gain(0.37)

// chords · church organ · "organ1"
const church_organ = note(`<
  ~@5 A@8 B@4 C@5 D@2 E@2 F@2 G@2 H@4 I ~ J@2 K@2 L@2 K@2 J@2 K@2 L@2 M N ~@4 A@8 B@4 C@5 D@2 E@2 F@2 G@2 H@4 I ~ J@2
  K@2 L@2 K@2 J@2 K@2 L@2 K@2 J@2 K@2 O@4 J@2 K@2 L@2 M P M P M ~
>`.pickRestart({
  A: "[[f#3,d4]@16 c#4@16 ~@32 f#3@15 ~ c#4@16 ~@16 d4@16, a3@31 ~ [g3,b3]@31 ~ a3@31 ~ [g3,b3]@31 ~, ~ e3@2 d4@2 e3@2 ~]/8", // D G
  B: "[[f#3,d4] c#4 ~ d4, a3@31 ~ [g3,b3]@31 ~, ~ e3@2 ~]/4", // D G
  C: "[[f#3,d4] c#4 ~ d4@2, a3@31 ~ [g3,b3]@47 ~, ~ e3@2 ~@2]/5", D: "[[a3,d4,f#4]@31 ~]/2", E: "[[a3,c#4,e4]@31 ~]/2",
  F: "[[b3,e4,g4]@31 ~]/2", G: "[b3,d4,g4]/2", H: "[[d4,f#4]@31 ~ [c#4,e4]@32, a3@63 ~]/4", I: "[g3,b3,e4]",
  J: "[[d4,f#4,a4]@31 ~]/2", K: "[[e4,a4,c5]@31 ~]/2", L: "[[e4,g#4,b4]@31 ~]/2", M: "[e4,a4,c5]",
  N: "[d4,g4] ~@15, b4 ~@7", O: "[[g#4,b4]@31 ~ [a4,c5]@31 ~, e4@63 ~]/4", P: "[d4,g4,b4]",
})).s("gm_church_organ").gain(0.19)

// chords · electric guitar clean · "el clean gt"
const electric_guitar_clean = note(`<
  ~ A@3 B@2 C@5 D@6 E@4 F@2 G@2 H@2 I@8 ~@2 J@4 K@7 L@3 ~ A@3 B@2 C@5 D@6 E@4 M@2 N@2 O@2 P@8 ~@2 Q@7 R@7 S@8 T@5 U@8
>`.pickRestart({
  A: "[~@4 b3@2 g3@2 a3@2 d4@4 b3@5 ~ b3@2 g3@2 a3@2 d4@4 b3@5 ~ b3@2 g3@2 a3@2 d4@4 b3@2]/3",
  B: "[~@4 b3@2 g3@2 a3@2 d4@4 ~@2 f#3@8 ~@7 a2, ~@7 a3@5 ~@4, ~@15 d3@8 ~@9]/2",
  C: "[[c#3,e3]@10 ~@6 b3@12 ~@4 d4@12 ~@4 [f#3,a3]@13 ~@3 e3@12 ~@3 e3, ~@15 [e3,g3]@13 ~@3 [g3,b3]@14 ~@2 d3@14 ~@2 [a2,c#3]@13 ~@4]/5", // C#m F#m Em G A
  D: "[[g3,b3]@13 ~@3 d4@12 ~@4 [f#3,a3]@13 ~@3 e3@13 ~@3 b3@14 ~@2 d4@12 ~@3 d3, ~@15 [g3,b3]@14 ~@2 d3@14 ~@2 [a2,c#3]@13 ~@3 [e3,g3]@14 ~@2 [g3,b3]@15 ~@2]/6", // G F#m G A Em G
  E: "[[f#3,a3]@13 ~@3 e3@13 ~@3 b3@14 ~@2 d4@12 ~@4, ~@15 [a2,c#3]@13 ~@3 [e3,g3]@14 ~@2 [g3,b3]@14 ~@3]/4", // F#m A Em G
  F: "[~ [f#3,a3], ~@15 d3@17]/2", G: "[~@4 e3@3 ~, ~@15 [a2,c#3]@13 ~@4]/2", H: "[~ [g3,b3], ~@15 e3@17]/2",
  I: "[~@16 [g3,b3]@19 ~@13 [f#3,a3]@20 ~@12 [a3,c#4]@28 ~@4 [g3,b3]@15 ~, ~@15 d3@20 ~@12 d3@20 ~@12 e3@29 ~@3 e3@16 ~]/8", // G F#m A G
  J: "[~@16 [a3,c4]@19 ~@13 [g#3,b3]@16, ~@15 e3@20 ~@12 e3@17]/4", // Am G#m
  K: "[~@16 [a3,c4]@20 ~@12 [f#3,a3]@27 ~@5 [a3,c4]@29 ~@3, ~@15 e3@22 ~@10 d3@27 ~@5 e3@30 ~@3]/7", // Am F#m Am
  L: "[[e3,g#3,b3]@29 ~@3 [a3,c4]@15 ~, ~@31 e3@16 ~]/3", M: "[~@8 [f#3,a3]@7 ~, ~@15 d3@14 ~@3]/2",
  N: "[~@16 [c#3,e3]@13 ~@3, ~@15 a2@13 ~@4]/2", O: "[~ [g3,b3], ~@15 e3@16 ~]/2",
  P: "[~@16 [g3,b3]@18 ~@14 [f#3,a3]@19 ~@13 [a3,c#4]@20 ~@12 [g3,b3]@16, ~@15 d3@19 ~@13 d3@20 ~@12 e3@20 ~@12 e3@16 ~]/8", // G F#m A G
  Q: "[~@16 [a3,c4]@27 ~@5 b3@29 ~@3 [a3,c4]@28 ~@4, ~@15 e3@28 ~@4 [e3,g#3]@30 ~@2 e3@30 ~@3]/7", // Am E
  R: "[[d3,f#3,a3]@25 ~@7 [a3,c4]@29 ~@3 [g#3,b3]@29 ~@3 [a3,c4]@16, ~@31 e3@30 ~@2 e3@30 ~@2 e3@17]/7", // D Am G#m Am
  S: "[~@16 [f#3,a3]@23 ~@9 [a3,c4]@23 ~@9 [g#3,b3]@22 ~@10 [a3,c4]@16, ~@15 d3@23 ~@9 e3@24 ~@8 e3@24 ~@8 e3@17]/8", // F#m Am G#m Am
  T: "[~@16 [f#3,a3]@20 ~@12 [a3,c4]@19 ~@13, ~@15 d3@21 ~@11 e3@20 ~@13]/5", // F#m Am
  U: "[~ b3@23 ~@8 [a3,c4]@13 ~@3 [g3,b3]@14 ~@2 [a3,c4]@13 ~@3 [g3,b3]@13 ~@3 c4@13 ~@5 a3@2 e3@3 a2@3 ~@6, [e3,g#3]@24 ~@7 e3@14 ~@2 d3@14 ~@2 e3@13 ~@3 d3@14 ~@2 e3@19 ~@14, ~@96 a3@15 c4@5 ~@12, ~@109 e4@7 ~@12]/8", // Am G Am G E
})).s("gm_electric_guitar_clean").gain(0.24)

// other · overdriven guitar · "overdrive gt"
const overdriven_guitar = note(`<
  ~ A@2 B@2 ~@15 C@2 D@2 E@2 F@4 G@4 H I J@2 K@2 L@4 M@2 N@2 O@2 P Q A@2 B@2 ~@15 C@2 D@2 E@2 F@4 G@4 H I J@2 K@2 L@4
  M@2 N@2 O@2 R@2 M@2 S@2 O@2 T@2 M@2 S@2 U@2 P V P V P ~
>`.pickRestart({
  A: "[[g2,g3]@15 [d2,d3]]/2", B: "[[g2,g3]@29 ~@3]/2", C: "[g4@29 ~ g4 [f4,f#4]]/2", D: "[d4@29 ~ d4@2]/2",
  E: "[a4@30 e4 g4]/2", F: "[b4@30 g4 ~ d5@30 d5 c5, ~@31 a4@2 ~@31]/4",
  G: "[a4@30 d4 ~ a4@30 e4 g4, ~@31 f#4@2 ~@31]/4", H: "b4@14 ~ g4, ~@7 a4", I: "e4 ~@7", J: "[a4@31 ~]/2",
  K: "[e4@29 ~@2 e4]/2", L: "[e4@32 a4@23 ~ a4@3 b4@3 c5@2]/4", M: "[d5@24 a4@3 b4@3 c5@2]/2",
  N: "[c5@24 a4@3 b4@3 c5@2]/2", O: "[b4@23 ~ b4@3 c5@3 b4@2]/2", P: "a4", Q: "[g4,d5]@3 ~@13",
  R: "[[a4,c5]@24 a4@3 b4@2 c5@3]/2", S: "[e5@24 a4@3 b4@3 c5@2]/2", T: "[a4@23 ~ a4@3 b4@3 c5@2]/2",
  U: "[b4@24 e5@3 d5@3 c5@2]/2", V: "g4",
})).s("gm_overdriven_guitar").gain(0.33)

// other · overdriven guitar · "overdrive gt" · soft notes
const overdriven_guitar_soft = note("<~@23 A ~@15 B C ~@3 D ~@29 A ~@15 B C ~@3 D ~@27>".pickRestart({
  A: "~@15 f#4", B: "~@14 e4 ~", C: "f#4 ~@15", D: "c5 ~@15",
})).s("gm_overdriven_guitar").gain(0.2)

// other · bassoon
const bassoon = note("<~@110 A B@2 C@2 D@2 E F E F G ~>".pickRestart({
  A: "~@5 b4@2 d5", B: "[f5@3 d5@21 b4@3 a4@2 b4@3]/2", C: "[e5@18 c5@3 ~ c5@2 c5@3 c5@3 b4@2]/2",
  D: "[d5@4 c5@2 b4@12 b4@3 b4@2 ~ b4@3 c5@3 b4@2]/2", E: "a4", F: "g4", G: "a4@7 ~",
})).s("gm_bassoon").gain(0.29)

// other · drawbar organ · "organ mt32"
const drawbar_organ = note(`<
  ~ A@4 B C D E B C F@2 B C F@2 B C D G@2 H@4 I@4 H@4 J ~ K@2 L@2 M@2 N@6 O@3 P A@4 B C D E B C F@2 B C F@2 B C D G@2
  H@4 I@4 H@4 J ~ K@2 L@2 M@2 N@6 Q@4 R@2 L@2 M@2 S@4 T@2 U@2 V W V W X ~
>`.pickRestart({
  A: "[d5@9 b4 ~ b4 ~ d5 b4 ~@10 b4 ~ b4 ~ d5 ~ d5, g5@10 d5@2 g5@2 ~ d5@10 ~ d5@2 ~@2 b4@2, ~@8 g5@5 ~ g5 ~]/4",
  B: "a5", C: "e5", D: "b5", E: "g5", F: "[b5@15 g5@17]/2", G: "[g5@19 ~ b5@2 a5@2 g5@2 f#5@2 e5@2 a4@2]/2",
  H: "[a5@19 ~ a5@2 g5@2 f#5@2 e5@2 d5@2 a4@2]/2", I: "[b5@19 ~ b5@2 a5@2 g5@2 f#5@2 e5@2 a4@2]/2",
  J: "b5@2 b5 a5 g5 f#5 e5 d5", K: "d5/2", L: "e5/2", M: "g#5/2", N: "[e5@31 ~ f#5@32 e5@32, a5]/6",
  O: "[~ e5@7 a5@4, g#5@11 ~@5]/3", P: "[d5,g5] ~@7", Q: "[~@4 e5@28 ~ e5@31, g#5@32 a5@31 ~]/4", R: "a5/2",
  S: "[~ d6, a5@63 ~]/4", T: "[e5,a5]/2", U: "[g#5,b5]/2", V: "[a5,c6]", W: "[g5,b5]", X: "[e5,a5,c6]",
})).s("gm_drawbar_organ").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ A@34 B A@15 B A@34 B A@34 B ~>".pickRestart({
  A: "x ~@6 x!2 ~ x ~@3 x ~", B: "x",
})).gain(0.53)

// drums · snare
const snare = s("sd").struct("<~ A@34 ~ A@15 ~ A@34 ~ A@34 ~@2>".pickRestart({
  A: "~ x ~ x",
})).gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@102 [~@15 x] ~@17 [~@14 x!2] ~@2>").gain(0.67)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@34 A ~@50 A ~@16 B ~@17 C ~@2>".pickRestart({
  A: "~@12 x!4", B: "~@12 x!3 ~", C: "~@10 x ~ x!2 ~@2",
})).gain(0.6)

// drums · open hat
const open_hat = s("oh").struct("<[~@3 x] ~@122>").gain(0.53)

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

// drums · ride
const ride = s("rd").struct(`<
  ~ A B C D ~@31 A B C B A B C B A B C B A B@2 ~ A B C D ~@31 A B C B A B C B A B C B A B@2 E ~@20
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", D: "x!6 ~ x", E: "x!6 ~@2",
})).gain(0.53)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@5 A@30 ~ A@15 ~@5 A@30 ~ A@34 ~@2>".pickRestart({
  A: "x!2 ~ x!2 ~@3",
})).gain(2.03)

// drums · shaker
const shaker = s("sh").struct("<~@5 A@30 ~ A@15 ~@5 A@30 ~ A@34 ~@2>".pickRestart({
  A: "~@2 x ~@2 x ~@2",
})).gain(0.4)

stack(
  piccolo, bass, church_organ, electric_guitar_clean, overdriven_guitar, overdriven_guitar_soft, bassoon, drawbar_organ,
  kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride, cabasa, shaker
)

More by Nomadi