Strudelify
Guai se... cover art

1994 · La Settima Onda

Guai se...

Nomadi

KeyE minorTempo130 bpm
0:00/0:00
// Guai se... — Nomadi
// 130 bpm, 4/4, key E 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: duplicate parts dropped: ch 1 choir aahs (copy of ch 3 synth strings 1)
// note: Full arrangement: all 199 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · fretless bass
const bass = note(`<
  ~ A@2 B C D E F G A@2 B C D E F G H I J K L M N H@2 I J K L M N O A@2 B C D E F G H I J K L M N O H I J K L M N O A@2
  B C D E F G H I J K L M N O H I J K L M N P J K L Q N P A@2 B C D E F G H I J K L M N O H I J K L M N O A@2 B C D E F
  G H I J K L M N O H I J K L M N O A@2 B C D E F G H I J K L M N O H I J K L M N O J K L Q N P A@2 B C D E F R S ~@7
  A@2 B C D E F R A@2 B C D E T@4
>`.pickRestart({
  A: "e2@5 ~ e2 ~ g2@2 e2@2 g2 ~ a2@2", B: "b1@5 ~ b1 ~ d2@2 b1@2 d2@2 e2 ~", C: "b1@4 ~@2 b1 ~ d2@2 b1@2 e2 ~ d2@2",
  D: "c2@5 ~ c2 ~ c2@4 b1@4", E: "a1@2 ~ a1@2 ~ d2@2", F: "e2@5 ~ e2 ~ g2@2 e2@2 g2@2 a2@2",
  G: "e2@5 ~ e2 ~ e2@2 d2@2 b1@2 d2@2", H: "e2@4 ~@2 e2 ~ e2@2 d2@2 b1@2 d2@2", I: "e2@4 ~@2 e2 ~ e2@2 b1@2 e2@2 d2@2",
  J: "b1@4 ~@2 b1 ~ b1 ~ a1@2 f#1@2 a1@2", K: "b1@4 ~@2 b1 ~ b1@2 f#1@2 b1@2 a1@2", L: "c2@4 ~@2 c2 ~ c2@3 ~ b1@4",
  M: "a1@5 ~ a1 ~ a1@4 a1 b1 d2@2", N: "e2@5 ~ e2 ~ e2 ~ d2@2 b1@2 d2@2", O: "e2@4 d4 ~ e2 ~ e2@2 d2@2 b1@2 d2@2",
  P: "e2@4 d4 ~ e2 ~ e2@2 b1@2 e2@4", Q: "a1@5 ~ a1 ~ a1@4 d2@4", R: "e2@5 ~ e2 ~ e2@2 d2@5 ~", S: "e2@5 ~@11",
  T: "[e2@49 ~@15]/4",
})).s("gm_fretless_bass").gain(0.29)

// other · synth strings 1
const synth_strings_1 = note(`<
  A B@2 C@2 D E F@2 B@2 C@2 D E G@2 ~@15 A B@2 C@2 D E G@2 ~@15 A B@2 C@2 D E G@2 ~@21 A B@2 C@2 D E G@2 ~@15 A B@2 C@2
  D E G@2 ~@15 A B@2 C@2 D E G@2 ~@21 A B@2 C@2 D E G@2 ~@7 A B@2 C@2 D E F@2 B@2 C@2 D E H@3 ~
>`.pickRestart({
  A: "~@2 e4 f#4 g4 a4 b4 c5", B: "[b4@10 e4 f#4 g4 a4 b4 c5]/2", C: "[a4@10 d4 e4 f#4 g4 a4 b4]/2", D: "g4@3 e4",
  E: "g4@3 e4@3 d4@2", F: "[e4@9 ~ e4 f#4 g4 a4 b4 c5]/2", G: "[e4@15 ~]/2", H: "[e4@23 ~]/3",
})).s("gm_synth_strings_1").gain(0.5).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A@4 B@4 C@4 D@4 ~@16 E@4 D@4 ~@16 E@4 D@4 ~@22 E@4 D@4 ~@16 E@4 D@4 ~@16 E@4 D@4 ~@22 E@4 D@4 ~@8 E@4 D@4 E@4 F@5 ~
>`.pickRestart({
  A: "[[e2,e3,e5] [b2,b3,d5,a5], [f#5,b5]]/4", B: "[[c3,c4] [a2,a3] [e2,e3]@2, [e5,g5,b5], c5 ~]/4",
  C: "[[e2,e3,e5] [b3,d5,a5], [f#5,b5]]/4", D: "[c4 a3 e3@2, [e5,g5,b5], c5 ~]/4",
  E: "[[e3,e5] [b3,d5,a5], [f#5,b5]]/4", F: "[c4@8 a3@8 e3@23 ~, [e5,g5,b5]@39 ~, c5@2 ~@3]/5",
})).s("gm_string_ensemble_2").gain(0.16).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2
  D E B@2 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4
  C@2 D E B@2 C@2 D E B@4 C@2 D E B@2 F ~@7 B@2 C@2 D E B@4 C@2 D E G@3 ~
>`.pickRestart({
  A: "[~@8 [g3,b3]@2 [b2,e3,g3,b3] ~@3 [b2,e3,g3,b3] ~, ~@15 [b2,e3]@5 ~@12]/2", // G Em E5
  B: "[b2,e3,g3,b3]@2 [b2,e3,g3,b3] ~@3 [b2,e3,g3,b3] ~", C: "[f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4] ~@3 [f#3,b3,d4,f#4] ~",
  D: "[c3,e3,g3,c4]@2 [c3,e3,g3,c4] ~@3 [c3,e3,g3,c4] ~", E: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4] ~@3 [e3,a3,c4,e4] ~",
  F: "[b2,e3,g3,b3] ~", G: "[[b2,e3,g3,b3]@23 ~]/3",
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A@2 B C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2
  D E B@2 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4 C@2 D E B@4
  C@2 D E B@2 C@2 D E B@4 C@2 D E B@2 ~@8 B@2 C@2 D E B@4 C@2 D E ~@4
>`.pickRestart({
  A: "[~@8 [g3,b3]@2 ~ [b2,e3,g3,b3]@2 [b2,e3,g3,b3] ~ [b2,e3,g3,b3], ~@15 [b2,e3]@5 ~@12]/2", // G Em E5
  B: "~@3 [b2,e3,g3,b3]@2 [b2,e3,g3,b3] ~ [b2,e3,g3,b3]", C: "~@3 [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4] ~ [f#3,b3,d4,f#4]",
  D: "~@3 [c3,e3,g3,c4]@2 [c3,e3,g3,c4] ~ [c3,e3,g3,c4]", E: "~@3 [e3,a3,c4,e4]@2 [e3,a3,c4,e4] ~ [e3,a3,c4,e4]",
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(0.8)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~ A@2 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2
  C D A@2 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4 B@2 C D A@4
  B@2 C D A@2 B@2 C D A@4 B@2 C D A@2 ~@8 A@2 B@2 C D A@4 B@2 C D ~@4
>`.pickRestart({
  A: "[b4,e5]!8", B: "[b4,d5]!8", C: "[g4,c5]!8", D: "[e4,a4]!8",
})).s("gm_overdriven_guitar").gain(0.09)

