Strudelify

stuck in the middle with you

Gerry Rafferty Joe Egan

KeyD majorTempo126 bpm
0:00/0:00
// stuck in the middle with you — Gerry Rafferty Joe Egan
// 126 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5377654; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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
const piano = note("<~ A B C@4 D@8 E@2 F@2 D@8 G@2 H I J K L@2 M@2 N@3 O@3 P@8 Q R S@6 T@3>".pickRestart({
  A: "~@2 [a4,f#5]@2 [g4,e5] [f#4,d5]@3", B: "f#5 a5 f#5 d5@2 d5 c5 d5, d5@6 [f#4,a4]@9 ~",
  C: "[~@2 [a4,f#5]@2 [g4,e5] [f#4,d5]@2 c6@2 b5 a5 g5 f#5 d5 c5 d5@2 d5!2 c5!2 [d4,f#4,b4] b4 [d4,f#4,a4]@3 [d4,f#4]@2 ~ [f#4,a4,d5] d5 [f#4,a4,c5], ~@14 [d5,f#5]@9 ~@3 [f#4,a4]@4 [f#4,a4]@6 [f#4,a4]@4 ~@24]/4", // D C D Bm D F#dim D F#m
  D: "[d5@2 d5@2 d5@2 c5@4 [d4,f#4,b4]@2 b4@2 [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [f#4,a4,d5]@2 e5@2 f5@4 d5@2 [b4,d5]@2 b4@2 d5@2 [g4,b4,d5]@2 b4@2 [g4,b4,f5]@6 [g4,b4]@4 ~@2 [g4,b4,d5]@2 c5@2 d5@4 d5@2 d5@2 c5@2 c5@2 [d4,f#4,b4]@2 b4@2 [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [d4,f#4]@2 ~@2 d5@6 d5 c#5 d5@3 c#5 a4@2 ~@2 f5@4 d5@2 f5 d5 f5@4 f5@2 c5@2 [f4,a4,d5]@2, [f#4,a4]@4 [f#4,a4]@4 ~@22 [g4,b4]@6 g4@4 ~@22 [f#4,a4]@6 [f#4,a4]@4 ~@22 e4@13 ~@21, ~@94 a4@11 ~@5 [g4,c#5]@8 [g4,b4]@7 ~@3]/8", // Bm D Bm G G7 G Bm D …
  E: "[~ d5!2 c5!2 [d4,f#4,b4] b4 [d4,f#4,a4]@3 [d4,f#4]@2 ~ d5 d5@2, ~@2 [f#4,a4]@2 ~@9 [f#4,a4]@3]/2", // Bm D F#m
  F: "[~ d5!2 c5!2 [d4,f#4,b4] b4 [d4,f#4,a4]@3 [d4,f#4]@2 ~ [f#4,a4,d5] d5 [f#4,a4,c5], ~ [f#4,a4] ~@6]/2", // Bm D F#dim F#m
  G: "[~ d5!2 c5!2 [d4,f#4,b4] b4 [d4,f#4,a4]@3 [d4,f#4]@2 ~@2 f5 d5, ~@2 [f#4,a4]@2 ~@9 [f#4,a4]@3]/2", // Bm D F#m
  H: "f5!2 e5 d5!3 b4 d5, [g4,b4]!3 ~", I: "f5!2 e5 d5!3 b4@2, [g4,b4]!3 ~", J: "~@4 [a4,f5]@2 [g4,e5]@3 ~ [f4,d5]@6",
  K: "[a4,f5]@2 [a4,f5]@2 [g4,e5]@2 [f4,d5]@5 ~ f5@2 d5@2", // Dm C Dm
  L: "[f5!2 e5 d5!3 ~ f5@2 f5 e5 d5 [b4,d5] b4 d5@2, [g4,b4]@2 [g4,b4]@2 [g4,b4]@2 ~ [g4,b4]@3 [g4,b4]@2 g4@2 ~@2]/2", // Bm G
  M: "[a5 f5 f#5 [f#4,a4,d5]@13, d5@3 ~@13]/2", N: "[~ a5@2 f5@2 f#5@2 [g4,c5,d5]@26 ~@15, ~ c5@6 ~@41]/3",
  O: "[~@7 [a4,f#5]@4 [g4,e5]@2 [f#4,d5]@6 f#5@2 a5@2 f#5@2 d5@4 d5@2 c5@2 d5@2 ~@4 [a4,f#5]@4 [g4,e5]@2 [f#4,d5]@3, ~@19 d5@6 [f#4,a4]@9 ~@14]/3", // D C D C D F#m
  P: "[~ c6@4 b5@2 a5@2 g5@2 f#5@2 d5@2 c5@2 d5@4 d5@2 d5@2 c5@2 c5@2 [d4,f#4,b4]@2 b4@2 [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [f#4,a4,d5]@2 d5@2 [f#4,a4,c5]@2 d5@2 d5@2 d5@2 c5@4 [d4,f#4,b4]@2 b4@2 [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [f#4,a4,d5]@2 e5@2 f5@4 d5@2 [b4,d5]@2 b4@2 d5@2 [g4,b4,d5]@2 b4@2 [g4,b4,f5]@6 [g4,b4]@4 ~@2 [g4,b4,d5]@2 c5@2 d5@4 d5@2 d5@2 c5@2 c5@2 [d4,f#4,b4]@2 b4, ~ [d5,f#5]@9 ~@3 [f#4,a4]@4 [f#4,a4]@6 [f#4,a4]@4 ~@24 [f#4,a4]@4 [f#4,a4]@4 ~@22 [g4,b4]@6 g4@4 ~@22 [f#4,a4]@6 [f#4,a4]@4 ~@5]/8", // Bm D F#dim Bm D Bm G G7 …
  Q: "~ [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [d4,f#4]@2 ~", R: "~ d5@6 d5 c#5 d5@3 c#5 a4@2 ~, ~ e4@13 ~@2, ~ a4@11 ~@4",
  S: "[~ f5@4 d5@2 f5 d5 f5@4 f5@2 c5@2 d5@4 d5@2 d5@2 c5@2 c5@2 [d4,f#4,b4]@2 b4@2 [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 d5@2 d5@4 ~@2 d5@2 d5@2 c5@2 c5@2 [d4,f#4,b4]@2 b4@2 [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [d4,f#4]@6 ~@2 d5@2 d5@2 c5@2 c5@2 [d4,f#4,b4]@2 b4, ~ [g4,c#5]@8 [g4,b4]@7 ~ [f4,a4]@6 [f#4,a4]@4 ~@18 [f#4,a4]@6 [f#4,a4]@4 [f#4,a4]@4 ~@24 [f#4,a4]@4 [f#4,a4]@4 ~@5]/6", // Bm D Bm D Bm Gdim G F …
  T: "[~ [d4,f#4,a4]@6 [d4,f#4]@4 ~@2 [d4,f#4]@6 [a4,d5,f#5]@4 [d4,a4,d5,f#5]@11 ~@14]/3", // D
})).s("gm_piano").gain(0.72)

