Strudelify

Ensemble with Four Hands of Xianglun & Xiaoyu (æ¹ååéåæèå½)

Jay Chou

KeyG majorTempo120 bpm
0:00/0:00
// Ensemble with Four Hands of Xianglun & Xiaoyu (æ¹ååéåæèå½) — Jay Chou
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6147196; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 19 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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "1st piano"
const piano = note("<A B C D E F G H I J K C L E M G N O P>".pickRestart({
  A: "~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3]", // Em
  B: "~@2 [e3,g3,b3]@2 ~@2 [e3,g3,b3]@2 ~@2 [e3,g3,b3]@2 ~@2 b5 a#5, ~@7 [e3,g3,b3]", // Em
  C: "b5 c6 b5 a5 g5 a5 g5 f#5 e5 g5 b5 e6 g6 f#6 e6 g6, ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3]", // Em
  D: "~@2 [d#3,f#3,b3]@2 ~@2 [d#3,f#3,b3]@2 ~@2 [d#3,f#3,b3]@2 ~@2 a5 g#5, f#6@4 ~@3 [d#3,f#3,b3]", // B
  E: "a5 b5 a5 g5 f#5 g5 a5 f#5 d#5 f#5 a5 d#6 f#6 e6 d#6 f#6, ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3]", // B
  F: "~@2 [e3,g3,b3]@2 ~@2 [e3,g3,b3]@2 ~@2 [e3,g3,b3]@2 ~@2 b5 a#5, e6@11 ~@3 [e3,g3,b3]@2", // Em
  G: "b5 c6 b5 a5 g5 a5 g5 f#5 e5 f5 f#5 g5 g#5 a5 a#5 b5, ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g#3,b3]", // Em E
  H: "~@2 [e3,a3,c4]@2 ~@2 [e3,a3,c4]@2 ~@2 [e3,a3,c4]@2 ~@2 b5 a#5, c6@4 ~@3 [e3,a3,c4]", // Am
  I: "b5 c6 b5 a#5 c6 b5 g5 e5 b5 c6 b5 a#5 c6 b5 f#5 d#5, ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3]", // Em B
  J: "~@2 [e3,g3,b3]@2 ~@2 [e3,g3,b3]@2 ~@2 b5 a#5 b5 a#5 b5 a#5, e5 [e3,g3,b3]", // Em
  K: "b5 a#5 b5 a#5 b5 a#5 b5 a#5 b5 a#5 b5 a#5 b5 a#5 b5 a#5",
  L: "f#6@2 ~ [f#5,a5,f#6]!2 ~@2 [d#5,f#5,d#6]!2 ~@2 [b4,d#5,b5] [b4,d#5,b5]@2 a5 g#5, ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3]", // F#m D#m B
  M: "e6@2 ~ [g5,b5,g6]!2 ~@2 [e5,g5,e6]!2 ~@2 [b4,e5,b5] [b4,e5,b5]@2 b5 a#5, ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [e3,g3,b3]", // G Em E5 Em
  N: "c6@2 ~ [e5,a5,e6]!2 ~@2 [c5,e5,c6]!2 ~@2 [a4,e5,a5] [a4,e5,a5]@2 b5 a#5, ~ [e3,a3,c4] ~ [e3,a3,c4] ~ [e3,a3,c4] ~ [e3,a3,c4]", // A5 C A5 Am
  O: "b5 c6 b5 a#5 c6 b5 g5 e5 b5 c6 b5 a#5 c6 b5 f#5 d#6, ~ [e3,g3,b3] ~ [e3,g3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3]", // Em B
  P: "~ [e3,g3,b3] [g4,b4,g5] [e3,g3,b3,b4,e5,b5] [e3,g3,b3,e5,g5,b5,f#6]@2 ~@2, e6 ~@3", // Em G Em
})).s("gm_piano").gain(0.3)

// chords · piano · "2nd piano"
const piano_2 = note("<A B C D E F G H I J K C D E F G H I L>".pickRestart({
  A: "[e1,e2] b1 [e1,e2] b1", B: "[e1,e2]@4 b1@4 [e1,e2]@2 b1@2 c#2@2 g4 f#4, ~@7 d#2",
  C: "g4 a4 g4 f#4 e4 f#4 e4 d#4 e4 g4 b4 e5 g5 f#5 e5 g5, [e1,e2] b1 [e1,e2] b1", // E
  D: "b1@4 f#2@4 [b1,b2]@4 ~@2 f#4 f4, f#5@2 ~ f#2", // B
  E: "f#4 g4 f#4 e4 d#4 e4 f#4 d#4 b3 a#3 b3 d#4 f#4 a#3 a3 f#4, [b1,b2] f#2 [b1,b2] f#2", // B
  F: "[e1,e2]@4 b1@4 [e1,e2]@4 ~@2 g4 f#4, g4@11 ~ b1@4", // E
  G: "g4 a4 g4 f#4 e4 f#4 g4 b4 ~@2 e5 d#5 d5 c#5 c5 b4, [e1,e2]@2 b1@2 [e1,e2]@2 f#1 g#1", // E
  H: "[a1,a2]@4 e2@4 [a1,a2]@4 ~@2 g4 f#4, a4@2 ~ e2", // A
  I: "g4 a4 g4 f#4 a4 g4 e4 b3 g4 a4 g4 f#4 a4 g4 d#4 b3, b1@2 g2 e2 b1@2 f#2 d#2",
  J: "e2@4 b1@2 g1@2 ~@2 g4 f#4 g4 f#4 g4 f#4, e4@2 [e1,e2] ~", // E
  K: "g4 f#4 g4 f#4 g4 f#4 g4 f#4 g4 f#4 g4 f#4 g4 f#4 g4 f#4",
  L: "[e2,e4]@2 [b1,g3,b3,g4] [g1,b3,e4,b4] [e1,e2,e4,g4,e5]@2 ~@2", // E Em
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)

More by Jay Chou