Strudelify
Great Scott Rag cover art

Pastimes & Piano Rags

Great Scott Rag

Scott James

KeyG majorTempo101 bpm
0:00/0:00
// Great Scott Rag — Scott James
// 101 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(101/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// 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 F G H N O P Q R F G H I J K L M F G H N O P Q S T U V W X Y V Z T U V W AA AB AC AD T U V W
  X Y V Z T U V W AA AB AC AE AF AG AH AI AF AJ AK AL AM AN AO AP AF AQ AR AS AF AG AH AI AF AJ AK AL AM AN AO AP AF AQ
  AR AT AU AV AW AX AY AZ AW BA AU AV AW AX BB BC BD AT AU AV AW AX AY AZ AW BA AU AV AW AX BB BC BD BE
>`.pickRestart({
  A: "~@10 d4 ~ e4 ~ f#4 ~", B: "g4 ~ a4 ~ b4 ~ d5@3 ~ e5 ~ d5 ~ b4 ~", C: "d5 ~ e5 ~ d5 ~ b4 ~ d5@5 ~@3",
  D: "[d4,g4,d5] ~ [d4,g4,d5]@4 ~@2 [e4,g4,d5] ~ [e4,g4,d5]@4 ~@2", E: "[d4,f#4,c5,d5]@3 ~@7 d4 ~ e4 ~ f#4 ~",
  F: "g4 ~ a4 ~ b4 ~ d5@3 ~ d4 ~ e4 ~ f#4 ~", G: "g4 ~ a4 ~ b4 ~ e5@3 ~ d4 ~ e4 ~ f#4 ~",
  H: "g4 ~ a4 ~ b4 ~ d5 ~ e5 ~ f#5 ~ g5 ~ a5 ~", I: "[d5,g5,b5]@3 ~ a#5 ~ [d5,g5,b5]@3 ~ [f5,g#5,d6]@3 ~ b5 ~",
  J: "[d5,f#5,c6]@3 ~ b5 ~ [d5,f#5,c6]@3 ~ [g5,a#5,e6]@3 ~ c#6 ~", // D7 Edim
  K: "[g5,b5,d6]@3 ~ c#6 ~ [g5,b5,d6]@3 ~ b5@3 ~ a#5 ~", L: "a5 ~ b5 ~ a5 ~ g5 ~ e5 ~ f#5 ~ g5 ~ g#5 ~",
  M: "a5 ~ g#5 ~ a5 ~ [d5,f#5,d6]@3 ~ d4 ~ e4 ~ f#4 ~", N: "[d5,g5,b5]@3 ~ a#5 ~ [d5,g5,b5]@3 ~ [d5,d6]@3 ~ b5 ~",
  O: "[a4,d5,f#5,a5]@3 ~ g#5 ~ [a4,d5,f#5,a5]@3 ~ [b4,b5]@3 ~ f#5 ~", // D B
  P: "[a4,c#5,a5]@3 ~ g#5 ~ [a4,c#5,a5]@3 ~ g#5 ~ [a4,c#5,a5]@3 ~", Q: "[d5,f#5,d6]@3 ~ a4 b4 c#5 ~ d5@3 ~@3 a5 b5",
  R: "c#6 ~ d6@3 ~@5 d4 ~ e4 ~ f#4 ~", S: "c#6 ~ d6@3 ~@5 [e5,e6]@3 ~ [d#5,d#6] ~",
  T: "[d5,d6] ~ f#5 ~ a5 ~ [d5,d6]@3 ~ f#5 ~ [c#5,c#6] ~ f#5 ~", // D C#
  U: "[c5,c6] ~ f#5 ~ a5 ~ [b4,b5]@3 ~ f#5 ~ [a4,a5] ~ f#5 ~", V: "g5 ~ [g4,b4,e5]@3 ~ g5 ~ [g4,b4,d5]@3 ~@5",
  W: "g6 ~ [g5,b5,e6]@3 ~ g6 ~ [g5,b5,d6]@3 ~@5", X: "f#5 ~ [f#4,c5,e5]@3 ~ f#5 ~ [f#4,c5,d5]@3 ~@5",
  Y: "f#6 ~ [f#5,c6,e6]@3 ~ f#6 ~ [f#5,c6,d6]@3 ~@5", // F#m7b5 D7
  Z: "g6 ~ [g5,b5,e6]@3 ~ g6 ~ [g5,b5,d6]@2 [e5,e6]@3 ~ [d#5,d#6] ~", // Em G E D#
  AA: "e5 ~ g#5 ~ b5 ~ [e5,g#5,e6]@3 ~ b5 ~ [d5,g#5,d6]@3 ~", // E Ddim
  AB: "[c5,a5,c6]@3 ~ [b4,e5,g#5,b5]@3 ~ [a4,e5,a5]@3 ~ [a#4,e5,a#5]@3 ~", // F E A5 A#dim
  AC: "[b4,d5,b5] ~ [a#4,c#5,a#5] ~ [b4,d5,b5] ~ [c5,e5,c6]@3 ~ [b4,d5,b5] ~ [a4,c5,a5]@3 ~", // Bm A#m Bm C Bm Am
  AD: "[g4,b4,g5]@9 ~ [e5,e6]@3 ~ [d#5,d#6] ~", AE: "[g4,b4,g5]@9 ~ e4 ~ f#4 ~ g4 ~",
  AF: "g4 ~ c5 ~ e5 ~ [g4,g5]@3 ~ [c5,e5] ~ [a4,a5]@3 ~", // G C A
  AG: "[b4,d#5,b5]@3 ~ [a4,d#5,a5] ~ [g4,e5,g5]@3 ~ [g4,c5,e5] ~ c5@3 ~", AH: "[f4,b4,d5]@11 ~@5",
  AI: "[e4,g4,c5]@8 ~@2 e4 ~ f4 ~ f#4 ~", AJ: "[b4,d#5,b5]@3 ~ [a4,d#5,a5] ~ [g4,d#5,g5]@3 ~ [a4,a5] ~ [c5,c6]@3 ~",
  AK: "[d5,f#5,c6,d6]@11 ~@5", AL: "[g5,b5,g6]@11 ~@5", AM: "[e5,e6] ~ g#5 ~ b5 ~ [e5,d6]@3 ~ [g#5,b5] ~ [d5,d6]@3 ~",
  AN: "[c#5,c#6] ~ [e5,e6]@3 ~ [a5,a6]@3 ~ f#5 ~ e5 ~ d#5 ~", // C# E A
  AO: "[d5,d6] ~ f#5 ~ a5 ~ [d5,d6]@3 ~ [f#5,a5] ~ [c5,c6]@3 ~", // D F#m C
  AP: "[b4,b5] ~ [d5,d6]@3 ~ [g5,g6]@3 ~ e4 ~ f4 ~ f#4 ~", // B D G
  AQ: "[b4,d#5,b5]@3 ~ [a4,d#5,a5] ~ [g4,e5,g5]@3 ~ g5 ~ c6 ~ e6 ~", // B Adim C
  AR: "[g5,g6] ~ [g5,b5] ~ [f#5,f#6] ~ [f5,f6]@3 ~ [a4,f5,a5] ~ [b4,f5,b5]@3 ~", AS: "[c5,e5,c6]@8 ~@2 e4 ~ f4 ~ f#4 ~",
  AT: "[c5,e5,c6]@8 ~@2 [a4,a5]@3 ~ [g#4,g#5] ~", AU: "[g5,g6] ~ b5 ~ d6 ~ [g5,g6]@3 ~ b5 ~ [f#5,f#6] ~ b5 ~",
  AV: "[f5,f6] ~ b5 ~ d6 ~ [e5,e6]@3 ~ b5 ~ [d5,d6] ~ b5 ~", AW: "c6 ~ [c5,e5,a5]@3 ~ c6 ~ [c5,e5,g5]@3 ~@5",
  AX: "c7 ~ [c6,e6,a6]@3 ~ c7 ~ [c6,e6,g6]@3 ~@5", AY: "b5 ~ [b4,f5,a5]@3 ~ b5 ~ [b4,f5,g5]@3 ~@5",
  AZ: "b6 ~ [b5,f6,a6]@3 ~ b6 ~ [b5,f6,g6]@3 ~@5", BA: "c7 ~ [c6,e6,a6]@3 ~ c7 ~ [c6,e6,g6] ~ [a5,a6]@3 ~ [g#5,g#6] ~",
  BB: "a5 ~ c6 ~ e6 ~ [a5,a6]@3 ~ [c6,e6] ~ [g5,g6]@3 ~", BC: "[f5,f6]@3 ~ [e5,e6]@3 ~ [d5,d6]@3 ~ [d#5,d#6]@3 ~",
  BD: "[e5,g5,c6] ~ [d#5,f#5,d#6] ~ [e5,g5,c6] ~ [f5,a5,f6]@3 ~ [e5,g5,e6] ~ [d5,f5,d6]@3 ~", // C D#m C F Em Dm
  BE: "[c5,e5,c6]@3 ~@5 [c6,e6,c7]@3 ~@5", // C
})).s("gm_piano").gain(0.41).pan(0.7)

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

stack(piano, piano_2)

More by Scott James