Strudelify
Vivere una favola cover art

C'è Chi Dice No

Vivere una favola

Rossi Vasco

KeyC♯ minorTempo73 bpm
0:00/0:00
// Vivere una favola — Rossi Vasco
// 73 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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.

// other · piano · "Canto"
const piano = note("<~@8 A@2 ~@88>".pickRestart({
  A: "[g#4 ~ g#4@10 g#4 e4 f#4@13 ~@5]/2",
})).s("gm_piano").gain(0.8)

// bass · fretless bass · "Bass 1&2"
const bass = note("<~@29 A B C@2 ~@5 D E F G ~@56>".pickRestart({
  A: "~@6 f#1 g#1", B: "a1@5 ~ e2@10, ~@6 d#2 ~@9", C: "[b1@6 f#2@6 b1@7 f#2@3 d#3@6 b1@4, ~@22 c#3 ~@9]/2",
  D: "~@5 e1 f#1 g#1", E: "a1@3 e2@3 c#3@6 e2@4, ~@6 b2 ~@9", F: "b1@3 f#2@5",
  G: "b1@3 f#2@3 d#3@4 c#3@2 b2@2 g#2@2, ~@6 c#3 ~@9",
})).s("gm_fretless_bass").gain(0.59)

// bass · slap bass 2 · "Bass 1&2"
const bass_2 = note(`<
  ~@42 A B C B C D E F C B C B C D E F C B G H C B I J C B C B C B K L C B G H C B I J ~@16
>`.pickRestart({
  A: "~ g#1 c#2 e2@2 e2@2 c#2!2 g#1 c#2 e2@2 e2 g#1@2", B: "f#1@2 f#1!2 ~ f#1@3 ~ f#1!2 a1 ~ a1 f#1@2",
  C: "c#2 g#1 c#2 e2@2 e2@2 c#2!2 g#1 c#2 e2@2 e2 g#1@2", D: "g#1@2 g#1!2 ~ g#1@3 ~ g#1!2 b1 ~ b1 g#1@2",
  E: "f#1 e1 f#1 a1 ~ a1 f#1!3 e1 f#1 a1 ~ a1 f#1 ~", F: "g#1!3 g#1@5 g#1 f#1 g#1 b1 ~ c2 g#1 c2",
  G: "g#1 ~ g#1 g#1@4 ~@2 f#1 g#1 b1@2 b1 g#1@2", H: "f#1 g#1!2 g#1@5 ~ f#1 g#1 b1 ~ b1 c2 f#1",
  I: "a1!4 a1@3 ~@2 a1 a1@5 ~", J: "b1!4 b1@4 ~ b1 b1@3 ~@3", K: "a1!3 a1@2 a1@3 ~ a1!2 a1@2 a1 a1@2",
  L: "b1!3 b1@2 b1@3 ~ b1!2 b1@2 b1 b1@2",
})).s("gm_slap_bass_2").gain(0.59)

