Strudelify

Le Mère l'Oye: 5. Le Jardin Fèerique

Maurice Ravel

KeyC majorTempo56 bpm
0:00/0:00
// Le Mère l'Oye: 5. Le Jardin Fèerique — Maurice Ravel
// 56 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/6224545; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(56/3)

// 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 1"
const piano = note(`<
  ~@4 A B C D ~ E F G H ~@5 I ~@6 J K L ~@5 M N O P Q R S T U V ~ W X Y Z AA AB AC@2 AD AE AF ~
>`.pickRestart({
  A: "~@5 e4, ~@2 g3", B: "d4@8 e4@15 ~, f#3@2 ~", C: "~@5 g4, ~@2 b3", D: "e5@8 d5@15 ~, a3@2 ~", E: "~@8 a4@15 ~",
  F: "a3 b3 c4@2 d4 [e4,a4], f5@2 c5@3 ~", G: "f4 g4 a4@2 b4 c5, g5@23 ~", H: "[b4,d5]@5 ~@11", I: "~@5 [f4,f5]",
  J: "~@33 [f#6,e7]@4 d7@5 ~ a6@5, ~@32 [b5,d6]@5 ~@11", // F#7 Bm
  K: "~@2 f#6@14 ~@2 g#6@6 e6@8 ~ [c#6,f#6]@4 b6@5 ~ a6@5, a5@16 g#5@8 ~@8 a5@5 ~@11, ~ c#6@15 ~ b5@7 ~@24", // F#5
  L: "~ [c#6,g#6]@4 f#6@5 ~ e6@5 ~@2 g#6@14 [a5,c#6]@15 ~, a5@5 ~@11 g#5@16 ~@16, ~@17 b5@15 f#6@5 ~@11", // C#5 A
  M: "~@5 a6, ~ g5 f5, ~@17 b5@16 a5@15, ~@9 e6@8 d6@7, ~@19 b6@21 ~@8",
  N: "~@3 b5@13 ~@24 a5@8, b4 g4 f4, ~ d5@15 ~ b4@16 a4@15, ~ g5@7 ~ e5@8 d5@7, ~@19 b5@21 ~@8",
  O: "~ b4@7 ~@12 a4@4, d4@2 e4@3 ~, ~ g4@15 ~ b4@23 ~@8, ~@32 f4@15 ~",
  P: "~ f4 ~@3 a4, e4@2 g4@3 ~, ~ b4@15 ~ b4@23 ~@8, ~@2 f4",
  Q: "~ b4@7 c5@8 ~@2 d5@14 ~@2 e5@6 f5@8, g4 ~ g4@2 f4 ~, ~@17 b4@15 ~ [a4,c5]@7 ~@8", // Am
  R: "~@2 g5@6 a5@8 ~@3 b5@13 ~@2 c6@6 d6@8, b4 ~ b4@2 a4 ~, ~ d5@7 ~@9 e5@15 ~ [d5,f5]@7 ~@8, ~@9 g5@7 ~@8", // Dm
  S: "[d5,d6]@2 ~@3 [b4,b5], [e5,g5]@2 [d5,g5], ~@2 [c5,c6]@3 ~", // D B Em G5 C
  T: "[a4,c5,e5,a5]@16 [g4,b4,d5,g5]@16 [e4,a4,c5]@15 ~", // Am G Am
  U: "[g4,g5]@2 ~@3 [e4,e5], [a4,c5]@2 [g4,b4], ~@2 [f4,f5]@3 ~", V: "[c4,a4,c5]@16 [d4,g4,b4]@16 [e4,g4]@15 ~",
  W: "[b3,e4,g4]@16 [d4,f4,a4]@16 [f4,a4,c5]@15 ~", X: "[e4,a4,c5,e5]@2 [d4,f4,a4,d5]@3 [f4,a4,d5,f5]",
  Y: "[g4,b4,e5,g5]@16 [a4,d5,f5,a5]@16 [c5,f5,a5,c6]@15 ~", // Em Dm F
  Z: "[a4,c5,e5,a5,c6,e6]@2 [f4,a4,d5,f5,a5,d6]@3 [a4,d5,f5,a5,d6,f6]", // Am Dm
  AA: "[b4,e5,g5,b5,e6,g6]@16 [d5,f5,a5,d6,f6,a6]@16 [f5,a5,c6,f6,a6,c7]@15 ~", // Em Dm F
  AB: "[c7,e7,g7]@8 g7 [e7,f7] [c7,d7] [a6,b6] ~ f6 [c6,d6] [a4,b5] g5@4 ~@4 g5 a5 b5 c6 [d6,e6] f6 g6 a6 g6@4 ~@4 g6 a6 b6 c7 [d7,e7] f7 g7 a7, [c6,e6,g6]@4 g6 ~@11, ~@13 e6@2 ~@33", // C Fmaj7 Csus2 Asus2 Csus2 Asus2 Dsus2 C
  AC: "g7@4 ~@4 g7 [e7,f7] [c7,d7] [a6,b6] g6 [e6,f6] [c6,d6] [a4,b5] g5@4 ~@4 g5 a5 b5 c6 [d6,e6] f6 g6 a6 g6@4 ~@4 g6 a6 b6 c7 [d7,e7] f7 g7 a7", // Fmaj7 Csus2 Asus2 Fmaj7 Csus2 Asus2 Dsus2
  AD: "g7@4 ~@4 a5 b5 c6 d6 e6 f6 g6 a6 g6@4 ~@4 g6 a6 b6 c7 [d7,e7] f7 g7 a7 g7@4 ~@4 a5 b5 c6 d6 e6 f6 g6 a6", // Dsus2
  AE: "g6@4 ~@4 g6 a6 b6 c7 [d7,e7] f7 g7 a7 g7@4 ~@4 a5 b5 c6 d6 e6 f6 g6 a6 g6@4 ~@4 g6 a6 b6 c7 [d7,e7] f7 g7 a7", // Dsus2
  AF: "g7@5 ~",
})).s("gm_piano").gain(0.35)

