Strudelify

Canon and Gigue in D major P.37

Johann Pachelbelarr. Deng

KeyC majorTempo80 bpm
0:00/0:00
// Canon and Gigue in D major P.37 — Johann Pachelbelarr. Deng
// 80 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 11, 4/4 at bar 13) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 12 "Guitar" named as a guitar, played on electric guitar clean (its steel drums patch is not one); ch 4 "Cello" named as a string part, played on cello (its steel drums patch is not one); ch 5 "Tenor Bass" named as a bass, played on electric bass finger (its steel drums patch is not one); ch 6 "6 Bass" named as a bass, played on electric bass finger (its steel drums patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5871190; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · steel drums · "Lead"
const steel_drums = note(`<
  ~@23 A B C D E F G D H ~@20 B C D E F G I@2 J K J L M N O P B C D E F G D Q B C D E F G D R S
>`.pickRestart({
  A: "~@9 g4 a4 b4 c5 d5 e5 f5", B: "g5@2 e5 f5 g5@2 e5 f5 g5 g4 a4 b4 c5 d5 e5 f5",
  C: "e5@2 c5 d5 e5@2 e4 f4 g4 a4 g4 f4 g4 c5 b4 c5", D: "a4@2 c5 b4 a4@2 g4 f4 g4 f4 e4 f4 g4 a4 b4 c5",
  E: "a4@2 c5 b4 c5@2 b4 c5 b4 c5 a4 b4 c5 d5 e5 f5", F: "g5@2 e5 f5 g5@2 e5 f5 g5 c5 b4 c5 d5 c5 b4 c5",
  G: "e5@2 c5 d5 e5@2 e4 f4 g4 f4 e4 f4 g4 c5 b4 c5", H: "a4@4 c5@2 b4@2 c5@4 b4@2 c5@2 c5!8 b4!4 ~@4",
  I: "[a4@2 c5 b4 a4@3 g#4@3 b4 a#4 g#4@3 g4@3 ~@9 b4 c#5 d5 e5 f#5]/2",
  J: "g#5@2 e5 f#5 g#5@2 e5 f#5 g#5@2 e5 f#5 g#5@2 e5 f#5", K: "g#5@2 e5 f#5 g#5@2 e5 f#5 g#5 a5 g#5 f#5 g#5 c#6 b5 a5",
  L: "g#5!32", M: "c#6@2 a5 b5 c#6@2 a5 b5 c#6 b4 c#5 d#5 e5 f#5 g#5 a5",
  N: "b5@2 g#5 a5 b5@2 g#5 a5 b5 a4 b4 c#5 d#5 e5 f#5 g#5", O: "a5@2 f#5 g#5 a5@2 f#5 g#5 a5 g#4 a4 b4 c#5 d#5 f5 f#5",
  P: "g#5!16 ~@16", Q: "a4@2 c5 b4 c5@2 b4 c5 c5@4 ~@4", R: "a4@4 c5@2 b4@2 c5@4 b4@2 c5@2 c5!8 b4!8", S: "c5!16 ~@16",
})).s("gm_steel_drums").gain(0.49)

// other · steel drums · "Lead" · soft notes
const steel_drums_soft = note("<~@4 A B C D E F G H ~@19 I ~@27 J ~@25>".pickRestart({
  A: "~@21 g5 ~ g5!3 ~ g5!3 ~ g5", B: "g5!2 ~ g5!2 f5 ~ f5!3 ~ e5!3 ~ e5!3 ~ e5!3 ~ e5!3 ~ e5!4 ~",
  C: "d5!2 ~ d5!2 f5 ~ f5!3 ~ e5!3 ~ e5 d5!2 ~ d5!2 c5 ~ c5!3 ~ c5!3 ~ c5",
  D: "c5!2 ~ c5!3 ~ c5!3 ~ b4!3 ~ b4 e5!2 ~ e5!2 g5 ~ g5!3 ~ a5!3 ~ a5",
  E: "f5!2 ~ f5!2 e5 ~ e5!3 ~ d5!3 ~ d5 f5!2 ~ f5!2 e5 ~ e5!3 ~ d5!3 ~ d5",
  F: "c5!2 ~ c5!2 b4 ~ b4!3 ~ a4!3 ~ a4 g4!2 ~ g4!2 a4 ~ a4!3 ~ c5!3 ~ c5",
  G: "c5!2 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!2 b4 ~ b4!3 ~ b4!3 ~ b4", H: "b4!2 ~ b4!3 ~ b4!3 ~@22", I: "~@28 b4!4",
  J: "~@2 a#4 a4 g4@3 f#4@2 g#4 a4 ~@5",
})).s("gm_steel_drums").gain(0.24)

