Strudelify

Quello che le donne non dicono

Fiorella Mannoia

KeyC majorTempo84 bpm
0:00/0:00
// Quello che le donne non dicono — Fiorella Mannoia
// 84 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · acoustic bass · "THIS SONG"
const bass = note(`<
  ~@27 A B C D A B C D E F G ~@9 H I J K L M N O P Q A B C D A B C D R S T U R S T U V W X ~@2
>`.pickRestart({
  A: "c3@8 b2@6 ~ b2", B: "a2@8 g2@6 ~ g2", C: "f2@2 e2 e3", D: "d3@6 c3 a2 g2@2 ~ g2 g3 g2@2 ~",
  E: "f2@4 ~@2 f3@5 c3 f3@4", F: "e2@11 ~ e3@4", G: "d3@5 ~ d3@8 ~@2", H: "d3 g2", I: "c3 f2", J: "a#2 e2",
  K: "a2@5 ~ a2@2 a3@2 ~ e3@3 a2@2", L: "d3@7 ~ b2@8", M: "c3@3 b2 a2@4", N: "a#2@2 e2 e3",
  O: "a2@5 ~ a2@2 g2@5 ~ g2@2", P: "f2@5 ~ f2@2 f2@4 f3 c3 f2@2", Q: "g2@7 g2 g3 d3 g2@2 ~ d3 g3 ~, ~@12 g2@3 ~",
  R: "c#3@8 c3@6 ~ c3", S: "a#2@8 g#2@6 ~ g#2", T: "f#2@2 f2 f3", U: "d#3@6 c#3 a#2 g#2@2 ~ g#2 g#3 g#2@2 ~",
  V: "f#2@4 ~@2 f#3@5 c#3 f#3@4", W: "f2@11 ~ f3@4", X: "d#3@5 ~ d#3@8 ~@2",
})).s("gm_acoustic_bass").gain(0.62)

// bass · acoustic bass · "THIS SONG" · soft notes
const bass_soft = note("<~@35 A B C D ~@12 E ~@21 F G H ~@2>".pickRestart({
  A: "~@2 c3 ~@5", B: "~@11 c3 ~@4", C: "~@7 c3", D: "a2", E: "~@7 c3 ~@8", F: "~@2 c#3 ~@5", G: "~@11 c#3 ~@4",
  H: "~@7 c#3",
})).s("gm_acoustic_bass").gain(0.31)

// chords · piano · "HAS MANY"
const piano = note("<A@4 B@4 C D ~@68>".pickRestart({
  A: "[~@44 e5@2 ~@6 b3@2 ~@6 c5 ~ d5 e5, ~@10 b4@8 g3@12 g4@16 e4@15 e4@2 ~, ~@12 c5@8 e4@13 ~ g3@14 ~@2 e3@14, ~@7 g5@6 ~ f5@2 d5@2 d4@6 c5@3 c4@5, ~ [c1,c3] [b0,b2] [a0,a2]]/4", // C B A
  B: "[f5@2 e5@2 c5 ~@5 b4@2 ~@16 f5@2 ~@14 e5@2 ~@6 b3@2 ~@8 d5 e5, f1 [c1,c3] [b0,b2,d5] [a0,a2], f2@6 c5@4 ~@2 c5@16 ~@2 g4@13 ~@3 e4@14 c5 e4@2 ~, ~ c3@3 g2@4 ~ g3@7 ~ g3@7 ~ e3@7, ~@2 a3@2 ~@3 g5@3 e4@6 ~@2 d4@6 c5@3 c4@5]/4", // C Bm A
  C: "f5@2 e5@2 c5 ~@7 b4@4, f2@3 c5@3 ~@2, ~ c3@3 g2@4, ~ a3 ~@2", D: "[f2,a3] ~, c5@5 ~@3",
})).s("gm_piano").gain(0.69)

// chords · electric guitar muted · "HAS MANY" · C#5
const electric_guitar_muted = note(`<
  ~@65
  [~@2 [g#4,c#5] ~@2 [g#4,c#5] ~@2 [g#4,c#5] ~@2 [g#4,c#5] ~@2 [g#4,c#5] ~]
  [~@2 [g#4,c#5] ~@2 [g#4,c#5] ~@2 [g#4,c#5] ~@2 [g#4,c#5] ~@4]!7
  ~@5
>`).s("gm_electric_guitar_muted").gain(0.48)

