Strudelify

Tutta 'nata storia

Daniele

KeyE minorTempo120 bpm
0:00/0:00
// Tutta 'nata storia — Daniele
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// chords · piano
const piano = note(`<
  A B C B C B C B D E F C G H G H G H G H G I J K@2 I J K@2 C B C B H G H G H G H G I J K@2 I J L@2 C G H G H G H G H G
  D E F M N O P M N O P M N O P M N O Q H G H G H G H G D E F H G H R ~@7
>`.pickRestart({
  A: "[e3,e4,g4] ~@3 [d3,d4,f#4] ~@2 [c4,e4]@2 ~ [b3,d4] ~ [c4,e4] ~@3, ~@7 c3 ~ c3@2 ~@5", // Em D C Bm C
  B: "[c3,c4,e4] ~@3 [d3,d4,f#4] ~@2 [e3,e4,g4]@2 ~ [d4,f#4] ~ [e4,g4] ~@3, ~@9 e3@3 ~@4", // C D Em D Em
  C: "[e3,e4,g4] ~@3 [d3,d4,f#4] ~@2 [c4,e4]@2 ~ [b3,d4] ~ [c4,e4] ~@3, ~@7 c3 ~ c3@3 ~@4", // Em D C Bm C
  D: "[e3,b3,g4]@5 [d4,f#4] ~ [b3,c4,e4,g4]@7 ~@2, e4@4 ~ d3@2 c3@9", E: "[b2,b3,d4,f#4,a4]@7 [e3,b3,e4,g4]@9",
  F: "[d3,c4,d4,f4,a4] [f3,c4,e4,f4,a4]", // Dm7 Fmaj7
  G: "[c3,c4,e4] ~@3 [d3,d4,f#4] ~@2 [e3,e4,g4]@2 ~ [d4,f#4] ~ [e4,g4] ~ [d#4,f#4] ~, ~@9 e3@3 ~@4", // C D Em D Em D#m
  H: "[e3,e4,g4] ~@3 [d3,d4,f#4] ~@2 [c4,e4]@2 ~ [b3,d4] ~ [c4,e4] ~ [b3,d4] ~, ~@7 c3 ~ c3@3 ~@4", // Em D C Bm C Bm
  I: "[e4,g4,b4]@3 ~ [e4,g4,b4]@2 ~ [c4,e4,g4,a4]@3 c4 ~ [c4,e4,g4,a4]@2 ~@2, e3@7 a2@9", // Em Am7
  J: "[c4,d4,f#4,a4]@3 ~ [c4,d4,f#4,a4]@2 ~ [b3,d#4,f#4,a4]@3 b3 ~ [b3,f#4,a4] ~@3, d3@7 d#3@7 ~@2", // D7 B7
  K: "[[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~ [a#3,c#4,f#4,a4] ~ [a#3,c#4,f#4,a4] ~ [a#3,c#4,f#4,a4] ~ [a#3,c#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~, c3@7 c#3@6 ~@2 [f#2,f#3]@7 ~ b2@7 ~@2]/2", // C C#dim F# B7 F#
  L: "[[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,g4] ~ [c#4,e4,g4] ~ [a#3,c#4,f#4,a4] ~ [a#3,c#4,f#4,a4] ~ [a#3,c#4,f#4,a4] ~ [a#3,c#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~, c3@7 c#3@6 ~@2 [f#2,f#3]@7 ~ b2@7 ~@2]/2", // C C#dim F# B7 F#
  M: "b4@2 e5 g5@2 b4@2 ~@3 f#5@2 d5@2 a4@2, [e3,b3] [d3,f#3,a3], g3@6 ~ a4@2 ~ e5 ~@5", // E5 D
  N: "g4@2 [d#5,e5] d5@8 ~ [a4,b4]@3 ~, [c3,e3,g3], ~@11 [d5,e5]@4 ~", // Emaj7 Asus2 C Dsus2
  O: "g4@2 b4 e5@2 g4@2 ~@3 f#5@2 d5@2 a4@2, [c3,e3,g3]@7 a4@2 ~@7, ~ [d3,f#3,a3]", // C D
  P: "b4@2 g5 ~@4 [b5,e6]@2 d6@2 [e5,a5] [a5,d6]@2 [f#5,b5]@2, [e3,g3,b3]@13 ~@3, ~@3 f#5@10 ~@3, ~@9 a5 ~@6", // E5 A5 D5 B5 Em
  Q: "b4@2 g5 ~@4 [b5,e6]@2 d6@2 [e5,a5] [a5,d6]@2 f#5@2, [e3,g3,b3]@13 ~@3, ~@3 f#5@10 ~@3, ~@9 a5 ~@6", // E5 A5 D5 Em
  R: "[c3,c4,e4] ~@3 [d3,d4,f#4] ~@2 [e3,e4,g4] ~@8", // C D Em
})).s("gm_piano").gain(0.71)