// other · steel drums · "Lead 2"
const steel_drums_2 = note(`<
  ~@23 A B C D E F G D H ~@20 B C D E F G I@2 J K J L M N O P B C D E F G D Q B C D E F G D R S
>`.pickRestart({
  A: "~@9 g4 a4 b4 c5 d5 e5 f5", B: "g5@2 e5 f5 g5@2 e5 f5 g5 g4 a4 b4 c5 d5 e5 f5",
  C: "e5@2 c5 d5 e5@2 e4 f4 g4 a4 g4 f4 g4 c5 b4 c5", D: "a4@2 c5 b4 a4@2 g4 f4 g4 f4 e4 f4 g4 a4 b4 c5",
  E: "a4@2 c5 b4 c5@2 b4 c5 b4 c5 a4 b4 c5 d5 e5 f5", F: "g5@2 e5 f5 g5@2 e5 f5 g5 c5 b4 c5 d5 c5 b4 c5",
  G: "e5@2 c5 d5 e5@2 e4 f4 g4 f4 e4 f4 g4 c5 b4 c5", H: "a4@4 c5@2 b4@2 c5@4 b4@2 c5@2 c5!8 b4!4 ~@4",
  I: "[a4@2 c5 b4 a4@3 g#4@3 b4 a#4 g#4@3 g4@3 ~@9 b4 c#5 d5 e5 f#5]/2",
  J: "g#5@2 e5 f#5 g#5@2 e5 f#5 g#5@2 e5 f#5 g#5@2 e5 f#5", K: "g#5@2 e5 f#5 g#5@2 e5 f#5 g#5 a5 g#5 f#5 g#5 c#6 b5 a5",
  L: "g#5!32", M: "c#6@2 a5 b5 c#6@2 a5 b5 c#6 b4 c#5 d#5 e5 f#5 g#5 a5",
  N: "b5@2 g#5 a5 b5@2 g#5 a5 b5 a4 b4 c#5 d#5 e5 f#5 g#5", O: "a5@2 f#5 g#5 a5@2 f#5 g#5 a5 g#4 a4 b4 c#5 d#5 f5 f#5",
  P: "g#5!16 ~@16", Q: "a4@2 c5 b4 c5@2 b4 c5 c5@4 ~@4", R: "a4@4 c5@2 b4@2 c5@4 b4@2 c5@2 c5!8 b4!8", S: "c5!16 ~@16",
})).s("gm_steel_drums").gain(0.4)

// other · steel drums · "Lead 2" · soft notes
const steel_drums_soft_2 = note("<A B C D E F G H I J K L ~@19 M ~@27 N ~@25>".pickRestart({
  A: "e5!2 ~ e5!3 ~ e5!3 ~ e5!3 ~ e5!3 ~ e5!2 d5 ~ d5!3 ~ d5!3 ~ d5",
  B: "d5!2 ~ d5!3 ~ d5!3 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!4 ~",
  C: "b4!2 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!2 a4 ~ a4!3 ~ a4!3 ~ a4",
  D: "a4!2 ~ a4!3 ~ a4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!4 ~",
  E: "a4!2 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!2 b4 ~ b4!3 ~ b4!3 ~ b4",
  F: "b4!2 ~ b4!3 ~ b4!3 ~ e5!3 ~ e5!3 ~ e5!3 ~ e5!3 ~ e5!4 ~",
  G: "d5!2 ~ d5!3 ~ d5!3 ~ d5!3 ~ d5!3 ~ d5!2 c5 ~ c5!3 ~ c5!3 ~ c5",
  H: "c5!2 ~ c5!3 ~ c5!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!4 ~",
  I: "a4!2 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!2 g4 ~ g4!3 ~ g4!3 ~ g4",
  J: "g4!2 ~ g4!3 ~ g4!3 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!4 ~",
  K: "b4!2 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4", L: "b4!2 ~ b4!3 ~ b4!3 ~@22", M: "~@28 b4!4",
  N: "~@2 a#4 a4 g4@3 f#4@2 g#4 a4 ~@5",
})).s("gm_steel_drums").gain(0.2)

