Strudelify

Lei e lei

Pooh

KeyG majorTempo71 bpm
0:00/0:00
// Lei e lei — Pooh
// 71 bpm, 2/4, key G major. 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 113 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(71/2)

// 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(`<
  A@5 B@2 C@2 D@2 E@2 F@2 G H I J K H L M@8 N@8 O@6 P@6 Q@8 R@2 S@8 T@8 U@2 V@5 W@6 X@6 Y@8 Z@2 AA@7 ~
>`.pickRestart({
  A: "[~@32 g3@3 ~@22 g3@3, ~@21 [b3,d4]@12 ~ [b3,d4]@12 [b3,d4]@12 [b3,d4]@10 ~@3 [c#4,e4]@12 [c#4,e4]@12 [c#4,e4]@12 ~ [c#4,e4]@11 ~, ~@27 g3@12 ~ g3@12 g3@12 ~@13 g3@12 g3@12 g3@12 ~@7]/5", // Bm C#m
  B: "[~@7 g3, [b3,d4]!2 [b3,d4]!2, ~ g3@2 g3@2 g3@2 ~]/2", // Bm
  C: "[~@42 g3@5 ~, [c#4,e4]@12 [c#4,e4]@12 [c#4,e4]@12 [c#4,e4]@11 ~, ~ g3@2 g3@2 g3@2 ~]/2", // C#m
  D: "[~@43 g3@5, [b3,d4]@12 [b3,d4]@12 ~ [b3,d4]@12 [b3,d4]@11, ~@6 g3@12 g3@12 ~ g3@12 ~@5]/2", // Bm
  E: "[~@43 g3@5, ~ [c#4,e4]@12 [c#4,e4]@12 [c#4,e4]@12 [c#4,e4]@10 ~, ~@7 g3@12 g3@12 g3@12 ~@5]/2", // C#m
  F: "[~@43 g3@5, ~ [b3,d4]@12 [b3,d4]@12 [b3,d4]@12 [b3,d4]@10 ~, ~@7 g3@12 g3@12 g3@12 ~@5]/2", // Bm
  G: "~@18 d3@5 ~, ~ [f#3,a3]@11 [f#3,a3]@10 ~@2, ~@7 d3@11 ~@6", H: "~@18 d#3@5 ~, [f#3,b3]@6 [f#3,b3]@5 ~, ~ d#3@2 ~",
  I: "~@18 e3@5 ~, [g3,b3]@12 [g3,b3]@11 ~, ~ e3@2 ~", J: "[d3,g3,b3] ~@5 [d3,g3,b3]@17 ~",
  K: "~@3 c3, [e3,g3]@12 [e3,g3]@11 ~, ~ c3@2 ~", L: "~@18 e3@5 ~, [g3,b3]@6 [g3,b3]@5 ~, ~ e3@2 ~",
  M: "[d3@2 ~@15 d5@6 ~@6 g3@6 g3@5 ~ b3@6 ~@17 g3@5 ~@7 g3@6 g3@6 ~@23 g3@6 ~@6 g3@5 g3@6 b3@6 ~@20 b3@2 ~@7 a3@6 ~@6 f#3@5 ~ [f#3,b3]@5, ~@3 f#3@19 ~@25 g3@6 g3@11 ~@29 g3@6 g3@12 ~@29 g3@6 g3@17 d3@23 ~@6, ~@6 a3@16 ~ [b3,d4]@16 ~@11 b3@8 [b3,d4]@10 ~@49 [b3,d4]@17 ~@9 b3@6 b3@11 ~@18 a3@8 ~@6, ~@9 d4@13 ~@19 d4@17 ~@12 [c#4,e4]@18 c#4@8 c#4@9 [c#4,e4]@12 ~@17 d4@18 d4@6 d4@5 ~@12 d4@11 ~@6, ~@11 f#4@10 ~@67 e4@17 ~@50 g4@8 ~@29]/8", // B5 Bm C#m
  N: "[~@12 d#3@5 ~@19 e3@5 [d3,g3,b3] ~@5 [d3,g3,b3]@17 ~@18 c3@6 ~@18 d3@5 b3@6 ~@6 g3@6 [b3,d4]@5 ~@18 g3@6 ~@18 c3@6 ~@6 d3@4, ~ d#3@11 ~@12 e3@12 ~@29 [e3,g3]@11 [e3,g3]@10 ~@2 [f#3,a3]@12 [f#3,a3]@10 ~ d4@18 ~@17 [d4,f4]@10 ~@36, ~@6 [f#3,b3]@10 ~@2 [g3,b3]@12 [g3,b3]@11 ~@30 c3@11 ~@12 d3@12 ~@11 g3@6 ~@12 g3@17 ~@6 [e3,g3]@12 [e3,g3]@12 [f#3,a3]@10, ~@120 b3@9 ~@12 b3@16 ~@7 c3@12 ~@16]/8", // G Bm Em F#m Dm B5 G Em …
  O: "[~@8 d3@5 ~@7 g3@6 ~@6 [b3,d4]@6 ~@9 b3@3 ~@6 g3@5 ~@18 c3@5 ~@19 d3@6 ~@18 g3@6 ~@6 g3@5, ~@2 [f#3,a3]@11 ~ [b3,d4]@18 ~@6 d4@12 ~@59 [b3,d4]@12 [b3,d4]@10 ~@2 [c#4,e4]@11, ~@26 g3@15 b3@6 ~@3 [b3,d4]@10 ~@7 c3@12 ~@12 d3@12 ~@41, ~@44 g3@12 ~@5 [e3,g3]@12 [e3,g3]@10 ~@2 [f#3,a3]@12 [f#3,a3]@10 ~@8 g3@12 ~@17]/6", // Bm F#m Bm C#m Bm Em F#m
  P: "[~@32 g3@6 ~@19 g3@5 ~@19 d3@6 ~@17 e3@6 [d3,g3,b3] ~@5 [d3,g3,b3]@17 ~@6 c3@5, ~ [c#4,e4]@12 [c#4,e4]@12 ~ [c#4,e4]@11 ~ [b3,d4]@12 ~ [b3,d4]@11 ~ [a3,c4]@12 [a3,c4]@10 ~@2 [g3,b3]@11 [g3,b3]@12 ~@34, ~@7 g3@12 ~ g3@12 ~@12 g3@12 ~@13 d3@12 ~@12 e3@11 ~@29 [e3,g3]@11]/6", // G C#m Bm Am G Em
  Q: "[~@6 c3@6 ~@11 [f#3,a3]@6 d3@5 ~ b3@6 ~@34 g3@6 ~@18 c3@6 ~@18 d3@5 ~@7 g3@6 ~@6 d4@5 ~@9 b3@3 ~@6 g3@5 ~@12 [e3,g3]@5, [e3,g3]@10 ~@2 [f#3,a3]@11 ~@12 d4@17 d4@17 ~ [d4,f4]@10 ~@49 [b3,d4]@18 b3@8 b3@6 ~@3 [b3,d4]@10 ~@8 c3@10, ~@18 d3@11 ~@12 g3@5 g3@12 g3@17 ~@6 [e3,g3]@12 [e3,g3]@11 ~ [f#3,a3]@12 [f#3,a3]@11 ~@13 g3@17 g3@12 ~@6 [e3,g3]@11 ~@5, ~@44 b3@8 b3@12 b3@16 ~@7 c3@12 ~@12 d3@12 ~@29 d4@12 ~@28]/8", // F#m Em F#m Dm Bm Em F#m Em
  R: "[~ c3@5 ~@13 [f#3,a3]@6 d3@5 ~@12 [b3,d4]@6, ~@7 [f#3,a3]@12 ~@11 [b3,d4]@12 ~@6, ~@13 d3@12 ~@11 g3@12]/2", // F#m Bm F#m Bm
  S: "[g3@6 ~@43 g3@6 ~@12 [b3,d4]@7 g3@5 ~@19 d3@6 ~@18 e3@5 ~ [d3,g3,b3] ~@5 [d3,g3,b3]@16 ~@19 c3@5 ~@12 [f#3,b3]@6, ~@6 [c#4,e4]@12 [c#4,e4]@12 [c#4,e4]@12 ~ [c#4,e4]@10 ~@2 [b3,d4]@12 ~@13 [a3,c4]@12 [a3,c4]@10 ~@2 [g3,b3]@12 [g3,b3]@10 ~@31 c3@12 ~@11 d#3@12, ~@12 g3@12 g3@12 ~ g3@12 ~@12 g3@12 ~@13 d3@12 ~@12 e3@12 ~@29 [e3,g3]@12 [e3,g3]@10 ~ [f#3,b3]@12 ~@6]/8", // Bm G B5 C#m Bm Am G Em …
  T: "[d#3@5 ~@12 [g3,b3]@6 e3@4 ~@2 [d3,g3,b3] ~@5 [d3,g3,b3]@18 ~@19 c3@6 ~@13 [f#3,b3]@6 d#3@4 ~@19 e3@5 ~@18 d5@6 ~@5 g3@6 g3@5 ~ b3@6 ~@11 [b3,d4]@6 g3@3, ~@6 [g3,b3]@11 ~@43 c3@12 ~@13 d#3@12 ~@11 e3@12 ~@6 d3@14 a4@7 ~@45, ~@12 e3@11 ~@31 [e3,g3]@12 [e3,g3]@10 ~@3 [f#3,b3]@12 ~@12 [g3,b3]@11 [g3,b3]@10 ~@4 f#3@9 f#4@10 ~@28 b3@8 ~@9, ~@131 a3@16 ~@2 [b3,d4]@16 ~@7 g3@5 g3@12 ~@3, ~@134 d4@13 ~@19 d4@17 ~@9]/8", // G B5 Bm G Em B5 G Bm
  U: "[~@8 g3@6 g3@5 ~ c#4@6 ~@17 g3@5, ~@3 [c#4,e4]@16 ~ e4@17 ~@11, ~@26 g3@5 g3@12 ~@5, ~@29 c#4@8 [c#4,e4]@10 ~]/2", // C#m
  V: "[~@6 g3@6 g3@6 b3@6 ~@20 b3@3 ~@17 f#3@4 ~@20 d#3@5 ~@18 e3@4 ~@2 [d3,g3,b3] ~@2, ~ [b3,d4]@17 d4@17 d4@6 d4@7 ~@10 d4@10 ~@52, ~@24 g3@5 g3@18 d3@21 ~@8 d#3@12 ~@11 e3@12 ~@9, ~@27 b3@5 b3@12 ~@9 a3@8 a3@7 ~@2 [f#3,b3]@12 [f#3,b3]@10 ~ [g3,b3]@12 [g3,b3]@10 ~@5, ~@19 g4@5 ~@36]/5", // G Bm B5 G
  W: "[~@3 [d3,g3,b3]@18 ~@18 c3@6 ~@17 d3@5 ~ b3@6 ~@6 g3@5 ~ [b3,d4]@5 ~@18 g3@6 ~@17 c3@6 [f#3,a3]@6, ~@21 [e3,g3]@12 [e3,g3]@10 ~@2 [f#3,a3]@11 [f#3,a3]@10 ~@2 d4@15 ~@20 [d4,f4]@10 ~@31, ~@27 c3@12 ~@12 d3@11 ~@12 g3@6 ~@11 g3@18 ~@6 [e3,g3]@11 [e3,g3]@10 ~@8, ~@77 b3@6 ~@14 b3@16 ~@8 c3@11 ~@12]/6", // G Bm F#m Em F#m Dm Em
  X: "[~@12 d3@5 ~@6 g3@6 g3@6 [b3,d4]@6 ~@9 b3@3 ~@5 g3@5 ~@18 c3@5 ~@18 d3@6 ~@18 g3@5 ~@7 g3@4, d3@12 ~@32 b3@6 ~@3 [b3,d4]@10 ~@7 c3@11 ~@12 d3@11 ~@40, ~@6 [f#3,a3]@10 ~ [b3,d4]@18 ~@6 d4@12 ~@57 [b3,d4]@12 [b3,d4]@10 ~ [c#4,e4]@11, ~@47 g3@11 ~@6 [e3,g3]@12 [e3,g3]@9 ~@2 [f#3,a3]@12 [f#3,a3]@9 ~@8 g3@12 ~@16]/6", // Bm F#m Bm C#m Em F#m
  Y: "[~@27 [c#4,e4]@6 g3@6 ~@12 [b3,d4]@6 g3@4 ~@20 d3@6 ~@17 e3@5 ~ [d3,g3,b3] ~@5 [d3,g3,b3]@16 ~@21 c3@6 ~@18 d3@5 ~ [g3,b3]@6 e3@3, ~@2 [c#4,e4]@12 [c#4,e4]@13 ~@12 [b3,d4]@12 ~@12 [a3,c4]@12 [a3,c4]@10 ~@2 [g3,b3]@12 [g3,b3]@11 ~@31 c3@12 ~@12 d3@12 ~@15, ~@8 g3@13 g3@12 ~@12 g3@12 ~@12 d3@12 ~@12 e3@11 ~@31 [e3,g3]@12 [e3,g3]@10 ~@2 [f#3,a3]@12 [f#3,a3]@10 ~@11]/8", // C#m Bm G C#m Bm Am G Em …
  Z: "[~@8 e3@4 ~@2 [d3,g3,b3] ~@5 [d3,g3,b3]@17 ~ e3@6 c3@4, ~@3 [g3,b3]@9 ~@26 g3@10]/2", // G
  AA: "[~@2 [e3,g3]@7 c3@6 ~@12 [f#3,b3]@6 d#3@6 ~@13 g4@6 c5@6 ~@7 g4@6 [g4,e5]@73 ~@18, ~@15 [f#3,b3]@12 ~@19 c3@48 ~@74, ~@21 d#3@12 ~@6 [e3,g3]@25 e5@13 ~@91, ~@13 e4@12 ~@17, ~@58 g4@6 c5@47 ~@57]/7", // Em B5 C B5 Em
})).s("gm_piano").gain(0.46).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@45 A@8 B@6 C@8 D@7 E@4 F@5 G@8 H@6 ~@9 I@7>".pickRestart({
  A: "[~@14 [g2,d4,g4,b4]@25 [d3,d4,f#4,a4]@24 [e3,b3,e4,g4]@23 [d3,b3,d4,g4]@3 ~@3 [d3,b3,d4,g4]@17 [c3,g3,c4,e4]@23 [d3,a3,d4,f#4]@23 [b3,d4,g4]@23 [b3,d4,f4]@14, ~@155 g2@37]/8", // G D Em G C D G Bdim
  B: "[~@9 [c3,g3,c4,e4]@24 [d3,a3,d4,f#4]@24 [g2,b3,d4,g4]@46 ~ [c3,g3,c4,e4]@23 [d3,a3,d4,f#4]@17]/6", // C D G C D
  C: "[~@6 [b3,d4,g4]@24 [g3,c#4,e4]@48 ~ [g2,d4,g4,b4]@25 [d3,d4,f#4,a4]@24 [e3,b3,e4,g4]@24 [d3,b3,d4,g4]@3 ~@3 [d3,b3,d4,g4]@17 [c3,g3,c4,e4]@17, ~@6 g2@71 ~@115]/8", // G C#dim G D Em G C
  D: "[~@6 [b2,b3,d#4,f#4]@23 ~ [e2,b3,e4,g4]@23 [d2,b3,d4,g4]@3 ~@3 [d2,b3,d4,g4]@18 ~ [c3,g3,c4,e4]@24 ~ [b2,b3,d#4,f#4]@24 [e3,b3,e4,g4]@23 [d3,d4,f#4,a4]@18]/7", // B Em G C B Em D
  E: "[~@5 [g2,g3,b3,d4]@17 [g2,b3,d4,g4]@28 ~ [g2,c#4,e4,g4,a#4]@45]/4", // G Gdim
  F: "[~ [g2,b3,d4,g4]@17 [g2,d4,g4,b4]@29 [d3,d4,f#4,a4]@23 [b2,d#4,f#4,b4]@23 [e3,e4,g4,b4]@23 ~ [d3,d4,g4,b4]@3]/5", // G D B Em G
  G: "[~@3 [d3,d4,g4,b4]@18 [c3,c4,e4,g4]@24 [d3,a3,c4,f#4]@23 [b3,d4,g4]@23 [b3,d4,f4]@23 ~ [c3,g3,c4,e4]@23 [d3,a3,d4,f#4]@23 [g2,b3,d4,g4]@31, ~@34 g2@23 ~@39]/8", // G C D7 G Bdim C D G
  H: "[~@16 [c3,g3,c4,e4]@23 [d3,a3,d4,f#4]@23 [g2,b3,d4,g4]@23 [g2,c#4,e4,g4]@50 ~@9]/6", // C D G C#dim
  I: "[~@15 [c2,c4,e4,g4]@131 ~@22]/7", // C
})).s("gm_string_ensemble_2").gain(0.4)

// bass · piano
const bass = note(`<
  A@5 B@4 C@2 D@4 E F G H I J K L@8 M@7 N@4 O@8 P@7 Q@4 R@8 S@8 T@2 U@5 V@7 W@8 X@6 Y@8 ~
