Strudelify

At Georgia camp meeting

Kerry Mills

KeyG majorTempo100 bpm
0:00/0:00
// At Georgia camp meeting — Kerry Mills
// 100 bpm, 2/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 2/4 at bar 2) are rendered on a constant 2/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/131463; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 153 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C D E F@2 G F@3 H I F@2 G F B C D E F@2 G F@3 H I F@2 G F B C D J K@2 L@2 K@2 M N K@2 L@2 O L P N K@2 L@2 K@2 M N
  K@2 L@2 O L P Q F@2 G F@3 H I F@2 G F B C D E R@2 S T U R V W R@2 X Y Z AA AB AC R@2 S T U R V W R@2 X Y Z AA AB AC AD
  AE AF AG U@2 R@2 U@2 AH AI U@2 R@2 AJ R AK AI U@2 R@2 U@2 AH AI U@2 R@2 AJ R AK AL
>`.pickRestart({
  A: "~@3 d4", B: "e4 g4@2 d3 e3 g3@2 d2", C: "[e2,e3] [f#2,f#3] [e2,e3] [d2,d3] [e2,e3] [g2,g3]@3",
  D: "[d3,g3,b3,d4] [d3,g3,b3,d4]@2 [d3,g3,b3,d4] [d3,f#3,a3,c4,d4]@2 [d3,f#3,a3,c4,d4]@2", // G D7
  E: "[g2,d3,g3] ~, [b3,d4,g4] ~@3", F: "g2 [b3,d4,g4] d2 [b3,d4,g4]", G: "c3 [c4,e4,g4] c3 [c4,e4,g4]",
  H: "a2 [a3,c#4,g4] c#3 [a3,c#4,g4]", I: "d3 [c4,d4,f#4] d2 [c4,d4,f#4]", J: "[g2,d3,g3,b3,d4,g4]@2 d4!2 d4@2 d4@2",
  K: "a2 [f#3,c4,d4] d2 [f#3,c4,d4]", L: "g2 [g3,b3,d4] d2 [g3,b3,d4]",
  M: "~@2 [g3,a#3,c4]!2 [g3,a#3,c4]@2 [g3,a#3,c4]@2, c#3", N: "[d3,g3,b3] ~", O: "c2 [e3,g3,c4] c3 [e3,g3,c4]",
  P: "e2 [g3,a3,c#4] d2 [f#3,c4,d4]", Q: "[d3,g3,b3]@2 [g1,g2] ~", R: "c3 [g3,c4,e4] g2 [g3,c4,e4]",
  S: "f2 [a3,c4,f4] f2 [a3,c4,f4]", T: "c3@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2", U: "d3 [g3,b3,f4] g2 [g3,b3,f4]",
  V: "f#2 [f#3,c4,d4] a2 [f#3,c4,d4]", W: "g2@2 [g3,b3,f4]!2 [g3,b3,f4]@2 [g3,b3,f4]@2", X: "[f3,a3,c4,f4]",
  Y: "[e3,e4] [b2,b3] [g#2,g#3] [e2,e3]", Z: "[d3,d4] [e3,e4] [f3,f4] [g3,g4]", AA: "a3 b3 d4 a3",
  AB: "[f2,f3] [a3,c4,f4] [g2,g3] [b3,d4,f4]", AC: "[c4,e4,g4] ~@3", AD: "[g4,a#4,c5,e5]!2 [g4,c5,e5]@2",
  AE: "[g4,b4,d5,f5]!2 [g4,b4,d5,f5]@2", AF: "[g4,b4,d5,f5] [g4,a#4,c5,e5]", AG: "[g4,b4,d5,f5] ~",
  AH: "~@2 [a3,c4,d#4]!2 [a3,c4,d#4]@2 [a3,c4,d#4]@2, f#3", AI: "[g3,c4,e4] ~", AJ: "f2 [f3,a3,e4] f3 [a3,c4,f4]",
  AK: "a2 [f#3,c4,d4] g2 [g3,b3,f4]", AL: "[g3,c4,e4]@2 [c2,g2,c3] ~",
})).s("gm_piano").gain(0.4)

stack(piano)