Strudelify

Arab Times

Anna Contreras

KeyE majorTempo129 bpm
0:00/0:00
// Arab Times — Anna Contreras
// 129 bpm, 8/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: metre changes (12/8 at bar 1, 8/8 at bar 3) are rendered on a constant 8/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5851951; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(129/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.

// other · piano
const piano = note(`<
  A@4 B C@3 D E@3 F G@4 H I@3 J K@2 L@3 M@2 N@2 O@2 P@2 Q R S@2 T U V@2 W X Y Z AA AB AC AD AE AF AG@3
>`.pickRestart({
  A: "[~@8 [e2,e3]@4 [e2,e3]@4 [e2,e3]@4 [e2,e3]@3 [e2,e3]@4 [e2,e3]@4 [e2,e3]@4 [e2,e3]@4 [e2,e3]@4 [e2,e3]@4 [e2,e3]@3 [e2,e3]@4 [e2,e3]@4 e2@4 e2@4 [e2,e3]@4 e2@4 e2@3 [e2,e3]@4 e2@4 [e2,e3]@4 e2@4 e2@3]/4", // E
  B: "~ [e2,e3]@3 e2@4 e2@4 [e2,e3]@4 e2@4 [e2,e3]@4", // E
  C: "[e2@4 e2@3 [e2,e3]@4 e2@4 e2@4 [e2,e3]@4 e2@4 [e2,e3]@4 e2@3 e2@4 [e2,e3]@4 e2@4 e2@4 [e2,e3]@4 e2@3 [e2,e3]@4 e2@4 e2@4 [e2,e3]@3]/3", // E
  D: "~ e2@4 e2@4 [e2,e3]@3 e2@4 [f2,f3]@4 f2@4", // E F
  E: "[f2@4 [f2,f3]@4 f2@4 f2@3 [f2,f3]@4 f2@4 [g2,g3]@4 g2@4 g2@4 [g2,g3]@3 g2@4 g2@4 [g2,g3]@4 g2@4 [f2,f3]@4 f2@4 f2@3 [f2,f3]@4 f2@3]/3", // F G F
  F: "~ f2@4 [f2,f3]@4 [e2,e3]@4 [d2,d3]@4 d2@3 d2@4", // F E D
  G: "[[d2,d3]@4 d2@4 [d2,d3]@4 [d2,d3]@4 d2@4 [d2,d3]@3 d2@4 d2@4 [d2,d3]@4 d2@4 [d2,d3]@4 [d2,d3]@3 d2@4 [e2,e3]@4 e2@4 e2@4 [e2,e3]@4 e2@4 e2@3 [f2,f3]@4 f2@4 [e2,e3]@4 e2@4 e2@4 [e2,e3]@3]/4", // D E F E
  H: "~ e2@3 e2@4 [e2,e3]@4 e2@4 [d2,d3]@4 d2@4", // E D
  I: "[d2@3 [d2,d3]@4 d2@4 [d2,d3]@4 [d2,d3]@4 d2@4 [d2,d3]@4 d2@3 d2@4 [d2,d3]@4 d2@4 [d2,d3]@4 [d2,d3]@4 d2@4 [e2,e3]@3 e2@4 [e2,e3]@4 [e2,e3]@4 e2@3]/3", // D E
  J: "~ [e2,e3]@4 [f2,f3]@3 f2@4 [e2,e3]@4 e2@4 e2@4", // E F E
  K: "[[e2,e3]@4 e2@4 [e2,e3]@4 [e2,e3]@4 e2@4 ~ [e2,e3]@4 e2@4 ~ [e2,e3]@4 [e1,e2]@14]/2", // E
  L: "[[e1,e2]@9 [e1,e2]@13 [e1,e2]@14 [e1,e2]@9 ~@5 [e3,e4]@9 ~@9 [e1,e2]@4, ~@45 [e1,e2]@14 [e1,e2]@9 ~@4, ~@7 [e3,e4]]/3", // E
  M: "[~@5 [f3,f4]@4 ~@5 [e3,e4]@9 ~@4 [e3,e4]@9 [e3,e4]@11 ~, [f1,f2]@9 [e1,e2]@14 [e1,e2]@25]/2", // F E F E
  N: "[b3@3 b3@3 b3@2 b3@3 b3@3 b3@2, e3@23 ~]/2", O: "[c4@3 c4@3 c4@2 a3@3 a3@3 c4@2, e3@23 ~]/2",
  P: "b3@3 b3@3 b3@2, e3@23 ~", Q: "c4@3 c4@3 c4@2, e3@23 ~", R: "a3@3 a3@3 c4@2, e3@23 ~",
  S: "[e3,b3]@3 [e3,b3]@3 [e3,b3]@2", T: "[e3,c4]@3 [e3,c4]@3 [e3,c4]@2", U: "[e3,a3]@3 [e3,a3]@3 [e3,c4]@2",
  V: "[~@2 e3@7 [e2,b2]@9 [e2,b2]@9 [e2,b2,e3]@9 [e3,b3]@6 [e2,b2]@6, e2@3 ~@13, ~ b2@8 ~@39]/2", // E5
  W: "~@2 c4@7 [e2,a2]@9 ~@2 c4@4, a2@3 ~@3 a2@2, ~ e3@8 ~@10 e3@5", X: "[a2,e3,a3]@3 [e2,a2,e3]@3 [c3,e3,c4]@2",
  Y: "b2 c3 d#3 e3 f#3 e3 d#3 c3", Z: "b2 c3 d#3 c3 b2 a2 g#2 d#3", AA: "a2 b2 c3 b2 a2@2 e3@2",
  AB: "d#3@6 c3@6 d#3@3 c3@3 b2@4 c3 ~", AC: "b3@3 c4 d#4 e4 d#4 c4", AD: "b3@9 c4@3 d#4@3 c4 b3 ~ a3@3 g#3@3",
  AE: "b3 a3@8 b3@3 c4@3 d#4@3 b3@3 c4@3", AF: "a3@3 e4@3 d#4 e4 ~ d#4 c4 ~ b3@4 a3 ~ g#3@3 a3@3",
  AG: "[~ b3@69 ~@2, [b2,e3]@35 ~]/3", // E5
})).s("gm_piano").gain(0.25)

stack(piano)