Strudelify

Stella cometa

Jovanotti

KeyA majorTempo88 bpm
0:00/0:00
// Stella cometa — Jovanotti
// 88 bpm, 4/4, key A 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: duplicate parts dropped: ch 16 piano (copy of ch 5 voice oohs)
// note: Full arrangement: all 87 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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 · synth bass 1
const bass = note(`<
  ~@20 A B C D A B C D A B C D A E C D A E C D A B C D A B C D A E C D A E C D A E F ~@3 C D A E C D A E C D A E C D G H
  ~@9
>`.pickRestart({
  A: "a1@7 ~ a1 b1@2 a1@7 ~ a1 b1@2 ~ a1", B: "a1@6 ~@2 a1 b1@2 a1 a1@6 ~@2 a1 b1@2 a1",
  C: "d1@7 ~ d1 e1@2 d1 d1@6 ~@2 d1 e1@2 d1", D: "d1@6 ~@2 d1 e1@2 d1 d1@2 e1 f#1@2 ~ b1@2 a1 f#1@2 g1, ~@17 a1@2 ~@5",
  E: "a1@6 ~@2 a1 b1@2 a1 a1@2 ~ d2@2 e2 f#2 a2 ~@2 e2 ~, ~@14 b1@2 ~@5 f#2@2 ~", F: "d1@7 ~ d1 e1@2 d1 d1@6 ~@6",
  G: "a1@3 b1", H: "c#2@3 e2@16 ~@5",
})).s("gm_synth_bass_1").gain(0.28)

// other · epiano1
const epiano1 = note("<A@2 B@2 ~ C@2 ~@76 D@4>".pickRestart({
  A: "[~@22 a3@25 ~]/2", B: "[a3@22 a3@24 a3 ~]/2", C: "[a3@22 a3@25 ~]/2", D: "[~@15 a3@25 ~ d2@48 ~@7]/4",
})).s("gm_epiano1").gain(0.16).pan(0.2)

// other · piano
const piano = note("<~@59 A B@2 C D ~@5 E ~ E ~ E ~ E ~ E ~ E ~@7>".pickRestart({
  A: "~@9 a4 ~ b4@3 ~ e5@3 a4 ~@2 b4@3, ~@7 d5 ~@2 d5 ~",
  B: "[a4@3 d5@2 ~@3 a4 b4@3 d5@2 e5@3 a4 d5@2 b4@3 a4@3 d5@2 ~@2 a4 ~ b4@3 ~ e5@3 a4 ~@2 b4@3 a4@3, ~@35 d5@2 ~@4 d5@2 ~@5]/2",
  C: "d5@2 ~@3 a4 b4@3 d5@2 ~ a4 ~ g5 e5@2 f#5 d5@2 ~@4, ~@14 b4@3 ~@7, ~@15 f#5 ~@8",
  D: "~@14 [f#5,g5] e5 ~ f#5 d5 ~@2 a4 b4 ~", E: "~@14 [f#5,g5] ~ f#5 ~ d5@3 ~@3, ~@15 e5@2 ~@7",
})).s("gm_piano").gain(0.22)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@8 B@2 C@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 C@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 ~@4 E@2 D@2
  E@2 D@2 E@2 D@2 E@2 D@2 E@2 F@7
>`.pickRestart({
  A: "[~@62 c#4 g3, e3@4 e3@3 e3@8 e3@8 e3@8 e3@8 e3@8 e3@8 e3@8 ~, ~@3 g3@12 g3@6 ~@6 g3@12 g3@6 ~@6 g3@12 g3@7 ~@5 g3@12 g3@7 ~@5 g3@12 g3@6 ~@6 g3@12 g3@7 ~@5 g3@12 g3@9 ~@3 g3@12 g3@6 ~@3, ~@2 c#4@2 c#4@2 c#4@4 c#4@2 c#4@2 c#4@4 c#4@2 c#4@2 c#4@4 c#4@2 c#4@2 c#4@4 c#4@2 c#4@2 c#4@4 c#4@2 c#4@2 c#4@4 c#4@2 c#4@2 c#4@3 ~ c#4@2 c#4@2 ~@2, ~@9 d4@12 ~@12 d4@12 ~@12 d4@13 ~@11 d4@13 ~@11 d4@12 ~@12 d4@13 ~@11 d4@15 ~@9 d4@12 ~@3]/8",
  B: "~@7 g3, e3!2, ~ g3@4 g3@2 ~, ~ c#4!3, ~@3 d4@5",
  C: "[~@39 a3@3 g4 e4 ~ c#4 a3 ~, d3@7 d3@7 ~@2, ~ a3@4 a3@2 ~@2 a3@4 ~@3, ~ c#4!2 c#4@2 c#4!2 ~, ~@3 d4@4 ~@4 d4@3 ~@2]/2",
  D: "[~@15 g3, e3@4 e3@3 e3@9, ~ g3@4 g3@2 ~@2 g3@4 g3@2 ~, ~ c#4!2 c#4@2 c#4!3, ~@3 d4@4 ~@4 d4@5]/2",
  E: "[~@15 a3, d3@7 d3@9, ~ a3@4 a3@2 ~@2 a3@4 a3@2 ~, ~ c#4!2 c#4@2 c#4!3, ~@3 d4@4 ~@4 d4@5]/2",
  F: "[~@113 [a3,f#4]@51 ~@4, ~@3 g3@13 g3@7 ~@7 g3@16 g3@32 a3@3 e4@48 ~@39, ~@6 c#4@6 e3@10 ~ e3@43 d3@21 a3@5 g4@48 ~@28, ~@9 d4@14 ~@15 d4@14 e4@23 c#4@48 ~@45, ~@12 c#4@7 c#4@15 c#4@8 c#4@10 d4@16 a3@2 c#4@3 d4@27 a3@11 d3@52 ~@5]/7", // D
})).s("gm_acoustic_guitar_nylon").gain(0.16)

// other · blown bottle
const blown_bottle = note("<~@59 A B C D@2 ~@23>".pickRestart({
  A: "~@3 c2 ~@3 c3@2 ~@5 d4 ~@4 g3@2 ~@3, ~@13 a3@2 ~@9", B: "a2 ~@2 a3 ~ e3 ~@3 g3 ~ d2@2 b3 a2 ~@5 a3 ~@3",
  C: "~ a3 ~ [a1,b1] ~@5 b2 ~@2 e3 ~ g3 g2@2 ~@4 a3 ~ d3", // Asus2
  D: "[~@2 g3 ~ a2@2 ~@5 a3 ~@3 g3 ~@4 a3 ~@2 c3@2 f3@2 ~@3 g3 ~@7 d3 ~ a1 ~@7, ~@37 a1@2 ~@9]/2",
})).s("gm_blown_bottle").gain(0.22)

// other · blown bottle · soft notes
const blown_bottle_soft = note("<~@60 [~@11 c3] ~ [~@7 d4 ~ e3@2 ~@6 d3@2 ~@5] [~@4 e2 ~@4 e2 ~ e3 ~@8 a2 ~@3] ~@23>")
  .s("gm_blown_bottle").gain(0.11)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@8 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~@2 C@2 A@3 B A@3 B A@3 B A@3 B D@3
  E@4
>`.pickRestart({
  A: "[a2@63 ~ a2@5 ~ a2@2]/3", B: "~@2 a2@8 ~ a2@2 ~@2 a2@9", C: "a2/2", D: "[a2@65 ~@3 a2@4]/3",
  E: "[~ a2@3 ~ a2@8 ~ a2@2 ~ a2@72 ~@7]/4",
})).s("gm_distortion_guitar").gain(0.05)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@5 A B C D E@3 F@2 G H I H J K I H J K L@2 M N O P Q R S@2 T@2 I H J U V@2 W X Y Z O AA I H J K I H J K I H J K I H J
  K I H J K I H J K I H J K AB AC AD AE AF@4 ~@3