// chords · piano · "Piano 1" · soft notes
const piano_soft = note(`<
  A B C@2 D E D F G H ~@2 I@2 J K L M N O P@2 Q R S T ~ U V@2 W X Y Z ~@9 AA ~@12
>`.pickRestart({
  A: "c4@2 ~@3 c4, e3@2 g3, ~@2 d4@3 ~", B: "[f3,e4] [g3,d4] [a3,g4]",
  C: "[g4@16 ~@24 g4@8 a4@16 a3@16 b3@15 ~, f3 g3 ~, ~@8 f4@12 ~@12 e4@15 ~]/2", D: "b4@2 a4@3 ~, c4@2 ~",
  E: "~@32 g3@15 ~", F: "~@32 b3@15 ~", G: "[c4,f5]@2 d4@2 ~ a4, ~@2 c5@3 ~, ~@2 e4", H: "e4@23 ~, g4 ~@2",
  I: "[~@6 e3@2 f4@2 ~ f3, ~@4 g4@4 d3@3 ~, ~@5 c4]/2", J: "[g3,b3]@16 a3@16 c4@15 ~",
  K: "[g3,e4]@2 f3@2 ~ f4, ~@2 d4@3 ~, ~@2 c3", L: "[d3,g4]@16 a4@16 c5@15 ~, ~@8 c3@15 ~", M: "e5@2 d5@3 f5, c3@23 ~",
  N: "[e5,g5]@16 a5@16 c6@15 ~, ~@16 d5@23 ~@9", O: "[e4,e5,g5,b5,e6] [e4,b4,e5,g5,b5,e6] [d4,a4,d5,f5,a5,d6]",
  P: "[e4,b4,e5,g5,b5,e6]/2", Q: "~ e7@7 ~@12 d7@4, e6@16 f6@17 b6@15, ~ g6@15 ~ a6@23 ~@8, ~@9 e7@11 ~@4, ~@2 g6",
  R: "e7@5 f#7@5 ~ g7@5 ~ a6@7 b6@8 ~@2 c7@6 d7@8, [e6,g6]@15 ~ f6@8 ~@8 f6@8 ~@8, ~@33 a6@7 ~@8", // Em
  S: "~@3 e7@13 ~@24 d7@8, e6 d6 g#5, ~ c#7@15 ~@2 b6@15 b5@15, ~@2 g#6@14 ~ f#6@17 e6@14, ~@19 e7@21 ~@8",
  T: "~ [e6,e7]@4 f#7@5 ~ g#7@5 ~@2 a6@3 b6@5 ~ c#7@5 ~@16, [g#5,c#6]@5 ~@11 [a5,c#6]@5 ~@27, ~@17 [e6,g#6]@4 ~@27", // E C#5 A E
  U: "~@37 d6@5 ~ c#6@5", V: "b5@2 b5@3 a5", W: "b5@5 c#6@5 ~ d#6@5 e5@8 f#5@8 g#5@8 a5@8", X: "b5@15 ~ b5@23 ~ a5@8",
  Y: "~ [g6,b6]@4 c7@5 ~ d7@5 ~@2 e6@6 f6@8 ~@2 g6@6 a6@8, [b5,d6]@5 ~@11 a5@8 ~@8 f5@8 ~@8, ~@17 c6@7 ~@9 [a5,d6]@7 ~@8", // G Bm D5
  Z: "~@3 b6@13 ~@32, b5 ~@2, ~ d6@15 ~@32, ~ g6@7 ~@16", AA: "[a3,e4]@2 d4@3 f4, ~ a3@2",
})).s("gm_piano").gain(0.2)

