Strudelify
Noi due nel mondo e nell'anima cover art

L'ultimo abbraccio

Noi due nel mondo e nell'anima

Pooh

KeyC minorTempo63 bpm
0:00/0:00
// Noi due nel mondo e nell'anima — Pooh
// 63 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 55 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(63/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 · cello
const cello = note("<~@11 A B C D E F G H I ~@24 J K ~@2 J K ~@5>".pickRestart({
  A: "c3@2 f3 eb3", B: "d3 bb2", C: "c3@3 bb2", D: "ab3 eb3", E: "f3@2 bb3 ~ eb3@4", F: "db3 c3", G: "bb2 eb3 ab3@2",
  H: "f3 d3", I: "[c3,eb4]",
  J: "~@8 [c2,eb2,c3,eb3] [bb1,d2,bb2,d3]!2 [c2,eb2,c3,eb3]!2 [bb1,d2,bb2,d3]!2 [c2,eb2,c3,eb3]", // Cm Bb Cm Bb Cm
  K: "[c2,eb2,c3,eb3] ~@15", // Cm
})).s("gm_cello").gain(0.18)

// chords · cello · soft notes
const cello_soft = note("<~@14 A B C@2 D ~@13 E F ~@21>".pickRestart({
  A: "~@2 c4 ~ eb4@2 c4@2 ~@2 bb3 ~ eb4@2 bb3@2", B: "~@2 bb3 ~ d4@2 bb3@2 ~@2 bb3 ~ eb4@2 bb3@2",
  C: "~@2 bb3 ~ eb4@2 bb3@2 ~@2 c4 ~ eb4@2 c4@2", D: "~@2 c4 ~ f4@2 c4@2 ~@2 bb3 ~ d4@2 bb3@2", E: "eb3 d3", F: "c3",
})).s("gm_cello").gain(0.08)

// chords · string ensemble 1 · "Archi"
const string_ensemble_1 = note(`<
  ~@2 A B@2 C ~@5 D@2 E F@3 G@2 H I@2 J@4 K L@3 M@2 N ~@5 I@2 O@2 P@2 Q@2 R@2 Q@2 S T O ~@2
>`.pickRestart({
  A: "~ [eb4,eb5] [d4,d5] [eb4,eb5] [c4,c5]@3 [g3,g4]", // Eb D Eb C G
  B: "[[ab3,ab4]@2 [eb4,eb5] [eb4,eb5]@6 [d4,d5] [eb4,eb5] [f4,f5] [d4,d5]@3 [bb3,bb4]]/2", // Ab Eb D Eb F D Bb
  C: "[g3,g4]@2 [eb4,eb5]@13 ~", D: "[[c3,c5]@2 [f3,f5] [eb3,eb5] [d3,d5]@2 bb2@2, [c4,f4,ab4], ~ bb4]/2",
  E: "[c3,c5]@3 [bb2,bb4], [c4,eb4,g4]", // C Bb Cm
  F: "[~@2 c6 ~ eb6@2 c6@2 ~@2 bb5 ~ eb6@2 bb5@2 ~@2 bb5 ~ d6@2 bb5@2 bb5@2 bb5 ~ eb6@2 bb5@2 ~@2 bb5 ~ eb6@2 bb5@2 ~@2 c6 ~ eb6@2 c6@2, [ab3,c4,eb4,ab4,ab5] bb4@4 ~, ~ [eb3,eb4,g4,eb5] [d4,f4] [eb4,g4]@2 ~, ~@4 [f3,f5] bb3 [eb3,eb5]@2 [db3,db5]@2 [c3,c4,eb4,ab4,c5]@2]/3", // Ab Eb Dm Eb F Eb Db Ab
  G: "[~@2 bb5 ~ eb6@2 bb5@2 ~@2 c6 ~ eb6@2 c6@2 ~@4 f6@2 ~@4 bb5 ~ d6@2 bb5@2, [eb4,g4,bb4,eb5] [c4,ab4]@2 [bb3,d4,f4,f6], bb2@2 eb3@2 [ab3,eb4,ab5]@4 [f3,f4,f5,c6]@4 ~ bb4@3]/2", // Eb Fm Bb Ab5 F5
  H: "[c3,c4,eb4,g4,eb5,g5,eb6]", I: "[[c4,f5,ab5,c6] [d4,d5,bb5], [f4,ab4]]/2",
  J: "[[eb4,g4]@2 ~ [d4,bb4], c4@47 ~@17, ~ [f4,ab4]]/4", K: "[c4,eb4,g4]",
  L: "[[c4,eb4]@3 d4 eb4@3 d4 eb4@3 d4 eb4 d4 eb4 d4 db4@4 [c4,eb4,ab4,c5]@4, ab4 bb4@2 ~@3, ~ g4 f4 [g4,bb4]@2 ~]/3", // Cm Ab Gm
  M: "[[eb4,g4,bb4,eb5] [eb4,ab4,eb5] ~ [bb3,d4,bb4,d5,bb5], ~ c4@2 ~, ~ [f4,ab4,c5,f5]]/2", N: "[eb4,g4,bb4,g5]",
  O: "[c4,eb4,g4,c5,eb5,g5]", P: "[[c4,c5,f5]@2 bb5 ab5, [f4,ab4], ~ [d4,bb4,f5]]/2", Q: "[c4,eb4,g4,c5,g5]",
  R: "[[c4,c5,f5]@2 ~ ab5, [f4,ab4], ~ [d4,bb4,f5,bb5]]/2", S: "[c4,f4,ab4,c5,f5]", T: "[d4,f4,ab4,bb4,d5,f5]",
})).s("gm_string_ensemble_1").gain(0.2).pan(0.6)

