Strudelify

La stagione dell'amore

Battiato

KeyG majorTempo116 bpm
0:00/0:00
// La stagione dell'amore — Battiato
// 116 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 9 "GUIT" named as a guitar, played on electric guitar clean (its electric bass finger patch is not one)
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 · tuba
const tuba = note("<A B C D@2 ~@57 A B C D@2 ~@44>".pickRestart({
  A: "~@6 g4 a4", B: "b4@7 b4", C: "a4 b4@6 b4", D: "[c5@3 b4@3 a4@2 g4@22 ~@2]/2",
})).s("gm_tuba").gain(0.19)

// chords · drawbar organ · "TAPPETO"
const drawbar_organ = note(`<
  ~ A B C@2 A B D@2 E B C@2 A B C@2 A F G H I@2 E B C@2 A B C@2 A F G H I@2 ~@12 E B C@2 A B C@2 A F G H I@2 A B C@2 A B
  D@2 A F G H I@2 ~@12 E B C@2 A B C@2 A F G H I@2 E B C@2 A B C@2
>`.pickRestart({
  A: "[g2,b2,d3]", B: "[e2,g2,b2]", C: "[e2,g2,c3]/2", D: "[[e2,g2,c3]@7 [g2,b2]]/2", E: "[d2,g2,b2]", F: "[f#2,a2,d3]",
  G: "[a2,c3,e3]", H: "[c3,e3,g3]", I: "[a2,d3,f#3]/2",
})).s("gm_drawbar_organ").gain(0.05)

// chords · lead 2 sawtooth · "KEYBOARD"
const lead_2_sawtooth = note(`<
  ~ A B C@2 A D E@2 ~@8 A F G H I@2 ~@8 A F G H I@2 ~@20 A F G H ~@2 A B C@2 A D E@2 A F G H I@2 ~@20 A F G H ~@10
>`.pickRestart({
  A: "~@2 [b3,d4,g4] ~@3 [d4,g4]@2 ~@8, ~@6 b3 ~@9", B: "~@2 [b3,e4,g4] ~@3 [e4,g4]@2 ~@8, ~@6 b3 ~@9",
  C: "~@2 [c4,e4,g4] ~@3 [e4,g4]@2 ~@8, ~@6 c4 ~@9", D: "~@2 [e4,g4] ~@3 [b3,e4,g4]@2 ~@8, ~ b3 ~@6",
  E: "~@2 [e4,g4] ~@3 [c4,e4,g4]@2 ~@8, ~ c4 ~@6", F: "~@2 [d4,f#4,a4] ~@3 [f#4,a4] ~@9, ~@3 d4 ~@4",
  G: "~@2 [e4,a4,c5] ~@3 [a4,c5]@2 ~@8, ~@6 e4 ~@9", H: "~@2 [e4,g4,c5] ~@3 [g4,c5]@2 ~@8, ~@6 e4 ~@9",
  I: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@9", // D
})).s("gm_lead_2_sawtooth").gain(0.19).pan(0)

// other · tuba · "TUBA3"
const tuba_2 = note("<~@4 A B C D@2 ~@57 A B C E@2 ~@40>".pickRestart({
  A: "~@7 f#5", B: "g5@7 g5", C: "f#5 g5@7", D: "[g5@3 f#5@3 e5@2 c5@20 b4@4]/2", E: "[g5@3 f#5@3 e5@2 c5@20 ~@4]/2",
})).s("gm_tuba").gain(0.15).pan(0)

// other · tuba · "TUBA2"
const tuba_3 = note("<~@4 A B C D@2 ~@57 A B C E@2 ~@40>".pickRestart({
  A: "~@7 f#4", B: "g4@7 g4", C: "f#4 g4@6 g4", D: "[g4@3 f#4@3 e4@2 c4@20 b3@4]/2", E: "[g4@3 f#4@3 e4@2 c4@20 ~@4]/2",
})).s("gm_tuba").gain(0.19).pan(1)

// bass · fretless bass · "BASSO"
const bass = note(`<
  ~@9 A B C@2 A B C@2 ~@6 A B C@2 A B C@2 ~@18 D E F@2 D E F@2 ~@6 D E F@2 D E F@2 ~@18 D E F@2 D E F@2 ~@6 D E F@2 D E
  F@2
>`.pickRestart({
  A: "g1 ~ g2 ~ g1 ~ g2 ~ g1 ~ g2 ~ g1 ~ g2 ~", B: "e1 ~ e2 ~ e1 ~ e2 ~ e1 ~ e2 ~ e1 ~ e2 ~",
  C: "c2 ~ c3 ~ c2 ~ c3 ~ c2 ~ c3 ~ c2 ~ c3 ~", D: "[g1,g2] ~ g2 ~ [g1,g2] ~ g2 ~ [g1,g2] ~ g2 ~ [g1,g2] ~ g2 ~",
  E: "[e1,e2] ~ e2 ~ [e1,e2] ~ e2 ~ [e1,e2] ~ e2 ~ [e1,e2] ~ e2 ~", F: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
})).s("gm_fretless_bass").gain(0.25)

// chords · lead 2 sawtooth · "KEYB2"
const lead_2_sawtooth_2 = note(`<
  ~@17 A B C D E@2 ~@8 A B C D E@2 ~@9 F ~@10 A B C D E@2 ~@8 A B C D E@2 ~@9 F ~@10 A B C D E@2 ~@8
>`.pickRestart({
  A: "[g3,b3,d4,g4]", B: "[f#3,a3,d4,f#4]", C: "[a3,c4,e4,a4]", D: "[c4,e4,g4,c5]", E: "[d4,f#4,a4,d5]/2",
  F: "[g3,c4,e4]", // C
})).s("gm_lead_2_sawtooth").gain(0.22)

// other · electric guitar clean · "GUIT"
const electric_guitar_clean = note("<~@19 A B ~@12 A C ~@24 A C ~@12 A C ~@24 A C ~@10>".pickRestart({
  A: "a2", B: "c2", C: "g2",
})).s("gm_electric_guitar_clean").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!110>").gain(0.36)

// drums · open hat
const open_hat = s("oh").struct("<~ [~ x ~ x ~@4]!110>").gain(0.22)

stack(
  tuba, drawbar_organ, lead_2_sawtooth, tuba_2, tuba_3, bass, lead_2_sawtooth_2, electric_guitar_clean, kick, open_hat
)

More by Battiato