Strudelify
KeyC majorTempo240 bpm
0:00/0:00
// Beer Barrel Polka — Jaromír Vejvoda as played by the Six Fat Dutchmen
// 240 bpm, 2/2, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5595416; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(240/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.

// other · accordion
const accordion = note(`<
  A B C@2 D E F E G H C@2 D I J K L M N@2 O@2 P@2 Q@2 R S T@2 R U V@2 N@2 O@2 P@2 Q@2 R S T@2 R W X Y Z AA AB@2 AC@2
  AD@2 AE AF AG@2 AH@2 AI@2 AJ AK AL@2 AC@2 AD@2 AE AM AN@2 AO AP AQ@2 AH AR AS@2 ~@12 AC@2 AD@2 AE AF AG@2 AH@2 AI@2 AJ
  AK AL@2 AC@2 AD@2 AE AM AN@2 AO AP AQ@2 AT AU AV@2
>`.pickRestart({
  A: "g4@2 g4 a4 b4 c5 d5 e5", B: "f5@2 ~@4 g5 f#5", C: "g5@2 e5@2 ~@2 g5 f#5", D: "g5@2 c6@2 d6@3 c6",
  E: "c6@2 b5@2 ~@2 b5 a#5", F: "b5@2 c6@2 d6@3 c6", G: "b5@2 a5@2 ~@2 a5 g#5", H: "a5@2 g5@2 ~@2 g5 f#5",
  I: "c6@2 b5@2 ~@2 b5 c6", J: "d6@3 c#6 d6@3 c6", K: "c6 b5 ~ a5", L: "g5 g#5 a5 b5", M: "c6@2 g5 g#5",
  N: "[a5@2 g#5 a5@2 f5 e5 d5]/2", O: "[a5@6 f5 f#5]/2", P: "[g5@2 f#5 g5@2 e5 d5 c5]/2", Q: "[g5@5 c6 d6 c6]/2",
  R: "b5@3 d6", S: "a5@3 g5", T: "[b5@5 c6 d6 c6]/2", U: "a5@3 g#5", V: "[g5@5 ~ g5 g#5]/2", W: "a5@3 b5",
  X: "c6@2 ~@2 g5@2 a5 b5", Y: "c6@4 c6@2 c6@2 c6@4 ~@3 [c6,d6]", Z: "f6 ~ d6@2, e6 ~@15", AA: "c6 a5",
  AB: "~ [a4,c5,f5] ~ [a4,c5,f5]", AC: "c5", AD: "[c5 d5@7]/2", AE: "c5 d5@2 c5", AF: "d5 c5@2 b4", AG: "a#4/2",
  AH: "d5", AI: "[d5 e5@7]/2", AJ: "d5 e5@2 d5", AK: "e5 d5@2 c#5", AL: "c5/2", AM: "d5 c5@2 f4", AN: "d5/2",
  AO: "g4 a4 a#4 c5", AP: "e5@3 d5", AQ: "[d5 c5@4 ~ b4 c5]/2", AR: "e5", AS: "[f5@5 ~@3]/2", AT: "d5@3 c#5 d5@2 d#5@2",
  AU: "e5@3 d#5 e5@2 c5@2", AV: "[f5@5 ~ f5 ~]/2",
})).s("gm_accordion").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C@2 D E F E G H C@2 D I J K L M N ~ O P ~@2 Q R S@2 T R S T U@2 N ~ O P ~@2 Q R S@2 T R S T V W X Y Z@2 ~@2 AA AB
  ~@2 AC AD ~@3 AE ~@2 AA AF AG@2 AH@2 AI AJ AK@2 AL ~@6 AM AN ~@7 AO@2 AP AQ AG@2 AH@2 AI AR AS@2 AT@2 AU@2 AV AW AX@2
  AG@2 AH@2 AI AJ AY@2 AZ BA BB@2 BC BD BE@2