// other · oboe · "Canto"
const oboe = note(`<
  ~@6 A B C D A B C E F G@2 H I@2 ~@7 J K@3 L@2 A B C D A M N D A M C D A M C D A M C D ~@2
>`.pickRestart({
  A: "~ eb5 d5 eb5 c5@3 g4", B: "ab4@2 eb5 eb5@5", C: "~ d5 eb5 f5 d5@3 bb4", D: "g4@3 eb5@13", E: "g4@3 eb5@11 b4 ~",
  F: "c5@2 b4 c5@3 ab4 g4@3 eb5 eb5@4 g4",
  G: "[ab4@2 g4 ab4@3 f4 g4@7 ab4 bb4@3 c5 db5@3 eb5 eb5@3 d5 eb5@2 f5@2 d5]/2",
  H: "eb5@2 d5 eb5@2 bb4@2 c5@3 b4 c5@2 ab4@2 c5", I: "[eb5@2 d5 eb5@2 c5@2 eb5 f5@2 eb5 f5@2 eb5@2 eb5@17]/2",
  J: "c5@2 b4 c5@3 ab4 g4@3 eb5 eb5@2 bb4@2 g4",
  K: "[ab4@2 g4 ab4@3 f4 g4@7 ab4 bb4@3 c5 db5@3 eb5 eb5@3 d5 eb5@2 f5@2 eb5@3 d5 eb5@2 bb4@2 c5@3 b4 c5@2 ab4!2 c5]/3",
  L: "[eb5@2 d5 eb5@2 c5!2 eb5 f5 eb5 f5 eb5 f5 eb5@2 eb5@17]/2", M: "ab4@3 eb5@2 ~ eb5@10",
  N: "~@2 d5@2 eb5@2 f5@2 d5@5 ~ bb4@2",
})).s("gm_oboe").gain(0.22)

// other · english horn · "Canto"
const english_horn = note("<~@19 A B@2 C A D@2 E F G@3 H@2 ~@22>".pickRestart({
  A: "~ eb5 d5 eb5 c5@3 g4", B: "[ab4@3 eb5 eb5@5 d5 eb5 f5 d5@3 bb4]/2", C: "g4 eb5@7",
  D: "[ab4@2 eb5 eb5@6 d5 eb5 f5 d5@3 bb4]/2", E: "g4@3 eb5@13", F: "c5@2 b4 c5@3 ab4 g4@3 eb5 eb5@2 bb4@2 g4",
  G: "[ab4@2 g4 ab4@3 f4 g4@7 ab4 bb4@3 c5 db5@3 eb5 eb5@3 d5 eb5@2 f5@2 eb5@3 d5 eb5@2 bb4@2 c5@3 b4 c5@2 ab4!2 c5]/3",
  H: "[eb5@2 d5 eb5@2 c5!2 eb5 f5 eb5 f5 eb5 f5 eb5@2 eb5@17]/2",
})).s("gm_english_horn").gain(0.22).pan(0.9)

