Strudelify

the great gig in the sky

Dylan Root

KeyG majorTempo72 bpm
0:00/0:00
// the great gig in the sky — Dylan Root
// 72 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 36, 4/4 at bar 37) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 3 "Tenor Saxophone" tenor sax (copy of ch 1 "Alto Saxophone" alto sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5938304; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/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 D E F G H I J K L M N O P Q R Q R Q R Q R Q R Q R Q R Q R Q R S T U@4 V W X Y Z AA AB AC AD AE AF AG AH AI@2
  AJ@10 AK@2
>`.pickRestart({
  A: "[d4,f#4] b3 [d4,f#4] b3 [d4,f#4] b3 [d4,f#4] b3, [b1,b2]", // D B
  B: "[b3,a4] b3 [b3,a4] c4 [d4,a4] c4 [b3,a4]@2, [f2,f3]", // B7 D5 B7 F
  C: "[f4,a#4]@2 d4@2 [f4,a#4]@2 d4@2 [f4,d5]@2 d4!2 c5 a#4 f4@2, [a#1,a#2]@2 [a#1,a#2] [a#1,a#2,d4]", // A#5 Dm A#
  D: "[f4,a4]@2 c4@2 [f4,a4]@2 c4@2 [f4,c5]@2 c4@2 a4 g4 [c4,f4]@2, a2!4, ~@6 f4 ~", // F F5
  E: "[a#3,d4,f4] g3 [a#3,d4,f4] g3 [g2,a#3,d4,f4] g3 [a#3,d4] [g2,g3,f4], g2@4 ~ g2@2 ~", // A# Gm7 A# G7
  F: "[a#3,d4,d#4]@2 g3@2 [a#3,d4,d#4]@2 g3@2 [c3,a#3,d4,d#4]@2 [c3,g3]@2 ~ c3 [d3,g3]@2, c3@4 ~@2 [a#3,d4,d#4] ~", // D#maj7 Cm7 C5 G5 D#maj7
  G: "[a#3,d4,f4]@2 g3@2 [a#3,d4,f4]@2 g3@2 [a#3,d4,f4]@2 g3@2 [d4,f4] ~ [a#2,g3]@2, g2@4 f2@2 [d3,a#3] ~, ~@13 d4@3", // A# Dm D# Gm
  H: "[a#3,d4,d#4]@2 g3@2 [a#3,d4,d#4]@2 g3@2 [c3,a#3,d4,d#4]@2 g3@2 g3 a#3@3, c3@4 ~ c3@3", // D#maj7 Cm7
  I: "[c4,d#4]@2 a3@2 [c4,d#4]@2 a3@2 [c4,d#4]@2 a3@2 d#4 c4@3, [f2,f3]!2", // Cm F
  J: "[d4,f4] a3 [d4,f4] a3 [d4,f4] a3 [d4,f4] a3, [a#1,a#2]!2", // Dm A#
  K: "[d4,f4]@2 g3@2 [d4,f4]@2 g3@2 [d4,f4]@2 g3@2 [d#2,d#3] ~ g3@2, [d#2,d#3]@4 [d#2,d#3]@2 [d4,f4] ~, ~@13 [d2,d3]@3", // Dm D# Dm D
  L: "[a#3,d#4] g3 [a#3,d#4] g3 [g3,a#3,d#4] ~ [a#3,d#4] g3, [c2,c3] g2, ~@5 g3@2 ~", // D#5 D# D#5 C
  M: "d#4@2 [g3,c4]@2 d#4@2 ~ g2 [a3,d#4]@2 c4@2 [a3,c4] d#4@3, [f2,f3]@3 [g3,c4] a2@4", // C5 Adim Am F C5
  N: "[d4,f4]@2 a3@2 [d4,f4]@2 a3@2 [d#4,g4]@2 a#3!2 [d#4,g4]@2 a3@2, [a#2,f3] [d#2,d#3]", // Dm D# A#5 D#
  O: "[f3,a#3]@2 ~ a#3 d4@2 f4@2 a#4 f4 a#4 d5 f5@2 d5 f5, a#2 [a#2,f3], ~ f3@3 ~@4", // A#5
  P: "a#5 f5 d5 a#4 f5 d5 a#4 f4, [a#2,d3,f3] [d3,f3,a#3]", // A#
  Q: "[g2,g3,f4,g4,a#4,d5]!2 [f2,f3,f4,g4,a#4,d5] [d2,d3,f4,g4,a#4,d5]", // Gm7
  R: "[e4,g4,a#4,d5]@2 [e4,g4,a#4,d5]@2 [c2,c3] ~ [e4,g4,a#4,d5]@2, [c2,c3]@2 [e4,g4,a#4,d5] ~, ~@5 [c2,c3]@3", // Em7b5 C Em7b5 C Em7b5 C
  S: "[d4,f4,g4,a#4]!2 [c#4,f4,g4,a#4]!2, [d2,d3] [c#2,c#3]", // Gm7 Gm7b5 D C#
  T: "[c#4,e4,g4,a#4]!2 [b3,d4,f#4,b4]!2, [f#2,f#3] [b1,b2]", // C#dim Bm F# B
  U: "[b4 f#4 d5 b4 f#5 d5 b4 f#4 e4 d4 c#4@2 [d4,f#4] b3 [d4,f#4] b3 [d4,f#4] b3 [d4,f#4] b3 [b3,a4] b3 [b3,a4] c4 [d4,a4] c4 [b3,a4]@2 [f4,a#4] d4 [f4,a#4] d4, [b2,d3,f#3,b3] [b2,d3,f#3,b3]@2 [b1,b2]@2 [f2,f3]@2 [a#1,a#2]]/4", // D B7 D5 B7 A#5 Bm B F …
  V: "[f4,d5]@2 d4!2 c5 a#4 f4@2 [f4,a4]@2 c4@2 [f4,a4]@2 c4@2, [a#1,a#2] [a#1,a#2,d4] a2!2", // Dm F A#
  W: "[f4,c5]@2 c4@2 [f4,a4] g4 [c4,f4]@2 [a#3,d4,f4]@2 g3@2 [a#3,d4,f4]@2 g3@2, a2!2 g2@2", // F5 F F5 A#
  X: "[g2,a#3,d4,f4] g3 [a#3,d4] [g2,g3,f4] [a#3,d4,d#4] g3 [a#3,d4,d#4] g3, ~ g2@2 ~ c3@4", // Gm7 A# G7 D#maj7
  Y: "[c3,a#3,d4,d#4]@2 [c3,g3]@2 ~ c3 [d3,g3]@2 [a#3,d4,f4]@2 g3@2 [a#3,d4,f4]@2 g3@2, ~@2 [a#3,d4,d#4] ~ g2@4", // Cm7 C5 G5 A# D#maj7
  Z: "[a#3,d4,f4]@2 g3@2 [a#3,d4,f4] ~ [a#2,g3]@2 [a#3,d4,d#4]@2 g3@2 [a#3,d4,d#4]@2 g3@2, f2@2 d3 ~ c3@4, ~@5 d4@3 ~@8", // A# D# D#maj7
  AA: "[c3,a#3,d4,d#4]@2 g3@2 g3 a#3@3 [c4,d#4]@2 a3@2 [c4,d#4]@2 a3@2, ~ c3@3 [f2,f3]@4", // Cm7 Cm F
  AB: "[c4,d#4]@2 a3@2 d#4 c4@3 [d4,f4]@2 a3@2 [d4,f4]@2 a3@2, [f2,f3] [a#1,a#2]", // Cm Dm F A#
  AC: "[d4,f4] a3 [d4,f4] a3 [a#3,d4] g3 [a#3,d4] g3, [a#1,a#2] [d#2,d#3]", // Dm A# D#
  AD: "[a#3,d4]@2 g3@2 [d#2,d#3] ~ g3@2 [a#3,d#4]@2 g3@2 [a#3,d#4]@2 g3@2, [d#2,d#3]@2 [a#3,d4] ~@5, ~@5 [d2,d3]@3 [c2,c3]@8", // A# D# D#5 D# A# D C
  AE: "[g3,a#3,d#4]@2 ~@2 [a#3,d#4]@2 g3@2 [g3,d#4]@2 c4@2 [g3,d#4]@2 ~ g2, g2@8 [f2,f3]@7 ~, ~ g3@2 ~@4 c4", // D# D#5 Cm F
  AF: "[a3,d#4]@2 c4@2 [a3,c4] d#4@3 [d4,f4]@2 a3@2 [d4,f4]@2 a3@2, a2 [a#2,f3]", // Adim Am Dm A#5
  AG: "[d#4,g4]@2 a#3!2 [d#4,g4]@2 a3@2 [f3,a#3]@2 ~ a#3 d4@2 f4@2, [d#2,d#3] a#2, ~@5 f3@3", // D# A#5 D#
  AH: "a#4 f4 a#4 d5 f5@2 d5 f5 a#5@2 f5@2 d5@2 a#4@2, [a#2,f3] [a#2,d3,f3]", // A#5 A#
  AI: "[f5 d5 a#4 f4 [a#3,d4,f4] g3 [a#3,d4,f4] g3 [a#3,d4,f4] g3 [a#3,d4,f4] g3 [a#3,d4,e4] g3 [a#3,d4,e4] g3, [d3,f3,a#3]@2 g2@3 g2 c2@2]/2", // A# Em7b5 A#
  AJ: "[[c2,a#3,d4,e4] g3 [a#3,d4,e4] g3 [a#3,d4,f4] g3 [a#3,d4,f4] g3 [a#3,d4,f4] g3 [a#3,d4,f4] g3 [a#3,d4,e4] g3 [a#3,d4,e4] g3, ~ c2@3 g2@6 g2@2 c2@4]/2", // C7 Em7b5 A# Em7b5
  AK: "[[c2,a#3,d4,e4] g3 [a#3,d4,e4] g3 [g2,g3,a#3,d4,f4]@8 ~@4, ~ c2@3 ~@12]/2", // C7 Em7b5 Gm7
})).s("gm_piano").gain(0.3)

stack(piano)