Strudelify

jeeves and wooster

Anne Dudley

KeyG majorTempo150 bpm
0:00/0:00
// jeeves and wooster — Anne Dudley
// 150 bpm, 4/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: metre changes (3/8 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5902029; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// other · piano
const piano = note("<A@3 B C@6 D E F G H@3 I ~@5 J K L M N O P Q R S@8 T P Q U V@4 W X Y R T Z AA AB>".pickRestart({
  A: "[[f2,c3,d5]@3 [f2,d3,d#5]@4 [f2,d3,e5]@3 [c3,g3]@3 a#5@2 ~ [e5,d6]@2 [c3,a3,a5,c6]@4 ~ [c3,a3,g#5,b5]@3 [c3,g3,g5,a#5]@4 ~ [c3,g3,a4,c5]@3 [c3,a3,a#4,c#5]@4 ~ [c3,a3,b4,d5]@3 [d5,c6]@2 g#5@2 ~ [d5,c6]@2 ~ [a#2,g3,g5,a#5]@4 [a#2,g3,f#5,a5]@3 [a#2,f3,f5,g#5]@4 ~ [a#2,f3,c5]@3 [a#2,g3,a#4,d5]@4 ~ [a#2,g3,b4,f5]@2, ~@10 [e5,d6]@2 ~@3 [c3,g3]@3 ~@24 [a#2,f3]@4 [a#2,f3]@3 ~@23]/3", // Dm7 Dm C5 E7 F C7 Am7 D7 …
  B: "~ [f2,c3,f3,a4,f5]@7 ~ c5@2 d5@2 c5@2 a4@2 b4@4 a#4@3, ~@9 [c3,f3,a3]@7 ~ [b2,d3,g#3]@7", // F G#dim
  C: "[~ g4@4 g#4@3 [f3,a3,a4,c5]@7 ~ c3@4 ~@9 g#4@3 a4@2 c5@2 ~ d5@2 ~ [f1,f4,a4,c5,f5]@4 f2@3 a1@4 ~ a2@3 c2@4 ~ [c3,d#4,a4,c5,f5]@3 d2@4 ~ d3@3 [f2,d#4,a4,c5,f5]@4 ~ f3@3 d2@4 d3@3 ~ c2@4 [c3,d#4,a4,c5,f5]@3 d2@4 ~ d3@3 [f2,d#4,a4,c5,f5]@4 ~ f3@3 d2@4 ~ d3@3 c2@4 ~ [c3,d#4,a4,c5,f5]@3 a1@4 a2@3 ~ [f1,d#4,a4,c5,f5]@4 f2@3 a1@3, ~ g3@7 ~@13 f2@10 ~@113]/6", // F F7
  D: "~@2 a2@3 c2@4 ~ [c3,d#4,a4,c5,f5]@3 d2@4 ~ d3@3 [f2,f4,g#4,a#4,d5]@3", // F7 A#7
  E: "~@2 f3@3 d2@4 [d3,f4,g#4,a#4,d5]@3 ~ c2@4 [c3,c5]@3 [a1,a4]@4", // A#7 C A
  F: "~ [a2,f4]@3 [a#1,f4,g#4,a#4,d5]@4 ~ a#2@3 d2@4 ~ d3@3 f2@4", // Dm A#7
  G: "~ [f3,f4,g#4,a#4,d5]@3 g2@4 g3@3 g#2@4 ~ g#3@3 g2@4 ~, ~@11 [g#4,a#4,f5]@7 ~@6", // A#7
  H: "[[g3,f4,a#4,d5]@3 f2@4 ~ [f3,f4,g#4,d5]@3 [d2,d4]@4 ~ [d3,c#4]@3 [f1,c4]@4 [f2,c4]@3 ~ a1@4 [a2,c4]@3 c2@4 ~ c3@3 [d2,a4,d5]@4 ~ [d3,a4,c5]@3 f2@4 ~ f3@3 [d2,a4,d5]@4 ~ [d3,a4,c5]@3 c2@4 [c3,f4,a4,c5]@2, ~@34 [d#4,f4,a4,c5]@7 ~@9 a4@7 ~@15]/3", // Gm7 Ddim D Dmaj7 F5 Am D5 D7 …
  I: "~@2 a1@4 a2@3 c2@15, ~ [g4,c5,e5]@3", J: "~@8 a5 a#5 b5 d6", K: "[a#5,c6,e6,g6]@4 [a#5,c6,e6,g6] ~@19",
  L: "~@10 [g5,g6]@2 [c#6,c#7]@2 [d6,d7]@2 [g5,g6]@2 [c6,c7]@3 ~ [a#5,a#6]@2", // G C# D G C A#
  M: "[g5,g6]@3 ~@7 [c#6,c#7]@2 [d6,d7]@3 ~ [g5,g6]@2 [c#6,c#7]@3 ~ [d6,d7]@2", // G C# D G C# D
  N: "[b5,d6,g6,b6,d7,g7]@3 ~@7 [b5,d6,g6,b6,d7,g7]@2 ~@12", // G
  O: "[d5,f#5,a5,d6,f#6,a6] ~@9 [d5,f#5,a5,d6,f#6,a6,d7]@8 ~@2 [g5,g6]@2 [a5,a6]@2", // D G A
  P: "[a#5,a#6] [g5,g6] [a5,a6] [a#5,a#6] [g5,g6] [a5,a6] [a#5,a#6] [g5,g6] [a5,a6] [a#5,a#6] [g5,g6] [a5,a6]", // A# G A A# G A A# G …
  Q: "[e5,e6]@3 ~ [g5,g6]@2 ~@2 [a4,a5]@2 [a#4,a#5]@2 [b4,b5]@2 [d5,d6]@2 [e5,e6]@2 [g5,g6]@2 [d5,d6]@2 [e5,e6]@2", // E G A A# B D E G …
  R: "[g5,g6]@3 ~ [d5,d6]@2 [e5,e6]@3 ~ [g5,g6]@4 [a4,a5]@2 [a#4,a#5]@2 [b4,b5]@2 [d5,d6]@2 [e5,e6]@2", // G D E G A A# B D …
  S: "[g5,g6] [d5,d6] [e5,e6] [g5,g6] [d5,d6] [e5,e6] [g5,g6] [a4,a5] [a#4,a#5] [b4,b5] [d5,d6] [e5,e6]", // G D E G D E G A …
  T: "[g5,g6]@3 ~ [d6,d7]@2 [a#5,a#6]@3 ~ [d6,d7]@2 ~@8 [g5,g6]@2 [a5,a6]@2", // G D A# D G A
  U: "[g5,g6]@3 ~ [d5,d6]@2 [e5,e6]@3 ~ [g5,g6]@2 ~@4 [e5,g5,b5,e6,g6,b6,e7]@2 ~@6", // G D E G Em
  V: "~@2 [e5,g5,b5,e6,g6,b6,e7] ~@5 [e5,g5,b5,e6,g6,b6,e7] ~@3", // Em
  W: "~@6 [g5,a#5,g6,a#6]@6 [e5,a5,e6,a6]@3 ~ [g5,a#5,g6,a#6]@2 ~@6", // Gm A5 Gm
  X: "[g5,a#5,g6,a#6]@6 [e5,a5,e6,a6]@3 ~ [g5,a#5,g6,a#6]@2 ~@6 [a4,a5]@3 ~ [a#4,a#5]@2", // Gm A5 Gm A A#
  Y: "[b4,b5]@3 ~ [g5,g6]@2 ~@2 [a4,a5]@2 [a#4,a#5]@2 [b4,b5]@2 [d5,d6]@2 [e5,e6]@2 [g5,g6]@2 [d5,d6]@2 [e5,e6]@2", // B G A A# B D E G …
  Z: "[a#5,a#6] [g5,g6] [a5,a6] [a#5,a#6] [g5,g6] [a5,a6] [a#5,a#6] [g5,g6] [a5,a6] [a#5,a#6] [e5,e6] [f#5,f#6]", // A# G A A# G A A# G …
  AA: "[b4,g5]@6 d5 ~ e5 d5 ~ b4 c#5@3 ~ c5@2 a4@3 ~ a#4@2, g6@23 ~", AB: "b4@3 ~ d4@2 e4@3 ~ g4@2 ~@12",
})).s("gm_piano").gain(0.4)