>`.pickRestart({
  A: "~@2 a4 g4", B: "f#4@3 g4", C: "a4 b4 c#5 d5", D: "c#5@15 a4@4 b4@5",
  E: "[f#4@6 g4@6 c#5@6 c#4@3 d4@31 e4@4 f#4@3 g4@4 a4@4 b4@4 ~]/3", F: "[a4@12 g5@15 f#5@5 d5@5 a4@3 g4@4 ~ f#5@3]/2",
  G: "f#4@10 g4@5 a4@4 b4@5", H: "a4", I: "g5@8 a4 f#5@7 d5@7 ~, ~@16 a4 ~@7", J: "g5@3 f#5@3 d5@2", K: "a5",
  L: "[g5@7 a4 ~ f#5@7 e5@10 ~ d5@4 c#5@4 ~ b4@4 a4@4 ~ g4@3]/2", M: "f#4@9 g4@10 a4@4 ~",
  N: "d4@7 e4@4 ~ f#4@3 g4@4 a4@2 b4@3", O: "a4@3 b4", P: "c#5@6 d5@6 e5@3 f#5@4 g5@4 ~", Q: "f#5@5 d5@3",
  R: "a4@2 d5 f#5", S: "[e5@7 ~@2 a4@9 g4@18 c#5@6 e5@6]/2", T: "[d5@15 ~]/2", U: "g5@3 f#5 d5 e5 f#5 g5",
  V: "[e5@9 d5@4 c#5@4 ~ g4@12 c#5@6 e5@12]/2", W: "d5@4 c#5@7 ~ a4@6 f#4@6", X: "e5 d5 c#5 a4 f#4 g4 a4@2",
  Y: "d5@4 c#5@4 ~ a4@4 f#4@4 ~ g4@6", Z: "d5@4 c#5@5 a4@3 f#4@3 g4@3 a4@3 b4@3", AA: "c#5@6 d5@6 e5@6 f#5@5 e5",
  AB: "g4@13 a4@2 b4@4 c#5@3 d5@2", AC: "e5@7 f#5@12 g5@4 ~", AD: "f#5@7 ~", AE: "e5@3 d5@3 c#5 b4",
  AF: "[c#5@16 a4@12 g4@14 ~@4 e4@12 c#4@6 ~ d4@22 ~@9, ~@7 f#4 ~@8]/4",
})).s("gm_lead_2_sawtooth").gain(0.22).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@18 [x ~@10 x!2 ~@2 x ~@8]!41 x ~@2 [x ~@10 x!2 ~@2 x ~@8]!17 x ~@7>").gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@18 [~ x ~ x]!41 ~@3 [~ x ~ x]!17 ~@8>").gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@18 [~ x ~ x]!41 ~@3 [~ x ~ x]!17 ~@8>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@18 [x!7 ~]!41 [x!3 ~@5] ~@2 [x!7 ~]!17 [x!3 ~@5] ~@7>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@18 [~@14 x ~@6 x ~@2]!41 ~@3 [~@14 x ~@6 x ~@2]!17 ~@8>").gain(0.24)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@18
  [~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x]!41
  ~@3
  [~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x]!17
  ~@8
>`).gain(0.16)

stack(
  bass, epiano1, piano, acoustic_guitar_nylon, blown_bottle, blown_bottle_soft, distortion_guitar, lead_2_sawtooth,
  kick, snare, clap, hihat, open_hat, shaker
)

More by Jovanotti