Strudelify

dirty dancing - ive had the time of my life

Misc Soundtrack

KeyE majorTempo120 bpm
0:00/0:00
// dirty dancing - ive had the time of my life — Misc Soundtrack
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5853420; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 120 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.

// other · piano
const piano = note(`<
  A B@2 C D B@2 C E B@2 C F ~@4 G@4 H@2 I J K L M J N O P Q ~@2 R@2 ~@2 S T U@2 V@2 W X Y Z AA@3 ~@4 J AB AC@2 ~@3 AD AE
  AF AG ~@2 AH AI S T U@2 V@2 W X Y AJ AK AL AM AN AO X Y Z AP ~ AQ@2 AR AS AT AU AV AW AX AU AY AZ BA BB BC BD@2 BE@2
  BF BG AP AL V@2 W X Y AJ
>`.pickRestart({
  A: "[g#3,b3,e4]", B: "[b3,e4] ~ f#4 b3!2 ~ f#4 b3, g#4, ~ e4@4 e4@3", C: "[b3,d4,f#4,a4] ~@3 e4 f#4 b3!2",
  D: "a3@5 a3@3, [d4,e4,f#4]", E: "[d4,e4,f#4,a4]@5 a4 e4 d4", F: "~@3 e5, [a3,d4,f#4]",
  G: "[~@16 d#4@16 ~@15 a4 g#4@3 ~@3 b3@2 b3@8, d4@3 ~, [f#3,a3] g#3, ~@16 b3@11 ~@5, ~@32 e4@19 e4@13]/4", // F#m
  H: "[a3,f#4]/2", I: "[b3,e4,g#4]", J: "~@6 b4 c#5", K: "d5@2 c#5@2 d5 c#5@2 d5@2 c#5 b4@3 b4@2 ~",
  L: "d5@2 c#5@2 d5@2 c#5@2 d5@4 c#5 b4@2 a4", M: "b4 g#4@2 ~@5", N: "d5@2 c#5@2 d5 c#5@2 d5 d5@4 b4@2 c#5@2",
  O: "d5@2 c#5 d5@2 c#5@2 d5 d5@3 c#5@4 ~", P: "e5 e5@2 ~", Q: "~@7 g#5@2 f#5@2 e5@3 c#5@2",
  R: "[d5@2 d5@2 d5@2 c5 c5@2 b4@3 ~@4]/2", S: "~@8 d#5@3 d#5@2 g#5@3", T: "b4 ~ a4 c#5",
  U: "[~@6 b4@8 b4@6 ~@2 g#4@2 g#4@3 a4@2 b4@3]/2",
  V: "[c#5 b4 a4@6 ~@2 b3@2 b3@2 c#5@6 c#5@2 b4@2 a4@2 a4@2 g#4@2 a4@2]/2", W: "g#4@2 ~@3 e4 a4@2",
  X: "g#4@2 ~@3 a4 b4 c#5", Y: "~ b4 a4@6 ~@2 b3@2 b3@4", Z: "c#5!4 b4 a4@3",
  AA: "[g#4@24 ~@4 f#4@3 c#4@3 e4@2 ~@12]/3", AB: "~@2 d5@2 d5@2 c#5 d5@3 b4@2 b4@2 c#5@2",
  AC: "[d5@6 d5@2 d5@4 f#5@3 e5@2 d5 b4@2 ~@2 f#4@2 e4@2 ~@6]/2", AD: "~@6 g#5 c#5",
  AE: "e5@4 ~@4 g#5@2 f#5 e5@3 c#5@2", AF: "~@4 c#5@3 f#5", AG: "e5@6 c#5@3 b4 a4@2 ~@4", AH: "~@2 c#5!2 c#5@2 f#5@2",
  AI: "e5@6 c#5@2 c#5 b4 a4@2 ~@4", AJ: "c#5!4 b4 a4 g#4 a4", AK: "g#4 ~", AL: "g#4@6 g#4@2 g#4@3 a4@2 b4@3",
  AM: "c#5 b4 a4@6 ~@2 b3@2 b3@4", AN: "c#5@2 c#5 b4 a4!2 g#4 a4", AO: "g#4@4 ~ e4 a4@2", AP: "g#4",
  AQ: "e2@7 e3@2 e3 e2@2 e3!2 e2@2", AR: "f#3@3 f#3 b2!4", AS: "b4@3 b4, [b3,e4,g#4]",
  AT: "[e4,g#4]@4 e4@2 f#4 g#4, b3", AU: "[d4,f#4,a4]", AV: "[f#4,a4]@2 a4!2, d4", AW: "[g#4,b4]@5 a4 g#4@2, e4",
  AX: "[e4,f#4] e4 f#4 g#4, b3", AY: "[c#4,e4,a4] [c#4,e4,f#4,a4]", AZ: "c5 a4 f#4 d5 b4 g4 e5 c5",
  BA: "a4 f#5 d5 b4 g5 e5 a5 f#5", BB: "e4", BC: "e4@6 e4@2 e4@3 f#4@2 g#4@3",
  BD: "[a4 g#4 f#4@6 ~@2 b3@2 b3@2 a4@6 a4@2 g#4@4 f#4@2 e4@2 f#4@2]/2", BE: "[e4@4 ~ b3 f#4 e4@5 ~ b4@2 b4]/2",
  BF: "a4 g#4 f#4@6 ~@2 b4@2 b4@4", BG: "d#5@2 e5@2 e5@2 f#5@2 e5 d#5 b4@2 ~@4",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note(`<
  ~ A B C@2 A B C@2 A D E F G@5 H G@3 H G I J@2 K L M@2 N@2 O P Q R O P S T U@2 V W U@2 X Y Z@2 AA AB AC@2 AD AE AA AF K
  L M@2 AG@2 O AH Q AI O AH AJ AK U@2 V AL U@2 V AM U@2 X W U@2 W AM AN@2 ~@3 AO AP AQ AR AO AP AQ AS AT AU AV AE AW AA
  AX AV AW AY AZ@2 BA BB AZ@2 BA BC
>`.pickRestart({
  A: "e2", B: "c#2", C: "d2/2", D: "c#2 c#3", E: "d2 d3", F: "[d2,d3]", G: "e2@7 e3@2 e3 e2@2 e3!2 e2@2",
  H: "e2@7 e3 ~@8", I: "b3@4 ~@3 b4@9, g#4, e4@3 e4@5, ~ b3@3", J: "[a3,d4,f#4]/2", K: "[b3,e4,g#4]@2 c#4 b3",
  L: "f#4 e4 a4 g#4", M: "[~ d#4, [a3,d4,f#4]]/2", N: "[b3,e4,g#4]/2", O: "~ a4 d5 c#5@5, [c#4,e4]", P: "[c#4,e4]",
  Q: "~ g4 c5 b4@2 g4 d4@2, b3", R: "[b3,d4]", S: "[b3,e4,f#4,b4]", T: "b4",
  U: "~ b5 a5 g#5 f#5@2 e5@2, [e4,g#4,b4], e5@3 ~", V: "~ a5 g#5 f#5 e5@4, [d4,f#4,a4,d5]", W: "~ a5 g#5 f#5 e5@4, d5",
  X: "~ a5 g#5 f#5 e5@4", Y: "[e4,f#4,a4,c#5] [d#4,f#4,b4]", Z: "[e4,g#4,b4,e5]/2", AA: "[a3,d4,f#4]",
  AB: "[e4,g#4]!2 [c#4,f#4]@2 [b3,e4]@2 [c#4,f#4] [b3,e4]@9", AC: "[f#3,a3,d4]/2",
  AD: "~@12 [e5,e6]!2 ~@2, [g#3,b3,e4]", AE: "[g#3,b3,e4]", AF: "[d4,f#4] ~, a4", AG: "[b3,e4,g#4,b4]/2",
  AH: "[c#4,e4]@3 [c#4,e4]", AI: "[b3,d4]@3 [b3,d4]", AJ: "b3 [b3,d#4,f#4,b4]", AK: "[b3,d#4,f#4,b4]",
  AL: "~ a5 g#5 f#5 e5@4, [e4,g#4,b4], e5 ~", AM: "[e4,a4,c#5] [d#4,f#4,b4]", AN: "[~ [b3,e4]@14 ~, g#3]/2",
  AO: "e2@6 e2@2 e3@4 e2@3 e2", AP: "c#2@6 b1@2 c#2@3 c#2 b1@2 c#2@2", AQ: "d2@3 d2 d2@3 d2", AR: "d2@3 d2 d2@2 d2 e2",
  AS: "f#2@2 c#2@2 b1!4", AT: "c4 a3 f#3 d4 b3 g3 e4 c4", AU: "a3 f#4 d4 b3 g4 e4 a4 f#4", AV: "[b3,e4,g#4]",
  AW: "e4 ~", AX: "b3@2 c#4 ~, [e4,g#4]", AY: "[d#4,d5]@3 [e4,e5]@3 [f#4,f#5]@3 [g#4,g#5]@3 [a4,a5]@2 [b4,b5]@2",
  AZ: "[b4,e5,g#5,b5]@3 g#5 f#5 e5 b4@2", BA: "[a4,d5,a5]", BB: "f#5@3 f#5 e5@4, [a4,d5,a5]",
  BC: "[a4,c#5,e5,a5] [b4,d#5,f#5]", // A B
})).s("gm_piano").gain(0.3)

// other · piano
const piano_3 = note(`<
  ~@24 A B@8 C@2 D E C@2 F G H I J K L M N O B@2 A B@4 A@4 B@2 A P B C Q D R C@2 F G H S J K L M N T L M K@2 L M K O B@2
  ~@13 U V W@2 U V X Y Z AA AB AC AD AE AC AF
>`.pickRestart({
  A: "e2@7 e3 ~@8", B: "e2@7 e3@2 e3 e2@2 e3!2 e2@2", C: "a2@9 f#3@2 c#3 e3@3 f#3", D: "g2@9 e3@2 b2 d3@3 e3",
  E: "f#2@9 d2 f2@2 f#2@4", F: "b2@9 f#3@2 d#3 e3@3 f#3", G: "b2@3 b2!3 c#3 e3", H: "e2@6 e2 e2@2 e2 e2@2 e2@4",
  I: "c#2@6 c#2 c#2@2 c#2 c#2@2 c#2@4", J: "d2@3 d2 d2@4", K: "d2@3 d2 d2@2 d2@2", L: "e2@3 e2 e2@2 e2@2",
  M: "c#2@3 c#2 c#2@2 c#2@2", N: "d2@3 d2 d2@3 d2", O: "b1@3 b1 b1@2 b1@2", P: "e2@6 e3 ~@8 e3",
  Q: "a2@9 f#3@2 c#3 e3@3 ~", R: "g2@9 d2 f2@2 g2@4", S: "c#2@6 c#2!4 c#2@2 c#2@4", T: "f#2@3 f#2 b1@2 b1@2", U: "e2",
  V: "c#2", W: "d2/2", X: "d2", Y: "d#3@3 e3@3 f#3@3 g#3@3 a3@2 b3@2", Z: "e2@3 e2 e2@3 b1", AA: "c#2@3 c#2 c#2@3 c#2",
  AB: "d2@3 d2 d2@3 a1", AC: "d2@3 d2 d2@2 d2 e2", AD: "e2@3 e3 e3@2 e2!2", AE: "c#2@3 c#2 c#2@2 b1 c#2",
  AF: "f#2@2 c#2@2 b1!4",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2, piano_3)

More by Misc Soundtrack