Strudelify
Quella che non sei cover art

Buon compleanno Elvis

Quella che non sei

LIGABUE

KeyG majorTempo87 bpm
0:00/0:00
// Quella che non sei — LIGABUE
// 87 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24, guitar program 29, guitar program 27.
setcpm(87/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 · electric bass finger
const bass = note(`<
  ~@2 A B A C D B A E F G F H I J K L M N O P O P Q R Q R A B A C D B A E F G F H I J K L M N O P O P S T S T U V W V U
  V W V F G F H I J K L M N O P O X O P O P O P O P Y@2
>`.pickRestart({
  A: "e1 ~ e1@6 c2 ~ c2@6", B: "g1 ~ g1@4 ~ g1 a1@2 d2 e2 d2@2 g2@2", C: "g1 ~ g1@4 ~ g1 a1@2 d2 e2 a2 g2@3",
  D: "e1 ~ e1@2 b1@4 c2 ~ c2@6", E: "g1 ~ g1@4 ~ g1 a1 b1 d2 e2 a2 g2@3", F: "e1 ~ e1@2 b1@4 c2 ~ c2@5 g1",
  G: "g1 ~ g1@4 ~ g1 d2 ~ d2@5 ~", H: "g1 ~ g1@4 ~ g1 d2 ~ d2@4 d2@2", I: "c2@4 a#2@4 b2 c3 ~ c2 c3@4",
  J: "b1 c2 ~ b1 c2@4 b2 c3!2 b2 c3@4", K: "d2 e2!2 d2 e2@4 c2 c2@2 c2 c2@4", L: "g1!4 d2!4",
  M: "d2 e2@2 d2 e2@4 c2 c2@2 c2 c2@4", N: "g1!4 d2!2 d2@2", O: "e1 ~ e1@2 b1@4 c2 ~ c2@2 c2@3 g1",
  P: "g1 ~ g1@2 g1@3 g1 d2 ~ d2@2 a2 g2@3", Q: "e1@2 e1@3 ~@3 e1@2 e1@4 ~@2", R: "e1 e1@2 ~ g2@2 d2@2",
  S: "e1 ~ e1@2 a2@4 e1 ~ e1@2 a2@4", T: "e1!2 a2@2 g2@2 d2@2", U: "e2 ~ e2@2 g2@2 e2@2 c2 ~ c2@4 c2@2",
  V: "g1 ~ g1@6 d2@4 d#2@4", W: "e2 ~ e2@2 g2@4 c2 ~ c2@4 c2@2", X: "g1 ~ g1@2 g1@3 g1 d2 ~ d2@2 d3@2 ~@2",
  Y: "[e1@31 ~]/2",
})).s("gm_electric_bass_finger").gain(0.7)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B C D E F C G E H I@3 J K L M N O P Q R S@2 T U T U C D E F C D E F I@3 J K L M N O P Q R S@2 T U T U V W V W V W X
  Y Z AA Z AB K L M N O P Q R S@2 M N AC AD M N AC AE AF@2
>`.pickRestart({
  A: "~@8 e2@2 ~@2 a2 b2 d3@2, ~@5 e2@3", B: "g2 ~ e3@6, ~ e2@7",
  C: "e2 ~@3 b3 a3@3 ~@6 d3@2, ~ e2@3 c3@3 ~, ~@5 e3@3, ~@3 g3",
  D: "g3@4 ~@2 b2 ~@7 a3@2, b3 ~@3 [b3,d4]@4 f#2@8, ~@5 d3@3, ~@3 d4", // Bm
  E: "e2 ~@3 b3 a3 ~ a3 ~@4 g3@3 g3, ~ e2@3 c3@3 ~, ~@5 e3@3",
  F: "[g2,g3]@4 [b3,d4]@3 d3 ~@6 a3@2, b3 ~@7 d3@8, ~@5 e4@3, ~@3 d4", // G Bm
  G: "~@2 b3@2 ~@2 b2 ~@7 a3@2, g3 [b3,d4] f#2@2, ~@5 d3@3, ~@3 d4", // Bm
  H: "g3@4 [b3,d4]@3 d3 ~@6 a3@2, b3 ~@7 d3@8, ~@5 e4@3, ~@3 d4", I: "~ d4 ~@2 d4 b3 a4 b3, g4 b3 ~@2, ~@6 g4@5 ~@5",
  J: "~ d4 ~@2 d4 b3 a4!2, g4 b3 ~@2, ~@6 g4@5 ~@5",
  K: "[c3,g3] [c3,g3]@3 [c3,g3,c4]@2 [g2,a2]!3 [c3,c4]@3 [g3,c4,e4]@2 [g2,a2]!2, ~ c4 ~@14", // C5 Gsus2 C Gsus2
  L: "[g2,a2] [c3,g3,d4]@3 [c3,g3,c4]@2 [g2,a2]!3 [c3,g3,c4]@3 [c3,g3,e4]@2 [g2,a2]!2", // Gsus2 Csus2 C5 Gsus2 C5 C Gsus2
  M: "[e3,b3,e4]@3 ~ [e3,b3,e4]@2 [e2,f2]!2 [c3,g3,c4]@3 [c3,g3,c4] [c3,g3,c4]@4", // E5 Fmaj7 C5
  N: "[g2,d3,g3]@3 ~ [g2,d3,g3]@2 [e2,f2]!2 [d3,a3,d4]@3 [d3,a3,d4] [d3,a3,d4]@4", // G5 Fmaj7 D5
  O: "[e3,b3,e4]@4 [e3,b3,e4]@2 [e2,f2]!2 [c3,g3,c4]@3 [c3,g3,c4] [c3,g3,c4]@4", // E5 Fmaj7 C5
  P: "[g2,d3,g3]@4 [g2,d3,g3]@2 [e2,f2]!2 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@4", // G5 Fmaj7 D
  Q: "b3 ~@3 [a3,b3]@2 a3@2 a3 ~@3 b3@2 b3 ~, ~ a3@3 ~@4 b3@4 ~@4, ~@2 e4@7 ~ e4@6", // Asus2
  R: "[a3,b3] a3 a3@2 [a3,b3] b3 b3@2, ~ e4@4 e4@3", S: "g3 ~@3 a3@4 b3@2 ~@2 b3@4, a3@4 ~@4 a3 ~@7, ~@2 e4@7 ~ e4@6",
  T: "e2 ~ e2@2 b3 a3@3 e2@2 ~@2 b3 a3@3, ~@2 e3@2 ~ e2@2 ~, ~@3 e3",
  U: "e2@2 ~@2 b3 a3@3 [b3,d4,g4]@4 [f#3,a3,d4]@4, ~ e2@2 ~@5, ~ e3 ~@2", // G D
  V: "e3@3 ~ [e3,b3]@2 [e2,f2]!2 [c3,g3]@3 [c3,g3] [c3,g3]@4", // E5 Fmaj7 C5
  W: "[g2,d3]@4 [g2,d3]@2 [e2,f2]!2 [d3,a3]@3 [d3,a3] [d#3,a#3]@4", // G5 Fmaj7 D5 D#5
  X: "[e3,b3]@4 [e3,b3]@2 ~@2 [c3,g3]@3 [c3,g3] [c3,g3]@4", Y: "[g2,d3]@4 [g2,d3]@3 ~ [d3,a3]@3 [d3,a3] [d#3,a#3]@4",
  Z: "e2 ~@3 b3 a3@2 a3 ~@4 g3@4, ~ e2@3 c3@4, ~@5 e3@3",
  AA: "[g2,b2]@2 [g2,b2]@2 [b3,d4]@3 g2 ~@6 a3@2, d4 ~ f#2@2, ~@5 d3@3, ~@3 d4", // G Bm
  AB: "[g2,b2]@2 [g2,b2]@2 [b3,d4]@3 g2 d4@2 e4@2 d4@4, d4 ~ [d3,a3]@2", // G Bm D5
  AC: "g3 ~@3 a3@4 b3@2 ~@2 b3@2 b3@2, a3@4 ~@4 a3 ~@7, ~@2 e4@7 ~ e4@6",
  AD: "g3 ~@3 a3@2 a3@2 b3@2 ~@2 b3@4, ~ a3@3 ~@4 a3 ~@7, ~@2 e4@7 ~ e4@6",
  AE: "g3 ~@3 a3@2 a3@2 b3@2 ~@4 g3@2, ~ a3@3 ~@4 a3 ~@3 b3@4, ~@2 e4@7 ~ e4@6", AF: "[[e3,g3,b3,e4]@31 ~]/2",
})).s("gm_distortion_guitar").gain(0.26).pan(0.4)

// chords · percussive organ
const percussive_organ = note(`<
  ~@14 A@2 B C B C D@2 E F G ~@11 H@4 A@2 B C I J D@2 E K G ~@3 L M L M L M L M ~@4 A@2 B C I J N@2 O P Q R S R S R S R
  T@2
>`.pickRestart({
  A: "[[e4,c5], g4 ~@31]/2", B: "[g4,b4,e5] [e4,g4,c5]", C: "[d4,g4,b4] [d4,f#4,a4]", D: "[d5 e5@27 d5@4]/2",
  E: "b4, a4 ~@15", F: "e5 d5, d5 ~@15", G: "e5 a5 [d5,e5,f#5,g5] [f#4,g4,a4,b4,c5] e4 ~@11, b5 ~@7", H: "[e4,g4]/4",
  I: "[g4,b4] [e4,g4,c5]", J: "~@3 d5!5, [d4,g4,b4] ~, ~@6 c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~",
  K: "e5@4 b4 a4 g4 a4, d5 ~@7 d4@8", L: "[e4,g4,b4] [e4,g4,c5]", M: "[b3,d4,g4]@2 [a3,d4,f#4] [d#4,g4,a#4]",
  N: "[d5 e5@23 d5@2 a#4 [g4,a4] a4!2 g4 ~, ~@24 c#5 ~@7]/2", O: "e5, d#5 ~@15",
  P: "d5@8 [a4,a#4] g4@3 a4!2 g4@2, c#5 ~@15", Q: "e5@2 [c5,d5] [f#4,g4,a4,b4] [c4,d4,e4] b3 ~@2 [g4,c5]@8",
  R: "[g4,b4] [f#4,a4]", S: "[g4,b4]@8 [g4,c5]@7 ~", T: "[[b4,e5,b5]@29 ~@3]/2",
})).s("gm_percussive_organ").gain(0.25).pan(0.7)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@24 A B A B C D E F C G E H ~@14 I B A B J K J K J K J L ~@24>".pickRestart({
  A: "[e2,b2] ~ [e2,b2]@2 b3 [g3,b3]!3 [e2,b2] ~ [e2,b2]@2 [g3,b3] b3!2 [b3,e4]", // E5 G E5 G E5
  B: "b2 ~ [e2,b2]@4 ~@2 [d4,g4]@4 [a3,d4]@4", C: "e2 ~@3 b3 a3@3 ~@6 d3@2, ~ e2@3 c3@3 ~, ~@5 e3@3, ~@3 g3",
  D: "g3@4 ~@2 b2 ~@7 a3@2, b3 ~@3 [b3,d4]@4 f#2@8, ~@5 d3@3, ~@3 d4", // Bm
  E: "e2 ~@3 b3 a3 ~ a3 ~@4 g3@3 g3, ~ e2@3 c3@3 ~, ~@5 e3@3",
  F: "[g2,g3]@4 [b3,d4]@3 ~@7 a3@2, b3 ~@7 d3@8, ~@5 e4@3, ~@3 d4", // G Bm
  G: "~@2 b3@2 ~@2 b2 ~@7 a3@2, g3 [b3,d4] f#2@2, ~@5 d3@3, ~@3 d4", // Bm
  H: "g3@4 [b3,d4]@3 ~@7 a3@2, b3 ~@7 d3@8, ~@5 e4@3, ~@3 d4", I: "[e2,b2] ~ [e2,b2]@3 ~@3 [e2,b2] ~ [e2,b2]@3 ~@3",
  J: "[g3,b3]@2 [g3,b3]@2 [b3,e4]@2 [g3,b3] [g3,e4] [c4,e4]@2 [g3,c4]@2 [g3,c4,e4]@2 ~ [c4,e4], ~@7 [g3,e4]", // G E5 G C C5 C
  K: "[g3,b3]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]!2 f#4@2 f#4 [d4,f#4] [a#3,d#4,g4]@3 ~, ~@2 g3@5 ~ a3@4 ~@4, ~@8 d4 ~@7", // G Em D D#
  L: "[g3,b3]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]!2 [d4,f#4]@2 f#4 [d4,f#4] [d#4,g4]@3 ~, ~@2 g3@5 ~@9", // G Em D D#
})).s("gm_acoustic_guitar_nylon").gain(0.41).pan(0.7)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note("<~@24 A B A B ~@3 C ~@3 C ~@15 B A B ~ D ~ D ~ D ~ D ~@24>".pickRestart({
  A: "~@4 g3 ~@8 g3!2 ~", B: "e2 ~@15", C: "~@7 d3 ~@8", D: "g4 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.21).pan(0.7)

// chords · distortion guitar
const distortion_guitar_2 = note("<~@54 A B C D E F G H I ~@23>".pickRestart({
  A: "d4 b3 a3 g3 [a3,b3] a3 g3 e3 a3@2 ~@2 d3@4, ~@5 g3@3", B: "d3 e3 g3 d3 a3@2 c4 e4 b3 d4 f#4 ~ d#4@3 ~",
  C: "d3 ~ g3@2 f#3@2 d4@2 ~@2 e4@2 a3@2 f#4@2, ~ e3@3 ~@4 g3@4 ~@4",
  D: "d4 g4 ~ e4 g4 a4@2 d5 a4 g4 a4 e4 g4@2 d4@2, ~ a4 ~@6", E: "e4@2 g4 e4@2 g4 e4@2 g4 e4@2 g4 e4@2 g4!2",
  F: "a4 b4 e5 b4!2 e5 b4!2 e5 b4!2 e5 a#4 b4 ~@2", G: "d5@3 ~ d5@4 d5@3 [d2,e2] d5 ~@3",
  H: "[b4,d5]!4 [a#4,d5]!4 [b4,d5]!4 a4@2 g4@2", I: "e4 ~@3",
})).s("gm_distortion_guitar").gain(0.48)

// chords · distortion guitar · soft notes · Dsus2
const distortion_guitar_soft = note("<~@60 [~@3 [d2,e2] ~@3 [d2,e2] d2 ~@7] ~@25>").s("gm_distortion_guitar").gain(0.21)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon_3 = note("<~@62 A B A B ~@10 C D C D C D C D E@2>".pickRestart({
  A: "[g3,b3,e4]@2 b3@2 [b3,e4]@3 [g3,b3,e4]@2 ~ b3@2 [b3,e4]@2 [g3,b3]@2, ~@2 g3@5 ~@2 e4@3 ~@4, ~@5 e3@3, ~@5 g3@2 ~", // Em E5 Em E5 G
  B: "b3@4 [b3,e4]@2 ~ [a3,d4,f#4]@2 f#4 d4@2 [d4,f#4]@3 [d4,e4], g3@7 ~@3 a3@5 ~, e4 ~@7", // E5 D Dsus2
  C: "[b3,e4]@2 b3@2 [b3,e4]@3 [b3,e4]@2 ~ c4@2 [c4,e4]@2 c4@2, ~@9 e4@3 ~@4, ~@5 e3@3", // E5 C
  D: "b3@4 [b3,d4]@2 ~ [d4,f#4]@2 f#4 d4@2 [d4,f#4]@3 [d4,e4], d4 ~@7", E: "[[e3,b3]@15 ~]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.23)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_4 = note("<~@62 A B A B ~@10 C D C D C D C D ~@2>".pickRestart({
  A: "~@6 e4 ~@8 e4, e3@5 ~@2 e4", B: "~@2 e4@2 ~@6 f#4@2 ~@3 g3", C: "~@6 e4 ~@8 e4, ~@7 e4", D: "~ d4 ~@3 f#4 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.11)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon_5 = note("<~@79 [a3 ~@3] ~@3 [a3 ~@3] ~@2>").s("gm_acoustic_guitar_nylon").gain(0.4).pan(1)

// chords · overdriven guitar
const overdriven_guitar = note("<~@17 A ~@25 A ~@25 A ~@7 A ~@3 A ~@4>".pickRestart({
  A: "~ f#3",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.8)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@14 A B ~@24 A B ~@24 A B ~@18>".pickRestart({
  A: "e4@14 [e3,c4]!2", B: "[e3,c4]@11 ~ d4 c4@3",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.4)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B A B A B A C A C A D E F A C A@3 B A G A H A I A B A B A B A C A C A D E F A C A@3 B A J A H A K A C A C A C A
  D A C A D E F A C A@3 B A L A B A F A B A M ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@2 x ~@3", C: "~@4 x ~@4 x ~@2 x ~@2 x", D: "~@4 x ~@4 x ~@2 x ~ x!2",
  E: "~ x ~@2 x ~ x ~@2 x ~@2 x ~@3", F: "~ x ~@2 x ~ x ~@2 x ~@2 x!4", G: "~@2 x ~@2 x!2 ~",
  H: "~@4 x!4 ~ x ~@2 x ~ x!2", I: "~@4 x ~@4 x!2 ~@5", J: "~ x!2 ~", K: "~@4 x ~@4 x!6 ~", L: "~@2 x ~ x!2 ~@2",
  M: "~ x ~@2 x ~@3 x ~@7",
})).gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@16 A B A B ~@22 A B A B ~@22 A B A B ~@14>".pickRestart({
  A: "~ x!7", B: "x!8",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@3 B ~@21 C ~@21 D ~@3 A ~@3 E ~@3 C ~@2>".pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x!3", C: "~@12 x!3 ~", D: "~@11 x ~@4", E: "~@7 x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A B@3 A B@3 A B@3 C@2 ~@3 D A B@3 E F B G A B@3 A B@3 A B@3 C@2 ~@3 D A B@3 E F B H ~@8 A B@3 C@2 ~@3 D A B@3 ~@10
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~ x", D: "~@7 x", E: "~ x ~ x!3 ~ x", F: "x!2 ~ x ~ x!3", G: "x!5 ~ x!2",
  H: "x!5 ~@2 x",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@7 B ~@17 A ~@3 C ~@3 B ~@17 D ~@3 B ~@7 C ~@2>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@3 x", C: "~@5 x ~@2", D: "~@8 x!3 ~@5",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@3 A ~@3 A ~@3 B@2 C ~ A B A ~@3 D E ~@2 A ~@3 A ~@3 A ~@3 B@2 C ~ A B A ~@3 D E ~ F C ~ A ~ A ~ A ~ A ~@3 B@2
  C ~ A B A ~@3 A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "x!2 ~@2", D: "x!2 ~ x", E: "~ x!2 ~", F: "~@15 x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~@16 A B C D ~@22 A B C D ~@8 A B C B C B C B ~@6 A B C D ~@4 C B C B C B C D ~@2
>`.pickRestart({
  A: "~ x ~ x!5", B: "x!8", C: "~ x!7", D: "x!4 ~@4",
})).gain(0.56)

stack(
  bass, distortion_guitar, percussive_organ, acoustic_guitar_nylon, acoustic_guitar_nylon_2, distortion_guitar_2,
  distortion_guitar_soft, acoustic_guitar_nylon_3, acoustic_guitar_nylon_4, acoustic_guitar_nylon_5, overdriven_guitar,
  electric_guitar_clean, kick, snare, pedal_hat, mid_tom, open_hat, high_tom, crash, ride
)

More by LIGABUE