Strudelify

Il mio bambino

Battisti

KeyF majorTempo85 bpm
0:00/0:00
// Il mio bambino — Battisti
// 85.2 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 43, 4/4 at bar 43) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85.2/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.

// chords · piano
const piano = note(`<
  A@5 B C B D E F G H B C B D E F I J@2 K L M N O P Q R K L M N O P Q S@6 T U T U V W X Y Z AA Z AA V W X T AB AC AD AE
  AF AG AC AH AI AC AD AE AF AG AC AH AC AJ AK@2 AL@5 AM@3 AK@2 AN@2 AO@2
>`.pickRestart({
  A: "[~@8 d4@2 f4@10 f4 e4 d4@2 c4@2 f4@10 e4 c4@3 bb3@2 eb4@10 bb3 c4@3 [a3,d4]@12 ~@6 a3@2 [d4,f4]@2 a3@2]/5", // D5 Dm
  B: "[d4,f4] a3 [d4,f4] a3 ~ a3 [c4,e4] a3", C: "[c4,e4] a3 [c4,e4] a3 ~ a3 [d4,f4] a3",
  D: "[c4,e4] a3 [c4,e4] a3 ~ bb3 [d4,f4] bb3", E: "[d4,f4] bb3 [d4,f4] bb3 ~ a3 [c4,f4] a3",
  F: "[c4,f4] a3 [c4,f4] a3 ~ g3 [bb3,eb4] g3", G: "[bb3,eb4] g3 [bb3,eb4] g3 ~ g3 [db4,e4] g3",
  H: "[db4,e4] g3 [db4,e4] g3 ~ a3 [d4,f4] a3", I: "[bb3,eb4] g3 [bb3,eb4] g3 ~ a3 [d4,f4] a3",
  J: "[[d4,f4] a3 [d4,f4] a3 [a3,d4,gb4]@6 ~@2 [bb3,d4,g4]!4]/2", K: "[bb3,d4,g4]!4 [a3,d4,f4]!4",
  L: "[a3,d4,f4]!4 [g3,bb3,eb4]!4", M: "[g3,bb3,eb4]!4 [bb3,d4,f4]!4", N: "[bb3,d4,f4]!4 [c4,eb4,g4]!4",
  O: "[c4,eb4,g4]!4 [bb3,d4,g4]!4", P: "[bb3,d4,g4]!4 [a3,d4,gb4]!4", Q: "[a3,d4,gb4]!4 [bb3,d4,g4]!4",
  R: "[c4,d4,g4]!2 [c4,d4,gb4]!2 [bb3,d4,g4]!4", // Csus2 D7 Gm
  S: "[[bb3,d4,g4]!4 [c4,d4,gb4]@8 d4!2 f4 g4@2 ~ [d4,g4,bb4,d5]@2 d4!2 f4 g4@2 ~ [d4,g4,bb4,d5]@2 d4!2 f4 g4@2 ~@3 [d4,e4]!4 [db4,e4]!4 [d4,e4]@2 [db4,e4]@2, ~@17 [a3,a4]@7]/6", // Gm D7 Gm Dsus2 Dbm Dsus2 Dbm A
  T: "~ a3 [d4,f4] a3 [d4,f4] a3 [d4,f4] a3", U: "~ a3 [c4,e4] a3 [c4,e4] a3 [c4,e4] a3",
  V: "~ bb3 [d4,f4] bb3 [d4,f4] bb3 [d4,f4] bb3", W: "~ a3 [c4,f4] a3 [c4,f4] a3 [c4,f4] a3",
  X: "~ g3 [bb3,eb4] g3 [bb3,eb4] g3 [bb3,eb4] g3", Y: "[g3,db4,e4]!8", Z: "d4!2 e4 [a3,d4,f4] e4 d4 c4 [b3,d4,f4]",
  AA: "a3!2 b3 [a3,c4,e4] b3 a3 b3 [a3,c4,e4]", AB: "[a3,d4,gb4]@3 ~", AC: "[bb3,d4,g4]!8", AD: "[a3,d4,f4]!8",
  AE: "[g3,bb3,eb4]!8", AF: "[bb3,d4,f4]!8", AG: "[c4,eb4,g4]!8", AH: "[a3,d4,gb4]!8",
  AI: "[bb3,d4,g4]!4 [c4,d4,g4]!2 [c4,d4,gb4]!2", AJ: "[c4,d4,gb4]", AK: "d4!2 f4 g4@2 ~ [d4,g4,bb4,d5]@2",
  AL: "[d4!2 f4 g4@2 ~ [a3,db4,e4,a4]@6 a3!2 c4 d4@2 ~ [a3,d4,f4]@2 a3!2 c4 d4@2 ~ [a3,d4,f4]@2 a3!2 c4 d4@2 ~ [ab3,b3,e4]@6]/5", // A Dm E
  AM: "e4!2 g4 a4@2 ~ [e4,a4,c5]@2", AN: "[d4!2 f4 g4@2 ~ [a3,db4,e4,a4]@6 [f3,bb3,d4]@4]/2",
  AO: "[[g3,c4,e4] [a3,d4,gb4]@2 ~]/2", // C D
})).s("gm_piano").gain(0.48)

