Strudelify

Efficiency Rag

Scott James

KeyC majorTempo102 bpm
0:00/0:00
// Efficiency Rag — Scott James
// 102 bpm, 2/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 153 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/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 H I J K L M N G H I B C D E F G H I J K L M N G H I B C D O P Q R S T U V W P Q R X Y C D O P Q R S T U
  V W P Q R X Y C D E F G H I J K L M N G H I B C D Z AA AB AC AD AE@2 AF AG AE AH AI AJ AK AL AM AN AO AP AQ AR AE@2 AF
  AG AE AH AI AJ AK AL AM AN AO AP AQ AS AT AU AV AW AX AY AZ BA BB BC AV BD BE BF BG BH AT AU AV AW AX AY AZ BA BB BC
  AV BD BE BF BG BI
>`.pickRestart({
  A: "~@12 [d4,g4,b4]@3 ~", B: "[c4,g4,c5]@3 ~ [f#4,a4,e5]@5 ~@3 [f4,g4,d5]@3 ~",
  C: "[g4,c5,g5]@3 ~ [c5,f5,c6]@5 ~@3 [f4,c5,d5,f5]@3 ~", // C5 F5 Dm7
  D: "[g4,c5,e5] ~ g5 ~ a5 ~ [c5,e5,g5]@3 ~ e5 ~ [f4,b4,d5]@3 ~", // C Bdim
  E: "[e4,g4,c5]@3 ~ [g4,c5,e5,g5]@3 ~ [a4,c5,d#5,a5]@3 ~ [b4,d5,g5,b5]@3 ~", // C Adim G
  F: "[c5,e5,c6]@3 ~ [c5,e5,c6]@5 ~@3 [a4,c5,a5]@3 ~", G: "[g4,c5,g5] ~ [a4,c5,a5]@3 ~ [g4,c5,g5]@3 ~ e5 ~ d5 ~ c5 ~",
  H: "[a4,d5] ~ f4 ~ g4 ~ [a4,c5]@3 ~ c4 ~ d4 ~ d#4 ~", I: "[e4,a4] ~ c4 ~ d4 ~ [e4,g4]@4 ~@2 [d4,g4,b4]@3 ~",
  J: "[e4,g4,c5]@3 ~ [c5,e5,c6]@5 ~@3 [a4,c5,a5]@3 ~", K: "[g4,c5,g5] ~ [a4,c5,a5]@3 ~ [g4,c5,g5]@3 ~ a5 ~ g5 ~ e5 ~",
  L: "[d5,f#5] ~ g5 ~ g#5 ~ [d5,f#5,a5]@3 ~ b5 ~ [d5,f#5,c6]@3 ~", // D D7
  M: "[d5,d6] ~ [e5,e6] ~ [f5,f6] ~ [g5,g6]@3 ~ [a5,a6] ~ [b5,b6]@3 ~", // D E F G A B
  N: "[c6,e6,c7]@3 ~ [c6,e6,c7]@5 ~@3 [a4,c5,a5]@3 ~", O: "[e4,g4,c5]@3 ~ [g4,g5] ~ [g4,g5] ~ [g4,g5]@3 ~ [g4,g5]@3 ~",
  P: "[g4,b4,d5,f5] ~ e5 ~ f5 ~ [g4,b4,d5]@3 ~ g5 ~ b5 ~ d6 ~", // G7 G
  Q: "[g5,b5,f6] ~ e6 ~ f6 ~ [g5,b5,d6]@3 ~ g4 ~ c5 ~ e5 ~", R: "[c5,e5,a5] ~ g#5 ~ a5 ~ [c5,e5,g5]@3 ~ g5 ~ c6 ~ e6 ~",
  S: "[c6,e6,a6] ~ g#6 ~ a6 ~ [c6,e6,g6]@3 ~ g6 ~ a6 ~ a#6 ~", // Am C
  T: "[d6,f6,b6] ~ a#6 ~ b6 ~ [d6,f6,a6]@3 ~ g6 ~ a6 ~ a#6 ~", // Bdim Dm
  U: "[d6,f6,b6] ~ [c6,e6,a6] ~ [b5,d6,g6] ~ [a5,c6,f6]@3 ~ [g5,b5,e6] ~ [f5,g5,d6]@3 ~", // Bdim Am G F Em G7
  V: "[e5,c6] ~ [f5,d6] ~ [f#5,d#6] ~ [g5,e6]@4 c5 ~ b4 ~ a#4 ~", // C Dm D#m C
  W: "[c5,d#5,f#5,c6] ~ c5 ~ d5 ~ d#5 ~ [g4,c5,g5]@3 ~@5, a4 ~@7", // Cdim C5
  X: "[c6,e6,a6] ~ g#6 ~ a6 ~ [c6,e6,g6]@5 ~ [d6,g6,b6]@3 ~", Y: "[c6,g6,c7]@3 ~ [f#4,a4,e5]@5 ~@3 [f4,g4,d5]@3 ~",
  Z: "[e4,g4,c5]@3 ~@5 [c5,e5,c6]@3 ~@5", // C
  AA: "[e5,g5,a#5,c6]@4 ~@2 [g5,a#5,d6]@2 d5 ~ [c#5,g5,a#5,d#6] ~ [c5,g5,a#5,e6]@3 ~, ~@6 d5 ~@9", // C7 Gm D#7 C7
  AB: "[e4,g4,a#4,c5]@4 ~@2 [g4,a#4,d5]@2 d4 ~ [c#4,g4,a#4,d#5] ~ [c4,g4,a#4,e5]@3 ~, ~@6 d4 ~@9", // C7 Gm D#7 C7
  AC: "[g3,a#3,c4]@4 ~@2 [g3,a#3,c#4]@3 ~ [g3,a#3,d4] ~ [g3,a#3,d#4]@3 ~", // C7 Gdim Gm D#
  AD: "[g3,a#3,e4]@3 ~@5 [c4,e4,g4,a#4,c5]@3 ~@5", // Edim C7
  AE: "[c5,e5,g5,a#5,c6]@4 ~@2 [d5,g5,a#5,d6]@3 ~ [e5,e6] ~ [g5,g6]@3 ~", // C7 Gm E G
  AF: "[d5,f5,a5,d6]@4 ~@2 [c5,f5,a5,c6]@3 ~ a5 ~ g5 ~ f5 ~", AG: "f4 ~ g4 ~ g#4 ~ [a4,c5]@4 f4 ~ e4 ~ d4 ~, d5 ~@3",
  AH: "[c6,e6,g6,a#6,c7]@4 ~@2 [d6,g6,a#6,d7]@3 ~ [e6,e7] ~ [g6,g7]@3 ~", // C7 Gm E G
  AI: "[d6,f6,a6,d7]@4 ~@2 [c6,f6,a6,c7]@3 ~ a6 ~ g6 ~ f6 ~", AJ: "f5 ~ g5 ~ g#5 ~ [a5,c6]@4 f#5 ~ e5 ~ d#5 ~, d6 ~@3",
  AK: "[d5,f#5,a5,d6]@4 ~@2 [e5,e6]@3 ~ [f#5,f#6] ~ [a5,a6]@3 ~", AL: "[d6,f#6,a6,d7]@11 ~@5",
  AM: "[d5,g5,a#5,d6]@4 ~@2 [g5,g6]@3 ~ [a5,a6] ~ [a#5,a#6]@3 ~", // Gm G A A#
  AN: "[d6,g6,a#6,d7] ~ [e6,e7]@3 ~ [f6,g#6,f7]@3 ~ [e6,g#6,e7] ~ [d6,g#6,d7]@3 ~", // Gm E Fm E Ddim
  AO: "[c6,f6,a6,c7]@4 ~@2 [d6,f6,a6,d7]@3 ~ [c6,c7] ~ [a5,c6,d#6,a6]@3 ~", // F Dm C Adim
  AP: "[a#5,d6,a#6]@4 ~@2 [c6,e6,c7]@3 ~ [a5,c6,a6] ~ [g5,a#5,g6]@3 ~", // A# C Am Gm
  AQ: "[f5,a5,f6]@3 ~ [a4,c5]@3 ~ [g#4,b4]@3 ~ [g4,a#4]@3 ~", // F Am G#m Gm
  AR: "[f4,a4]@3 ~ [c4,c5] ~ [d4,d5] ~ [e4,e5] ~ [f4,f5] ~ [g4,g5] ~ [a4,a5] ~", // F C D E F G A
  AS: "[f4,a4]@3 ~ [c5,c6] ~ [c5,c6] ~ [c5,c6]@3 ~ [c5,c6]@3 ~", // F C
  AT: "[e5,g5,a#5] ~ a5 ~ a#5 ~ [e5,g5]@3 ~ c5 ~ e5 ~ g5 ~", AU: "[e5,g5,a#5] ~ a5 ~ a#5 ~ [e5,g5]@3 ~ c5 ~ f5 ~ a5 ~",
  AV: "[f5,a5,d6] ~ c#6 ~ d6 ~ [f5,a5,c6]@3 ~ c6 ~ f6 ~ a6 ~", // Dm F
  AW: "[f6,a6,d7] ~ c#7 ~ d7 ~ [f6,a6,c7]@3 ~ c#7 ~ d7 ~ d#7 ~", // Dm F
  AX: "[g6,a#6,e7] ~ d#7 ~ e7 ~ [g6,a#6,d7]@3 ~ c#7 ~ d7 ~ d#7 ~", // Edim Gm
  AY: "[g6,a#6,e7] ~ [f6,a6,d7] ~ [e6,g6,c7] ~ [d6,f6,a#6]@3 ~ [c6,a6] ~ [a#5,g6]@3 ~", // Edim Dm C A# F D#
  AZ: "[a5,f6] ~ [a#5,g6] ~ [b5,g#6] ~ [c6,a6]@4 f5 ~ e5 ~ d#5 ~", // Dm D# E F
  BA: "[f5,g#5,f6] ~ f5 ~ g5 ~ g#5 ~ [c5,f5,c6]@3 ~@5, d5@2 ~@6 [c4,a4] ~@7", // Fm F5 F
  BB: "[e5,g5,a#5] ~ a5 ~ a#5 ~ [e5,g5]@3 ~ c6 ~ e6 ~ g6 ~", BC: "[e6,g6,a#6] ~ a6 ~ a#6 ~ [e6,g6]@3 ~ c5 ~ f5 ~ a5 ~",
  BD: "[f6,a6,d7] ~ c#7 ~ d7 ~ [f6,a6,c7]@4 ~@2 [g4,c5,e5]@3 ~", BE: "[f4,c5,f5]@3 ~ [b4,d5,a5]@5 ~@3 [a#4,c5,g5]@3 ~",
  BF: "[c5,f5,c6]@3 ~ [f5,a#5,f6]@5 ~@3 [a#4,f5,g5,a#5]@3 ~", // F5 A#5 Gm7
  BG: "[c5,f5,a5] ~ c6 ~ d6 ~ [f5,a5,c6]@3 ~ c6 ~ [a#4,e5,g5]@3 ~", // F Edim
  BH: "[a4,c5,f5]@3 ~ [c5,c6] ~ [c5,c6] ~ [c5,c6]@3 ~ [c5,c6]@3 ~", BI: "[a4,c5,f5]@3 ~@5 [f5,a5,c6,f6]@3 ~@5",
})).s("gm_piano").gain(0.36).pan(0.7)

// other · piano
const piano_2 = note(`<
  A B C D E F G H I F G J K L G H I B C D E F G H I F G J K L G H I B C D M N O P Q R S T U N O P V B C D M N O P Q R S
  T U N O P V B C D E F G H I F G J K L G H I B C D W ~@2 X Y Z AA AB AC Z AA AB AD AE AF AG AH AI AJ AK@2 Z AA AB AC Z
  AA AB AD AE AF AG AH AI AJ AK@2 AL AM AN AO AP AQ AR AS AT AM AN AU AV AW AX AY AL AM AN AO AP AQ AR AS AT AM AN AU AV
  AW AX AZ