// chords · string ensemble 2 · "PRG.CHANG"
const string_ensemble_2 = note(`<
  ~@2 A B C D E F G@2 ~@10 H I@4 J ~ K L@2 M N O@2 P Q@3 ~@12 R S@4 J T K L@2 M N O@2 P U V@2 W X Y@2 Z ~@5
>`.pickRestart({
  A: "[b2,d4]", B: "g4", C: "[f2,a3] g2, g4@15 ~", D: "[c3,c4,e4,g4]", E: "[b2,b3,d4,g4]", F: "[a2,a3,c4,g4]",
  G: "[[f2,f3,a3] g2 ~@2, c4@11 ~@5, g4@9 ~@7, ~@4 g3@3 ~@9]/2", H: "~@8 c#4@7 ~",
  I: "[[d3,a3,c4,f4]@8 [b2,g3]@8 ~@8 a2@8 a#3@4 a3@3 ~@9 a2@8 ~@4 g3@3 ~, ~@2 g4@4 ~@5 e4@5, ~@2 d4@3 c4@3 [a#2,d4]@2 [e2,e3,g#3,b3]@2 ~@2 g2@2, ~@2 [c3,e4] f3@2 ~ [a3,c4]@2]/4", // Dm7 Em A# E C Am
  J: "[f3,a3,c4,f4], f2@7 ~", K: "[c4,e4] [b3,d4], g4@15 ~",
  L: "[a3@8 g3@7 ~ [a3,f4]@8 [g3,e4]@8, c4, [e4,a4]@15 ~@17]/2", M: "[f3,a3] [g3,b3], d4@15 ~",
  N: "c5 ~@7 [b3,d4,d5]@8, [c4,e4,e5] ~, ~@4 g4@11 ~", // Bm C
  O: "[a3@2 ~ b4 [f3,a3,f4,a4]@2 [g3,e4,g4]@2, c4, e4@15 ~@17, c5@3 ~@5, ~ g3 ~@2]/2", // F C
  P: "[f3,a3,f4]@8 ~ g4@5 ~@2, d4@7 ~, ~@4 [g3,b3]@3 ~", Q: "[[f3,a3,a4]@16 [e3,g3,g4]@16 [f3,f4]@13 ~@3, c4@11 ~]/3",
  R: "c4@7 ~ c#4@7 ~",
  S: "[[d3,a3,c4,f4]@8 [b2,g3]@8 ~@8 a2@8 a#3@4 a3@3 ~@9 a2@8 ~@4 g3@3 ~, ~@2 g4@4 ~@5 e4@5, ~@2 d4@3 c4@3 [a#2,d4]@2 [e2,e3,g#3,b3]@2 ~@2 g2@2, ~@16 [c3,e4]@8 [f3,f4]@16 ~@8 [a3,c4]@15 ~]/4", // Dm7 Em A# E C F Am
  T: "[b3,d4,g4]@15 ~, [g2,d3,g3]@3 ~@13", U: "[c#4,f4] [c4,d#4], g#4@15 ~",
  V: "[a#3@8 g#3@7 ~ [a#3,f#4]@8 [g#3,f4]@8, c#4, [f4,a#4]@15 ~@17]/2", W: "[f#3,a#3] [g#3,c4], d#4@15 ~",
  X: "c#5 ~@7 [c4,d#4,d#5]@8, [c#4,f4,f5] ~, ~@4 g#4@11 ~", // Cm C#
  Y: "[a#3@2 ~ c5 [f#3,a#3,f#4,a#4]@2 [g#3,f4,g#4]@2, c#4, f4@15 ~@17, c#5@3 ~@5, ~ g#3 ~@2]/2", // F# C#
  Z: "[f#3,a#3,f#4]@8 ~ g#4@5 ~@2, d#4@7 ~, ~@4 [g#3,c4]@3 ~", // F# G#
})).s("gm_string_ensemble_2").gain(0.26)

