Strudelify

Budweiser Polka

Last

KeyF majorTempo116 bpm
0:00/0:00
// Budweiser Polka — Last
// 116 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K L M N O P O Q R S T U V F W X I U Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AH AP AQ AR
  AS AT AU AV AW AX AY AZ BA BB AH AE BC AG AH BD BE BF BG AE BH BI BJ BK BL AR BM ~
>`.pickRestart({
  A: "c2 ~ d2 ~ e2 ~ f2 ~ gb2 ~ g2 ~ c2 ~@3", B: "c2@3 ~@9 c2@3 ~", C: "f2@3 ~ c2@3 ~ g2@2 ~@2 c2@2 ~@2",
  D: "f2@3 ~ e2@3 ~ d2@3 ~ c2@2 ~@2", E: "f2@3 ~ c2@2 ~@2 f2@2 ~@2 c2@2 ~@2", F: "g2@3 ~ c2@3 ~ e2@3 ~ c2@3 ~",
  G: "g2@3 ~ c2@2 ~@2 g2@2 ~@2 c2@2 ~@2", H: "e2@3 ~ c2@2 ~@2 g2@2 ~@2 c2@2 ~@2", I: "g2@3 ~ c2@3 ~ d2@3 ~ e2@3 ~",
  J: "f2@3 ~ e2@3 ~ d2@2 ~@2 c2@2 ~@2", K: "f2@3 ~ c2@2 ~@2 f2@3 ~ c2@2 ~@2", L: "bb1@2 ~@2 f1@2 ~@2 bb1@3 ~ f1@2 ~@2",
  M: "c2@3 ~ g1@2 ~@2 c2@2 ~@2 c2@2 ~@2", N: "f2@2 ~@2 c2@2 ~@2 f2@2 ~@2 f1@3 ~",
  O: "g1 ~ a1 ~ b1 ~ c2 ~ db2 ~ d2 ~ g1@2 ~@2", P: "g1@3 ~ g1@2 ~@2 c2@2 ~@2 c2@2 ~@2",
  Q: "g1@2 ~@2 g1@2 ~@4 c2 ~ c2 ~@3", R: "c2@5 ~@3 c2@5 ~@3", S: "c2@2 ~@2 c2@3 ~ c2@4 ~@4",
  T: "f2@3 ~ c2@3 ~ g2@3 ~ c2@3 ~", U: "f2@3 ~ e2@3 ~ d2@3 ~ c2@3 ~", V: "f2@3 ~ c2@3 ~ f2@3 ~ c2@3 ~",
  W: "g2@3 ~ c2@3 ~ g2@3 ~ c2@3 ~", X: "e2@3 ~ c2@3 ~ g2@3 ~ c2@3 ~", Y: "f2@3 ~ c2@3 ~ f2@3 ~ c2@2 ~@2",
  Z: "bb1@3 ~ f1@3 ~ bb1@3 ~ f1@3 ~", AA: "c2@3 ~ g1@3 ~ c2@3 ~ c2@2 ~@2", AB: "f2@4 d2 ~ c2 ~ f1 ~@3 f1@2 ~@2",
  AC: "g2 ~ f2 ~ bb2 ~ a2 ~ d3 ~ c3 ~ g3@2 ~@2", AD: "f2@5 ~@11", AE: "bb1@2 ~@2 bb1@3 ~ d2@3 ~ d2@3 ~",
  AF: "f2@3 ~ c2@2 ~@2 f1@3 ~ a1@3 ~", AG: "c2@3 ~ c2@3 ~ f1@3 ~ f1@3 ~", AH: "bb1@3 ~ a1@3 ~ g1@3 ~ f1@3 ~",
  AI: "bb1@3 ~ f1@4 bb1@3 ~ f1@3 ~", AJ: "f2@3 ~ c2@3 ~ f2@3 ~ c2@4", AK: "f2@3 ~ c2@3 ~ f1@4 a1@3 ~",
  AL: "bb1@4 a1@2 g1 ~ f1 ~@3 f1@3 ~", AM: "bb1@3 ~ bb1@4 d2@3 ~ d2@4", AN: "f2@3 ~ c2@3 ~ f1@4 a1@4",
  AO: "c2@3 ~ c2@4 f1@4 f2@3 ~", AP: "bb1@3 ~ f1@3 ~ bb1@2 ~@2 bb1@3 ~", AQ: "eb2@3 ~ bb1@3 ~ eb2@2 ~@2 eb2@3 ~",
  AR: "bb1@3 ~ bb1@2 ~@2 f1@3 ~ f1@2 ~@2", AS: "bb1 ~ bb2 ~ f2 ~ d2 ~ bb1 ~@3 bb1@2 ~@2",
  AT: "f1@2 ~@2 f1@3 ~ bb1@2 ~@2 bb1@3 ~", AU: "c2 ~ c2 ~ f1 ~ f1 ~", AV: "f2@2 ~@2 c2@3 ~ g2@2 ~@2 c2@3 ~",
  AW: "g2@3 ~ c2@2 ~@2 f2@3 ~ c2@3 ~", AX: "f2@3 ~ f1@3 ~ bb1@2 ~@2 bb1@3 ~", AY: "a1@3 ~ a1 ~ c2 ~ d2@3 ~ d2@3 ~",
  AZ: "bb1@3 ~ b1@4 c2@3 ~ c2@3 ~", BA: "g1@3 ~ c2@3 ~ f1@2 ~@2 f1@3 ~", BB: "~@12 f2@3 ~",
  BC: "f2@3 ~ c2@2 ~@2 f1@3 ~ a1@4", BD: "bb1@3 ~ f1@3 ~ bb1@4 f1@3 ~", BE: "c2@3 ~ f1@3 ~ c2@3 ~ f1@3 ~",
  BF: "c2@3 ~ f1@3 ~ c2@4 a1@4", BG: "bb1@3 ~ a1 ~ g1 ~ f1@2 ~@2 f1@3 ~", BH: "f2@3 ~ c2@3 ~ f1@3 ~ a1@3 ~",
  BI: "c2@3 ~ c2@3 ~ f1@3 ~ f1@2 ~@2", BJ: "bb1@4 a1 ~ g1 ~ f1@4 g1 ~ a1 ~", BK: "bb1@3 ~ f1@4 bb1@2 ~@2 bb1@3 ~",
  BL: "eb2@2 ~@2 bb1@4 eb2@2 ~@2 eb2@3 ~", BM: "bb1@2 ~@2 f1@4 bb1 ~@3 bb1@4",
})).s("gm_acoustic_bass").gain(0.5)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
  A B C D@2 E@4 F D G E H I ~ I ~ J K C D@2 E@4 D@2 G E L ~@2 M N O P Q R@2 S M R T U Q V W X Y Z AA AB Y AC AD AE ~@2
  AF R AG U Q AH R AI AF R AJ U Q AK W AL ~
>`.pickRestart({
  A: "[c3,c4] ~ [d3,d4] ~ [e3,e4] ~ [f3,f4] ~ [gb3,gb4] ~ [g3,g4] ~ [c3,c4] ~@3", // C D E F Gb G C
  B: "[bb3,bb4]@2 ~ [a3,a4] [g3,g4] ~ [gb3,gb4] ~ [g3,g4] ~@3 [c4,e4,g4,bb4,c5] ~@3", // Bb A G Gb G C7
  C: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~", // F C7
  D: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // F
  E: "~@2 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~", // C7
  F: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  G: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  H: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~@3 [a3,c4,f4] ~@3", // F
  I: "[g2,g3] ~ [a2,a3] ~ [b2,b3] ~ [c3,c4] ~ [db3,db4] ~ [d3,d4] ~ [g2,g3]@4", J: "[c3,c4]@5 ~@3 [c3,c4]@5 ~@3",
  K: "[c3,c4]@2 ~@2 [c3,c4]@2 ~@2 [c3,c4]@3 ~@5", L: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~@3 [f3,a3,c4,f4] ~@3",
  M: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 d4 ~@3 d4 ~", // Bb
  N: "~@2 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~", // F7
  O: "~@2 [g3,c4,eb4] ~@3 [g3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~", // Cm F7
  P: "~@2 [f3,bb3,d4] ~@3 [f3,a3,d4] ~@3 [f3,g3,d4] ~@3 [f3,bb3,d4] ~", // Bb Dm G7 Bb
  Q: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb
  R: "~@2 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // F7
  S: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~@3 [f3,a3,db4]@4", // Bb Faug
  T: "~@2 [g3,c4,eb4] ~@3 [g3,c4,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // Cm F7
  U: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // Bb
  V: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@5", // Eb
  W: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // Bb F7
  X: "[f3,bb3,d4] ~@3 f3 ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", // Bb
  Y: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // F Bb
  Z: "~@2 [e3,g3,bb3,c4] ~@3 [e3,g3,bb3,c4] ~@3 [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~", // C7 F
  AA: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~", // F C7
  AB: "~@2 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~@3 [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~", // C7 F
  AC: "~@2 [g3,a3,db4] ~@3 [g3,a3,db4] ~@3 [f3,a3,d4] ~@3 [f3,a3,d4] ~", // A7 Dm
  AD: "[f3,bb3,d4] ~ [f3,ab3,b3,d4] ~ [a3,c4,f4]@2 ~@2", // Bb Fdim F
  AE: "[g3,bb3,d4,f4]@2 ~@2 [g3,bb3,c4,e4]@2 ~@2 [a3,c4,f4]@3 ~@5", // Gm7 C7 F
  AF: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [bb3,d4] ~@3 [bb3,d4] ~", // Bb
  AG: "~@2 [g3,bb3,c4,eb4] ~@3 [g3,bb3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~", // Cm7 F7
  AH: "~@2 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~ [f3,a3,eb4] ~ [f3,a3,eb4] ~", // F7
  AI: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~@3 [f3,a3,db4]@3 ~", // Bb Faug
  AJ: "~@2 [g3,c4,eb4] ~@3 [g3,bb3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4] ~", // Cm Cm7 F7
  AK: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Eb
  AL: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4]@2 ~@2", // Bb
})).s("gm_acoustic_guitar_nylon").gain(0.45).pan(0.3)

