Strudelify
Mary Ann cover art

La storia dei Pooh

Mary Ann

Pooh

KeyE majorTempo105 bpm
0:00/0:00
// Mary Ann — Pooh
// 105 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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 · fretless bass · "tk2"
const bass = note(`<
  A B C D A B C D E F G H E F G H I J K L M N O P Q E F G H E F G H I J K L M N O P Q A B C D A B C D E F G H E F G H R
  S R T R S R T U@2 ~
>`.pickRestart({
  A: "a1@14 ~ a2", B: "g#1@14 ~ g#2", C: "f#1@14 ~ f#2", D: "e1@12 e2@2 e1 ~", E: "a1@5 ~@2 a1 c#2 d2 ~ e2@5",
  F: "g#1@6 ~ g#1 c#2 d2 ~ e2@5", G: "f#1@6 ~ f#1 c#2 d2 ~ e2@5", H: "e1@6 ~ e1 b1 c#2 ~ e2@2 b1 e1@2",
  I: "f#1@4 c#2 ~ c#2 f#2@2 f#2 c#2@2 f#1 f#2 c#2@2", J: "e1@2 e1@4 b1 e2@2 e2 e2@2 b1@2 e1@2",
  K: "a1@4 e2@2 a2 a2@2 e2 a1@2 e2@2 a1@2", L: "e1 ~ e1@3 ~ e2 e2@2 b1 e1@2 e2@2 b1 ~",
  M: "c#2@2 c#2@2 g#2 ~ g#2 c#3@2 g#2 c#2@2 c#3 g#2 c#2@2", N: "f#1 ~ f#1@4 c#2 f#2 ~ f#2 c#2 ~ f#1 f#2 e2@2",
  O: "d2@4 d2 ~ d2!2 d2@2 d2@3 ~ d2 ~", P: "e1 ~ e1@2 e2@2 e2 e1 ~ e1 e2 ~ e2@2 e1 ~", Q: "e1@7 ~",
  R: "a1@5 ~@2 a1 c#2 d2@2 e2@3 e2@2", S: "e1@5 ~@2 e1 c#2 d2@2 e2@2 ~ e2@2", T: "e1@5 ~@2 e1 c#2 d2@2 e2@3 e2 ~",
  U: "a1/2",
})).s("gm_fretless_bass").gain(0.56)

// chords · rock organ · "tk3"
const rock_organ = note("<~@4 A B@3 A B@3 A B@3 ~@9 A B@3 A B@3 ~@13 A B@3 A B@3 A B@3 A B@3 A B@3 ~@3>".pickRestart({
  A: "[c#5,e5]", B: "[b4@16 c#5@16 b4@15 ~, e5@47 ~]/3",
})).s("gm_rock_organ").gain(0.58)

// other · alto sax · "tk4"
const alto_sax = note(`<
  A B ~@6 C@2 D@2 C@2 D@2 E@2 F@2 G H I J@2 C@2 D@2 C@2 D@2 E@2 F@2 G H I K@2 ~@8 C@2 D@2 C@2 L@3 ~ B M ~@7
>`.pickRestart({
  A: "c-1 ~@15", B: "~@4 c-1 ~@11", C: "e5@2 e5@2 e5 ~ e5 e5@3 c#5@2 d5@2 c#5@2",
  D: "[a4@10 ~@2 f#5@2 c#5 e5@15 ~@2]/2", E: "[~@2 f#5@2 f#5@2 f#5 ~ f#5@4 a5@2 g#5@4 e5@11 ~@3]/2",
  F: "[~@2 a5@2 a5 ~ a5@2 a5@3 a5@3 e5@14 ~@4]/2", G: "~@2 g#5@2 g#5 ~ g#5@2 g#5@3 f#5@3 g#5@2",
  H: "a5@3 ~ g#5@2 f#5@7 ~@3", I: "~@2 f#5 e5 f#5@2 e5 f#5 ~ e5 ~ f#5@3 ~@2", J: "[~@2 g#5!2 g#5@2 a5 b5@17 ~@8]/2",
  K: "[~@2 g#5!2 g#5@2 a5 b5@18 ~@7]/2", L: "[a4@10 ~@2 f#5@2 c#5 e5@11 ~@2 f#5@2 c#5 e5@6 ~@11]/3", M: "~@12 c-1 ~@3",
})).s("gm_alto_sax").gain(0.64)

