Strudelify

Pantomime

Falla

KeyE minorTempo141 bpm
0:00/0:00
// Pantomime — Falla
// 141 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 128 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(141/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 · "A.PIANO"
const piano = note(`<
  ~@7 A@2 B C@8 D@2 E F@4 G H@2 ~@3 I@5 J K@4 L M@4 N O@2 P@2 Q R@2 S@2 T U V W ~ X@2 Y Z AA AB ~@3 AC AD AE@4 AF AG@6
  AH@3 AI AJ AK@4 ~@2 AL@3 AM AN@4 AO AP@5 AQ@2 AR AS@2 AT@2 AU AV AW AX@3 AY@2 AZ@4 BA
>`.pickRestart({
  A: "[~@15 c2@5 ~ g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@4]/2", B: "~ d#3@5 ~ g2@5 ~ c2@5 ~ g2@5",
  C: "[~ d#3@5 g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@5 ~ c2@5 g2@5 ~ d#3@5 ~ g2@5 ~ c2@5 g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@5 ~ d#3@5 ~ g2@5 c2@5 ~ g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@3, ~@23 f3@11 ~ e3@11 f3@11 ~ e3@11 f3@12 e3@11 f3@11 e3@11 ~ g3@11 e3@12 g3@11 e3@11 g3@11 ~ e3@11 g3@9]/8",
  D: "[~@3 c2@5 ~ g2@5 ~ d#3@5 ~ g2@5 ~ c2@5 g2@4 ~ c3 [g3,a3,d#4]@5 ~ g2@4, ~ e3@4 g3@4 ~@7]/2", // Am7b5
  E: "~ c2@5 ~ g2@4 ~ c3 [g3,a3,d#4]@5 ~ g2@5", // Am7b5
  F: "[c2@5 ~ g2@4 c3 ~ [g3,a3,d#4]@5 ~ g2@5 c2@5 ~ g2@4 c3 ~ [g3,a3,d#4]@5 g2@5 ~ c2@5 ~ g2@4 c3 [g3,a3,d#4]@5 ~ g2@5 ~ c2@5 ~ g2@4 c3 [g3,a3,d#4]@5 ~ g2@5 ~ c2@4]/4", // Am7b5
  G: "~@2 g2@4 c3 [g3,a3,d#4]@5 ~ g2@5 c2@5 ~", // Am7b5
  H: "[g2@4 ~ c3 [g3,a3,d#4]@5 ~ g2@5 c2@5 ~ g2@4 ~ c3 [g3,a3,d#4]@5 ~ g2@5 c2@6 ~@2]/2", // Am7b5
  I: "[~@12 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 ~ d2@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@5, ~@21 [a2,e3]@2 ~@17]/5", // Dsus2 A5
  J: "~ [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6", // Dsus2
  K: "[[d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,d#3]@5 ~ [d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@5]/4", // Dsus2 D
  L: "~ [d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@6", // D
  M: "[[d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2]@5 [d2,a2]@6 [d2,a2]@5 [d2,a2]@6 e2@6 a1@6 e2@5 a2@6 f#2@6 b1@6 f#2@5 b1@6 f#2@5]/4", // D D5
  N: "~ b1@6 f#2@5 b1@6 [b2,f#3]@2 ~ [e3,c#4]@2 ~", // B5 C#m
  O: "[[b2,f#3]@2 ~ [e3,c#4]@2 [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 [b2,f#3]@2 ~]/2", // B5 C#m B5 C#m B5 C#m B5 C#m …
  P: "[[e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2]/2", // C#m B5 C#m B5 C#m B5 C#m B5 …
  Q: "~ [b2,f#3]@2 ~ [e3,c#4]@2 [b2,f#3]@2 ~@2 e3@2 [b2,f#3]@2 ~ [e3,b3]@2 ~ [b2,f#3]@2 ~ [e3,b3]@2 ~, ~@9 c#4@2 ~@13", // B5 C#m B5 E5 B5 E5
  R: "[[b2,f#3]@2 ~ [e3,b3]@2 [b2,f#3]@2 ~ [e3,b3]@2 ~ [b2,f#3]@2 ~ [e3,a3]@2 ~ [b2,f#3]@2 ~ [e3,a3]@2 ~ [b2,f#3]@2 ~ [e3,a3]@2 [b2,f#3]@2 ~ [e3,a3]@2 ~ [b2,f#3]@2 ~ [d3,g3]@2 ~ [b2,f#3]@2 ~ [d3,g3]@2 ~ [b2,f#3]@2]/2", // B5 E5 B5 E5 B5 A5 B5 A5 …
  S: "[[d3,g3]@2 ~ [b2,f#3]@2 ~ [d3,g3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2]/2", // G5 B5 G5 Em D5 Em D5 Em …
  T: "~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~", // Em D5 Em D5 Em D5 Em D5
  U: "[b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 [b2,g3]@2", // Em D5 Em D5 Em D5 Em D5 …
  V: "~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~@6", // D5 Em D5 Em D5 Em
  W: "~@3 [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~ [d3,a3]@2 ~ [b2,g3]@2 ~@7", // Em D5 Em D5 Em
  X: "[~@9 b2@2 ~@4 b2@2 ~@4 b2@2 ~@3 b2@2 ~@4 b2@2 ~@4 b2@2 ~@2 f3 ~ [e3,f3] e3 f3 e3, ~@7 e2@5 e2@5 ~ e2@5 e2@6 e2@5 ~ e2@5 ~ e3@2 ~@5]/2", // Fmaj7
  Y: "~ [d#3,f3] ~ e3 e2@3 b2@2 ~ e2@3 b2@2 ~ e3 f3 e3 ~ [e3,f3] ~ [e3,f3] f3", // D#sus2 Fmaj7
  Z: "d#3 ~ e3 e2@3 b2@2 ~ e2@3 b2@2 ~@10", AA: "~@14 e4 f4 e4 f4 e4 f4 e4 f4 e4 f4",
  AB: "e4 ~@11 e4@2 f4 e4 f4 e4 f4 e4 f4 e4 f4 e4", AC: "~@19 c2@5", AD: "~ g2@5 ~ d#3@5 ~ g2@5 c2@5 ~",
  AE: "[g2@5 d#3@5 ~ g2@5 ~ c2@5 ~ g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@5 ~ c2@5 g2@5, ~@51 f3@11 ~ e3@11 f3@11 ~ e3@10]/4",
  AF: "~ d#3@5 ~ g2@5 ~ c2@5 g2@5 ~, ~ f3@12 e3@11",
  AG: "[d#3@5 g2@5 ~ c2@5 ~ g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@5 ~ d#3@5 g2@5 ~ c2@5 ~ g2@5 d#3@5 ~ g2@5 ~ c2@5 ~ g2@5 ~ d#3@5 ~ g2@5 c2@5 ~ g2@4 ~ c3 [g3,a3,d#4]@5 ~, f3@11 e3@11 ~ g3@11 e3@11 ~ g3@11 e3@12 g3@11 e3@11 g3@12 e3@12 g3@11 ~@18]/6", // Am7b5
  AH: "[g2@5 c2@5 ~ g2@4 c3 ~ [g3,a3,d#4]@5 ~ g2@5 c2@5 ~ g2@4 c3 ~ [g3,a3,d#4]@5 ~ g2@5 c2@5 ~ g2@4 c3 ~ [g3,a3,d#4]@5 g2@4]/3", // Am7b5
  AI: "~@2 c2@5 ~ g2@4 c3 [g3,a3,d#4]@5 ~ g2@5", AJ: "~ c2@5 ~ g2@4 c3 [g3,a3,d#4]@5 ~ g2@5 ~",
  AK: "[c2@5 ~ g2@4 c3 [g3,a3,d#4]@5 ~ g2@5 ~ c2@5 g2@4 ~ c3 [g3,a3,d#4]@5 ~ g2@5 ~ c2@5 g2@4 ~ c3 [g3,a3,d#4]@5 ~ g2@5 ~ c2@5 ~@22]/4", // Am7b5
  AL: "[~@16 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@5]/3", // Dsus2
  AM: "~ [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6", // Dsus2
  AN: "[[d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@6 [d2,a2,e3]@5 [d2,a2,e3]@5]/4", // Dsus2
  AO: "~ [d2,a2,e3]@6 [d2,a2,d#3]@5 ~ [d2,a2]@5 [d2,a2,d#3]@6, ~@2 d#3 ~", // Dsus2 D D5 D
  AP: "[[d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@5 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2,d#3]@6 [d2,a2]@5 [d2,a2]@6 [d2,a2]@6 [d2,a2]@5 e2@6 a1@6 e2@6 a2@5]/5", // D D5
  AQ: "[f#2@5 ~ b1@5 f#2@6 b1@6 f#2@6 b1@5 f#2@6 b1@6 [b2,f#3]@2]/2", // B5
  AR: "~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~", // C#m B5 C#m B5 C#m B5 C#m B5
  AS: "[[e3,c#4]@2 ~ [b2,f#3]@2 [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 [e3,c#4]@2 ~]/2", // C#m B5 C#m B5 C#m B5 C#m B5 …
  AT: "[[b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 ~ [e3,c#4]@2 ~ [b2,f#3]@2 [e3,c4]@2 ~ [b2,f#3]@2 ~ [e3,c4]@2 ~ [b2,f#3]@2 ~ [e3,c4]@2 ~ [b2,f#3]@2 ~ [e3,c4]@2 [b2,e3,f#3,c4]@4 ~@4]/2", // B5 C#m B5 C#m B5 C#m B5 C …
  AU: "~@13 [a2,e3,f#3,c4]@4 ~@7", AV: "~@10 [e2,b2,e3]@2 ~ b3@2 b3@2 ~ c#4@2 d4@2 c#4@2",
  AW: "~ b3@2 a3@2 ~ b3@2 a3@2 ~ b3@2 a3@2 d4@2 ~@2 c#4 b3@4",
  AX: "[~ [e2,b2,e3]@2 ~ b3@2 b3@2 ~ c#4@2 d4@2 c#4@2 ~ b3@2 a3@2 b3@3 a3@2 b3@2 ~ a3@2 d4@2 ~@2 c#4 b3@5 [e2,b2,e3]@2 b3@2 ~ b3@2 c#4@3 d4@2 ~ c#4 ~ b3@4 [e2,b2,e3]@2 ~ b3@2 b3@2 ~ c#4@2 d4@2 ~]/3", // E5
  AY: "[~ c#4 b3@5 [e2,b2,e3]@5 [e2,b2,e3]@5 ~@5 [e2,b2,e3]@5 ~@4 [e2,b2,e3]@5 [e2,b2,e3]@5 [e2,b2,e3]@5 ~@2]/2", // E5
  AZ: "[~@3 e3@5 [e2,b2,e3]@5 [e2,b2,e3]@5 ~@4 [e2,b2,e3]@5 ~@5 [e2,b2,e3]@5 ~@5 [e2,b2,e3]@4 [e2,b2,e3]@5 [e2,b2,e3]@5 [e2,b2,e3]@5 [e2,b2,e3]@5 [e2,b2,e3]@5 [e2,b2,e3]@5 ~@4 [e2,b2,e3]@5 ~@5 [e2,b2,e3]@5 ~, ~@2 [e2,b2]@5 ~@89]/4", // E5
  BA: "~@4 [e2,b2,e3]@5 ~@4 [a2,e3]@5 [a1,a2]@5 ~", // E5 A5 A
})).s("gm_piano").gain(0.36)

stack(piano)

More by Falla