Strudelify

A Cradle Song William Blake

Benjamin Britten

KeyE♭ majorTempo112 bpm
0:00/0:00
// A Cradle Song William Blake — Benjamin Britten
// 112 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1325371; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 36 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 B C D E F G H I J K L M N O P Q R S Q T U V W X Y Z AA AB AC AD AE AF AG AH AI>".pickRestart({
  A: "bb2@2 eb2@2 bb2@2 bb4 ab4, ~@3 eb2", B: "eb4@2 d4 eb4 f4@2 eb4@2 d4@2 c4 d4 eb4@2 d4@2, bb2 eb2 bb2 eb2",
  C: "bb3@2 c4 bb3 db4 c4 ab3 bb3 c4@2 b3@2 a3@2 g3 a3, bb2 eb2 bb2 eb2",
  D: "bb3@2 a3 bb3 c4 bb3 c4 d4 eb4@2 f4@2 gb4@2 ab4 gb4, bb2 eb2 bb2 eb2",
  E: "f4@2 eb4@2 d4@2 c4 d4 eb4 f4 g4 ab4 bb4@2 ab4@2, bb2 eb2 bb2 eb2",
  F: "g4@2 f4 g4 ab4@2 g4@2 f4@2 eb4 f4 gb4@2 f4@2, b2 eb2 b2 eb2",
  G: "eb4@2 d4 eb4 f4 eb4 c4 d4 e4@2 eb4@2 db4@2 eb4 e4, c3 eb2 db3 eb2",
  H: "f4 gb4 g4 ab4 a4 bb4 b4 c5 c5@2 b4@2 a4@2 b4 a4, d3 eb2 e3 eb2",
  I: "ab4@2 g4@2 f4@2 e4 f4 g4 ab4 bb4 c5 d5@2 c5@2, f3 eb2 f3 eb2",
  J: "bb4@2 ab4@2 gb4@2 ab4 bb4 b4@2 bb4@2 ab4@2 gb4 ab4, gb3 db2 f3 f2",
  K: "bb4@2 ab4 gb4 ab4 gb4 f4 eb4 db4@2 b3 bb3 ab3@2 bb3 b3, e3 db2 eb3 c2",
  L: "db4 eb4 f4 gb4 ab4@2 g4@2 f4@2 eb4 f4 g4@2 f4 g4, eb3 c2 eb3 b1",
  M: "ab4 bb4 b4 bb4 ab4@2 gb4@2 f4@2 eb4@2 d4@2 c4 bb3, d3 bb1 d3 bb1",
  N: "ab3 db4 eb4 ab4 gb4@2 f4@2 eb4 db4 b3 bb3 ab3 b3 eb4 gb4, db3 bb1 c3 bb1",
  O: "e4@2 eb4@2 db4@2 b3 db4 eb4@2 d4 eb4 e4@2 eb4 e4, b2 bb1 b2 bb2",
  P: "gb4@2 e4 gb4 ab4@2 gb4 ab4 bb4 b4 db5 b4 bb4@2 ab4 gb4, ab2 gb2 f2 gb2",
  Q: "f4@2 e4 f4 e4@2 f4 g4 f4@2 e4 f4 g4 b4 d5 g5, g2@11 ~ bb4@2 ab4@2",
  R: "[gb4,f5]@2 d5 c5 a4 c5 d5 f5 [bb4,e5]@2 c5 b4 g4 b4 c5 e5, ~ bb4 db5 ab4 ~ db5 eb5 db5", // Gbmaj7 Bbdim
  S: "c5 b4 c5 bb4 [bb4,c5] bb4 c5 bb4 e5 f5 g5 f5 e5 c5 bb4 g4, bb4 db5 ~ db5 gb5 eb5 db5 ~", // Bbsus2
  T: "[bb4,f5]@2 d5 c5 a4 c5 d5 b5 [bb4,a5]@2 f5 e5 d5 f5 a5 d6, ~ db5 eb5 db5 ~ db5 ab5 gb5", // Bb5 Bbmaj7
  U: "c6 b5 a5 g5 f5@2 g5 f5 e5@2 e5@2 c5@2 b4 c5, bb5 ~@3 g2@2 c2@2",
  V: "d5@2 c5 b4 c5@2 b4 a4 bb4@2 a4 g4 a4@2 g4 f4, g2 c2 ab2 c2",
  W: "g4@2 f4 e4 f4@2 e4 d4 e4 d4 db4 b3 a3 b3 db4 d4, a2 bb2 b2 b1",
  X: "e4 gb4 g4 a4 bb4@2 a4 g4 gb4@2 e4 gb4 e4@2 gb4 g4, b2 b1 b2 c3",
  Y: "a4 b4 db5 d5 db5 b4 a4 g4 a4@2 g4 gb4 g4@2 gb4 e4, db3 a1 db3 d3",
  Z: "f4@2 eb4 d4 eb4@2 d4 c4 d4 c4 b3 c4 d4 e4 gb4 g4, e3 gb3 g3 a3",
  AA: "ab4@2 bb4 b4 bb4@2 ab4 bb4 b4@2 bb4 ab4 g4@2 f4@2, bb3@11 ~ eb2@4",
  AB: "eb4@2 d4 eb4 f4@2 eb4@2 d4@2 c4 d4 eb4 d4 bb3 c4, bb2 eb2 bb2 eb2",
  AC: "db4@2 c4 db4 eb4@2 d4@2 c4@2 bb3 c4 d4 c4 ab3 bb3, bb2 eb2 bb2 eb2",
  AD: "c4@2 b3@2 a3@2 g3 b3 bb3@2 a3 bb3 c4@2 bb3 c4, bb2 eb2 bb2 eb2",
  AE: "db4@2 c4@2 bb3@2 c4 db4 eb4 db4 eb4 db4 gb4@2 f4@2, bb2 eb2 bb2 eb2",
  AF: "gb4@2 ab4 gb4 f4@2 gb4 ab4 a4@2 ab4@2 a4@2 b4 a4, bb2 eb2 bb2 eb2",
  AG: "ab4@2 g4@2 f4@2 g4 ab4 g4@2 f4@2 g4@2 ab4 g4, bb2 eb2@2 bb2",
  AH: "f4@2 g4@2 ab4@2 g4 f4 g4@2 ab4 bb4 c5 d5 eb5 f5, eb2 bb2", AI: "[f5,g5]@15 ~",
})).s("gm_piano").gain(0.3)

stack(piano)