// chords · steel drums · "Double Tenors"
const steel_drums_3 = note(`<
  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 AG AH AI AJ ~@12 AK AL AA AB AC AD
  AM AN AO@3 AP AQ AR AS AT AU AL AV P AW AX AV AY Y AL AA AB AC AD AZ BA BB
>`.pickRestart({
  A: "c5!2 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!2 b4 ~ b4!3 ~ b4!3 ~ b4",
  B: "b4!2 ~ b4!3 ~ b4!3 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!3 ~ a4!4 ~",
  C: "g4!2 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!2 f4 ~ f4!3 ~ f4!3 ~ f4",
  D: "f4!2 ~ f4!3 ~ f4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!4 ~",
  E: "f4!2 ~ f4!3 ~ f4!3 ~ f4!3 ~ f4!3 ~ f4!2 g4 ~ g4!3 ~ g4!3 ~ g4",
  F: "g4!2 ~ g4!3 ~ g4!3 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!3 ~ c5!4 ~",
  G: "b4!2 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!3 ~ b4!2 a4 ~ a4!3 ~ a4!3 ~ a4",
  H: "a4!2 ~ a4!3 ~ a4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!4 ~",
  I: "f4!2 ~ f4!3 ~ f4!3 ~ f4!3 ~ f4!3 ~ f4!2 e4 ~ e4!3 ~ e4!3 ~ e4",
  J: "e4!2 ~ e4!3 ~ e4!3 ~ f4!3 ~ f4!3 ~ f4!3 ~ f4!3 ~ f4!4 ~",
  K: "g4!2 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4", L: "g4!2 ~ g4!3 ~ g4!3 ~@22",
  M: "g4@2 e4 f4 g4@2 e4 f4 g4 g3 a3 b3 c4 d4 e4 f4", N: "e4@2 c4 d4 e4@2 e4 f3 g3 a3 g3 f3 g3 c4 b3 c4",
  O: "a3@2 c4 b3 a3@2 g3 f3 g3 f3 e4 f3 g3 a3 b3 c4", P: "a3@2 c4 b3 c4@2 b3 c4 b3 c4 a3 b3 c4 d4 e4 f4",
  Q: "g4@2 e4 f4 g4@2 e4 f4 g4 c5 b4 c5 d5 c5 b4 c5", R: "e5!14 d#5!18",
  S: "d5@2 b4 c5 d5@2 b4 c5 d5 c4 d4 e4 f4 g4 a4 b4", T: "a4!10 g#4@4 g4!18",
  U: "a#4@2 g4 a4 a#4@2 g4 a4 a#4 c4 d4 e4 f4 g4 a4 a#4", V: "a4!32",
  W: "g#4@2 f4 g4 g#4@2 f4 g4 g#4 a#3 c4 d4 d#4 f4 g4 g#4", X: "g4!32", Y: "[g4,b4]!12 ~@2 [f4,a4]!8 [g#4,b4]!10",
  Z: "~@4 [a4,c5]!8 ~@2 [g4,a#4]!18", AA: "[f4,a4]!12 ~@2 [e4,g4]!2 [e4,g4]@2 [e4,g4]@2 [e4,g4]@2 [e4,g4]@2 [e4,g4]!8",
  AB: "[f4,a4]!8 ~@2 [f4,a4]@4 [f4,a4]@2 ~@2 [f4,a4]@4 [f4,a4]@2 ~@2 [f4,a4]!6", // F
  AC: "~@4 [f4,g4]!4 ~@2 [f4,g4]!4 ~@2 [e4,g4]!4 ~@2 [e4,g4]!4 ~@2 [e4,g4]!4", // Fsus2 Em
  AD: "[e4,g4]!12 ~@2 f4!2 [f4,g4]!6 [e4,g4]!10", AE: "~@4 [e4,g4]!8 ~@2 [d4,f4]!8 [e4,g4]!10",
  AF: "[e4,g4]!12 ~@2 [a4,c5]!18", AG: "e4!16 d4!16", AH: "c4!16 e4!16", AI: "f4!16 e4!16", AJ: "f4!16 g4!16",
  AK: "[g4,b4]@8 ~@2 [g4,b4]!6 ~@2 [f4,a4]!6 [g#4,b4]!8", AL: "[a4,c5]@8 ~@2 [a4,c5]!6 ~@2 [g4,a#4]!14",
  AM: "[c4,e4]!12 ~@2 [b3,d#4]!14 ~@2 [a#3,d4]!2", AN: "[a#3,d4]!12 ~@2 [a3,c#4]@2 ~@6 [d4,e4]!10",
  AO: "[e4,g#4]!8 ~@4 [e4,g#4]!12 ~@4 [e4,g#4]!4", AP: "[e4,g#4]!8 ~@12 [f4,g#4]@4 [f#4,a4]@4 [g#4,b4]@4",
  AQ: "a4!16 a4@4 f#4@2 g#4@2 a4@4 e4@2 f#4@2", AR: "g#4!16 g#4@4 e4@2 f#4@2 g#4@4 d#4@2 e4@2",
  AS: "f#4!16 f#4@4 d#4@2 e4@2 f#4@4 c#4@2 d#4@2", AT: "f4!16 ~@16", AU: "~@9 g3 a3 b3 c4 d4 e4 f4",
  AV: "a3@2 c4 b3 a3@2 g3 f3 g3 f3 g3 f3 g3 a3 b3 c4", AW: "g4@2 e4 f4 g4@2 e4 f4 g4 c4 b3 c4 d4 c4 b3 c4",
  AX: "e4@2 c4 d4 e4@2 g3 f3 g3 f3 g3 f3 g3 c4 b3 c4", AY: "a3@2 c4 b3 c4@2 b3 c4 c4@4 ~@4",
  AZ: "~@4 [e4,g4]!12 [d4,f4]@4 [d4,f4]@2 [d4,f4]@2 [d4,f4]@2 [d4,f4]@2 [d4,f4]@4", // Em Dm
  BA: "[e4,g4]@4 [e4,g4]!8 [e4,g4]@4 [a4,c5]@4 [a4,c5]@4 ~@4 [a4,c5]@4", BB: "[g4,c5]!16 ~@16",
})).s("gm_steel_drums").gain(0.25)

