Strudelify
KeyD majorTempo148 bpm
0:00/0:00
// Gavotte — François GOSSEC
// 148 bpm, 2/2, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/6122046; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(148/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 · acoustic guitar nylon · "Classical Guitar"
const acoustic_guitar_nylon = note(`<
  A@3 B C D E B C F G B C D E B C F G H I J K L M N O H I J K L M N O P Q R S T U D V P Q R S T U D V W X W X T Y Z O W
  X W X T Y Z O AA AB@7 AC@8 AD@2
>`.pickRestart({
  A: "[~@14 d3@4 d3@4 d3@4 ~ d3@4 d4@4 d4@4 d4@4 ~ d4@4]/3", B: "~ [a3,d4,f#4] ~ [a3,c#4,g4], d3 a2",
  C: "~@5 [d4,f#4]@3 ~@2 d4@2 f#4@2 d4@2, d3!2, ~ a3 ~@2", D: "~ [a3,c#4,g4] ~ [a3,d4,f#4], c#3 d3",
  E: "~@5 [c#4,a4]@3 ~@2 c#4@2 a4@2 c#4@2, a2!2, ~ a3 ~@2", F: "~ [b3,d4,f#4] ~ [b3,e4,g#4], d3 e2",
  G: "~@5 [c#4,a4]@3 ~@2 c#4@2 g4@2 c#4@2, a2!2, ~ a3 ~@2", H: "~ [a3,c#4,g4] ~ [a3,c#4,g4], c#3 e3",
  I: "~ a3 ~ c#4 ~@2 [a3,c#4,g4]@2, a2 c#3 e3@2", J: "~ [a3,d4,f#4] ~ [a3,d4,f#4], d3 f#3",
  K: "~ a3 ~ d4 ~@2 [a3,d4,f#4]@2, a2 c#3 f#3@2", L: "~ [g3,b3,e4] ~ [g3,b3,g4], g2 b2",
  M: "~ b3 e4 b3 g4 f#4 e4 b3, e3 ~", N: "~ [a3,d4,f#4] ~ [a3,c#4,g4], a2!2",
  O: "~@5 [d4,f#4]@3 d3@4 ~@4, d3 ~, ~ a3 ~@2", P: "[d3,f#3,d4,a4]!2 [e3,a3,c#4,g4]!2",
  Q: "~ d4 f#4 d4 f#4 d4 f#4 d4, f#3 ~", R: "[d3,a3,d4,f#4]!2 [a2,e3,a3,c#4]!2", S: "[d3,f#3,a3,d4]!2 [a2,a3,c#4,e4]@2",
  T: "~ d4 b3 d4 ~ d4 b3 d4, g2!2", U: "~ d4 a3 d4 ~ d4 a3 d4, f#2!2", V: "~ [a3,c#4,a4] a2 ~, a2 ~",
  W: "~ a3 c#4 a3 [c#4,g4] a3 [c#4,g4] a3, a2 ~", X: "[d4,f#4] a3 [d4,f#4] a3 [d4,f#4] a3 [d4,f#4] a3, a2 ~",
  Y: "~ d4 a3 d4 ~ d4 a3 d4, d3 f#3 d3 f#3", Z: "~ [g3,b3,e4] ~ [g3,c#4,e4], g2 a2", AA: "d3@4 d3@4 ~ d3@4 d3@3",
  AB: "[~ d4@4 d4@4 ~ d4@4 d4@4 ~@4 [a3,d4,f#4]@4 ~@4 [a3,c#4,g4]@4 ~@6 f#4@2 ~@2 d4@2 f#4@2 d4@2 ~@4 [a3,c#4,g4]@4 ~@4 [a3,d4,f#4]@4 ~@6 a4@2 ~@2 c#4@2 a4@2 c#4@2 ~@4 [a3,d4,f#4]@4 ~@4 [a3,c#4,g4]@4 ~@6 f#4@2 ~@2 d4@2 f#4@2, ~@9 d3@4 a2@4 d3@4 d3@4 c#3@4 d3@4 a2@4 a2@4 d3@4 a2@4 d3@4 d3@3, ~@19 a3@2 ~@14 a3@2 ~@14 a3@2 ~@3, ~@39 d4@3 ~@29 c#4@3 ~@29 d4@3 ~@6]/7", // D A7 D A7
  AC: "[d4 ~@2 [b3,d4,f#4]@2 ~@2 [b3,e4,g#4]@2 ~@3 a4 ~ c#4 g4 c#4 ~@2 [a3,c#4,g4]@2 ~@2 [a3,c#4,g4]@2 ~ a3 ~ c#4 ~@2 [a3,c#4,g4]@2 ~@2 [a3,d4,f#4]@2 ~@2 [a3,d4,f#4]@2 ~ a3 ~ d4 ~@2 [a3,d4,f#4]@2 ~@2 [g3,b3,e4]@2 ~@2 [g3,b3,g4]@2 ~ b3 e4 b3 g4 f#4 e4, ~ d3@4 e2@4 a2@4 a2@4 c#3@4 e3@4 a2@2 c#3@2 e3@4 d3@4 ~@4 a2@2 c#3@2 ~@4 g2@4 b2@4 ~@7, ~@11 a3@2 ~@24 f#3@4 ~@4 f#3@4 ~@8 e3@4 ~@3, ~@23 c#4@3 ~@102]/8", // Bm E A7 D Em G
  AD: "[b3 ~@2 [a3,d4,f#4]@2 ~@2 [a3,c#4,g4]@2 ~@3 f#4 d3@2 ~, ~ a2@4 a2@4 d3@4 ~@3, ~@11 a3@2 ~@3, ~@23 d4@3 ~@6]/2", // D A7
})).s("gm_acoustic_guitar_nylon").gain(0.3)

stack(acoustic_guitar_nylon)