Strudelify

Beauty and the Beast

Alan Menken

KeyF majorTempo84 bpm
0:00/0:00
// Beauty and the Beast — Alan Menken
// 84 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 68, 4/4 at bar 69) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/6080247; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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 · violin
const violin = note(`<
  ~@4 A B A C D E F G H I H J K L M N O@2 P@2 Q R S T ~ U@2 V@2 ~@2 N W X Y N Z AA S ~ AB@2 AC AD AE AF AG AH AI AJ AK
  AL AM AN AO AP AQ AR AS ~@5 AT AU@2 ~
>`.pickRestart({
  A: "~@4 a4 c5 e5 f5", B: "bb4", C: "g5@3 ~", D: "~@4 f5 g5 a5 bb5", E: "c6@4 c6 bb5 a5 g5", F: "f5@4 bb5 a5 g5 f5",
  G: "d5@2 [c5,d5] c5@13", H: "~@4 gb4 a4 db5 d5", I: "g4", J: "e5@4 gb5 e5 gb5 a5", K: "d5@4 d5 db5 d5 gb5",
  L: "g4@4 [gb5,a5] [g5,b5] [e5,g5]@2", M: "[gb5,a5]@2 [e5,g5] [d5,gb5] [d5,gb5]@8 ~@4",
  N: "~@4 [b4,d5] [db5,e5] [d5,gb5] [e5,g5]", O: "[[e5,a5]@10 ~@2 [b4,d5] [db5,e5] [d5,gb5] [e5,b5]]/2",
  P: "[e5@8 e5@3 d5 gb5@2 gb5@2 d5 b4 d5@2 ~@4 [b4,d5]@2 [db5,e5]@2 [d5,gb5]@2 [e5,g5]@2, a5@5 ~@3, ~@14 e5 ~@17]/2", // Bm Dbm D Em
  Q: "[e5,a5]@4 ~@3 [d5,a5] [gb5,a5]@2 [e5,g5]@2 [d5,gb5]@2 [db5,e5] [d5,gb5]", // A5 D5 Gbm Em D Dbm D
  R: "[b4,d5]@4 ~@4 [b4,gb5]@3 [db5,g5] [d5,a5]@3 [b4,gb5]", S: "[e5,g5]",
  T: "a5@2 g5 gb5 gb5@2 e5 d5 d5@2 db5 b4 a4@4", U: "[~@8 d6 db6 b5 db6 b5@2 a5@10 ~@8]/2",
  V: "[~@8 b5 db6 b5 [gb5,a5] e5 gb5 e5@10 ~@8]/2", W: "[e5,a5]", X: "~@3 g5!2 gb5 b5@2", Y: "b5@2 a5 a5@13",
  Z: "[e5,a5]@6 ~ gb5 b5@3 d6 d6@2 b5@2", AA: "d6 b5 a5 gb5 d5@2 ~@2 [d5,gb5]@2 [e5,g5]@2 [gb5,a5]@2 [d5,gb5]@2",
  AB: "[~@4 b4 d5 gb5@3 g5 c5@2 ~@4]/2", AC: "~@4 e6 b5 d6 b5", AD: "d6 c6 b5 a5@6 g5 b5@6",
  AE: "~@4 [b4,g5] [d5,a5] [g5,b5] [a5,c6]", AF: "[b5,d6]@4 ~@4 [g5,e6]@2 [gb5,d6]@2 [e5,b5]@2 b5 a5, ~@7 d5",
  AG: "[b4,g5]@3 ~ [a5,c6] [g5,b5] [gb5,a5] [e5,g5]", AH: "[d5,g5] ~", AI: "~@4 ab4 b4 eb5 e5",
  AJ: "a4@8 gb5@3 gb5 gb5@4", AK: "~ e5 e5@4 ~@2 e5@3 b4 ab5@3 e5", AL: "gb5@8 b5@2 ab5 gb5 ab5 gb5 ab5@2",
  AM: "ab5 gb5 e5@4 ~@2 db5@3 b4 db5@3 e5", AN: "a4@4 [b4,ab5] [db5,a5] [a4,gb5]@2",
  AO: "[b4,ab5] [a4,gb5] [ab4,e5]@2 [ab4,e5]@12", AP: "~@4 ab5 gb5 ab5 b5", AQ: "e5@8 e5@3 eb5 e5@3 ab5",
  AR: "a4@4 [b4,ab5] [db5,a5] [a4,gb5] [b4,ab5]", AS: "[ab4,e5]", AT: "~@6 [ab5,b5] [gb5,db6]",
  AU: "[[e5,a5] [eb5,b5] [e5,ab5]@10 ~@4]/2", // A5 Abm E
})).s("gm_violin").gain(0.3)

