Strudelify

bellas lullaby

Anthony Ajello

KeyG majorTempo95 bpm
0:00/0:00
// bellas lullaby — Anthony Ajello
// 95 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 (1/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5832346; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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.

// chords · piano
const piano = note("<A@6 B C D E F@7 E D G@3 H I J K L M N M O P Q R S T U V W X Y Z AA ~>".pickRestart({
  A: "[~@33 d3@3 ~@30 a4@13 ~@15 e3@2, ~@14 d#4@14 c4@2 e3@5 ~@9 a3@32 ~@3 [d1,a1]@7 [d1,a1,d2,c4]@2 a3@2 g3@2 c4@4, ~@17 d4@19 d#4@13 c4@30 ~@3 d#4@14, ~@20 c4@5 g3@11 ~@5 c4@6 g3@32 e2@17, ~@22 a3@14 ~@3 d4@19 g4@22 ~@4 d4@12]/6", // D5 D7
  B: "[d1,a1]@3 ~@4 f3, [e2,d3], ~@3 [d1,a1,d2]@5, ~@3 d#3", C: "[f0,c1]@3 ~@4 d3, [g1,f3], ~@3 [f0,c1,a1]@5, ~@3 c3",
  D: "[d1,a1]@3 [d1,a1,d2]@5, [e2,d3]", E: "~@7 e3, e2@3 c4 a3 g3 c4@2, [d1,a1]@3 [d1,a1,d2]@5, ~ d#4@7, ~ d4@3",
  F: "[[d1,a1]@3 ~@52 e3, [e2,d3]@8 [f0,c1]@2 c4 [f0,c1,a1]@3 g#4 a4@7 d4 e4@4 ~@2 c4 b3 a3@4 e4@2 c4 d4 e4@4 [c1,g1,c2,g4]@2 f4 e4 d4@4 [f0,c1,a1,g3]@5, ~@3 [d1,a1,d2]@5 g1@8 e2@8 d2@8 g1@8 d2@8 g1@8, ~@6 d#3@2 ~ b3@7 ~@2 c4@2 [d1,a1,d2]@4 [c1,g1]@3 [c1,g1,c2,e4]@5 [f0,c1]@3 [f0,c1,a1]@5 [c1,g1]@2 a4@6 [f0,c1]@2 b3@6, ~@7 f3@9 [d1,a1]@3 d4@2 c4@3 ~ b4@7 ~ b4@7 ~ b4@7 ~ c4@7]/7", // D5 E7 F5 F C5 F D5 C5 …
  G: "[~@2 b3@2 ~@2 f4@2 ~@2 b3@2 ~@35 d4, e1@6 b3@16 ~ c4, e2@5 [g1,d2,g2]@16 ~@3, c2@3 [f1,c2,f2]@4 d4@16 ~, ~ b3 f4@2 [a1,e2,a2,e4]@8]/3", // G5 F5 A5
  H: "[c1,e4] g3 ~ f3 ~ e3 ~ d3, ~ g1@5 [g1,e3]@2, ~ [e2,g3]@3, ~ f3, ~@5 c1@3", // C Em
  I: "a2 ~ c3 ~ e3 ~ g3!2, f0@5 [f1,e3] c2@2, ~ [c1,a2]@7, ~ a1@3, ~@3 c3@5", // Fmaj7 F
  J: "~ g3 ~ f3 ~ e3 ~ d3, f0@3 [g1,e3], ~ c1@4 c1@3, ~ [f1,g3]@3, ~ f3", // C Fsus2
  K: "a2 ~ c3 ~ e3 ~ a3!2, a0@5 [a0,e3] d1@2, ~ [e1,a2]@7, ~ a1@3, ~@3 c3@5", // A5
  L: "~ [c3,g3] ~ [a2,f3] ~ [g2,e3] ~ [f2,d3], b3@5 c1 [f1,g2,e3]@2, [c1,e3] [a2,f3], ~ g1@7, ~ [c2,c3,g3]@3", // C5 Dm C Dm C Dm C5
  M: "[f2,c3] ~ [a2,f3] ~ [e3,a3] a3 [a3,d4]!2, f0@5 [a0,e3] e1@2, ~ [c1,f2,c3]@7, ~ f1@3, ~@3 [a2,f3]@5", // F5 Dm A5 D5 A5 F5 Dm
  N: "~ [c3,g3] ~ [a2,f3] ~ [g2,e3] ~ [f2,d3], [b3,e4]@5 c1 [f1,g2,e3]@2, c1 [a2,f3], ~ g1@7, ~ [c2,c3,g3]@3", // C5 Dm C Dm E5 C Dm C5
  O: "~ d4 ~@2 a3 ~@2 e3, [a#0,d1,f1,a#1]@5 a3 g3@2, ~ d4@3, ~@3 c4@5, ~ [c1,g1,c2]", P: "[d1,a1,d2,d3]",
  Q: "~ [c3,a3] ~ [e3,c4] ~ [g3,e4] ~ [b3,g4], [f0,c1,f1], ~ [c3,a3]@3, ~ [a0,e1,a1,e3,c4], ~@3 [g3,e4]", // F C Em F5 F Am C
  R: "[d1,g1,b1,b3,g4]", // G
  S: "~ [f3,d4] ~@2 [c3,a3] ~@2 [g2,e3], [a#0,d1,f1,a#1]@5 [c3,a3] [b2,g3]@2, ~ [f3,d4]@3, ~@3 c4@5, ~@3 e3 [c1,g1,c2]@4", // Dm F C A# F Em Dm C5
  T: "~@15 e4, [d1,g1,d2,g2,d3], ~@7 d4", U: "~ a3 ~ g3 ~ f#3 ~ e3, f#4@3 [a1,f#3], d1 g3, ~ a1@4 d1@3, ~ [f#2,a3]@3",
  V: "b2 ~ d3 ~ [b2,f#3] ~ a3!2, g0@5 [g1,b2,f#3] d2@2, ~ d1@7, ~ b2@2 d3@5, ~ b1@3", // B5 Gmaj7
  W: "~ [d3,a3] ~ [b2,g3] ~ [a2,f#3] ~ [g2,e3], c#4@3 [a1,a2,f#3], [d1,f#3] [b2,g3], ~ a1@4 d1@3, ~ [f#2,d3,a3]@3", // D5 Em D C D Em D
  X: "[g2,d3] ~ [b2,g3] ~ [f#3,b3] b3 [b3,e4]!2, g0@5 [g1,f#3] d2@2, ~ [d1,g2,d3]@7, ~ b1@3, ~@3 [b2,g3]@5", // G5 Em B5 E5 Gmaj7 G5 Em
  Y: "~ [d3,a3] ~ [b2,g3] ~ [a2,f#3] ~ [g2,e3], [b0,c#4,f#4]@5 d1 [a1,a2,f#3]@2, ~ f#1@7, ~ [d2,d3,a3]@3, ~ [b2,g3]", // D5 Em D C Bsus2 D D5 Em
  Z: "[g2,d3] ~ [b2,g3] ~ [f#3,b3] b3 [b3,e4]!2, e1@3 [b2,g3]@3 b1@2, ~ [g2,d3]@7, ~ b1@4 [e1,f#3]@3, ~ f#2@3", // G5 Em B5 E5 Em G5 Esus2
  AA: "[b-1,b0,f#3,b3,f#4]", // B5
})).s("gm_piano").gain(0.3)

stack(piano)