// other · pad warm · "Pad"
const pad_warm = note("<~@5 A@2 ~@12 B ~@35>".pickRestart({
  A: "[~@7 g5@13 ~@12]/2", B: "c6 ~ c6 ~ c6 ~ c6 ~",
})).s("gm_pad_warm").gain(0.8)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~@10 A B C D E F G@2 H I B C J@2 B C K E F G@2 H L ~@4 A B C J@2 B C J@2 B C J@2 B C ~@3
>`.pickRestart({
  A: "~@4 [c3,eb3,g3,c4,eb4,g4]@4 [c3,eb3,g3,c4,eb4,g4]@2 [c3,eb3,g3,c4,eb4,g4] [c3,eb3,g3,c4,eb4,g4]@2 [c3,eb3,g3,c4,eb4,g4]!2 ~", // Cm
  B: "[c3,f3,ab3,c4,f4,ab4]@4 [c3,f3,ab3,c4,f4,ab4]@4 [c3,f3,ab3,c4,f4,ab4]@2 [c3,f3,ab3,c4,f4,ab4] [c3,f3,ab3,c4,f4,ab4]@2 [c3,f3,ab3,c4,f4,ab4]!2 ~", // Fm
  C: "[d3,f3,bb3,d4,f4,bb4]@4 [d3,f3,bb3,d4,f4,bb4]@4 [d3,f3,bb3,d4,f4,ab4]@2 [d3,f3,bb3,d4,f4,ab4] [d3,f3,bb3,d4,f4,ab4]@2 [d3,f3,bb3,d4,f4,ab4]!2 ~", // Bb Bb7
  D: "[c3,eb3,g3,c4,eb4,g4]@4 [c3,eb3,g3,c4,eb4,g4]@4 [c3,eb3,g3,c4,eb4,g4]@2 [c3,eb3,g3,c4,eb4,g4] [c3,eb3,g3,bb3,eb4,g4]@2 [c3,eb3,g3,bb3,eb4,g4]!2 ~", // Cm Cm7
  E: "[c3,eb3,ab3,c4,eb4,ab4]@4 [c3,eb3,ab3,c4,eb4,ab4]@4 [bb2,eb3,g3,bb3,eb4,g4]@2 [bb2,eb3,g3,bb3,eb4,g4] [bb2,eb3,g3,bb3,eb4,g4]@2 [bb2,eb3,g3,bb3,eb4,g4]!2 ~", // Ab Eb
  F: "[bb2,d3,f3,ab3,d4,f4]@4 [bb2,d3,f3,ab3,d4,f4]@4 [bb2,eb3,g3,bb3,eb4,g4]@2 [bb2,eb3,g3,bb3,eb4,g4] [bb2,eb3,g3,bb3,eb4,g4]@2 [bb2,eb3,g3,bb3,eb4,g4]!2 ~", // Bb7 Eb
  G: "[bb2,eb3,g3,bb3,db4,g4]@4 [bb2,eb3,g3,bb3,db4,g4]@4 [c3,eb3,ab3,c4,eb4,ab4]@2 [c3,eb3,ab3,c4,eb4,ab4] [c3,eb3,ab3,c4,eb4,ab4]@2 [c3,eb3,ab3,c4,eb4,ab4]!2 ~", // Eb7 Ab
  H: "[c3,f3,ab3,c4,eb4,ab4]@4 [c3,f3,ab3,c4,eb4,ab4]@4 [d3,f3,bb3,d4,f4,bb4]@2 [d3,f3,bb3,d4,f4,bb4] [d3,f3,bb3,d4,f4,bb4]@2 [d3,f3,bb3,d4,f4,bb4]!2 ~", // Fm7 Bb
  I: "[c3,eb3,g3,c4,eb4,g4]", // Cm
  J: "[c3,eb3,g3,c4,eb4,g4]@4 [c3,eb3,g3,c4,eb4,g4]@4 [c3,eb3,g3,c4,eb4,g4]@2 [c3,eb3,g3,c4,eb4,g4] [c3,eb3,g3,c4,eb4,g4]@2 [c3,eb3,g3,c4,eb4,g4]!2 ~", // Cm
  K: "[c3,eb3,g3,c4,eb4,g4]@15 ~", L: "[eb3,g3,bb3,eb4,g4,bb4] ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.16)

// bass · electric bass pick · "Bass"
const bass = note("<~@24 A B ~@16 A B ~@2 A B ~@2 A B ~@3>".pickRestart({
  A: "~@8 f2!8", B: "bb1 ~",
})).s("gm_electric_bass_pick").gain(0.32)

// chords · piano
const piano = note(`<
  A@3 B C D E F G H A F G I J K@2 L M N F G H A F G O P Q R S T U E F G V E F G H A F G O A F G O A F G E W X
