Strudelify

high school musical - breaking free

JAMIE HOUSTON

KeyE♭ majorTempo110 bpm
0:00/0:00
// high school musical - breaking free — JAMIE HOUSTON
// 110 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3948611; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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.

// other · violin · "Violin I"
const violin = note(`<
  A B C@2 ~@4 D@2 E@2 ~@4 F@2 G ~ H@2 I@2 J ~ K@3 L M N O@2 P@4 Q ~ R@2 S T J U V@4 W X J U V@4 W Y Z@2 AA@2 Z@2 AB@2 AC
  ~ AD@4 AE@2 AF AG AH@4 AI AJ AK@2 AL AM AN AO
>`.pickRestart({
  A: "c5@3 d5@3 c5@2", B: "g5@3 c5@5", C: "eb4/2", D: "[~@5 g5 f5 f5@2 g5 f5@3 f5!3]/2", E: "[eb5 eb5@3 ~@3 g4@9]/2",
  F: "[~ c5!2 d5 eb5@2 f5 g5@3 f5 f5@3 ~ c5]/2", G: "c5!2 bb4 bb4@3 ~@2", H: "[c5@2 d5 eb5@3 d5 c5@3 d5 eb5@3 ~@2]/2",
  I: "[c5@3 g4@2 g4 bb4@4 ~@5 bb4]/2", J: "bb5@3 g5@3 ~@2",
  K: "[eb5!3 c5 bb4 bb4@2 eb5@2 eb5!2 c5 bb4 bb4@2 eb5@3 ~@6]/3", L: "~@5 c5!3", M: "bb4 bb4@3 ~@4",
  N: "~ ab4 [eb4,g4]@3 [eb4,ab4] [eb4,g4]@2", O: "[[c4,eb4]@2 ~@5 c4@3 ~ c4@2 ~@3]/2",
  P: "[[eb4,ab4]@2 ~@2 eb4@2 ~ [eb4,bb4]@2 ~@2 bb3 ~ bb3@2 eb4@2 bb4 g5 bb5 gb5 f5 eb5 f5@2 gb5 ~ bb5 ab5!3 gb5]/4", // Ab5 Eb5
  Q: "f5 eb5@3 ~@4", R: "[c5@2 d5 eb5@3 d5 c5@3 d5 eb5@3 ~ bb4]/2", S: "c5@2 d5 eb5@2 c5 g5@2",
  T: "~ f5 eb5@2 ~@10 bb4@2", U: "~@7 c5",
  V: "[eb5!3 c5 bb4 bb4@2 eb5@2 eb5!2 c5 bb4 bb4@2 eb5@3 eb4@3 eb4 ~ f4@2 c4@3 ~ c5!3]/4", W: "bb4 bb4@3 ~@3 f4",
  X: "eb4 eb4@2 [eb4,g4]@2 [eb4,ab4] [eb4,g4]@2", Y: "eb4 ab4 g4 f4@2 eb4 f4@2",
  Z: "[~ eb4!2 eb4@2 eb4!2 eb4@2 bb4!2 g4 ~ bb4 g4 c5]/2", AA: "[~ bb4!2 gb4 f4!2 eb4 f5@2 eb5@2 c5@2 c5@3]/2",
  AB: "[~@2 bb5@2 bb5@2 g5@2 ~@2 bb4@2 bb4@2 f5@8 g5 f5 eb5@8]/2", AC: "c5@3 a4@2 ~@3",
  AD: "[f5!3 d5 c5 c5@2 f5@2 f5!2 d5 c5 c5@2 f5@3 ~@3 e5 f5 g5@2 d5@3 ~ d4!2 bb3]/4",
  AE: "[c4 bb3@2 g5 f5 f5@5 f4 f4@2 f4@2 c4]/2", AF: "c5@3 a4@3 ~@2", AG: "~@7 d5",
  AH: "[f5!3 d5 c5@2 c5 f5@2 f5!2 d5 c5 c5@2 f5@3 ~@3 f5 d5 e5@2 f5@3 ~ g4!3]/4", AI: "f4 f4@3 ~@4",
  AJ: "~ f4@2 f4@3 f4@2", AK: "[~@2 a4@2 d5@2 e5@2 f5@4 d5@2 d5@6 b4@2 b4@3 a4 g4@2 ~@4]/2",
  AL: "bb4@2 g4 a4 bb4@2 d5@2", AM: "c5 d5 c5 c5@2 c5@2 ~", AN: "f5", AO: "bb5",
})).s("gm_violin").gain(0.3)

