Strudelify

Soirées musicales

Sam Rahbari

KeyE majorTempo195 bpm
0:00/0:00
// Soirées musicales — Sam Rahbari
// 195 bpm, 6/8, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/182364; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 213 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(195/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.

// other · piano · "Right Hand"
const piano = note(`<
  A B C D E F G H I J K L M N O@8 P@2 Q R S@5 T@8 U V W X Y Z AA AB AC AD AE X Y Z AA AB AC AD AF AG AH AI AJ AG AH AI
  AK AL@2 AM AN AO AP AQ AR AL@2 AM AN AO AP AQ AS AT AU AV AW AT AU AX AY AZ BA AZ BB BC BD AZ BE AZ BB BF BG BH@2 BI
  BH@2 BJ BK BL BH@2 BI BH@2 BM BN BO BP BQ BR BS BP BQ BT BU X Y Z AA AB AC AD AE X Y Z AA AB AC AD AF AG AH AI AJ AG
  AH AI AK AL@2 AM AN AO AP AQ AR AL@2 AM AN AO AP AQ AS AT AU AV AW AT AU AX AY AZ BA AZ BB BC BD AZ BE AZ BB BF BG
  BH@2 BI BH@2 BJ BK BL BH@2 BI BH@2 BM BN BO BP BQ BR BS BP BQ BT BV BW BX BY
>`.pickRestart({
  A: "~@7 d#6@2 e6@2 d6@2 ~ c6@2", B: "b5@2 a5@2 ~ a5@2 g#5@2 a5@2 a#5@2 ~ b5@2, ~@5 b5 ~@10",
  C: "d5 ~ f5@2 e5@2 ~ c5 ~ f5@2 e5@2 ~ d5 ~", D: "f5@2 e5@2 d5 ~@2 c5@2 b4@2 a4@2 ~ d#6@2",
  E: "e6@2 d6@2 c6@2 ~ b5@2 a5@2 b5 a5@2 g#5@2", F: "a5@2 a#5@2 b5@2 ~ d5 ~ f5@2 e5@2 ~ c5 ~",
  G: "f5@2 e5@2 d5 ~@2 f5@2 e5@2 d5 ~ c5@2 ~", H: "b4@2 a4@2 a5@2 ~ e5@2 f#5@2 g5@2 d5@2 ~",
  I: "e5@2 f5@2 c5@2 ~ d5@2 e5@2 d#5@2 e5@2 ~", J: "b4@2 c5@2 d5@2 ~ c5@2 b4@2 a4@2 g#4@2 ~",
  K: "a4@2 b4@2 a4@2 c5@2 ~ e5@2 a5@2 e5@2 ~", L: "f#5@2 g5@2 d5@2 e5@2 ~ f5@2 c5@2 d5@2 ~",
  M: "e5@2 d#5@2 e5@2 b4@2 ~ c5@2 d5@2 c5@2 ~", N: "b4@2 a4@2 g#4@2 a4@2 ~ b4@2 a4@2 g#4@2 ~",
  O: "[a4@2 a#5@2 c6@2 a#5@2 ~ f5@2 g5@2 f5@2 d5@2 ~ e5@2 d5@2 a#4@2 ~ c5@2 a#4@2 a4@2 a#4@2 ~ a4@2 g#4@2 b4@2 ~ d5@2 f5@2 e5@2 d5@2 ~ c5@2 b4@2 a4@2 ~ a#5@2 c6@2 a#5@2 f5@2 ~ g5@2 f5@2 d5@2 e5@2 ~ d5@2 a#4@2 c5@2 ~ a#4@2 a4@2 a#4@2 a4@2 ~ g#4@2 f5@2 e5@2 ~ d5@2 c5@2 b4@2 a4@2 ~ c5@2 a4@2 f4@2 ~ a4@2 f4@2 e4@2 a4@2 ~ e4@2 d#4@2 a4]/8",
  P: "[~@2 d#4@2 e4@2 a4@2 e4@2 ~ f4@2 a4@2 f4@2 e4@2 ~ a4@2 e4@2 d#4@2 ~ a4@2 d#4@2 e4]/2",
  Q: "~ a4 ~@2 c5 ~ e5 ~ a5 ~@2 c6 ~ e6@2 ~", R: "~@4 [b4,d5,g#5]@4 ~@3 [a4,c5,f#5,a5]@4 ~",
  S: "[~ f#4@2 ~ a4@2 f#4@2 e4@2 a4@2 ~ e4@2 d#4@2 a4@2 ~ d#4@2 e4@2 a4@2 e4@2 ~ f#4@2 a4@2 f#4@2 ~ e4@2 a4@2 e4@2 d#4@2 ~ a4@2 d#4@2 e4 ~@2 a4 ~ c5 ~ e5 ~ a5 ~@2 c6 ~ e6@2 ~@5 [b4,d5,g#5]@4 ~@3 [a4,c5,e5,a5]@3]/5", // G#dim Am
  T: "[~@3 b5@2 ~ c6@2 d6@2 e6@2 ~ d6@2 c6@2 b5@2 c6@2 ~ d6@2 c6@2 b5@2 ~ a5@2 g#5@2 a5@2 f5@2 ~ e5@2 d5@2 c5@2 ~ b4@2 c5@2 d5@2 c5@2 ~ b4@2 a4@2 b4@2 c5@2 ~ d5@2 e5@2 d5@2 ~ c5@2 b4@2 c5@2 d5@2 ~ c5@2 b4@2 a4@2 ~ g#4@2 a4@2 f4@2 e4@2 ~ d4@2 c4@2 d4@2 ~ c4@2 b3@2 a3@2 c4@2 ~ e4@2 a4 ~ a4 ~@2 a4 ~ a4@2 c5@2 e5@2 ~ a5]/8",
  U: "~ a5 ~ a5 ~ a5@2 ~ c6@2 e6@2 a6 ~@2 a6", V: "~ a6 ~ a6 ~ a6 ~@2 a6 ~ a6 ~ a6 ~@2 a6",
  W: "~ [a6,b6] c7 e7@2 ~@11, ~@3 d7 ~@12", X: "c4@3 e4@2 a4@3 b3@3 d4@2 g#4@3", Y: "c4@3 e4@2 a4@3 c#4@3 e4@2 g4@3",
  Z: "a3@3 c4@2 f4@3 a3@3 c4@2 f4@3", AA: "g3@3 c4@2 e4@3 g#3@3 d4@2 e4@3", AB: "a3@3 c4@2 e4@3 b3@3 e4@2 b4@3",
  AC: "c4@3 d4@2 a4@3 a3@3 b3@2 f4@3", AD: "g#3@3 d4@2 e4@3 b3@3 d4@2 e4@3", AE: "c4@3 e4@2 a4@3 ~@8",
  AF: "c4@3 ~@5 a5@3 e5@2 f#5@3", AG: "g5@3 d5@2 e5@3 f5@3 c5@2 d5@3", AH: "e5@3 d#5@2 e5@3 b4@3 c5@2 d5@3",
  AI: "c5@3 b4@2 a4@3 g#4@3 a4@2 b4@3", AJ: "a4@3 c5@2 e5@3 a5@3 e5@2 f#5@3", AK: "a4@4 ~@4 e3 ~@2 g3 ~ c4 ~@2",
  AL: "e3 ~@2 g3 ~ c4 ~@2 e3 ~@2 g3 ~ c4 ~@2", AM: "f#3 ~@2 a3 ~ c4 ~@2 f#3 ~@2 a3 ~ c4 ~@2",
  AN: "b3 ~@2 d4 ~ g4 ~@2 b3 ~@2 d4 ~ g4 ~@2", AO: "a#3 ~@2 d4 ~ g4 ~@2 a#3 ~@2 d4 ~ g4 ~@2",
  AP: "a3 ~@2 d4 ~ f4 ~@2 a3 ~@2 d4 ~ f4 ~@2", AQ: "b3 ~@2 d4 ~ f4 ~@2 b3 ~@2 d4 ~ f4 ~@2",
  AR: "g3 ~@2 c4 ~ e4 ~@2 e3 ~@2 g3 ~ c4 ~@2", AS: "e4@3 ~@5 a#5@3 c6@2 a#5@3", AT: "f5@3 g5@2 f5@3 d5@3 e5@2 d5@3",
  AU: "a#4@3 c5@2 a#4@3 a4@3 a#4@2 a4@3", AV: "g#4@3 b4@2 d5@3 f5@3 e5@2 d5@3", AW: "c5@3 b4@2 a4@3 a#5@3 c6@2 a#5@3",
  AX: "g#4@3 f5@2 e5@3 d5@3 c5@2 b4@3", AY: "a4@3 c5@2 a4@3 f4@3 a4@2 f4@3", AZ: "e4@3 a4@2 e4@3 d#4@3 a4@2 d#4@3",
  BA: "e4@3 a4@2 e4@3 f4@3 a4@2 f4@3", BB: "e4 ~@2 a4 ~ c5 ~@2 e5 ~@2 a5 ~ c6 ~@2", BC: "e6@3 ~@5 [b4,d5,g#5]@4 ~@4",
  BD: "[a4,c5,f#5,a5]@4 ~@4 f#4@3 a4@2 f#4@3", BE: "e4@3 a4@2 e4@3 f#4@3 a4@2 f#4@3", BF: "e6 ~@7 [b4,d5,e5,g#5]@4 ~@4",
  BG: "[c#5,e5,a5]@3 a4@2 c#4@3 e4@3 a4@2 c#4@3", BH: "e4@3 a4@2 c#4@3 e4@3 a4@2 c#4@3",
  BI: "e4@3 g#4@2 d4@3 e4@3 g#4@2 d4@3", BJ: "e4@3 a#4@2 c#4@3 e4@3 a4@2 c#4@3",
  BK: "e4@3 g#4@2 c#4@3 f#4@3 g#4@2 c4@3", BL: "e4@3 g#4@2 c#4@3 e4@3 g#4@2 d4@3",
  BM: "e4 ~@2 c#5 ~ a4 ~@2 e4 ~@2 c#4 ~ a3 ~@2", BN: "~@8 [g#4,b4,e5]@3 ~@5", BO: "a4@3 ~@5 d#6@3 e6@2 d6@3",
  BP: "c6@3 b5@2 a5@3 b5 a5@2 g#5@2 a5@3", BQ: "a#5@3 b5@2 d5 ~@2 f5@3 e5@2 c5 ~@2",
  BR: "f5@3 e5@2 d5 ~@2 f5@3 e5@2 d5 ~@2", BS: "c5@3 b4@2 a4@3 d#6@3 e6@2 d6@3",
  BT: "f5@3 e5@2 d5 ~@2 d5@3 c5@2 b4 ~@2", BU: "a4@3 ~@13", BV: "a4@3 c5@2 e5@3 a5 ~@2 a5 ~ a5 ~@2",
  BW: "a5@3 c6@2 e6@3 a6 ~@2 a6 ~ a6 ~@2", BX: "a6 ~@2 a6 ~ a6 ~@2 a6 ~@2 a6 ~ a6 ~@2", BY: "a6 [b6,c7] d7 e7@3 ~@10",
})).s("gm_piano").gain(0.35)