// other · piccolo
const piccolo = note("<A B ~@15 C D E ~@12 F G H ~@15 I J ~@2 K J L M N O ~@17>".pickRestart({
  A: "c5 ~ d5 ~ e5 ~ f5 ~ gb5 ~ g5 ~ c5 ~@3", B: "bb5@2 ~ a5 g5 ~ gb5 ~ g5 ~@7", C: "~@14 c6!2",
  D: "c6@5 ~ c6!2 c6@5 ~ c6!2", E: "c6 ~ c6 ~ c6 ~@3", F: "g5 ~ f5 ~ bb5 ~ a5 ~ d6 ~ c6 ~ g6 ~@3",
  G: "f6@2 ~ e6 eb6 ~ d6 ~ c6 ~ bb5 ~ a5 ~ g5 ~", H: "f5 ~@15", I: "c6!3 ~ b5@2 c6@2 d6!3 ~ db6@2 d6 ~",
  J: "e6 ~@2 e6 d6 ~ e6 ~ f6@5 ~@3", K: "c6!3 ~ b5@2 c6 ~ d6!3 ~ db6 ~ d6 ~", L: "bb5@3 ~ b5@3 ~ c6@4 ~@2 a5 ~",
  M: "g5@3 ~ a5@4 f5 ~@3 f5 ~ g5 ~", N: "a5 ~ bb5 ~ c6@3 d6 eb6 ~ d6 ~ c6@3 ~", O: "bb5 ~@15",
})).s("gm_piccolo").gain(0.45).pan(0.7)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~@2 A B@2 C@4 D E F G H ~@6 I J@2 K@4 L E F G M ~@2 N@2 O P Q R@2 S T U V W@2 X Y Z AA@5 AB AC AD ~@2 AE AF AG AH@2
  AI@2 S Q U AJ AK Q AL AM AK ~
