Strudelify
Macho Man (live) cover art

1986 · San Francisco Macho Man (Original Album 1978)

Macho Man (live)

Village People

KeyF majorTempo133 bpm
0:00/0:00
// Macho Man (live) — Village People
// 133 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 12 "Synth Bass 1" synth bass 1 (copy of ch 11 "Slap Bass 1" slap bass 1)
// note: Full arrangement: all 167 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(133/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 · slap bass 1
const bass = note(`<
  ~@5 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C D E F E F C D C D G H I J I K I J L M I J I K I J L M ~@4 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 C D C D E F E F C D C D G H I J I K I J L M I J I K I J L M ~@4 N@16 C D C D E F E F C D C D G H I J I
  K I J L M I J I K I J L M I J I K I J L M I J I K I J L O
>`.pickRestart({
  A: "[c2@2 d2@2 ~@6 c2@2 d2@2 f2@6 d2@4 c2@4 d2@3 ~]/2", B: "[c2 d2 ~@3 c2 d2 ab2@3 g2@2 f2@2 d2@2]/2",
  C: "g2 g3 g2 g3 g2 [ab2,ab3]@3", D: "g2@2 g3@2 g2@2 g3@2 g2@2 f3 gb3 g3@4", E: "c2 c3 c2 c3 c2 [db2,db3]@3",
  F: "c2@2 c3@2 c2@2 c3@2 c2@2 bb2 b2 c3@4", G: "c2@3 ~@5 c2@3 ~@5", H: "c2 ~ c2 ~ c2 ~ c2 ~",
  I: "f2 f3 f2 f3 f2 f3 f2 f3", J: "bb2 bb3 bb2 bb3 bb2 bb3 bb2 bb3", K: "c2 c3 c2 c3 c2 c3 c2 c3",
  L: "f2 f3 f2 f3 c2 c3 c2 c3", M: "f2 f3 d2 d3 eb2 eb3 e2 e3", N: "d2 d3 c2 c3 b1 b2 c2 c3", O: "f2 ~@7",
})).s("gm_slap_bass_1").gain(0.59)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@5 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@3 D E D F G F G E D E D H I J@16 ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@3 D E D F G F G E
  D E D H I J@16 ~@12 A@2 B@2 A@2 C@3 D E D F G F G E D E D H I J@24 K@8
>`.pickRestart({
  A: "[~@2 c5 ~ d5 ~ f5@14 d5@4 c5@4 d5@4]/2", B: "[~@2 c5 ~ d5 ~ f5@8 ab5@6 g5@4 f5@4 d5@4]/2",
  C: "[~@2 c5 ~ d5 ~ f5@8 ab5@6 g5@4 f5@4 ~@4 [bb4,g5]@10 [eb5,ab5]@6, ~@14 d5@7 ~@3]/3", D: "[bb4,d5,g5]",
  E: "[bb4,d5,g5]@5 [eb5,ab5]@3", F: "[g4,bb4,c5]@5 [ab4,db5]@3", G: "[g4,bb4,c5]",
  H: "[g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3", I: "[g4,bb4,c5] ~ [g4,bb4,c5] ~ [g4,bb4,c5] ~ [g4,bb4,c5] ~",
  J: "[[a4,c5]@2 [bb4,d5]@2 a4@2 [bb4,e5]@2 a4@2 [bb4,d5]@2 a4 [bb4,e5] [a4,f5]@2, f5@6 ~@2 f5@5 ~@3, ~@2 c5@3 ~ c5@2]/8", // Am Bb Bbdim Bb Bbdim Dm
  K: "[[a4,c5]@16 [bb4,d5]@16 a4@16 [bb4,e5]@16 a4@16 [bb4,d5]@16 a4@8 [bb4,e5]@8 [a4,f5]@3 ~@13, f5@6 ~@2 f5@5 ~@3, ~@32 c5@48 ~@16 c5@19 ~@13]/8", // Am Bb Bbdim Bb Bbdim Dm
})).s("gm_string_ensemble_1").gain(0.4)

// chords · brass section
const brass_section = note(`<
  ~@5 A B A B A B A B A B A B A B A B C D C D E F E F C D C D G H I@2 J@2 K@2 L M I@2 J@2 K@2 L M ~@4 A B A B A B A B A
  B A B A B A B C D C D E F E F C D C D G H I@2 J@2 K@2 L M I@2 J@2 K@2 L M ~@12 A B A B A B A B C D C D E F E F C D C D
  G H I@2 J@2 K@2 L M I@2 J@2 K@2 L M I@2 J@2 K@2 L M I@2 J@2 K@2 L N
