Strudelify
Dimmi di si cover art

Un posto felice

Dimmi di si

Pooh

KeyC minorTempo118 bpm
0:00/0:00
// Dimmi di si — Pooh
// 118 bpm, 4/4, key C 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: duplicate parts dropped: ch 16 piano (copy of ch 6 choir aahs)
// note: Full arrangement: all 122 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 30.
setcpm(118/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
const bass = note(`<
  ~@11 A B C@2 D B C@2 E F G H I J K L C@2 E M N O P Q R S T M N O P Q R S T J G H I J K U I V W M J X W Y J Z U J G H I
  J K B C@2 E M N O P Q AA S T F G H I J K U I V W M J X W Y I V W M J X W Y J Z U F G H I J K L C L C L C U ~
>`.pickRestart({
  A: "~@10 f1@2 g1@3 ~", B: "c1@3 ~ c1@2 b1 c2 c1@2 ~@2 c1@3 ~", C: "c1@3 ~ c1@2 b1 c2 c1@3 ~ c1@2 ~@2",
  D: "c1@2 ~@2 c1@2 b1 c2 c1@3 ~ c1@2 c2 ~", E: "c1@3 ~", F: "f1 ~@3 f1@2 ~ f1 ~@2 f1@2 ~@2 f1@2",
  G: "bb1@2 ~@2 bb1@2 ~ bb1 ~@2 bb1@3 ~@3", H: "eb1@2 ~@2 eb1@2 ~ eb1 ~@2 eb1@3 ~ eb1@2",
  I: "ab1@2 ~@2 ab1@2 ~ ab1 ~@2 ab1@2 ~@2 ab1@2", J: "f1@2 ~@2 f1@2 ~ f1 ~@2 f1@2 ~@2 f1@2",
  K: "g1@2 ~@2 g1@2 ~ g1 ~@2 g1@2 ~@2 g1 ~", L: "c1@3 ~ c1@2 b1 c2 c1@3 ~ c1@3 ~",
  M: "c2@2 ~@2 c2@2 ~ c2 ~@2 c2@2 ~@2 c2@2", N: "f1@3 ~ f1@2 ~ f1 ~@2 f1 ~ f1@2 f1@2",
  O: "bb1@3 ~ bb1@3 bb1 ~@2 bb1@3 ~ bb1 ~", P: "eb1@3 ~ eb1@2 ~ eb1@2 ~ eb1@2 bb1 ~ eb1@2",
  Q: "ab1@3 ~ ab1@2 ~ ab1@2 ~ ab1@3 ~ ab1@2", R: "f1@3 ~ f1@2 ~ f1 ~@2 f1@3 ~ f1@2",
  S: "g1@3 ~ g1@2 ~ g1 ~@2 g1@3 ~ g1@2", T: "c1@2 ~ c1@3 ~ c1 ~@2 c1@3 ~ c1@2", U: "c2",
  V: "ab1 ~@3 ab1@3 ab1 ~@2 ab1@2 ~@2 ab1@2", W: "g1@2 ~@2 g1@2 ~ g1 ~@2 g1@2 ~@2 g1@2",
  X: "bb1@2 ~@2 bb1@3 ab1 ~@2 ab1@3 ~ ab1@2", Y: "c2@2 ~@2 c2@2 ~ c1 ~@2 c1@3 ~ e1@2", Z: "bb1",
  AA: "d1@3 ~ d1@2 ~ d1 ~@2 d1@3 ~ f1@2",
})).s("gm_electric_bass_finger").gain(0.62)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A B C D E F G@2 ~@12 A B C D E F ~@4 H@16 A B C D E F ~ I J@8 K L A B C D E F ~@4 H@8 A B C D E F ~ I M@7 I J@8 K L A
  B C D E F ~@8
>`.pickRestart({
  A: "[f2,c3,ab3,c4,eb4,g4]", B: "[bb2,f3,ab3,c4,d4,f4]", C: "[eb3,g3,bb3,d4,f4]", D: "[ab2,eb3,g3,c4,eb4]",
  E: "[f2,c3,f3,ab3,c4,eb4]", F: "c4 b3, [g2,d3,g3,d4]", G: "[c2,c3,g3,c4]/2",
  H: "[g3@15 ~@64 ab3@16 ~@9 b3@8 [c4,eb4]@16, [c4,eb4]@16 d4@39 ~@9, ~@15 ab3@32 g3@32 ~@17 g3@32, ~@4 bb3@4 c4@5 ~@3]/8", // Cm
  I: "[ab3,c4,eb4]", // Ab
  J: "[~@4 f4 e4 [ab3,eb4]@2 ~@4 e4@2 [f3,ab3,eb4]@2, [f3,bb3,d4] c4 [bb3,d4] c4, ~@15 g3@32 ~ f3@32 g3@32 ~@16]/8", // Ab5 Fm7 Bb
  K: "[bb3,d4]", L: "[c2,c3]",
  M: "[~@4 f4 e4 [ab3,eb4]@2 ~@4 [c4,e4]@2, [f3,bb3,d4]@2 c4@2 [bb3,d4]@2 ~, ~@15 g3@32 ~ f3@32 g3@32]/7", // Ab5 C Bb
})).s("gm_synth_strings_1").gain(0.29)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@2 A B C D E F G ~@113>".pickRestart({
  A: "~@15 g5", B: "bb5 ~ g5 bb5 ~@2 bb5@2 ~ g5 bb5 ~@2 g5 ~@2, ~@6 g5 ~@9", C: "~ eb5 ~@2 eb5 ~ eb5 ~@2 eb5 ~ eb5 ~@4",
  D: "~@15 gb5", E: "g5 ~ gb5 g5 ~ gb5 g5 ~ [gb5,g5] ~ gb5 g5 ~ gb5 g5 ~",
  F: "~ gb5 g5 ~ gb5 g5 ~ gb5 g5 ~ gb5 g5 ~ [gb5,g5] ~ gb5", G: "g5 ~ gb5 g5 ~@2 g5 ~@9",
})).s("gm_lead_2_sawtooth").gain(0.27)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note("<~@3 [~@14 bb5 ~] ~@4 [~@5 gb5 ~@2 gb5 g5 ~@6] ~@113>")
  .s("gm_lead_2_sawtooth").gain(0.13)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@2 A@2 B@2 C D E ~@10 F G H I J K@3 ~@36 F G H I J K@3 ~@36 F G H I J K@3 ~@7
>`.pickRestart({
  A: "[~@5 c5@21 ~ g4@3 ab4@2]/2", B: "[~@3 f4@15 ~@14]/2", C: "~@3 c5@13",
  D: "~ c5 bb4 g4 f4 eb4 c4 f4 eb4 c4 bb3 g3 f3 g3 bb3 eb4", E: "c4 ~@3", F: "~@8 c4@3 d4@2 d4@3",
  G: "c4@7 ~ c4@3 d4@2 d4@3", H: "c4@7 ~ bb3@3 c4@2 c4@3", I: "bb3@6 ~@2 eb3@3 g3@2 c4@3",
  J: "c4@4 ~@4 ab3@3 bb3@2 c4@3", K: "[ab3@7 ~ ab3@14 g3 ~ d4@4 eb4 ~ c4@7 ~@11]/3",
})).s("gm_distortion_guitar").gain(0.35)