// chords · string ensemble 2 · "PRG.CHANG" · soft notes
const string_ensemble_2_soft = note(`<
  ~ A@2 B@2 ~@4 C ~@7 D@4 ~ E@2 ~@2 F ~@10 G H I@4 J@3 K L@4 ~@2 M ~@19 N@3 ~@2
>`.pickRestart({
  A: "[[c3,e4] ~, g4@31 ~]/2", B: "[a2@16 ~@8 g3@7 ~, c4@31 ~]/2", C: "a3@3 ~@5",
  D: "[[a3,c4]@8 ~@16 c4@7 ~@5 a3@4 ~@4 b3@4 a3@16, ~@8 [g3,b3]@16 a3@11 ~@5 g#3@8 ~@16, ~@16 e4@14 ~@2 d4@16 c4@7 ~@9, ~@11 e3@5]/4", // Am G
  E: "[~@8 f4@16 f4 ~@7]/2", F: "[g2,b3,d4,g4]", G: "d3@13 ~@3", H: "[g3,b3,d4]@6 [a3,c4,e4]@7 ~@3",
  I: "[[a3,f4]@16 [g3,e4]@16 [f3,d4]@8 [a3,e4]@8 ~@8 [b3,b4]@7 ~, [c4,c5]@57 ~@7, ~@3 [g3,d4]]/4", // Dm C Dm A5 B C G5
  J: "[[a4,a5] [g4,g5] [f4,f5] [e4,e5] [d4,d5] c5 [b3,b4] c5 [f3,a3]@2 [a3,c4,c5]@2, c4@5 c4@2 c4@3 ~@2, a3@16 g3@16 a4@11 ~@5]/3", // A G F E D B F Am
  K: "~@4 [b3,g4,g5]@3 ~, g3@15 ~, [c4,c5]@11 ~@5", // Em C
  L: "[[a3,c4]@8 ~@16 c4@7 ~@5 a3@4 ~@4 b3@4 a3@16, ~@8 [g3,b3]@16 a3@11 ~@5 g#3@8 ~@16, ~@8 e4@7 ~ d4@8 ~@8, ~@11 e3@5]/4", // Am G
  M: "~@8 f4 ~@7", N: "[[f#3,a#3,a#4]@16 [f3,g#3,g#4]@16 [d#3,f#3,f#4]@13 ~@3, c#4@11 ~]/3",
})).s("gm_string_ensemble_2").gain(0.12)

// chords · acoustic guitar nylon · "ON THE"
const acoustic_guitar_nylon = note(`<
  ~@9 A B C D E F G D H I J K L M N O P Q ~@12 A B C D E F G D H I J R L M S@2 P Q ~@16 T U V@3
>`.pickRestart({
  A: "~ c4@3, f2, ~ f3@7", B: "~ c4@3, e2@15 ~, ~ g3@7",
  C: "~@5 c4@3 b3 ~@3 e3@2 a2 ~, d2@15 ~, ~@2 e3@7 c4@6 ~, ~@3 f3@12 ~, ~@4 a2 a3@3",
  D: "~@8 b3@7 ~, g2@15 ~, ~@2 d3@13 ~, ~ c4 ~@2, ~@6 g3@9 ~", E: "~ c4@3, f2, a6 c6@2 ~, ~ f3@7, ~ f6@5 ~@2",
  F: "~ c4@3, e2, ~ g3@7", G: "~@5 c4@3 ~@4 e3@2 a2 ~, d2@15 ~, ~@2 e3@6 b3 c4@6 ~, ~@3 f3@12 ~, ~@4 a2 a3@3",
  H: "~@2 f3@2 c4@2 f3@2 [g2,f3,e4]@7 ~, d3@3 ~@5", I: "~@2 g3@2 ~@2 g3@2 [f2,e4]@7 ~, [c3,e4] ~, ~ [e3,c4] ~@2",
  J: "a#2 ~@2 a3 g#3 b3 ~ g#3, f3 e2, ~ a#3@2 ~@5, ~ d4 ~ e4",
  K: "~ a3 ~ a3 c#4 ~@2 e4, a2, c4@3 ~ e3@4, ~@2 e4@2 ~ a3@3, ~@3 [c#4,a4]", // F#m
  L: "~@3 c3 ~@3 g4, d3@7 ~ b2@8, ~@2 a3@5 ~@3 g3@6, ~ f4 ~ b3",
  M: "~@7 e4, [c3,e4]@2 a2 c4, ~ g3@3 ~ f3@3, ~ b3@3, ~@3 b2@5", // C
  N: "~@3 f3 ~@3 g#3, [a#2,d4] e2, ~ f3@2 ~@2 b2@3, ~@2 a#3@2 g#3@3 ~, ~@3 e3", // A#
  O: "~@3 e3 ~@3 c4, [a2,a3] [g2,e4], ~ e3@2 ~@2 e3@3, ~ c4 a3!2", P: "~ f3@3, [f2,c4], f3 ~@3, ~ c3@7",
  Q: "~@2 d3@2 [g3,b3] ~@11, g2@5 ~@11", R: "~ a3 e4 a3 c#4 ~@2 e4, a2, c4@3 ~ e3@4, ~@5 a3@3, ~@3 [c#4,a4]",
  S: "[~@3 f3 ~@3 g#3 ~@3 e3 ~@3 c4, [a#2,d4] e2 ~@2, ~ f3@2 ~@2 b2@3 [a2,a3]@4 [g2,e4]@4, ~@2 a#3@2 g#3@3 ~@3 c4@2 a3@2 a3@2, ~@6 e3@3 e3@2 ~@2 e3@3]/2", // A# A C
  T: "~ c#4@3, f#2, ~ f#3@7", U: "~ c#4@3, f2@15 ~, ~ g#3@7",
  V: "[~@6 c#4@9 ~ c4@18 ~@14, d#2 ~@2, ~@2 f3@13 [a#2,f3,g#3]@18 ~@15, ~ f#3@4 ~@11]/3", // A#7
})).s("gm_acoustic_guitar_nylon").gain(0.56)