// chords · steel drums · "Double Second"
const steel_drums_4 = note(`<
  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 AG AH AI AJ ~@12 AK AL AA AB AC AD
  AM AN AO AP AO AQ AR AS AT AU AV AL O P AW AX O AY Y AL AA AB AC AD AZ BA BB
>`.pickRestart({
  A: "g4!2 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!4 ~ g4!3 ~ g4!3 ~",
  B: "g4!3 ~ g4!3 ~ g4!2 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!4 ~",
  C: "e4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4 c4 ~ c4!3 ~ c4!3 ~ c4",
  D: "c4!2 ~ c4!3 ~ c4!4 ~ c4!3 ~ c4!3 ~ c4!3 ~ c4!3 ~ c4!3 ~",
  E: "d4!2 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4!4 ~ d4!3 ~ d4!3 ~",
  F: "d4!3 ~ d4!3 ~ d4!2 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!4 ~",
  G: "g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4 e4 ~ e4!3 ~ e4!3 ~ e4",
  H: "e4!2 ~ e4!3 ~ e4!4 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~ e4!3 ~",
  I: "c4!2 ~ c4!3 ~ c4!3 ~ c4!3 ~ c4!3 ~ c4!4 ~ c4!3 ~ c4!3 ~",
  J: "c4!3 ~ c4!3 ~ c4!2 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4!4 ~",
  K: "d4!3 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4!2 ~ d4!3 ~ d4!3 ~ d4", L: "d4!2 ~ d4!3 ~ d4!3 ~@22",
  M: "g4@2 e4 f4 g4@2 e4 f4 g4 g3 a3 b3 c4 d4 e4 f4", N: "e4@2 c4 d4 e4@2 e3 f3 g3 a3 g3 f3 g3 c4 b3 c4",
  O: "a3@2 c4 b3 a3@2 g3 f3 g3 f3 e3 f3 g3 a3 b3 c4", P: "a3@2 c4 b3 c4@2 b3 c4 b3 c4 a3 b3 c4 d4 e4 f4",
  Q: "g4@2 e4 f4 g4@2 e4 f4 g4 c5 b4 c5 d5 c5 b4 c5", R: "e5!14 d#5!18",
  S: "d5@2 b4 c5 d5@2 b4 c5 d5 c4 d4 e4 f4 g4 a4 b4", T: "a4!10 g#4@4 g4!18",
  U: "a#4@2 g4 a4 a#4@2 g4 a4 a#4 c4 d4 e4 f4 g4 a4 a#4", V: "a4!32",
  W: "g#4@2 f4 g4 g#4@2 f4 g4 g#4 a#3 c4 d4 d#4 f4 g4 g#4", X: "g4!32", Y: "[c4,e4]!12 ~@2 [b3,d4]!8 [d4,f4]!10",
  Z: "~@4 [e4,g4]!8 ~@2 [d4,f4]!8 [d4,e4]!10", // Em Dm Dsus2
  AA: "[c4,e4]!12 ~@2 [c4,d4]!2 [c4,d4]@2 [c4,d4]@2 [c4,d4]@2 [c4,d4]@2 [c4,e4]!8", // C Csus2 C
  AB: "[c4,d4]!8 ~@2 [c4,d4]@4 [c4,e4]@2 ~@2 [c4,e4]@4 [c4,d4]@2 ~@2 [c4,d4]!6", // Csus2 C Csus2
  AC: "~@4 [a#3,d4]!4 ~@2 [a#3,d4]!4 ~@2 [a#3,d4]!4 ~@2 [a#3,d4]!4 ~@2 [a3,c4]!4", // A# Am
  AD: "[a3,c4]!12 ~@2 [b3,d4]!8 [c4,d4]!10", AE: "~@4 [a3,c4]!8 ~@2 [g3,b3]!8 [c4,d4]!10",
  AF: "[a3,c4]!12 ~@2 [d4,f4]!18", AG: "c4!16 b3!16", AH: "a3!16 g3!16", AI: "f3!16 g3!16", AJ: "a3!16 b3!16",
  AK: "[c4,e4]@8 ~@2 [c4,e4]!6 ~@2 [b3,d4]!6 [d4,f4]!8", AL: "[e4,g4]@8 ~@2 [e4,g4]!6 ~@2 [d4,f4]!6 [d4,e4]!8",
  AM: "[f4,a4]!12 ~@2 [e4,g#4]!14 ~@2 [d#4,g4]!2", AN: "[d#4,g4]!12 ~@2 [d4,f#4]@2 ~@6 [g#4,b4]!10",
  AO: "[c#4,f#4]!8 ~@4 [c#4,f#4]!4 [c4,f#4]!8 ~@4 [c4,f#4]!4", AP: "[b3,g#4]!8 ~@4 [b3,g#4]!4 [d4,a4]!8 ~@4 [d4,a4]!4",
  AQ: "[b3,g#4]!8 ~@12 [b3,c#4]@4 [c#4,d#4]@4 [c#4,f4]@4", AR: "f#4!16 f#4@4 d#4@2 e4@2 f#4@4 c#4@2 d#4@2",
  AS: "e4!16 e4@4 c#4@2 d#4@2 e4@4 b3@2 c#4@2", AT: "d#4!16 d#4@4 c4@2 c#4@2 d#4@4 a3@2 c4@2", AU: "c#4!16 ~@16",
  AV: "~@9 g3 a3 b3 c4 d4 e4 f4", AW: "g4@2 e4 f4 g4@2 e4 f4 g4 c4 b3 c4 d4 c4 b3 c4",
  AX: "e4@2 c4 d4 e4@2 e3 f3 g3 f3 e3 f3 g3 c4 b3 c4", AY: "a3@2 c4 b3 c4@2 b3 c4 c4@4 ~@4",
  AZ: "~@4 [a3,c4]!12 [g3,b3]@4 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@4", // Am G
  BA: "[a3,c4]@4 [a3,c4]!8 [a3,c4]@4 [d4,f4]@4 [d4,f4]@4 ~@4 [d4,f4]@4", BB: "[d4,g4]!16 ~@16",
})).s("gm_steel_drums").gain(0.25)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@12 A B C D E F G H I J K L A B C M N O@2 P Q R S T U V W X U V W X A B C D A B C D Y Z C M N O AA AB AC@3 AD AE AF
  AG AH A Z C M N O@2 AI A Z C M N O AJ AK AL