// chords · piano
const piano = note(`<
  A B C B D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR@2 AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO@4
>`.pickRestart({
  A: "f2 c3 g3 a3@2 c4 e4 f4", B: "f2 d3 f3 ~ [c5,a5] [d5,bb5] [bb4,g5] [c5,a5], bb3@3 bb3@3 [e3,c4]@2",
  C: "f2 c3 g3 ~@2 c4 e4 f4, [a4,f5]@9 ~@7, ~@6 a3@9 ~", D: "f2 c3 g3 ~@3 [c4,f4]@2, [a4,f5]@11 ~@5, ~@6 a3@9 ~",
  E: "f2 d3 f3 ~ a4 [g3,bb4] g4 a4, [bb3,f4]@3 bb3@2 ~ c3@2", F: "f2 c3 g3 a3@3 [c4,f4]@2, [a3,f4]@3 ~@5",
  G: "[bb3,d4]@4 [c4,a4] [d4,bb4] [bb3,g4] [c4,a4], [f2,g3]@15 ~", H: "f2@2 c3@2 g3@2 a3@9 ~, [a3,f4]@3 ~@5",
  I: "[g3,g4] [f3,f4], [a2,c5]@15 ~", J: "[d4,f4]@6 [c4,f4]@9 ~, [bb2,f3]@15 ~",
  K: "d4 [f4,f5] [bb4,bb5] [d5,d6] [f5,f6]@2 [e5,e6]@2, [c3,bb3]@15 ~, f3@11 ~@5", // F Bb D F E C7
  L: "[d3,gb3,a3]@3 [d2,d3] [d2,d3]@4, [d5,d6]@15 ~", // D
  M: "[d2,d3,g3,b3]@6 [d2,d3,d5,d6]@2 [db5,db6]@3 [a4,a5]@3 [e4,e5]@2, ~ [d2,d3]", // G D Db A E D
  N: "[d2,d3]@3 [d2,d3] [d2,d3]@4, [gb4,gb5] ~", // D Gb
  O: "[e4,g4,c5,e5]@2 ~ [d2,d3] [d2,d3,gb4,a4,d5,gb5]@2 [gb2,gb3,a4,d5,gb5,a5]@2, [d2,d3]@3 ~@5, ~ [g4,c5,e5,g5] ~@2", // C D C
  P: "[g2,g3,d4,gb4,b4,d5]@2 [g2,g3,gb4,b4,d5] [gb2,gb3,b4,d5,gb5]", Q: "[e2,e3,b3,e4,g4] [a1,a2,a3,db4,gb4,a4]",
  R: "[d2,d3]@3 [d2,d3] [a4,gb5] [b4,g5] [g4,e5] [a4,gb5], [d4,gb4,a4]@2 [d2,d3] [a1,a2]", S: "[d1,d2,gb4,d5] ~",
  T: "[gb2,gb3]@3 [gb2,gb3] ~@2 [gb4,d5]@2, [e4,a4]@11 ~@5, ~ [gb2,gb3]", // Gb D A5 Gb
  U: "[e4,db5]@2 ~ [g2,g3] [g2,g3]@2 [a2,a3]@2, [g2,g3]@3 ~@5, ~ [d4,b4] [b3,d4]@2", // Dbm G A G Bm
  V: "[gb2,gb3]@3 [gb2,gb3] ~@2 [d4,b4]@2, [a3,e4]@11 ~@5, ~ [gb2,gb3]", // Gb G A5 Gb
  W: "[d4,a4]@2 ~ [g2,g3] [g2,g3]@2 [a2,a3]@2, [g2,g3]@3 ~@5, ~ [b3,gb4] ~@2", // D5 G A G B5
  X: "[gb2,gb3]@3 [gb2,gb3] [d4,a4,d5]@2 [db4,a4,db5]@2, [db4,e4,a4] [gb2,gb3]", // Gb D5 Gbm A Gb
  Y: "b2@3 b2 d4 e4 gb4 d4, a3@15 ~, [d4,gb4] b2", Z: "[c3,g3,d4,e4]@3 c3 c3@4, ~@6 [e4,c5]@9 ~",
  AA: "[a2,b3,d4,a4]@3 a2 a2@2 [a2,b3,d4,a4]@2, g3@15 ~, ~@3 [b3,d4,a4]@3 ~@2", // Bm7
  AB: "[d3,gb3,a3]@3 [d2,d3] [gb4,gb5] [a4,a5] [db5,db6] [d5,d6], [d4,d5] [d2,d3]", // D Gb A Db D
  AC: "[d2,d3,g4,b4,d5,g5]@6 [d2,d3,d4,b4]@2 [gb4,d5]@3 [e4,db5]@3 [db4,a4]@2, ~ [d2,d3]", // G D Dbm Gbm D
  AD: "[d2,d3]@3 [d2,d3] [gb4,gb5] [a4,a5] [db5,db6] [d5,d6], [a3,d4,gb4] [d2,d3]", // D Gb A Db D
  AE: "[d2,e5,g5,b5,e6]@6 [e2,db5] [gb2,d5] [b4,d5,e5]@4 ~@2 gb2@2, ~@4 g2@3 ~, ~@3 [bb4,db5,e5]", // Em7 Dbm D E7 Bbdim
  AF: "[b1,b2]@3 [b1,b2] [d4,d5] [e4,e5] [gb4,gb5] [g4,g5], [a3,d4,gb4] [b1,b2]", // B D E Gb G D B
  AG: "[gb2,gb3,a4,db5,e5,a5]@3 [d5,a5,d6] ~@2 [db5,a5,db6]@2, ~@3 [gb2,gb3]@2 [gb2,gb3]@3, ~@2 [d5,a5,d6] ~", // Gbm7 D5 Gbm Gb D5
  AH: "[g2,g3,db5,e5,a5,db6]@3 [g2,g3] [g2,g3]@2 [g2,g3]@2, ~@6 [b4,d5,g5,b5]@9 ~", // A7 G
  AI: "a2!2 [a2,b3,d4]@2, g3@15 ~, [b3,d4,a4] ~", // Bm7
  AJ: "[gb2,gb3]@3 [gb2,gb3] ~@3 [gb4,d5], [db4,e4,a4]@13 ~@3, ~ [gb2,gb3]", // Gb D A Gb
  AK: "[e4,db5]@2 ~ [g2,g3] ~@2 gb4@2, [g2,g3]@3 ~ [g2,g3]@4, ~ [d4,b4]@2 ~", // Dbm G
  AL: "[gb2,gb3]@3 [gb2,gb3] [gb2,gb3,d4,a4,d5]@4, [db4,e4,a4] ~", // Gb D A
  AM: "[g2,g3]@3 [g2,g3] [g2,g3]@4, [a4,b4,d5,a5]@15 ~", // G Bm7
  AN: "[gb2,gb3]@3 [gb2,gb3] [a4,a5] [g4,g5] [gb4,gb5] [e4,e5], [db4,e4,a4] [gb2,gb3]", // Gb A G Gb E A Gb
  AO: "[b2,b3]@3 [b2,b3] [b2,b3]@4, [d4,gb4,d5]@15 ~", // B D
  AP: "e4@2 [c5,e5] g4 [c5,e5] g4 [c5,e5] g4, [c3,c4]@15 ~, ~@4 d5 ~@3 d5 ~@3 d5 ~@3", // C
  AQ: "[bb1,bb2,e4,g4,c5,e5]@2 ~ [a1,a2,f4,a4,c5,f5]@2 ~ [d2,d3,g4,c5,e5,g5]@2", // C7 F C
  AR: "[g2@6 g2@2 g2@8 [g2,c4]@6 [g2,g4,g5]@2 [gb4,gb5]@3 ~@3 [a3,a4]@2, d5@21 ~@3 g2@8, [d3,b3]@15 ~ e3@11 [d4,d5]@3 ~@2, ~@7 gb3]/2", // C5 G Gb A G D
  AS: "g2@3 g2 b3 d4 gb4 g4, d3@15 ~, [b3,b4] g2", AT: "g2@6 g2@2 c4@2 b3 c4 d4@2 a3@2, e3@15 ~, [c4,e4,a4] g2",
  AU: "g2@3 g2 [g2,b3,g4]@4, d3@15 ~, b3 ~", AV: "b2@3 b2 b4@2 a4@2, a3@15 ~, [d4,gb4,d5] [b2,eb4,gb4]",
  AW: "[e3,b3,e4,g4]@3 [d3,a3,d4,gb4] [c3,g3,c4,e4]@4", // Em D C
  AX: "d3@2 ~ g4 [d2,d3]!4, g3 ~, [c4,d4]@3 ~ [c4,e4,g4]@2 [c4,d4,gb4]@2, ~ d3 ~@2", // D Csus2 C D7
  AY: "e2@3 e2 [e2,ab3,b3,e4]@4, b2@15 ~, [ab3,b3,e4] ~", // E
  AZ: "[e2,a3]@6 [e2,e4,e5]@2 [eb4,eb5]@3 [b3,b4]@3 [a3,a4]@2, db3@15 ~, ~ e2", BA: "e2@3 e2 e2@4, [b2,b3,ab4,b4]@15 ~",
  BB: "[b1,b2]@3 [b1,b2] e3@2 e2@2, [a3,d4,a4] [ab3,d4,ab4]", // B D5 Abdim
  BC: "[a2,ab4]@3 a2 [a2,ab3,db4]@2 [db3,ab3,eb4]@2, [ab3,db4] ~, ~@3 e4@3 ~@2", // Amaj7 Dbsus2 Db5
  BD: "[gb1,gb2,ab3,db4] [b1,b2,a3,db4,e4]", BE: "[e2,e3] gb3 ab3 b3 ab5 a5 gb5 ab5, ~@2 e4 [eb3,b3]",
  BF: "e5@2 ~ db3 db3@2 ~ b4, ab3@15 ~, e4@11 ~@5, db3@3 ~@3 [b2,eb4]@2, ~@4 ab4@9 ~@3", // B
  BG: "a2@3 a2 [a2,db4]@2 [ab2,b3,e4]@2, e3@15 ~, [e4,db5] ~", BH: "gb2 b2, [a3,db4,e4]@15 ~",
  BI: "e2@3 e2 ab3 b3 eb4 e4, b2@15 ~, [ab3,b3,e4] e2", // E
  BJ: "[e2,a3]@6 [e2,e5,e6]@2 [eb5,eb6]@3 [b4,b5]@3 [gb4,gb5]@2, db3@15 ~, ~ e2", // A5 E Eb B Gb
  BK: "e2@3 e2 ab3 b3 eb4 e4, b2@15 ~, [ab4,ab5] e2", // Ab
  BL: "[e2,db3,a3,gb4]@6 [a3,e5,e6]@2 [db4,eb5,eb6]@3 ~@3 [a4,a5]@2, ~@11 [b4,b5]@3 ~@2, ~@3 [b3,eb4]", // Gbm7 A5 Dbsus2 A B
  BM: "[e3,ab3,e4] e3 ab3 b3 e3@2 eb5 e5, [b4,b5]@11 ~@5", // E B
  BN: "gb5 ab5 e5 eb5 e5 gb5 [db3,b3,gb4,eb5]@2, [bb3,db4,e4] [a3,c4,gb4] [ab3,b3,e4] ~", // B Bbdim Gbdim E
  BO: "[[db3,f4,d5]@4 [gb2,a3]@4 db3@2 gb3@2 db4@2 gb4@2 e4@2 [b2,a3,eb4,ab4]@2 gb4 ~ b2@2 e3@2 ab3@2 b3@2 gb4@2 ab4@2 b4@2 ab5@15 ~ e2 ~@11, ~@2 [e4,db5]@4 gb2@3 ~ e2@15 ~@7, ~@20 ab4@5 ~@11 gb5 ~@27]/4", // Db Gbm Abm Dbm
})).s("gm_piano").gain(0.3)

stack(violin, piano)

More by Alan Menken