Strudelify
Pierre cover art

1976 · Poohlover

Pierre

Pooh

KeyD minorTempo102 bpm
0:00/0:00
// Pierre — Pooh
// 102 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/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
const bass = note(`<
  A B C D E F G H I J K L H L@2 M E G H I N L@2 B L@2 B F G K L B O P Q B R P S@2 H I J K L B L@2 M E G K L B O P Q B R
  P S@2 H I J K L B L@2 M E G K L B O P Q B R P S@2 H I J K L B L@2 M E G H I J K L B L@2 M E T@2 ~@4
>`.pickRestart({
  A: "f3", B: "a2", C: "d3@7 ~ c3@8", D: "bb2@7 ~ bb2@8", E: "a2@8 a2@7 ~", F: "a2@7 ~ a2@7 ~", G: "a2@7 ~ a2@8",
  H: "f2", I: "e2 a2", J: "d3@2 d3 c3", K: "bb2@15 ~", L: "bb2", M: "a2@3 ~", N: "d3 c3", O: "bb2@2 bb2 a2", P: "g2",
  Q: "c3 bb2", R: "bb2@7 ~ bb2@4 a2@4", S: "a2!2", T: "[a2@9 ~ a2@17 ~@5]/2",
})).s("gm_fretless_bass").gain(0.56)

// other · pad choir
const pad_choir = note(`<
  ~@7 A B C D@3 E@2 F G ~ H I J@3 K L@2 F M ~ N O P@2 N Q R@2 S@2 ~ H I T@3 U V@2 F W ~ X@2 Y@2 X@2 Z AA AB AC@2 ~@11
  X@2 AD@2 X@2 AE@2 AF@3 ~@27
>`.pickRestart({
  A: "f4@3 ~ f4@2 f4@4 ~@6", B: "~@3 e4 f4 e4 d4 db4", C: "d4@4 a3@2 g3 f3",
  D: "[~@6 d4@2 d4@3 d4@3 e4@6 d4@2 c4@6 bb3@3 c4@8 ~ f3@7 ~]/3", E: "[~@6 d4@2 d4@4 d4@2 e4@6 d4@2 c4@7 bb3@3]/2",
  F: "c4 f3", G: "~ bb3@2 a3@9 ~@4", H: "f4@3 ~ f4@2 f4@5 ~@5", I: "~@6 e4@2 f4@3 e4@2 ~ db4@2, ~@13 d4@2 ~",
  J: "[d4@8 a3@4 g3@2 f3@7 d4@2 ~ d4@3 d4@3 e4@5 d4@2 c4@8 bb3@3]/3", K: "c4@4 f3@3 ~, ~@8 c4 ~@7",
  L: "[~@5 d4@2 ~ d4@3 d4@3 e4@6 d4@2 c4@4 bb3@6]/2", M: "bb3@3 a3@12 ~", N: "d4@4 e4@2 f4 a4", O: "~ g4@9 e4@3 c4@3",
  P: "[c5@6 a4 f4@6 ~@3]/2", Q: "~ g4@8 ~ e4@3 c4@3", R: "[c5@12 a4@3 f4@17]/2", S: "[bb4@12 g4@3 e4@17]/2",
  T: "[d4@8 a3@4 g3@2 f3@6 d4@2 d4@2 d4@2 ~ d4@3 e4@4 d4@8 c4@2 bb3@3 ~]/3", U: "c4@8 f3@7 ~",
  V: "[~@4 d4@2 d4@2 ~ d4@2 d4@3 ~ e4@3 d4@8 c4@3 bb3@3]/2", W: "bb3@3 a3@11 ~@2",
  X: "[d4@8 e4@4 f4@2 a4@4 g4@8 e4@3 c4@3]/2", Y: "[~ c5@11 a4@2 f4@14 ~@4]/2", Z: "~ c5@11 a4@4", AA: "f4",
  AB: "bb4@12 g4@3 ~", AC: "[e4@9 ~@7]/2", AD: "[~ c5@10 a4@2 ~ f4@17 ~]/2", AE: "[~ c5@11 a4@2 f4@15 ~@3]/2",
  AF: "[bb4@12 g4@2 e4@21 ~@13]/3",
})).s("gm_pad_choir").gain(0.57)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  A B C D E@3 A F C G@2 B G@2 H I@2 A F C G@2 B G@2 H J B G@2 B K L M B K L N@3 F C G@2 B G@2 H J B G@2 B K L M B K L
  N@3 F C G@2 B G@2 H J B G@2 B K L M B K L N@3 F C G@2 B G@2 H I@2 A F C G@2 B G@2 H O@7