// chords · synth strings 1 · "SynStrings"
const synth_strings_1 = note(`<
  A@8 B@4 C@2 D E F@4 G@2 H I J@2 K@2 L@3 M@2 N@2 O@4 P Q@2 R@4 S T D U V@4 S T D U V@2 W X V@2 Y Z AA AB AA AB AA AB AC
  AD V@2 W X V@2 Y Z AE@16
>`.pickRestart({
  A: "[[c#3,g#3] [f#2,a3] [c#3,g#3] [f#2,a3] [c#3,g#3] [f#2,a3] [c#3,g#3] [f#2,a3], [c#4,e4]]/8", // C#5 F#m C#5 F#m C#5 F#m C#5 F#m …
  B: "[[c#3,g#3] [f#2,a3] [c#3,g#3] [f#2,a3], [c#4,e4]]/4", // C#5 F#m C#5 F#m C#m
  C: "[c#2@3 d#2@3 e2@4 f#2@6 [g#2,b3,d#4]@16, g#3, [c#4,e4] ~]/2", D: "[f#2,f#3,a3,c#4]", E: "g#2@3 c2, [g#3,c4,d#4]",
  F: "[c#2@3 d#2@2 e2@3 [f#2,a3,e4]@8 c#2@3 d#2@2 e2@3 [f#2,a3,e4]@8, c#4, [g#3,e4] ~ [g#3,e4] ~]/4", // F#m7 C#m
  G: "[c#2@6 d#2@4 e2@3 f#2@3 [g#2,b3,d#4]@16, g#3, [c#4,e4] ~]/2", H: "f#2@7 d#2, [f#3,a3,c#4]",
  I: "g#2@2 a#1 c2, [g#3,c4,d#4]", J: "[c#2 d#2 e2 g#2 f#2 g#2 a2@2, c#4, [g#3,e4] [a3,e4]]/2",
  K: "[[g#2,b3]@4 g#1 a#1 c2 d#2, [g#3,d#4], ~ c4]/2", // G#m G#5
  L: "[c#2@3 d#2@3 e2@3 f#2@3 g#2@4 f#2@12 f#2@2 g#2@2 a2@6 e3@10, [c#4,e4], g#3 a3@2]/3", M: "[b2,b3,d#4,f#4]/2",
  N: "[c#2@12 g#2@4 f#2@3 g#2@3 a2@3 g#2@3 f#2@4, [c#4,e4], g#3 a3]/2", // C#m
  O: "[c#2@7 d#2 e2@4 g#2@4 f#2@12 g#2@4 c#2@8 d#2@4 e2@4 f#2@10 e2@2 f#2@2 g#2@2, c#4, e4 ~, g#3 a3 [g#3,e4] [a3,e4]]/4", // C#m A5
  P: "a2@3 e2, [a3,c#4,e4]", Q: "[b2@3 f#2@5 b2@8, [b3,d#4,f#4]]/2", R: "[g#3 a3, [c#4,e4]]/2", S: "[c#3,g#3,c#4,e4]",
  T: "[g#2,g#3,b3,d#4]", U: "[g#2,g#3,c4,d#4]", V: "[g#3@2 ~ f#4, c#4, e4@3 ~, ~ a3]/2", W: "[g#3,b3,d#4]",
  X: "[g#3,c4,d#4]", Y: "[a2,a3,c#4,e4]", Z: "[b2,b3,d#4,f#4]", AA: "[c#4,e4,g#4]", AB: "[c#4,e4,a4]",
  AC: "[a3,c#4,e4]", AD: "[b3,d#4,f#4]", AE: "[[c#3,g#4] [f#3,a4], [c#4,e4]]/2",
})).s("gm_synth_strings_1").gain(0.44).pan(0.4)

// chords · pad warm · "Pad"
const pad_warm = note("<A@8 B C B C B D E F B C B C B D E F ~@58 G@10 H@2 ~@4>".pickRestart({
  A: "[g#3 a3 g#3 a3 g#3 a3 g#3 a3, c#4, e4@3 e4]/8", B: "[c#4,e4,g#4]", C: "[c#4,e4,a4]", D: "[g#3,b3,d#4]",
  E: "[f#3,a3,c#4]", F: "[g#3,c4,d#4]", G: "[[c#3,g#4] [f#3,a4], [c#4,e4]]/2", H: "[[c#4,e4], [c#3,g#4] ~]/2",
})).s("gm_pad_warm").gain(0.38).pan(0.6)

// chords · pad warm · "Pad" · soft notes
const pad_warm_soft = note("<~@93 A B@4>".pickRestart({
  A: "[f#3,a4]", B: "[[c#3,g#4] [f#3,a4], [c#4,e4]]/2",
})).s("gm_pad_warm").gain(0.16).pan(0.6)