>`.pickRestart({
  A: "[~@21 g1@97 ~@2]/5", B: "[g1@95 ~]/4", C: "g1/2", D: "[~ g1@46 ~]/2", E: "~ d2@23", F: "b1@23 ~", G: "e2@23 ~",
  H: "d2 ~@2 d2@9", I: "c2@23 ~", J: "b1@11 ~", K: "e2", L: "[d2@22 ~ g1@45 ~@2 g1@45 ~@2 g1@46 d2@23 ~ b1@5]/8",
  M: "[~@18 e2@22 ~ d2 ~@5 d2@18 c2@22 ~ d2@23 g1@22 ~@2 g1@23 c2@10]/7", N: "[~@14 d2@24 g1@45 ~@2 c2@11]/4",
  O: "[~@13 d2@24 g1@23 ~ g1@49 g1@24 ~ d2@23 ~ e2@22 ~ d2@2 ~@4 d2@4]/8",
  P: "[~@13 c2@23 d2@22 ~ g1@23 g1@21 ~@2 c2@22 ~@2 d2@23 ~ g1@15]/7", Q: "[~@3 g1@27 ~@2 c2@22 ~ d2@23 g1@18]/4",
  R: "[~@6 g1@48 ~ g1@24 ~@4 d2@21 e2@22 ~@2 d2@2 ~@4 d2@17 c2@23 b1@18]/8",
  S: "[~@6 e2@23 d2@2 ~@4 d2@17 ~@2 c2@22 ~@3 b1@21 ~@3 e2@21 ~@2 d2@23 g1@17 g1@26]/8", T: "[~@3 g1@44 ~]/2",
  U: "[~ g1@15 ~@2 g1@29 d2@22 ~ b1@22 ~ e2@22 ~@2 d2 ~@2]/5",
  V: "[~@3 d2@17 ~ c2@23 ~ d2@22 ~ g1@22 ~ g1@21 ~@3 c2@23 d2@23 g1@7]/7",
  W: "[~@11 g1@27 ~@2 c2@21 ~@2 d2@22 ~ g1@22 ~ g1@48 ~@2 g1@24 d2@9]/8",
  X: "[~@15 e2@23 d2 ~@5 d2@17 ~@2 c2@23 ~ b1@22 ~@2 e2@23 d2@2 ~@4 d2@4]/6", Y: "[~@14 c2@24 ~ b1@24 c2@117 ~@12]/8",
})).s("gm_piano").gain(0.32)

stack(piano, string_ensemble_2, bass)

More by Pooh