Strudelify

Mitico amore

Antonello Venditti

KeyG majorTempo66 bpm
0:00/0:00
// Mitico amore — Antonello Venditti
// 66 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/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 · piano
const bass = note("<[c2 b1]!2 [c2 d2] [c2@13 d2@3] [e2 d2] [a1 b1] [c2 d2] c2 ~@74>").s("gm_piano").gain(0.35).pan(0.4)

// bass · fretless bass
const bass_2 = note(`<
  ~@8 A B C D E B C F G H I J G H I K A B C D E B C F L M N O P@3 Q H@3 R S T@2 U A B C D E B C F L M N O P@3 Q H@3 R S
  T@2 V S T@2 V S T@2 V S T
>`.pickRestart({
  A: "c1 b1", B: "a1 b1", C: "c2 d2", D: "c2@13 d2@3", E: "e2 d2", F: "c2@13 a1@3", G: "a#1 a1", H: "g1 f#1",
  I: "f1 e1", J: "c2@6 c2@7 a1@3", K: "c2@6 c2@7 d2@3", L: "a#1 g1", M: "d#1 f1", N: "a#1 a1 g1 f1", O: "c2 a1",
  P: "d#2 d2", Q: "d#2@5 ~ d#2@7 f2@3", R: "g1@13 a1@3", S: "b1 a1", T: "e1 f#1", U: "g1@13 b1@3", V: "g1@6 g1@7 a1@3",
})).s("gm_fretless_bass").gain(0.35)

// other · overdriven guitar
const overdriven_guitar = note("<~@68 A B C D E@2 F G A B C D E@2>".pickRestart({
  A: "e4@3 d4@3 a4 f#4@9", B: "e4@3 d4@3 a4 a4@6 ~@2 [b4,c#5]", C: "d5@2 c#5 a4@2 e5@2 a4@2 e4@2 d4@4 ~", D: "a4@3 ~",
  E: "[e4@3 d4@3 a4 f#4@2 d5@5 a4 f#4@6 ~@3 a3@7 ~]/2", F: "b4@8 a4@6 g4 f#4", G: "g4 a4 d4 e4@8 ~@5",
})).s("gm_overdriven_guitar").gain(0.13).pan(0.6)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@43 A@2 B C@2 ~@19 D@2 ~@6 D@2 ~@5>".pickRestart({
  A: "[~@9 g5!4 f#5 d5 b4@3 g4 a4 b4@2 c#5@2 e5@2 d5@2 a4@2 f#4@2]/2", B: "~@2 g4 a4 b4@2 c#5@2 e5@2 d5@6",
  C: "[~@2 g4 a4 b4@2 c#5@2 e5@2 d5@2 a4@2 ~ b4@13 ~@4, ~@7 f#4 ~@8]/2", D: "[~@9 g5!4 f#5 d5 b4@4 ~@13]/2",
})).s("gm_overdriven_guitar").gain(0.15).pan(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@16 A B C D A B C D E F G H I J I K L M N O P Q R S T@3 U V W@2 X E F G H I J I K L M N O P Q R S T@3 Y V W@2 Z V W@2
  Z V W@2 Z V AA
>`.pickRestart({
  A: "d6 c6", B: "f6 d#6 e6 d6", C: "c6", D: "d6", E: "g5@3 d6", F: "e5@5 g5 f#5 d5", G: "e5 d5", H: "e5", I: "g6@3 d6",
  J: "e6@5 g6 f#6 d6", K: "e6@13 f6@3", L: "d6@3 c6 a5@2 a#5@2", M: "a#5@4 c6 a#5 a5 c6", N: "d6 f5 a#5 d6",
  O: "d#6 f6", P: "[g3,d#4] [a#3,d4]", Q: "[c4,d#4] [f3,d4]", R: "[g3,a#3,d#4] [f3,a#3,d4]",
  S: "[g3,c4,d#4]@12 ~ [f3,c4]@3", T: "[g3,b3] [f#3,a3], d4", U: "[g3,b3,d4]@12 ~ [f#3,a3,d4]@3", V: "g3 f#3, d4",
  W: "[g3,b3] [a3,d4]", X: "[g3,d4]", Y: "[g3,b3,d4]@13 [f#3,a3,d4]@3", Z: "[g3,d4]@12 ~ [a3,d4]@2 ~", AA: "[g3,b3] ~",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.7)

// chords · banjo
const banjo = note("<~@32 A B C D ~@20 A B C D ~@22>".pickRestart({
  A: "[f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~", // A#
  B: "[g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // D# F
  C: "[f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,c4,d4] ~ [f3,c4,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // A# Dm7 A# F
  D: "[g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // G# F
})).s("gm_banjo").gain(0.06).pan(0.3)

// drums · rim
const rim = s("rim").struct("<~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@16 ~@34>".pickRestart({
  A: "~@3 x", B: "~ x ~@2",
})).gain(0.33)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@51>".pickRestart({
  A: "~ x ~@2",
})).gain(0.19)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~@27>".pickRestart({
  A: "~@7 x ~@8",
})).gain(0.11)

// drums · snare
const snare = s("sd").struct("<~@32 A@16 B@23 C B@3 C B@3 C B C>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.26)

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

// drums · high tom
const high_tom = s("ht").struct("<~@71 [~ x] ~@3 [~ x] ~@3 [~ x] ~@2>").gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@19 A B ~@2 A B ~@2 A B ~@2 A B ~@3 B ~@2 A B ~@2 A B ~@2 A ~@3 A B ~@2 A B ~@3 B ~@2 A B ~@2 C B ~@2 C B ~@2 C B ~@2
  C B ~
>`.pickRestart({
  A: "~@13 x ~@2", B: "x", C: "~@6 x ~@6 x ~@2",
})).gain(0.11)

// drums · tambourine
const tambourine = s("tb").struct("<~@19 A ~@3 A ~@3 A ~@3 A@17 ~@3 A ~@3 A@16 ~ A@3 ~ A@3 ~ A ~>".pickRestart({
  A: "~@3 x",
})).gain(0.26)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@16 A B A C A B A C A B A C A B A C@5 D C@2 E C@3 F C@3 F A B A C A B A C@5 D C@2 E C@3 G C@3 H D C@2 H D C@2 H D I
>`.pickRestart({
  A: "x!4 ~ x!7 ~ x!3", B: "x!16", C: "x!12 ~ x!3", D: "~ x!11 ~ x!3", E: "x!12 ~@3 x", F: "x!12 ~@2 x!2",
  G: "x!6 ~ x!2 ~@2 x ~@2 x!2", H: "x!6 ~ x!2 ~@5 x!2", I: "x!9 ~@7",
})).gain(0.04)

stack(
  bass, bass_2, overdriven_guitar, overdriven_guitar_2, string_ensemble_2, banjo, rim, rim_soft, kick, kick_soft, snare,
  mid_tom, high_tom, crash, tambourine, shaker
)

More by Antonello Venditti