>`.pickRestart({
  A: "~@12 [f2,f3]@3 ~", B: "[e2,e3]@3 ~ [c3,c4]@5 ~@3 [b2,b3]@3 ~", C: "[a#2,a#3]@3 ~ [a2,a3]@5 ~@3 [g#2,g#3]@3 ~",
  D: "[g2,g3]@3 ~ [g3,c4,e4]@3 ~ [g2,g3]@3 ~ [f3,g3,b3]@3 ~", E: "[c3,g3,c4]@3 ~ [g2,g3]@3 ~ [f#2,f#3]@3 ~ [f2,f3]@3 ~",
  F: "[e2,e3]@3 ~ [g3,c4,e4]@3 ~ [d3,d4]@3 ~ [d#3,d#4]@3 ~", G: "[e3,e4]@3 ~ [g3,c4,e4]@3 ~ [c3,c4]@3 ~ [a#2,a#3]@3 ~",
  H: "[a2,a3]@3 ~ [f3,a3,c4]@3 ~ [f2,f3]@3 ~ [f#2,f#3]@3 ~", I: "[g2,g3]@3 ~ [e3,g3,c4]@3 ~ [g2,g3]@3 ~ [f2,f3]@3 ~",
  J: "[a2,a3]@3 ~ [g2,g3]@3 ~ [f#2,f#3]@3 ~ [d3,f#3,c4]@3 ~", K: "[g2,g3]@3 ~ [f2,f3]@3 ~ [e2,e3]@3 ~ [d2,d3]@3 ~",
  L: "[c2,c3]@3 ~ [g3,c4,e4]@3 ~ [d3,d4]@3 ~ [d#3,d#4]@3 ~", M: "[c3,g3,c4]@3 ~@13",
  N: "[d3,b3]@3 ~ [g3,b3,d4,f4]@3 ~ [g2,g3]@3 ~ [a2,a3]@3 ~", O: "[b2,b3]@3 ~ [c3,c4]@3 ~ [d3,d4]@3 ~ [d#3,d#4]@3 ~",
  P: "[e3,e4]@3 ~ [g3,c4,e4]@3 ~ [g2,g3]@3 ~ [g3,c4,e4]@3 ~", Q: "[c3,c4]@3 ~ [g3,c4,e4]@3 ~ [e3,e4]@3 ~ [d#3,d#4]@3 ~",
  R: "[d3,d4]@3 ~ [g3,b3,d4,f4]@3 ~ [g2,g3]@3 ~ [g3,b3,d4,f4]@3 ~", // D G7 G G7
  S: "[d3,d4]@3 ~ [g3,b3,d4,f4]@3 ~ [a2,a3]@3 ~ [b2,b3]@3 ~", T: "[c3,c4]@3 ~ [g3,c4,e4]@4 ~@8",
  U: "~@8 [g3,e4] ~ g#3 ~ a3 ~ a#3 ~", V: "[c3,c4]@3 ~ [g3,c4,e4]@3 ~ [g2,g3]@3 ~ [f2,f3]@3 ~",
  W: "[c3,g3,c4]@3 ~ [g2,g3]@3 ~ [c2,c3]@3 ~@5", X: "e3@4 ~@2 d#3 ~ d#3 ~ d3 ~ c#3@3 ~", Y: "c3@3 ~@5 [c2,c3]@3 ~@5",
  Z: "[c3,c4]@3 ~ [g3,a#3,c4,e4]@3 ~ [a#2,a#3]@3 ~ [g3,a#3,c4,e4]@3 ~", // C C7 A# C7
  AA: "[c3,c4]@3 ~ [g3,a#3,c4,e4]@3 ~ [e2,e3]@3 ~ [c2,c3]@3 ~", // C C7 E C
  AB: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ [c2,c3]@3 ~ [a3,c4,f4]@3 ~", // F C F
  AC: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ [a2,a3]@3 ~ [a3,c4,f4]@3 ~", AD: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ [a2,a3]@3 ~ [g2,g3]@3 ~",
  AE: "[f#2,f#3]@3 ~ [d3,f#3,c4]@3 ~ [d2,d3]@3 ~ [d3,f#3,c4]@3 ~", // F# D7 D D7
  AF: "[d3,d4] ~ [c3,c4]@3 ~ [a2,a3]@3 ~ [f#2,f#3] ~ [d2,d3]@3 ~", // D C A F# D
  AG: "[g2,g3]@3 ~ [g3,a#3,d4]@3 ~ [d2,d3]@3 ~ [g3,a#3,d4]@3 ~", // G Gm D Gm
  AH: "[d3,d4] ~ [c3,c4]@3 ~ [b2,b3]@4 ~@2 [g#2,g#3]@3 ~", AI: "[a2,a3]@3 ~ [a3,c4,f4]@3 ~ [f2,f3]@3 ~ [f#2,f#3]@3 ~",
  AJ: "[g2,g3]@3 ~ [g3,d4,f4]@3 ~ [c2,c3]@3 ~ [g3,a#3,c4,e4]@3 ~", // G G7 C C7
  AK: "[~@4 d#4@3 ~ d4@3 ~ c#4@3 ~ c4@3 ~@13, f3@19 ~@13]/2",
  AL: "[g2,g3]@3 ~ [g3,a#3,c4,e4]@3 ~ [c2,c3]@3 ~ [d2,d3]@3 ~", AM: "[e2,e3]@3 ~ [f2,f3]@3 ~ [g2,g3]@3 ~ [g#2,g#3]@3 ~",
  AN: "[a2,a3]@3 ~ [a3,c4,f4]@3 ~ [c2,c3]@3 ~ [a3,c4,f4]@3 ~", // A F C F
  AO: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ [a2,a3]@3 ~ [g#2,g#3]@3 ~", // F A G#
  AP: "[g2,g3]@3 ~ [g3,a#3,c4,e4]@3 ~ [c2,c3]@3 ~ [g3,a#3,c4,e4]@3 ~", // G C7 C C7
  AQ: "[g2,g3]@3 ~ [g3,a#3,c4,e4]@3 ~ [c2,c3]@3 ~ [e2,e3]@3 ~", AR: "[f2,f3]@3 ~ [a3,c4,f4]@4 ~@8",
  AS: "~@10 c#3 ~ d3 ~ d#3 ~", AT: "[g2,e3]@3 ~ [g3,a#3,c4,e4]@3 ~ [c2,c3]@3 ~ [d2,d3]@3 ~",
  AU: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ [c3,c4]@3 ~ [a#2,a#3]@3 ~", AV: "[a2,a3]@3 ~ [f3,f4]@5 ~@3 [e3,e4]@3 ~",
  AW: "[d#3,d#4]@3 ~ [d3,d4]@5 ~@3 [c#3,c#4]@3 ~", AX: "[c3,c4]@3 ~ [a3,c4,f4]@3 ~ [c2,c3]@3 ~ [g3,a#3,c4,e4]@3 ~",
  AY: "[f3,c4,f4]@3 ~@13", AZ: "[f3,c4,f4]@3 ~@5 [f1,f2]@3 ~@5",
})).s("gm_piano").gain(0.36).pan(0.2)

stack(piano, piano_2)

More by Scott James