>`.pickRestart({
  A: "g4@2 g4 a4 b4 c5 d5 e5", B: "f5@2 ~@4 g4 f#4", C: "g4@2 e4@2 ~@2 g4 f#4", D: "g4@2 c5@2 d5@3 c5",
  E: "c5@2 b4@2 ~@2 b4 a#4", F: "b4@2 c5@2 d5@3 c5", G: "b4@2 a4@2 ~@2 a4 g#4", H: "a4@2 g4@2 ~@2 g4 f#4",
  I: "c5@2 b4@2 ~@2 b4 c5", J: "d5@3 c#5 d5@3 c5", K: "c5 b4 ~ a4", L: "g4@2 f#4 g4 a4 g4 a4 b4", M: "c5@2 g4 g#4",
  N: "a4 ~@7", O: "~@2 f4 e4 f4 f#4 g4 g#4", P: "a4 ~@3", Q: "~@2 c4@2 c4 d4 e4 f4", R: "g4 ~@3",
  S: "~@2 g4!2 g4@2 ~@2", T: "~@2 g4!2 g4@2 g4@2", U: "[c5@5 ~ g5 g#5]/2", V: "c5@2 ~@2 g4@2 a4 b4",
  W: "c5@4 c5@2 c5@2 c5@4 ~@3 [c5,d5]", X: "f5 ~ d5@2, e5 ~@15", Y: "c5 a4", Z: "~ f4 ~ f4", AA: "~@4 f4 g4 a4 a#4",
  AB: "d5 ~ c5@2 a#4@2 a4@2", AC: "~@2 c5!2 c5@2 b4@2", AD: "a#4@2 e4@2 e4 f4 g4 a4", AE: "c5!2 c5@2 a#4@2 e4@2",
  AF: "c5 a4 a#4 b4", AG: "c5", AH: "[c5 d5@7]/2", AI: "c5 d5@2 c5", AJ: "d5 c5@2 f4",
  AK: "[d5@10 d5 c5 a#4 a4 g4 f4]/2", AL: "g4 ~@7", AM: "~@2 f5 e5", AN: "d5 ~@7", AO: "~ c5!2 ~",
  AP: "~@2 c5!2 c5@2 c5!2", AQ: "c5!4", AR: "d5 c5@2 b4", AS: "a#4/2", AT: "d5", AU: "[d5 e5@7]/2", AV: "d5 e5@2 d5",
  AW: "e5 d5@2 c#5", AX: "[c5@10 c5!2 c5@2 c5@2]/2", AY: "[d5@10 d5 c5 a#4@2 a4@2]/2", AZ: "g4 a4 a#4 c5",
  BA: "e5@3 d5", BB: "[d5 c5@4 ~ b4 c5]/2", BC: "d5@3 c#5 d5@2 d#5@2", BD: "e5@3 d#5 e5@2 c5@2", BE: "[f5@5 ~ f5 ~]/2",
})).s("gm_trumpet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B C@2 D E F E G H C@2 D I J K L M N ~ O P ~@2 Q R S T U@2 S V W@2 N ~ O P ~@2 Q R S T U@2 S X Y Z AA AB AC@2 ~@2 AD
  AE ~@2 AF AG ~@3 AH ~@2 AD AI AJ@2 AK@2 AL AM AN@2 AO ~@6 AP AQ ~@7 AR@2 AS AT AJ@2 AK@2 AL AU AV@2 AW@2 AX@2 AY AZ
  BA@2 AJ@2 AK@2 AL AM BB@2 BC BD BE@2 BF BG BH@2
>`.pickRestart({
  A: "g4@2 g4 a4 b4 c5 d5 e5", B: "f5@2 ~@4 g4 f#4", C: "g4@2 e4@2 ~@2 g4 f#4", D: "g4@2 c5@2 d5@3 c5",
  E: "c5@2 b4@2 ~@2 b4 a#4", F: "b4@2 c5@2 d5@3 c5", G: "b4@2 a4@2 ~@2 a4 g#4", H: "a4@2 g4@2 ~@2 g4 f#4",
  I: "c5@2 b4@2 ~@2 b4 c5", J: "d5@3 c#5 d5@3 c5", K: "c5 b4 ~ a4", L: "g4@2 f#4 g4 a4 g4 a4 b4", M: "c5@2 g4 g#4",
  N: "a4 ~@7", O: "~@2 f4 e4 f4 f#4 g4 g#4", P: "a4 ~@3", Q: "~@2 c4@2 c4 d4 e4 f4", R: "g4 c5 d5 c5", S: "b4@3 d5",
  T: "a4@3 g4", U: "[b4@5 c5 d5 c5]/2", V: "a4@3 g#4", W: "[g4@5 ~ g4 g#4]/2", X: "a4@3 b4", Y: "c5@2 ~@2 g4@2 a4 b4",
  Z: "c5@4 c5@2 c5@2 c5@4 ~@3 [c5,d5]", AA: "f5 ~ d5@2, e5 ~@15", AB: "c5 a4", AC: "~ f4 ~ f4", AD: "~@4 f4 g4 a4 a#4",
  AE: "d5 ~ c5@2 a#4@2 a4@2", AF: "~@2 c5!2 c5@2 b4@2", AG: "a#4@2 e4@2 e4 f4 g4 a4", AH: "c5!2 c5@2 a#4@2 e4@2",
  AI: "c5 a4 a#4 b4", AJ: "c5", AK: "[c5 d5@7]/2", AL: "c5 d5@2 c5", AM: "d5 c5@2 f4",
  AN: "[d5@10 d5 c5 a#4 a4 g4 f4]/2", AO: "g4 ~@7", AP: "~@2 a4!2", AQ: "f4 ~@7", AR: "~ g4!2 ~",
  AS: "~@2 g4!2 g4@2 g4!2", AT: "g4!2 a#4!2", AU: "d5 c5@2 b4", AV: "a#4/2", AW: "d5", AX: "[d5 e5@7]/2",
  AY: "d5 e5@2 d5", AZ: "e5 d5@2 c#5", BA: "[c5@10 c5!2 c5@2 c5@2]/2", BB: "[d5@10 d5 c5 a#4@2 a4@2]/2",
  BC: "g4 a4 a#4 c5", BD: "e5@3 d5", BE: "[d5 c5@4 ~ b4 c5]/2", BF: "d5@3 c#5 d5@2 d#5@2", BG: "e5@3 d#5 e5@2 c5@2",
  BH: "[f5@5 ~ f5 ~]/2",
})).s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B C@2 D E F G H I C@2 D J K L M N O ~ P Q ~@2 R S T@2 U@2 T V W@2 O ~ P Q ~@2 R S T@2 U@2 T X Y Z AA AB AC AD ~@3 AE
  ~@3 AF ~@3 AG ~@3 AE AH@2 AI@2 AJ@2 AK@2 AL ~@6 AM AN ~@7 AO@2 AP AQ AR@2 AS@2 AT AU AV@2 AW@2 AX@2 AY@2 AZ@2 AR@2
  AS@2 AT@2 BA@2 BB BC BD@2 BE BF BG@2
