Strudelify

Donna selvaggia donna

Battisti

KeyF majorTempo70 bpm
0:00/0:00
// Donna selvaggia donna — Battisti
// 70.2 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 131 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70.2/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.

// chords · flute · "Flauto"
const flute = note(`<
  A B C D A B C D E@2 F G F G F G F H@2 I@2 ~@23 J ~ K L ~@7 M N O N O N O N@2 P Q R S T Q R S U@3 ~@9 J ~ K L ~@7 M N O
  N O N O N@2 V ~@8 W Q R S X Y Z AA AB Y Z AA AB Y Z AA AC@2
>`.pickRestart({
  A: "f5 d5 e5 c5", B: "d5 bb4 c5 a4", C: "bb4 g4 a4 f4", D: "g4 e4 db4 e4", E: "d4/2", F: "[d4,f4,a4] [c4,e4,g4]",
  G: "[bb3,d4,f4,a4] [a3,d4,f4]", H: "[bb3,d4,f4,a4] [c4,e4,g4]", I: "[d4,f4,a4]/2", J: "bb4 a4 g4 f4 e4 f4 c4@4 ~@2",
  K: "~@6 f3 bb3 d4@2 f4@2", L: "bb4 ~@5", M: "~ [d4,f4,a4]", N: "[c4,e4,g4] [bb3,d4,f4,a4]",
  O: "[a3,d4,f4] [d4,f4,a4]", P: "[c4,e4,g4]@2 f5 d5", Q: "e5 c5 d5 bb4", R: "c5 a4 bb4 g4", S: "a4 f4 g4 e4",
  T: "db4 e4 f5 d5", U: "[db4 e4 d4@8 ~@2]/3", V: "[c4,e4,g4] ~", W: "~@2 f5 d5", X: "db4 e4 [d5,f5] d5",
  Y: "[c5,e5] c5 [bb4,d5] bb4", Z: "[a4,c5] a4 [g4,bb4] g4", AA: "[f4,a4] f4 [e4,g4] e4", AB: "~ e4 [d5,f5] d5, db4 ~",
  AC: "[~ e4 d4@4 ~@2, db4 ~@3]/2",
})).s("gm_flute").gain(0.64)