// chords · electric guitar jazz · "ON THE"
const electric_guitar_jazz = note("<~@35 A B C@2 ~@39>".pickRestart({
  A: "~@6 c4@9 ~, ~ b3@3", B: "~@3 c4@5, ~ b3@3",
  C: "[~@6 c4@6 ~@2 [b3,d4] [c4,e4] [b3,d4]@6 [a3,c4]@8 ~@2, ~@2 b3@4 ~ g4@8 ~]/2", // Bm C Bm Am
})).s("gm_electric_guitar_jazz").gain(0.48)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@27 A@3 ~ A@3 ~@3 A ~@9 A ~@2 B A ~@2 C ~@2 A@3 ~ A@3 ~ A@3 ~ A@3 ~@6
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@3 x ~@4",
})).gain(0.12)

// drums · snare
const snare = s("sd").struct("<~@26 [~ x ~@2] [~ x ~ x]!10 [~ x ~@2] ~@18 [~ x ~@2] [~ x ~ x]!16 ~@5>").gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@26 [x!4 ~@12] ~@29 [x!4 ~@12] ~@21>").gain(0.12)

// drums · low tom
const low_tom = s("lt").struct("<~@26 A ~@3 A ~@3 A ~@21 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5>".pickRestart({
  A: "~@15 x",
})).gain(0.24)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A@25 ~@2 B ~ C ~ B ~ C ~@4 D@17 ~@2 B ~ C ~ B ~ C ~ B ~ C ~ B ~ C ~ B ~@3
>`.pickRestart({
  A: "~@2 x!2", B: "~@13 x ~@2", C: "~@11 x ~@2 x ~", D: "~@3 x ~ x ~ x",
})).gain(0.12)

// drums · mid tom
const mid_tom = s("mt").struct("<~@26 A ~@3 B ~@3 B ~@21 A ~@3 B ~@3 B ~@3 B ~@3 B ~@5>".pickRestart({
  A: "~@11 x ~@2 x ~", B: "~@7 x",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@26 A ~@3 B ~@3 B ~@21 A ~@3 B ~@3 B ~@3 B ~@3 B ~@5>".pickRestart({
  A: "~ x", B: "~@13 x ~@2",
})).gain(0.36)

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

// drums · ride
const ride = s("rd").struct("<~@35 [~@2 x!3 ~ x!2] [x ~ x!3 ~ x!2] [x!2 ~ x] ~@40>").gain(0.3)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@35 [~ x ~@3 x ~@2]!2 ~@41>").gain(0.18)

stack(
  bass, bass_soft, piano, electric_guitar_muted, string_ensemble_2, string_ensemble_2_soft, acoustic_guitar_nylon,
  electric_guitar_jazz, kick, kick_soft, snare, snare_soft, low_tom, hihat, hihat_soft, mid_tom, high_tom, crash, ride,
  ride_soft
)

More by Fiorella Mannoia