>`.pickRestart({
  A: "g4@2 g4 a4 b4 c5 d5 e5", B: "f5@2 ~@4 g4 f#4", C: "g4@2 e4@2 ~@2 g4 f#4", D: "e4@2 g4@2 g4@3 g4",
  E: "g4@2 f4@2 ~@2 g4 f#4", F: "g4@2 a4@2 b4@3 a4", G: "a4@2 g4@2 ~@2 g4 f#4", H: "g4@2 f4@2 ~@2 f4 e4",
  I: "f4@2 e4@2 ~@2 g4 f#4", J: "g4@2 g4@2 ~@2 g4 a4", K: "b4@3 a#4 b4@3 a4", L: "a4 g4 ~ g4",
  M: "g4@2 f#4 g4 a4 g4 f4 d4", N: "c4@2 e4 f4", O: "f4 ~@7", P: "~ c4!2 f4", Q: "a4 ~@3", R: "~@2 c4@2 c4 b3 c4 d4",
  S: "e4 g3!3", T: "g3@3 g3", U: "[g3@5 g3!3]/2", V: "f3@3 f3", W: "[e3@5 ~ g4 g#4]/2", X: "f3@3 b3",
  Y: "c4@2 ~@2 g3@2 f#3 f3", Z: "e3@4 e3@2 e3@2 e3@4 ~@3 [c5,d5]", AA: "f5 ~ d5@2, e5 ~@15", AB: "c5 a4",
  AC: "~ f4 ~ f4", AD: "~ f4 ~@2", AE: "~ a3!3", AF: "~@2 c4@2 c4 d4 e4 f4", AG: "e4!2 e4@2 e4@2 c4@2", AH: "a3",
  AI: "[a3 a3@7]/2", AJ: "a3 a3@2 a3", AK: "[a#3@10 g4 f4 e4 d4 c4 a#3]/2", AL: "a3 ~@7", AM: "~@2 [a3,f4] [a3,e4]",
  AN: "[f3,d4] ~@7", AO: "~ [c4,e4]!2 ~", AP: "~@2 [c4,e4]!2 [c4,e4]@2 [c4,e4]!2", AQ: "[c4,e4]!4", AR: "[f3,a3]",
  AS: "[[f3,a3] [f3,a3]@7]/2", AT: "[f3,a3] [f3,a3]@2 [f3,a3]", AU: "[f3,a3] [f3,a3]@2 [f3,g#3]", AV: "[e3,g3]/2",
  AW: "[g3,a#3]", AX: "[[g3,a#3] [g3,a#3]@7]/2", AY: "[g3,a#3] [g3,a#3]@2 [g3,a#3]",
  AZ: "[[f3,a3]@10 [f3,a3]!2 [f3,a3]@2 [f3,a3]@2]/2", BA: "[[a#3,d4]@10 [a#3,d4] [a3,c4] [g3,a#3]@2 [f4,a4]@2]/2",
  BB: "[d4,g4] [g4,a#4]!3", BC: "[g#4,b4]@3 [g#4,b4]", BD: "[[f4,a4] [f4,a4]@4 ~ [f4,g#4] [f4,a4]]/2",
  BE: "g4 f4 e4 d4, b4", BF: "c4 a#3 a3 g3, a#4", BG: "[[f3,a4]@5 ~ [f3,a4] ~]/2",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B C@2 D E F G H I C@2 D J K L M N O ~ P Q ~@2 R S T@2 U@2 T V W@2 O ~ P Q ~@2 R S T@2 U@2 T V X Y ~@2 Z AA ~@3 AB
  ~@3 AC ~@3 AD ~@3 AB AE@2 AF@2 AG AH AI@2 AJ ~@7 AK AL AM AN AO AP AQ AR AS@2 AT AU AE@2 AF@2 AG@2 AV@2 AW@2 AX@2 AY@2
  AZ@2 AE@2 AF@2 AG@2 BA@2 BB BC BD@2 BE BF BG@2
>`.pickRestart({
  A: "g3@2 g3 a3 b3 c4 d4 e4", B: "f4@2 ~@4 e4 d#4", C: "e4@2 c4@2 ~@2 e4 d#4", D: "e4@2 g4@2 g4@3 g4",
  E: "g4@2 f4@2 ~@2 g4 f#4", F: "g4@2 a4@2 b4@3 a4", G: "a4@2 g4@2 ~@2 g4 f#4", H: "g4@2 f4@2 ~@2 f4 e4",
  I: "f4@2 e4@2 ~@2 e4 d#4", J: "g4@2 g4@2 ~@2 g4 a4", K: "b4@3 a#4 b4@3 a4", L: "a4 g4 ~ g4",
  M: "g4@2 f#4 g4 a4 g4 f4 d4", N: "c4@2 e4 f4", O: "f4 ~@7", P: "~ c4!2 f4", Q: "a4 ~@3", R: "~@2 c4@2 c4 b3 c4 d4",
  S: "e4 f3!3", T: "f3@3 f3", U: "[f3@5 f3!3]/2", V: "b3@3 b3", W: "[c4@5 ~ e4 f4]/2", X: "c4@2 ~@2 g3@2 f#3 f3",
  Y: "e3@2 e3!2 e3@2 ~@2", Z: "f3 d3", AA: "c3 a2", AB: "~ f3!3", AC: "~@2 c4@2 c4 d4 e4 f4", AD: "e4!2 e4@2 e4@2 c4@2",
  AE: "f3", AF: "[f3 f3@7]/2", AG: "f3 f3@2 f3", AH: "f3 f3@2 c3", AI: "[f3@10 g4 f4 e4 d4 c4 a#3]/2", AJ: "a3 ~@7",
  AK: "d3@3 e3 f3@2 d3@2", AL: "d3 f3 a3 ~", AM: "g3!2 f3 e3", AN: "f3 e3 d3 ~", AO: "c3@3 d3 e3@2 d3@2",
  AP: "c3 e3 g3 ~", AQ: "g3 f3 e3 d3", AR: "c3!3 c4", AS: "c4 ~@2 c4", AT: "c4 ~@3", AU: "f3 c3 d3 e3", AV: "e3/2",
  AW: "g3", AX: "[g3 g3@7]/2", AY: "g3 g3@2 g3", AZ: "[f3@10 f3!2 f3@2 f3@2]/2", BA: "[a#3@10 a#3 a3 g3@2 f4@2]/2",
  BB: "d4 g4!3", BC: "g#4@3 g#4", BD: "[f4 f4@4 ~ f4!2]/2", BE: "g4 f4 e4 d4", BF: "c4 a#3 a3 g3",
  BG: "[f3@5 ~ f3 ~]/2",
})).s("gm_tenor_sax").gain(0.3)