>`.pickRestart({
  A: "eb3 d3 eb3 d3 eb3 d3 eb3 d3, c2", B: "eb3 d3 eb3 d3 eb3 d3 eb3 d3, ab1", C: "f3 d3 f3 d3 f3 d3 f3 d3, bb1",
  D: "eb3 c3 eb3 d3 eb3 d3 eb3 d3, c2", E: "eb3 d3 eb3 d3 eb3 d3 eb3 d3, [g1,c2,eb2]",
  F: "eb3 d3 eb3 d3 eb3 d3 eb3 d3, [ab1,c2,f2]", G: "f3 d3 f3 d3 f3 d3 f3 d3, [bb1,bb2], ~ ab2",
  H: "[eb2,eb3] d3 eb3 d3 eb3 d3 eb3 [c2,d3], g1, ~ eb2@7, ~ c2@6 ~", // Eb Csus2
  I: "[eb2,eb3] d3 eb3 d3 eb3 d3 eb3 d3, g1, ~ eb2@7, ~ c2@5 [c2,bb2]@2", // Eb C7
  J: "eb3 d3 eb3 d3 eb3 bb2 eb3 bb2, [c2,eb2,ab2] [eb2,g2]", // Ab Eb
  K: "[f3 d3 f3 d3 eb3 d3 eb3 d3 eb3 db3 eb3 db3 eb3 d3 eb3 d3, [bb1,f2,bb2] g2@2 ~, ~ [eb2,bb2] [db2,bb2] [c2,eb2,ab2]]/2", // Bb5 Eb5 Gb Ab
  L: "eb3 db3 eb3 db3 eb3 d3 eb3 d3, [db2,g2,bb2] [c2,eb2,ab2]", // Gdim Ab
  M: "f3 d3 f3 d3!2 bb2 d3 bb2, [c2,f2,ab2] [bb1,f2,ab2]", N: "[c2,eb2,g2]", O: "[g1,c2,eb2]",
  P: "[eb3,ab3]@2 eb3 ab3 [g3,bb3]@2 bb3 g3, [eb2,ab2,c3,c4] [eb2,g2,bb2,eb3]", // Ab5 Gm Ab Eb
  Q: "f3@2 ab3 f3 [g3,bb3]@2 bb3 eb3, [d2,f2,ab2,d3,bb3] [eb2,g2,bb2], ~@4 eb3@3 ~", // Gm Bb7 Eb
  R: "[g3,bb3]@2 bb3 g3 [ab3,c4]@2 c4 ab3, [db2,g2,bb2,db3] [eb2,ab2,c3,eb3]", // Gm Ab Gdim Ab
  S: "[g3,bb3]@2 bb3 g3 [ab3,c4]@2 ab3 c4, [eb2,g2,bb2,db3,eb3] [eb2,ab2,c3,eb3]", // Gm Ab Eb7 Ab
  T: "[c4,eb4]@2 c4 eb4 f4@2 d4 f4, [ab2,c3,f3,ab3] [bb2,d3,f3,bb3]", U: "[bb2,eb3,g3,bb3,eb4]!2 [bb2,eb3,g3,bb3,d4]!2",
  V: "[eb2,eb3] d3 eb3 d3 eb3 d3 eb3 [g2,d3], g1, ~ [c2,eb2]@7", W: "eb3 d3 eb3 d3 eb3 d3 eb3 d3",
  X: "eb3 d3 eb3 d3 eb3 d3 eb3 ~",
})).s("gm_piano").gain(0.25)

// other · lead 2 sawtooth · "Led"
const lead_2_sawtooth = note("<~@20 A@3 ~ A@3 ~@11 A@3 ~ A@3 ~ A@3 ~ A@3 ~@2>".pickRestart({
  A: "[~ f5@5]/3",
})).s("gm_lead_2_sawtooth").gain(0.04)

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

// drums · snare
const snare = s("sd").struct("<~@11 A B@7 C A B@5 ~ B@5 ~@6 B@3 D B@10 ~@3>".pickRestart({
  A: "x!2 ~ x", B: "~ x ~ x", C: "~@2 x!3 ~ x!3 ~ x!3 ~@3", D: "~ x ~@2",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@13 A ~@9 B ~@2 C ~@14 D E ~@2 F ~@3 F ~@5>".pickRestart({
  A: "~@11 x ~@2 x ~", B: "~@7 x", C: "~@13 x!2 ~", D: "~@14 x!2", E: "x", F: "~@10 x ~@2 x!2 ~",
})).gain(0.48)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@13 [~@3 x!3 ~ x] ~@9 [~@7 x] ~@31>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A ~@5 B C ~@5 D ~@14 E ~@3 F ~@3 F ~@5>".pickRestart({
  A: "~@5 x ~@2 x ~@7", B: "~@13 x ~ x", C: "x", D: "~@3 x", E: "~@10 x!4 ~@2", F: "~@9 x ~@6",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@19 [~@12 x!2 ~@2] ~@21 [~@8 x!2 ~@6] ~@13>").gain(0.48)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@5 [~ x!4 ~@11] ~@12 [~@7 x] ~@36>").gain(0.16)

// drums · ride bell
const ride_bell = s("rd").struct("<~@14 [x!4]!5 ~@8 [x!4]!5 ~@23>").gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@11 A@3 ~@6 A@6 ~ A@5 ~@6 A@7 B A@3 B A@2 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.48)

stack(
  cello, cello_soft, string_ensemble_1, oboe, english_horn, pad_warm, acoustic_guitar_steel, bass, piano,
  lead_2_sawtooth, kick, snare, low_tom, hihat, hihat_soft, mid_tom, high_tom, crash, crash_soft, ride_bell, tambourine
)

More by Pooh