// other · piano
const piano_2 = note("<A@3 B@4 C@2 D E B@2 F G H@2 B@2 C@2 D E B@2 F G I@2 J K L@2 J K M@3 N@8 O@8 P@8>".pickRestart({
  A: "d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 a2@2",
  B: "[d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2]/2",
  C: "[d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 d3@2]/2",
  D: "g3@2 ~@2 g3@3 a2 b2@2 c3@2 a2@2 d3@2", E: "g3@2 ~@2 g3@3 d3 g3@2 d3@2 b2@2 c3@2", F: "a2@2 a2 c3!2 e3 c3 b2",
  G: "c3 e3 f3 f#3 g3 d3 c3 d3", H: "[a2@2 d3@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2]/2",
  I: "[a2@2 d3@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 f#3@2]/2", J: "g3!7 f#3",
  K: "g3!5 f#3 g3 c#3", L: "[d3@4 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2]/2",
  M: "[d3@4 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 ~ d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2 d3@4 d3@3 ~ e2 f#2@2 a2@2 b2@2]/3",
  N: "[d3@4 d3@2 c3@2 ~ e2@2 f#2@2 a2@2 b2@2 d3@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2]/8",
  O: "[~ a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 d3@2 g3@2 ~@2 g3@3 a2 b2@2 c3@2 a2@2 d3@2 g3@2 ~@2 g3@3 d3 g3@2 d3@2 b2@2 c3@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2 a2@4 a2@2 c3@2 c3@2 e3@2 c3@2 b2@2 c3@2 e3@2 f3@2 f#3@2 g3@2 d3@2 c3]/8",
  P: "[~ d3@2 a2@2 d3@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@3 e2 f#2@2 a2@2 b2@2 d3@4 d3@2 c3@2 e2@2 f#2@2 a2@2 b2@2 a2@2 d3@2 ~@2 d3@11 ~@14]/8",
})).s("gm_piano").gain(0.72)

stack(piano, piano_2)