// chords · synth brass 1
const synth_brass_1 = note("<~@12 A B A B A B A C ~@6 A B A C ~@40 A B A C ~@40 A B A B A B D ~>".pickRestart({
  A: "~@4 [g4,bb4,c5,eb5] ~@3 [a4,c5,d5,f5]@5 ~@3", B: "[g4,bb4,c5,eb5]@4 ~@2 [a4,c5,d5,f5]@7 ~@3",
  C: "[g4,bb4,c5,eb5] ~", D: "[g4,bb4,c5,eb5]@15 ~",
})).s("gm_synth_brass_1").gain(0.12)

// other · melodic tom
const melodic_tom = note("<~@19 A ~@9 A ~@7 B ~@7 B ~@6 B ~@10 B ~@9 A ~@7 B ~@6 B ~@18 B ~@14>".pickRestart({
  A: "~@10 c4 ~@3 c3 ~", B: "~@14 e3 ~",
})).s("gm_melodic_tom").gain(0.71)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@8 A B C D A B C D A B C ~@7 A B C ~@2 E ~ F ~ G ~ H ~ E ~ F ~ G ~ H E ~ F ~ G ~ H ~@17 A B C ~@2 E ~ F ~ G ~ H E ~ F
  ~ G ~ H ~@25 A B A B A B ~@2