// other · viola
const viola = note(`<
  A B C@2 D E F@4 G@2 H@2 I@2 J@2 K L M N O@2 P@2 Q@4 R S T@2 U@4 V W X@2 Y@2 P@2 Z@4 R AA P@2 Z@4 R AB AC@4 AD@4 AE@2
  AF@4 AG@2 AH@2 AI@4 AJ AK AL@2 AM AN AO AP
>`.pickRestart({
  A: "~ g3 c4@6", B: "~ c3 g3 a3@5", C: "eb3/2", D: "[c4,eb4]", E: "[c4,f4]",
  F: "[c4 ~@2 c4 ~@3 [bb3,eb4]@2 ~@2 bb3 ~@3 [c4,eb4]@3 c4 eb4@2 g4 f4 [a3,c4]@9]/4", // Eb5 Cm Am
  G: "[~@2 eb3 bb3@2 ab3 [eb3,g3]@10]/2", H: "[c4@8 ~@6 [a3,c4]@6 ~@2 [a3,c4]@3 ~@7]/2",
  I: "[[c4,eb4,ab4]@4 ~@3 [bb3,eb4]@3 ~ bb3 ~@4]/2", J: "[~@7 [a3,c4]@3 ~ [a3,c4]@4 ~]/2", K: "~@3 bb3",
  L: "[bb3,g4]@2 eb4@2 [bb3,f4]@2 c4 d4", M: "c4@2 ~ bb3@3 ~@2", N: "~@3 c4@5", O: "[~@3 g3@2 ~ bb3@6 ~@4]/2",
  P: "[[c4,eb4]@3 [c4,eb4]@4 [c4,f4]@4 [a3,c4]@5]/2", // Cm F5 Am
  Q: "[[c4,g4] ab4 g4 [c4,f4] eb4 [bb3,eb4]@2 bb3@2 ab4 g4 [bb3,f4] eb4 eb4@2 c4@3 [c4,eb4]@3 [c4,eb4] g4 [c4,f4]@2 [a3,c4]@3 ~@4]/4", // C5 F5 Eb5 Bb5 Cm F5 Am
  R: "~@7 ab3", S: "~ ab3 ab3@3 ab3 ab3@2", T: "[g3@2 ~@5 a3@3 ~ a3@2 ~@3]/2",
  U: "[[ab3,c4]@2 ~@2 c4@2 ~ eb4@2 ~@2 c4 ~ eb4@2 c4@2 ~@6 a3@2 ~@2 c4 f4 ~@3]/4", V: "~@3 f4 eb4 [ab3,eb4]@2 bb3",
  W: "bb3 f4@2 eb4 bb3@2 bb3@2", X: "[[ab3,c4]@2 d4 [ab3,c4]@3 d4 [a3,c4]@3 d4 [a3,c4]@3 f3 bb3]/2",
  Y: "[[ab3,c4]@2 d4 [ab3,c4]@2 c4 eb4@3 [c4,eb4,bb4] [c4,eb4,bb4]@2 [c4,eb4]!2 ~@2]/2", // Ab Cm7 Cm
  Z: "[[c4,g4] ab4 g4 [c4,f4] eb4 [bb3,eb4]@2 bb3@2 ab4 g4 [bb3,f4] eb4 eb4@2 c4@3 c4@3 c4 ~ c4@2 a3@3 ~@4]/4", // C5 F5 Eb5 Bb5
  AA: "~ ab3@2 ab3@2 ab3 ab3@2", AB: "eb4 [bb3,eb4] g3 bb3@2 eb4 bb3@2",
  AC: "[~ c4!2 c4@2 c4!2 c4@2 c4!2 c4@2 c4 g4 c4@2 c4!3 f4 c4 eb4 c4@2 c4@2 c4 f4 c4@2 g4]/4",
  AD: "[~ c4!2 c4@2 c4!2 c4@2 c4!2 c4@2 c4 g4 c4@2 [c4,eb4]!2 [c4,eb4]@2 f4 eb4 [c4,f4]@2 [c4,eb4] [c4,eb4]@2 [c4,eb4]@2 [c4,eb4]@2]/4", // Cm F5 Cm
  AE: "[[d4,f4]@3 ~@2 [d4,f4] ~ [b3,d4]@4 [b3,d4]@5]/2", // Dm Bm
  AF: "[d4 ~@2 d4 f4 [c4,f4]@2 [c4,f4]@2 [c4,f4]!2 [c4,g4] f4 [c4,f4]@2 d4@3 [d4,f4]@3 e4 f4 [d4,g4]@2 [b3,d4]@3 ~ d3!2 f3]/4", // F5 C5 F5 Dm G5 Bm
  AG: "[c3 f3@2 c4@2 [c4,f4]@5 d4 c4@2 d4@2 ~]/2", AH: "[[d4,f4]@6 [d4,f4]@6 ~@2 [b3,d4]@8 d4@4 f4 d4@3 ~@2]/2",
  AI: "[d4 bb4 a4 g4 f4@2 c4 c4@2 c4 f4 c4 f4 c4@2 d4@3 d4@3 d4 f4 b3@2 b3@3 ~ d4!3]/4", AJ: "f4 c4@2 c4@3 f4 c4",
  AK: "~ c4@2 c4@3 c4@2", AL: "[~ a3 d4 e4 f4@2 d4 d4@3 g4 b3@3 d4@2]/2", AM: "c4@2 d4 c4 d4@2 d4@2",
  AN: "f4 bb4 a4 c4 f4 c4@2 ~", AO: "[f3,a3]@2 a3 bb3 [a3,f4] c4 [d4,bb4] f4", AP: "bb4",
})).s("gm_viola").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  A B C@2 D E F G A B C@2 A B H I J B F K L M N@2 O P Q R O P Q S T U V W T X Q Y Q Z Q AA O P Q R O P Q AB O P Q R O P
  Q R AC AD AC@3 AD AC AE AF@2 AG AH AI AJ AK AL AI AJ AG AH AI AJ AG@2 AM AN AO AP AQ@2
