Strudelify

Minor Swing

Reinhardt Django

KeyA minorTempo190 bpm
0:00/0:00
// Minor Swing — Reinhardt Django
// 190 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 49 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(190/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 · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C@3 D@3 E F G H I J@2 K L M@2 N O P Q@2 R S T U V W@2 X Y Z AA AB AC AD AE AF@2 AG AH AI AJ AK AL@2 ~
>`.pickRestart({
  A: "~@4 [a2,e3,g3,c4]@3 ~ [e3,g3,c4,e4,a4]@2 ~@2 [a2,e3,g3,c4]@4", // Am7
  B: "[e3,g3,c4,e4,a4] ~@3 c4@3 ~ [c4,e4,a4]@2 ~@2 [a2,e4]@4, ~@2 [a2,e3]@3 ~@3, ~@7 g3@2 ~@7", // Am7 Am A5
  C: "[[c4,e4,a4]@2 ~@2 [d3,c4]@4 [a3,c4,f4,a4]@2 ~@2 [a2,d3,c4]@3 ~ [c4,f4,a4] ~@3 c4@3 ~ [c4,f4,a4]@2 ~ a3 [d3,a3,c4,f4]@2 [c4,f4]@2 ~@4 [e3,b3,d4]@2 ~@2 [b3,b4]@2 ~@2 e3@4, ~@4 a3@3 ~@8 a3@2 ~@2 d3@4 [d3,a3]@2 ~ f4@2 ~@2 a4@4 ~@2 g#4@4 g#4@8, ~@30 [d3,a3] ~@5 b4 ~@3 d4 ~@7]/3", // Am D7 F D7 F Dm7 F5 E7 …
  D: "[[e3,b3,d4,g#4,b4]@2 ~@6 [d4,g#4,b4] ~@3 [e3,b3,d4]@3 ~ [b3,d4,g#4,b4]@2 ~@2 [e3,c4]@4 [e3,g3,c4,e4,a4] ~@7 [g3,c4,e4,a4] ~@3 [a2,e3,g3,c4]@4 [g3,c4,e4,a4] ~@3 [a2,e3]@4, ~@2 g#4@5 ~@8 e3@2 ~@14 e3@2 ~@15, ~@4 [b2,b3]@6 ~@2 b2@5 ~@11 a2@5 ~@15]/3", // E7 G#dim E7 G#dim C Am7 A5 B
  E: "[e3,g3,c4,e4,a4] ~@2 [d3,a3] [d3,a3]@3 ~ [a3,c4,f4,a4]@2 ~@2 [a2,d3,a3]@4", // Am7 D5 F D5
  F: "[d3,a3,c4,f4,a4] ~@3 [d3,a3,c4]@4 [a3,c4,f4,a4]@2 ~@6", // Dm7 D7 F
  G: "[a3,c4,f4,a4]@2 ~@2 [a2,e3]@4 [e3,g3,c4,e4,a4] ~@3 [a2,e3]@4", // F A5 Am7 A5
  H: "[e3,g3,c4,e4,a4]@2 ~ d3 [a2,e3]@4 [g3,c4,e4,a4] ~@3 [a2,g3]@4, ~@4 g3@3 ~@9", // Am7 A5 Am7 A7
  I: "[e3,g3,c4,e4,a4] ~ b3 [d3,g3] [e3,g#3]@4 [e3,g#3,d4,f#4] ~@3 [e3,g#3,d4]@4", // Am7 G5 E E7
  J: "[[e3,g#3,d4,f#4] ~@3 [e2,e3,g#3]@4 [e3,g#3,d4,f#4] ~@3 [e3,g#3,d4]@4 [e3,g#3,d4,f#4] ~ f#4 ~ [a2,e3,g3] ~@3 [a2,e3,g3,c4,e4,a4] ~@3 [a2,d3,a3,c4,f4,a4]@2 c4 [a2,d3,a3], ~@11 e2@8 ~@11 [f4,a4]@2]/2", // E7 E E7 A7 Am7 Dm7 D5 F
  K: "~@4 [a2,e3,g3,c4,e4,a4]@8 [e3,g3,c4,e4,a4] ~@3", // Am7
  L: "~@4 [a2,f4] e3 ~@2 [a2,e3,g3,c4,e4,a4]@2 ~@2 [a2,e3,g3,c4]@2 ~@2", // Dm Am7
  M: "[[a2,e3,g3,c4,e4,a4]@2 ~@2 [a2,e3,g3] ~@3 [e3,g3,c4,e4,a4]@2 ~@2 [a2,d4]@2 ~@2 [c4,e4,a4]@2 c4 ~ [a2,d3,a3,c4,f4] ~@3 [c4,f4,a4]@2 ~@2 [a2,a3,c4] ~@3, ~@15 [e3,g3]@2 ~@6 a3@2 ~@7]/2", // Am7 A7 Am7 D5 Am Dm7 F Am …
  N: "[d3,a3,c4,f4,a4] ~ d3 ~ [d3,a3,c4,f4,a4] ~ [a2,d3,a3] ~", // Dm7 D5
  O: "[d3,a3,c4,f4,a4]@2 ~@3 g#4@3 ~ g#4 ~@2 [b2,b3]@3 ~, ~@4 [b2,b3]@3 ~ [e3,b3,d4,b4]@2 ~ a#3@2 ~@3", // Dm7 B E7
  P: "[b2,e3,b3,d4,g#4,b4] ~ a2 ~ [b2,e3]@4 [b2,e3,b3,d4,g#4,b4] ~@3 [b2,e3,b3]@4", // E7 E5 E7 E5
  Q: "[[b2,e3,b3,d4,g#4,b4] ~ [d3,g3] ~ [a2,e3,g3,c4]@3 ~ [a2,g3,c4,e4,a4] ~@3 [e3,g3,c4]@3 ~ [g3,e4,a4] ~@6 g3 [c4,e4,a4] ~@3 [a2,e3,g3]@3 [a2,e3], ~@7 [e3,a3]@2 ~@3 a2@5 ~@2 a2@5 ~@8, ~@15 c4@2 ~@3 e3@6 ~@6]/2", // E7 G5 Am7 C A7 Am A7 A5
  R: "[g3,c4,e4,a4] ~@3 [d3,a3,c4] ~@3 [d3,a3,c4,f4,a4]@2 ~@2 [a2,d3,a3]@3 [d3,c4]", // Am7 D7 Dm7 D5 D7
  S: "[a3,f4,a4] ~@3 [d3,a3,c4,f4,a4]@2 e4 ~ [a2,d3,a3,c4,f4,a4] ~@3 d3@4, ~@11 a2@5", // Dm Dm7
  T: "[d3,a3,c4,f4,a4] ~@3 [e3,g3]@3 [a2,e3,c4] [g3,e4,a4] ~@3 [a2,e3,g3]@4", // Dm7 Em Am A7
  U: "[e3,g3,c4,e4,a4] ~@3 [a2,e3,g3]@4 [e3,g3,c4,e4,a4] ~@3 [a2,e3,g3]@4", // Am7 A7 Am7 A7
  V: "[e3,g3,c4,e4,a4] ~ [g3,b3] d3 [e2,e3,g#3,d4,f#4]@4 [e3,g#3,d4,f#4]@2 ~@2 [e2,d4]@4", // Am7 G E7
  W: "[[g#3,d4,f#4]@2 ~@2 [g#3,d4]@4 [g#3,d4,f#4]@2 g3 d3 [e3,g#3]@3 ~ [e3,g#3,d4] ~ [d3,g3] e3 [a2,e3,g3,c4]@4 [e3,g3,c4,e4,a4]@2 ~ d3 [a2,d3,a3,c4,f4,a4]@2 ~ [a2,d3,a3,c4,f4], ~@3 e2@7 ~@2 e2@7 ~@13, ~@2 e3@3 ~@3 [e4,f#4] ~@6 a4]/2", // G#m7b5 G#dim G#m7b5 E E7 G5 Am7 Dm7 …
  X: "~@5 a2@7 [a2,e3] [g3,c4,e4,a4] ~@2, ~ [e3,g3,c4,e4,a4]@2 ~", // A5 Am7
  Y: "~@5 g3@3 ~ [g3,c4,e4,a4] ~@2 [a2,e3]@4, ~@2 e3@2 [a2,e3] ~@3", // Am7 A5
  Z: "[e3,g3,c4,e4,a4] ~@3 [a2,g3]@4 [e3,g3,c4,e4,a4] ~@3 [a2,e3,g3,c4]@4, ~@4 e3@3 ~@9", // Am7 A7 Am7
  AA: "[a2,e3,g3,c4,e4,a4]@2 ~@2 [a2,d3,f4]@4 [a3,c4,f4,a4]@2 ~ a2 [a2,d3,a3,c4,f4]@4, ~@4 [a3,c4]@3 ~@3 a4@6, ~@5 f4 ~@2", // Am7 Dm F Dm7 Am
  AB: "[a2,d3,a3,c4,f4,a4] ~@2 a2 [d3,a3]@4 [a3,c4,f4,a4]@2 ~@2 [a2,d3,a3,c4]@4", // Dm7 D5 F D7
  AC: "[d3,a3,c4,f4,a4] ~@3 [e3,b3,d4,g#4]@3 ~ [e3,b3,d4,g#4,b4]@2 ~ a2 [e3,d4]@4", // Dm7 E7
  AD: "[e3,b3,d4,g#4,b4] ~ b3@2 [b3,d4,g#4,b4] ~ [e3,b3,d4]@2, ~ g#4@3 ~@4, ~@2 [b2,e3]@3 ~@3", // E7 G#dim E7 E5
  AE: "[e3,b3,d4,g#4,b4] ~@2 e3 [a2,e3,g3,c4]@4 [e4,a4]@3 ~ [g3,c4,e4]@4, ~@8 [g3,c4] ~@7", // E7 Am7 A5 C C5
  AF: "[[a2,e3,g3,c4,e4,a4]@2 ~@2 [a2,e3,c4]@4 [g3,c4,e4,a4]@2 ~@2 [e3,g3,c4]@4 [g3,c4,e4,a4]@2 ~ a3 [a2,c4,f4]@4 [d3,a3,c4,f4,a4] ~ [g#3,c4,e4] ~ [a2,d3,a3]@3 a2, ~@4 g3@3 ~@5 a2@7 d3@5 ~@3 f4@5]/2", // Am7 Am Am7 C Am7 F Dm7 G#aug …
  AG: "[d3,a3,c4,f4,a4] ~ [g#3,e4] ~ [a3,c4,f4]@4 [a3,c4,f4,a4]@2 ~@2 [a2,d3]@4, ~@2 d3@3 ~@3", // Dm7 C#m F D5
  AH: "[a3,c4,f4,a4]@2 e4 ~ [e3,g3,c4]@3 ~ [g3,c4,e4,a4]@2 ~@2 [a2,g3]@4, ~ a2 ~@2", // F C Am7 A7
  AI: "[e3,g3,c4,e4,a4]@2 d#4 ~ [a2,g3,c4]@4 [e3,g3,c4,e4,a4]@2 c4 [f3,e4] [a2,g3,c4]@4, ~@4 e3@3 ~@9", // Am7 Fmaj7 Am7
  AJ: "[e3,g3,c4,e4,a4] ~@3 [b2,e3,b3,d4,g#4,b4]@4 [e3,b3,d4,g#4,b4]@2 a#3 [e2,a2,e3] [b2,e3,b3,d4]@4", // Am7 E7 A5 E7
  AK: "[d4,g#4,b4]@2 b4 ~ [e3,b3,d4]@3 ~ [e3,b3,d4,g#4,b4] ~ a#3 ~ [b2,e3,b3]@4, ~@3 g#4@5 ~@2 g#4@5 ~, ~ b2 ~@2", // G#dim E7 E5
  AL: "[[e3,b3,d4,g#4,b4]@2 ~ [d3,g3] [a2,g3]@4 [e3,g3,c4,e4,a4] ~@3 [a2,d3,a3,c4,f4,a4]@2 ~ [a2,d3,a3,c4,f4] ~@5 a4@11, ~@7 a4@3 [a2,e3,g3,c4,e4]@6]/2", // E7 G5 A7 Am7 Dm7 Am7
})).s("gm_acoustic_guitar_nylon").gain(0.29).pan(0.7)

stack(acoustic_guitar_nylon)