// chords · piano
const piano_2 = note("<~@20 A B C D E F G H I@2 G@6 J@2 G@2 I@2 G@5 H J@2 G@2 I@2 K L>".pickRestart({
  A: "[g3,b3,d4,f4,b4,d5]@3 ~ [d4,f4,b4,d5] ~ [a3,c4]@3 ~ [a3,c4]@2 [g3,b3]@3 ~ [g3,b3]@2 [a3,c4]@3 ~ [a3,c4]@2, ~@2 [g3,b3] ~@9", // G7 Bdim Am G Am G
  B: "[g3,b3]@3 ~ [g3,b3]@2 [a3,c4]@3 ~ [a3,c4,g4]@2 [g3,b3,a#4,c#5]@2 [b4,d5]@2 [g3,b3,a#4,c#5]@2 [a3,c4,a#4,c5]@3 ~ [a3,c4,a4,c5]@2", // G Am Am7 Gdim Bm Gdim Am
  C: "[g3,b3]@3 ~ [g3,b3]@2 [a3,c4]@3 ~ [a3,c4,g4,c#5]@2 [g3,b3,f4,b4,d5]@3 ~ [g3,b3,g4]@2 [a3,c4,g4,a#4,c#5]@3 ~ [a3,c4,g4,b4,d5]@2, [g4,b4] ~@3", // G Am A7 G7 G Gdim G
  D: "[f4,b4,d5,g5] ~@3 [g3,b3]@2 [a3,c4]@3 ~ [f4,b4,d5,g5] ~ [g3,b3]@3 ~ [g3,b3,a4]@2 [a3,c4,a#4]@2 b4@2 [a3,c4,d5]@2, [g3,b3]@3 ~@7 [a3,c4]@2 ~@12", // G7 G Am G7 G Am D7 G …
  E: "[c3,e3,a#4,c5,e5,g5]@4 [a#4,c5,e5,g5] ~ [d3,f3]@3 ~ [d3,f3]@2 [c3,e3]@3 ~ [c3,e3]@2 [d3,f3]@3 ~ [d3,f3]@2, ~@2 [c3,e3] ~@9", // C7 Dm C Dm C
  F: "[c3,e3]@3 ~ [c3,e3]@2 [d3,f3]@3 ~ [d3,f3,g3,c4]@2 [c3,e3,g3,a#3]@3 ~ [c3,e3,g3,a#3]@2 [d3,f3,g3,c4]@3 ~ [d3,f3,g3,c4]@2", // C Dm Dm7 C7 Dm7
  G: "[g2,b2,g3,b3]@3 ~ [g2,b2,g3,b3]@2 [a2,c3,a3,c4]@3 ~ [a2,c3,a3,c4]@2 [g2,b2,g3,b3]@3 ~ [g2,b2,g3,b3]@2 [a2,c3,a3,c4]@3 ~ [a2,c3,a3,c4]@2", // G Am G Am
  H: "[g2,b2,g3,b3]@3 ~ [g2,b2,g3,b3]@2 [a2,c3,a3,c4]@3 ~ [a2,c3,a3,c4]@2 [g2,b2,g3,b3]@3 ~ [g2,b2,g3,b3]@2 [a2,c3,a3,c4]@3 ~ [g2,b2,g3,b3]@2", // G Am G Am G
  I: "[a2,c3,f#3,a3,c4]@3 ~ [a2,c3,f#3,a3,c4]@2 [a2,d3,f#3,a3,d4]@3 ~ [a2,d3,f#3,a3,d4]@2 [a2,c3,f#3,a3,c4]@3 ~ [a2,c3,f#3,a3,c4]@2 [a2,d3,f#3,a3,d4]@3 ~ [a2,d3,f#3,a3,d4]@2", // F#dim D F#dim D
  J: "[c2,e2,c3,e3]@3 ~ [c2,e2,c3,e3]@2 [d2,f2,d3,f3]@3 ~ [d2,f2,d3,f3]@2 [c2,e2,c3,e3]@3 ~ [c2,e2,c3,e3]@2 [d2,f2,d3,f3]@3 ~ [d2,f2,d3,f3]@2", // C Dm C Dm
  K: "[g2,d3,g3] [g3,b3,d4] [e3,g3,a#3,c#4] [d#3,a3,c4]", L: "[b2,d3,g3]@3 ~@5 [g1,g2] ~@3",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)

More by Anne Dudley