Strudelify

Caro me stesso mio

Pooh

KeyD minorTempo114 bpm
0:00/0:00
// Caro me stesso mio — Pooh
// 114 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 28.
setcpm(114/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(`<
  ~@10 A B A B A B A B A B A B C@2 D@2 E F A B A B A B A B A B A B G@2 H I J K L@2 M N O P L@2 M N O P Q@2 A B A B A B A
  B A B A B G@2 H I J K L@2 M N O P L@2 M N O P R@2 L@2 M N O P S@4 ~@2
>`.pickRestart({
  A: "[a3,c4,d4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,f4] ~", // Dm7 F Dm7 F Dm7 F
  B: "[a3,c4,e4,g4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4] ~", // Am7 Am Am7 Am Am7 Am
  C: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~", // Dm
  D: "[e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~", // C
  E: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // Bb
  F: "[g3,c4,d4] ~ [g3,c4,d4] ~ [g3,c4,d4] ~ [g3,c4,d4] ~ [g3,c4,d4] ~ [g3,c4,d4] ~ [g3,c4,d4] ~ [a3,c4,d4,f4] ~", // Gsus4 Dm7
  G: "[d4!2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 d4!2 [d4,f4] ~@2 d4 ~ bb2, bb1, bb2@4 bb2@2 ~ bb2@4 ~ bb2@2 ~@2, [f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 a4@3 d4@2 ~ [d4,f4,a4]@2, ~@8 f4@2 ~ [f4,a4]@3 ~@2]/2", // Dm F Dm F
  H: "~@2 c4 ~@4 a2, a1@3 ~, [e4,g4]@3 [e4,g4]@3 [e4,g4]@2, c4@2 ~ c4@2 c4@3, ~ a2@2 ~ a2@3 ~", // Em
  I: "~@2 c4 ~@2 c4 ~ a2, a1, [e4,g4]@3 [e4,g4]@3 ~@2, c4@2 ~ c4@2 ~ [c4,e4,g4]@2, ~ a2@2 ~ a2@2 ~@2", // Em C
  J: "~@2 [bb3,d4,f4] ~@2 [bb3,d4] ~ g2, g1, [bb3,d4,f4]@2 ~ f4@3 ~@2, ~ g2@3 g2@2 ~@2, ~@3 [bb3,d4]@2 ~ [bb3,d4,f4]@2", // Bb
  K: "~@2 [c4,e4,g4]!2 ~@3 c3, c2, [c4,e4,g4] ~ c5@2, ~ c3@3 c3@2 [e5,g5]@2, ~@4 e5 [d5,f5]@3", // C Em Dm
  L: "[~@2 [c4,f4,a4]@2 ~ [c4,f4,a4]@2 ~ [c4,f4]@2 f2 f2@2 f2 f2@2 ~@2 [c4,e4,a4]@3 [c4,e4,a4]@3 [c4,e4]@2 e2 e2@2 e2 e2@2, f3@4 f3@3 f3@9 e3@16, ~ f2@9 ~ a4@7 ~@9 [c4,e4,a4]@5, ~ bb4 ~ bb4, ~@11 [c4,f4]@5 ~ e2@9 ~@6]/2", // F F5 Am C Am F5
  M: "~@2 [c4,eb4,a4]@3 [c4,eb4,a4]@3 [c4,eb4]@2 eb2 [eb2,c4,eb4]@2 eb2 [eb2,c4,eb4,g4]@2, eb3, ~ eb2@9 ~ a4@5, ~ bb4", // Adim Cm
  N: "~@6 d3@2 ~@2 d2 ~@2 d2 [d2,d3]@2, gb4 g4, [d2,a3,d4]@3 d2@5 ~@3 d2@2 ~@3, ~ d3@2 ~@2 d3@2 ~, ~ [a3,d4]!2 [a3,d4,a4]", // D D5
  O: "~@2 d4 [bb3,d4,g4]@2 ~@5 [bb3,d4] [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2, g2, ~ g1@7 ~@8, ~@5 g3@3 g3@5 g3@3, ~@6 [bb3,d4,g4]@5 ~@5", // Gm Bb Gm
  P: "~@3 db4@2 ~ bb2@2 ~@2 e4 [c4,e4,g4]@2 ~ [c4,e4,g4]@2, bb2@5 [bb3,db4]@3 c3@5 c3@3, ~ bb1@7 ~ c2@7, ~@2 bb3@3 f4@11, ~@5 b3@3", // C Bbm
  Q: "[[d4,f4,a4]!8 [d4,f4,a4]!4 [bb1,bb2,d4,f4,a4]!3 [a3,c4,d4,f4], [bb1,bb2]@3 ~]/2", // Dm Bbmaj7 Dm7 Bb
  R: "[[d4,f4,a4]!8 [d4,f4,a4]!4 [bb1,bb2,d4,f4,a4]!3 [bb2,d4,f4,a4], [bb1,bb2]@3 ~]/2", // Dm Bbmaj7 Bb
  S: "[[d4,f4,a4]!8 [d4,f4,a4]!4 [bb1,bb2,d4,f4,a4]!3 [d2,d4,f4,a4]@16 ~, [bb1,bb2]@3 ~@5]/4", // Dm Bbmaj7 Dm Bb
})).s("gm_piano").gain(0.38)

// bass · slap bass 1
const bass = note(`<
  ~@9 A B C B C B C B C B C B C ~@5 D@2 C E C E C E C E C B C ~@19 F@2 C B C E C B C E C B C ~@19 G ~@7 H@4 ~
>`.pickRestart({
  A: "~@12 a2@3 ~", B: "d2@2 d3 ~@3 a2 ~@3 a2@5 ~", C: "a1@2 a1 ~@2 a1 ~ a1 g1@2 a1 ~@3 f2 ~",
  D: "[~@8 c2@2 c2@2 db2@2 d2@6 ~@2 a2@2 ~@2 a2@5 ~]/2", E: "d2@2 d3 ~@3 a2 ~@3 a2@4 ~@2",
  F: "[~@8 bb1@2 bb1@2 bb1@2 d2@6 ~@2 a2@2 ~@2 a2@5 ~]/2", G: "~@4 bb1!4", H: "[~@4 a1 c2 f2 d2@25]/4",
})).s("gm_slap_bass_1").gain(0.64)

// bass · slap bass 1 · soft notes
const bass_soft = note(`<
  ~@11 A ~ A ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~ A ~ A ~@21 A ~ A ~ A ~ A ~ A ~ A ~@32
>`.pickRestart({
  A: "~@6 c2 ~",
})).s("gm_slap_bass_1").gain(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@2 B@2 C D E F G@2 ~@36 H@2 I J K@2 H@2 I J K@2 L@2 ~@18 H@2 I J K@2 H@2 I J K@2 M@2 H@2 I J K@2 N@3 ~@3
>`.pickRestart({
  A: "[[bb2,d4,f4,a4]@29 ~@3]/2", B: "[[a2,c4,e4,g4]@29 ~@3]/2", C: "[g2,bb3,d4,f4]@13 ~@3", D: "[c3,bb3,d4,f4]@13 ~@3",
  E: "[d3,d4,f4,a4]@13 ~@3", F: "[a2,c4,e4,g4]@13 ~@3", G: "[bb2,d4,f4,a4]/2", H: "[f4 e4, [a3,c4]]/2",
  I: "[g3,a3,c4,eb4]", J: "[gb3,a3,d4]", K: "[g3@2 f4 [bb3,c4,e4,g4], [bb3,d4]@3 ~]/2", L: "[[d4,f4,a4]@7 ~]/2",
  M: "[d4,f4,a4]/2", N: "[[d4,f4,a4]@5 [d4,f4,a4] ~@2]/3",
})).s("gm_string_ensemble_2").gain(0.33)

// bass · electric bass finger
const bass_2 = note(`<
  ~@22 A B C D E F ~@12 A B C D G H I J K L M N O P Q R S T U V ~@12 A B C D G H I J K L M N O P Q R S T U V O P Q R S T
  U V ~@4
>`.pickRestart({
  A: "bb1@3 bb1 bb2@3 f2", B: "bb1@3 bb2@5", C: "a1@6 a1 ~ a1@6 g1 ab1", D: "a1@10 a2!3 e3 a2 ab2", E: "g2@5 g2@3",
  F: "c2 ~", G: "g2@12 g2 f2 d2 db2", H: "c2@3 c2 c2@4", I: "f2", J: "e2", K: "eb2", L: "d2@10 ~ d2 e2@2 gb2@2",
  M: "g2@11 ~ g2@4", N: "bb1@8 c2@7 ~", O: "f2@2 ~ f2 f3@4 f2@2 ~ f2 ~@2 f2 ~, ~@3 f3",
  P: "e2@2 ~ e2 e3@4 e2@2 ~ e2 e3@2 e2 ~", Q: "eb2@2 ~ eb2 eb3@4 eb2@2 ~ eb2 eb3@2 eb2@2",
  R: "d2@2 ~ d2 d3@4 d2@3 gb2 g2@2 a2@2", S: "g2@11 ~ g2@3 ~", T: "bb1@7 ~ c2@7 ~", U: "bb1!8", V: "bb1!4 ~@4",
})).s("gm_electric_bass_finger").gain(0.53)

// chords · pad sweep
const pad_sweep = note(`<
  A@2 B@2 C@2 D E A@2 ~@12 F@2 G@2 H@2 ~@12 F@2 G@2 H@2 ~@12 I@2 ~@12 F@2 G@2 H@2 ~@12 I@2 ~@6 J@3 ~@3
>`.pickRestart({
  A: "[bb2,d4,f4,a4]/2", B: "[a2,c4,e4,g4]/2", C: "[g2 c3, [bb3,d4,f4]]/2", D: "[d3,d4,f4,a4]", E: "[a2,c4,e4,g4]",
  F: "[bb3,d4,f4,a4]/2", G: "[a3,c4,e4,g4]/2", H: "[bb3 c4, [g3,d4,f4]]/2", I: "[[bb2,f3,a3,d4]@31 ~]/2",
  J: "[[bb2,f3,a3,d4]@5 [f3,a3,d4] ~@2]/3", // Bbmaj7 Dm
})).s("gm_pad_sweep").gain(0.29)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B C D E F ~@16 A B C D G ~@12 H I F J K ~@4 L M ~@4 L M ~@16 N B O ~@5 L M ~@4 L M ~@6 L M ~@7
>`.pickRestart({
  A: "~ [d4,f4] a4 bb4 g4 a4 f4 g4 e4 f4 d4@2 c4 a3 g3 d4", B: "c4@3 ~",
  C: "c5 d5 ~ g4 a4 e4 ~ d4 e4 a3 ~ g3 a3 e3 ~ eb3", D: "d3@11 ~ d3@4", E: "c3@6 a3@2 g3@2 c4 bb3 a3 g3 f3@2",
  F: "a3 ~", G: "c3 ~", H: "~@15 [d4,f4]", I: "a4 c5 bb4 a4 g4 f4 e4 g4 f4 e4 d4 c4 bb3 g3 ~ ab3",
  J: "c4 a3 ~ d4 c4 a3 f4 e4 d4 e4 f4 g4 a4 c5 bb4 a4", K: "g4@3 ~", L: "~@6 d5 ~ g5@2 a4@2 c5@4", M: "bb4@15 ~",
  N: "~@2 bb4 c5 f4@3 ~ f4 g4 d4@6", O: "~@4 c4@2 a3 c4 d4 c4 a3 g3@3 f3 d3",
})).s("gm_electric_guitar_muted").gain(0.39).pan(0.3)

// other · overdriven guitar
const overdriven_guitar = note("<~@6 A B C D ~@17 E@2 ~@30 E@2 ~@38 F@4 ~>".pickRestart({
  A: "~@6 f5@8 [d5,eb5,e5] [c5,db5]", B: "~@6 f5@8 [db5,eb5,e5] [bb4,b4,c5]", C: "~@6 g5@5 ~ a5@2 a5@2",
  D: "a5@2 c6@13 ~", E: "[~@8 g2@2 c3@2 f3@2 d3@4 [b2,c3,db3] [f2,g2,a2,bb2] [d2,e2] ~@11]/2",
  F: "[~@4 g2 c3 f3 d3@25]/4",
})).s("gm_overdriven_guitar").gain(0.25).pan(0.4)

// other · overdriven guitar · soft notes · Bmaj7 Abmaj7
const overdriven_guitar_soft = note("<~@6 [~@15 [bb4,b4]] [a4 ~@14 a4] [[g4,ab4] ~@15] ~@95>")
  .s("gm_overdriven_guitar").gain(0.13).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@10 A B A B A B A B A B A B ~@6 A B A B A B A B A B A B ~@20 A B A B A B A B A B A B ~@32
>`.pickRestart({
  A: "~@2 [a4,d5,f5]!2 ~ [a4,d5,f5]!3 [a4,c5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~", // Dm F Dm
  B: "~@2 [c5,e5,g5]!2 ~ [c5,e5,g5] ~ [c5,e5,g5]!4 ~ [c5,e5,g5] ~ [c5,e5,g5] ~", // C
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.3)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@10 A B A B A B A B A B A B C@6 A B A B A B A B A B A B C@6 D@12 C ~ A B A B A B A B A B A B C@6 D@12 C ~ D@6 C ~@5
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@3 x ~@4", D: "~@3 x ~@7 x ~@4",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@10 [~ x ~ x]!12 ~@6 [~ x ~ x]!12 ~@20 [~ x ~ x]!12 ~@32>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@10 A B@3 A B@3 A B@3 C D@4 E B@4 A B@3 A B@3 C D@5 F G@11 A H B@4 A B@3 A B@3 C D@5 F G@11 A ~ F G@5 A H ~@4
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "~ x!4 ~ x!2", D: "x!5 ~ x!2", E: "x!4 ~@4", F: "~ x!15", G: "x!16", H: "x!7 ~",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A ~@17 B ~@18 C@12 ~ D ~@18 C@12 ~@2 C@6 ~ D ~@4>".pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~", C: "~@7 x", D: "~@2 x!2",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@22 [~@5 x ~@2]!5 [~ x] ~@12 [~@5 x ~@2]!6 ~@26 [~@5 x ~@2]!6 ~@26>").gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@59 [~ x] ~@39 [~ x] ~@4>").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@3 A ~@3 A ~@3 A ~@4 B ~@4 A ~@3 A ~@3 A ~@5 A ~@11 A B ~@4 A ~@3 A ~@3 A ~@5 A ~@11 A ~ A ~@5 A B ~@4
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@10 A@12 B@6 A@12 B@6 ~@12 A C A@12 B@6 ~@12 A D ~@6 A C ~@4>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x!4", D: "x ~ x ~ x!4",
})).gain(0.4)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<[x!8]!10 ~@81 [~ x ~ x ~@4] ~@12>").gain(0.16)

// drums · claves
const claves = s("clave:2").struct("<~@46 [x!4]!12 ~@20 [x!4]!12 ~@2 [x!4]!6 ~@6>").gain(1.96)

stack(
  piano, bass, bass_soft, string_ensemble_2, bass_2, pad_sweep, electric_guitar_muted, overdriven_guitar,
  overdriven_guitar_soft, electric_guitar_clean, kick, kick_soft, snare, hihat, mid_tom, open_hat, high_tom, crash,
  tambourine, tambourine_soft, claves
)

More by Pooh