>`.pickRestart({
  A: "~@2 [b3,e4]@2 ~ [b3,e4]@2 [d4,f4] ~ [d4,f4]@3 ~ [d4,f4]@3", // E5 Dm
  B: "[c4,e4]@2 [c4,e4]@2 ~ [c4,e4]@2 [a#3,d4] ~ [a#3,d4]@3 ~ [a#3,d4]@3", // C A#
  C: "[a3,c4]@2 [a3,c4]@2 ~ [a3,c4]@2 [g3,c4] ~ [g3,c4]@3 ~ [g3,c4]@3", // Am C5
  D: "[a3,c4]@2 [a3,c4]@2 ~ [a3,c4]@2 [c4,e4] ~ [c4,e4]@3 ~ [c4,d4]@3", // Am C Csus2
  E: "[f4,g4]@2 [f4,g4]@2 ~ [f4,g4]@2 [f4,g4] ~ [e4,g4]@3 ~ [e4,g4]@3", // Fsus2 Em
  F: "[e4,a4]@2 [e4,a4]@2 ~ [e4,a4]@2 [d#4,f#4] ~ [d#4,f#4]@3 ~ [d#4,f#4]@3", // A5 D#m
  G: "[d4,g4]@2 [d4,g4]@2 ~ [d4,g4]@2 [c4,e4] ~ [c4,e4]@3 ~ [c4,e4]@3", // G5 C
  H: "[c4,f4]@2 [c4,f4]@2 ~ [c4,f4]@2 [b3,e4] ~ [b3,e4]@3 ~ [b3,e4]@2 a3", // F5 E5
  I: "[d4,f4]@2 [d4,f4]@2 ~ [d4,f4] ~ [d4,e4] ~ [d4,e4]@3 ~ [d4,e4]@3", // Dm Dsus2
  J: "[c4,e4]@2 [c4,e4]@2 ~ [c4,e4]@2 [c4,e4] ~ [c4,e4]@3 ~ [c4,e4]@3", // C
  K: "[g#3,d#4]@2 [g#3,d#4]@2 ~ [c4,g4]@2 [d4,g4] ~ [d4,f4]@3 ~ [d4,f4]@3", // G#5 C5 G5 Dm
  L: "[d4,f4]@2 [d4,f4]@2 ~ [d4,f4]@2 [e4,g4] ~ [e4,g4]@2 [c4,e4] ~ [b3,d4]@3", // Dm Em C Bm
  M: "[a3,c4]@2 [a3,c4]@2 ~ [a3,c4]@2 [c4,e4] ~ [c4,e4]@3 ~ d4 e4 f4", // Am C
  N: "[d4,g4]@2 [f4,g4]@2 ~ [f4,g4]@2 [e4,g4] ~ [e4,g4]@3 ~ [e4,g4]@3", // G5 Fsus2 Em
  O: "[c4,g4]@2 [c4,g4]@2 ~ [c4,g4]@2 [b3,f4] ~ [b3,f4]@3 ~ [c4,f4]@3", // C5 Bdim F5
  P: "[e4,g4]@2 [e4,g4]@2 ~ [e4,g4]@2 [a4,c5] ~ [a4,c5]@3 c5@4", Q: "e4@2 d4 e4@2 g3@3 g3@2 g3@2 ~ d4@3",
  R: "e4@2 c4 e4@2 e4@2 g4@2 g3@2 g3@3 a4@2", S: "f4@2 e4 d4@2 f4@2 e4@2 d4@2 c4@2 g3@3",
  T: "a3@4 g3@2 a3@4 c4@6 c4!8 b3@2 a3@2 b3@2 d4@2", U: "c4 e3 g3 c4 ~ e3 g3 c4 b3 d3 f3 b3 ~ d3 f3 b3",
  V: "a3 c3 e3 a3 ~ c3 e3 a3 g3 b2 e3 g3 ~ b2 e3 g3", W: "a3 c3 f3 a3 ~ c3 f3 a3 g3 c3 e3 g3 ~ c3 e3 g3",
  X: "a3 d3 f3 a3 ~ d3 f3 a3 c4@2 c4@2 ~ b3@3", Y: "[b3,e4]@8 ~@2 [b3,e4]!6 ~@2 [d4,f4]!14",
  Z: "[c4,e4]@8 ~@2 [c4,e4]!6 ~@2 [a#3,d4]!14", AA: "[a3,e4]!12 ~@2 [g#3,d#4]!14 ~@2 [g3,d4]!2",
  AB: "[g3,d4]!12 ~@2 [f#3,c#4]@2 ~@6 [b3,e4]!10", AC: "[e4,g#4]!8 ~@4 [e4,g#4]!12 ~@4 [e4,g#4]!4",
  AD: "[e4,g#4]!8 ~@12 [b3,f4]@4 [c#4,f#4]@4 [c#4,g#4]@4", AE: "[a4,c#5]!32", AF: "[g#4,b4]!32", AG: "[f#4,a4]!32",
  AH: "[f4,g#4]@4 ~ [e4,g4] [e4,f4] [c4,d4]", AI: "[e4,g4]@2 [e4,g4]@2 ~ [e4,g4]@2 [a4,c5] ~ g3 b3 d4 f4 d4 b3 g3",
  AJ: "[c4,g4]@4 [c4,g4]@4 ~@2 [c4,g4]@4 [b3,f4]@2 [b3,f4]@4 [b3,f4]!8 [b3,f4]@4", // C5 Bdim
  AK: "[g3,e4]@4 [g3,e4]!8 [g3,e4]@4 [c4,a4]@4 [c4,a4]!8 [c4,a4]@4", AL: "[d4,g4]!16 ~@16",
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · cello
const cello = note(`<
  A B C D E F G H I J K@2 L M N O P Q R S T U V W X M N Y P Z@2 AA AB AC AD AE AF AG AH AI AF AG AH AI L M N O L M N O
  AJ AK N Y P Z AL AM AN AO AN AP AQ AR AS AT X AK N Y P Z@2 AU X AK N Y P Z AV AW AX
