Strudelify

Estetica

Battisti

KeyD majorTempo84 bpm
0:00/0:00
// Estetica — Battisti
// 84 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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 · drawbar organ · "Org."
const drawbar_organ = note(`<
  A B A B A B A B C D@3 C D@3 E F G F G F H I J K@2 L M N E O P Q@2 L M N E O P Q@2 R C D@3 C D@3 E F G F G F H I J K@2
  L M N E O P Q@2 L M N E O P Q@2 R C D@3 C D@3 E F G F G F H I J S T S T S T S T S
>`.pickRestart({
  A: "[d4,f#4,a4]", B: "[d4,e4,a4]", C: "[d4,f#4,a4,d5]",
  D: "[[e4,g4]@2 e4 ~ [c#4,d4]@4 [b3,d4] [b4,d5] ~ e5, b4@3 a4@6 f#5@2 ~, ~@5 [a4,c#5]]/3", E: "[g#4,b4,e5]",
  F: "[g#4,b4,d#5]", G: "[b4,e5,g#5]", H: "[g#4,b4,d5]", I: "[f#4,a4,c#5]", J: "[f#4,a4,c5]", K: "[e4,f#4,g#4,b4]/2",
  L: "[b4,d5,g5]", M: "[b4,d5,f#5]", N: "[a4,d5,f5]", O: "[c4,e4,g4,b4]", P: "[d4,e4,a4,b4]@3 d5",
  Q: "[[c4,e4,g4]@8 ~@2 g4 a4@2 d4@3, b4@5 ~@3, ~@8 e4@5 ~@3]/2", R: "[a3,b3,d4,e4]", S: "[e4,g#4,b4]",
  T: "[e4,f#4,b4]", // Esus2
})).s("gm_drawbar_organ").gain(0.28)

// bass · electric bass finger · "Basso"
const bass = note(`<
  ~@8 A B C D A B C D E F E F E F@2 G@2 E B H I J K L M L M H I J K L M L M@2 N B C D A B C D E F E F E F@2 G@2 E B H I
  J K L M L M H I J K L M L M@2 N B C D A B C D E F E F E F@2 G@2 E@7 O P
>`.pickRestart({
  A: "d3 ~ d3 ~@3 a2 d3 ~ a2 d3@3 ~@2 a2", B: "e3 ~ e3 ~@3 b2 e3 ~ b2 e3@4 ~@2",
  C: "f#3 ~ f#3 ~@3 c#3 f#3 ~ c#3 f#3@3 ~@2 d3", D: "g3 ~ g3 ~@3 d3 g3 ~ d3 a3@4 ~@2",
  E: "e3 ~ e3 ~@3 b2 e3 ~ b2 e3@3 ~@2 b2", F: "g#3 ~ g#3 ~@3 d#3 g#3 ~ d#3 g#3@4 ~@2",
  G: "f#3 ~ f#3 ~@3 c#3 f#3 ~ c#3 f#3@4 ~@2", H: "g3@2 g3@2 ~ g3 d3 g3 ~ d3 e3@3 d3 g3 d3",
  I: "b3@2 b3@2 ~@2 f#3 b3 ~ f#3 b3@6", J: "d3@2 d3@2 ~@2 a2 d3 ~ a2 d3@5 a2", K: "e3@2 e3@2 ~@2 b2 e3 ~ b2 e3@6",
  L: "c3@2 c3@2 ~@2 g2 c3 ~ g2 c3@5 g2", M: "d3@2 d3@2 ~@2 a2 d3 ~ a2 d3@6", N: "d3 ~ d3 ~@3 a2 d3 ~ a2 d3@2 ~@3 a2",
  O: "e3 b2 e3@2 ~@2 a2 e3 ~ b2 e3 g#3@2 e3 g#3 e3", P: "e3 ~ e3 ~@3 b2 e3 ~ b2 e3@6",
})).s("gm_electric_bass_finger").gain(0.64)

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

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

// drums · bongos
const bongos = s("bongo:18").struct("<[~@3 x ~ x ~@5 x ~ x ~@2]!105 [~@3 x ~ x ~@10]>").gain(1.68)

// drums · congas
const congas = s("conga:13").struct("<[x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2]!105 [x ~@2 x ~ x ~@10]>").gain(2.05)

// drums · congas
const congas_2 = s("conga:33").struct("<[~ x!3 ~ x!3]!105 [~ x!3 ~@4]>").gain(2.05)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<[~@10 x!4 ~@2]!105 ~>").gain(0.93)

stack(drawbar_organ, bass, mid_tom, high_tom, bongos, congas, congas_2, woodblocks)

More by Battisti