Strudelify

two birds

Regina Spektor

KeyG majorTempo120 bpm
0:00/0:00
// two birds — Regina Spektor
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (9/8 at bar 1, 13/8 at bar 2, 4/4 at bar 4, 5/4 at bar 5, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5857574; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · "Part_2"
const piano = note(`<
  A@3 B C@6 D@5 E@8 F@2 G@3 H I J K L M N O P Q R ~ S T U V W X@8 Y@7 Z@8 AA@3 AB AC@2 AD AE@4 AF AG@8 AH AI AJ AK@3 AL
  AM@2 AN@2 AO@7
>`.pickRestart({
  A: "[~@5 c2@2 c2@2 c2@2 c2@2 c2@2 c2@2 c2@2 c2@2 ~@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 ~@9, ~@5 e4@16 ~@2 d4@16 ~@9]/3",
  B: "~ a2!3 ~ a2@2 a2@2 a2@2 a2@2 a2@2 ~, ~ [b3,c4]@15", // Cmaj7
  C: "[~ e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 ~@4 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 ~@2 b2@2 b2@2 b2@2 b2@2 b2@2 b2@2 b2@2 b2@2 f2@2 f2@2 f2!2 ~@2 f2 ~ f2!2 ~@2 f2 ~@5 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 e2@2 e2@2 e2, ~ [b3,c4]@16 ~@4 [a3,f4]@16 ~@2 [b3,g4]@16 d4@16 ~@25]/6", // Cmaj7 Dm Em
  D: "[~ e2@2 e2 ~ e2!2 ~@2 e2 ~@3 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 [b2,b3,g4]@2 [b2,b3,g4]@2 [b2,b3,g4]@2 [b2,b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 ~@2 [c4,e4], ~@13 [b3,g4]@16 a3@16 ~@8 b2@8 c3@16 ~@3]/5", // Em C Em
  E: "[~ [c4,e4]!2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 ~@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [c4,e4]@2 [c4,e4]@2 [d4,e4]@2 [c4,e4]@2 [b3,e4]@2 [b3,e4]@2 [c4,e4]@2 [b3,e4]@2 [c4,a4]@2 [c4,a4]@2 [c4,a4]@2 [c4,a4]@2 [c4,g4]@2 [c4,g4]@2 [c4,g4]@2 [c4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [g1,d4,g4]@2 [a1,d4,g4]@2 [b1,d4,g4]@2 [a1,d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 ~, ~@15 g2@16 c3@8 b2@8 f2@16 g2@16 ~@8 g1@8 g3@16 g2@8 b2@8 ~]/8", // C Em C Dsus2 C E5 C E5 …
  F: "[~ [g4,c5]@2 [g4,c5]@2 [g4,d5]@2 [g4,c5]@2 [g#4,b4]@2 [g#4,b4]@2 [g#4,c5]@2 [g#4,b4]@2 [c4,a4]@2 [c4,a4]@2 [c4,a4]@2 [c4,a4]@2 [c4,g4] ~ [c4,g4]!2 [c4,g4]@2 ~, ~ c3@8 b2@8 f2@15]/2", // C5 G5 C5 G#m G# G#m F C5
  G: "[~@13 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 g1@2 a1@2 b1@2 a1@2 g1@4 ~@7, ~@13 g2@16 ~@19]/3", // G5
  H: "[f2,a3,d4]@2 [f2,f3]@2 ~ f3 a3!2 ~ [a3,d4] ~ f3 f2@2 f2@2, ~@2 [f2,a3] [f2,d4] f2!2 ~@2", // Dm F D5 F Dm
  I: "[a2,c4,e4] [a2,a3] [a2,c4,g4] [a2,a3] [a2,c4,e4] [a2,a3] [a2,c4,g4] [a2,a3]", // Am A Am7 A Am A Am7 A
  J: "[e2,g3,b3] [e2,f3] [e2,g3] [e2,g3,b3] [e2,f3] [e2,g3] [e2,g3,b3] [e2,f3]", // Em Fmaj7 Em Fmaj7 Em Fmaj7
  K: "[f2,f3,a3] [f2,c3] [f2,f3] [f2,f3,a3] [f2,c3] [f2,f3] [f2,f3,a3] [f2,c3]", // F F5 F F5 F F5
  L: "[g2,g3,b3] [g2,d3] [g2,g3] [g2,g3,b3] [g2,d3] [g2,g3] [g2,g3,b3] [g2,d3]", // G G5 G G5 G G5
  M: "[a2,a3,c4] [a2,f3] [a2,a3] [a2,a3,c4] [a2,f3] [a2,a3] [a2,a3,c4] [a2,f3]", // Am Dm A Am Dm A Am Dm
  N: "[b2,b3,d4] [b2,g3] [b2,b3] [b2,d4] [b2,g4] [b2,f4] [b2,e4] [b2,d4]", // Bm Em B Bm Em Bdim E5 Bm
  O: "e4 d4 ~ c4 [c2,g3]@2 c2@2 [c2,e4]@2 [c2,d4]@2 [c2,c4]@2 [c2,g3]@2, c2!2 ~@6", // C5 C Csus2 C C5
  P: "[f2,d4] [f2,c4] [f2,a3] [f2,f3] [f2,d4] [f2,c4] [f2,a3] [f2,f3]", // Dm F5 F Dm F5 F
  Q: "[a2,c4] [a2,b3] [a2,a3] [a2,e3] [a2,c4] [a2,b3] [a2,a3] [a2,e3]", // Am Asus2 A A5 Am Asus2 A A5
  R: "[e2,g3] [e2,e3] [e2,g3] [e2,b3] [e2,e4] [e2,b3] [e2,g3] [e2,e3]", // Em E Em E5 E E5 Em E
  S: "[f2,a3,c4,f4] [f2,c4] [f2,a3] [f2,c4] [f2,a3,f4] [f2,c4] [f2,a3] [f2,c4]", // F F5 F F5 F F5 F F5
  T: "[g2,g3,b3,d4,g4] [g2,g3] [g2,b3] [g2,d4] [g2,b3,g4] [g2,d4] [g2,b3] [g2,g3]", // G G5 G G5 G
  U: "[a2,a3,c4,f4] [a2,a3] [a2,c4] [a2,f4] [a2,c4,a4] [a2,f4] [a2,c4] [a2,a3]", // F A Am Dm Am Dm Am A
  V: "[b2,b3,d4,g4] [b2,d4] [b2,g4] [b2,a4] [d4,b4] a4 g4 d4, ~ b2", W: "[c4,e4]!8, c3",
  X: "[~@3 [c4,e4]!3 ~ [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 ~@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [c4,e4]@2 [c4,e4]@2 [d4,e4]@2 [c4,e4]@2 [b3,e4]@2 [b3,e4]@2 [c4,e4]@2 [b3,e4]@2 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [c3,a3]@2 [c3,a3]@2 [c3,a3]@2 [c3,a3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [g1,d3,g3]@2 [a1,d3,g3]@2 [b1,d3,g3]@2 [a1,d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4], ~@3 g3@16 g2@16 c3@8 b2@8 ~@16 f2@16 g2@16 ~@8 g1@8 ~@13]/8", // C Em C Dsus2 C E5 C E5 …
  Y: "[~ [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [b3,g4]@2 [g4,c5]@2 [g4,c5]@2 [g4,d5]@2 [g4,c5]@2 [g#4,b4]@2 [g#4,b4]@2 [g#4,c5]@2 [g#4,b4]@2 [e4,a4]@2 [e4,a4]@2 [e4,a4]@2 [e4,a4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [c4,a4]@2 [c4,a4]@2 [c4,a4]@2 [c4,a4]@2 [c4,g4]@2 [c4,g4]@2 [c4,g4]@2 [c4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [g1,d4,g4], ~@3 g3@16 g2@8 b2@8 c3@8 b2@8 a2@16 f2@16 ~@12 g2@16 ~]/7", // C Em C5 G5 C5 G#m G# G#m …
  Z: "[~ [a1,d4,g4]@2 [b1,d4,g4]@2 [a1,d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [d4,f4,g4,a4,b4]@2 [g1,d4,f4,g4,a4,b4]@4 ~@4 f2@2 f2@2 f2@2 f2@2 f2@2 f2!3 ~@3 a2, ~@7 g1@4 ~@4 g1@16 g1@8 g1@8 g1@16 g1@8 g1@8 g1@8 g1@8 ~@16 d4@16 ~]/8", // Dsus4 G Dsus4 G5 G7 Dm G7
  AA: "[~ a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 a2 a2 ~@2 a2!3 ~ a2@2 a2@2 a2@2 ~@3, ~@31 a3@16 ~]/3",
  AB: "b2@2 b2@2 b2 ~ b2 ~ b2!3 ~ b2 ~@3, [b3,g4]", // Em
  AC: "[~@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2 ~ f2!2 ~@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2 ~ a2!2, ~ d4@8 ~@7]/2",
  AD: "~@2 e2@2 e2@2 e2@2 e2@2 e2@2 e2 ~ e2!2",
  AE: "[~ g2!7 g2 a2!7 a2 b2!7 b2 [c2,c4,e4] [c2,g3] [c2,c4] [c2,c4,e4] [c2,g3] [c2,c4] [c2,c4,e4], ~ [b3,g4]@8 a3@8 [b3,g4]@8 ~@7]/4", // C C5 C C5 C Em
  AF: "[c2,g3] [f2,g#3,d4] [f2,f3] [f2,g#3] [f2,g#3,d4] [f2,f3] [f2,g#3] [f2,g#3,d4]", // C5 Ddim F Fm Ddim F Fm Ddim
  AG: "[[f2,f3]@2 ~@3 [a2,a3,c4]@2 [a2,e3]@2 [a2,a3]@2 [a2,a3,c4]@2 [a2,e3]@2 [a2,a3]@2 [a2,a3,c4]@2 [a2,e3]@2 [e2,g#3,b3]@2 [e2,d3]@2 [e2,g#3]@2 [e2,g#3,b3]@2 [e2,d3]@2 [e2,g#3]@2 [e2,g#3,b3]@2 [e2,d3]@2 [a2,a3,c4]@2 [a2,f3]@2 [a2,a3]@2 [a2,a3,c4]@2 [a2,f3]@2 [a2,a3]@2 [a2,a3,c4]@2 [a2,f3]@2 ~@2 [b2,b3,d4]@2 [b2,g3]@2 [b2,b3]@2 [b2,d4]@2 [b2,g4]@2 [b2,f4]@2 [b2,e4]@2 [b2,d4]@2 [e2,g#4]@2 [e2,e4]@2 [e2,b3]@2 [e2,g#4]@2 [g#2,e4]@2 [g#2,b3]@2 [g#2,g#4]@2 [g#2,e4]@2 [a2,a4]@2 [a2,e4]@2 [a2,c4]@2 [a2,a4]@2 [c3,e4]@2 [c3,c4]@2 [c3,a4]@2 [c3,e4]@2 [b2,g#4]@2 [b2,e4]@2 [b2,b3]@2 [b2,g#4]@2 [d3,e4]@2 [d3,b3]@2 [d3,g#4]@2 [d3,e4]@2 ~@3 [d3,g#4]@2 [d3,e4]@2 [d3,b3]@2]/8", // F Am A5 A Am A5 A Am …
  AH: "[d3,g#3] [b2,e3] [b2,g#3] [b2,b3] [b2,e4] [c3,e4] [c3,c4] [c3,a3]", // Ddim E5 E B E5 C F
  AI: "[c3,e3] [a2,a3] [a2,c4] [a2,e4] [a2,a4] [b2,b4] [b2,g#4] [b2,e4]", // C A Am A5 A B E E5
  AJ: "[b2,b3] e2@2 ~@2 e2!2 [e2,g#4], ~ g#3 ~@3 e4@2 ~", // B E
  AK: "[[e2,g4] [g#2,g#4] [g#2,d4] [g#2,f4] [g#2,e4] a2!3 a2 c3!4 b2!3 b2 d3!4 c3!2 [c3,a4], ~@5 c4@2 e4@2 a4@2 c5@2 b4@2 g#4@2 e4@2 d4@2 c4@2 ~]/3", // Em G# G#dim C# C#m F
  AL: "[c3,g#4] [e3,a4] [e3,e4] [e3,f4] [e3,e4] d3!2 [d3,g#4], ~@5 e4@2 ~", // Fm A5 E Fmaj7 E Ddim
  AM: "[[d3,g4] [b2,g#4] [b2,d4] [b2,f4] [b2,e4] c3!3 c3 a2!4 [b2,b4] [b2,g#4] [b2,e4], ~@5 c4@2 e4@2 a4@2 c5@2 ~@3]/2", // G5 E Bm Bdim E5 B E E5
  AN: "[[b2,f4] d4 b3 g#3@2 ~@2 [f2,d4]@8 ~, ~ e2 ~@6]/2", // Bdim Dm
  AO: "[~ a2@8 e2@8 [f2,a3,f4]@8 [g2,b3,g4]@8 [a2,a3,f4]@8 [b2,d4,g4,d5]@8 ~@7, ~@41 b3@12 ~@3]/7", // F G Dm G
})).s("gm_piano").gain(0.29)

stack(piano)