// chords · acoustic guitar steel · "Chit."
const acoustic_guitar_steel = note(`<
  A B C D E F G H I@2 J K J K L M J K N O@2 P Q P Q P Q P Q P R S T@8 U@6 V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ AE
  AK AL AM AN AO AP AQ AR AS AT@8 U@6 V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ AE AK AU W X Y Z AA AB AC AV AW@2 AN AO
  AX AM AN AO AY AM AN AO AY AM AN AO AZ@2
>`.pickRestart({
  A: "d4 a4 f4 d5 a4 f4 c4 g4 e4 c5 g4 e4", B: "bb3 f4 d4 bb4 f4 d4 a3 e4 c4 a4 e4 c4",
  C: "g3 d4 bb3 g4 d4 bb3 f3 c4 a3 f4 c4 a3", D: "e3 bb3 g3 e4 bb3 g3 a3 db4 a3 e4 db4 a3",
  E: "d4 a4 f4 d5 a4 f4 c4 g4 e4 c5 g4 e4, c5 bb4", F: "bb3 f4 d4 bb4 f4 d4 a3 e4 c4 a4 e4 c4, a4 g4",
  G: "g3 d4 bb3 g4 d4 bb3 f3 c4 a3 f4 c4 a3, f4 e4", H: "e3 bb3 g3 e4 bb3 g3 [a3,db4] ~ a3 e4 ~ a3, d4@6 ~ db4@3 db4@2",
  I: "[d4,f4,a4]/2", J: "d4 a3 a4 g4@3", K: "~@2 a4 bb4 a4 f4 d4@6", L: "d4 a3 e4 c4", M: "f4@3 d4@2 g4 f4@6",
  N: "~@2 a4 bb4 a4 f4 d4@2 a3@2 c4@2", O: "d4/2", P: "d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4, d4",
  Q: "c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4, c4", R: "bb4 f4 bb4 f4 bb4 f4 bb4 f4 bb4 f4 bb4 f4, bb3",
  S: "c5 a4 c5 a4 c5 a4 c5 a4 c5 a4 c5 a4, f4",
  T: "[c5 g4 c5 g4 c5 g4 bb4 f4 bb4 f4 bb4 f4 bb4 f4 bb4 f4 bb4 f4 [bb3,d4,f4,bb4]@12 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4, c4 bb3@2 ~@2 d4@2 c4@2 d4@2 c4@2 d4@2 c4]/8", // Bb
  U: "[c5 g4 c5 g4 c5 g4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 bb4 f4 bb4 f4 bb4 f4 bb4 [f4,a4] [g4,bb4] f4 [e4,bb4] f4 c5 a4 c5 a4 c5 a4 c5 a4 c5 a4 c5 a4 c5 g4 c5 g4 c5 g4, ~ d4@2 c4@2 d4@2 bb3@2 f4@2 ~, ~@27 c4@2 ~@4 c4@3]/6", // F Gm Edim
  V: "[bb4 f4 bb4 f4 bb4 f4 [f3,bb4] f4 bb4 f4 [f4,bb4] f4 ~ f4 bb4 f4 bb4 f4 [d4,f4,a4]@2 [d4,f4,a4]!4, bb3@7 bb3@11 ~@6, ~@4 d4 ~ bb4 ~@2 d5@3]/2", // Bb5 Dm
  W: "[c4,e4,g4]@2 [c4,e4,g4]!4 [bb3,d4,f4]@2 [bb3,d4,f4]!4, a4 f5", // C Bb
  X: "[a3,d4,f4]@2 [a3,d4,f4]!4 [d4,f4,a4]@2 [d4,f4,a4]!4, d5 a5", // Dm
  Y: "[c4,e4,g4]@2 [c4,e4,g4]!4 [bb3,d4,f4]@2 [bb3,d4,f4]!4, f5 d5", // C Bb
  Z: "[a3,d4,f4]@2 [a3,d4,f4]!4 [d4,f4,a4]@2 [d4,f4,a4]!4, a4 f5", // Dm
  AA: "[c4,e4,g4]@2 [c4,e4,g4]!4 [bb3,d4,f4]@2 [bb3,d4,f4]!4, d5 a4", // C Bb
  AB: "[a3,d4,f4]@2 [a3,d4,f4]!4 [d4,f4,a4]@2 [d4,f4,a4]!4, f5 d5", // Dm
  AC: "[c4,e4,g4]@2 [c4,e4,g4]!4 [bb3,d4,f4]@2 [bb3,d4,f4]!4, a5 f5", // C Bb
  AD: "[a3,d4,f4]@2 [a3,d4,f4]!4 d4@2 a3@2 a4@2, d5@3 a4@2 ~", AE: "[g4,f5]@6 ~@2 a4 bb4 a4 f4, ~ d5",
  AF: "[d4,a5]@3 d4 a3 a4, ~ f5", AG: "[g4,d5]@6 a4@2 ~ bb4 ~ g4, ~@4 a4!2", AH: "[d4,f5]@2 d4 a3, ~ d5",
  AI: "e4@3 c4@3 f4@3 d4@2 g4, a5 f5", AJ: "[f4,d5]@3 d4 a3 a4, ~@3 a4@2 ~",
  AK: "d4@2 a4 bb4 a4 f4 d4@2 a4 bb4 a4 f4, a5 f5", AL: "d4@2 a4 bb4 a4 f4 d4 a4 f4 d5 a4 f4, d5 ~",
  AM: "c4 g4 e4 c5 g4 e4 bb3 f4 d4 bb4 f4 d4", AN: "a3 e4 c4 a4 e4 c4 g3 d4 bb3 g4 d4 bb3",
  AO: "f3 c4 a3 f4 c4 a3 e3 bb3 g3 e4 bb3 g3", AP: "a3 db4 a3 e4 db4 a3 d4 a4 f4 d5 a4 f4, ~ c5",
  AQ: "c4 g4 e4 c5 g4 e4 bb3 f4 d4 bb4 f4 d4, bb4 a4", AR: "a3 e4 c4 a4 e4 c4 g3 d4 bb3 g4 d4 bb3, g4 f4",
  AS: "f3 c4 a3 f4 c4 a3 e3 bb3 g3 e4 bb3 g3, e4 d4",
  AT: "[[a3,db4] ~ a3 e4 ~ a3 [d4,f4,a4]@24 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 c5 g4 c5 g4 c5 g4, ~ db4@3 db4@2 ~@24 d4@12 c4@12 d4@12 c4@12 d4@12 c4@6]/8", // A Dm
  AU: "d4@2 a4 bb4 a4 f4 [d4,f4,a4]@2 [d4,f4,a4]!4, d5!2", // Dm
  AV: "[c4,e4,g4]@2 [c4,e4,g4]!4 [bb3,d4,f4]@2 [bb3,d4,f4]!4, g5 a5", // C Bb
  AW: "[[c4,e4,g4]@2 [c4,e4,g4]!4 d4 a4 f4 d5 a4 f4 c4 g4 e4 c5 g4 e4 bb3 f4 d4 bb4 f4 d4, bb5 d6@2 ~]/2", // C
  AX: "a3 db4 a3 e4 db4 a3 d4 a4 f4 d5 a4 f4, a5 ~", AY: "a3 db4 a3 e4 db4 a3 d4 a4 f4 d5 a4 f4",
  AZ: "[a3 db4 a3 e4 db4 a3 d4@12 ~@6]/2",
})).s("gm_acoustic_guitar_steel").gain(0.23)

