Strudelify

Paramount Rag

Scott James

KeyA♭ majorTempo95 bpm
0:00/0:00
// Paramount Rag — Scott James
// 95 bpm, 2/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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 B C D E F G F H I J K L M G M H I N O P F G F H I J K L M G M H I N O Q R S T U V W X Y R S Z U V AA AB Q R S T U V
  W X Y R S Z U V AA AB AC AD AE AF@2 AD AG AH AI AD AE AJ@2 AK AL AM AN AD AE AF@2 AD AG AH AI AD AE AJ@2 AK AL AM AO
  AP@2 AQ@2 AR@2 AS AT AP@2 AU@2 AV AW AX AY AZ@2 BA@2 BB@2 BC BD AZ@2 BE@2 BF BG BH BI
>`.pickRestart({
  A: "~@10 d6 ~ eb6@2 e6 ~", B: "[f5,ab5,c6,f6]@2 eb6 ~ [eb5,ab5,c6,f6]@2 eb6 ~ [d5,ab5,c6,f6,ab6]@2 d5 ~ eb5@2 e5 ~",
  C: "[f4,ab4,c5,f5]@2 eb5 ~ [eb4,ab4,c5,f5]@2 eb5 ~ [d4,ab4,c5,f5,ab5]@2 d4 ~ eb4@2 e4 ~", // Fm Fm7 Dm7b5
  D: "[c4,f4]@2 eb4 ~ [c4,f4]@2 eb4 ~ [c4,f4,ab4]@4 [b3,f4,g4]@2 ~@2", // F5 Fm G7
  E: "[c4,e4,g4]@4 ~@4 [eb4,g4,eb5]@2 db6 ~ eb6@2 e6 ~", // C Eb
  F: "[b5,f6]@2 [c6,eb6] ~ [b4,f5]@2 [c5,eb5] ~ [b3,f4]@2 [c4,eb4] ~ [eb4,b4]@2 ab4 ~", // Bdim Cm Bdim Cm Bdim Cm Abm
  G: "[gb4,c5]@2 [g4,bb4]@2 ~@2 [eb4,eb5]@4 d6 ~ eb6@2 e6 ~", H: "[gb4,c5]@2 [g4,bb4]@2 ~@2 [eb4,eb5]@4 e6 ~ f6@2 g6 ~",
  I: "ab6@2 f6 ~ d6@2 b5@2 ab5@2 f5@2 d5@2 b4@2", J: "[eb4,c5,eb5]@2 [f4,f5] ~ [g4,g5]@2 [f4,c5,f5]@4 eb5 ~ d5 ~ c5 ~",
  K: "d5@2 bb5 ~ [c5,d5,ab5]@2 bb5 ~ [bb4,d5,g5]@2 bb5 ~ [ab4,d5,f5]@2 bb5 ~", // Dm7b5 Gm Ddim
  L: "[eb5,g5,bb5,eb6]@2 [f5,f6] ~ [gb5,gb6]@2 [g5,db6,eb6,g6]@4 d6 ~ eb6@2 e6 ~", // Eb F Gb Eb7
  M: "[b5,f6]@2 [c6,eb6] ~ [b4,f5]@2 [c5,eb5] ~ [bb3,f4]@2 [c4,eb4] ~ [eb4,b4]@2 ab4 ~", // Bdim Cm Bdim Cm Bb5 Cm Abm
  N: "[eb4,eb5]@2 [f4,f5] ~ [g4,g5]@2 [f4,c5,f5]@4 eb5 ~ d5 ~ c5 ~", // Eb F G F5
  O: "[f4,ab4,d5]@2 bb5 ~ [c5,d5,ab5]@2 [bb4,d5,g5]@4 [c5,eb5,c6] ~ [bb4,db5,bb5]@3 ~", // Ddim Dm7b5 Gm Cm Bbm
  P: "[ab4,c5,ab5]@4 [gb4,c5,eb5]@3 ~ [g4,db5,eb5]@2 db6 ~ eb6@2 e6 ~", // Ab Cdim Eb7
  Q: "[ab4,c5,ab5]@4 [eb4,eb5] ~ [eb4,eb5]@4 d5 ~ eb5@2 e5 ~", R: "[g4,db5,f5]@10 d6 ~ eb6@2 e6 ~",
  S: "[g5,db6,f6]@2 d7 ~ eb7@2 e7 ~ [g6,db7,f7]@2 d5 ~ eb5@2 e5 ~", T: "[gb4,c5,f5]@10 d6 ~ eb6@2 e6 ~",
  U: "[gb5,c6,f6]@2 d7 ~ eb7@2 e7 ~ [gb6,c7,f7]@2 g5 ~ ab5@2 a5 ~", // F
  V: "[e5,bb5]@2 [f5,ab5] ~ [e5,bb5]@2 [f5,ab5] ~ [e4,bb4]@2 [f4,ab4] ~ [e4,bb4]@2 [f4,ab4] ~", // Edim Fm Edim Fm Edim Fm Edim Fm
  W: "[eb4,ab4,eb5]@5 ~ [f4,c5,f5]@8 ~@2", // Ab5 F5
  X: "[bb4,d5,ab5]@2 f5 ~ [bb4,d5,ab5]@2 f5 ~ [bb4,d5,ab5]@2 f5 ~ [bb4,d5,ab5]@2 f5 ~", // Bb7
  Y: "[bb4,db5,bb5]@5 ~ [eb5,g5,eb6]@4 d5 ~ eb5@2 e5 ~", Z: "[g4,c5,f5]@10 d6 ~ eb6@2 e6 ~",
  AA: "[eb4,ab4,c5,eb5]@5 ~ [f4,a4,c5,f5]@4 eb5 ~ d5@2 c5 ~", // Ab F
  AB: "[f4,ab4,d5]@2 bb5 ~ [c5,d5,ab5]@2 [bb4,d5,g5]@3 ~ [c5,eb5,c6] ~ [bb4,db5,bb5]@3 ~", // Ddim Dm7b5 Gm Cm Bbm
  AC: "[ab4,c5,eb5,ab5]@4 ~@4 [ab4,c5,eb5,ab5]@2 f4 ~ gb4@2 g4 ~", AD: "~@2 f5@2 ~@2 bb4@4 a4 ~ bb4@2 b4 ~, ab4@7 ~@9",
  AE: "~@2 gb5@2 ~@2 eb5@4 d5 ~ eb5@2 e5 ~, c5@7 ~@9",
  AF: "[f5@2 bb5 ~ ab5@2 f5 ~ [a4,eb5]@2 db5@3 ~ [ab4,db5,f5,ab5]@8 ~@4 f4 ~ gb4@2 g4 ~]/2", // Adim Db
  AG: "c5@2 eb5@2 ~@2 [c5,f5,ab5,c6]@4 ab5 ~ c6@2 f6 ~", // Fm
  AH: "[f5,ab5,c6,f6]@2 eb6 ~ c6@2 ab5 ~ [bb4,db5,g5]@2 f5 ~ db5@2 bb4 ~", AI: "[gb4,ab4,c5,eb5]@10 f4 ~ gb4@2 g4 ~",
  AJ: "[f5@2 bb5 ~ ab5@2 f5 ~ [a4,eb5]@2 db5@3 ~ [a4,c5,f5]@9 ~@9]/2", AK: "f5@2 e5 ~ f5@2 bb5@4 c6 ~ bb5@2 ab5 ~",
  AL: "g5@2 f6 ~ e6@2 eb6@4 db6 ~ f5@2 g5 ~", AM: "c6@2 bb5 ~ f5@2 [g4,db5,f5]@5 ~ [gb4,ab4,c5,eb5]@2 ~@2",
  AN: "[f4,ab4,db5]@4 ~@6 f4 ~ gb4@2 g4 ~", AO: "[f4,ab4,db5]@4 [ab5,ab6]@3 ~ [ab5,ab6]@4 [f5,ab5,f6]@2 ~@2",
  AP: "[gb6@2 [gb5,db6]@4 ~@2 [gb5,c6]@4 gb6 ~ [gb5,bb5]@4 gb6 ~ [gb5,db6]@4 [gb5,c6,gb6]@4 [gb5,bb5,gb6]@2 ~@2, ~@3 gb6@3 ~@10]/2", // Gb5 Gbdim Gb Gb5 Gbdim Gb
  AQ: "[f6 ~ [f5,db6]@4 ~@2 [f5,c6]@4 f6 ~ [f5,bb5]@4 f6 ~ [f5,db6]@3 ~ [f5,c6,f6]@4 [f5,bb5,f6]@3 ~, ~@3 f6@3 ~@10]/2", // Db F5 Bb5 Db F5 Bb5
  AR: "[f5,f6]@2 [gb5,gb6]@2 ~@2 [eb5,c6,eb6]@5 ~@5", AS: "[a5,db6,f6,a6]@2 [bb5,db6,f6,bb6]@4 [f5,ab5,db6,f6]@5 ~@5",
  AT: "~@4 [ab5,db6,f6,ab6]@3 ~ [ab5,db6,f6,ab6]@4 [f5,ab5,f6]@2 ~@2", // Db Fm
  AU: "[f6 ~ [f5,db6]@4 ~@2 [f5,c6]@4 f6 ~ [f5,bb5]@4 f6 ~ [f5,db6]@3 ~ [eb5,gb5,c6,eb6]@4 [db5,e5,bb5,db6]@3 ~, ~@3 f6@3 ~@10]/2", // Db F5 Bb5 Db Cdim Bbdim
  AV: "[c5,f5,ab5,c6]@3 ~ [c5,e5,bb5]@7 ~ [c5,f5,ab5]@2 ~@2", AW: "[a4,eb5,gb5]@3 ~ [g4,db5,f5]@7 ~ [gb4,c5,f5]@2 ~@2",
  AX: "[f4,ab4,f5]@3 ~ [c5,gb5,bb5]@5 ~ ab5 ~ [c5,gb5,bb5]@2 ab5 ~", // Fm Cm7b5
  AY: "[db5,f5,ab5,db6]@4 [ab5,ab6]@3 ~ [ab5,ab6]@4 [f5,ab5,f6]@2 ~@2", // Db Ab Fm
  AZ: "[gb5@2 [gb4,db5]@4 ~@2 [gb4,c5]@4 gb5 ~ [gb4,bb4]@4 gb5 ~ [gb4,db5]@4 [gb4,c5,gb5]@4 [gb4,bb4,gb5]@2 ~@2, ~@3 gb5@3 ~@10]/2", // Gb5 Gbdim Gb Gb5 Gbdim Gb
  BA: "[f5 ~ [f4,db5]@4 ~@2 [f4,c5]@4 f5 ~ [f4,bb4]@4 f5 ~ [f4,db5]@3 ~ [f4,c5,f5]@4 [f4,bb4,f5]@3 ~, ~@3 f5@3 ~@10]/2", // Db F5 Bb5 Db F5 Bb5
  BB: "[f4,f5]@2 [gb4,gb5]@2 ~@2 [eb4,c5,eb5]@5 ~@5", BC: "[a4,db5,f5,a5]@2 [bb4,db5,f5,bb5]@4 [f4,ab4,db5,f5]@5 ~@5",
  BD: "~@4 [ab4,db5,f5,ab5]@3 ~ [ab4,db5,f5,ab5]@4 [f4,ab4,f5]@2 ~@2", // Db Fm
  BE: "[f5 ~ [f4,db5]@4 ~@2 [f4,c5]@4 f5 ~ [f4,bb4]@4 f5 ~ [f4,db5]@3 ~ [eb4,gb4,c5,eb5]@4 [db4,e4,bb4,db5]@3 ~, ~@3 f5@3 ~@10]/2", // Db F5 Bb5 Db Cdim Bbdim
  BF: "[c4,f4,ab4,c5]@3 ~ [c4,e4,bb4]@7 ~ [c4,f4,ab4]@2 ~@2", BG: "[a3,eb4,gb4]@3 ~ [g3,db4,f4]@7 ~ [gb3,c4,f4]@2 ~@2",
  BH: "[f3,ab3,f4]@3 ~ [c4,gb4,bb4]@5 ~ ab4 ~ [c4,gb4,bb4]@2 ab4 ~", BI: "[db4,f4,ab4,db5] ~ [db5,f5,ab5,db6] ~",
})).s("gm_piano").gain(0.36).pan(0.7)

// other · piano
const piano_2 = note(`<
  ~@3 A B C D C E F G H I C J C K F G L M C D C E F G H I C J C K F G L N O P Q R S T U V O P Q R S W X N Y Z AA AB S T
  U V Y Z AA R S W L AC AD AE AF AG AD AH AI AJ AD AK AL AM AN AO AP AQ AD AK AF AG AD AH AI AJ AD AE AL AM AN AO AP AR
  AS AT AU AV AW AX AY AZ AS AT AU BA BB BC BD BE BF AT BG AV AW AX AY AZ BF AT AU BH BB BC BD BI
