Strudelify
KeyA majorTempo100 bpm
0:00/0:00
// Gavotte — Francesco Molino Op.61
// 100 bpm, 3/4, key A 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, 3/4 at bar 41) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/39883; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 153 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/3)

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

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  A@5 B@2 C@2 D E F G H I J K L M N O P Q@5 R@3 S T U V W X ~ Y Z@2 AA AB AC AD AE AB AF AG AH AI AJ AK AL AI AJ AM AN
  AO AN AP AQ AR AS AT AN AU AV AW AX@2 AY@2 AF AB AZ AK BA AB AF AG BB BC BD BE BF BG BH BI BJ BC BD BE BF BG BH BI BJ
  BK BL BM BN BC BO BP BQ BK BL BM BN BC BO BP BR BS BR BS BT AN BU BV BW@2 BX BY BZ CA AF AB AZ AK BA AB AF AG CB CC CB
  CD AC CE CF CG CH CE CF CI CJ CK CL CM CN CO CP
>`.pickRestart({
  A: "[~@23 a2@7 [c4,e4]@7 c3@7 [c4,e4]@7 e3@6 [c4,e4]@7 a3@7 [c4,e4]@7 g#3@7 [b3,e4]@7 e3@7 [b3,e4]@7 a3@7 [c4,e4]@7]/5", // C E5 C
  B: "[g3@6 [c#4,e4]@7 f3@7 [a3,d4]@7 e3@7 [a3,e4]@7 d3@7]/2", C: "[[a3,f4]@7 f3@7 [a3,d4]@7 e3@13 g#3@10 ~ b3@3]/2",
  D: "e4@7 ~@5", E: "~@4 a2@3 c4@3 ~ e4@3 c4@3 c3@3 ~ c4@3", F: "e4@3 ~ c4@3 e3@3 ~ c4@3 e4@3 ~ c4@3 a3@3",
  G: "~ c4@3 e4@3 c4@3 ~ g#3@3 b3@3 ~ e4@3 b3@3", H: "~ e3@3 b3@3 ~ e4@3 b3@3 a3@3 ~ c4@3 e4@3",
  I: "~ c4@3 f#3@3 ~ c4@3 e4@3 ~ c4@3 g3@3 c4@3", J: "~ e4@3 c4@3 ~ g2@3 c4@3 ~ e4@3 c4@3 ~ g3@2",
  K: "~ b3@3 ~ f4@3 b3@3 g2@3 ~ b3@3 f4@3 ~ b3@2", L: "~ c3@3 ~ b3@3 f4@3 ~ b3@3 g3@3 b3@3 ~ f4@2",
  M: "~ b3@3 ~ [c3,c4,e4]@14 ~@5", N: "~@8 e2@3 ~ g#3@3 b3@3 ~ e4@3 g#3@2",
  O: "~@2 b3@3 g#3@3 ~ b3@3 a3@3 c4@3 ~ a3@3 c4@2", P: "~@2 a3@3 c4@3 ~ a3@3 c4@3 ~ [g#3,b3]@3 e4@3 d#4@2",
  Q: "[~@2 e4@3 d#4@3 ~ e4@3 g4 f4@3 e4@3 e5@14 ~@14 e2@3 g#3@3 ~ b3@3 e4@3 ~ g#3@3 b3@3 g#3@3 ~ b3@3 a3@3 ~ c4@3 a3@3 ~ c4@3 a3@3 ~ c4@3 a3@3 c4@3 ~ [g#3,b3]@14 ~@4]/5", // G#m
  R: "[~@16 e3@7 f#3@7 g#3@7 a2@3 ~ c4@3 e4@3 c4@3 ~ c3@3 c4@3 ~ e4@3 c4@3 ~ e3@3 c4@3 ~]/3",
  S: "e4@3 c4@3 a3@3 ~ c4@3 e4@3 ~ c4@3 d3@3 ~", T: "d4@3 f4@3 ~ d4@3 f3@3 d4@3 ~ f4@3 d4@3 ~",
  U: "a#3@3 d4@3 ~ f4@3 d4@3 ~ d3@3 d4@3 ~ f4@3", V: "d4@3 e3@3 ~ a3@3 c4@3 ~ e4@3 e2@3 ~ a3@3",
  W: "c4@3 ~ e4@3 e3@3 a3@3 ~ b3@3 e4@3 ~ e2@3", X: "g#3@3 ~ b3@3 e4@3 ~ [a2,a3,c4]@13", Y: "~@6 e3 a3",
  Z: "[~ c4@3 e4@3 ~ e2@3 a3@3 c4@3 ~ e4@3 [e2,a3,b3,e4]@13 ~ [e2,g#3,b3,e4]@13]/2", // Esus4 E
  AA: "a2 ~ [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2", AB: "a2 [d4,e4]!5",
  AC: "a2 [c#4,e4]!3 a2 [c#4,e4]", AD: "g#2 [b3,e4] e2 [b3,e4] g#2 [b3,e4]", AE: "a2 [c#4,e4] a3 [c#4,e4]!3",
  AF: "a2 [c#4,e4]!5", AG: "e3 [c#4,e4] e3 [c#4,e4] e2 [d4,e4]", AH: "a2 [d4,e4]!3 [c#4,e4] ~",
  AI: "[d4,f#4]@2 d3@4 d4 e4 f#4 g#4 a4 f#4", AJ: "[a2,e4] c#4 e4 c#4 a3@4 ~@4",
  AK: "g#3 [b3,e4] e3 [b3,e4] g#3 [b3,e4]", AL: "a3 [c#4,e4] a2 [c#4,e4] a3 [c#4,e4]",
  AM: "b2 [g#3,e4] b2 [g#3,e4] b2 [f#3,d#4]", AN: "e3 g#3 b3 e4 e2@4 ~@4", AO: "b2 [g#3,e4]!3 b2 [f#3,d#4]",
  AP: "b2 [g#3,e4]!3 b2 [a3,d#4]", AQ: "[e3,g#3,b3,e4] e2 ~", AR: "a3 e4 c4 e4 g#3 e4", AS: "a3 e4 c4 e4 a3 g3",
  AT: "f3 a3 e3 a3 d3 f4", AU: "a3 e4 c4 e4 a3 e4 c4 e4 g#3 e4 b3 e4", AV: "a3 e4 c4 e4 a2 e4 c4 e4 a3 e4 g3 e4",
  AW: "f3 d#4 a4@2 d#3 ~", AX: "e3 g#3 b3 g#3 e3@4 ~@4", AY: "~ [e2,b3,g#4] ~", AZ: "a2 [c#4,e4]!3 a3 [c#4,e4]",
  BA: "a3 [c#4,e4] a2 [c#4,e4]!3", BB: "a2 [d4,e4] [c#4,e4]@2 ~@2",
  BC: "[d3,a3,f#4]@3 [g3,e4] [f#3,d4]@2 [f#3,d4]@2 [f#3,d4]@2 [f#3,d#4]@2", BD: "[a2,f#3,d#4]@3 [g3,e4] [g3,e4]@4 ~@4",
  BE: "[a2,e4,g4]@3 [d4,f#4] [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,f4]@2", BF: "[d3,c#4,f4]@3 [d4,f#4] [d4,f#4]@4 ~@4",
  BG: "[d3,f#4,a4]@3 [e4,g4] [d4,f#4]@4 ~@4", BH: "[a2,e4,g4]@3 [d4,f#4] [c#4,e4]@4 ~@4",
  BI: "[d3,d4]@2 a3 f#4 d4 a3 d4 f#4 [d3,g#4] a4 f#4 d4", BJ: "[a2,c#4] d4 e4 c#4 a3@2 a3@2 a3@2 ~@2",
  BK: "a#3 c#4 f#4 c#4 f#3 c#4 f#4 c#4 a#3 c#4 f#4 c#4", BL: "b3 d4 f#4 d4 b3 d4 f#4 d4 a3 d4 f4 d4",
  BM: "g#3 b3 e4 b3 e3 g#3 e4 b3 g#3 b3 e4 b3", BN: "a3 c#4 e4 c#4 a3@2 g3 e4 f#3 d4 e3 c#4",
  BO: "[g2,e4]@4 g3@2 b3@2 e4@2 b3@2 g4@2 b3@2 g4 b4@7", BP: "a2 [d4,f#4]!3 a2 [c#4,g4]", BQ: "d3 [d4,f#4] d3@2 ~@2",
  BR: "d3 [d4,f#4]!3 d3 [c4,f#4]", BS: "d3 [b3,g4]!3 d3 [c#4,g4]", BT: "d3 a3 d4 f#4 d3@4 ~@4",
  BU: "a3 c#4 e4 a4 a2@4 ~@4", BV: "f#3 d#4 a4 d#4 f#3@4 ~@4", BW: "e3 b3 g#4 b3 e3 b3 g#4 b3 f#3 b3 a4 b3",
  BX: "e3 b3 g#4 b3 e3 b3 g#4 b3 e3 b3 g#4 b3", BY: "d3 b3 g#4 b3 d3 b3 g#4 b3 d3 b3 g#4 b3",
  BZ: "c#3 e4 a4 e4 c#3 e4 a4 e4 c#3 e4 a4 e4", CA: "b2 [d4,g#4] ~", CB: "a2 [c#4,e4] a2 [c4,e4] a2 [c#4,e4]",
  CC: "a2 [d4,f#4] a2 [c4,e4] a2 [d4,f#4]", CD: "a2 [d4,f#4] a2 [c#4,f4] a2 [d4,f#4]", CE: "b2 [d4,e4]!3 b2 [d4,g#4]",
  CF: "c#3 [e4,a4]!3 d3 [d4,f#4]", CG: "e3 [a3,c#4] e3 [a3,c#4] e2 [g#3,b3]", CH: "a2 [a3,c#4]!3 a2 [c#4,e4]",
  CI: "e3 [c#4,e4] e3 [c#4,e4] e2 [b3,e4]", CJ: "a2@2 e3 a3 c#4@2 e4@2 c#4@2 a3@2",
  CK: "e2 [d4,g#4] e2 [d4,g#4] e2 [d4,g#4]", CL: "[a2,c#4,a4]@2 a4 e4 c#4@2 e4@2 c#4@2 a3@2",
  CM: "e3 [d4,e4] e2 [d4,e4] e3 [d4,e4]", CN: "a2 [c#4,e4] c#3 [c#4,e4] e3 [c#4,e4]",
  CO: "a3 [c#4,e4] e3 [c#4,e4] c#3 [c#4,e4]", CP: "[a2,c#4,e4] a2 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

stack(acoustic_guitar_nylon)