// other · pad sweep
const pad_sweep = note(`<
  ~ A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@16 A@2 B@2 C@2 D@2 ~@16 A@2 B@2 C@2 D@2 ~@22 A@2 B@2 C@2 D@2 ~@16 A@2 B@2 C@2 D@2
  ~@16 A@2 B@2 C@2 D@2 ~@22 A@2 B@2 C@2 D@2 ~@8 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@3 ~
>`.pickRestart({
  A: "[b4@31 ~]/2", B: "[a4@31 ~]/2", C: "[g4@31 ~]/2", D: "[e4@31 ~]/2", E: "[~ e4@45 ~@2]/3",
})).s("gm_pad_sweep").gain(0.34).pan(0.4)

// chords · recorder
const recorder = note("<~@174 A@2 ~@23>".pickRestart({
  A: "[~@5 d#6@6 ~ f5@12 ~@8, c6@5 ~@3]/2",
})).s("gm_recorder").gain(0.2).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B C D A B A B A B A B A B A B A B C ~@3
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@4 x ~ x", C: "x", D: "~@3 x!2 ~@2 x",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@173 [x!2 ~ x!3 ~@2]!6 x [~ x!2 ~@2 x!2 ~] ~@14 x ~@3>").gain(0.24)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A@3 B A B A@5 B A B A@2 B A B@5 A B A B@5 A@4 B A B A@2 B A B@5 A B A B@5 A@4 B A B A@2 B A B@5 A B A B@5 A B A B@4
  A@3 B A B A@2 B A B@5 A B A B@5 A@4 B A B A@2 B A B@5 A B A B@5 A@4 B A B A@2 B A B@5 A B A B@5 A B A B@3 A@4 B A B
  A@2 ~@8 A@3 B A B A@5 B A B ~@4
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2",
})).gain(0.24)

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

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@16 A ~@7 A ~@7 A ~@15 A ~@7 A ~@15 A ~@7 A ~@21 A ~@7 A ~@15 A ~@7 A ~@15 A ~@7 A ~@5 A ~@34
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.4)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A B@3 A B A B A B@3 A B A B ~@16 A B@3 A B A B ~@16 A B@3 A B A B ~@22 A B@3 A B A B ~@16 A B@3 A B A B ~@16 A B@3 A
  B A B ~@22 A B@3 A B A B ~@8 A B@3 A B A B A B@3 A B ~@4
>`.pickRestart({
  A: "~ x!7", B: "x!8",
})).gain(0.24)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@173 [~@5 x ~@2]!6 ~@20>").gain(3.06)

// drums · triangle
const triangle = s("triangles:30").struct("<~@173 [x!2]!6 ~@20>").gain(4.18)

// drums · triangle · soft notes
const triangle_soft = s("triangles:30").struct("<~@173 [~@3 x ~@4]!6 ~@20>").gain(2.09)

stack(
  bass, synth_strings_1, string_ensemble_2, acoustic_guitar_steel, acoustic_guitar_steel_2, overdriven_guitar,
  pad_sweep, recorder, kick, snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, tambourine,
  agogo_bells, triangle, triangle_soft
)

More by Nomadi