Strudelify

Canon and Gigue in D major P.37

Johannes Pachelbel

KeyD majorTempo96 bpm
0:00/0:00
// Canon and Gigue in D major P.37 — Johannes Pachelbel
// 96 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6058930; 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(96/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · violin
const violin = note(`<
  ~@8 A B C D B C E F G H I J K L M N O P Q R K C S T U V W X Y Z X AA Y Z X AA AB AC AD AE AF AG M B AH AI AJ AK AL
>`.pickRestart({
  A: "f#5 e5", B: "d5 c#5", C: "b4 a4", D: "b4 c#5", E: "g4 f#4", F: "g4 e4", G: "d4 f#4 a4 g4", H: "f#4 d4 f#4 e4",
  I: "d4 b3 d4 a4", J: "g4 b4 a4 g4", K: "d5!2 c#5@2", L: "~ b4 d5@2", M: "d5@3 d5", N: "d5 g5 e5 a5",
  O: "a5@2 f#5 g5 a5@2 f#5 g5 a5 a4 b4 c#5 d5 e5 f#5 g5", P: "f#5@2 d5 e5 f#5@2 f#4 g4 a4 b4 a4 g4 a4 f#4 g4 a4",
  Q: "g4@2 b4 a4 g4@2 f#4 e4 f#4 e4 d4 e4 f#4 g4 a4 b4", R: "g4@2 b4 a4 b4@2 c#5 d5 a4 b4 c#5 d5 e5 f#5 g5 a5",
  S: "d4@3 e4 f#4@4", T: "b4@4 e4@3 e4", U: "f#4@3 f#5!2 g5 f#5 e5", V: "d5@3 d5!2 e5 d5 c#5", W: "b4 d5",
  X: "d5 c5 b4 c5 a4@3 a4", Y: "a4@3 a5!2 b5 a5 g5", Z: "f#5@3 f#5!2 g5 f#5 e5", AA: "g4@2 d5@2 c#5@3 c#5",
  AB: "f#4 f#5@2 e5", AC: "d5 d6@2 c6", AD: "b5@2 d6 a5", AE: "b5 a5", AF: "a5@4 a4@3 g4", AG: "f#4@4 f#5@3 e5",
  AH: "d5 d4 c#4 c#5", AI: "b4 b3 a3 a4", AJ: "g4 g5 f#5 f#4", AK: "e4 b4 e4 e5", AL: "f#5",
})).s("gm_violin").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E
>`.pickRestart({
  A: "d3 a2", B: "b2 f#2", C: "g2 d2", D: "g2 a2", E: "d3",
})).s("gm_cello").gain(0.3)

stack(violin, cello)