Strudelify

Almeno l'inizio

Battisti

KeyD majorTempo125 bpm
0:00/0:00
// Almeno l'inizio — Battisti
// 125 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 152 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// chords · epiano2 · "Tast."
const epiano2 = note(`<
  A B C@2 A B C@2 A B C@2 A B C@2 D E F E D E F E A B C@2 A B C@2 A B C@2 A B C@2 D E F G D E F E H G A B C@2 A B C@2 D
  E F G D E F E H G I J K L I J K L I J K L I J K L I J K L I J K L A B C@2 A B C@2 M@2 N O P@2 Q R S@5 T I J K L I J K
  L I J K L I J K L I J K L I J K L I J A B C@2 A B C@2 A B C@2
>`.pickRestart({
  A: "[d4,f#4,a4]@2 ~ [d4,f#4,a4] ~@2 [d4,f#4,a4] ~ [d4,f#4,a4]@2 ~ [d4,f#4,a4] ~@2 [d4,f#4,a4] ~", // D
  B: "[e4,g4,b4]@2 ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4]@2 ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~", // Em
  C: "[b3,d4,f#4]@2 ~ [b3,d4,f#4] ~@2 [b3,d4,f#4] ~ [b3,d4,f#4]@2 ~ [b3,d4,f#4] ~@2 [b3,d4,f#4] ~", // Bm
  D: "[b4,e5,g5] [b4,d5,f#5]", E: "[g4,b4,e5]", F: "[e4,g4,b4] [f#4,a4,d5]", G: "[g4,b4,d5,e5]",
  H: "[g4,b4,e5] [f#4,a4,d5]", I: "[g4,c5,e5] [g4,b4,d5]", J: "[a4,c5,e5]", K: "[a4,c5,f5] [c5,e5,g5]",
  L: "[g4,b4,d5,g5]", M: "~ [e4,g4,c5,d5] ~ [e4,g4,c5,d5] ~ [e4,g4,c5,d5] ~ [e4,g4,c5,d5]",
  N: "~ [e4,g4,c5,d5] ~ [e4,g4,c5,d5] ~ [e4,g4,c5,d5] ~ [g4,d5,g5]", // C G5
  O: "~ [g4,d5,g5] ~ [g4,d5,g5] ~ [g4,d5,g5] ~ [a#4,d5,f5]", // G5 A#
  P: "~ [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,f5]", // A#
  Q: "~ [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,f5] ~ [f4,c5,f5]", // A# F5
  R: "~ [f4,c5,f5] ~ [f4,c5,f5] ~ [f4,c5,f5] ~ [g#4,c5,d#5]", // F5 G#
  S: "~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5]", T: "[g#4,c5,d#5]@3 ~",
})).s("gm_epiano2").gain(0.64)

// bass · electric bass finger · "Basso"
const bass = note("<~@7 A@8 B@8 C@8 D@8 E@8 F@8 G@8 H@8 I@16 J@8 K@8 L@8 M@8 N@16 O@8 P@5 ~@4>".pickRestart({
  A: "[~@14 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b2@4 b2@2 f#2@2 f#2@2 b2@3 b2@3 b2@4 b2@2 f#2@2 f#2@2 b2@3 b2@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b2@4 b2@2 f#2@2 f#2@2 b2@3 b2@3 b2@2]/8",
  B: "[~@2 b2@2 f#2@2 f#2@2 b2@3 b2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@2]/8",
  C: "[~@2 c2@2 c2@2 g1@2 c2@3 c2@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@2]/8",
  D: "[~@2 b1@2 f#1@2 f#1@2 b1@3 b1@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@2]/8",
  E: "[~@2 b1@2 f#1@2 f#1@2 b1@3 b1@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@2]/8",
  F: "[~@2 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@2]/8",
  G: "[~@2 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@2]/8",
  H: "[~@2 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 e2@4 e2@2 e2@2 b1@2 d2@3 d2@3 c2@4 c2@2 c2@2 g1@2 c2@3 c2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@2]/8",
  I: "[~@2 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@4 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@2]/8",
  J: "[~@2 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@4 g2@2 g2@2 g2@2 d2@3 g2@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@2]/8",
  K: "[~@2 b1@2 f#1@2 f#1@2 b1@3 b1@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 c3@4 c3@2 c3@2 g2@2 c3@3 g2@3 c3@4 c3@2 c3@2 g2@2 c3@3 g2@3 c3@4 c3@2 c3@2 g2@2 c3@3 g2@3 b2@2]/8",
  L: "[~@2 b2@2 b2@2 g2@2 b2@3 g2@3 a#2@4 a#2@2 a#2@2 f2@2 a#2@3 f2@3 a#2@4 a#2@2 a#2@2 f2@2 a#2@3 f2@3 a#2@4 a#2@2 a#2@2 f2@2 a#2@3 f2@3 a2@4 a2@2 a2@2 f2@2 a2@3 f2@3 g#2@4 g#2@2 g#2@2 d#2@2 g#2@3 d#2@3 g#2@4 g#2@2 g#2@2 d#2@2 g#2@3 d#2@3 g#2@4 g#2@2 g#2@2 d#2@2 g#2@3 d#2@3 g#2@2]/8",
  M: "[~@2 g#2@2 g#2@2 d#2@2 g#2@3 d#2@3 g#2@4 g#2@2 g#2@2 d#2@2 g#2@3 d#2@3 g#2@14 ~@2 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@4 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@2]/8",
  N: "[~@2 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@4 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@4 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 g2@2 e2@3 g2@3 a2@2]/8",
  O: "[~@2 a2@2 a2@2 e2@2 a2@3 g2@3 f2@4 f2@2 f2@2 d2@2 c2@3 f2@3 g2@4 g2@2 g2@2 g2@2 d2@3 g2@3 c3@4 c3@2 c3@2 f2@2 e2@3 g2@3 a2@4 a2@2 a2@2 e2@2 a2@3 g2@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@2]/8",
  P: "[~@2 b1@2 f#1@2 f#1@2 b1@3 b1@3 f#2@4 f#2@2 d2@2 d2@2 f#2@3 f#2@3 g2@4 g2@2 d2@2 d2@2 g2@3 g2@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 b1@4 b1@2 f#1@2 f#1@2 b1@3 b1@3 ~@2]/5",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@7 [~@7 x] [x!2 ~ x!3 ~ x]!105 [x!8] [x!2 ~ x!3 ~ x]!33 [x!2 ~ x!3 ~@2] ~@4>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@8 [~ x ~ x]!105 ~ [~ x ~ x]!34 ~@4>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@113 [x!4 ~@10 x!2] x ~@37>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~ x ~ x]!105 [~@4 x!4 ~@2 x!4 ~@2] [~ x ~ x]!34 ~@4>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@113 [~@8 x!2 ~@6] ~@38>").gain(0.64)

// drums · china
const china = s("cr").struct(`<
  ~@16 A B A B A B A B ~@16 A B A B A B A B A B ~@8 A B A B A B A B A B ~@84
>`.pickRestart({
  A: "x!2", B: "x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@7 [~@7 x] ~@144>").gain(0.64)

stack(epiano2, bass, kick, snare, low_tom, mid_tom, high_tom, china, ride)

More by Battisti