>`.pickRestart({
  A: "~@5 g3@5 ~ c4@5 e4@5 ~@6 d3@5", B: "g3@5 b3@5 ~@6 e3@5 a3@5 ~ c4@5", C: "~@5 b2@5 ~ e3@5 g3@5 ~@6 c3@5",
  D: "f3@5 a3@5 ~@11 c3@5 ~ g3@5", E: "~@5 c3@5 ~ f3@5 a3@5 ~@6 d3@5", F: "g3@5 b3@5 ~@6 g3@5 c4@5 ~ e4@5",
  G: "~@5 d3@5 ~ g3@5 b3@5 ~@6 e3@5", H: "a3@5 c4@5 ~@6 b2@5 e3@5 ~ g3@5", I: "~@5 c3@5 ~ f3@5 a3@5 ~@11",
  J: "c3@5 g3@5 ~@6 c3@5 f3@5 ~ a3@5", K: "[~@5 d3@5 ~ g3@5 c4@5 b3@21 ~@22]/2",
  L: "~@2 [g3,c4]@2 ~ [g3,c4]@2 [a3,c4] ~ [a3,d4]@3 ~ [g#3,b3]@3", // C5 Am D5 G#m
  M: "[g3,c4]@2 [g3,c4]@2 ~ [g3,c4]@2 [f3,a#3] ~ [f3,a#3]@3 ~ [e3,a#3]@3", // C5 A#5 Edim
  N: "[e3,a3]@2 [e3,a3]@2 ~ [e3,a3]@2 [d3,g3] ~ [d3,g3]@3 ~ [e3,g3]@3", // A5 G5 Em
  O: "[f3,a3]@2 [f3,a3]@2 ~ [f3,a3]@2 [f3,a3] ~ [f3,a3]@3 ~ [f3,a3]@3", // F
  P: "[a#3,d4]@2 [a#3,d4]@2 ~ [a#3,d4]@2 [a#3,d4] ~ [a#3,d4]@3 ~ [a#3,d4]@3", // A#
  Q: "[a3,c4]@2 [a3,c4]@2 ~ [a3,c4]@2 [b3,d#4] ~ [a3,d#4]@3 ~ a3@3", // Am B Adim
  R: "[b3,d4]@2 [b3,d4]@2 ~ [b3,d4]@2 [g3,c4] ~ [g3,c4]@3 ~ [g3,c4]@3", // Bm C5
  S: "[a3,c4]@2 [a3,c4]@2 ~ [a3,c4]@2 [f3,b3] ~ [f3,b3]@3 ~ [f3,b3]@2 a3", // Am Fdim
  T: "[a#3,d4]@2 [a3,a#3]@2 ~ [a3,a#3] ~ [g3,a#3] ~ [g3,a#3]@3 ~ [g3,a#3]@3", // A# A#maj7 Gm
  U: "[g3,a3]@2 [g3,a3]@2 ~ [g3,a3]@2 [g3,a3] ~ [g3,a3]@3 ~ [g3,a3]@3", // Gsus2
  V: "[g3,c4]@2 [g3,c4]@2 ~ [g#3,d#4]@2 [g#3,d4] ~ [g#3,d4]@3 ~ [g#3,d4]@3", // C5 G#5 G#dim
// … 136 more lines