Strudelify

Pièce en forme de habanera

Maurice Ravel

KeyB♭ majorTempo50 bpm
0:00/0:00
// Pièce en forme de habanera — Maurice Ravel
// 50 bpm, 2/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 1 "Hautbois" clarinet (copy of ch 3 "Clarinette en Si♭" clarinet)
// note: Transcription provider: pdmx. https://musescore.com/score/5919356; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 62 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(50/2)

// 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
const piano = note(`<
  A@2 B@2 C A D A E A F@2 G@2 H I J K L M N O P Q G H R S T U V W X Y ~@3 Z AA@4 AB@3 AC@6 ~ AD@2 AE ~ AF AG ~ AH AI AJ
>`.pickRestart({
  A: "d4@11 ~ d5@4 d6@8 d5@8",
  B: "[c5,e5,a5]@5 [d5,gb5,bb5]@5 ~@2 d5@4 [bb4,d5,g5,d6]@8 [ab4,c5,d5,f5]@8, d4@11 [c5,e5,a5]@5 ~@16", // Am Daug Gm Dm7b5 Am
  C: "[c5,e5,a5]@5 [gb4,a4,d5]@5 ~@2 d5@4 d6@8 d5@8, d4@11 ~@21", D: "[d4,d5]@3 ~ d6@2 d5@2, [ab4,bb4], ~@3 d5@3 ~@2",
  E: "d4@11 ~ [ab4,bb4]@4 ~@8 d5@8, ~@2 d5 ~, ~@17 ab5@15, ~@9 bb5@7, ~@19 d6@13", // Absus2
  F: "d4@11 ~@5 [ab4,c5]@8 [f4,bb4,d5]@8, ~@12 d5@11 ~@9", // Ab Bb
  G: "[a4,c5,e5,a5,e6,a6]@5 [bb4,d5,gb5,bb5,gb6,bb6]@5 ~@2 d4@4 [g4,bb4,d5,g5,d6,g6]@8 [d4,f4,ab4,c5,f5,c6,f6]@8, ~@11 [a4,c5,e5,a5,e6,a6]@5 ~@16", // Am Bbaug Gm Dm7b5 Am
  H: "[a4,c5,e5,a5,e6,a6]@5 [gb4,d5,a5,d6]@5 ~@2 d4@4 d5@8 d4@8", I: "[d6,d7]@3 d4 d5@2 d4@2",
  J: "d5@11 ~ d4@4 d5@8 d4@8", K: "d5@3 d4 d5@2 [d4,a4,c5]@2, bb4@3 ~", L: "d5@3 d4 ~@2 d4@2, bb4@15 ~, ~@8 d5@7 ~",
  M: "[bb4,d5]@3 d4 [a4,c5,d5]@2 [d4,g4,bb4]@2", N: "[gb4,a4]@3 d4 d5@2 d4@2",
  O: "~@3 d4 d5@2 [d4,f4,a4,c5,d5]@2, [eb4,g4,bb4,c5]@3 ~", P: "d5@3 d4 d5@2 [d4,a4,c5,eb5,f5]@2, [g4,bb4,eb5]@3 ~",
  Q: "d5@3 d4 d5@2 [d4,c5,eb5,g5,a5]@2, [bb4,f5,g5]@23 ~@9", R: "~@3 d4 d5@2 d4@2, d3@15 ~",
  S: "~@3 eb5@13 ~@16, [d4,d5] ~, ~ [gb4,a5]@15 ~@16, ~ [c5,d6]@7 ~@8", T: "[c4,g4,bb4,d5,eb5,g5,d6]@15 ~@17",
  U: "~@7 [ab5,c6,f6]@6 [bb5,d6,g6]@7 [f5,bb5,d6]@12, bb3@5 ~@3, [bb5,d6,g6]@3 d5@17 ~@12, ~ f4@19 ~@12, ~ ab4@9 ~@6", // Fm Gm Bb Gm
  V: "~ [d5,ab5,c6]@15 ~ [d2,a2,d4,a4,d5]@12 d4@3", // Dm7b5 D5
  W: "~ d5@8 d4@8 ~@3 e5@12, ~@17 [d4,d5]@15, ~@9 [gb4,a5]@7, ~@19 [c5,d6]@13", // D Gbm Csus2
  X: "~@5 e5@3, ~@17 [c4,d5]@15, ~@9 [g4,g5]@7, ~@19 [bb4,d6]@13", // Csus2 G Bb
  Y: "~@5 [a4,g6]@3, ~@17 [f3,g5]@15, ~@9 [c4,c6]@7, ~@19 [eb4,eb6]@13", Z: "~@17 [f2,c3,a3,eb4,gb4]@15",
  AA: "[~ e4@55 ~@3 eb4@19 ~ [bb3,db4,eb4]@4 d4@8 d3@4 ~@8 d3@8 g2@11 ~ d3@4 d4, ~ [eb2,bb2,g3,db4]@74 ~@4 g2@11 ~@5 d4@15 ~@18, ~@83 b3@27 ~@18]/4", // Eb7
  AB: "[~@7 d3@8 d4@12 d3@4 d4@8 [d3,ab3,c4]@8 g2@11 ~ d3@4 d4@8 d3@8 g2@11 ~ d3@4 [bb3,d4], ~@15 b3@24 ~@8 [g3,b3]@30 ~@19, ~@15 g2@11 ~@70]/3", // Dm7b5 Bb G
  AC: "[~@7 [d3,ab3,c4]@8 g2@11 ~ d3@4 d4@8 d3@8 g2@11 ~ d3@4 d4@8 [d3,bb3,db4,gb4]@8 g2@11 ~ d3@4 d4@8 [d3,bb3,db4,gb4]@8 [g2,gb3,ab3,c4,eb4]@30 ~@23 gb6@12 ~@16, ~@15 [g3,b3]@30 ~@2 [ab3,c4,eb4]@24 ~@8 [ab3,c4,eb4]@24 ~@56 [gb4,gb5]@4 [eb5,eb6]@12 ~@17, ~@160 [g4,g5]@15 ~@17, ~@161 [ab4,ab5]@14 ~@17, ~@162 [c5,c6]@13 ~@17]/6", // Dm7b5 Gb Ab7 G Ab Gb Eb G …
  AD: "~@2 g2@11 ~ d3@4 b3@8 d3@6", AE: "~@5 [c3,g3,ab3,c4,eb4,g4]@11, ~ c2@15",
  AF: "~@5 [g3,a3,d4,eb4,g4,d5]@11, ~ c3@15", AG: "~@13 [g4,bb4,d5,e5,g5]@3, ~@9 c4@7",
  AH: "~@2 [g2,a6] [d3,g5,d6] [ab3,d6] g5@3 ~@6 d4@4 b4@8 d4@6, ~@5 [b3,d4]@9 ~@18, ~@4 d5@5 d5@7, ~@5 [g5,d6]@11", // Gsus2 G5 Abdim Bm G5
  AI: "~@7 d4@2 [b4,d5]@4 d4@3, ~ [g2,d3]@15", AJ: "~@2 [b5,d6,b6,d7]@15 ~@15",
})).s("gm_piano").gain(0.29)

stack(piano)

More by Maurice Ravel