// chords · piano · Em Bm Em Bm Em Bm Em Bm …
const piano_2 = note(`<
  [[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4]@2 [e4,g4] [b3,d4] ~ [b3,e4,g4] ~@3]
  [[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4]@2 [b3,e4,g4] [b3,d4] ~ [b3,e4,g4] ~ [b3,d4,f#4] ~]
  [[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4]@2 [b3,e4,g4] [b3,d4] ~ [b3,e4,g4] ~@3]
  [[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4] ~ [b3,e4,g4] [b3,d4] ~ [b3,e4,g4] ~ [b3,d4,f#4] ~]
  ~@96
>`).s("gm_piano").gain(0.71)

// chords · vibraphone
const vibraphone = note(`<
  ~@4 A B C D E F G H I H J H J H J H J K L M N O L P Q H I H I H J H J H J H J K L M N O L P Q H I H I H I A B C D E F
  G R@8 ~@8 H J H J H J H J E F G H J H S ~@7
>`.pickRestart({
  A: "[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4]@2 [e4,g4] [b3,d4] ~ [b3,e4,g4] ~@3", // Em Bm Em
  B: "[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4]@2 [b3,e4,g4] [b3,d4] ~ [b3,e4,g4] ~ [b3,d4,f#4] ~", // Em Bm Em Bm
  C: "[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4]@2 [b3,e4,g4] [b3,d4] ~ [b3,e4,g4] ~@3", // Em Bm Em
  D: "[b3,e4,g4] ~@3 [b3,e4,g4] ~@2 [b3,e4,g4] ~ [b3,e4,g4] [b3,d4] ~ [b3,e4,g4] ~ [b3,d4,f#4] ~", // Em Bm Em Bm
  E: "[e4,g4,b4]@5 [d4,e4,g4,b4] ~ [c4,e4,g4]@9, ~@7 b4@7 ~@2", F: "[b3,d#4,f#4,a4]@6 ~ [b3,g4]@9, ~@7 e4@7 ~@2",
  G: "[c4,d4,f4,a4]@7 ~ [c4,e4,f4,a4]@7 ~", // Dm7 Fmaj7
  H: "[b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~", // E5
  I: "[b3,e4] ~ e4 ~ [b3,e4] ~ e4 ~ [b3,e4] ~ e4 ~ [b3,e4] ~ e4 ~", // E5
  J: "[b3,e4] ~ e4 ~ [b3,e4] ~ e4 ~ [b3,e4] ~ [e4,g4,b4,d5] ~ [b3,e4,b4] ~ [d#4,f#4,a#4]@2, ~@14 e4 ~", // E5 Em7 E5 D#m
  K: "[e4,g4]@6 ~ [e4,g4,a4]@9", L: "[d4,f#4,a4]@7 [b3,d#4,f#4,a4]@8 ~",
  M: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~", // C C#dim
  N: "[c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~", // F#m B7
  O: "[e4,g4,b4]@7 [e4,g4,a4,c5]@9", // Em Am7
  P: "[c4,e4,g4] [e4,g4] [c4,d#4,e4,f#4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c#4,e4,g4] [e4,g4] [c#4,d#4,e4,f#4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~", // C Em C C#dim Em C#dim
  Q: "[c#4,f#4,a4] [f#4,a4] [c#4,e4,f#4,g4,a4] ~ [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [b3,d#4,f#4,a4] [f#4,a4] [b3,d#4,e4,f#4,g4,a4] ~ [b3,d#4,f#4,a4] ~ [b3,d#4,f#4,a4] ~", // F#m F#m7 F#m B7 F#m B7
  R: "e6/8", S: "[b3,e4] ~ e4 ~ [b3,e4] ~ e4 ~@9",
})).s("gm_vibraphone").gain(0.63)