>`.pickRestart({
  A: "f3", B: "a2", C: "d3 c3", D: "bb2", E: "a2/3", F: "e3 a2", G: "bb2/2", H: "a2@5 e3 f3 g3", I: "[a3@7 g3]/2",
  J: "a3", K: "bb2@3 a2", L: "g2", M: "c3 bb2", N: "[a2@2 f3]/3", O: "[a3@43 d3@63 ~@6]/7",
})).s("gm_string_ensemble_2").gain(0.64).pan(0.1)

// other · string ensemble 2
const string_ensemble_2_2 = note(`<
  A B C@2 D E@2 ~ F G H I A H J A K L ~ F G H I A H J A K M N O@2 H N O@2 P@3 L ~ F G H I A H J A K M N O@2 H N O@2 P@3
  L ~ F G H I A H J A K M N O@2 H N O@2 P@3 L ~ F G H I A H J A K L ~ F G H I A H J A K Q@6
>`.pickRestart({
  A: "c4", B: "d4 db4", C: "[d4@3 a3@3 g3@2]/2", D: "g3@15 ~", E: "a3/2", F: "e4", G: "d4@6 e4 f4", H: "d4",
  I: "e4@2 d4 e4", J: "e4@3 c4 d4 e4 d4 e4", K: "db4", L: "b3 db4", M: "b3@4 db4@2 d4 e4", N: "bb3", O: "c4/2",
  P: "[d4@5 db4]/3", Q: "[b3@10 db4@17 d4@65 ~@4]/6",
})).s("gm_string_ensemble_2").gain(0.38).pan(0.3)

// other · string ensemble 2
const string_ensemble_2_3 = note(`<
  A B C@3 D E ~ F G@2 H@3 I@4 ~ F G@2 F J@2 I@4 K B ~ A K B ~@3 L@2 ~ F G@2 F J@2 I@4 K B ~ A K B ~@3 L@2 ~ F G@2 F J@2
  I@4 K B ~ A K B ~@3 L@2 ~ F G@2 H@3 I@4 ~ F G@2 H@3 M@8 ~
>`.pickRestart({
  A: "f4", B: "e4", C: "[d4 c4]/3", D: "db4", E: "b3 db4", F: "g4", G: "f4/2", H: "[g4 f4]/3", I: "[g4@3 f4@2 e4@3]/4",
  J: "[g4@3 ~ f4@2 e4@2 f4@24]/2", K: "d4", L: "e4/2", M: "[g4@24 f4@16 e4@35 f4@53]/8",
})).s("gm_string_ensemble_2").gain(0.45).pan(0.6)

// other · string ensemble 2
const string_ensemble_2_4 = note(`<
  ~@3 A@2 ~@2 B C D@2 E@2 F G@2 H@2 B C D@2 E@2 F G@2 I J K L M N K L M N K O@2 B C D@2 E@2 F G@2 I J K L M N K L M N K
  O@2 B C D@2 E@2 F G@2 I J K L M N K L M N K O@2 B C D@2 E@2 F G@2 H@2 B C D@2 E@2 F G@2 P@7
