Strudelify
Amish Paradise cover art

1996 · Bad Hair Day

Amish Paradise

"Weird Al" Yankovic

KeyC minorTempo81 bpm
0:00/0:00
// Amish Paradise — "Weird Al" Yankovic
// 80.8 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 81 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80.8/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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, A@4 for four bars: edit a riff to change every repeat.

// other · string ensemble 1 · "string 1"
const string_ensemble_1 = note(`<
  A B C D A B C D A B C D A B C D E F G@2 H@2 G@2 ~@4 I J K L I J K L I J K L M N G@2 H@2 G@2 I J K L I J K L M N G@2
  H@2 G@2 M N G@2 H@2 G@2 H@2 G@2 ~@5
>`.pickRestart({
  A: "c6 ~@2 c5 c6 ~@3 c6 ~@2 c5 c6 ~@3", B: "b5 ~@2 b4 b5 ~@2 c5 c6 ~@3 g5 ~@3",
  C: "c6@3 ~@9 c6@4 ~@8 c6@4 ~@5 c5@3 c6@3 ~@9", D: "b5@3 ~@9 b5@3 ~@9 c6@3 ~@9 g5@2 ~@10",
  E: "c6@3 c5 c6@3 c5 c6@3 c5 c6@4", F: "b5@9 b4@3 b5@9 ~@3 c6@9 ~@3 g5@11 ~, ~@21 c5@5 ~@7 g4@5 ~@10",
  G: "[~ c6@9 c5@3 c6@9 c5@3 c6@9 c5@3 c6@9 b4@3 b5@9 b4@3 b5@9 c5@3 c6@9 g4@3 g5@8 ~@3]/2",
  H: "[~ c6@9 c5@3 c6@9 c5@3 c6@9 c5@3 c6@9 b4@3 b5@9 b4@3 b5@9 c5@3 c6@9 g4@3 g5@11]/2",
  I: "~ c6@3 ~@6 c5@3 c6@3 ~@9 c6@3 ~@6 c5@3 c6@3 ~@8", J: "~ b5@3 ~@6 b4@3 b5@3 ~@6 c5@3 c6@3 ~@9 g5@3 ~@8",
  K: "~ c6@3 ~@9 c6@4 ~@8 c6@4 ~@5 c5@3 c6@3 ~@8", L: "~ b5@3 ~@9 b5@3 ~@9 c6@3 ~@9 g5@2 ~@9",
  M: "~ c6@9 c5@3 c6@9 c5@3 c6@9 c5@3 c6@11", N: "~ b5@9 b4@3 b5@9 ~@3 c6@9 ~@3 g5@11, ~@22 c5@5 ~@7 g4@5 ~@9",
})).s("gm_string_ensemble_1").gain(0.32)