// chords · piano · "Piano 2"
const piano_2 = note(`<
  ~ A B C D E F G H I J@3 ~@2 K L M N O P@2 ~@2 Q R S@2 T@2 ~@2 U V W X Y Z AA ~@2 AB AC AD@6 AE@3 AF@2 AG@2
>`.pickRestart({
  A: "~@2 [f2,c4]", B: "[g2,b3] [a2,c4] [b2,d4]", C: "c3@32 g2@15 ~, e4@23 ~", D: "e4@5 c4, a2", E: "[e2,b3]@23 ~",
  F: "a2 b2 c3, e4@23 ~", G: "f4@30 ~@2 g4@15 ~, d3@23 ~", H: "[d3,f4,a4]", I: "b3@30 ~@2 c4@15 ~, a2@23 ~",
  J: "[[f4,a4]@38 ~@18 b4@8 c5@16 d5@8 e5@8 g5@15 ~ g5@32, d3@48 g3@61 ~@35, ~@5 a4@2 ~@11]/3", K: "[f2,a3]",
  L: "b3@8 a3@15 ~, f2@23 ~", M: "g4@15 ~@17 c4@16, [f2,c3], ~@8 f4@15 ~", N: "[d3,b3,b4]@8 [c3,a3,a4]@15 ~, f2",
  O: "[e2,b2,b3,e4,b4]!2 [g2,d3,b3,g4,b4]", P: "[e4 ~@4 g5, [e2,d3,b3]@2 e5, b4 b4, ~ e4@5, ~ g4@2]/2",
  Q: "~@19 b5@13 ~@3 e5@13, ~ b4 e4, ~@17 d5@15 ~ g#4@15, ~@9 f#5@7 ~ b4@7",
  R: "~@3 e5@13 ~@4 g#5@12 ~@3 a5@13, c#4@8 ~ c#5@7 b4@8, ~ g#4@15 f#4@16 ~@16, ~@2 c#5@14 ~ a4@15 ~@2 f#5@14, ~@19 e5@13 ~ d5@15",
  S: "~ f#5@15 ~ e5@15 ~@2 f#5@14, d5 c#5 b4, ~@11 d5@5",
  T: "~ g#5@15 ~@2 g#5@14 ~@2 f#5@14, e5 c#5 b4, ~@17 e5@15 ~ d5@15",
  U: "~@19 f5@13 ~@3 d5@13, ~ f4 d4, ~@17 a4@15 ~ f4@15, ~@9 c5@7 ~ a4@7",
  V: "~ g5@3 ~ f5@3 ~ a3@3, d4@16 ~@3 b3@13 ~@2 d5@14, ~ b4@15 a4@16 f4@16, ~@2 d5@14 ~ c5@15 ~ a4@15, ~@3 g3@13 ~@2 e3@14 ~@3 d3@13",
  W: "~@3 g4@13 ~@3 e4@13 ~@3 d4@13, g3 e3 d3, ~ b3@15 ~ g3@15 ~ f3@15, ~ d4@7 ~ b3@7 ~ a3@7",
  X: "~@8 a3@8 ~ b3@15 ~ c4@7 d4@8, g3@2 e3@2 d3 ~", Y: "~ b3@15 ~ b3@15 ~@2 c4@14, g3 e3 d3, ~@11 a3@5",
  Z: "~@2 d4@14 ~@3 e4@13 ~@3 d4@13, g3 e3 d3, ~ b3@15 ~ g3@15 ~ f3@15, ~@9 b3@7 ~ a3@7",
  AA: "~ g4@3 ~ e4@3 ~ d4@3, g2@8 ~ e2@7 ~ d2@7, ~ d3@15 b2@16 a2@16, ~@2 b3@14 ~ g3@15 ~ f3@15, ~@3 d4@13 ~@3 b3@13 ~@3 a3@13",
  AB: "~@2 [e2,b2,g3]", AC: "[f2,c3,a3]@16 [g2,d3,b3]@16 [a2,e3,b3]@15 ~", AD: "~ c4 g3, [f2,c3]@23 ~",
  AE: "[c5,e5,g5]@2 c4@2 ~ [f4,a4,c5], c2, ~@2 [d4,f4,a4]@3 ~, ~@2 g3", // C F Dm
  AF: "[c2@8 g1@6 [c5,e5,g5]!2 c2@8 g1@6 [c5,e5,g5]!2 c2@8 g1@6 [c5,e5,g5]!2, [c5,e5,g5]@28 ~@4 [c5,e5,g5]@27 ~@5 [c5,e5,g5]@28 ~@4]/2", // C
  AG: "[c1,c2,c5,e5,g5]/2", // C
})).s("gm_piano").gain(0.2)