>`.pickRestart({
  A: "[a3,c4,f4]@7 ~ [bb3,c4,e4]@7 ~", B: "[[a3,c4,f4]@15 ~]/2", C: "[e4@7 ~@2 e4@10 ~@7 e4@36 ~@2, [bb3,c4]@31 ~]/4",
  D: "[a3,c4,f4]@15 ~", E: "[a3,c4,f4]@7 ~", F: "[bb3,d4,f4]@7 ~", G: "[bb3,c4,e4]@7 ~", H: "[a3,c4,f4]@11 ~@5",
  I: "[c4,f4,a4]@7 ~ [c4,e4,bb4]@7 ~", J: "[[c4,f4,a4]@31 ~]/2", K: "[[c4,e4,bb4]@31 ~]/4", L: "[c4,f4,a4]@13 ~@3",
  M: "[a3,c4,f4]@5 ~@3", N: "[d4@8 [a3,c4,eb4]@7 ~, f4@31 ~, bb3@3 ~@5]/2", O: "[g3,c4]@7 ~ [a3,c4,f4]@7 ~, eb4@15 ~",
  P: "[bb3,d4,f4]@13 ~@3", Q: "[d4,f4,bb4]@7 ~", R: "[[eb4,f4,a4]@15 ~]/2", S: "[d4,f4,bb4] ~", T: "[d4,f4,bb4]@13 ~@3",
  U: "[eb4,f4,a4]@7 ~", V: "[eb4,g4]@4 [eb4,f4,a4]@3 ~, c4@7 ~", W: "[[d4,f4]@29 ~@3, bb4@31 ~]/2",
  X: "[bb3,eb4,g4]@11 ~@5", Y: "[bb3,d4,f4]@5 ~@3 [a3,c4,eb4,f4]@5 ~@3", Z: "[bb3,d4,f4]@9 ~@7",
  AA: "[[a3,c4]@8 d4@8 [c4,e4]@7 ~ [a3,f4]@16 [bb3,e4]@15 ~ c4@16 [bb3,d4]@6 ~@2, f4@8 ~@20 f4@11 ~, ~@8 bb3@14 ~@2 c4@31 ~ a3@14 ~@10]/5", // Am C Dm Bbdim Bb
  AB: "[a3,db4,e4]@7 ~ [a3,d4,f4]@6 ~@2", AC: "[f3,bb3,d4]@3 ~ [f3,ab3,b3,d4]@3 ~ [f3,a3,c4]@4 ~@4",
  AD: "[g3,bb3,d4,f4]@2 ~@2 [g3,bb3,c4,e4]@2 ~@2 [a3,c4,f4]@5 ~@3", AE: "[d4,f4]@15 ~, bb4 ~", AF: "[eb4,f4,a4]@15 ~",
  AG: "g4@8 [f4,a4]@7 ~, [c4,eb4]@15 ~", AH: "[[d4,f4,bb4]@15 ~]/2", AI: "[~@16 c4@13 ~@3, [eb4,f4,a4]@29 ~@3]/2",
  AJ: "[eb4,g4]@3 ~ [f4,a4]@3 ~, c4@7 ~, ~@7 eb4@7 ~@2", AK: "[d4,f4,bb4]@3 ~", AL: "~@4 bb3@7 ~@5, [eb4,g4]@11 ~@5",
  AM: "[d4,f4,bb4]@5 ~@3 [c4,eb4,f4,a4]@5 ~@3", // Bb F7
})).s("gm_synth_strings_1").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ A B@16 C D B@12 ~ E B@24 F B@17 ~>".pickRestart({
  A: "x ~@2 x", B: "x!4", C: "x!2", D: "x!3 ~", E: "x", F: "~@3 x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B@7 C B@3 D B C B E F G B@7 H B@3 I ~@2 B@7 J B@3 C B@3 K B@5 C B A ~ B@4 J B@3 C B@3 C B@3 L ~
>`.pickRestart({
  A: "x ~@2 x!2 ~ x ~ x ~@3 x ~@3", B: "~ x ~ x", C: "~@4 x ~@5 x!3 ~ x ~", D: "~@2 x!3 ~ x ~ x ~@3 x ~@3",
  E: "~@2 x ~ x ~@5 x ~ x ~ x!2", F: "x ~@5 x!3 ~@5 x!2", G: "x!5 ~@3", H: "~@4 x ~@3 x ~ x!3 ~ x ~",
  I: "x ~ x!3 ~ x ~ x ~ x!3 ~@3", J: "~@4 x ~@5 x ~ x ~ x!2", K: "x ~ x!3 ~ x ~ x ~@3 x ~@3",
  L: "~@4 x ~@3 x ~ x!3 ~@3",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~ A B@11 C B@4 D E B@11 C ~ F B@7 C B@5 C B@9 C G B@8 C B@7 C ~>".pickRestart({
  A: "x ~@2 x", B: "x!8", C: "x!5 ~ x ~", D: "x!2", E: "x ~ x ~ x ~@2 x", F: "x ~@6 x", G: "~@3 x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  A B A ~@7 A ~@2 B ~@4 C D A ~@7 A ~@2 B A ~ A ~@7 A ~@6 B A ~@3 A ~ D@2 ~@2 A ~@3 A ~@3 A ~@3 A ~ C E ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "x!2", D: "x!3 ~", E: "x!4",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A B A@5 B A@3 C B@3 C ~@2 A@3 B A B A B A B A D ~@2 A@3 B A@3 B A@7 E F B A B A B G H ~@2 A B A B A B A I A B A J
  B A@2 H ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x!3", C: "~ x ~ x!2 ~ x ~", D: "~ x!4 ~ x ~", E: "~ x!3", F: "~@3 x ~ x!3",
  G: "x ~ x ~ x ~@2 x", H: "x ~ x ~ x!3 ~", I: "~ x ~ x ~@2 x!2", J: "~ x!3 ~ x!3",
})).gain(0.64)

// drums · cowbell
const cowbell = s("cb").struct("<~ A B@16 C D B@12 ~ E B@24 F B@17 ~>".pickRestart({
  A: "x ~@2 x", B: "x!4", C: "x!2", D: "x!3 ~", E: "x", F: "~@3 x",
})).gain(0.64)

stack(bass, acoustic_guitar_nylon, piccolo, synth_strings_1, kick, snare, hihat, crash, tambourine, cowbell)

More by Last