Strudelify
Dolce di giorno cover art

1997 · Emozioni

Dolce di giorno

Battisti

KeyG majorTempo99 bpm
0:00/0:00
// Dolce di giorno — Battisti
// 99 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 electric guitar clean (copy of ch 7 acoustic guitar steel)
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/3)

// 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 · electric bass finger
const bass = note(`<
  ~@2 A B C D E F G H A F G I A F J K L M N O P Q G H A F G I A F J K L M N O P R S T U V W X Y Z G H A F G I A F J K L
  M N O P Q G H A F G I A F J K L M N O P AA N O P AA AB@4 ~
>`.pickRestart({
  A: "d2@9 ~ d2 ~", B: "d2@11 ~ d2@3 ~ c2@3 ~ d2@3 ~", C: "g1@9 ~ g1 ~", D: "g1@11 ~ d2@3 ~ b1@3 ~ g1@3 ~",
  E: "d2@17 ~@3 d2@2 ~@2", F: "d2@9 ~@3 d2@3 ~ c2@3 ~ a1@3 ~", G: "g1@19 ~ g1@2 ~@2", H: "g1@11 ~ b1@3 ~ d2@3 ~ b1@3 ~",
  I: "g1@10 ~@2 b1@3 ~ d2@3 ~ b1@3 ~", J: "g1@7 ~@3 g1 ~", K: "g1@10 ~@2 g1@3 ~ d2@2 ~@2 g1@3 ~", L: "c2@18 ~@2 g1@3 ~",
  M: "c2@11 ~ g2@3 ~ c2@3 ~ d2@4", N: "g1@3 ~@9 g1@2 ~@2 g1@2 ~@2 g1@3 ~",
  O: "c2@2 ~@2 c2@2 ~@2 c2@3 ~ d2@3 ~ c2@3 ~ a1@3 ~", P: "g1@5 ~ g1@3 ~ g1@2", Q: "d2@14 ~@2 d2@3 ~ c2@3 ~", R: "d2 b1",
  S: "c2@13 ~@7 c2@2 ~@2", T: "c2@14 ~@2 g2@3 ~ c2@4", U: "b1@18 ~@2 b1@3 ~", V: "b1@10 ~@2 f#2@3 ~ b1@3 ~ d2@3 ~",
  W: "e2@18 ~@2 e2@3 ~", X: "e2@12 b2@4 e2@4 d2@3 ~", Y: "c2@7 ~ c2@4 g2@3 ~ c2@6 ~@2",
  Z: "d1@11 ~ d2@2 ~@2 d2@3 ~ c2@3 ~", AA: "c2@12 d2@4 c2@4 d2@3 ~",
  AB: "[g1@3 ~@10 g1@3 ~@2 g1@3 ~ g1@4 ~ c2@3 ~@2 c2@3 ~@2 c2@3 ~ d2@4 ~ c2@5 a#1@5 g1@38 ~@2]/4",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~@2 A@2 B@2 C@2 B@2 C@2 B@2 C@2 D@2 E@2 F ~@3 B@2 C@2 B@2 C@2 D@2 E@2 F ~@3 G@2 H@2 I@2 J K B@2 C@2 B@2 C@2 D@2 E@2 F
  ~@3 B@2 C@2 B@2 C@2 D@2 E@2 F ~@3 F ~@3 F ~@4
>`.pickRestart({
  A: "[c6,d6,f#6,a6]/2", B: "[[d6,f6,g6,b6]@47 ~]/2", C: "[[c6,d6,f#6,a6]@47 ~]/2", D: "[~ f6, [b5,d6,g6]@23 ~]/2",
  E: "[[c6,e6,g6]@47 ~]/2", F: "[b5,d6,g6] ~@11", G: "[g5,c6,e6]/2", H: "[[b5,d6,f#6]@23 ~]/2",
  I: "[[b5,e6,g6]@47 ~]/2", J: "[g5,c6,e6]@23 ~",
  K: "~@4 c6@7 ~ [a5,c6]@6 ~@2 [a5,c6]@4, ~@3 a5@7 ~@14, ~@4 b5 ~@7 b5 ~@7 b5 ~@3", // Am
})).s("gm_drawbar_organ").gain(0.11)

// chords · harmonica
const harmonica = note("<~@2 A@2 B@2 C@2 ~@14 D@2 ~@14 E@2 ~@23 F@3 G H I@2 J K ~@6 L M N ~ L O P Q R@3>".pickRestart({
  A: "[[a4,d5]@17 ~ [a4,d5]@5 ~]/2", B: "[[d4,g4]@11 [a4,e5]]/2", C: "[~ a4@46 ~, d5@23 ~]/2",
  D: "[~@13 [d5,f5]@33 ~@2]/2", E: "[~@21 e5@3 ~ e5@2 d5@15 ~@6, ~@10 g4@11 ~@3, ~@12 f5 ~@11]/2",
  F: "[~@22 [d5,f5]@29 ~ [f5,a5]@4 [d5,g5]@4 [c5,f5]@4 [b4,e5]@4 [a4,d5]@4]/3", G: "[g4,d5]",
  H: "[d5,f5]@3 ~@4 d5@2 ~ [c5,e5] ~ [d5,f5]@3 ~@3 [d5,f5]@2 ~@2 [c5,e5] ~, ~@3 f5 ~@8", // Dm C Dm C
  I: "[[d5,f5]@28 [f5,a5]@2 ~@3 [c5,e5]@2 ~ [d5,f5]@6 [c5,e5]@4 d5@2, ~@30 [e5,g5]@2 d5@2 ~@12 b4 ~, ~@31 f5@2 ~@15]/2", // Dm F C Dm C Em
  J: "g4@7 ~, d5 ~@23",
  K: "[d5,f5]@3 ~ c5@2 [b4,d5]@3 ~ [c5,e5] ~@2 d5@2 ~ c5@2 [b4,d5]@2 ~@4, ~@4 e5 ~@7 f5@3 ~ e5 ~@7", // Dm Bm C Bm
  L: "~@12 [g4,d5]@11 ~", M: "[g4,d5]@11 ~ [g4,d5]@3 ~ [d5,a5]@2 ~@2 [a4,d5]@3 ~", N: "[g4,d5] ~@7",
  O: "[g4,d5]@11 ~ [g4,d5]@2 ~@2 [a4,d5]@2 ~@2 [a4,d5]@3 ~", P: "[g4,d5] ~@5", Q: "~@13 [d5,a5]@8 ~ d5@2",
  R: "[~@3 [a4,d5]@4 ~ [g4,d5]@41 ~@23]/3", // D5 G5
})).s("gm_harmonica").gain(0.22).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@2 B@2 C D B E C D B E D F G H I J K L C D B E C D B E D F G H I J M N@8 O C D B E C D B E D F G H I J K P C
  D B E C D B E D F G H I J M Q I J M Q R@5
>`.pickRestart({
  A: "[g2,d3]@8 [g2,d3]@4 d3 e3@3 [g2,e3]@4 [g2,e3]@4, ~@3 g2 ~@2", B: "[d2,a2]!3 [d2,b2]!3", C: "[g2,d3]!3 [g2,e3]!3",
  D: "[g2,d3]!3 [g2,e3] [g2,d3]!2", E: "[d2,a2]!3 [d2,b2] [d2,a2]!2", F: "g2 [g2,d3]!2 [g2,e3] [g2,d3]!2, d3 ~@23",
  G: "[c3,g3]!6", H: "c3 [c3,g3]!2 [c3,a3] [c3,g3] [c3,e3], g3 ~@23", I: "[g2,d3]@12 [g2,d3]@3 ~ [g2,d3]@4 [g2,d3]@4",
  J: "[c3,g3]!3 [d3,a3]!2 [d3,g3]", K: "[g2,d3]!6", L: "[d3,a3]@4 [d3,a3]@4 [d3,a3]@4 [d3,a3]@4 [d3,a3]@3 ~ [d3,a3]@4",
  M: "[g2,d3]!4 [g2,e3]!2", // G5 C
  N: "[[g2,d3]@4 [g2,d3]@4 [g2,d3]@4 [g2,e3]@4 [g2,e3]@3 ~ [g2,e3]@2 ~@2 e4@21 ~@3 e4@20 ~@4 f#4@21 ~@4 f#4@19 ~@5 e4@19 ~@4 e4@19 ~@6 e4@18 ~@4 g3, ~@22 e3@21 ~@2 e3@22 ~@29 d4@20 ~@4 b3@20 ~@3 b3@22 ~@3 c4@20 ~@4, ~@23 [g3,c4]@21 ~@2 g3@21 ~@3 f#3@21 ~@3 f#3@21 ~@3 e3@21 ~@3 [e3,g3]@22 ~@2 e3@20 ~@4 d3@2, ~@47 c4@21 ~@3 [b3,d4]@22 ~@2 b3@21 ~@3 g3@21 ~@27 g3@20 ~@5]/8", // G5 C C5 Em Bm
  O: "~ f#4@10 ~ [d3,a3]@3 ~ [d3,a3]@3 ~ [c3,g3]@3 ~, d4@11 ~@13", // D5 C5
  P: "[d3,f#3]@4 [d3,f#3]@4 [d3,f#3]@4 [d3,f#3]@4 [d3,f#3]@3 ~ [d3,f#3]@4", Q: "[c3,g3]!3 [d3,a3] [d3,g3] [d3,a3]",
  R: "[[g2,d3]@12 ~ g4@5 c4@5 a#3@4 [a#3,d4]@5 [g3,c4]@5 [f3,a#3]@4 [d3,a#3]@4 ~ a#3@3 ~ [a#2,a#3]@5 ~ [g2,g3]@40 ~@24, ~@45 c3@5 ~@6 b3@49 ~@15, ~@56 d3@45 ~@19]/5", // G5 A# C5 A#5 Gm A# G
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@5 B A@5 C A B A@3 D C ~ A@7 C A B A@3 D C ~ A@5 B A@8 B ~ A B A@3 D C ~ A@9 B A@3 B C ~ A@2 C ~ A@2 C E F ~@2
>`.pickRestart({
  A: "x ~@4 x", B: "x ~@3 x!2", C: "x", D: "x ~ x", E: "~@3 x ~@8 x ~@4 x ~@6", F: "~ x ~@6",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B C B C@3 B C B C@2 D C@6 E F C G B C@2 D C H C@6 I F C@8 G C B C@3 G J C@6 I F C G K C@2 D C G C@3 B C@2 E L B C
  E F C K M N O ~@2
>`.pickRestart({
  A: "~@7 x ~@2 x ~", B: "~@12 x ~@10 x", C: "~ x", D: "~@3 x!2 ~", E: "~@6 x ~ x!3 ~",
  F: "x ~@3 x!2 ~@2 x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", G: "~@12 x ~@6 x ~@4", H: "~@12 x ~@2 x!3 ~@5 x", I: "x ~@5 x ~ x!3 ~",
  J: "x ~@2 x!2 ~", K: "~@12 x ~@8 x ~ x", L: "x ~@3 x ~@3 x ~@3 x!2 ~@10", M: "~@13 x ~@10", N: "~@4 x ~@6 x",
  O: "~ x ~",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@3 A ~ A ~@6 B C ~@2 A ~ A ~@6 A ~@3 D ~@4 A ~@5 E@2 F ~ F E ~@4 A ~ A ~@3 A ~ A ~@4 B ~ A ~@3 B ~@4 A ~@7 A ~@6
>`.pickRestart({
  A: "~@23 x", B: "~@21 x ~ x", C: "~@19 x!3 ~ x", D: "~@13 x ~@5 x!3 ~@2", E: "~@19 x ~@3 x", F: "~@19 x ~@4",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@51 [~@23 x] ~@37>").gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@2 [~ x]!75 [~ x!5] [~ x]!6 ~@5>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@47 A ~@3 B ~@25 C ~@7 D ~@3>".pickRestart({
  A: "~@2 x", B: "~@19 x!2 ~@3", C: "~@11 x ~@12", D: "~@7 x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~ A B@5 ~ B C B C B ~ B ~ B D B D E F B C B@3 ~ B ~ B ~ B D B D ~ F B@2 ~@8 B C B ~@2 D B ~ B D B D G F B C B@3 ~ B ~
  B ~ B@3 D ~ H B@2 ~ F B@2 I ~@4
>`.pickRestart({
  A: "~@6 x ~ x!2 ~ x", B: "~@19 x ~@4", C: "~@2 x", D: "~@19 x!3 ~ x", E: "x!2", F: "~@7 x ~@16", G: "~ x",
  H: "~@7 x ~@7 x!3 ~ x!3 ~ x", I: "~@17 x ~@4 x ~",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@19 A ~@7 A ~@3 A ~@3 A ~@13 A ~@9 A ~ A ~@5 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ B ~@2
>`.pickRestart({
  A: "x", B: "~ x ~",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~@2 A B@10 C B@6 D ~ A B@6 E A B@2 C A C ~@2 A B F@7 B@4 C A C B@6 D ~ A B A B@5 A B@3 A C ~@2 A B ~@2 A B ~@5
>`.pickRestart({
  A: "~@4 x ~@2 x!2 ~@3 x ~@3 x ~@3 x ~@3", B: "x ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@3 x ~@3",
  C: "x ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@7", D: "x", E: "x ~@3 x ~@2 x!2 ~@15", F: "x!6",
})).gain(0.4)

stack(
  bass, drawbar_organ, harmonica, acoustic_guitar_steel, kick, snare, snare_soft, low_tom, pedal_hat, mid_tom, high_tom,
  crash, ride
)

More by Battisti