>`.pickRestart({
  A: "~@10 c5 db5 d5 ~@3", B: "~@10 [a4,c5,d5] ~@3 [a4,c5,d5] ~", C: "[d5,g5]@5 [eb5,ab5]@3",
  D: "[d5,g5]@9 ~ c5 db5 d5@4", E: "[g4,c5]@5 [ab4,db5]@3", F: "[g4,c5]@10 bb4 b4 c5@3 ~",
  G: "[g4,bb4,c5] ~@3 [g4,bb4,c5] ~@3", H: "[g4,bb4,c5] ~ [g4,bb4,c5] ~ [g4,bb4,c5] ~ [g4,bb4,c5] ~",
  I: "[[c5,a5] ~ [bb4,g5] ~ [a4,f5] ~ c5 [bb4,d5]@7 ~@2]/2", J: "[[c5,a5] ~ [bb4,g5] ~ [a4,f5] ~ c5 [bb4,e5]@7 ~@2]/2",
  K: "[[c5,a5] ~ [bb4,g5] ~ [a4,f5] ~ c5 [bb4,d5]@8 ~]/2", L: "[a4,f5]@2 ~@2 [a4,f5]@3 ~ [bb4,e5]@3 ~ [bb4,e5]@3 ~",
  M: "[a4,f5]@4 d5@3 ~ eb5@3 ~ e5@4", N: "[a4,f5] ~@7",
})).s("gm_brass_section").gain(0.45)

// drums · rim
const rim = s("rim").struct("<[x!3 ~] ~@166>").gain(0.7)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!165 x>").gain(0.7)

// drums · clap
const clap = s("cp").struct("<~@35 [~ x ~ x]!16 ~@34 [~ x ~ x]!16 ~@34 [~ x ~ x]!31 x>").gain(0.7)

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

// drums · hihat
const hihat = s("hh").struct("<~ [x ~ x!3 ~@3 x ~ x!3 ~@3]!165 x>").gain(0.63)

// drums · low tom
const low_tom = s("lt").struct("<~@34 A ~@49 A ~@35 A ~@13 A ~@15 A ~@14 A ~>".pickRestart({
  A: "~@15 x",
})).gain(0.63)

// drums · mid tom
const mid_tom = s("mt").struct("<~@34 A ~@49 A ~@35 A ~@13 A ~@15 A ~@14 A ~>".pickRestart({
  A: "~@10 x!5 ~",
})).gain(0.63)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@3 x ~@3 x]!165 ~>").gain(0.7)

// drums · high tom
const high_tom = s("ht").struct("<~@34 A ~@49 A ~@35 A ~@13 A ~@15 A ~@14 A ~>".pickRestart({
  A: "~@8 x!2 ~@6",
})).gain(0.63)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~
  A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~@7 A ~@7 A ~@7 A ~@7
>`.pickRestart({
  A: "x",
})).gain(0.63)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@21
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!30
  ~@20
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!30
  ~@20
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!45
  ~
>`).gain(0.49)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B
  C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D C D@3 A B C D C D@2 ~
>`.pickRestart({
  A: "x ~@8 x ~@6", B: "~ x!2 ~@4 x", C: "~ x", D: "~@5 x ~@8 x ~",
})).gain(1.11)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B
  C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D C D@3 A B C D C D@2 ~
>`.pickRestart({
  A: "~@2 x ~@4 x", B: "~@9 x!2 ~@5", C: "~@3 x ~@9 x ~@2", D: "x ~@4 x ~@2",
})).gain(1.11)

// drums · congas
const congas = s("conga:13").struct(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B
  C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D C D@3 A B C D C D@2 ~
>`.pickRestart({
  A: "~@2 x ~@3 x!2 ~@4 x ~@3", B: "~ x ~@5 x ~@4 x ~@3", C: "~@2 x ~@3 x ~@4 x ~@3 x", D: "~@3 x ~@4 x ~@4 x ~@2",
})).gain(1.35)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B
  C D A B C D A B C D A B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B A B C D C D@3 A B C D C D@3 A B C D C D@3 A B C D C D@2 ~
>`.pickRestart({
  A: "~@3 x ~@6 x ~@4 x", B: "~@3 x ~@4", C: "x ~@4 x ~@4 x ~@3 x ~", D: "~@2 x ~@3 x ~@4 x ~@4",
})).gain(1.35)

stack(
  bass, string_ensemble_1, brass_section, rim, kick, clap, snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash,
  tambourine, bongos, bongos_2, congas, congas_2
)

More by Village People