Strudelify

Canonic Sonata Number One

Georg Philipp Telemann

KeyG majorTempo126 bpm
0:00/0:00
// Canonic Sonata Number One — Georg Philipp Telemann
// 126 bpm, 2/4, key G 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 (6/4 at bar 1, 2/4 at bar 93) are rendered on a constant 2/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1156641; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 272 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/2)

// 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.

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@3 A@3 B@2 C D@4 E F G H@2 I@2 J K L@3 M@2 N O P Q R S@2 T@3 U@2 V W X Y@2 Z@2 AA@2 AB AC AD AE@4 AF AG@2 AH@2 AI AJ
  AK AL AM@3 AN AO AP AQ AR AS@4 AT AU@2 AV@2 AW AX AY AZ BA BB@3 ~@84 BC BD BE BF BG BH BI BJ BC BD BE BF BG BH BI BK@2
  BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BU BZ CA@2 CB CC BJ BC BD BE BF BG CD BI BJ BC CE BE BF BG CD BI BK@2 BL BM
  BN CF CG CH CG CI CJ CK CL CM CN CO CP CQ CR BF CS CT CB CU CV CW CX BC BD BE BF BG CD BI BJ BC BD CY BF BG CD BI BK@2
  BL CZ
>`.pickRestart({
  A: "[~@6 c5@7 f5@14 e5@3 ~ d5@3 c5@2 ~@2 a#4@2 ~ a4@3 ~ a#4@3]/3",
  B: "[a4@2 ~@2 g4@2 ~ a4@2 ~@2 f4@2 ~ g4@7 c4@7 ~@4]/2", C: "~@5 c5@3",
  D: "[~ f5@14 e5@3 ~ f5@3 g5@2 ~@2 a5@2 ~ a#5@7 a5@3 ~ g5@3 a5@3 ~ a#5@3 a5 a#5 a5 a#5 a5 [a5,a#5] a#5 a5 a#5 a5 a#5 f5@2 ~]/4", // A#maj7
  E: "e5@2 ~@2 f5@2 ~ g5@7 f5@2", F: "~@2 e5@3 f5@3 ~ g5@3 e5@2 ~@2", G: "~ d5@2 e5@2 ~@2 f5@2 ~ g5@2 ~@2 a5@2, c5 ~@7",
  H: "[~ a#5@7 a5@3 ~ g5@3 a5@3 ~ a#5@3 a5 a#5 a5 a#5 a5 [a5,a#5] a#5 a5 a#5 a5]/2", // A#maj7
  I: "[a#5 a5 [a5,a#5] a#5 ~@11 c5@2 ~ c5@2 ~@2 c5@2 ~ c5@2 ~@2 c5@2 ~]/2", J: "c5@2 ~@2 c4@2 ~ c5@2 ~@2 c4@2 ~ c5@2",
  K: "a#4@2 ~ g4@2 a4@2 a#4@2 ~ g4@2 a4@2 ~@2, ~@2 a4@2 ~@5 a4@2 ~@5",
  L: "[f4@2 ~ a#4@2 ~@2 g4@2 ~ a4@2 a#4@2 ~ g4@2 a4@2 ~@2 f4@2 ~ g4@2 ~@2 e4@2 ~ f4@10 ~ f5@2 ~ g5@2 ~, ~@7 a4 ~@16]/3",
  M: "[~ e5@2 ~ f5@10 ~ a4@2 ~ a#4@2 ~@2 g4@2 ~ a4@2 a#4@2 ~ g4@2, ~@29 a4@2 ~]/2",
  N: "a4@2 ~@2 d5@2 ~ e5@2 ~@2 c#5@2 ~ d5@2", O: "e5@2 ~ c#5@2 d5@2 ~@2 f5@2 ~ e5@2 ~@2, ~ d5 ~@6",
  P: "d5@2 ~ c#5@2 ~@2 e5@2 ~ a#4 c#5 a#4 c#5 a#4 [a#4,c#5]", Q: "c#5 ~@7 a4@2 ~@2 f5@2 ~ a#4",
  R: "c#5 a#4 c#5 a#4 [a#4,c#5] c#5 ~@7 a4@2 ~", // A#m
  S: "[~ g5@7 ~ g5@2 f5@2 ~@2 e5@2 ~ f5@2 ~@2 a5@7 ~ f5@2, ~@8 a5@2 ~@19 g5@2 ~]/2",
  T: "[e5@2 ~@2 d5@2 ~ e5@7 a4@7 d5 e5 d5 e5 d5 [d5,e5] e5 d5@7 d4@7 ~@6]/3", U: "[~@15 g5@14 f#5@3]/2",
  V: "~ g5@3 a5@7 d5@5", W: "~@2 a#5@3 ~ a5@3 a#5@2 ~@2 g5@2 ~", X: "a5@7 d5@3 ~@4 c5@2",
  Y: "[~@5 c5 d5 c5 d5 a4@3 g4@7 ~@13]/2", Z: "[~@8 f#5@7 g5@2 ~@2 d5@2 ~ b4@2 ~@2 g4@2 ~ d5@2 ~]/2",
  AA: "[~@2 b4@2 c5@2 ~@2 g4@2 ~ e4@2 ~@2 c4@2 ~ c5@2 ~@3 a4@2 b4@7, ~ c5@2 ~@19 b4@2 ~@8]/2", AB: "d5@7 f5@7 e5@2",
  AC: "~@2 d5@3 c5@7 ~@4", AD: "~@7 g4@2 ~ g4@2 ~@2 g4@2",
  AE: "[~ g4@2 a4@2 ~ g4@2 c5@2 ~@2 c4@2 ~ c5@2 ~@2 c5@2 ~ c5@2 d5@2 ~ c5@2 f5@7 ~@7 f5@14 e5@3 ~ d5@3, ~@5 b4@2 ~@19 e5@2 ~@36]/4",
  AF: "c5@2 ~@2 a#4@2 ~ a4@3 ~ a#4@3 a4@2", AG: "[~@2 g4@2 ~ a4@2 ~@2 f4@2 ~ g4@7 c4@7 ~@6]/2",
  AH: "[~@8 c5@7 f5@14 e5@3]/2", AI: "~ f5@3 g5@2 ~@2 a5@2 ~ a#5@5", AJ: "~@2 a5@3 ~ g5@3 a5@3 ~ a#5@3",
  AK: "a5 a#5 a5 a#5 a5 [a5,a#5] a#5 a5 a#5 a5 a#5 f5@2 ~ e5@2", AL: "~@2 f5@2 ~ g5@7 f5@3 ~",
  AM: "[e5@3 f5@3 ~ g5@3 e5@2 ~@3 d5@2 e5@2 ~@2 f5@2 ~ g5@2 ~@2 a5@2 ~ a#5@7 a5@3 ~ g5@3 a5@3, ~@7 c5 ~@16]/3",
  AN: "~ a#5@3 a5 a#5 a5 a#5 a5 [a5,a#5] a#5 a5 a#5 a5 a#5 a5", AO: "[a5,a#5] a#5 ~@11 c5@2 ~",
  AP: "c5@2 ~@2 c5@2 ~ c5@2 ~@2 c5@2 ~ c5@2", AQ: "~@2 c4@2 ~ c5@2 ~@2 c4@2 ~ c5@2 a#4@2",
  AR: "~ g4@2 a4@2 a#4@2 ~ g4@2 a4@2 ~@2 f4@2, a4@2 ~@5 a4@2 ~@7",
  AS: "[~ a#4@2 ~@2 g4@2 ~ a4@2 a#4@2 ~ g4@2 a4@2 ~@2 f4@2 ~ g4@2 ~@2 e4@2 ~ f4@10 ~ f5@2 ~ g5@2 ~@2 e5@2 ~ f5@10 ~ a4@2 ~, ~@6 a4 ~@25]/4",
  AT: "a#4@2 ~@2 g4@2 ~ g#4@2 ~ a#4@2 g4@2 g#4@2", AU: "[~@12 a4@2 ~ a#4@2 g4@2 a4@3 ~@10]/2",
  AV: "[~ f5@2 ~ g5@2 e5@2 f5@2 ~ g5@2 e5@2 f5@2 ~ g5@2 e5@2 f5@10]/2",
  AW: "~@2 d5@2 c5@2 ~@2 a#5@2 ~ a5@2 ~ a#5@2, ~ e5@2 ~@13", AX: "g5@2 a5@2 ~ a#5@2 g5@2 a5@2 ~ a#5@2 g5@2",
  AY: "a5 a#5 a5 a#5 ~ f5@2 g5@7 f5 g5, ~@2 g5 ~@5", AZ: "f5 g5 f5 [f5,g5] g5 f5@2 ~@2 c5@2 ~ f5@2 ~@2",
  BA: "c5@2 ~ f5@2 ~@2 c5@2 ~ f5@2 ~@2 a4@2", BB: "[~ a#4@7 a4 a#4 a4 a#4 a4 [a4,a#4] a#4 f4@28 ~@5]/3",
  BC: "c5 ~ f5@4 e5 ~", BD: "a4 ~ d5@4 c5 ~", BE: "f4 ~ a#4@4 a4 ~", BF: "d5 c5", BG: "a#4@2 a4 g4 a4 ~ f4 ~",
  BH: "e4 f4", BI: "g4 ~ c5 ~ a4 ~ f4 ~", BJ: "c4 ~", BK: "[c4@4 c5@6 a#4 a4 a#4@2 a4 g4]/2",
  BL: "a4@2 g4 f4 g4@2 f4 e4", BM: "f4 ~ a4 ~ a#4 ~ c5 ~", BN: "f4 ~", BO: "f4 g4 a4 ~ a4 g4 f4 ~",
  BP: "c5 ~ c5 ~ c5 ~ f5 ~", BQ: "e5 f5 g5 ~ a5 g5 f5 ~", BR: "g5 ~ c5 ~ c5 ~ d5 ~", BS: "e5 f5 e5 ~ e5 ~ f5 ~",
  BT: "g5 a5 g5 ~ g5 ~ a5 ~", BU: "[c5,d5] [b4,c5,d5] ~ c5 b4@4 c5@8", BV: "d5 ~ g4 ~ e5 ~ g4 ~", BW: "f5@4 g5@2 f5 e5",
  BX: "a5 ~ a4 ~ g5@4", BY: "f5@2 e5 d5 e5 ~ c5 ~", BZ: "d5 ~ g5 ~ e5 ~ c5 ~", CA: "[g4@4 g5@6 f5 e5 f5@2 e5 d5]/2",
  CB: "e5@2 d5 c5 d5@2 c5 b4", CC: "c5 ~ e4 ~ f4 ~ g4 ~", CD: "[f4,g4] [e4,f4,g4] ~ f4 e4@4 f4@8", CE: "c5 ~ d5@4 c5 ~",
  CF: "f5@2 f5 e5 f5 ~ g5 ~", CG: "a5 d5", CH: "c#5 ~ a4 ~ f5 ~ d5 ~", CI: "c#5 ~ a4 ~ f5@4",
  CJ: "[f5,g5] [e5,f5,g5] ~ f5 e5@4 a4@4 b4@2 a4@2", CK: "g#4 ~ e4 ~ c5@4",
  CL: "[c5,d5] [b4,c5,d5] ~ c5 b4@4 a4@4 b4@2 a4@2", CM: "g#4 e4 c5@2",
  CN: "[c5,d5] [b4,c5,d5] ~ c5 b4@4 a4@4 b4@2 c5@2", CO: "d5@2 c5 b4 c5@2 d5 e5", CP: "f5 e5", CQ: "d5 a5 g#5 g5",
  CR: "f#5 f5 e5 a4", CS: "b4@2 a4 g#4 a4 ~ e5 ~", CT: "e4 ~ e5 ~ e4 ~ e5 ~", CU: "c5@2 b4 a4 b4@2 a4 g#4",
  CV: "a4 ~ c4 ~ d4 ~ e4 ~", CW: "a4@2 ~ g4", CX: "f4@2 g4 a4 a#4 d5 c5 a#4", CY: "f4 ~ a#4@4 a4@2", CZ: "f4",
})).s("gm_clarinet").gain(0.4)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note(`<
  ~@96 A@8 B@3 C@2 D E F G@2 H I@5 J@4 K@6 L M N@3 O@2 P@3 Q@8 R@3 S T U@3 V@6 W@5 X@3 ~@102