>`.pickRestart({
  A: "c3", B: "f2", C: "ab2/2", D: "[c3,g3]", E: "[f3,a3]", F: "[ab2,eb3]", G: "[eb3,g3] [bb2,d3,f3]", H: "ab2",
  I: "eb3 [d3,f3]", J: "[c3,eb3,g3]", K: "eb2 d2", L: "~ eb3 ab3@5 ab3, ab2", M: "~ f3 a3@5 a3, a2",
  N: "[~ eb3 ab3@14, ab2]/2", O: "c2@2 c3@2 c2!2 c3@2", P: "f2@2 f3@2 f2!2 f3@2", Q: "ab2@2 ab3@2 ab2!2 ab3@2",
  R: "eb2@2 eb3@2 d2!2 d3@2", S: "ab2@2 ab3@2 ab2@2 ab3 eb3", T: "c2@2 c3 c2 c2@2 c3@2", U: "f2@2 f3 f2 f2@2 f3 f2",
  V: "ab2@2 ab3 ab2 ab2@2 ab3 ab2", W: "eb2 eb3 d2 d3", X: "f2 f3 f2 f3", Y: "eb2@2 eb3 bb2 ~ f3@3, ~ d2",
  Z: "a2@2 a3@2 a2!2 a3@2", AA: "ab2!6 ab2@2", AB: "ab2!7 eb2", AC: "ab2@2 ab3 ab2@2 ab2 ab3@2",
  AD: "a2@2 a3 a2@2 a2 a3@2", AE: "ab2 [ab2,ab3]!2 ab2 [ab2,ab3] ab2 [ab2,ab3] ab2",
  AF: "[d2@3 ~@2 d2 ~ g2@2 g2 g3@2 g2!2 g3@2]/2", AG: "bb2@2 bb3@2 bb2!2 bb3@2", AH: "f2@2 f3@2 e2!2 e3@2",
  AI: "d2@2 d3@2 d2!2 d3@2", AJ: "g2@2 g3@2 g2!2 g3@2", AK: "bb2 bb3 bb2 bb3", AL: "bb2!2 bb3@2 bb2!2 bb3@2", AM: "d2",
  AN: "~ d3 g3@6, g2", AO: "~ f3 bb3@6, bb2", AP: "~ c3 f3@2 ~ c3 g3@2, f2 e2", AQ: "[~ d3 bb3 d4 f4@12, bb2]/2",
})).s("gm_cello").gain(0.3)

stack(violin, viola, cello)