Strudelify

Il grido

Tozzi

KeyD majorTempo80 bpm
0:00/0:00
// Il grido — Tozzi
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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(`<
  ~@2 A@2 B C B@2 D@8 E D F G E D F G H I J K H L J K H D B D@8 E D F G E D F G H I J K H L J K H E D F G E M F G D@4
  B@4 N E D F G E M F G O M F G O M F G E D F G E M F G O M P
>`.pickRestart({
  A: "[g3@2 a3 a3@2 a3 g3@2 g3@3 f#3@3 a3@18]/2", B: "e1!2 d2@2 e1 ~ e1!2 d2@2 e1 ~ e1 ~ e1 ~",
  C: "e1!2 d2@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", D: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  E: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ d2@2 e1 ~ e1 ~", F: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ c2@2 d1 ~ d1 ~",
  G: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~", H: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  I: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", J: "a1 ~ a1 ~ a1 ~ a1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  K: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d2@2", L: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ d2 e2",
  M: "e1 ~ e1 ~ e1 ~ e1 ~ g1@3 f#1@3 e1@2", N: "e1", O: "g1 ~ g1 ~ g1 ~ g1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  P: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ c2@2 d1 ~@3",
})).s("gm_fretless_bass").gain(0.65)

// chords · piano
const piano = note(`<
  A@4 B C B C D E D E D E D E F G H I F G H I J K L M N O L M@2 B C D E D E D E D E F G H I F G H I J K L M N O L M@2 F
  G H I F G H I P Q R S T U V W X F G H I F G H I Y G H I Y G H I F G H I F G H I Y G Z
>`.pickRestart({
  A: "[~@10 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 ~@2 [g3,b3,e4]@2 ~ [g3,b3,e4]@11 [g3,b3,e4] ~ [g3,b3,e4]!2 ~ [g3,b3,e4]!2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@17 ~, ~@10 e2@29 ~ d2@23 ~]/4", // Em D
  B: "[g3,b3,e4] ~@3 [f#3,a3,d4] ~@3", C: "[f#3,a3,d4] ~@3 [e3,g3,b3] ~@3", D: "[g3,b3,e4]@7 ~ [f#3,a3,d4]@7 ~",
  E: "[e3,g3,c4]@15 ~", F: "[g3,b3,e4]@3 ~ [g3,b3,e4]@2 ~@2 [g3,b3,e4]@2 ~ [g3,b3,e4]@5",
  G: "~ [e4,a4]@2 ~ [e4,g4]@3 ~ [g3,b3,e4] ~ [g3,b3,e4]!2 ~ [g3,b3,e4]!2 ~", // A5 Em
  H: "[a3,d4,f#4]@3 [a3,d4,f#4]@3 d4@3 ~ d4@5 f#4, ~@3 [a3,f#4]@4 ~", // D
  I: "[e4,g4]@2 ~ f#4@3 [a3,d4]@7 ~@3, ~@2 e4@3 ~@11", // Em D5
  J: "[b3,d4,f#4]@3 ~ [b3,d4,f#4]@4 [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~", // Bm
  K: "[c4,e4,g4]@3 ~ [c4,e4,g4]@4 [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~", // C
  L: "[a3,c4,e4]@3 ~ [a3,c4,e4]@3 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@3 ~", // Am Em
  M: "[a3,d4,g4]@3 ~ [a3,d4,g4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~", // Dsus4 D
  N: "[b3,d4,f#4]@3 ~ [b3,d4,f#4]@4 [b3,d4,f#4]@2 [b3,d4] [d4,f#4] ~ [d4,g4]@2 ~", // Bm D G5
  O: "[c4,e4]@4 [c4,e4,g4]@4 [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~", // C
  P: "[g3,b3,e4]@2 ~ [g3,b3,e4]@2 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3] [g3,b3,e4] ~ [g3,b3,e4]", // Em G Em
  Q: "[a3,d4,f#4]@2 ~ [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 a3 [a3,d4,f#4]@2 [a3,d4,f#4]!2 ~ [a3,d4,f#4]", // D
  R: "[c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c4,e4,g4]@3 ~ [c4,e4,g4]@5 [c4,e4,g4]", // C
  S: "[d4,f#4,a4]@3 [d4,f#4,a4]@3 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@4 ~ [d4,f#4,a4]", // D
  T: "[e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~ [e4,g4,b4]@3 ~ [e4,g4,b4]@2 [e4,g4] [e4,g4,b4] ~ [e4,g4,b4]", // Em
  U: "[f#4,a4,d5]@2 ~ [f#4,a4,d5]@2 ~ [f#4,a4,d5]@3 f#4 [f#4,a4,d5]@2 [f#4,a4,d5]!2 ~ [f#4,a4,d5]", // D
  V: "[e4,g4,c5]@2 ~ [e4,g4,c5]@3 [e4,g4,c5]@3 ~ [e4,g4,c5]@5 [e4,g4,c5]", // C
  W: "[f#4,a4,d5]@3 [f#4,a4,d5]@3 [f#4,a4,d5]!2 [f#4,a4,d5]@2 ~ [f#4,a4,d5]@3 [f#4,a4,d5]!2", X: "[f#4,a4,d5]@15 ~",
  Y: "[b3,d4,a4]@3 ~ [b3,d4,g4]@2 ~@2 [b3,d4,f#4]@2 ~ [b3,d4,g4]@5", // Bm7 G Bm G
  Z: "[a3,d4,f#4]@3 [a3,d4,f#4]@3 d4@3 ~ d4@4 ~@2, ~@6 [a3,f#4]@7 ~@3", // D
})).s("gm_piano").gain(0.27)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@4 A B A B A B C D A B A E F G H@2 F G I@2 J K L M J K L M N A B A B C D A B A E F G H@2 F G I@2 J K L M J K L M N F
  G H@2 F G I@2 ~@9 F G H@2 F G I@2 O P Q R O P Q R F G H@2 F G I@2 O P S
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2!2 d3 e3",
  C: "e2 ~ e2!3 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", D: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ d3 e2 d3 e3, ~@11 e2@2 ~@3",
  E: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 [e2,b2]@2 [e2,b2]!2", F: "[e2,b2]@14 [e2,b2]!2", G: "[e2,b2]",
  H: "[[d2,a2]@26 [d2,a2]!2 [d2,a2]@2 [d2,a2]!2]/2", I: "[d2,a2]/2",
  J: "~@12 b3@3 ~, b2, ~@4 b3@7 ~@5, ~@6 f#3@9 ~, ~@8 d4@7 ~", K: "~@3 c4, c3, ~@4 c4@7 ~@5, ~@3 g3@5, ~ e4",
  L: "~@3 c4 ~@3 b3, a2 e2, ~ e3@3 ~ e3@3, ~@4 a3@5 ~@3 g3@4", M: "a3@5 ~ [a3,d4]@2 [a3,d4]@7 ~, d3@15 ~",
  N: "[d4,g4]@7 ~ [d4,f#4]@7 ~, [b2,f#3]", O: "g2 f#2",
  P: "e2@4 [f3,g3] [b2,c3,d3,e3] [e2,f2,g2,a2] [a#1,c2,c#2,d2] g2@3 f#2@3 e2@2", Q: "[d2,a2]@13 ~ [d2,a2]!2",
  R: "[d2,a2]@15 ~", S: "[d2,a2]@13 ~ [d2,a2] ~",
})).s("gm_distortion_guitar").gain(0.23)