>`.pickRestart({
  A: "[~@6 d4@17 a5@4 f5@13 c#4@17 g5@4 e5@13 f4@16 f5@4 ~ d5@12 e4@17 e5@4]/8", B: "[c#5@13 d4@17 a#4@17 ~]/3",
  C: "[~@15 a4@13 g4@4]/2", D: "f4@13 d4@3", E: "~ d5@12 e5@3", F: "~ d5 e5 d5 e5 d5 e5 d5",
  G: "[e5@2 d5@2 e5@2 ~ d5@2 e5@2 d5@2 e5@2 a4@2 a#4@2 d5@13]/2", H: "a4 f5@3",
  I: "[~ g5@4 f5@2 g5@2 f5@2 g5@2 f5@2 g5@2 f5@2 ~ g5@2 a5@12 e5@4 f5@13 e5@4 d5@17 ~@8]/5",
  J: "[~@9 c5@33 b4@13 a4@4 a4@2 b4@2 a4]/4", K: "[~@2 b4@2 a4@2 b4@2 a4@2 b4@2 a4@17 d4@17 d5@29 b4@4 c5@13 a4@4]/6",
  L: "f5@13 e5@3", M: "~ f5@12 d5@3", N: "[~@2 g#5@16 a5@17 ~@13]/3", O: "[~@4 d5@4 b4@13 ~@11]/2",
  P: "[~@6 c5@4 a4@12 b4@17 a4@2 b4@2 a4@2 ~ b4@2]/3",
  Q: "[a4@2 b4@2 a4@2 b4@2 a4@17 e5@33 d5@34 c#5@13 e4@4 f4@17 a5@2]/8", R: "[~@2 f5@12 e4@17 g5@4 e5@13]/3", S: "d4",
  T: "~ f5@4 d5@11", U: "[~@2 c#4@16 e5@4 ~ c#5@13 ~@12]/3",
  V: "[~@4 a#4@34 a4@12 g4@4 f4@13 d4@4 d5@13 e5@2 ~@2 d5@2 e5@2 d5@2 e5@2]/6",
  W: "[d5@2 e5@2 ~ d5@2 e5@2 d5@2 e5@2 d5@2 e5@2 d5@2 e5@2 d5@2 e5@2 ~ d5@12 a4@4 f5@13 g5@2 ~@2 f5@2 g5@2 f5@2 g5@2 ~ f5@2 g5@2 f5@2 g5@2 f5@2 g5@2]/5",
  X: "[f5@2 g5@2 f5@2 g5@2 ~ f5@2 g5@2 d5@34 ~]/3",
})).s("gm_clarinet").gain(0.2)

stack(clarinet, clarinet_soft)

More by Georg Philipp Telemann