// chords · epiano2 · "Seq"
const epiano2 = note(`<
  ~@8 A@5 B A C A@5 D E F G H I F G H J I@2 G J G J G J@2 I@2 K L M L K N O P K L M L K N O P K L Q P K L ~@2 K L K L K
  L J I K L Q P K L J I ~@16
>`.pickRestart({
  A: "[c#4,e4]@2 ~ [c#4,e4] ~ [c#4,e4] ~@2 [c#4,e4]@2 ~ [c#4,e4] ~ [c#4,e4] ~@2", // C#m
  B: "[b3,d#4]@2 ~ [b3,d#4] ~ [b3,d#4] ~@2 [b3,d#4]@2 ~ [b3,d#4] ~ [b3,d#4] ~@2", // B
  C: "[c4,d#4]@2 ~ [c4,d#4] ~ [c4,d#4] ~@2 [c4,d#4]@2 ~ [c4,d#4] ~ [c4,d#4] ~@2", // Cm
  D: "[b3,d#4] ~ [b3,c#4] [b3,d#4] ~ [b3,d#4] ~@2 [b3,d#4] ~ [b3,c#4] [b3,d#4] ~ [b3,d#4] ~@2", // B Bsus2 B Bsus2 B
  E: "[c#4,e4] ~ d#4 [c#4,e4] ~ [c#4,e4] ~@2 [c#4,e4] ~ d#4 [c#4,e4] ~ [c#4,e4] ~@2", // C#m
  F: "[c4,d#4] ~ c#4 [c4,d#4] ~ [c4,d#4] ~@2 [c4,d#4] ~ c#4 [c4,d#4] ~ [c4,d#4] ~@2", // Cm
  G: "[e4,g#4] ~ f#4 [e4,g#4] ~ [e4,g#4] ~@2 [e4,g#4] ~ f#4 [e4,g#4] ~ [e4,g#4] ~@2", // E
  H: "[f#4,a4] ~ g#4 [f#4,a4] ~ [f#4,a4] ~@2 [f#4,a4] ~ g#4 [f#4,a4] ~ [f#4,a4] ~@2", // F#m
  I: "[d#4,f#4] ~ e4 [d#4,f#4] ~ [d#4,f#4] ~@2 [d#4,f#4] ~ e4 [d#4,f#4] ~ [d#4,f#4] ~@2", // D#m
  J: "[e4,a4] ~ g#4 [e4,a4] ~ [e4,a4] ~@2 [e4,a4] ~ g#4 [e4,a4] ~ [e4,a4] ~@2", // A5
  K: "~@2 [g#3,c#4] ~ [g#3,c#4] [c#4,e4]@2 ~ [g#3,c#4] ~ [g#3,c#4] [c#4,e4] ~ [c#4,e4] [g#3,c#4] ~", // C#5 C#m C#5 C#m C#5
  L: "~@3 [c#4,e4] ~ [c#4,e4]@2 ~ c#4 a3 c#4 [c#4,e4] ~ [c#4,e4] c#4 ~", // C#m
  M: "~@2 [c#4,e4] ~ [c#4,e4] [e4,g#4]@2 ~ [c#4,e4] ~ [c#4,e4] [e4,g#4] ~ [e4,g#4] [c#4,e4] ~", // C#m E C#m E C#m
  N: "~@3 [b3,d#4] ~ [b3,d#4]@2 ~@4 [b3,d#4] ~ b3!2 ~, ~@13 d#4@2 ~", // B
  O: "~@2 [a3,c#4] ~ [a3,c#4] [c#4,e4] ~@2 [c#4,e4] ~ [a3,c#4] [c#4,e4] ~ [c#4,e4] [a3,c#4] ~", // A C#m A C#m A
  P: "~@3 [c4,d#4] ~ [c4,d#4] ~@5 [c4,d#4] ~ [c4,d#4] ~@2", // Cm
  Q: "~@2 [g#3,b3] ~ [g#3,b3] [b3,d#4]@2 ~ [g#3,b3] ~ [g#3,b3] [b3,d#4] ~ [b3,d#4] [g#3,b3] ~", // G#m B G#m B G#m
})).s("gm_epiano2").gain(0.54)