// other · overdriven guitar · "tk7"
const overdriven_guitar = note("<A@8 ~@34 A@8 ~@8 A@8 ~@3>".pickRestart({
  A: "[[a3,a4]@9 ~ [a3,a4]@2 [c#4,c#5] [d4,d5]@2 [e4,e5]@12 ~ [c#4,c#5]@2 [b3,b4] [a3,a4]@13 [f#4,f#5]@2 [c#4,c#5] [e4,e5]@16 ~]/4", // A C# D E C# B A F# …
})).s("gm_overdriven_guitar").gain(0.36).pan(0.7)

// chords · acoustic guitar steel · "tk8"
const acoustic_guitar_steel = note("<~@16 A B@2 C D E F G ~@9 A B@2 C D E F G ~@24 H@3 ~>".pickRestart({
  A: "~@2 [c#4,f#4]@2 [c#4,f#4]@2 ~@2 f#2 ~ f#2@2 ~@2 f#2@2, f#2@5 ~ f#2@2 ~@8, ~@7 [c#4,f#4]@5 [c#4,f#4]@4", // F#5
  B: "[[b3,e4]@2 b3@2 e4@2 b3 ~ e2 ~ e2@2 ~@2 e2@2 c#4 ~ c#4@2 [c#4,e4]@2 a2 ~ a2 ~ a2@2 ~@2 a2@2, e2@7 [b3,e4]@2 [b3,e4]@3 e4@8 ~@3 e4@5 ~@4, ~@12 b3@4 a2@4 ~@3 c#4@2 c#4@2 ~ [c#4,e4]@4]/2", // E5 C#m E5 C#m
  C: "e2@4 [b3,e4]@2 e2 ~ e2 ~ e2@2 [b3,e4]@2 e2 ~, ~@7 e4@4 ~@5, ~@7 b3@2 b3@2 ~@5", // E5
  D: "c#3@2 [g#3,f4] ~ g#3@2 ~ g#3@2 ~ c#3@2 [g#3,f4]@2 c#3@2, ~@3 c#3@2 ~ c#3@4 ~@6, ~@4 f4@5 [g#3,f4]@2 ~@5", // C#
  E: "[a3,f#4]@2 ~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 f#2 ~ f#2@2 [a3,c#4,f#4]@2 f#2 ~, ~@2 f#2@4 ~@3 [a3,c#4,f#4]@2 ~@5", // D F#m
  F: "~@2 a3@2 [a3,d4,f#4]@2 d3 ~@3 a3@2 [a3,d4,f#4]@2 d3@2, d3@5 ~@2 [d4,f#4]@4 ~@5, ~@7 a3@2 ~@7, ~@2 d3 ~", // D
  G: "~@2 g#3 ~ [g#3,b3,e4]@2 ~@4 [e2,b2]@2 [g#3,b3,e4]@2 [e2,b2] ~, [e2,b2]@5 ~ [e2,b2]@2 [e2,b2]@2 ~@6, ~@7 [b3,e4]@5 ~@4, ~@7 g#3@2 g#3@2 ~@5", // E E5 E E5
  H: "[~ [e4,a4]@2, ~@5 [a2,c#4]@11]/3", // A5 A
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.6)

// chords · piano · "tk9"
const piano = note(`<
  A@3 B C@3 D E F G@2 H@2 I@2 J@5 K L@3 H@2 M@2 H@2 I@2 N@5 K O@3 P@8 H@2 I@2 H@2 I@2 Q@2 R@2 S@2 R@2 T@3
>`.pickRestart({
  A: "[[a3,e4]@10 a2@2 [a3,c#4,e4]@2 ~@2 [g#3,b3,e4]@14 ~@2 [a3,c#4]@15 ~, [a1,c#4]@13 ~@2 [g#1,g#2]@14 ~@2 [f#1,f#2]@15 ~@2]/3", // A5 A E A G# F#
  B: "[e1,e2,g#3,b3,e4]@9 [e1,e2] g#3 ~ [g#3,b3,e4]@2 [e1,e2] ~", // E
  C: "[[a3,e4]@10 a2@2 [a3,c#4,e4]@2 ~@2 [g#3,b3,e4]@14 ~@2 [a3,c#4]@15 [e1,e2], [a1,c#4]@13 ~@2 [g#1,g#2]@14 ~@2 [f#1,f#2]@15 ~@2]/3", // A5 A E A E A G# F#
  D: "[e1,e2,g#3,b3,e4]@9 [e1,e2] g#3 ~ [g#3,b3,e4]@2 e1 ~", E: "a2@9 ~@3 a3@2 [c#4,e4]@2, [a3,c#4,e4]@3 ~, ~@5 a2@3",
  F: "[g#2,b3]@6 [g#3,e4] [g#2,b3], e4@5 ~@3", // G#m C#m G#m
  G: "[a3@8 f#2@4 [a3,c#4,e4]@2 f#2@2 [g#3,b3,e4]@4 [g#3,b3,e4]@6 [g#3,b3,e4]@2 [b3,e4]@2 [g#3,b3,e4] ~, [c#4,e4]@11 ~@3 a3@18, f#2@6 ~@10 e2@12 g#3 ~@3, ~@13 e3@2 [e2,e3]]/2", // A E E5 E C#m E
  H: "[a2@9 ~@5 [c#4,e4]@2 [g#2,b3]@12 [g#3,e4]@2 [g#2,b3]@2, [a3,c#4,e4]@3 a3@5, ~@5 a2@3 e4@5 ~@3]/2", // C#m G#m C#m G#m A
  I: "[f#2@6 ~@2 f#2@4 [a3,c#4,e4]@2 f#2@2 [g#3,b3,e4]@4 [g#3,b3,e4]@6 [g#3,b3,e4]@2 [b3,e4]@2 [g#3,b3,e4] ~, [a3,c#4,e4]@6 ~ a3@9, ~@16 e2@12 g#3 ~@3, ~@13 e3@2 [e2,e3]]/2", // A E E5 E A E
  J: "[a3@2 a3@2 [c#4,f#4] ~ f#2 ~@2 f#2 ~@2 [c#4,f#4]@2 f#2@2 [g#3,b3,e4]@2 g#3 ~ [g#3,b3,e4] ~ e3 ~ e3 ~ [e3,g#3]@2 ~@2 e3 ~@3 a3@2 [a3,c#4,e4]@2 a2 ~ a2 ~ a2@2 c#4@2 a2 ~@3 g#3 ~ [g#3,b3,e4] ~ e3 ~ e3 ~ [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3] ~ [g#3,f4]@2 c#3@2 [g#3,c#4,f4] ~ [c#2,c#3] g#3 [c#2,c#3] ~ [c#2,c#3]@2 [g#3,c#4,f4]@2 c#3@2, [f#2,f#4]@4 a3@2 ~ [a3,c#4,f#4]@3 a3@2 a3@22 ~@5 a3@2 a3@3 a3@36, ~@11 f#2@2 ~@3 e2@15 ~ a2@4 ~@12 e2@9 ~@7 c#2@4 ~@10 c#2 ~, ~@23 [b3,e4]@4 ~@12 [c#4,e4]@4 ~ e4 ~@10 g#3@2 g#3@2 ~@14 g#3@2 ~@5, ~@23 g#3@2 ~@3 [g#3,b3,e4]@4 ~@23 [b3,e4]@4 ~@12 [c#4,f4]@4 ~@5]/5", // F#5 E A E C# F# F#m E5 …
  K: "[f#2,a3,c#4,f#4]@3 a3 [a3,c#4,f#4]@2 f#2 ~ f#2 ~ f#2@2 ~ [a3,c#4] a3@2, ~@7 f#4@7 c#4 ~, ~@7 [a3,c#4]@2 [a3,c#4]@3 e2@4", // F#m A
  L: "[[a3,d4,f#4]@2 a3@2 [a3,d4]@2 d3 ~ d3 ~ d3@2 [d4,f#4]@2 [d2,d3] ~@3 g#3 ~ [g#3,b3,e4]@2 [e2,e3] ~ [e2,e3] ~ [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3] ~ [e1,e2]@5 ~@11, d2@13 ~@3 [e2,e3]@5 ~@2 g#3@2 g#3@2 ~@21, ~@4 f#4 ~@2 [d4,f#4]@4 ~@12 [b3,e4]@4 ~@21, ~@7 a3@2 a3@3 a3@36]/3", // D D5 D E D E5
  M: "[f#2@6 ~@2 f#2@4 [a3,c#4,e4]@2 f#2@2 [g#3,b3,e4]@4 [g#3,b3,e4]@6 [e3,g#3,b3,e4]@2 [b3,e4]@2 [g#3,b3,e4] ~, [a3,c#4,e4]@6 ~ a3@9, ~@16 e2@12 g#3 ~ [e2,e3]@2]/2", // A E E5 E A E
  N: "[a3@2 a3@2 [c#4,f#4] ~ f#2 ~@2 f#2 ~@2 [c#4,f#4]@2 f#2@2 [g#3,b3,e4]@2 g#3 ~ [g#3,b3,e4] ~ e3 ~ e3 ~ [e3,g#3]@2 ~@2 e3 ~@3 a3@2 [a3,c#4,e4]@2 a2 ~ a2 ~ a2@2 [c#4,e4]@2 a2 ~@3 g#3 ~ [g#3,b3,e4] ~ e3 ~ e3 ~ [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3] ~ [g#3,f4]@2 c#3@2 [g#3,c#4,f4] ~ [c#2,c#3] g#3 [c#2,c#3] ~ [c#2,c#3]@2 [g#3,c#4,f4]@2 c#3@2, [f#2,f#4]@4 a3@2 ~ [a3,c#4,f#4]@3 a3@2 a3@22 ~@5 a3@2 a3@3 a3@36, ~@11 f#2@2 ~@3 e2@15 ~ a2@4 ~@12 e2@9 ~@7 c#2@4 ~@10 c#2 ~, ~@23 [b3,e4]@4 ~@12 [c#4,e4]@4 ~@12 [b3,e4]@4 ~@12 [c#4,f4]@4 ~@5, ~@23 g#3@2 ~@3 [g#3,b3,e4]@4 ~@23 g#3@2 g#3@2 ~@14 g#3@2 ~@5]/5", // F#5 E A C#m E C# F# F#m …
  O: "[[a3,d4,f#4]@2 a3@2 [a3,d4]@2 d3 ~ d3 ~ d3@2 [d4,f#4]@2 [d2,d3] ~@3 g#3 ~ [g#3,b3,e4]@2 [e2,e3] ~ [e2,e3] ~ [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3] ~ e2@5 ~@11, d2@13 ~@3 [e2,e3]@5 ~@2 g#3@2 g#3@2 ~@21, ~@4 f#4 ~@2 [d4,f#4]@4 ~@12 [b3,e4]@4 ~@21, ~@7 a3@2 a3@3 a3@36]/3", // D D5 D E D E5
  P: "[e4@10 a2@2 [c#4,e4]@2 ~@2 [g#3,b3,e4]@14 ~@2 c#4@15 ~ [e1,e2,g#3,b3,e4]@9 [e1,e2] g#3 ~ [g#3,b3,e4]@2 [e1,e2] ~, [a1,a3,c#4]@3 a3@5 a3@8, ~@15 [g#1,g#2]@14 ~@2 [f#1,f#2]@15 ~@18]/4", // C#m E A G# F#
  Q: "[[a3,e4]@4 a3@4 a3@3 a2 ~@4 g#3@4 ~ g#3@3 [g#3,b3,e4]@4 [e2,e3,b3,e4]@2 g#3 ~, a2@10 ~@3 a2@3 e2@9 ~@7, ~@4 [c#4,e4]@7 ~ [a3,c#4,e4]@2 a3@18, ~@16 [b3,e4]@7 ~@5 g#3 ~@3]/2", // A5 E E5 C#m A E5
  R: "[[a3,c#4,e4]@4 a3@4 a3@3 a2 ~@2 c#4 ~ [g#3,b3,e4]@4 [g#3,b3,e4]@3 e3 ~@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 e3 ~, a2@10 ~@3 a2@3 e2@15 ~, ~@4 [c#4,e4]@7 ~ [a3,c#4,e4]@2 a3@18, ~@12 [g#3,b3,e4] ~@3, ~@25 e3@4 ~@3]/2", // A E C#m A E
  S: "[[a3,e4]@4 a3@4 a3@3 a2 ~@4 g#3@4 ~ g#3@3 [g#3,b3,e4]@4 g#3 ~ g#3 ~, a2@10 ~@3 a2@3 e2@9 ~@3 [e2,e3,b3,e4]@4, ~@4 [c#4,e4]@7 ~ [a3,c#4,e4]@2 a3@18, ~@16 [b3,e4]@7 ~@9]/2", // A5 E E5 C#m A E5
  T: "[[a1,a2,c#4,e4]@31 ~@17, a3@7 ~]/3", // A
})).s("gm_piano").gain(0.6).pan(0.4)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B C D C D C D C D C D C E C D C D C D C D F C D C D C D C G C D C D C D C D F A@3 H C D C D C D C D C D C I C D C
  D C D C J ~@3
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@6 x ~@2 x!2 ~ x!3 ~", C: "~ x ~ x", D: "~@4 x ~@2 x ~@4 x ~@3",
  E: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", F: "~@2 x!3 ~ x ~@2 x ~@2 x ~@3", G: "~@4 x ~@2 x ~ x ~ x!3 ~@2",
  H: "~@6 x ~@2 x ~ x!3 ~ x", I: "~@4 x ~@2 x ~ x!2 ~ x!2 ~@2", J: "~@2 x!3 ~ x!4 ~@2 x ~@3",
})).gain(0.71)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@11 B ~@8 C ~@7 A ~@8 D ~@15 B ~@7 E ~@3>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@2 x ~@7 x!2 ~@4", D: "~@2 x ~@7 x!2 ~@3 x", E: "~@11 x!4 ~",
})).gain(0.63)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B ~ A B A B A B A B A B A B A B A B ~@5 A B A B A B A B A B A B A B A B A B
  A B ~@3
