Strudelify

Tutto a Posto

Nomadi

KeyF minorTempo141 bpm
0:00/0:00
// Tutto a Posto — Nomadi
// 141 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 7 Harp 2 -> orchestral harp
// note: Full arrangement: all 131 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 28.
setcpm(141/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 · electric bass finger
const bass = note(`<
  A@2 B@2 A@2 C A@2 D E F A@2 C A@2 D E F G H I J K L M N O P I J K L M N Q R A@2 C A@2 D E F A@2 C A@2 D E F G H I J K
  L M N O P I J K L M N Q R A@2 C A@2 D E F A@2 C A@2 D E F G S I J K L M N G P I J K L M N T R I J K L M N T R I J K L
  M N T R I J K L M U V W@2
>`.pickRestart({
  A: "f1 ~@3 f1@11 ~", B: "f1@2 ~@2 f1@11 ~", C: "bb1 ~@3 bb1@10 ~@2", D: "ab1 ~@3 ab1@11 ~", E: "bb1 ~@3 bb1@11 ~",
  F: "bb1 ~@3 bb1@9 ~@3", G: "f1 ~@3 f1@10 c2@2", H: "f2@5 ~ f1@2 f2@4 eb2@3 ~, f1 ~@15", I: "db2@11 ~@3 db2@2",
  J: "eb2@2 ~@2 eb2@9 ~ eb2@2", K: "ab2 ~ ab1@4 ab2 ab1", L: "db2 ~ db2@3 ~ db2@2", M: "ab1 ~ ab1@3 ~ ab1@2",
  N: "eb2@2 ~@2 eb2@7 ~ eb2@4", O: "f1 ~@3 f1@10 c2 ~", P: "f2@5 ~ f1@2 f2@4 eb2@3 ~", Q: "f1@14 c2 ~",
  R: "~@4 f1@6 c2@2 f1@3 ~, f2@5 ~@3", S: "f2@5 ~ f1@2 f2@4 eb2@4, f1 ~@15", T: "f1@7 c2", U: "eb2@2 ~@2 eb2@8 ~ eb2@3",
  V: "~@2 f1@4 ~ f1 f2 f1 f2 ~ [f1,f2] ~ [f1,f2] ~, ~@3 f2 ~@4", // F
  W: "[[f1,f2] ~ f1 f2 f1 f2 f1 f2 f1 f2 f1 f2 f1 f2 ~ f1@8 ~@9]/2", // F
})).s("gm_electric_bass_finger").gain(0.61)

// chords · percussive organ
const percussive_organ = note(`<
  ~@22 A B C A C D E@2 A B F A C D E@2 ~@18 A B C A C D E@2 A B C A C D E@2 ~@18 A B C A C D E@2 A G F A C D E@2 A B C A
  C D E@2 A B C A C D E@2 A B C A C D H@3
>`.pickRestart({
  A: "[db4,ab4]", B: "[eb4,bb4]", C: "[eb4,ab4]", D: "[g4,bb4]", E: "[[ab4,c5]@23 ~@9]/2", F: "[eb4,ab4]@15 ~",
  G: "[eb4,bb4]@15 ~", H: "[~ [ab4,c5]@37 ~@10]/3",
})).s("gm_percussive_organ").gain(0.28)

// chords · orchestral harp
const orchestral_harp = note(`<
  ~@20 A@2 B C D E F G H ~ B C D E F G H ~@17 A@2 B C D E F G H ~ B C D E F G H ~@17 A@2 B C D E F G H ~ B C D E F G H ~
  B C D E F G H ~ B C D E F G H ~ B C D E F I J@3
>`.pickRestart({
  A: "[~@8 [f2,f3]@16 [f2,f3]@4 [eb2,eb3]@3 ~]/2", B: "[db4,f4,ab4]@15 ~", C: "[eb4,g4,bb4]@7 ~", D: "[ab4,c5]",
  E: "[f4,ab4,db5]@7 ~", F: "[ab4,c5]@15 ~", G: "[g4,bb4,eb5]@7 ~", H: "[ab4,c5,f5]@7 ~", I: "[g4,bb4,eb5]@15 ~",
  J: "[~ [f3,f4,ab4]@18 ~@5]/3", // Fm
})).s("gm_orchestral_harp").gain(0.4).pan(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@29 A B C D E F G H@2 I@2 J ~@3 K@2 ~@17 A B C D E F G H@2 ~@8 L M N O ~@2 P@2 Q R ~@7 A B C S E F G ~ T U V W X Y Z
  AA@2 U V W X Y Z AA@2 U V W X Y AB@4
>`.pickRestart({
  A: "~@2 [f4,ab4] [eb4,g4]", B: "[db4,f4]", C: "[eb4,g4]@15 ~", D: "[eb4,ab4]", E: "[f4,db5]", F: "[ab4,c5,eb5]",
  G: "[bb4,eb5,g5]", H: "[[ab5,c6]@13 ~@3]/2", I: "[ab4,c5]/2", J: "[bb4,d5]", K: "[bb4@15 ~]/2",
  L: "[c6,f6]@5 ~ f5@8 ~@2", M: "~@2 bb4@2 c5 ~@3 bb4@2 c5 ~@3 bb4@2", N: "c5 ~@7",
  O: "~@2 [bb3,bb4]@2 [c4,c5] ~@3 [bb3,bb4]@2 [c4,c5] ~@3 [bb3,bb4]@2", P: "[d5@31 ~]/2", Q: "~ [c5,c6]",
  R: "~@2 e5 [c5,d5] a4 [f4,g4] [d4,e4] c4 [a3,b3] g3 f3 ~@5", S: "[eb4,ab4]@15 ~", T: "~ [ab4,ab5] [g4,g5] [f4,f5]",
  U: "[f4,f5]@2 [ab4,ab5] [bb4,bb5]", V: "[bb4,bb5]@6 [ab4,ab5] [bb4,bb5]", W: "[c5,c6] [eb5,eb6]!2 [f5,f6]",
  X: "[c5,c6]@2 [ab4,ab5]@4 [ab4,ab5] [bb4,bb5]", Y: "[c5,c6] [eb5,eb6]!3", Z: "[f5,f6] [eb5,eb6] [ab4,ab5] [g4,g5]",
  AA: "[[f4,f5]@5 [ab4,ab5] [g4,g5] [f4,f5]]/2", AB: "[[f5,f6]@4 [eb5,eb6]@4 [ab4,ab5]@5 [g4,g5]@5 [f4,f5]@37 ~@9]/4",
})).s("gm_string_ensemble_1").gain(0.53).pan(0.6)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@29 A ~@11 B C@2 D@2 ~@17 A ~@16 E ~@3 F@2 G@2 ~ H ~@7 A ~@6 I ~@26
>`.pickRestart({
  A: "~@4 [f4,ab4]@3 ~@9", B: "[ab4,c5]@7 ~", C: "[f4 eb4, [ab4,c5]]/2", D: "[f4@31 ~]/2", E: "~@3 c5@4 ~",
  F: "[c5 [eb4,c5], ab4]/2", G: "[~@20 f4@11 ~, bb4@31 ~]/2", H: "~@4 b4 ~@11", I: "[f5,ab5]",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.6)

// bass · trombone
const bass_2 = note(`<
  ~@20 A@2 ~@6 A@2 ~@6 B@2 ~@16 A@2 ~@6 A@2 ~@6 B@2 ~@16 A@2 ~@6 A@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 C@3
>`.pickRestart({
  A: "[~@2 f2@4 f2 eb2]/2", B: "[f2@15 ~]/2", C: "[~ f2@37 ~@10]/3",
})).s("gm_trombone").gain(0.71).pan(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D A B E A F G H I A B E A F G H I J K L M N O P Q R S L M N O P Q T U A B E A F G H I A B E A F G H I J K L M N
  O P Q R S L M N O P Q T U A B E A F G H I A B E A F G H I J V L M N O P Q R S L W N O P Q T U L M N O P Q T U L M N O
  P Q T U L M N O P X@2 Y Z
>`.pickRestart({
  A: "[f2,c3] ~@7 [ab3,c4,f4]@4 f2@2 [ab3,c4,f4]@2, ~@4 c3@11 ~, ~ f2@2 ~", // F5 Fm
  B: "[f2,c3] ~@3 [c4,f4]@2 ab3 [ab3,c4,f4], ~@4 [f2,c3]@11 ~, ~@8 ab3@3 ~@5", // F5 Fm F5
  C: "[f2,c3] ~@3 [c4,f4]@2 ~ [c4,f4], ~@2 [f2,c3]@5 ~, ~@8 ab3@3 ~ ab3@4", // F5
  D: "[f2,c3] ~@3 [ab3,c4,f4]@2 c3 [ab3,c4,f4], ~@2 f2@5 ~, ~@4 c3@7 ~@5", // F5 Fm
  E: "[f2,bb2] ~@3 [f2,bb2]@4 f3@2 [f2,bb2]@2 f3@2 [f2,bb2] ~, ~@4 [bb3,d4]@3 ~", // Bb5 Bb
  F: "[f2,c3] ~@3 [f2,c3]@4 ab3@2 ~@2 ab3@4, ~ [c4,f4], ~@5 [f2,c3]@3", // F5
  G: "ab2 ~@3 ab2@4 ab3@2 ~@2 ab3@4, ~ [c4,eb4], ~@5 ab2@3", H: "bb2 ~ bb2@2 f3 ~ f3@2, ~ [bb3,d4], ~@10 bb2@5 ~",
  I: "bb2 ~@3 bb2@4 f3@2 [f2,bb2]@2 [eb2,f3]@2 c2@2, ~@4 [bb3,d4]@3 ~, ~@8 f2 ~@7", // Bb5 Ebsus2 Bb
  J: "[f2,c3] ~@3 [f2,c3]@4 [ab3,c4,f4]@4 [f2,c3]@2 [ab3,c4,f4]@2", // F5 Fm F5 Fm
  K: "[ab3,c4,f4]@4 ~@4 [f2,c3,ab3,c4,f4]@3 ~ [eb2,g3,bb3,eb4]@3 ~, [f2,c3]@7 ~@9", // Fm Eb F5
  L: "[db3,ab3] ~@3 [db3,ab3]@4 db4@2 ~@2 db4@4, ~ [f4,ab4], ~@10 [db3,ab3]@5 ~", // Db5 Fm Db5
  M: "[eb3,bb3] ~@7 [g4,bb4]@4 ~@2 [eb4,g4,bb4]@2, ~@4 eb3@11 ~, ~@4 bb3@7 ~ bb3@4, ~@8 eb4@3 ~@5", // Eb5 Gm Eb
  N: "ab3 ~@3 ab3@4 c4@2 ~@2 c4@4, ~ [eb4,ab4], ~@5 ab3@3", O: "db3 ~ db3@2 db4 ~ db4@2, ~ [f4,ab4], ~@5 [db3,ab3]@3",
  P: "ab3 ~@3 ab3@4 c4@2 ~@2 c4@4, ~ [eb4,ab4], ~@10 ab3@5 ~", // Ab5
  Q: "[bb2,eb3] ~@3 [bb2,eb3]@4 ~@6 eb4@2, ~ g4, ~@2 [bb3,eb4] bb3, ~@5 [bb2,eb3]@2 ~", // Eb5
  R: "[f2,c3] ~@7 [ab3,c4,f4]@4 [f2,c3]@2 [ab3,c4,f4]@2, ~@4 [f2,c3]@7 ~@5", // F5 Fm F5 Fm F5
  S: "~@4 [c4,f4]@2 ~@2 [f2,c3,ab3,c4,f4]@3 ~ [eb2,g3,bb3,eb4]@3 ~, [f2,c3]@3 ~@5, ~ ab3@2 ~@5", // F5 Fm Eb F5
  T: "[f2,c3] ~@7 [ab3,c4,f4]@4 ab3 ~ [ab3,c4,f4]@2, ~@2 [f2,c3]@5 ~", // F5 Fm F5
  U: "[f2,c3] ~ [f2,c3]@2 ab3 ~ ab3 ~, ~ [ab3,c4,f4]@2 ~ [c4,f4]@3 ~, ~@5 [f2,c3]@2 ~", // F5 Fm F5
  V: "[ab3,c4,f4]@5 ~@3 [f2,c3,ab3,c4,f4]@3 ~ [eb2,g3,bb3,eb4]@3 ~, [f2,c3]@7 ~@9", // Fm Eb F5
  W: "[eb3,bb3] ~@3 [g4,bb4]@2 ~ [eb4,g4,bb4], ~@4 eb3@11 ~, ~@4 bb3@7 ~ bb3@4, ~@8 eb4@3 ~@5", // Eb5 Gm Eb
  X: "[[bb2,eb3] ~@3 [bb2,eb3]@4 ~@7 eb4@2 ~ [f3,c4]@2 [f2,c3] ~ [f2,c3,f3,c4] f3 [f2,c3,c4] ~ [f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4], ~@4 g4@5 ~@7, ~@8 [bb3,eb4]@5 bb3@4 ~@8 [f3,c4]@2 ~@5, ~@10 [bb2,eb3]@5 ~@3 [f2,c3] ~@13]/2", // Eb5 F5 Eb5 F5 Eb5 F5
  Y: "[f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4] [f2,c3] [f3,c4]", // F5
  Z: "[f2,c3] [f3,c4] [f2,c3] ~ [f2,c3]@2 ~@10, ~@3 [f3,c4]@2 ~@11", // F5
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.6)

// chords · electric guitar muted
const electric_guitar_muted = note("<~@9 A B C ~@5 A B D ~@23 A B C ~@5 A B D ~@23 A B C ~@5 A B D ~@43>".pickRestart({
  A: "eb3 ~@3 eb3@9 ~@3", B: "f3 ~@3 f3@10 ~@2", C: "f3 ~@3 f3@8 ~@4", D: "f3 ~@3 f3@9 ~@3",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.4)

// other · pad new age
const pad_new_age = note("<~@46 A@2 B@2 ~@2 C ~@27 A@2 B@2 ~@2 C ~@44>".pickRestart({
  A: "[f6@25 ~@7]/2", B: "[c6@11 ~@5]/2", C: "f6@3 ~",
})).s("gm_pad_new_age").gain(0.57).pan(0.6)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@36 A B ~@3 C D ~ E@2 ~@3 F G H I J ~@16 K L ~@3 M N ~ O P Q ~@5 R S T ~@7 U V ~@6 W X ~@6 W X ~@6 W X ~@9
>`.pickRestart({
  A: "~@8 f4@2 ~@2 eb4@2 c4 ~", B: "bb3 ab3 f3 eb3 c3 eb3 ab3@2", C: "~@4 bb2 c3 ab3 eb3", D: "f3 ~",
  E: "[~@4 [f4,bb4]@5 ~ g4@2 g4@2 ~@2]/2", F: "~@8 f4@2 eb4@2 c4@3 ~", G: "eb4@7 ~", H: "f4", I: "d4@3 ~",
  J: "~@2 ab4@2 f4 ~ eb4 ~ c4 ~ bb3@2 ab3@2 f3@2", K: "~@4 c5@4 eb5@2 c5@3 ~@3",
  L: "bb4@2 f4 ~ ab4@2 f4 ~ bb3@2 c4@2 eb4@2 f4@2", M: "~@2 bb4 ~ bb4 ab4 f4 ab4", N: "f4@9 ~@7", O: "~@7 bb4",
  P: "~@2 ab4 ~ bb4@2 f4 ~ ab4@4 f4@2 eb4@2", Q: "f4 ab4@3 ~@4", R: "~@4 bb4@3 ~ ab4 ~ bb4@2 ~@2 f4 ~",
  S: "bb4@2 f4 ~ ab4@2 f4 ~ eb4@2 c4@2 bb3@2 ab3 ~", T: "ab3@5 ~@3", U: "~@2 c4 ab4",
  V: "c4 ab4@2 c4 bb3 ~ bb3 f4, ~@5 g4@2 ~", W: "~@2 bb3@4 eb4 ~ bb3@4 db4@2 bb3@2", X: "~ ab3 bb3 c4 eb4 f4 ab4 bb4",
})).s("gm_acoustic_guitar_steel").gain(0.57)

// drums · kick
const kick = s("bd").struct(`<
  A@21 ~ B C B C B C B A B C B C B C B A@17 D ~ B C B C B C B A B C B C B C B A@17 D ~ B C B C B C B A B C B C B C B A B
  C B C B C B A B C B C B C B A B C B C B E F G H
>`.pickRestart({
  A: "x!2 ~@2", B: "x ~@2 x ~@4", C: "x ~@2 x ~ x ~@2", D: "x ~ x ~@3 x!2", E: "x", F: "~ x ~ x!5",
  G: "x ~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x", H: "~ x ~@5 x ~@8",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct(`<
  ~@20 A B A@7 C A@7 C A@17 D A@7 C A@7 C A@17 D A@7 C A@7 C A@7 C A@7 C A@5 E ~@3
>`.pickRestart({
  A: "~ x", B: "x!2 ~ x ~@4", C: "~@4 x!2 ~@2", D: "x ~@2 x ~ x ~@2", E: "~@2 x!4 ~@2",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct(`<
  A@20 ~ B ~@7 C ~@7 C ~@17 D ~@7 C ~@7 C ~@17 D ~@7 C ~@7 C ~@7 C ~@7 C ~@5 E ~@2 F
>`.pickRestart({
  A: "x!2 ~@2", B: "~ x ~ x", C: "~@7 x", D: "~@4 x ~@2 x", E: "~@13 x ~ x", F: "~@3 x ~@4",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A@20 B ~ C@7 B C@7 B@2 D B D B D B D B D B D B D B D B ~ C@7 B C@7 B@2 D B D B D B D B D B D B D B D B ~ C@7 B C@7 B
  C@7 B C@7 B C@5 ~@4
>`.pickRestart({
  A: "~ x", B: "x!2 ~@2", C: "x!4", D: "x!2 ~ x",
})).gain(0.5)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B A B A B A@2 B A B A@2 B A@2 B A B A ~@18 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@17 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
  ~@42
>`.pickRestart({
  A: "~@7 x", B: "~@3 x",
})).gain(0.14)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A@20 ~ B ~@7 C ~@7 C ~@17 D ~@7 C ~@7 C ~@17 D ~@7 C ~@7 C ~@7 C ~@7 C ~@5 E ~@2 F
>`.pickRestart({
  A: "x!2 ~@2", B: "~@5 x ~@2", C: "~@3 x", D: "~@6 x!2", E: "~@10 x ~@2 x ~ x", F: "~@3 x ~@4",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@21 A ~@7 B ~@7 B@17 ~ C ~@7 B ~@7 B@17 ~ C ~@7 B ~@7 B ~@7 B ~@7 B ~@5 D E F A
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2 ~@2", D: "~@2 x!3 ~@3", E: "~@4 x ~@2 x ~ x ~ x ~ x ~ x",
  F: "~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~ B ~@7 B ~@7 B ~@15 A ~ B ~@7 C A@5 ~@2 B ~@15 A ~ B ~@7 C A@5 ~@2 C A@5 ~@2 C A@5 ~@2 C A@4 B D E B
>`.pickRestart({
  A: "~ x", B: "x", C: "x!2", D: "~@2 x ~ x!4 ~ x!5 ~ x", E: "x ~ x ~ x ~@2 x!4 ~ x ~ x!2",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<[~ x]!20 ~@18 [~ x]!16 ~@18 [~ x]!16 ~@43>").gain(0.64)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~ A ~ A ~ A ~@2 A ~ A ~@2 A ~@2 A ~ A ~@20 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@19 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@43
>`.pickRestart({
// … 39 more lines

More by Nomadi