// chords · piano · "Piano 2" · soft notes
const piano_soft_2 = note("<A B ~@11 C D ~@7 E F G ~@5 H I J ~@6 K L M ~@14>".pickRestart({
  A: "~@2 e2, c2@2 ~, ~ b3@2", B: "[d2,a3] [e2,b3] ~", C: "[f2,a3]", D: "d3@8 c3@15 ~, f2@23 ~",
  E: "~@2 b5@14 ~@3 c6@13 ~@3 d6@13, e5!3, ~ g5@15 ~ f5@15 ~ g5@15, ~@9 a5@7 ~ b5@7",
  F: "~@2 b5@14 ~@3 c6@13 ~@3 c6@13, e5!2 d5, ~ g5@15 ~ f5@15 ~ f5@15, ~@9 a5@7 ~ a5@7",
  G: "~@3 c#6@13 ~@32, c#5 ~@2, ~ e5@15 ~@32, ~ g#5@7 ~@16",
  H: "~@2 d#5@14 ~@2 c#5@14 ~@3 c#5@13, g#4 f#4 d#4, ~ b4@15 ~ a4@15 ~ f#4@15, ~@17 a4@7",
  I: "~@3 g#5@13 ~@3 f#5@13 ~@3 c#5@13, g#4 f#4 d#4, ~ b4@15 ~ a4@15 ~ f#4@15, ~ d#5@7 ~ c#5@7 ~ a4@7",
  J: "~@3 g5@13 ~@32, g4 ~@2, ~ b4@15 ~@32, ~ d5@7 ~@16", K: "[c2,g2,e3]@2 [e2,b2,g3]",
  L: "[f2,c3,a3]@16 [g2,d3,b3]@16 [a2,e3,c4]@15 ~", M: "[d2,a2,f3]@2 ~",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft, piano_2, piano_soft_2)

More by Maurice Ravel