// bass · tuba
const bass = note(`<
  A B C@3 D E F G H I@2 J E D@2 G K L M L M N O N O P@5 G H Q L M L M N O N O P@5 R S T U V W X L M L M L Y N O N@6 Z AA
  L M L AB L AC AD AE AF AG M L N O L AH AI AJ AK AL AM AN AO AP AQ@2 AR AS L M L M L Y N O N@6 Z AA L M L AB L AC AD AE
  AF AG M L N O AT AU
>`.pickRestart({
  A: "g2 ~ b2 d3", B: "g2@2 ~@2 g2 f2 e2 d2", C: "c2 ~ g2 ~", D: "g2 ~ g1 ~", E: "g2 b2 d3 ~", F: "d3 ~ g2 ~",
  G: "g2!2 a2 b2", H: "c3 ~ g2 e2", I: "c2 ~ g2 e2", J: "c2 ~ g1 ~", K: "c3 ~ c2 e2", L: "f2 ~ c2 ~", M: "f2 ~ c2 e2",
  N: "g2 ~ c2 ~", O: "g2 ~ c2 e2", P: "g2 ~ d2 ~", Q: "c2 ~ c3 e3", R: "g2 ~ a2 b2", S: "c3 ~ g2 ~",
  T: "c2@2 ~ c2 c2@2 ~@2", U: "f2 ~ a2 ~", V: "c3 ~ a2 ~", W: "f2 ~ d2 ~", X: "c2 ~ a1 ~", Y: "f2 ~ f2 f#2",
  Z: "f2@2 f2!2 e2@2 d2@2", AA: "c2!2 d2 e2", AB: "f2 a2 c3 ~", AC: "f2 ~ g2 a2", AD: "a#2 ~ f2 d2", AE: "a#1 ~ a#1 ~",
  AF: "c2 ~ e2 g2", AG: "c3 ~ c2 ~", AH: "f2 ~ f2 e2", AI: "d2@3 e2 f2@2 d2@2", AJ: "d2 f2 a2 ~", AK: "g2!2 f2 e2",
  AL: "f2 e2 d2 ~", AM: "c2@3 d2 e2@2 d2@2", AN: "c2 e2 g2 ~", AO: "g2 f2 e2 d2", AP: "c2!3 c3", AQ: "c3 ~@2 c3",
  AR: "c3 ~@3", AS: "f2 c2 d2 e2", AT: "f2@2 ~@2 c2@2 d2 e2", AU: "f2 ~ f2 ~",
})).s("gm_tuba").gain(0.3)

stack(accordion, trumpet, clarinet, alto_sax, tenor_sax, bass)