Strudelify

Canon and Gigue in D major P.37

Johann Pachelbel

KeyG majorTempo70 bpm
0:00/0:00
// Canon and Gigue in D major P.37 — Johann Pachelbel
// 70 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4442086; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · orchestral harp · "하프"
const orchestral_harp = note(`<
  A B C D A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA
>`.pickRestart({
  A: "~ b3 d4 g4 ~ a3 d4 f#4, g3 d3", B: "~ g3 b3 e4 ~ f#3 b3 d4, e3 b2", C: "~ e3 g3 c4 ~ d3 g3 b3, c3 g2",
  D: "~ g3 a3 e4 ~ a3 d4 f#4, c3 d3", E: "g3 b3 d4 g4 d3 a3 d4 f#4, b5 a5", F: "e3 g3 b3 e4 b2 f#3 b3 d4, g5 f#5",
  G: "c3 e3 g3 c4 g2 d3 g3 b3, e5 d5", H: "c3 g3 a3 e4 d3 a3 d4 f#4, e5 f#5",
  I: "g3 d4 g4 d4 d3 a3 d4 a3, [g5,b5] [f#5,a5]", J: "e3 g3 e4 b3 b2 f#3 b3 f#3, [e5,g5] [d5,f#5]",
  K: "c3 e3 c4 g3 g2 d3 g3 d3, [c5,e5] [b4,d5]", L: "c3 g3 c4 g3 d3 a3 d4 a3, [c5,e5] [d5,f#5]",
  M: "[g3,g5] [d4,f#5] [g4,g5] g4 [d3,f#4] [f#3,d5] a4 b4, ~@3 d4", // G D G D
  N: "[e3,g4] [g3,g5] f#5 e5 [b2,f#5] [f#3,b5] d6 e6, ~ e4 ~ b3", // Em G B5
  O: "[c3,c6] [g3,b5] a5 c6 [g2,b5] [d3,a5] g5 f#5, ~ c4 ~ g3", // C G D5
  P: "[c3,e5] [g3,d5] c5 b4 [d3,a4] [f#3,c5] b4 a4, ~ c4 ~ d4", // C G5 D5 F#dim
  Q: "[g3,g4] [d4,a4] [g4,b4] [d4,c5] [d3,d5] [f#3,a4] [d4,d5] [a3,c5]", // G D5 G D7 D F#m D Am
  R: "[e3,b4] [g3,e5] [e4,d5] [b3,c5] [b2,d5] [f#3,c5] [b3,b4] [f#3,a4]", // E5 C E7 Cmaj7 Bm F#dim B F#m
  S: "[c3,g4] [g3,e4] [c4,e5] [g3,f#5] [g2,g5] [d3,f#5] [g3,e5] [d3,d5]", // C5 C Gmaj7 G D C D
  T: "[c3,c5] [g3,b4] [c4,a4] [g3,e5] [d3,d5] [f#3,e5] [d4,d5] [a3,c5]", // C G F C D F#7 D Am
  U: "g3 d4 g4 d4 d3 f#3 d4 a3, b4 [d5,g5,b5] [d5,f#5,a5]@2", // G D
  V: "e3 g3 e4 b3 b2 f#3 b3 f#3, ~ [b4,e5,g5] [d5,f#5,b5]@2", W: "c3 g3 c4 g3 g2 d3 g3 d3, [c5,e5,g5] [b4,d5,g5]",
  X: "c3 g3 c4 g3 d3 f#3 d4 a3, [c5,e5,g5] c6 [d5,f#5,a5] d6", // C D
  Y: "d6@2 b5 c6 d6@2 b5 c6 d6 d5 e5 f#5 g5 a5 b5 c6, [g3,d4,g4] [d3,f#3,d4]", // G5 D
  Z: "b5@2 g5 a5 b5@2 b4 c5 d5 e5 d5 c5 d5 b4 c5 d5, [e3,b3,e4] [b2,f#3,b3]", // E5 B5
  AA: "c5@2 e5 d5 c5@2 b4 a4 b4 a4 g4 a4 b4 c5 d5 e5, [c3,g3,c4] [g2,d3,g3]", // C5 G5
  AB: "c5@2 e5 d5 e5@2 f#5 g5 d5 e5 f#5 g5 a5 b5 c6 d6, [c3,g3,c4] [d3,f#3,d4]", // C5 D
  AC: "g3 b3 d4 g4 b4 d5 g5 b5 d3 a3 d4 f#4 a4 d5 f#5 a5, [g5,b5] ~ [f#5,a5] ~", // G F#m
  AD: "e3 g3 b3 c4 g4 b4 e5 g5 b2 f#3 b3 d4 f#4 b4 d5 f#5, [e5,g5] ~ [d5,f#5] ~", // Em D
  AE: "c3 e3 g3 c4 e4 g4 c5 e5 g2 d3 g3 b3 d4 g4 b4 d5, [c5,e5] ~ [b4,d5] ~", // C Bm
  AF: "c3 e3 g3 c4 e4 g4 c5 e5 d3 f#3 a3 d4 f#4 a4 d5 f#5, [c5,e5] ~ [d5,f#5] ~", // C D
  AG: "g3@2 g4 a4 [b3,b4]@2 [d4,g4]@2 [d3,f#4]@2 f#5 g5 [a3,a5]@2 [d4,f#5]@2, g5 ~ d4@2 ~@6 d4@2 ~@4", // B G5 D A D
  AH: "[e3,e5]@2 e4 f#4 [g3,g4]@2 [b3,e4]@2 [b2,f#4]@2 d5 c5 [a3,b4]@2 [b3,a4]@2, ~ b3 ~@3 b3 ~@2", // E G E5 B5 Asus2 B7
  AI: "[c3,g4]@2 c5 b4 [e3,a4]@2 [g3,c5]@2 [g2,b4]@2 g4 a4 [d3,b4]@2 [g3,d5]@2, ~ g3 ~@3 g3 ~@2", // C5 A5 C5 G G5
  AJ: "[c3,c5]@2 e5 d5 [g3,c5]@2 [c4,b4]@2 [d3,a4]@2 d5 c5 [a3,b4]@2 [d4,a4]@2, ~ c4 ~@3 d4 ~@2", // C C5 Cmaj7 D5 Asus2 D5
  AK: "g3 b3 d4 g4 b4 d5 g5 b5 d3 a3 d4 f#4 a4 d5 f#5 a5", AL: "e3 g3 b3 e4 g4 b4 e5 g5 b2 f#3 b3 d4 f#4 b4 d5 f#5",
  AM: "c3 e3 g3 c4 e4 g4 c5 e5 g2 d3 g3 b3 d4 g4 b4 d5", AN: "c3 e3 g3 c4 e4 g4 c5 e5 d3 f#3 a3 d4 f#4 a4 d5 f#5",
  AO: "g3 b3 d4 g4 ~@2 b5@2 d3 a3 d4 f#4 b5@2 a5@2, b4@3 ~ b5 c6 ~@2, ~ b3 ~ a3",
  AP: "e3 g3 b3 e4 ~@2 g5@2 b2 f#3 b3 d4 g5@2 f#5@2, g5@3 ~ g5 a5 ~@2, ~ g3 ~ f#3",
  AQ: "c3 e3 g3 c4 e3@4 g2 d3 g3 b3 d3@4, e5 g5",
  AR: "c3 e3 g3 c4 [e3,g5]@4 d3 f#3 a3 d4 ~@2 f#5@2, c5@2 ~@2 f#5@3 ~, ~@3 f#3", // Em
  AS: "[g3,d4,g4,b4,d5,g5] [d3,a3,d4,f#4,a4,d5]", AT: "[e3,b3,e4,g4,b4,e5] [b2,f#3,b3,d4,f#4,b4]",
  AU: "[c3,g3,c4,e4,g4,c5] [b2,d3,g3,b3,d4,g4]", AV: "[c3,g3,c4,e4,g4,c5] [d3,a3,d4,f#4,a4,d5]",
  AW: "[g4,b4,d5,g5] g4 f#4 f#5, [g3,d4] [d3,a3,d4]", AX: "[e4,g4,b4,e5] e4 d4 d5, [e3,b3] [b2,f#3,b3]",
  AY: "[e4,g4,c5] c6 [d5,g5,b5] b4, [c3,g3,c4] [b2,d3,g3]", AZ: "~ [c4,c5]@7 ~ [d4,d5]@7, [c3,g3,e4,g4] [d3,a3,f#4,a4]",
  BA: "[g2,d3,g3,b3,d4,g4]", // G
})).s("gm_orchestral_harp").gain(0.3)

stack(orchestral_harp)

More by Johann Pachelbel