Strudelify

Dove arriva quel cespuglio

Battisti

KeyE minorTempo120 bpm
0:00/0:00
// Dove arriva quel cespuglio — Battisti
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 taiko drum (copy of ch 9 melodic tom)
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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(`<
  ~@4 A@2 B C A@2 B C D@2 E F G H I J K L K M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG I AH I J K AI K AJ AK AL AM
  AN R S T U AO AP X Y AQ@2 AR@2 AS@2 AT@2 AU@4 AV AW@2 AX AY H I J K AZ BA BB N O P Q R BC T BD AO BE X Y AQ@2 AR@2
  AS@2 AT@2 AQ@2 AR@2 AS@2 AT@2 BF@2
>`.pickRestart({
  A: "a4@2 g4@3 ~ g4@2, e4@5 e4@3", B: "d5@2 c5@3 a4 c5@2, f4", C: "d5@2 e5 d5@2 c5 a4@2, f4",
  D: "a4@2 g4@3 ~ f4@2, d4@5 d4@3", E: "a4@2 b4 g#4@3 ~@2, e4", F: "~@2 c5!6, [e4,g#4]",
  G: "b4 ~ a4@4 ~@6 c5 ~ c5 ~, [c4,e4]", H: "b4 ~ a4 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~, [c4,e4]",
  I: "b4 ~ a4@4 ~@10, [c4,e4]", J: "~@4 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~, [c4,e4]", K: "c5 ~ b4@4 ~@10, [d4,f4]",
  L: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~, [d4,f4]", M: "~@2 a4 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5 ~, [d4,f4]",
  N: "e5 ~ d5@4 ~@10, [b3,d4,g4]", O: "~@4 f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5 ~, [b3,d4,g4]", P: "e5 ~ d5@4 ~@10, [b3,d4,g#4]",
  Q: "~@4 e5 ~ e5 ~ e4 ~ e4 ~ e5 ~ e5 ~, [b3,d4,g#4]", R: "d5 ~ c5@4 ~@10, [c4,e4,a4]",
  S: "~@4 e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~, [c4,e4,a4]", T: "d5 ~ c5@4 ~@10, [e4,g4]",
  U: "~@4 c5 ~ c5 ~ d5 ~ d5 ~ d5 ~ c5 ~, [e4,g4]", V: "c5 ~ b4@4 ~@4 d5 ~ d5 ~ c5 ~, [d4,g4]",
  W: "c5 ~ b4 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~, [c4,f4]", X: "c5 ~ b4@4 ~@10, [d4,e4,g#4]", Y: "[d4,e4,g#4]",
  Z: "[a4,c5,e5]", AA: "[e4,a4,d5]", AB: "[e4,a4,c5]", AC: "[c4,e4,b4]@6 ~ a4", AD: "[f4,a4,c5] e5 [c4,f4,a4]@6",
  AE: "~@2 e5 ~ e5 ~ e5 ~ e5@2 ~ d5@2 c5@2 ~, [f4,a4]", AF: "[d4,f#4,a4], e5@5 ~@11",
  AG: "~@4 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~, [d4,f#4,a4]", AH: "~@2 d4 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5!4, [c4,e4]",
  AI: "~@8 d5 ~ d5 ~ d5 ~ c5 ~, [d4,f4]", AJ: "~@4 f5 ~ f5 ~ f5 ~ f5 ~ f5@2 ~ e5, [d4,f4]",
  AK: "e5 ~ d5@4 ~@10, [g4,b4]", AL: "~@4 f5 ~ f5 ~ f5 ~ f5 ~ f5@2 ~ e5, [g4,b4]", AM: "e5 ~ d5@4 ~@10, [g#4,b4]",
  AN: "~@4 e5 ~ e5 ~ e4 ~ e4 ~ e5 ~ e5 ~, [d4,g#4], e4 ~", AO: "c5 ~ b4@4 ~@6 d5 ~ c5 ~, [d4,g4]",
  AP: "c5 ~ b4 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~, [f4,a4]", // F
  AQ: "[a4 g4@2 a4 g4@2 a4 ~@2 a4 g4@2 a4 g4@2 ~, [c4,e4,e5] [c4,e4,d5], ~@7 g4@2 ~@7]/2", // C
  AR: "[a4 g4@2 a4 g4@2 a4 ~@2 a4 g4@2 a4 g4@2 a4, [c4,e4,c5] [c4,e4,b4], ~@7 g4@2 ~@7]/2", // C Cmaj7
  AS: "[[a4,c5] e5 a4!2 g4@2 a4 g4@2 a4 g4@2 a4 g4@2 ~, ~ g4@2 ~@9 c5@4]/2", // Am
  AT: "[d5 e5 [a4,d5,f#5]@8 [d4,f#4,a4]@6, [f#4,a4] ~@7]/2", AU: "[e4,a4,c5]/2", AV: "[f4,a4,c5]",
  AW: "[e5 ~ e5 ~ e5 ~ e5 d5@2 ~ d5 ~ d5 ~ d5 ~@3 c5 ~ c5 ~ c5 b4@2 ~ b4 ~ b4 ~ a4 ~, [f4,a4]@15 c5@2 ~@15, ~ f#4, ~@8 a4@7 ~]/2", // F
  AX: "e4@4 e4 ~ e4 ~ c5 ~ c5 ~ c5 ~ b4 ~, e3", AY: "b4 ~ a4@4 ~@8 c5 ~, [c4,e4]",
  AZ: "~@2 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~, [d4,f4]", BA: "c5 ~ b4@4 ~@6 d5 ~ d5 ~, [d4,f4]",
  BB: "c5 ~ g4 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5 ~, [d4,f4]", BC: "~@6 e5 ~ e5 ~ e5 ~ e5 ~ e5 ~, [c4,e4,a4]",
  BD: "g4@2 g4 ~ g4 ~ g4 ~ d5 ~ d5 ~ d5 ~ c5 ~, e4", BE: "c5 b4 d5!2 c5 ~ b4 ~@3 d5!5 c5, [c4,f4]",
  BF: "[c4,e4,a4,c5]/2", // Am
})).s("gm_piano").gain(0.64)