// bass · electric bass finger · "Basso"
const bass = note(`<
  ~@10 A B@2 C D B@2 E C F@2 G H G H G H G H G I J K@8 L@6 ~ M N O N O N O N P ~@18 Q@8 R@4 ~ M N O N O N O N P ~@8 S N
  O N O N O N@2 T ~@16 U
>`.pickRestart({
  A: "~@8 d3!2 a2 f2", B: "d2@4 ~@4 d3!2 a2 f2", C: "d2@2 ~@2 a2 c3", D: "d3@6 ~@2 d3!2 a2 f2",
  E: "d2@6 ~@2 d3!2 a2 f2", F: "d3/2", G: "a2", H: "c2@4 d2 g2", I: "bb2@8 bb2 c3 d3 e3", J: "f3",
  K: "[c3@3 bb2@6 bb2@6 a2@6 c2@4 d2 g2 a2@6 c2@4 d2 g2 a2@6 c2@3]/8",
  L: "[~@2 d2@2 g2@2 a2@12 c2@8 d2@2 g2@2 a2@12 ~@6 bb3 a3 g3 f3 e3 f3 f3@12 c3@6, ~@21 bb2@6 c3@2 ~@7]/6",
  M: "~ bb2 c3 d3@3", N: "c3 bb2", O: "a2 d3", P: "a2 ~",
  Q: "[~@3 a2@6 c2@4 d2 g2 a2@6 c2@4 d2 g2 a2@6 c2@4 d2 g2 a2@6 c2@3]/8",
  R: "[~@2 d2@2 g2@2 a2@12 ~@6 bb3 a3 g3 f3 e3 f3 f3@12 c3@6, ~@9 bb2@6 c3@2 ~@7]/4", S: "~ d3", T: "c3 ~", U: "d2 ~",
})).s("gm_electric_bass_finger").gain(0.53)

// other · piccolo · "Moog."
const piccolo = note("<~@120 A B ~@2 A B ~@2 A C@2>".pickRestart({
  A: "~@6 g5 e5 f5 g5 a5 bb5", B: "a5 bb5 a5 g5 f5 e5 ~@6", C: "[a5 bb5 a5 [g5,bb5] [f5,b5] [e5,db6] [d5,d6]@12 ~@6]/2",
})).s("gm_piccolo").gain(0.64)

// drums · congas
const congas = s("conga:13").struct(`<
  A@32 B@13 C A C@3 A C@2 A C B@30 C A C@3 A C@2 A C B@9 C@3 A C@2 A C@2 B@16 D ~
>`.pickRestart({
  A: "x ~ x ~ x ~ x!6", B: "x!7 ~ x ~ x ~", C: "x!12", D: "x!6 ~@6",
})).gain(2.05)

stack(flute, acoustic_guitar_steel, bass, piccolo, congas)

More by Battisti