// other · string ensemble 1 · "string 1" · soft notes
const string_ensemble_1_soft = note(`<
  A B C D A B C D A B C D A B C D ~@12 E F@3 E F@3 E F@3 ~@8 E F@3 E F@3 ~@25
>`.pickRestart({
  A: "~@7 c5 ~@7 b4", B: "~@33 g4@4 ~@8 c5@3", C: "~@9 c5@4 ~@8 c5@4 ~@20 b4@3", D: "~@9 b4@4 ~@8 c5@4 ~@8 g4@4 ~@11",
  E: "~@22 c5@3 ~@21 b4@2", F: "[~@17 g4@2 ~@4 c5@2 ~@4 c5@2 ~@4 c5@2 ~@10 b4@2 ~@4 b4@2 ~@4 c5@2 ~@4 g4@2 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.24)

// bass · fretless bass · "fretless"
const bass = note(`<
  A B A C D E D F G B G C G H I C D E J K J K J K G H G ~ G H L M G H L M G H L M J K J K J K J K L H L N L O L N J K J
  K J K J K J K J K J K J K J K J K ~@5
>`.pickRestart({
  A: "ab2@11 g2 f2@12", B: "g2@11 f2 c2@12", C: "g2@22 f2@2 c2@23 ~", D: "ab2@5 eb2 ab2 c3 bb2@4 ab2@4",
  E: "g2@5 c2 g2 c3 eb3@4 d3@2 c3@2", F: "g2@15 c2@3 g2@3 c3@3 eb3@12 d3@6 c3@5 ~", G: "~ ab2@21 g2@2 f2@24",
  H: "g2@22 f2@3 c2@23", I: "~ ab2@21 g2@3 f2@23", J: "~ ab2@15 eb2@3 ab2@3 c3@3 bb2@12 ab2@11",
  K: "~ g2@15 c2@3 g2@3 c3@3 eb3@12 d3@6 c3@5", L: "~ ab2@22 g2@2 f2@23", M: "~ g2@21 f2@2 c2@23 ~",
  N: "~ g2@22 f2@2 c2@23", O: "~ g2@21 f2@3 c2@23",
})).s("gm_fretless_bass").gain(0.56)

// other · string ensemble 1 · "string 1"
const string_ensemble_1_2 = note(`<
  A B C D E F G H E F G H E F G H I J K@2 L@2 K@2 ~@4 M N O P M N O P M N O P Q R K@2 L@2 K@2 M N O P M N O P Q R K@2
  L@2 K@2 Q R K@2 L@2 K@2 L@2 K@2 ~@5
>`.pickRestart({
  A: "c6@3 ~@6 c5@3 c6@3 ~@7 g2@2 c6@3 ~@6 c5@3 c6@3 ~@9, ab2@11 ~ f2@12",
  B: "b5@3 ~@6 b4@3 b5@3 ~@7 f2@2 c6@3 ~@9 g5@3 ~@9, g2@7 c5 c2@8",
  C: "c6@3 ~@9 c6@4 ~@6 g2@2 c6@4 ~@5 c5@3 c6@3 ~@9, ab2@11 ~ f2@12",
  D: "b5@3 ~@9 b5@3 ~@7 f2@2 c6@3 ~@9 g5@2 ~@10, g2@22 ~@2 c2@23 ~", E: "c5 ~@2 c4 c5 ~@3 c5 ~@2 c4 c5 ~@3",
  F: "b4 ~@2 b3 b4 ~@2 c4 c5 ~@3 g4 ~@3", G: "c5@3 ~@9 c5@4 ~@8 c5@4 ~@5 c4@3 c5@3 ~@9",
  H: "b4@3 ~@9 b4@3 ~@9 c5@3 ~@9 g4@2 ~@10", I: "c5@3 c4 c5@3 c4 c5@3 c4 c5@4",
  J: "b4@9 b3@3 b4@9 ~@3 c5@9 ~@3 g4@11 ~, ~@21 c4@5 ~@7 g3@5 ~@10",
  K: "[~ c5@9 c4@3 c5@9 c4@3 c5@9 c4@3 c5@9 b3@3 b4@9 b3@3 b4@9 c4@3 c5@9 g3@3 g4@8 ~@3]/2",
  L: "[~ c5@9 c4@3 c5@9 c4@3 c5@9 c4@3 c5@9 b3@3 b4@9 b3@3 b4@9 c4@3 c5@9 g3@3 g4@11]/2",
  M: "~ c5@3 ~@6 c4@3 c5@3 ~@9 c5@3 ~@6 c4@3 c5@3 ~@8", N: "~ b4@3 ~@6 b3@3 b4@3 ~@6 c4@3 c5@3 ~@9 g4@3 ~@8",
  O: "~ c5@3 ~@9 c5@4 ~@8 c5@4 ~@5 c4@3 c5@3 ~@8", P: "~ b4@3 ~@9 b4@3 ~@9 c5@3 ~@9 g4@2 ~@9",
  Q: "~ c5@9 c4@3 c5@9 c4@3 c5@9 c4@3 c5@11", R: "~ b4@9 b3@3 b4@9 ~@3 c5@9 ~@3 g4@11, ~@22 c4@5 ~@7 g3@5 ~@9",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "string 1" · soft notes
const string_ensemble_1_soft_2 = note(`<
  A B C D E F G H E F G H E F G H ~@12 I J@3 I J@3 I J@3 ~@8 I J@3 I J@3 ~@25
>`.pickRestart({
  A: "~@7 c5 ~@7 b4", B: "~@33 g4@4 ~@8 c5@3", C: "~@9 c5@4 ~@8 c5@4 ~@20 b4@3", D: "~@9 b4@4 ~@8 c5@4 ~@8 g4@4 ~@11",
  E: "~@7 c4 ~@7 b3", F: "~@33 g3@4 ~@8 c4@3", G: "~@9 c4@4 ~@8 c4@4 ~@20 b3@3", H: "~@9 b3@4 ~@8 c4@4 ~@8 g3@4 ~@11",
  I: "~@22 c4@3 ~@21 b3@2", J: "[~@17 g3@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@10 b3@2 ~@4 b3@2 ~@4 c4@2 ~@4 g3@2 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.15)

// bass · fretless bass · "fretless"
const bass_2 = note(`<
  A B A C D E D F G B G C G H I C D E J K J K J K G H G ~ G H L M G H L M G H L M J K J K J K J K L H L N L O L N J K J
  K J K J K J K J K J K J K J K J K ~@5
>`.pickRestart({
  A: "ab1@11 g1 f1@12", B: "g1@11 f1 c1@12", C: "g1@22 f1@2 c1@23 ~", D: "ab1@5 eb1 ab1 c2 bb1@4 ab1@4",
  E: "g1@5 c1 g1 c2 eb2@4 d2@2 c2@2", F: "g1@15 c1@3 g1@3 c2@3 eb2@12 d2@6 c2@5 ~", G: "~ ab1@21 g1@2 f1@24",
  H: "g1@22 f1@3 c1@23", I: "~ ab1@21 g1@3 f1@23", J: "~ ab1@15 eb1@3 ab1@3 c2@3 bb1@12 ab1@11",
  K: "~ g1@15 c1@3 g1@3 c2@3 eb2@12 d2@6 c2@5", L: "~ ab1@22 g1@2 f1@23", M: "~ g1@21 f1@2 c1@23 ~",
  N: "~ g1@22 f1@2 c1@23", O: "~ g1@21 f1@3 c1@23",
})).s("gm_fretless_bass").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  A@4 B@3 C B C B C B C B C B@2 D@7 E D E D E D E D E D E A D F@2 D@9 E D E D E D E D@20 ~@5
>`.pickRestart({
  A: "x", B: "x ~@3 x!2 ~@2", C: "x ~@4 x ~@2", D: "~ x ~@23 x ~@5 x ~@16", E: "~ x ~@29 x ~@16", F: "~ x ~@46",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<[x!4]!4 ~@77>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@3 A B@3 A B@7 A B@2 C@17 D ~@3 D C@11 D C@3 D C@20 ~@5>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@13 x ~@23 x ~@10", D: "~@37 x ~@10",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct("<~@3 A B@3 A B@7 A B@2 C@17 D ~@3 D C@11 D C@3 D C@20 ~@5>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@13 x ~@23 x ~@10", D: "~@37 x ~@10",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~@3 B ~@7 A ~@19 B ~@3 B ~@11 B ~@3 B ~@15 C ~@3 C ~@5>".pickRestart({
  A: "~@5 x ~@2", B: "~@31 x ~@16", C: "~@11 x",
})).gain(0.48)

// drums · shaker
const shaker = s("sh").struct("<[x!8]!18 [~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4]!58 ~@5>").gain(0.64)

stack(
  string_ensemble_1, string_ensemble_1_soft, bass, string_ensemble_1_2, string_ensemble_1_soft_2, bass_2, kick, rim,
  snare, clap, open_hat, shaker
)

More by "Weird Al" Yankovic