// other · pad new age · "Fantasia"
const pad_new_age = note("<~@21 A B ~@27 C D C E C F C F G H I J G H K L ~@8 G H I J G H K L ~@16>".pickRestart({
  A: "~@7 e5", B: "c#5@3 ~@13", C: "~@3 g#5 ~@2 f#5 ~@2 e5 ~@2 d#5 ~ e5 ~", D: "c#5 ~@15", E: "c#5 ~@2 a5 ~@12",
  F: "d#5 ~@15", G: "c#5 ~@2 g#5 ~@2 f#5 ~@2 e5 ~@2 d#5 ~ e5 ~", H: "c#5 ~@2 b5 ~@2 a5 ~@9",
  I: "d#5 ~@2 g#5 ~@2 a#5 ~@2 b5 ~@2 g#5 ~ d#5 ~", J: "~@3 g#5 ~@2 a#5 ~@2 c6 ~@2 g#5 ~ d#5 ~",
  K: "c#5 ~@2 e5 ~@2 b5 ~@2 a5 ~@6", L: "f#5 ~@2 g#5 ~@2 a5 ~@2 b5 ~@2 c#6 ~ d#6 ~",
})).s("gm_pad_new_age").gain(0.55).pan(0.6)

// other · electric guitar clean · "Clean arr"
const electric_guitar_clean = note("<~@50 A B A C A D A D E F G H E F I J ~@8 E F G H E F I J K ~@15>".pickRestart({
  A: "~@3 g#3@2 ~ f#3@2 ~ e3@2 ~ d#3@2 e3@2", B: "c#3 ~@7", C: "c#3@2 ~ a3@2 ~@11", D: "d#3 ~@7",
  E: "c#3@2 ~ g#3@2 ~ f#3@2 ~ e3@2 ~ d#3@2 e3@2", F: "c#3@2 ~ b3@2 ~ a3@2 ~@8",
  G: "d#3@2 ~ g#3@2 ~ a#3@2 ~ b3@2 ~ g#3@2 d#3@2", H: "~@3 g#3@2 ~ a#3@2 ~ c4@2 ~ g#3@2 d#3@2",
  I: "c#3@2 ~ e3@2 ~ b3@3 a3@3 ~@4", J: "f#3@3 g#3@3 a3@3 b3@3 c#4@2 d#4@2", K: "[c#4,e4]",
})).s("gm_electric_guitar_clean").gain(0.66).pan(0.4)

// other · overdriven guitar · "Overdrive"
const overdriven_guitar = note("<~@66 A B C@2 D@2 E F G ~@23>".pickRestart({
  A: "d#5@7 g#4@9", B: "d#5@4 g#5@2 a5 f#5@7 ~@2",
  C: "[~@3 [c#5,e5] b4 [a4,e5] e5 g#4 e5 a4@4 [g#4,a4] [f#4,g#4] f#4@2 e4 [d#4,e4,f4] ~ c#4@8 c#4@3 ~]/2", // C#m A5 Amaj7 F#sus2
  D: "[g#3 [a3,b3] [c#4,d#4] [e4,f#4] [g#4,a4] [f#4,g#4] [g#4,a#4] [b4,c#5,d#5] [d#5,e5] [c#5,d#5] [b4,c#5,d#5] [f#4,g#4,a4] [d#4,e4] [c#4,d#4] [b3,c#4] a3@3 g#3 f#3 e3@5 ~ e3 [f#3,g#3] e4 [f#4,g#4] [g#4,a4] [b4,c#5,d#5]]/2", // Asus2 C#sus2 Esus2 Amaj7 F#sus2 G#sus2 B Emaj7 …
  E: "f#5@3 e5 [d#5,e5] [c#5,d#5] b4@3 e5 a4 e5 g#4 e5 f#4@2, e5 ~@15", // Emaj7 C#sus2
  F: "e4 [f#4,g#4] a4 [b4,c#5,d#5] [b4,c#5] [b4,c#5,d#5] [c#5,d#5,e5] [d#5,e5,f#5] [c#5,d#5,e5] [c#5,d#5] [e5,f#5,g#5] [e5,f#5] a5@4, ~@12 g#5 ~@3", // F#sus2 B Bsus2 B C#m D#m C#m C#sus2 …
  G: "g#5@15 ~",
})).s("gm_overdriven_guitar").gain(0.8)