// bass · electric bass finger · "Basso"
const bass = note(`<
  A@5 B C B D B E B C B C B D B E C F@2 G H I J K G L M G H I J K G L N@6 O P O P Q P R S T U T U Q P V O W V X Y Z AA V
  X AB V X Y Z AA V X V AC AD@2 AE@5 AF@3 AD@2 AG@2 AH@2
>`.pickRestart({
  A: "[~@2 bb3@4 a3@4 g3@4 [d3,f3]@3 ~ d3 ~]/5", B: "~@2 a2 ~", C: "~@2 d3 ~", D: "~@2 bb2 ~", E: "~@2 g2 ~",
  F: "[~@2 [d2,d3]@3 ~ g2 ~]/2", G: "g2 ~ d3 ~", H: "d3 ~ eb3 ~", I: "eb3 ~ bb2 ~", J: "bb2 ~ ab2 ~", K: "ab2 ~ g2 ~",
  L: "d3 ~ g2 ~", M: "d3!2 g2 ~",
  N: "[g2@2 ~@2 [d2,d3]@8 d3!2 f3 g3@2 ~ [g2,g3]@2 d3!2 f3 g3@2 ~ [g2,g3]@2 d3!2 f3 g3@2 ~ a2@14]/6", O: "d3 ~@3",
  P: "a2 ~@3", Q: "bb2 ~@3", R: "g2 ~@3", S: "a2 ~ a2 ~", T: "d3!2 e3 f3 e3 d3 c3 b2", U: "a2!2 b2 c3 b2 a2 b2 a2",
  V: "g2 ~ g2 ~", W: "[d2,d3]@3 ~", X: "d3 ~ d3 ~", Y: "eb3 ~ eb3 ~", Z: "bb2 ~ bb2 ~", AA: "ab2 ~ ab2 ~",
  AB: "g2 ~ d3!2", AC: "[d2,d3]", AD: "d3!2 f3 g3@2 ~ [g2,g3]@2",
  AE: "[d3!2 f3 g3@2 ~ a2@6 a2!2 c3 d3@2 ~ [d2,d3]@2 a2!2 c3 d3@2 ~ [d2,d3]@2 a2!2 c3 d3@2 ~ [e2,e3]@6]/5", // D E
  AF: "e3!2 g3 a3@2 ~ [a2,a3]@2", AG: "[d3!2 f3 g3@2 ~ a2@6 bb2@4]/2", AH: "[g2 [d2,d3]@2 ~]/2",
})).s("gm_electric_bass_finger").gain(0.64)

// other · acoustic guitar steel · "Coro"
const acoustic_guitar_steel = note("<~@55 [~@6 f3!2 g3@2 f3@6]!2 ~@36>").s("gm_acoustic_guitar_steel").gain(0.64)

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

// drums · snare
const snare = s("sd").struct("<~@4 A B@15 C A B@15 C A B@37 ~ B@13 C ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A B@15 C A B@15 C A B@37 ~ B@13 C ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.64)

// drums · china
const china = s("cr").struct("<~@4 [~ x] ~@38 x ~@49>").gain(0.64)

stack(piano, bass, acoustic_guitar_steel, kick, snare, mid_tom, china)

More by Battisti