// other · pad new age
const pad_new_age = note("<~@77 A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C>".pickRestart({
  A: "a6 ~ a6 ~ g6 ~ g6 ~ f#6@2 ~ g6 ~ g6 ~@2, ~@5 f#6 ~@2", B: "~@8 g6 ~ [g6,a6] b6 a6 [a6,b6] g6 a6",
  C: "g6 ~ g6 f#6@2 f#6 a6@2 a6 ~@7",
})).s("gm_pad_new_age").gain(0.1).pan(0)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A B A@2 ~@16 C D E F C G E F C H B I ~@15 C D E F C G E F C ~@12 H B A@2 J ~@27
>`.pickRestart({
  A: "e2!2 e3@2 e2 ~ e2!2 e3@2 e2 ~@5", B: "e2 ~ e3@2 e2 ~ e2 ~ e3@2 e2 ~@5",
  C: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", D: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  E: "a2 ~ a2 ~ a2 ~ a2 ~ e2 ~ e2 ~ e2 ~ e2 ~", F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d3@2",
  G: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ d3 e3", H: "~ e2 e3@2 e2 ~ e2!2 e3@2 e2 ~@5", I: "e2 ~@15",
  J: "~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
})).s("gm_string_ensemble_1").gain(0.38)

// chords · rock organ
const rock_organ = note("<~@68 A B C D A B C E@2 ~@27>".pickRestart({
  A: "[g4,b4]", B: "[f#4,a4]", C: "[g4,c5]", D: "[f#4,a4,d5]", E: "[f#4,a4,d5]/2",
})).s("gm_rock_organ").gain(0.11).pan(1)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@15 A@8 B ~@18 A@8 B ~@8 A@8 B ~@8 A@8 C@8 D@8 B ~@3>".pickRestart({
  A: "[~@16 [g3,b3,e4]@18 ~@14 [a3,d4,f#4]@18 ~@4 g3@4 f#3@4 d3 ~ [g3,b3,e4]@18 ~@14 [a3,d4,f#4]@16, ~@15 [b2,e3]@19 ~@13 [b2,d3]@19 a2@13 [b2,e3]@19 ~@13 [b2,d3]@17, ~@68 d3@9 ~@51]/8", // Em D Em D E5 Bm E5 Bm
  B: "~@6 g3@4 f#3@4 d3 ~, ~@2 a2@13 ~, ~@4 d3@9 ~@3",
  C: "[~@6 g3@4 f#3@4 d3 ~ [b3,d4,g4]@18 ~@14 [a3,d4,f#4]@18 ~@4 g3@4 f#3@4 d3 ~ [b3,d4,g4]@18 ~@14 [a3,d4,f#4]@16, ~@2 a2@12 ~@33 [b2,d3]@19 a2@13 ~@32 [b2,d3]@17, ~@4 d3@9 ~@2 [d3,g3]@19 ~@34 d3@9 ~@2 [d3,g3]@19 ~@30]/8", // G D G D Bm G5
  D: "[~@6 g3@4 f#3@4 d3 ~ [g3,b3,e4]@18 ~@14 [a3,d4,f#4]@18 ~@4 g3@4 f#3@4 d3 ~ [g3,b3,e4]@18 ~@14 [a3,d4,f#4]@16, ~@2 a2@13 [b2,e3]@19 ~@13 [b2,d3]@19 a2@13 [b2,e3]@19 ~@13 [b2,d3]@17, ~@4 d3@9 ~@55 d3@9 ~@51]/8", // Em D Em D E5 Bm E5 Bm
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@19 A ~@3 A B@2 C D B@2 C D E ~@13 A ~@3 A B@2 C D B@2 C D E ~@3 A ~@3 A ~@12 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "~@6 g3@4 f#3@4 d3 ~, ~@2 a2@13 ~, ~@4 d3@9 ~@3",
  B: "[~@12 b3@3 ~@13 c4@4, ~ b2@8 c3@7, ~@4 b3@7 ~@9 c4@7 ~@5, ~@6 f#3@9 ~@7 g3@10, ~@8 d4@7 ~@9 e4@8]/2",
  C: "~@3 c4 ~@3 b3, a2 e2, ~ e3@3 ~ e3@3, ~@4 a3@5 ~@3 g3@4", D: "a3@5 ~ [a3,d4]@2 [a3,d4]@7 ~, d3@15 ~",
  E: "[d4,g4]@7 ~ [d4,f#4]@7 ~, [b2,f#3]", // G5 D B5
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.8)

// chords · synth brass 1
const synth_brass_1 = note("<~@37 A B C ~ A B C ~@60>".pickRestart({
  A: "~@8 [e3,g3,b3]!8", B: "[e3,g3,b3]!4 [e3,g3,b3,e4]!12", C: "[e3,g3,b3]!4 ~@12",
})).s("gm_synth_brass_1").gain(0.08).pan(0)

// chords · overdriven guitar
const overdriven_guitar = note("<~@3 A@3 ~@26 A@3 ~@33 B C D E F G H I J ~@27>".pickRestart({
  A: "[~ [e3,g3]@2, ~@5 [e2,b2]@11]/3", B: "~@5 b2 d3 e3 g3 e3@7", C: "~@5 b3 e4 b3 g4 a4@7", D: "c5 a4@7 g4 a4 e4@6",
  E: "[a2,d3]@11 d4 e4 f#4 g4 b4", F: "e5@7 b4@9", G: "e5@6 f5@8 d5 e5", H: "e5@2 d5 e5 e5@2 d5 e5 e5@2 d5 e5 e5@4",
  I: "b5 [g5,a5] a5 [f#5,g5] [g5,b5] [e5,f#5,g5,a5] [f#5,a5] [d5,e5,f#5,g5] [e5,g5] [b4,d5,e5,f#5] f#5 [d5,e5]!2 b4 a4@2, ~@5 a4@2 ~", // Gsus2 Gmaj7 G F#m7 F#m Em7 Em Bm …
  J: "~ [d5,e5,f5] [e4,f4,g4,a4,b4,c5] [b3,c4,d4] [e3,f3,g3,a3,e5,f5] [b2,c3,d3,f4,g4,a4,b4,c5,d5] [d#2,f2,g2,g#2,a2,b3,c4,e4] [c2,d2,a3] ~ [a4,b4,c5,d5,e5,f5] [c4,d4,e4,f4,g4] [g3,a3,b3] [d3,e3,f3,b4,c5,d5,e5,f5] [g#2,a2,b2,c3,e4,f4,g4,a4] [d2,d#2,f2,g2,a3,b3,c4] c2", // Dm Cmaj7 Bm Fmaj7 Bm7b5 D7 Dm7 C …
})).s("gm_overdriven_guitar").gain(0.22)

// chords · overdriven guitar · soft notes · Fsus2 C Fdim Cm Dm D#maj7
const overdriven_guitar_soft = note(`<
  ~@76
  [~@6 d4 [f3,g3] [c3,d3,e3] [f2,g2,g#2,a2,b2] [c2,d2,d#2] ~@2 d4 g3 [d3,e3,f3]]
  [[g#2,a2,b2,c3] [d2,d#2,f2,g2] c2 ~@13]
  ~@26
>`).s("gm_overdriven_guitar").gain(0.16)

// chords · pad sweep
const pad_sweep = note("<A@5 ~@99>".pickRestart({
  A: "[~@6 [e2,e3,g3,b3]@15 [d2,d3,f#3,a3]@12 ~@7]/5", // Em D
})).s("gm_pad_sweep").gain(0.23).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@4 A@61 B A@10 C A@5 B A@3 B A@3 B A@7 B A@3 B A>".pickRestart({
  A: "x!2", B: "x ~@7 x ~@2 x ~@2 x ~", C: "x",
})).gain(0.44)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@16 A ~ A ~@7 A ~@16 A ~@7 A ~@8 B ~@7 A ~@15 A ~@3>".pickRestart({
  A: "~@15 x", B: "~@14 x!2",
})).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@11 B ~@16 B ~ B ~@7 C ~@16 D ~@5 E ~ F ~@8 G ~@5 E ~ F ~ E ~@3 E ~@7 E ~ F ~ E ~
>`.pickRestart({
  A: "~@11 x ~ x!2 ~", B: "~@7 x", C: "~@12 x ~ x!2", D: "~@11 x ~@2 x ~", E: "~ x", F: "~@6 x!2", G: "~@12 x!2 ~@2",
})).gain(0.57)

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

// drums · high tom
const high_tom = s("ht").struct("<~@42 [~@2 x ~@4 x ~ x ~@6] ~@33 [~ x ~ x ~ x ~@10] ~@27>").gain(0.63)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@9 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A@2 ~@3 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A@2 ~@5 A ~ A ~ A ~ A ~ A ~ A
  ~@6 A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~
>`.pickRestart({
  A: "~@3 x",
})).gain(0.51)

stack(
  bass, piano, distortion_guitar, pad_new_age, string_ensemble_1, rock_organ, acoustic_guitar_steel,
  electric_guitar_clean, synth_brass_1, overdriven_guitar, overdriven_guitar_soft, pad_sweep, kick, snare, hihat,
  low_tom, mid_tom, open_hat, high_tom, crash, tambourine
)

More by Tozzi