>`.pickRestart({
  A: "x!7 ~", B: "x!3 ~ x!4",
})).gain(0.55)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B ~ A B A B A B A B A B A B A B A B ~@5 A B A B A B A B A B A B A B A B A B
  A B ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4",
})).gain(0.39)

// drums · mid tom
const mid_tom = s("mt").struct("<~@32 [~@7 x] ~@12 [~@5 x ~ x] ~@19 [~@5 x ~@2] ~@3>").gain(0.63)

// drums · open hat
const open_hat = s("oh").struct("<[~@5 x ~@2]!4 ~@20 x ~@16 x [~@5 x ~@2]!4 ~@23>").gain(0.63)

// drums · crash
const crash = s("cr").struct("<A@5 ~@3 A ~@7 A ~@8 A ~@7 A ~@8 A@5 ~@3 A ~@7 A ~@3 A ~@3 A ~@2>".pickRestart({
  A: "x",
})).gain(0.55)

// drums · ride
const ride = s("rd").struct("<[~ x!7]!4 ~@38 [~ x!7]!4 ~@23>").gain(0.63)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 [x!16]!16 ~ [x!16]!16 ~@9 [x!16]!8 ~@11>").gain(0.39)

stack(
  bass, rock_organ, alto_sax, overdriven_guitar, acoustic_guitar_steel, piano, kick, snare, low_tom, hihat, hihat_soft,
  mid_tom, open_hat, crash, ride, tambourine
)

More by Pooh