>`.pickRestart({
  A: "~@11 g3!4 ~", B: "~@7 g3!3 ~ g3!3 ~@2", C: "g3@3 g3 ~@7 g3!4 ~", D: "~@7 g3!3 ~ g3!2 g3@2 ~",
  E: "~@11 [f3,ab3,c4,db4,eb4] ~ db4 ~@2", F: "~@11 [eb3,g3,bb3,d4] ~@4", G: "~@11 [d3,f3,ab3,c4] ~@4", H: "eb3",
})).s("gm_distortion_guitar").gain(0.03)

// chords · piano
const piano = note(`<
  ~@20 A B C D E F G H G I J K L M N O P Q J K L M N O P Q A B C D E F ~ R S T U V S T W X S Y A B C D E F G H G I J K L
  M N O P Q A B C D E F ~ R S T U V S T W R S T U V S T W X S Y A B C D E F G H G H G H Z ~
>`.pickRestart({
  A: "[f2,c3,ab3,c4,eb4,g4]", B: "[bb2,f3,ab3,d4,f4]", C: "[eb3,g3,bb3,f4]", D: "[ab2,g3,c4,eb4]",
  E: "[f2,c3,ab3,c4,eb4]", F: "c4 b3, [g2,d3,g3,d4]", G: "~@4 [g3,bb3,c4,eb4]@2 ~@2 [f3,a3,c4,d4]@5 ~@3",
  H: "[g3,bb3,c4,eb4]@5 ~@2 [f3,a3,c4,d4]@6 ~@3", I: "[g3,bb3,c4,eb4]@5 ~@11", J: "[bb3,c4,eb4]@13 ~@3, g3",
  K: "[ab3,c4,eb4]@15 ~", L: "[f3,ab3,bb3,d4]@15 ~", M: "[eb3,g3,bb3,d4]@15 ~", N: "[ab3,c4]@15 ~",
  O: "[f3,ab3,c4]@15 ~", P: "c4@8 b3@7 ~, [g3,d4]@15 ~", Q: "[eb3,g3,c4]@13 ~@3", R: "[ab3,c4,eb4]",
  S: "[f3,bb3,d4]@15 ~", T: "[g3,bb3,d4]@15 ~", U: "[g3,c4,f4]@8 [c4,e4]@7 ~, ~@8 g3 ~@7", V: "[f3,ab3,c4,eb4]@15 ~",
  W: "[g3,c4,e4]", X: "[f3,ab3,c4,f4]@15 ~", Y: "[g3,c4]", Z: "[c2,g2,c3]",
})).s("gm_piano").gain(0.29)

// chords · distortion guitar
const distortion_guitar_3 = note(`<
  ~@8 A B A C A B A C A B A D ~@6 A B A D E F G H I J K L E F G H I J K L F G H I J K L M N O P Q R S P Q R T ~@6 A B A
  D E F G H I J K L F G H I J K L M N O P Q R S P M N O P Q R S P Q R T ~@6 A B A B A B L ~
