Strudelify

Richard Clayderman - Ballade Pour Adeline ( for Piano only )

Casey Liew

KeyG majorTempo70 bpm
0:00/0:00
// Richard Clayderman - Ballade Pour Adeline ( for Piano only ) — Casey Liew
// 70 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 17, 4/4 at bar 17, 2/4 at bar 30, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/6136919; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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.

// chords · piano · "Piano, Acoustic Grand Piano"
const piano = note(`<
  A@2 B C D E F G H I ~ J K L M N O@2 P@2 Q R S@3 T@2 U V W X Y Z AA AB Y AC AD AE Y Z AF AG ~
>`.pickRestart({
  A: "[~@17 g4 c5 ~@2 g4 c5 d5 ~ g4 c5 d5 ~ g4 c5 ~, ~@15 c4@4 ~ c4@4 c4@4 c4@4]/2", B: "~ g4 e5 g4 ~@2 e5 ~@9",
  C: "e5 ~ e5@4 e5@2", D: "[a4,f5]@2 ~@2 f5@5 ~ f5 [a4,f5]!4 [b4,g5]", E: "[b4,g5]@4 [b4,g5]@8 g5 ~@2 a5",
  F: "[g4,e5]@15 ~", G: "e5@4 e5@5 e5!3 [g4,e5]!3 [a4,f5]", H: "[a4,f5]@4 f5@5 f5 [a4,f5]!5 [b4,g5]", I: "g5@4 ~@11 a5",
  J: "~@2 [c6,e6] e5 [b5,d6] e5 [a5,c6] e5 ~@2 [g5,b5] b4 [f#5,a5] b4 [e5,g5] b4", // C Bm Am G F#m Em
  K: "[c5,a5]@4 [b4,g5]@2 f5@2 ~ [e4,g4] c4 [d4,g4] d4 e4 g4 g3, ~@4 e5 d5 c5 ~", // F Em G5
  L: "~@2 [c5,e5] e4 [b4,d5] e4 [a4,c5] e4 ~@2 [g4,b4] b3 [f#4,a4] b3 [e4,g4] b3", // C Bm Am G F#m Em
  M: "[c4,a4]@4 g4 ~ f4 g4@2 ~ c4 d4 ~ c4 d4 f4", // F
  N: "~ [d4,f4] g4 [d4,f4] [d4,g4] [f4,g4] [d4,d5] [f4,g4] [g4,d5] [d5,f5] [g4,g5] [d5,f5] [d5,g5] [f5,g5] [d5,d6] [f5,g5]", // Dm G5 Fsus2 D Fsus2 G5 Dm G …
  O: "[[g5,d6] [d6,f6] [g5,g6] [d6,f6] g6 [b6,d7] [g6,g7] [b6,d7] [g5,e6]@4 [g5,e6]@8 [g5,e6]@3 ~ [a5,f6]@4 [a5,f6]@4, ~@8 g7 ~@23]/2", // G5 Dm G Dm Bm G Bm C …
  P: "[~ [a5,f6]!6 [b5,g6] [b5,g6]@4 g6@8 [b5,g6] ~@2 a6 [g5,e6]@2 ~@2 [a#5,g6] d#6 a#5 g5]/2", // Dm Em C D#
  Q: "[a5,f6] c6 a5 f5 a4 b4 g4@2 [g5,e6]@4 [g5,e6]@4, ~@2 d5 ~@5", R: "~ [g5,e6]!6 [a5,f6] [a5,f6]@4 [a5,f6]@4",
  S: "[~ [a5,f6]!6 [b5,g6] [b5,g6]@4 [b5,g6]@8 [b5,g6] ~@2 a6 e6@11 ~@7 [c6,e6] e5 [b5,d6] e5 [a5,c6] e5]/3", // Dm Em C Bm Am
  T: "[~@2 [g5,b5] b4 [f#5,a5] b4 [e5,g5] b4 [f5,a5]@4 [b4,g5]@2 f5 g5@2 [d5,e5] [g4,c5] e4 g4@4 ~@2 [c5,e5] e4 [b4,d5] e4 [a4,c5] e4]/2", // G F#m Em F Em Dsus2 C5 C …
  U: "~@2 [g4,b4] b3 [f#4,a4] b3 [e4,g4] b3 [f4,a4] c4 f4 c4 g4 c4 f4 g4", // G F#m Em F
  V: "~@2 c4 d4 ~ c4 d4 f4 ~ [d4,f4] g4 [d4,f4] [d4,g4] [f4,g4] [d4,d5] [f4,g4]", // Dm G5 Fsus2 D Fsus2
  W: "[g4,d5] [d5,f5] [g4,g5] [d5,f5] [d5,g5] [f5,g5] [d5,d6] [f5,g5] [g5,d6] [d6,f6] [g5,g6] [d6,f6] g6 [b6,d7] [g6,g7] [b6,d7]", // G5 Dm G Dm G5 Fsus2 D Fsus2 …
  X: "[g5,e6]@4 [g5,e6]@8 [g5,e6]@3 ~, g7 ~@15", Y: "[a5,f6]@4 [a5,f6]@5 [a5,f6]!6 [b5,g6]",
  Z: "[b5,g6]@4 [b5,g6]@8 [b5,g6] ~@2 a6", // Em
  AA: "[g5,e6]@2 ~@3 a#5 d#6 a#5@2 a5 c6 a5@2 g5 b5 [g5,d6], ~@7 g6 ~@3 f6 ~@4", // C G5
  AB: "[g5,e6]@4 [g5,e6]@5 [g5,e6]!6 [a5,f6]", AC: "[b5,g6]@4 [b5,g6]@8 g6 ~@2 [c6,a6]",
  AD: "[g5,e6]@8 [a5,f6] f5 a5 c6 g6 ~ b5 g6, ~@13 g5@3", AE: "[g5,e6]@4 [g5,e6]@5 e6 [g5,e6]!5 [a5,f6]",
  AF: "[g5,e6]@8 ~ f5 a5 f6 g6 g5 b5 a6", AG: "e6@8 ~ f5 a5 f6 g6 g5 b5 a6",
})).s("gm_piano").gain(0.56)

// chords · piano · "Piano, Acoustic Grand Piano" · soft notes
const piano_soft = note("<~ A B C D E ~ F G H I ~ J ~@5 K@2 ~@3 L@2 ~@7 M ~@3 N ~ O ~ M ~@3>".pickRestart({
  A: "~@3 d5 ~@11 d5", B: "~@5 g4 ~ g4 ~ g4 e5 g4 ~ g4 e5 g4", C: "g4@2 ~@2 g4@2 ~@6 g4 ~@2 a4",
  D: "~@4 a4@5 [a4,f5] a4 ~@5", E: "~@12 b4 ~@2 c5", F: "g4@4 g4@5 g4!3 ~@4", G: "~@4 a4@5 a4 ~@6",
  H: "b4@4 [b4,g5]@8 g5 ~@3", I: "[g4,e5] ~", J: "~@3 a4 ~@4", K: "[~@12 b5@8 ~@3 c6 ~@8]/2",
  L: "[~@7 c6 g5@11 ~@13]/2", M: "~@15 c6", N: "~@12 b5 ~@3", O: "~@9 g5 ~@6",
})).s("gm_piano").gain(0.32)

stack(piano, piano_soft)

More by Casey Liew