Strudelify

Joseph and the Amazing Technicolor Dreamcoat: Close Every Door

Broadway

KeyA♭ majorTempo104 bpm
0:00/0:00
// Joseph and the Amazing Technicolor Dreamcoat: Close Every Door — Broadway
// 104 bpm, 3/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(104/3)

// 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 · "Piano Lead"
const piano = note("<A@4 B C ~@103>".pickRestart({
  A: "[[f3,ab3,c4,f4] [e3,b3,e4] [f3,c4,f4] [e3,b3,e4], ab4]/4", B: "~@5 b2, [f3,ab3,c4,f4,ab4]", C: "bb3",
})).s("gm_piano").gain(0.2)

// chords · piano · "Piano Lead"
const piano_2 = note(`<
  ~@6 A B C D@2 E F G H I J@2 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 AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BJ BL BM BN BO BP BQ BR BS BT BU BV BW BX BY O P BZ CA CB CC CD
  CE@2 CF@8 CG@4 CH@2
>`.pickRestart({
  A: "c4@2 ~@17 b2@4 ~, [f3,ab3,f4,ab4]", B: "c3 ~@7 c3@4, [db4,e4,g4]", C: "f3@4 ~ eb3, [c4,f4,ab4], ~@2 f3",
  D: "[db3@16 db3@7 ~@16 g2@7 ~@2, [c4,f4,ab4]@23 bb2@23 ~@2, ~@24 [db4,f4,bb4]@23 ~]/2", // Fm Bbm
  E: "~@20 db4@3 ~, [c3,g4]@23 ~, e4@16 e4@7 ~, ~@8 c4@15 ~, ~@3 db4@2 ~", F: "f3@5 f3, [c4,f4,ab4]",
  G: "~@5 db4, [c3,e4,g4]@23 ~, c4@16 c4@7 ~, ~@3 db4@2 ~", H: "~@5 b2, [f3,c4,f4,ab4]",
  I: "~@20 db4@3 ~, [c3,c4,g4]@23 ~, e4@16 e4@7 ~, ~@3 db4@2 ~", // C5
  J: "[f4@16 [eb3,f4,c5]@4 db5@2 ~@18 [db3,ab3,f4,db5]@7 ~, [f3,c4,ab4]@22 eb5@25 ~, ~@24 [c4,ab4,f5]@23 ~, ~@3 db3@2 ~, ~@32 bb3@15 ~]/2", // F7 Db Fm
  K: "~@16 [g2,b3,f4,db5]@7 ~, [bb2,g3,db4,bb4]@23 ~, ~@8 [ab3,c5]@15 ~", // G7 Gdim Ab
  L: "~@17 c5@3 c5@4, bb3, [c3,c5]@2 c3, e4 [g3,e4]@2, ~ [ab3,f4]@5", // C Db
  M: "~@2 [ab3,c5], [ab2,c4,gb4,ab4]@23 ~, ~@8 [eb3,bb4]@15 ~", // Ab Ab7 Eb5
  N: "~@16 [f4,ab4]@7 ~, [db2,db5]@23 ~, f4@2 ~, ~@8 ab3@15 ~", // Fm Db
  O: "~@5 eb3, [eb2,g4], eb4@2 [g3,eb4,bb4], ~ [f3,ab4]@2", P: "eb4@2 ~@3 ab2, [c4,c5], ab2@5 ~, ~ eb4@2, ~@2 ab4",
  Q: "e4@2 ~@3 gb2, [bb3,bb4], gb2@5 ~, ~ e4@2, ~@2 db4", // Bb
  R: "~@5 f2, [c3,ab3]@23 ~, f2@19 ~@5, f4@16 f4@7 ~, ~@8 ab4@15 ~", // Fm
  S: "~@5 db2, [f3,ab3,db4], db2@5 ~, ~ [ab2,f4]@2, ~@2 ab4", // Db
  T: "~@16 e3@7 ~, [c2,e4,g4]@23 ~, ~@7 g2@16 ~, ~@8 c4@15 ~", // C
  U: "[f4,ab4]@4 [f4,ab4]@7 [f4,ab4]@5 [f4,ab4]@7 ~, [f3,c4]@23 ~", // Fm F5
  V: "[g4,bb4] ~@4 db4, c3, ~ [g4,bb4]@3 [c4,g4,bb4]@2, ~@3 db4@2 ~", // Gm C7
  W: "[f4,ab4] [f4,ab4]@2 [f4,ab4] ~ b2, f2, ~@2 [f4,ab4]", // Fm
  X: "[e4,bb4] ~@4 db4, c3, ~@4 [e4,bb4]@12 [e4,bb4]@7 ~, ~@3 db4@2 ~", // Edim
  Y: "~@2 [eb3,f4,ab4,f5], [f2,c3,ab3,c4], ~ f4@3 ~@2, ~ ab4 ~, ~ c5", // Fm7 Fm
  Z: "a4 ~@4 [c5,eb5], db3@12 a4@11 ~, c5@8 g4@15 ~, ~@4 gb4@19 ~, ~@4 a4@4 bb4@4 c5@4 [db3,bb4,db5]@7 ~", // Cm Gb
  AA: "g3@16 [g3,db5]@7 ~, [db4,f4,bb4,f5]@23 ~", // Gdim Bbm
  AB: "~@11 g5, [g3,e4]@5 [bb3,e5], g4@16 [c4,g4]@7 ~, c3@12 c3@11 ~, ~@8 c5@10 c5@5 ~", // C Bbdim C5
  AC: "ab3@16 [ab3,bb4,gb5]@7 ~, [eb4,c5,ab5]@23 ~", // Ebm Ab
  AD: "~@15 [f5,db6]@8 ~, [db3,ab3,ab4]@23 ~, f5@5 ~@3, ~@8 [db5,ab5]@15 ~", // Db Db5
  AE: "~@16 [eb3,db5]@7 ~, [eb5,g5,bb5], eb3@2 ~, ~ bb3@5, ~@8 g4@15 ~", // Eb7 Eb
  AF: "eb5@2 ~@3 eb4, [ab2,c6], c5!2, ~ eb5@2, ~@2 ab4 eb4 [c4,ab4]@2", AG: "[gb2,db3,e4]@23 ~, bb3 ~@11",
  AH: "c3@16 [c3,f3,c4]@7 ~, [f2,ab3,f4]@23 ~", AI: "[bb2,f3,db4]@8 [g2,b3,d4]@8 [c3,bb3,e4]@7 ~, ~@8 f3 ~@15",
  AJ: "~@20 bb4@3 ~, [f2,ab3,f4]@16 [c3,c5]@7 ~, ~@4 db4@19 ~, ~@8 c4@15 ~, ~@12 db5@11 ~", // Fm C
  AK: "~@5 bb3, [f2,c4]@16 [ab3,f4,ab4,c5,f5]@7 ~, [f4,c5]@8 ab4@4 g3@11 ~, ab4@8 [f3,ab5]@15 ~, ~@4 c3@19 ~", // F5 Fm F5 Fm
  AL: "~@2 [e3,bb3,c4,e4,g4,c5], [bb4,e5,g5], [c4,g4]@2 ~, ~@8 [c2,db4,db5]@15 ~, ~@12 g2@11 ~", // C7 Edim C5 Dbmaj7
  AM: "c4 ~@19 bb3@4, f2@16 [ab3,f4,ab4,c5,f5]@7 ~, [f4,c5]@8 ab4@4 g3@11 ~, ab4@8 [f3,ab5]@15 ~, ~@4 c3@19 ~", // Fm F5 Fm
  AN: "e5 ~@7 [e3,bb3,c4,e4,g4,c5]@4, [bb4,g5]@23 ~, [c4,g4]@2 ~, ~@8 [c2,db4,db5]@15 ~, ~@12 g2@11 ~", // C7 Eb C5 Dbmaj7
  AO: "~@5 eb3, [f2,c4]@2 [f3,ab4,c5,f5,ab5], [ab4,c5]@2 f5 g3@3, f4 [ab3,f4]@2, ~ c3@5", // F5 Fm Ab Db
  AP: "~@2 [db5,ab5]@2 ~ c2, [db3,c5,c6], f5@2 [db2,ab4,db5,f5,ab5], ab5 [f4,bb4,bb5]@2, ~ ab3@5", // Db5 Dbmaj7 Db Bb5
  AQ: "[db5,f5]@8 [db5,f5]@7 ~ [f4,bb4,db5,f5]@7 ~, g5@23 ~, bb1@15 bb1@8 ~, g4 ~@3 [db3,bb3,ab4,ab5]@8", // Db Bbm Bbm7
  AR: "~@20 db4@3 ~, [c2,g4,c5,e5,g5]@23 ~, ~@4 g2@19 ~, ~ [e3,c4]@2, ~@12 db4@4 e4@7 ~", // C
  AS: "ab4@2 ~ f2 [f2,f4,ab4,c5,f5]@2, [f4,c5]@2 ~, f2 ~, c4 ~@7 ab5@15 ~, ~ ab4 ~", // Fm F5
  AT: "~@3 c3!3, [bb4,e5,g5], g4@2 [c4,e4,g4,c5], c3@11 ~@13, ~ [db4,db5]@2", // Edim C Db
  AU: "ab4@2 ~ f3 ~ db3, c4@23 ~, [f4,c5]@16 [f3,f4,ab4,c5,f5]@7 ~, f3 ab4 ~, ~@8 ab5@15 ~", // F5 Fm
  AV: "~@16 [c3,c4,e4,g4,c5]@7 ~, [bb4,e5,g5]@23 ~, [c3,g4]@2 ~, ~@8 [db4,db5]@15 ~", // C Edim C5 Db
  AW: "f4@2 f5@2 ~ eb3, c4, [f3,ab4,c5]@2 [f3,ab4,c5,f5,ab5], ~ f4@2", // Fm
  AX: "[f5,ab5]@2 [f5,ab5]@3 [ab4,db5,f5,ab5], [db3,c5,c6], ~ [bb4,bb5]@2", // Fm Db Dbmaj7 Bb
  AY: "[db5,f5]!2 [bb2,bb4,db5,f5], [g4,g5]@23 ~, bb2@2 ~, ~@8 [ab4,ab5]@15 ~", // Db Bbm G Ab
  AZ: "[c3,c5]@4 c5 [bb2,c5], [e5,g5,c6]@23 ~, ~@16 c3@7 ~", // C Bbsus2 C
  BA: "~ bb4 [ab2,eb4,gb4,bb4,eb5], [c4,ab4,c5], ab2@2 ~, ~ eb3@7, ~ [ab3,db4,db5]@2", // Ebm Fm Db5
  BB: "~@5 c5, f5, [db2,f4,ab4,db5]@2 [db2,f4,ab4,db5], ~ ab2@5, ~@8 f3@15 ~", // Db
  BC: "~@5 [eb2,eb4], g4, eb2@2 [bb4,db5], bb4@3 eb4@2 ~, ~ eb4 [eb3,ab4,c5]@4", // Eb Bbm Ab
  BD: "~@5 eb3, [ab2,c5,eb5], ~ ab4@3 [ab3,ab4]@2, ~ eb4@2, ~ c4", // Ab
  BE: "bb4@3 ~@17 gb2@4, gb2@5 ~, [bb3,e4] [bb3,db4,e4,ab4]@2, ~@4 db3@19 ~, ~@16 bb4@7 ~", // Bbdim Bbm7b5
  BF: "~@5 f3, [f2,c5], ab4 ab4@2, ~ c4@2 c4@3, ~ f4 [ab3,f4]", // F5 Db
  BG: "[db3,b3,ab4] ~ [f3,ab3,b3,f4], ~ [db2,db3,g3,g4]@2", // Db7 Fdim Dbdim
  BH: "~@5 g2, [c4,e4,g4,c5]@2 ab2, ~ c2@23, ~ g2@2 bb2@3, ~ c3@2", // C
  BI: "~@5 f2, c4@23 ~, f2@5 ~, ~@4 f4@8 f4@11 ~, ~ [ab4,c5]!2", BJ: "~@5 c2, c4, c2@5 ~, ~ g4@2 g4@3, ~ [e4,c5]!2",
  BK: "~@5 f2, c4@23 ~, f2@5 ~, ~@4 f4@8 f4@11 ~, ~@8 [ab4,c5]@8 [ab4,c5]@7 ~", // Ab
  BL: "~@5 eb2, [f2,c4], ~ f4@2 f4@3, ~ [ab4,c5]!2", BM: "~@5 c2, [db2,c4], ~ f4@2 f4@3, ~ [db4,bb4]@2, ~@2 ab4",
  BN: "~@5 bb1, db4@23 ~, bb1@5 ~, ~@4 f4@8 f4@11 ~, ~@8 [g4,bb4]@8 [g4,bb4]@7 ~", // Gm
  BO: "~@20 db4@3 ~, [c2,g4,c5]@23 ~, e4@16 e4@7 ~, ~@8 c4@15 ~, ~@3 db4@2 ~", BP: "f3@19 f3@4 ~, [c4,f4,ab4]",
  BQ: "~@5 db4, [c3,e4,g4], c4@2 c4, ~@3 db4@2 ~", BR: "~@19 b2@4 ~, [f3,c4,f4,ab4]@23 ~",
  BS: "~@20 db4@3 ~, [c3,c4,g4], e4@2 e4, ~@3 db4@2 ~", BT: "[f4,ab4]@16 [eb3,f4,ab4,c5]@4 ~ eb5 ~@2, [f3,c4]@10 db5 ~",
  BU: "~@16 [db3,ab3,f4,db5]@7 ~, [c4,ab4,f5]@23 ~, db3@2 ~, ~@8 bb3@15 ~", // Db Fm
  BV: "~@2 [g2,b3,f4,db5], [bb2,g3,db4,bb4]@23 ~, ~@8 ab3@15 ~", // G7 Gdim
  BW: "~@4 c5!2, bb3@23 ~, [c3,c5]@16 c3@7 ~, e4@8 [g3,e4]@15 ~, ~@4 [ab3,f4]@19 ~", // C Db
  BX: "~@16 [ab3,c5]@7 ~, [ab2,c4,gb4,ab4]@23 ~, ~@8 [eb3,bb4]@15 ~", BY: "~@2 [f4,ab4], [db2,db5], f4@2 ~, ~ ab3@2",
  BZ: "e4@2 ~@3 gb2, [bb3,bb4]@23 ~, gb2@19 ~@5, ~@8 e4@15 ~, ~@2 db4", // Bb
  CA: "~@5 f2, [c3,ab3,f4], f2@5 ~, ~@8 ab4@15 ~, ~@2 c4", // Fm
  CB: "~@19 db2@4 ~, [f3,ab3,db4]@23 ~, db2@19 ~@5, ~@8 [ab2,f4]@15 ~, ~@16 ab4@7 ~", // Db
  CC: "~@2 e3, [c2,e4,g4], ~ [g2,c4]@2", CD: "[f4,ab4]@4 [f4,ab4]@8 [f4,ab4]@5 [f4,ab4]@7, f3, c4 ~@11",
  CE: "[~ [g4,bb4]@4 ~@16 db4@4 [f4,ab4]@4 ~ [f4,ab4]@7 [f4,ab4]@5 [f4,ab4]@4 b2@2, ~ c3@25 ~@22, ~@5 [g4,bb4]@12 bb4@31, ~@13 db4@8 ~@27, ~@17 [c4,g4]@8 f2@23]/2", // Gm Fm Gm C5
  CF: "[~@2 [e4,bb4]@4 ~@16 db4@4 ~@17 [eb3,f4,ab4,f5]@8 ~ a4@4 ~@16 [c5,eb5]@4 g3@16 ~ [g3,db5]@6 ~@10 c5@8 [c4,e4,c5]@8 ~@17 [ab2,eb4,gb4,ab4,eb5]@8 ~@9 [f4,ab4]@8 ~@4 c5@4 eb4@8 [eb4,ab4,c5]@9, ~@2 c3@24 ~ [f2,c3,ab3,c4]@24 ~ db3@12 c5@4 [bb4,d5]@8 bb4@58 bb4@41 ~@17, ~@6 [e4,bb4]@13 bb4@37 a4@4 g4@16 ~@25 e4@16 ~@9 [c4,c5]@24 [f4,ab4]@8 ~@34, ~@14 db4@8 ~@8 f4@9 c5@12 ~ c5@8 bb4@4 a4@12 ~@58 [db4,db5]@17 f5@24 ~@17, ~@19 [c4,e4]@7 ~@9 ab4@8 ~@13 gb4@20 [db4,f4,f5]@23 ~@2 [c3,g3,g4]@24 ~ [ab2,ab4]@16 ~@8 [db2,db5]@16 ~ [db2,f4,ab4,db5]@8 [eb2,g4,bb4]@17]/8", // Edim Fm7 Cm Gdim C Ab7 Fm Ab …
  CG: "[[eb2,eb4,db5]@8 ~@16 [c4,eb4,ab4]@8 ~ e4@8 ~@8 db3@7 ~@18 c3@8 [db3,ab3,db4,f4]@8 [bb2,g3,db4,f4]@6, bb4@33 ~@8 [db4,e4,ab4]@16 c5@24 ~@15, ~@8 [ab2,c5,eb5]@24 ~@29 ab4@20 ~@15, ~@8 [eb4,ab4]@12 ab3@12 ~ [bb3,bb4]@24 c4@8 ~ [ab3,c4,f4]@16 ~@14, ~@16 eb3@16 ~ db3@16 ~@8 c3@16 ~@23]/4", // Eb7 Ab Db Gm7b5 Dbm Ab Ab5 Bb …
  CH: "[~@2 [c3,g3,bb3,e4]@7 ~@2 [f2,ab3,c4,f4]@25 ~@12]/2", // C7 Fm
})).s("gm_piano").gain(0.36)

stack(piano, piano_2)

More by Broadway