// chords · vibraphone · soft notes
const vibraphone_soft = note(`<
  ~@12 A ~ B C B C B C B ~@9 A ~ A ~ B C B C B C B ~@9 A ~ A ~ A ~@24 B C B C B C B ~@4 B C D ~@7
>`.pickRestart({
  A: "~@2 b3 ~@3 b3 ~@7 b3 ~", B: "~@2 b3 ~@3 b3 ~@5 g4 ~ b3 ~", C: "[g4,b4] ~@15", D: "~@2 b3 ~@3 b3 ~@9",
})).s("gm_vibraphone").gain(0.39)

// other · piano
const piano_3 = note(`<
  ~@13 A B A B A B A B ~@2 C@2 ~@2 C@2 A B A B A B A B A B A B ~@2 C@2 ~@2 C@2 ~@2 A B A B A B A B ~@19 A B A B A B A B
  ~@3 A B A ~@8
>`.pickRestart({
  A: "~@2 e3 ~@6 c3 ~@6", B: "~@9 e3 ~@6", C: "[~@7 c#3@2 ~@6 f#2@2 ~@6 b2@2 ~@7]/2",
})).s("gm_piano").gain(0.47)

// chords · piano
const piano_4 = note("<~@71 A@7 ~@22>".pickRestart({
  A: "[~@48 [e3,b3]@8 [d3,a3]@8 [c3,g3]@15 ~ [c3,g3]@7 [d3,a3]@9 b3@10 ~@2 b3!2 ~@2, e5@99 ~@13, ~@48 e3@7 ~]/7", // E5 D5 C5 D5
})).s("gm_piano").gain(0.72)

// drums · rim
const rim = s("rim").struct("<~@3 A ~@6 B ~@9 C ~ D ~@3 D ~@13 C ~ D ~@3 D ~@14 B E@16 ~@7 C ~@2 B ~@11>".pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~@9 x!2 ~@5", D: "~@9 x ~@6", E: "x!4",
})).gain(0.31)

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

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

// drums · clap
const clap = s("cp").struct("<~@29 [~@5 x!2 ~]!4 ~@67>").gain(0.71)

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

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

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@10 A ~ A ~@7 B ~ A ~@3 A ~@5 A ~@7 B ~ A ~@3 A ~@3 A ~@10 A ~@18 A ~@4 B ~@2 A ~@11
>`.pickRestart({
  A: "~@3 x", B: "~@13 x!2 ~",
})).gain(0.79)

// drums · ride
const ride = s("rd").struct(`<
  ~@9 A B ~@10 C D E F C D E F ~@12 C D E F C D E F E F E F E F E F E F ~ A B ~@25 A B ~@11
>`.pickRestart({
  A: "~@7 x ~@2 x ~ x ~ x ~", B: "x!7 ~", C: "~@2 x ~ x ~@2 x ~@2 x ~ x ~ x ~", D: "x ~ x ~ x ~@2 x ~@2 x ~@5",
  E: "x!4 ~ x!3", F: "~@2 x!6",
})).gain(0.39)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@23 A B ~@2 A B ~@14 A B ~@2 A B A B A B A B A B A B ~@41>".pickRestart({
  A: "~ x", B: "x!2 ~@6",
})).gain(0.24)

// drums · bongos
const bongos = s("bongo:4").struct("<~@63 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@22>".pickRestart({
  A: "~@7 x",
})).gain(2.07)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@63 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@22>".pickRestart({
  A: "~@15 x",
})).gain(2.07)

// drums · congas
const congas = s("conga:33").struct("<~@62 [~@3 x]!16 ~@22>").gain(2.52)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<A@8 ~@3 A@10 ~@8 A@12 ~@21 B@16 A@8 ~@3 A@3 C ~@7>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@2", C: "~ x ~ x ~@4",
})).gain(2.38)

stack(
  piano, piano_2, vibraphone, vibraphone_soft, piano_3, piano_4, rim, kick, snare, clap, hihat, low_tom, crash,
  high_tom, ride, ride_soft, bongos, bongos_2, congas, jingle_bells
)

More by Daniele