>`.pickRestart({
  A: "f3@3 ~ eb3@4 [d3,ab3]@4 [g1,g2,g3]@2 ~@2, ab3 ~@3 ab3 ~@11", B: "[c2,c3,g3]@4 ~@4 [bb1,bb2]@3 ~ [eb2,eb3]@2 ~@2",
  C: "[ab2,ab3]@4 [eb3,ab3,c4]@3 ~ [eb2,eb3]@3 ~ [eb3,ab3,c4]@2 ~@2", // Ab Eb Ab
  D: "[bb2,bb3]@4 [eb3,g3,bb3,db4]@3 ~ [eb2,eb3]@3 ~ [g2,g3]@2 ~@2", // Bb Eb7 Eb G
  E: "[bb2,bb3]@3 ~ [eb3,g3,db4]@3 ~ [eb3,g3,db4]@3 ~ [eb2,eb3]@2 ~@2", // Bb Eb7 Eb
  F: "[d2,d3]@4 [f2,f3]@3 ~ [ab2,ab3]@3 ~ [b2,b3]@2 ~@2", G: "[c3,c4]@4 [bb2,bb3]@3 ~ [a2,a3]@3 ~ [f2,f3]@2 ~@2",
  H: "[bb2,bb3]@4 [bb1,bb2]@3 ~ [c2,c3]@3 ~ [d2,d3]@3 ~", I: "[eb2,eb3]@4 [eb3,g3,db4]@3 ~ [f2,f3]@3 ~ [g2,g3]@2 ~@2",
  J: "[bb2,bb3]@4 [eb3,g3,db4]@3 ~ [eb2,eb3]@3 ~ [g2,g3]@2 ~@2", // Bb Eb7 Eb G
  K: "[bb2,bb3]@3 ~ [eb3,g3,bb3,db4]@3 ~ [eb3,g3,bb3,db4]@3 ~ [eb2,eb3]@2 ~@2", // Bb Eb7 Eb
  L: "[bb2,bb3]@4 [d2,d3]@3 ~ [eb2,eb3]@3 ~ [eb3,g3,db4]@2 ~@2", // Bb D Eb Eb7
  M: "[ab3,c4]@4 [a2,a3]@3 ~ [bb2,bb3]@3 ~ [eb2,eb3]@2 ~@2", N: "[ab3,c4]@4 ~@8 [a2,a3]@3 ~",
  O: "[bb2,bb3]@4 [eb3,g3,db4]@3 ~ [eb2,eb3]@4 [eb3,g3,db4]@2 ~@2", // Bb Eb7 Eb Eb7
  P: "[bb2,bb3]@4 [eb2,eb3]@3 ~ [f2,f3]@3 ~ [g2,g3]@2 ~@2", // Bb Eb F G
  Q: "[ab2,ab3]@4 [ab3,c4,eb4]@3 ~ [c3,c4]@4 [ab3,c4,gb4]@2 ~@2", // Ab C Ab7
  R: "[eb3,eb4]@4 [ab2,ab3]@3 ~ [bb2,bb3]@3 ~ [c3,c4]@2 ~@2", // Eb Ab Bb C
  S: "[db3,db4]@4 [ab3,db4,f4]@3 ~ [db2,db3]@4 [e3,ab3,db4]@2 ~@2", T: "[c3,c4]@2 b3 ~ bb3@2 a3@4 f3 ~ e3@2 eb3 ~",
  U: "d3@4 [bb1,bb2]@3 ~ [c2,c3]@4 [d2,d3]@2 ~@2", V: "[eb2,eb3]@4 [eb3,g3,db4]@3 ~ [eb3,g3,db4]@3 ~ [a2,a3]@3 ~",
  W: "[c3,c4]@2 b3 ~ bb3@2 a3@5 ~ [f2,f3]@3 ~", X: "[bb2,bb3]@4 [d2,d3]@3 ~ [eb2,eb3]@4 [eb3,g3,db4]@2 ~@2",
  Y: "[bb2,bb3]@4 [eb3,g3,db4]@3 ~ [eb2,eb3]@3 ~ [eb3,g3,db4]@2 ~@2", // Bb Eb7 Eb Eb7
  Z: "[bb2,bb3]@4 [eb2,eb3]@3 ~ [f2,f3]@4 [g2,g3]@2 ~@2", // Bb Eb F G
  AA: "[ab2,ab3]@4 [ab3,c4,eb4]@3 ~ [c3,c4]@3 ~ [ab3,c4,gb4]@2 ~@2", // Ab C Ab7
  AB: "[eb3,eb4]@4 [ab2,ab3]@3 ~ [bb2,bb3]@4 [c3,c4]@2 ~@2", AC: "[ab3,c4]@4 [eb2,eb3]@3 ~ [ab1,ab2]@4 ~@4",
  AD: "[db2,db3]@4 [f3,ab3,db4]@3 ~ [db2,db3]@4 [d2,d3]@2 ~@2", // Db D
  AE: "[eb2,eb3]@4 [ab3,c4,gb4]@3 ~ [eb2,eb3]@3 ~ [e2,e3]@2 ~@2", // Eb Ab7 Eb E
  AF: "[f2,f3]@4 [ab3,db4,f4]@3 ~ [gb2,gb3]@4 [a3,c4,gb4]@2 ~@2", // F Db Gb Gbdim
  AG: "[f2,f3]@4 [ab3,db4,f4]@3 ~ [ab3,db4,f4]@3 ~ [ab1,ab2]@2 ~@2", // F Db Ab
  AH: "[eb2,eb3]@4 [ab3,c4,eb4]@3 ~ [d2,d3]@4 [ab3,c4,f4]@2 ~@2", // Eb Ab D Fm
  AI: "[eb2,eb3]@4 [ab3,c4,eb4]@3 ~ [eb2,eb3]@4 [g3,db4,eb4]@2 ~@2", // Eb Ab Eb Eb7
  AJ: "[ab2,ab3]@2 [bb2,bb3] ~ [b2,b3]@2 [c3,c4]@5 ~ [ab1,ab2]@2 ~@2", // Ab Bb B C Ab
  AK: "[eb2,eb3]@4 [ab3,c4,gb4]@3 ~ [eb2,eb3]@4 [e2,e3]@2 ~@2", // Eb Ab7 Eb E
  AL: "[f2,f3]@4 [ab3,db4,f4]@3 ~ [gb2,gb3]@4 [gb2,gb3]@3 ~", AM: "[f2,f3]@2 a3 ~ c4@2 f4@4 e4 ~ eb4@3 ~",
  AN: "[d3,d4]@4 [bb3,d4,ab4]@3 ~ [c2,c3]@3 ~ [d2,d3]@2 ~@2", // D Bb7 C D
  AO: "[eb2,eb3]@4 [bb3,db4,eb4,g4]@3 ~ [f2,f3]@3 ~ [g2,g3]@2 ~@2", // Eb Eb7 F G
  AP: "[ab2,ab3]@4 [ab3,c4,gb4]@3 ~ [bb2,bb3]@4 [c3,c4]@2 ~@2", AQ: "[db3,db4]@4 [ab2,ab3]@3 ~ [db2,db3]@4 ~@4",
  AR: "[db3,db4]@2 ~@4 [d3,d4] ~", AS: "[eb3,eb4]@4 [ab3,c4,gb4]@3 ~ [ab2,ab3]@3 ~ [ab3,c4,gb4]@2 ~@2",
  AT: "[eb3,eb4]@4 [ab3,c4,gb4]@3 ~ [ab2,ab3]@4 [gb2,gb3]@2 ~@2", // Eb Ab7 Ab Gb
  AU: "[f2,f3]@4 [ab3,db4,f4]@3 ~ [ab2,ab3]@3 ~ [ab3,db4,f4]@2 ~@2", // F Db Ab Db
  AV: "[db3,db4]@4 [ab3,db4,f4]@3 ~ [f3,f4]@4 [d3,d4]@2 ~@2", AW: "[eb3,eb4]@4 [ab3,c4,gb4]@7 ~ [ab2,ab3]@2 ~@2",
  AX: "[eb3,eb4]@4 [ab3,c4,gb4]@6 [ab2,ab3] ~ [g2,g3]@2 [gb2,gb3] ~", // Eb Ab7 Ab G Gb
  AY: "[f2,f3]@4 [ab3,db4,f4]@4 ~@2 [ab2,ab3] ~ [db3,db4]@2 [eb3,eb4] ~", AZ: "[f3,f4]@10 ~@2 [d3,d4]@3 ~",
  BA: "[db3,db4]@4 [db3,db4]@3 ~ [eb3,eb4]@3 ~ [e3,e4]@2 ~@2", BB: "[f3,f4]@3 ~ [g2,g3]@7 ~ [ab2,ab3]@2 ~@2",
  BC: "[a2,a3]@3 ~ [bb2,eb3,bb3]@7 ~ [ab1,ab2]@2 ~@2", BD: "[db2,db3]@3 ~ ab4@7 ~ [ab1,ab2]@2 ~@2",
  BE: "[db2,db3]@2 ~@4 [d3,d4] ~", BF: "[eb3,eb4]@4 [ab3,c4,gb4]@3 ~ [ab2,ab3]@4 [ab3,c4,gb4]@2 ~@2",
  BG: "[f2,f3]@4 [ab3,db4,f4]@3 ~ [ab2,ab3]@4 [ab3,db4,f4]@2 ~@2", // F Db Ab Db
  BH: "[db3,db4]@4 [db3,db4]@3 ~ [eb3,eb4]@4 [e3,e4]@2 ~@2", BI: "[db2,db3] ~ [db1,db2,db3] ~",
})).s("gm_piano").gain(0.36).pan(0.3)

stack(piano, piano_2)

More by Scott James