// chords · violin
const violin = note(`<
  ~@4 A@2 B@2 A@2 B@2 C@2 D E F@4 G@4 H@2 I@2 J@2 K@2 L M N@2 O P Q R S T U@2 F@4 G@4 V@2 W N J@2 K@2 L T N@2 X Y Z AA
  AB AC AD@2 AE@4 AF T AG AH F@4 G@4 H@2 I@2 J@2 K@2 L M N@2 X Y Z AA AB AC AD@2 X Y Z AA AB AC AD@2 AI@2
>`.pickRestart({
  A: "e4/2", B: "f4/2", C: "d4/2", D: "e4", E: "[e4,g#4]", F: "[c4,e4]", G: "[d4,f4]", H: "[b3,d4,g4]",
  I: "[b3,d4,g#4]", J: "[c4,e4,a4]", K: "[e4,g4]", L: "[d4,g4]", M: "[c4,f4]", N: "[d4,e4,g#4]", O: "[a4,c5,e5]",
  P: "[e4,a4,d5]", Q: "[e4,a4,c5]", R: "[c4,e4,b4]@6 ~ a4", S: "[f4,a4,c5] e5 [c4,f4,a4]@6", T: "[f4,a4]",
  U: "[d4,f#4,a4]", V: "[g4,b4]", W: "[g#4,b4]", X: "[c4,e4,e5]", Y: "[c4,e4,d5]", Z: "[c4,e4,c5]", AA: "[c4,e4,b4]",
  AB: "c5 e5 a4@6", AC: "~ c5", AD: "[d5 e5 f#5@8 ~@6]/2", AE: "[e4,a4,c5]/2", AF: "[f4,a4,c5]", AG: "[f#4,a4]",
  AH: "[e3,e4]", AI: "[c4,e4,a4]/2",
})).s("gm_violin").gain(0.13)

// bass · acoustic bass
const bass = note(`<
  A B A B A B C D A B C D E F G H A B A B C D C D E F G H A B I J E K G H A B A B K L C D A B A B C D C D E F G H A B I
  J E K G H A B A B K L C D A B A B K L C H A B A B C D C D E F G H A B I J E K G H A B A B K L C D A B A B K L C D M@2
>`.pickRestart({
  A: "a2@2 ~ a2@3 ~ a2", B: "a2@2 ~ a2@3 ~@2", C: "d2@2 ~ d2@3 ~ d2", D: "d2@2 ~ d2@3 ~@2", E: "g2@2 ~ g2@3 ~ g2",
  F: "g2@2 ~ g2@3 ~@2", G: "e2@2 ~ e2@3 ~ e2", H: "e2@2 ~ e2@3 ~@2", I: "c3@2 ~ c3@3 ~ c3", J: "c3@2 ~ c3@3 ~@2",
  K: "f2@2 ~ f2@3 ~ f2", L: "f2@2 ~ f2@3 ~@2", M: "a2/2",
})).s("gm_acoustic_bass").gain(0.64)

// other · melodic tom
const melodic_tom = note(`<
  [e5!4]!35
  [e5@3 ~@3 e5@4 ~@4 e5 ~]
  [e5!4]!27
  [e5@3 ~@3 e5@4 ~@4 e5 ~]
  [e5!4]!35
  [e5@3 ~@3 e5@4 ~@4 e5 ~]
  [e5!4]!16
  ~@2
>`).s("gm_melodic_tom").gain(0.64)

stack(piano, violin, bass, melodic_tom)

More by Battisti