>`.pickRestart({
  A: "[f4 e4@3]/2", B: "~@6 a4 c5", C: "d5 db5", D: "[d5@9 c5 bb4 a4 bb4@4]/2", E: "[c5@13 a4 bb4 c5]/2",
  F: "d5 c5 bb4 a4 bb4@4", G: "c5/2", H: "a4/2", I: "a4", J: "b4 db5", K: "f4", L: "g4@7 e4", M: "f4@5 e4 f4 a4",
  N: "c5@2 bb4 a4 bb4@4", O: "g4/2", P: "[a4@39 ~@4 a4@68 ~]/7",
})).s("gm_string_ensemble_2").gain(0.42).pan(0.7)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@62 A@2 B@2 C D@2 C E@3 ~@11 F@2 G H I J K L M N O P@2 G Q R S T U V W@3 ~@4
>`.pickRestart({
  A: "[f4@7 ~ f4 g4 f4 e4 f4@10 e4!2 f4@2 e4@2 d4@2 db4@2]/2",
  B: "[d4@8 a3 bb3 c4@2 ~ e4 ~@2 d4@5 ~ d4@2 d4@2 ~ d4@2 d4 ~ d4, ~@12 d4@2 ~ f4@2 ~@15]/2",
  C: "e4@4 [d4,e4] c4@5 bb3@6, ~@5 d4 ~@10", // Dsus2
  D: "[~@2 a3 bb3 [c4,d4] e4 ~ f4 g4@4 e4 f4 d4@7 ~ d4@2 d4@2 ~ d4@2 d4 ~ d4]/2", // Csus2
  E: "[~@3 a3 e4 d4@2 ~ f4 e4 ~ a3 ~ e4 ~@2 a4@28 ~@4, ~@7 a3@2 ~@3 g4@2 ~ bb4@2 ~@31]/3",
  F: "[f4@5 ~ f4 ~ f4 g4 f4 e4 f4@10 e4 ~ [e4,f4]@2 e4@2 d4@2 db4@2]/2", G: "d4@6 a3 bb3 c4 d4 e4 f4 g4@2 e4 f4",
  H: "d4@5 ~ d4@2 d4@2 ~ d4@2 d4 ~ d4", I: "e4@4 [d4,e4] d4 c4@4 bb3@6",
  J: "~@2 [a3,bb3]@2 g3 a3 bb3 c4 [d4,e4] f4@2 ~ g4@2 e4 f4", K: "d4@6 d4@2 d4@2 ~ d4@2 d4 ~ d4",
  L: "e4@4 e4 d4 c4@4 bb3@4 c4@2", M: "~@2 [a3,bb3] g3 a3@6 bb3 c4 d4 e4 ~ g4, ~@7 f4", N: "a4@6 ~ [d4,e4] db4@8",
  O: "b3@7 [db4,d4] db4@8", P: "[f4@5 ~ f4@2 f4@2 ~ [e4,f4,g4] f4@10 e4!2 f4@2 e4@2 d4@2 db4@2]/2",
  Q: "d4@5 ~ d4@2 d4@2 ~ d4@2 d4 ~ [e4,f4]", R: "e4@4 d4@2 c4@4 [bb3,c4] bb3@4 ~",
  S: "c4@6 a3 bb3 c4 d4 e4 f4 g4@2 e4 f4", T: "d4@5 ~ d4@2 d4@2 ~ d4@2 ~ d4 ~",
  U: "e4@4 [d4,e4] d4 c4@4 bb3@6, d4 ~@15", V: "a3 g3 f3 a3 c4 bb3 a3 c4 f4 g4 a4 g4 f4 ~@2 d4, ~@7 e4",
  W: "[d4@7 [d4,e4] db4@10 a3@3 bb3@2 a3@3 g3@4 f3@3 e3@5 db3@8 ~@2]/3", // Dsus2
})).s("gm_acoustic_guitar_nylon").gain(0.72).pan(0.4)

// other · string ensemble 2
const string_ensemble_2_5 = note(`<
  A B C D@2 E@2 ~@21 B F G@2 H F G@2 H F I@2 ~@10 B F G@2 H F G@2 H F I@2 ~@10 B F G@2 H F G@2 H F I@2 ~@27
>`.pickRestart({
  A: "a4", B: "g4", C: "f4", D: "[a4 g4@2 c5]/2", E: "[f4 e4@3]/2", F: "bb4", G: "c5/2", H: "d5", I: "a4/2",
})).s("gm_string_ensemble_2").gain(0.36).pan(0.8)

// other · string ensemble 2
const string_ensemble_2_6 = note(`<
  ~@29 A B C@3 B D@2 E@2 F ~@11 A B C@3 B D@2 E@2 F ~@11 A B C@3 B D@2 E@2 F ~@27
>`.pickRestart({
  A: "d5", B: "e5", C: "[g5@2 f5 e5 f5@12 d5@8]/3", D: "[g5@2 f5 e5 f5@12]/2", E: "[d5@3 db5]/2", F: "b4 db5",
})).s("gm_string_ensemble_2").gain(0.45).pan(0.9)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@29 A B C D@2 E C F@2 G@2 ~@11 A B C D@2 E C F@2 G@2 ~@11 A B C D@2 E C F@2 G H ~@27
>`.pickRestart({
  A: "~@3 f3, bb2@15 ~, ~ f3@2 ~, ~ bb3", B: "~@4 g3@2 c3 bb2, bb2@3 ~, ~ e3@2 ~", C: "~@3 c4, a2, ~ c4@2 ~, ~ f4",
  D: "[~@2 bb3 ~@4 bb3, bb2@3 a2@5, ~@4 f3@8 ~@4 g2@15 ~, ~@5 bb3@2 ~, ~@24 d4@7 ~]/2", E: "~ g3 ~ g3, c3 bb2",
  F: "[~@2 bb3 ~@4 bb3, bb2@3 a2@5, ~ f3@2 ~ g2@4, ~@5 bb3@2 ~, ~@3 d4]/2", G: "~@3 e3, a2, ~ e3@2 ~, ~ a3",
  H: "~ a3, a2, ~ e3@3",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.6)

stack(
  bass, pad_choir, string_ensemble_2, string_ensemble_2_2, string_ensemble_2_3, string_ensemble_2_4,
  acoustic_guitar_nylon, string_ensemble_2_5, string_ensemble_2_6, electric_guitar_clean
)

More by Pooh