// other · acoustic guitar steel · "Ac.Guitar"
const acoustic_guitar_steel = note("<~@82 A B C D ~@4 E@3 F G H I ~>".pickRestart({
  A: "~ c#4 e4 g#4 b4 d#5 [c#5,d#5] c#5 g#4@4 ~@3 d#4", B: "[c#4,f4] b3 d#4 c#4 g#4 f#4 c#5@5 ~@4 b2",
  C: "c3 e3 f#3 g#3 b3 c#4 e4 d#4 e4 d#4 c#4 b3@3 g#3 g3", D: "f#3@3 e3 ~ f#3 c#3@8 ~@2",
  E: "[~ c#4 e4 g#4 b4 d#5 c#5 ~ b4@5 ~@2 e5@2 d#5 ~ f#5 ~ e5 ~ c5@3 b4 ~ f4@10 e4 [b3,c#4,d#4] c#4@6 ~ c#3]/3", // B
  F: "g#3 f#3 c#4 b3 d#4 c#4 e4 d#4 ~ f#4@4 e4 b4@2", G: "~ g#4@11 ~@2 [g#4,a4] [e4,f#4]",
  H: "f#4@6 ~@3 e4 d#4 e4 d#4 c#4 ~@2", I: "~@5 f#4 ~@2 g#4 ~ c#4@3 ~@3, ~@4 c#4@2 f#4@2 ~ f#4@2 ~@5, ~@7 c#4@3 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// other · acoustic guitar steel · "Ac.Guitar" · soft notes
const acoustic_guitar_steel_2 = note("<~@95 A@2 B>".pickRestart({
  A: "[~@14 b3 c#4@4 ~@8 f#4 ~@2 f#4 g#4, ~@14 f#4 ~, ~@29 c#4@3]/2",
  B: "~@2 f#4 ~@2 g#4 ~@2 f#4 ~@2 f#4 g#4 ~@2 f#4, f#4@2 ~ f#4@2 ~ f#4@2 ~ f#4@2 ~@2 f#4@2 ~, ~ c#4@3 c#4@3 c#4@3 c#4@4 c#4@2",
})).s("gm_acoustic_guitar_steel").gain(0.21)

// drums · kick
const kick = s("bd").struct("<~@42 [x ~@6 x!2 ~@7]!48 ~@8>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@42 [~ x ~ x]!48 ~@8>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@4 x ~@2 x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<[~ x!3 ~ x!3 ~ x!3 ~ x!3]!92 [~ x!3 ~ x!3 ~ x!3 ~ x ~@2] ~@5>").gain(0.72)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@92 [~@14 x!2] [~ x!3 ~ x!3 ~ x!3 ~ x!3]!5>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@5 x!3 ~@3 x ~@4",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<[x!4]!92 x ~@5>").gain(0.8)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@92 [~ x!3] [x!4]!5>").gain(0.24)

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

// drums · tambourine
const tambourine = s("tb").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 ~@8
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.8)

stack(
  piano, bass, bass_2, synth_strings_1, pad_warm, pad_warm_soft, epiano2, pad_new_age, electric_guitar_clean,
  overdriven_guitar, acoustic_guitar_steel, acoustic_guitar_steel_2, kick, snare, low_tom, hihat, hihat_soft, mid_tom,
  open_hat, open_hat_soft, crash, tambourine
)

More by Rossi Vasco