Strudelify

west side story

L. Bernstein

KeyB♭ majorTempo112 bpm
0:00/0:00
// west side story — L. Bernstein
// 112 bpm, 2/2, key A# 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 (4/4 at bar 1, 2/2 at bar 17, 2/4 at bar 53, 2/2 at bar 54) are rendered on a constant 2/2 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5902311; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · clarinet · "Clarinette en Si♭solo"
const clarinet = note("<~@37 A B C D E@2 F ~@4 G ~@3 H I@3 ~@2 J@2 K@2 L@3 M N@4 O@2 ~@15 P@6 Q@2 R@5 ~>".pickRestart({
  A: "bb3@3 c4 d4@2 bb3 c4", B: "d4 f4 bb4 d5 c5@3 g4", C: "bb4@2 f4@4 d4 e4", D: "f4@2 f4 g4 a4@2 f4 g4",
  E: "a4 d5 f5 a4 g4@4", F: "c5 g4@2 ~", G: "g4 d4 g4 d4", H: "eb4@3 f4 g4 bb4 eb5 g5",
  I: "[f5@12 c5@4 eb5@27 eb5@27 eb5@7 ~@19]/3", J: "[~@12 f5@7 bb5@20 d5@7 c5@18]/2",
  K: "[~@2 g5@7 f5@7 d5@7 bb5@7 d5@6 c5@20 ~ g5@7]/2", L: "[f5@6 d5@7 bb5@7 c6@7 d6@13 bb5@7 d6@7 c6@27 c6@14 ~]/3",
  M: "~@5 c5@7 db5@20", N: "[f4@7 eb4@20 ~ bb4@6 ab4@7 f4@7 db5@7 f5@7 eb5@13 db5@7 eb5@7 f5@13 db5@7 eb5@7 f5@12]/4",
  O: "[~ db5@7 eb5@7 f5@27 f5@7 ~@15]/2",
  P: "[~@28 e4@13 a4@27 db4@9 b3@27 gb4@9 e4@9 db4@9 a4@9 db4@9 b3@27 gb4@9 e4@7]/6",
  Q: "[~@2 db4@8 a4@9 b4@9 db5@18 a4@9 db5@9]/2", R: "[e5@18 e5@9 e5@9 a5@18 a5@18 a5@8]/5",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "Clarinette Basse solo"
const clarinet_2 = note("<~@43 A B C D E F G H I J K@3 ~@15 L@2 M@3 N O@7 P@2 ~ Q@6 R@2 S@5 ~>".pickRestart({
  A: "~@6 c3 d3", B: "eb3@2 c3 eb3 d3@2 bb2 d3", C: "c3@2 g2@4 c3 eb3", D: "d3@2 bb2 d3 c3@2 g2 c3", E: "g3 d3@3",
  F: "d3 ~@7", G: "bb2@3 c3 d3@2 bb2 c3", H: "d3 f3 bb3 d4 c4@4", I: "d3 f3 bb3 d4 c4@3 bb3", J: "g4",
  K: "[f4@12 c4@4 eb4@27 eb4@27 eb4@7 ~@19]/3", L: "[~@24 f4@13 gb4@20 ~ f4@6]/2",
  M: "[eb4@7 c4@7 db4@7 eb4@7 f4@6 eb4@7 ~@7 db4@7 c4@7 a3@6 bb3@7 c4@7 eb4@7 db4@7]/3", N: "~@6 c4@7 bb3@7 g3@7 ab3@5",
  O: "[~ bb3@7 c4@27 c4@14 ~@7 c4@7 bb3@20 d3@7 c3@20 g3@7 f3@7 d3@6 bb3@7 c4@7 d4@14 bb3@6 d4@7 f4@27 f4@14 f4@12]/7",
  P: "[~ f4@27 ~ f4@27 ~@8]/2", Q: "[~@28 e3@13 a3@27 db3@9 b2@27 gb3@9 e3@9 db3@9 a3@9 db3@9 b2@27 gb3@9 e3@7]/6",
  R: "[~@2 db3@8 a3@9 b3@9 db4@18 a3@9 db4@9]/2", S: "[e4@18 e4@9 e4@9 a4@18 a4@18 a4@8]/5",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "Clarinette en Si♭2"
const clarinet_3 = note(`<
  A B C@2 D E F@2 A B C@2 D E F@2 ~@10 G H I@2 J K H ~@2 L@4 M N O@2 P Q R S T ~ U V@2 W X@2 Y Z@3 AA@2 AB AC AD AE@2
  AF@2 AG AH AI@3 AJ@5 AK@2 AL@2 AM AN AO@4 ~@5 AP@2 AQ@6
>`.pickRestart({
  A: "bb4 ab4", B: "gb4 f4", C: "eb4/2", D: "e4", E: "f4", F: "gb4/2", G: "d5@2 a4 bb4", H: "c5@3 ~", I: "eb5", J: "d5",
  K: "c5", L: "bb3", M: "d4@2 ~@2 d4@2 ~@6 d4@3 ~ d4@2 ~@2 d4@2 ~@6 d4@3 ~",
  N: "d4@2 ~@2 d4@2 ~@6 d4@3 ~ f4@2 ~@2 f4@2 ~@6 f4@3 ~", O: "f4@2 ~@2 f4@2 ~@6 f4@3 ~ f4@2 ~@2 f4@2 ~@6 f4@3 ~",
  P: "e4 e4@2 e4@2 e4@2 e4", Q: "~ c4@2 c4 ~ bb3@2 bb3", R: "~ c4@2 c4 ~ c4@2 c4", S: "~ bb3@2 bb3 ~ bb3@2 bb3",
  T: "~ eb3@2 ~@5", U: "bb3@3 c4 d4@3 eb4", V: "f4 ab4", W: "bb4 eb5", X: "[f5@16 bb4@20 eb4@7 c4@20 ~]/2",
  Y: "a4@6 g4@7 eb4@7 bb4@7 d5@5",
  Z: "[~ eb5@14 c5@7 eb5@7 d5@27 ~@3 eb4@2 ~@2 eb4@2 ~ eb4@2 ~ eb4@2 ~@2 eb4@2 ~@5 d4@2 ~ d4@2 ~ d4@2 ~@5 d4@2 ~]/3",
  AA: "[d4@2 ~@2 d4@2 ~@5 d4@2 ~ e4@2 ~ e4@2 ~@5 e4@2 ~@2 e4@2 ~ e4@2 ~@5 e4@2 ~ d4@2 ~@2 d4@2 ~@4 d4@2 ~@2 d4@2 ~ d4@2 ~@4]/2",
  AB: "~ d4@2 ~ e4@2 ~@2 e4@2 ~@5 e4@2 ~ e4@2 ~ e4@2 ~@5 e4@2 ~@2",
  AC: "d4@2 ~ d4@2 ~@5 d4@2 ~ g4@2 ~ g4@2 ~@5 g4@2 ~@2 bb4@2 ~ bb4@2",
  AD: "~@5 bb4@2 ~ g4@2 ~@2 g4@2 ~@4 g4@2 ~@2 a4@2 ~ a4@2 ~@5",
  AE: "[a4@2 ~ a4@2 ~@2 a4@2 ~ a4@2 ~@2 a4@2 ~@4 bb4@2 ~@2 bb4@2 ~ bb4@2 ~@2 bb4@2 ~ bb4@2 ~@5 bb4@2 ~ bb4@2 ~@2 bb4@2 ~@4 f4@2 ~@2 f4@2 ~ f4@2 ~]/2",
  AF: "[~@4 f4@2 ~ g4@2 ~@2 g4@2 ~@4 g4@2 ~@2 g4@2 ~ g4@2 ~@5 g4@2 ~ f4@2 ~@2 f4@2 ~@5 f4@2 ~ f4@2 ~ f4@2 ~@5 f4@2 ~@2 eb4@2]/2",
  AG: "~ eb4@2 ~@5 eb4@2 ~ eb4@2 ~@2 eb4@2 ~@4 eb4@2 ~@2 gb4@2 ~ gb4@2 ~@2",
  AH: "~@3 gb4@2 ~ gb4@2 ~@2 gb4@2 ~@4 gb4@2 ~@2 gb4@2 ~ gb4@2 ~@5 gb4@2",
  AI: "[~ gb4@2 ~@2 gb4@2 ~@5 gb4@2 ~ f4@27 f4@27 bb4@27]/3",
  AJ: "[gb4@27 ~ gb4@27 eb4@27 e4@27 db4@27 e3@2 ~@2 e3@2 ~@4 e3@2 ~@2 e3@2 ~ e3@2 ~@2 e3@2 ~]/5",
  AK: "[e3@2 ~@5 e3@2 ~ e3@2 ~@2 e3@2 ~ e3@2 ~ e3@2 ~@9 d4@2 ~ d4@2 ~@5 d4@2 ~ d4@2 ~@2 d4@2 ~@4 d4@2 ~@2 e4@2 ~ e4@2 ~]/2",
  AL: "[~@4 e4@2 ~ e4@2 ~@2 e4@2 ~@4 e4@2 ~@2 d4@2 ~ d4@2 ~@5 d4@2 ~ g4@2 ~@2 g4@2 ~@5 g4@2 ~ bb4@2 ~ bb4@2 ~@5 bb4@2 ~@2 bb4@2]/2",
  AM: "~ bb4@2 ~@5 bb4@2 ~ f4@2 ~@2 f4@2 ~@4 f4@2 ~@2 f4@2 ~ f4@2 ~@2",
  AN: "~@3 f4@2 ~ f4@2 ~@2 f4@2 ~@4 f4@2 ~@2 f4@2 ~ f4@2 ~@5 f4@2",
  AO: "[~ f5@20 ~ f5@7 d5@6 bb4@7 d5@7 d5@7 d5@7 d5@13 d5@7 d4@27 ~@18]/4", AP: "[~@5 gb4@9 a4@9 gb4@9]/2",
  AQ: "[db5@36 d5@36 e5@36 gb5@36 a5@35 ~@13]/6",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "Clarinette en Si♭2" · soft notes
const clarinet_soft = note("<~@16 A@2 B C D E F@2 G F ~@21 H I ~@38 J@7 ~@6 K>".pickRestart({
  A: "bb4", B: "a4@3 d5", C: "c5 bb4 a4 g4 a4@3 d5", D: "bb4 g4", E: "a4", F: "d4", G: "e4", H: "~@3 eb3@2 eb3@2 eb3",
  I: "~ eb3@2 eb3@2 eb3@2 eb3", J: "[~@14 d4@27 db5@36 eb5@36 db5@36 eb5@36 db5@18 ~@21]/7", K: "~@19 a5@9 ~@4",
})).s("gm_clarinet").gain(0.05)

// other · clarinet · "Clarinette en Si♭3"
const clarinet_4 = note(`<
  ~@26 A B ~@4 C D E F G ~@15 H I J K L M@5 N@3 O@2 P@6 Q@2 R S T U@5 V W@5 ~@4 X@2 Y@2 ~@2 Z@2
>`.pickRestart({
  A: "d4", B: "e4@3 ~", C: "~@3 c4", D: "eb4 bb3@3 bb3@2 c4@2", E: "eb4@5 bb3@5 ~ c4@5 eb4@5 bb3@5 ~ c4@5",
  F: "d4 bb4@3 bb4@4", G: "bb4", H: "~@8 bb3 ~ bb3 ~@3 bb3@2",
  I: "a3@2 ~@2 a3@2 ~@6 a3@3 ~ eb4@2 ~ eb4@2 ~@5 eb4@2 ~@2 eb4@2",
  J: "~ eb4@2 ~@5 eb4@2 ~ f4@2 ~@2 f4@2 ~@4 f4@2 ~@2 f4@2 ~ f4@2 ~@2",
  K: "~@3 f4@2 ~ eb4@2 ~@2 eb4@2 ~@4 eb4@2 ~@2 eb4@2 ~ eb4@2 ~@5 eb4@2",
  L: "~ eb4@2 ~@2 eb4@2 ~@5 eb4@2 ~ eb4@2 ~ eb4@2 ~@5 eb4@2 ~@2 d4@2 ~",
  M: "[d4@2 ~@5 d4@2 ~ d4@2 ~@2 d4@2 ~ d4@2 ~ d4@2 ~@5 a3@2 ~@2 a3@2 ~ a3@2 ~ a3@2 ~@2 a3@2 ~@8 f3@27 g3@27 f3@27 g3@27 ~]/5",
  N: "[f3@13 bb3@14 a3@13 f3@14 e3@27 ab3@14 ~]/3", O: "[~@12 ab3@27 bb3@25]/2",
  P: "[~@2 ab3@27 ~ bb3@27 f4@13 eb4@14 bb3@27 a3@27 a3@27 db4@2 ~@2 db4@2 ~@5 db4@2 ~ db4@2 ~ db4@2 ~@5 db4@2 ~]/6",
  Q: "[bb3@2 ~@2 bb3@2 ~@5 bb3@2 ~ bb3@2 ~ bb3@2 ~@5 bb3@2 ~@2 bb3@2 ~ bb3@2 ~@5 bb3@2 ~ bb3@2 ~@2 bb3@2 ~@4 bb3@2 ~@2 gb3@2 ~ gb3@2 ~@4]/2",
  R: "~ gb3@2 ~ gb3@2 ~@2 gb3@2 ~@5 gb3@2 ~ ab3@2 ~ ab3@2 ~@5 ab3@2 ~@2",
  S: "ab3@2 ~ ab3@2 ~@5 ab3@2 ~ e3@2 ~ e3@2 ~@5 e3@2 ~@2 e3@2 ~ e3@2",
  T: "~@5 e3@2 ~ g3@2 ~@2 g3@2 ~@4 g3@2 ~@2 g3@2 ~ g3@2 ~@2 g3@2 ~",
  U: "[g3@2 ~@5 bb3@2 ~ bb3@2 ~@2 bb3@2 ~ bb3@2 ~ bb3@2 ~@5 c4@3 ~ f3@27 g3@27 f3@13 bb3@14 a3@14 g3@13 d4@2 ~@2 d4@2 ~@4 d4@2 ~@2 d4@2 ~ d4@2 ~@2]/5",
  V: "~@3 d4@2 ~ d4@2 ~@2 d4@2 ~@4 d4@2 ~@2 d4@2 ~ d4@2 ~@5 d4@2",
  W: "[~ d5@20 ~ d5@7 bb4@6 g4@7 bb4@7 bb4@7 bb4@7 bb4@13 bb4@7 ab3@27 ab3@27 ~@23]/5", X: "[~@14 db4@9 a3@9]/2",
  Y: "[ab4@9 ~@7]/2", Z: "[~@16 e5@35 ~@13]/2",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "Clarinette en Si♭3" · soft notes
const clarinet_soft_2 = note(`<
  ~@2 A@2 B@4 ~@2 A@2 C@2 D@2 E@2 F@2 G H I@2 J K ~@2 L@2 H@2 M ~@4 L@2 N O P@2 Q R S T U V W X@2 Y ~@35 Z@6 ~@2 AA@4 AB
>`.pickRestart({
  A: "b3/2", B: "db4/2", C: "ab3/2", D: "bb3/2", E: "d4", F: "[c4@3 f4@4 f4]/2", G: "g4 eb4", H: "f4", I: "bb3",
  J: "c4", K: "bb3 a3", L: "bb4", M: "e4@3 ~", N: "c4@2 ~@2 c4@2 ~@6 c4@3 ~ c4@2 ~@2 c4@2 ~@6 c4@3 ~",
  O: "a3@2 ~@2 a3@2 ~@6 a3@3 ~ db4@2 ~@2 db4@2 ~@6 db4@3 ~", P: "d4@2 ~@2 d4@2 ~@6 d4@3 ~ d4@2 ~@2 d4@2 ~@6 d4@3 ~",
  Q: "d4 d4@2 d4@2 d4@2 d4", R: "eb4 d4", S: "c4@2 g3@4 c4 eb4", T: "d4 c4", U: "g4 d4@3", V: "g4 d4",
  W: "bb3@2 ~@2 bb3@2 ~@6 bb3@3 ~ bb3@2 ~@2 bb3@2 ~@6 bb3@3 ~", X: "bb3@2 ~@2 bb3@2 ~@6 bb3@3 ~ c4@2 ~@2 c4@2 ~@6 c4@4",
  Y: "bb3@2 ~@2 bb3@2 ~@6 bb3@3 ~@17", Z: "[~@9 a4@36 gb4@36 a4@36 gb4@36 e4@17 a3@18 ~@4]/6",
  AA: "[~ a4@9 a3@9 a3@9 ~@4]/4", AB: "~@19 e5@9 ~@4",
})).s("gm_clarinet").gain(0.15)

// other · clarinet · "Clarinette Basse"
const clarinet_5 = note(`<
  ~@10 A@2 B C D E ~@9 F G H I J K L M N@2 O P Q R S T U@2 V W X Y Z ~@8 AA AB@2 AC AD AE AF AG AH AI AJ AK AL AM AN
  AO@2 AP@5 AQ@2 AR AS AT AU AV@5 ~@6 AW@5 ~
>`.pickRestart({
  A: "b2/2", B: "eb3 db3@2 ab2", C: "eb3@5 db3@5 ~ ab2@5 eb3@5 db3@5 ~ ab2@5", D: "eb3 db3@2 bb2",
  E: "eb3@5 db3@5 ~ bb2@5 eb3@5 db3@5 ~ bb2@5", F: "~ f3", G: "d3", H: "c3@3 c4", I: "bb3 a3@3 a3@2 c4 bb3",
  J: "a3@5 g3@5 ~ a3@5 bb3@12 a3@4", K: "a3 f3@3 f3@2 f3 g3", L: "ab3@5 g3@5 ~ f3@5 ab3@5 g3@5 ~ f3@5",
  M: "g3 c3@3 c3@2 ~@2", N: "gb2", O: "bb2 a3", P: "g3 gb3", Q: "a3 g3", R: "f3 e3", S: "f3 bb3", T: "d3 db3",
  U: "c3 b2", V: "e3", W: "bb2 ab2", X: "g2 bb2", Y: "ab2 g2", Z: "a2", AA: "~@22 c3@7 ~@3",
  AB: "[~@3 d3@20 ~ c3@27 bb3@2 ~@11]/2", AC: "~@7 bb2@2 ~@5 bb3@2 ~@16", AD: "~@2 bb2@2 ~@5 bb3@2 ~@19 bb2@2",
  AE: "~@4 bb3@2 ~@19 bb2@2 ~@5", AF: "bb3@2 ~@4 bb2@3 ~@11 a2@2 ~@10", AG: "~ g2@3 ~@11 g3@3 ~@4 a3@3 ~@4 a2@3",
  AH: "~@17 ab3@2 ~@13", AI: "~@5 ab2@2 ~@5 db4@2 ~@5 db3@3 ~@10", AJ: "db3@2 ~@5 bb3@2 ~@5 bb2@3 ~@11 bb2@2 ~@2",
  AK: "~@2 db4@2 ~@5 db3@3 ~@11 db3@2 ~@5 gb4@2", AL: "~@4 gb3@3 ~@11 gb3@2 ~@12", AM: "eb4@3 ~@10 db4@3 ~@11 c4@3 ~@2",
  AN: "~@8 c4@3 ~@4 f4@3 ~@4 f3@3 ~@7", AO: "[~@10 eb4@20 ~ eb3@6 db3@27]/2",
  AP: "[bb2@27 ~ gb2@27 eb3@27 e3@27 db3@27 c3@7 g2@7 ~@10]/5",
  AQ: "[~@3 gb2@20 ~ f2@7 bb3@2 ~@18 bb2@2 ~@5 bb3@2 ~@4]/2", AR: "~@14 bb2@2 ~@5 bb3@2 ~@5 bb2@3 ~",
  AS: "~@9 a2@2 ~@12 g2@3 ~@6", AT: "~@4 g3@3 ~@11 bb2@14", AU: "~@13 bb2@14 ~@5",
  AV: "[~ bb2@27 ~ bb2@27 d3@27 e3@27 e3@27 ~@23]/5", AW: "[db3@36 b2@36 a2@18 g3@18 gb3@13 d3@4 ~ b2@18 ~@16]/5",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "Clarinette Basse" · soft notes
const clarinet_soft_3 = note("<~@16 A B C D ~ E A B F G ~@22 H I J@2 K L@3 M ~@44>".pickRestart({
  A: "e3 f3@3 f3@3 bb2", B: "e3@5 f3@5 ~ g3@5 e3@5 f3@5 ~ g3@5", C: "e3 f3@3 f3@2 ~@2", D: "bb2@2 a2 ~", E: "bb2",
  F: "a3 f3@3 f3@4", G: "g3 ~", H: "f2", I: "a3@2 ~@2 a3@2 ~@6 a3@3 ~ a3@2 ~@2 a3@2 ~@6 a3@3 ~",
  J: "a3@2 ~@2 a3@2 ~@6 a3@3 ~ ab3@2 ~@2 ab3@2 ~@6 ab3@3 ~", K: "g3@2 ~@2 g3@2 ~@6 g3@3 ~ g3@2 ~@2 g3@2 ~@6 g3@3 ~",
  L: "[f3@2 ~@2 f3@2 ~@6 f3@3 ~ bb2@27 bb2@7 ~@7 bb2@13 bb2@7 eb3@14 d3@5]/3", M: "~ c3@20 ~@11",
})).s("gm_clarinet").gain(0.05)

stack(clarinet, clarinet_2, clarinet_3, clarinet_soft, clarinet_4, clarinet_soft_2, clarinet_5, clarinet_soft_3)

More by L. Bernstein