Strudelify

Citta di donne

Pooh

KeyD minorTempo85 bpm
0:00/0:00
// Citta di donne — Pooh
// 85 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Piano Rhodes" epiano1 (copy of ch 2 "Piano" piano); ch 11 "Vibrafono" vibraphone (copy of ch 7 "Bell" celesta)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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.

// bass · electric bass finger · "Basso"
const bass = note(`<
  ~@3 A@2 ~ B C@2 ~ B D E D E F E D@3 E D E F E D@2 G H F I J K J L J K J L C@2 ~ B D E D E F E D@3 E D E F I D@2 G H F
  I M ~ M ~ N O N P Q R Q S Q R Q S Q R Q S T@2
>`.pickRestart({
  A: "d2@3 d2@4 ~", B: "~@4 f2 g2 a2 c3", C: "[d2@29 ~@3]/2", D: "d2@13 ~@3", E: "c2@13 ~@3", F: "bb2@13 ~@3",
  G: "g2@13 ~@3", H: "a2@13 ~@3", I: "c3@13 ~@3", J: "d2!4", K: "bb2!2 c3!2", L: "g2!2 a2!2", M: "c3 d3@2 ~@13",
  N: "f2!4", O: "bb2!4", P: "bb2@3 ~ c3@3 ~ db2@3 ~ eb2@3 ~", Q: "e2!4", R: "a2!2 b2!2", S: "c3!2 d2!2",
  T: "[e2@23 ~@9]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · piano
const piano = note(`<
  ~@3 A B ~@2 A B ~@2 C D C D C D C@3 D C D C D C@2 E F C D G H G I G H G I A B ~@2 C D C D C D C@3 D C D C D C@2 E F C
  D ~@4 J K J L M N M O M N M O M N M O P@2
>`.pickRestart({
  A: "[d4,f4,a4,c5]@3 ~@3 c4@2 c4@7 ~, ~@6 [e4,g4,c5]@9 ~", B: "[a3,d4,f4,a4]@3 ~@3 a3@2 a3@7 ~, ~@6 [c4,e4,g4]@9 ~",
  C: "[d4,f4,a4]@13 ~@3", D: "[c4,e4,g4]@13 ~@3", E: "[g3,bb3,d4]@13 ~@3", F: "[a3,c4,e4,g4]@13 ~@3",
  G: "[c4,d4,f4,a4]@13 ~@3", H: "[bb3,d4,f4]@3 ~ [c4,e4,g4]@3 ~", I: "[f3,g3,bb3,d4]@3 ~ [a3,c4,e4,g4]@3 ~",
  J: "[eb4,f4,ab4,c5]@13 ~@3", K: "[ab3,bb3,db4,f4]@15 ~",
  L: "[bb3,db4,f4]@3 ~ [c4,eb4,g4]@3 ~ [db4,f4,ab4]@3 ~ [eb4,g4,bb4]@3 ~", M: "[d4,e4,g4,b4]@13 ~@3",
  N: "[a3,c4,e4]@3 ~ [a3,b3,d4,gb4]@3 ~", O: "[a3,c4,e4]@3 ~ [d4,gb4,a4]@3 ~", P: "[[d4,e4,g4,b4]@23 ~@9]/2",
})).s("gm_piano").gain(0.48)

// chords · banjo · C5 D5 Eb5 F5 D5 E5
const banjo = note(`<
  ~
  [[g3,c4] [a3,d4]!3 ~ [a3,d4]!3 ~ [a3,d4]!7]!62
  ~@4
  [[bb3,eb4] [c4,f4]!3 ~ [c4,f4]!3 ~ [c4,f4]!7]!4
  [[a3,d4] [b3,e4]!3 ~ [b3,e4]!3 ~ [b3,e4]!7]!12
  ~@2
>`).s("gm_banjo").gain(0.21)

// chords · brass section · "Fiati"
const brass_section = note(`<
  ~@7 A@2 ~@22 B C B D B D B D ~ E@2 ~@21 B C B C F G F H I J I J I J I J I J I ~ K@2
>`.pickRestart({
  A: "[~ c5 bb4 a4 bb4 a4 g4 a4@2 g4 f4 g4@2 f4 e4 f4@2 e4 d4 e4@2 c4 d4@4 ~ d4 f4 g4 a4 c5]/2",
  B: "~@3 [f4,a4] [d5,f5]@2 [a4,d5] ~@4 [f4,a4] [d5,f5]@2 [a4,d5] ~", // F Dm D5 F Dm D5
  C: "~@3 [d5,f5]@2 [d5,f5] [bb4,d5]@2 [a4,c5]@2 [bb4,d5] ~@5", // Dm Bb Am Bb
  D: "~@3 [d5,f5]@2 [d5,f5] [bb4,d5]@2 [g4,c5]@2 [bb4,d5] ~@5", // Dm Bb C5 Bb
  E: "[d4@3 ~ [c3,d3,e3,f3,g3] [a3,bb3,c4,d4,e4,f4,g4,a4] [bb4,c5] ~@25, ~@6 d5@13 ~@13]/2", // C Am7 Bbsus2
  F: "~@3 [ab4,c5] [f5,ab5]@2 [c5,f5] ~@4 [ab4,c5] [f5,ab5]@2 [c5,f5] ~", // Ab Fm F5 Ab Fm F5
  G: "~@3 [f5,ab5]@2 [f5,ab5] [db5,f5]@2 [c5,eb5]@2 [db5,f5] ~@5", // Fm Db Cm Db
  H: "[bb3,f4]@3 ~ [c4,g4]@3 ~ [db4,ab4]@3 ~ [eb4,bb4]@3 ~", // Bb5 C5 Db5 Eb5
  I: "~@3 [g4,b4] [e5,g5]@2 [b4,e5] ~@4 [g4,b4] [e5,g5]@2 [b4,e5] ~", // G Em E5 G Em E5
  J: "~@3 [e5,g5]@2 [e5,g5] [c5,e5]@2 [b4,d5]@2 [c5,e5] ~@5", // Em C Bm C
  K: "[e4@3 ~ [d3,e3,gb3,g3,a3] [b3,c4,d4,e4,gb4,g4,a4,b4] [c5,d5] ~@25, ~@6 e5@13 ~@13]/2", // D Bm7 Csus2
})).s("gm_brass_section").gain(0.48)

// chords · pad warm · "Tappeto"
const pad_warm = note("<~@27 A@7 B@5 ~@4 C@2 D@8 E F G@2 H@6 ~@4 I@3 J K@12 L@2>".pickRestart({
  A: "[[g3,bb3,d5]@13 ~@3 [a3,c4,e4,g4,e5]@13 ~@3 [f4,a4,f5]@13 ~@3 [e4,g4,g5]@13 ~@3 a4@13 ~@3 bb3@6 ~@2 [e4,g4]@6 ~@2 [f4,a4]@13 ~@3, d4@43 ~@5 d4@8, ~@48 c4@29 ~@11 c4@21 ~@3, ~@32 f4@11 ~@13]/7", // Gm Am7 F Em F
  B: "[[f3,g3,bb3]@6 ~@2 [a3,e4,g4]@6 ~@2 a4@13 ~@3 bb3@6 ~@2 [e4,g4]@6 ~@2 [f4,a4]@13 ~@3 [f3,g3,bb3]@6 ~@2 [a3,c4,e4,g4]@6 ~@2, ~@8 c4@21 ~@11 c4@21 ~@19, ~@8 [d4,f4]@11 ~@5 d4@11 ~@5]/5", // Gm7 A7 Em F Gm7 Am7 Dm
  C: "[[f4,a4]@13 ~@3 [c4,e4,g4]@13 ~@3, d4]/2", // F C
  D: "[[f4,a4]@13 ~@3 [c4,e4,g4]@13 ~@3 [f4,a4]@13 ~@3 [c4,e4,g4]@13 ~@3 [f4,a4]@45 ~@3 [c4,e4,g4]@13 ~@3, d4]/8", // F C F C F C
  E: "[f4,a4]@13 ~@3", F: "[c4,e4,g4]@13 ~@3", G: "[[f4,a4]@13 ~@3 [c4,e4,g4]@13 ~@3, d4@29 ~@3]/2",
  H: "[[f4,a4]@29 ~@3 [g3,bb3,d5]@13 ~@3 [a3,c4,e4,g4,e5]@13 ~@3 [f4,a4,f5]@13 ~@3 [c4,e4,g4,g5]@13 ~@3, d4@31 ~]/6", // F Gm Am7 F C
  I: "[[eb4,ab4,c5]@13 ~@3 [ab3,bb3,db4]@15 ~ [eb4,ab4,c5]@13 ~@3, f4@15 ~]/3", // Ab Bbm7 Ab
  J: "[bb3,db4,f4]@3 ~ [c4,eb4,g4]@3 ~ [db4,f4,ab4]@3 ~ [eb4,g4,bb4]@3 ~", // Bbm Cm Db Eb
  K: "[[d4,g4,b4]@13 ~@3 c4@6 ~@2 [b3,gb4]@6 ~@2 [g4,b4]@13 ~@3 [a3,c4]@6 ~@2 [d4,gb4,a4]@6 ~@2, e4@22 ~@2 d4@21 ~@19, ~@8 a3@7 ~ e4@11 ~@5]/4", // G B5 G Am D
  L: "[[d4,e4,g4,b4]@23 ~@9]/2", // Em7
})).s("gm_pad_warm").gain(0.48)

// other · celesta · "Bell"
const celesta = note(`<
  ~@27
  [d4@2 f4 e4@2 f4 d4@2 f4 e4@2 f4 d4@3 ~]!4
  ~@28
  [d4@2 f4 e4@2 f4 d4@2 f4 e4@2 f4 d4@3 ~]!4
  ~@22
>`).s("gm_celesta").gain(0.48)

// chords · string ensemble 2 · "Violini"
const string_ensemble_2 = note("<~@27 A@7 B@5 ~@21 C D E ~@4 F@3 G H I H J K@8 L@2>".pickRestart({
  A: "[[g3,bb3,d5]@13 ~@3 [a3,c4,e4,g4]@13 ~@3 [f4,a4,f5]@13 ~@3 [e4,g4,g5]@13 ~@3 a4@13 ~@3 bb3@6 ~@2 [e4,g4]@6 ~@2 [f4,a4]@13 ~@3, d4@43 ~@5 d4@8, ~@48 c4@29 ~@11 c4@21 ~@3, ~@32 f4@11 ~@13]/7", // Gm Am7 F Em F
  B: "[[f3,g3,bb3]@6 ~@2 [a3,e4,g4]@6 ~@2 a4@13 ~@3 bb3@6 ~@2 [e4,g4]@6 ~@2 [f4,a4]@13 ~@3 [f3,g3,bb3]@6 ~@2 [a3,c4,e4,g4]@6 ~@2, ~@8 c4@21 ~@11 c4@21 ~@19, ~@8 [d4,f4]@11 ~@5 d4@11 ~@5]/5", // Gm7 A7 Em F Gm7 Am7 Dm
  C: "[a3,c4,e4,g4]@13 ~@3", D: "[d4,f4,a4]@13 ~@3", E: "[c4,e4,g4]@13 ~@3",
  F: "[[eb4,ab4,c5]@13 ~@3 [ab3,bb3,db4]@15 ~ [eb4,ab4,c5]@13 ~@3, f4@15 ~]/3", // Ab Bbm7 Ab
  G: "[bb3,db4,f4]@3 ~ [c4,eb4,g4]@3 ~ [db4,f4,ab4]@3 ~ [eb4,g4,bb4]@3 ~", H: "[d4,e4,g4,b4]@13 ~@3",
  I: "[a3,c4,e4]@3 ~ [a3,b3,d4,gb4]@3 ~", J: "[a3,c4,e4]@3 ~ [d4,gb4,a4]@3 ~",
  K: "[[d4,g4,b4]@13 ~@3 c4@6 ~@2 [b3,gb4]@6 ~@2 [g4,b4]@13 ~@3 [a3,c4]@6 ~@2 [d4,gb4,a4]@6 ~@2, e4@22 ~@2 d4@21 ~@19, ~@8 a3@7 ~ e4@11 ~@5]/4", // G B5 G Am D
  L: "[[d4,e4,g4,b4]@23 ~@9]/2", // Em7
})).s("gm_string_ensemble_2").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ A@25 B A@3 C A@3 C A@3 C A@19 B A@4 ~@4 A@16 C ~>".pickRestart({
  A: "x!2", B: "x ~@5 x ~@6 x ~@2", C: "x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  A B@9 C B@15 D B@3 E B@3 F B@3 F B C B C B@7 C B@7 D B@4 ~@4 B@3 G B@3 C B@3 C B@3 C ~@2
>`.pickRestart({
  A: "~ x", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@3 x ~@2 x!2 ~@2 x", E: "~@4 x ~@3 x ~@2 x!5",
  F: "~@4 x ~@3 x ~@2 x!4 ~", G: "~@4 x ~@7 x!4",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<[~@11 x ~@4] ~@25 [~@7 x] ~@31 [~@7 x] ~@11 [~@7 x ~@8] ~@14>").gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ [x!16]!30 ~@8 [x!16]!24 [x!8]!4 ~@18>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@5 x ~@2] ~@25 [~@13 x ~@2] ~@31 [~@13 x ~@2] ~@11 [~@3 x ~@4] ~@14>").gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@31 [x!8]!8 ~@28 [x!8]!16 ~@2>").gain(0.48)

// drums · splash
const splash = s("cr").struct(`<
  ~@27 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~@7 A ~@7 A ~@2 B A ~@3 A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "x", B: "x!2",
})).gain(0.48)

// drums · congas
const congas = s("conga:13").struct("<~@63 [~@2 x ~@4 x ~@4 x ~@3]!4 ~@18>").gain(1.54)

// drums · congas
const congas_2 = s("conga:33").struct("<~@63 [x ~@4 x ~@4 x ~@5]!4 ~@18>").gain(1.54)

// drums · ht
const ht = s("ht").struct("<~@63 [~@3 x ~@4 x ~@4 x ~@2]!4 ~@18>").gain(0.48)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@63 [~@15 x]!4 ~@18>").gain(3.06)

stack(
  bass, piano, banjo, brass_section, pad_warm, celesta, string_ensemble_2, kick, snare, low_tom, pedal_hat, mid_tom,
  ride, splash, congas, congas_2, ht, agogo_bells
)

More by Pooh