>`.pickRestart({
  A: "c3@3 c3 [g3,bb3,c4,eb4]@2 ~@5 c3!4 ~, ~@8 [a3,c4,d4,f4]@5 ~@3", // Cm7 Dm7
  B: "[g3,bb3,c4,eb4]@5 ~ [a3,c4,d4,f4] c3!2 [c3,f3] ~ [c3,f3] [c3,c4,f4] [c3,eb4] c4 ~", // Cm7 Dm7 F5 Cm
  C: "[g3,bb3,c4,eb4]@5 ~ [a3,c4,d4,f4] c3!2 [c3,f3] ~ [c3,f3] [c3,a3,c4,d4,a4] [a3,c4,d4,f4]@3, ~@13 c3 ~@2", // Cm7 Dm7 F5 D7 Dm7
  D: "[g3,bb3,c4,eb4] ~", E: "~@4 [g3,bb3,c4,eb4]@4 ~@4 [g3,bb3,c4,eb4]!2 ~@2",
  F: "~@4 [f3,ab3,c4,eb4]@5 ~@3 [f3,ab3,c4,db4,eb4] [f3,ab3,c4,eb4]@2 ~", // Fm7
  G: "~@4 [ab3,bb3,d4]@5 ~@3 [f3,ab3,bb3,d4]!2 ~@2", H: "~@4 [eb3,g3,bb3,d4]@6 ~@2 [eb3,g3,bb3,d4]!2 ~@2",
  I: "~@4 [eb3,g3,ab3,c4]@6 ~@2 [eb3,g3,ab3,c4]!2 ~@2", J: "~@4 [d3,f3,ab3,c4]@6 ~@2 [d3,f3,ab3,c4]!2 ~@2",
  K: "~@4 [d3,g3,b3,d4]@6 ~@2 [d3,g3,b3,d4]!2 ~@2", L: "[c2,g2,c3]", M: "[ab4,c5]!16", N: "[bb4,d5]!16",
  O: "[g4,d5]!16", P: "[g4,c5]!16", Q: "[f4,c5]!16", R: "[f4,bb4]!16", S: "[g4,bb4]!16", T: "[c2,g2,c3]@11 ~@5",
})).s("gm_distortion_guitar").gain(0.13)

// other · guitar harmonics
const guitar_harmonics = note("<~@8 A B A B A B A B A B A C ~@43 D ~@43 D ~@12 E ~>".pickRestart({
  A: "c2!2 ~@2 eb2 ~@3 f2@5 c2 c3 c2", B: "eb2@4 ~@2 f2@3 c2 c3 c2 f3 eb3 c3 ~", C: "[c2,g2] ~@3", D: "[g2,c3]@9 ~@7",
  E: "c2",
})).s("gm_guitar_harmonics").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@12 [x!4]!108 x ~>").gain(0.64)

// drums · clap
const clap = s("cp").struct("<~@16 A@2 ~@2 A@8 ~@2 A@15 B A@16 ~ A@10 ~ A@7 B A@24 ~ A@13 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@19 A ~@9 A ~@7 A ~@7 A ~@6 A ~@10 A ~@9 A ~@7 A ~@6 A ~@18 A ~@11 B ~@2>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@13 x!3",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@12 B@6 A@4 B@40 A@2 B A B@40 A@6 ~@2>".pickRestart({
  A: "x!13 ~@3", B: "x!14 ~@2",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~@7 x]!112 ~@2>").gain(0.43)

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

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@20 A@6 ~@4 A@14 B@2 A@24 ~@4 A@6 B@2 A@32 ~@8>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "x!8",
})).gain(1.81)

stack(
  bass, synth_strings_1, lead_2_sawtooth, lead_2_sawtooth_soft, distortion_guitar, synth_brass_1, melodic_tom,
  distortion_guitar_2, piano, distortion_guitar_3, guitar_harmonics, kick, clap, snare, hihat, open_hat, crash, cabasa
)

More by Pooh