// other · piano · "Left Hand"
const piano_2 = note(`<
  A B C D E F G H I J K L M N O@8 P@2 Q R S@4 T@8 U V W X Y@2 Z AA AB AC AD AE@3 Z AA AB AC AD AF AG AH AI AJ AG AH AI
  AK AL AM AN AO@2 AP AO AQ AL AM AN AO@2 AP AO AR AS@2 AT AU AS@2 AT AV AW AX AW AY AZ BA AW BB AW AY AZ BC BD@2 BE
  BD@2 BF BG BH BI BD BE BD@2 BJ BK BL@2 BM@2 BL@2 BM@2 BN Y@2 Z AA AB AC AD AE@3 Z AA AB AC AD AF AG AH AI AJ AG AH AI
  AK AL AM AN AO@2 AP AO AQ AL AM AN AO@2 AP AO AR AS@2 AT AU AS@2 AT AV AW AX AW AY AZ BA AW BB AW AY AZ BC BD@2 BE
  BD@2 BF BG BH BI BD BE BD@2 BJ BK BL@2 BM@2 BL@2 BM@2 BO@2 BP BQ
>`.pickRestart({
  A: "a3@2 c4@2 ~ e4@2 e3@2 c4@2 e4@2 ~ a3@2", B: "c4@2 e4@2 ~ e3@2 c4@2 e4@2 g#3@2 ~ b3@2",
  C: "e4@2 e3@2 b3@2 ~ e4@2 g#3@2 b3@2 ~ e4@2", D: "e3@2 b3@2 e4@2 ~ a3@2 c4@2 e4@2 ~ e3@2",
  E: "c4@2 e4@2 a3@2 ~ c4@2 e4@2 e3@2 ~ c4@2", F: "e4@2 g#3@2 b3@2 ~ e4@2 e3@2 b3@2 ~ e4@2",
  G: "g#3@2 b3@2 e4@2 ~ e3@2 b3@2 e4@2 a3@2 ~", H: "c4@2 e4@2 a3@2 ~ c4@2 d4@2 g3@2 a#3@2 ~",
  I: "c4@2 f3@2 a3@2 ~ b3@2 e3@2 g#3@2 b3@2 ~", J: "e3@2 g#3@2 b3@2 ~ e3@2 a3@2 c4@2 e3@2 ~",
  K: "b3@2 d4@2 e3@2 a3@2 ~ c4@2 a3@2 c4@2 ~", L: "d4@2 g3@2 a#3@2 c4@2 ~ f3@2 a3@2 b3@2 ~",
  M: "e3@2 g#3@2 b3@2 e3@2 ~ g#3@2 b3@2 e3@2 ~", N: "a3@2 c4@2 e3@2 b3@2 ~ d4@2 c4@2 e4@2 ~",
  O: "[c4@2 d3@2 a#3@2 d4@2 ~ f3@2 a#3@2 d4@2 d3@2 ~ a#3@2 d4@2 f3@2 ~ a#3@2 d4@2 d3@2 a#3@2 ~ d4@2 e3@2 b3@2 ~ d4@2 g#3@2 b3@2 e4@2 ~ a3@2 c4@2 e4@2 ~ d3@2 a#3@2 d4@2 f3@2 ~ a#3@2 d4@2 d3@2 a#3@2 ~ d4@2 f3@2 a#3@2 ~ d4@2 d3@2 a#3@2 d4@2 ~ e3@2 b3@2 d4@2 ~ g#3@2 b3@2 e4@2 a3@2 ~ c4@2 a3@2 f3@2 ~ a3@2 f3@2 e3@2 a3@2 ~ e3@2 d#3@2 a3]/8",
  P: "[~@2 d#3@2 e3@2 a3@2 e3@2 ~ f3@2 a3@2 f3@2 e3@2 ~ a3@2 e3@2 d#3@2 ~ a3@2 d#3@2 e3]/2",
  Q: "~ a3 ~@2 c4 ~ e4 ~ a4 ~@2 c5 ~ e5 ~@2", R: "~@4 [e3,e4]@4 ~@3 [d#3,d#4]@4 ~",
  S: "[~ f#3@2 ~ a3@2 f#3@2 e3@2 a3@2 ~ e3@2 d#3@2 a3@2 ~ d#3@2 e3@2 a3@2 e3@2 ~ f#3@2 a3@2 f#3@2 ~ e3@2 a3@2 e3@2 d#3@2 ~ a3@2 d#3@2 e3 ~@2 a3 ~ c4 ~ e4 ~ a4 ~@2 c5 ~ e5]/4",
  T: "[~@6 [e3,e4]@4 ~@3 a2@2 e3@2 a3@2 a2@2 ~ e3@2 g#3@2 a2@2 ~ e3@2 a3@2 a2@2 e3@2 ~ g#3@2 a2@2 e3@2 ~ a3@2 d3@2 f3@2 a3@2 ~ e3@2 a3@2 c4@2 ~ e3@2 g#3@2 b3@2 a3@2 ~ c4@2 e4@2 e3@2 g#3@2 ~ e4@2 a3@2 c4@2 ~ e4@2 e3@2 g#3@2 e4@2 ~ a3@2 c4@2 e4@2 ~ d3@2 f3@2 a3@2 c3@2 ~ e3@2 a3@2 b2@2 ~ d3@2 g#3@2 a2@2 ~@4]/8", // E
  U: "~@4 [a2,e3,c4] ~@3", V: "~@5 [a2,e3,c4]@2 ~@9", W: "~@3 [a3,c4,e4]@6 ~ [a3,c4,e4]@6", X: "~ [a3,c4,e4]@4 ~@11",
  Y: "[[a2,e3]@31 ~]/2", Z: "[f2,f3]@7 ~ a2@7 ~", AA: "c3@7 ~ b2@7 ~", AB: "a2@8 g2@7 ~", AC: "f2@8 d2@7 ~",
  AD: "e2@8 e3@7 ~", AE: "[a2@3 ~@13 a2@31 ~, ~@8 e3@39 ~]/3", AF: "a2@3 c3@2 e3@3 a3@3 c4@2 d4@3",
  AG: "g3@3 a#3@2 c4@3 f3@3 a3@2 b3@3", AH: "e3@3 g#3@2 b3@3 e3@3 g#3@2 b3@3", AI: "e3@3 a3@2 c4@3 e3@3 b3@2 d4@3",
  AJ: "e3@3 a3@2 c4@3 a3@3 c4@2 d4@3", AK: "[a3,c4]@4 ~@4 c3@3 ~@5", AL: "c2@3 ~@5 c3@3 ~@5", AM: "a1@3 ~@5 a2@3 ~@5",
  AN: "d2@3 ~@5 d3@3 ~@5", AO: "g2@8 g3@3 ~@5", AP: "d2@8 d3@3 ~@5", AQ: "c3@3 ~@5 c3@3 ~@5",
  AR: "c3@3 g3@2 c4@3 d3@3 a#3@2 d4@3", AS: "f3@3 a#3@2 d4@3 d3@3 a#3@2 d4@3", AT: "e3@3 b3@2 d4@3 g#3@3 b3@2 e4@3",
  AU: "a3@3 c4@2 e4@3 d3@3 a#3@2 d4@3", AV: "a3@3 c4@2 a3@3 f3@3 a3@2 f3@3", AW: "e3@3 a3@2 e3@3 d#3@3 a3@2 d#3@3",
  AX: "e3@3 a3@2 e3@3 f3@3 a3@2 f3@3", AY: "e3 ~@2 a3 ~ c4 ~@2 e4 ~@2 a4 ~ c5 ~@2", AZ: "e5 ~@7 [e3,e4]@4 ~@4",
  BA: "[d#3,d#4]@4 ~@4 f#3@3 a3@2 f#3@3", BB: "e3@3 a3@2 e3@3 f#3@3 a3@2 f#3@3",
  BC: "[a2,a3]@3 e3@2 a3@3 a2@3 e3@2 a3@3", BD: "a2@3 e3@2 a3@3 a2@3 e3@2 a3@3", BE: "a2@3 e3@2 b3@3 a2@3 e3@2 b3@3",
  BF: "f#2@3 c#3@2 f#3@3 g2@3 c#3@2 g3@3", BG: "g#2@3 e3@2 g#3@3 g#2@3 d#3@2 g#3@3", BH: "[c#3,g#3]@7 ~ [e2,e3]@7 ~",
  BI: "[a1,a2]@3 e3@2 a3@3 a2@3 e3@2 a3@3", BJ: "a2 ~@2 c#4 ~ a3 ~@2 e3 ~@2 c#3 ~ a2 ~@2",
  BK: "[e2,e3]@3 ~@5 [e3,d4]@3 ~@5", BL: "a3@3 c4@2 e4@3 e3@3 c4@2 e4@3", BM: "g#3@3 b3@2 e4@3 e3@3 b3@2 e4@3",
  BN: "[a3,c4]@3 ~@13", BO: "[a2,e3,c4]@3 ~@13", BP: "[a3,c4,e4]@7 ~ [a3,c4,e4]@7 ~", BQ: "[a3,c4,e4] ~@3",
})).s("gm_piano").gain(0.45)

stack(piano, piano_2)

More by Sam Rahbari