Strudelify

Le allettanti promesse

Battisti

KeyD majorTempo104 bpm
0:00/0:00
// Le allettanti promesse — Battisti
// 104 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Chit.Over..
setcpm(104/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 · drawbar organ · "Coro"
const drawbar_organ = note(`<
  ~@3 A@2 B@2 C@2 B@2 D@2 B@2 E F B@2 ~@16 A@2 B@2 E G H@2 I@2 J@2 K@2 L M ~@20 A@2 H@2 A@2 H@2 I@2 N@2 O@4 P@2 B@2 P@2
  B@2 ~@24 I@2 Q@2 ~@5
>`.pickRestart({
  A: "[~@6 d4 d4@7 e4 f#4]/2", B: "[a4@2 g4@2 f#4@2 e4 d4@7 ~@2]/2", C: "[~@5 d4!2 d4@2 d4@5 e4 f#4]/2",
  D: "[~@3 d4!2 f#4 e4 d4@2 d4@5 e4 f#4]/2", E: "~@6 d4!2", F: "d4!6 e4 f#4", G: "d4@5 ~ e4 f#4",
  H: "[a4@2 g4@2 f#4@2 e4 d4@2 d4@5 ~@2]/2", I: "[~@6 d4 d4@5 ~ d4 e4 f#4]/2", J: "[a4!2 g4!2 f#4@2 e4 d4@2 d4@7]/2",
  K: "[~@2 d4!3 f#4 e4 d4@2 d4@3 ~ d4 e4 f#4]/2", L: "a4!2 g4!2 f#4!2 e4!2", M: "d4 d4@5 ~@2",
  N: "[a4@2 g4!2 f#4@2 e4 d4@2 d4@7]/2", O: "[~@6 d4 d4@3 ~ d4!2 e4 f#4 a4@2 g4@2 f#4@2 e4@2 d4@7 ~@2]/4",
  P: "[~@6 d4 d4@6 d4 e4 f#4]/2", Q: "[a4@2 g4@2 f#4@2 e4 d4@2 d4 ~@6]/2",
})).s("gm_drawbar_organ").gain(0.64)

// chords · acoustic guitar steel · "Chit"
const acoustic_guitar_steel = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B C D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B C D@2 E@2 D@2
  E@2 D@2 E@2 D@2 E@2 D@2 E@2 A@2 B@2 A@2 B@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2
  D@2 E@2 A@2 B C ~ A@2 F
>`.pickRestart({
  A: "d4@2 b3 d4 g4@2 d4@4 b3@2 d4@2 g4@2", B: "d4@2 a3 d4 f#4@2 d4@4 a3@2 d4@2 f#4@2", C: "d4 ~@7",
  D: "[b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!2", // G
  E: "[d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]!2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]!2", // D
  F: "d4 ~ f#4@4 ~@2, ~@2 a3@7 ~@7, ~@3 d4@7 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.08)

// bass · electric bass finger · "Basso"
const bass = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@2 A@2 B@2 A@2
  B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 C@2 ~ A@2 D
>`.pickRestart({
  A: "g2/2", B: "d3/2", C: "[d3@9 ~@7]/2", D: "d3",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@20 [~ x ~ x]!16 ~@16 [~ x ~ x]!20 ~@8 [~ x ~ x]!40 ~@8>").gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@20 x!16 ~@16 x!20 ~@8 x!40 ~@8>").gain(0.64)

// drums · bongos
const bongos = s("bongo:18").struct("<~@20 [~ x ~ x]!16 ~@16 [~ x ~ x]!20 ~@8 [~ x ~ x]!40 ~@8>").gain(1.68)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@20
  [~@2 x ~@4 x ~ x!2 ~@4 x]!16
  ~@16
  [~@2 x ~@4 x ~ x!2 ~@4 x]!20
  ~@8
  [~@2 x ~@4 x ~ x!2 ~@4 x]!40
  ~@8
>`).gain(2.05)

// drums · congas
const congas_2 = s("conga:33").struct("<~@20 [x!8]!16 ~@16 [x!8]!20 ~@8 [x!8]!40 ~@8>").gain(2.05)

stack(drawbar_organ, acoustic_guitar_steel, bass, high_tom, ride, bongos, congas, congas_2)

More by Battisti