Strudelify

Sex Machine (Get Up I Feel Like Being A)

James Brown

KeyD♭ majorTempo108 bpm
0:00/0:00
// Sex Machine (Get Up I Feel Like Being A) — James Brown
// 108 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "+CHORUSGTR" electric guitar clean (copy of ch 3 "+FUNK GTR" electric guitar muted)
// note: Full arrangement: all 137 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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.

// chords · piano · "HONKY TONK"
const piano = note("<~@23 A B@3 A C@2 D E ~@51 F G H I F J@2 K ~@25 F L@2 M N ~ F O@3 ~@11>".pickRestart({
  A: "~@23 eb4",
  B: "[bb4@2 eb4 [gb4,bb4]@2 eb4 [gb4,bb4]@2 eb4 [gb4,bb4]@2 eb4 [gb4,bb4] ~ eb4 [gb4,bb4] ~@2 [gb4,bb4] ~ [eb4,ab4,bb4,c5] ~@2 [eb4,gb4,bb4]@7 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 [eb4,bb4,db5]@10 a4 ab4 eb4@2 ~ [eb4,gb4,bb4,c5] ~@21, gb4 ~@46 gb4 ~@24]/3", // Gb Ab Ebm Ab Eb7 Cm7b5
  C: "[bb4@2 eb4 [gb4,bb4] ~ eb4 bb4@2 eb4 bb4@2 eb4 [gb4,bb4]@2 eb4 [gb4,bb4] ~ eb4 [gb4,bb4] ~ [eb4,ab4,c5] ~@2 [eb4,gb4,bb4]@4 ~@2 eb4 [gb4,bb4] ~ [eb4,ab4,c5] ~@2 ab4 bb4@9 [ab4,a4] gb4 eb4, gb4 ~@5 gb4 ~@2 gb4 ~@25 [eb4,db5]@10 ~@3]/2", // Gb Ab Ebm Gb Ab Amaj7 Eb7
  D: "~@2 [eb4,gb4,bb4,c5] ~@18 ab4 [bb4,d5]@2, ~@21 db5@2 ~", // Cm7b5 Bb
  E: "db5 ~ bb4 db5 bb4 db5!2 bb4 [bb4,db5] db5 bb4 [bb4,db5] db5 bb4 [bb4,db5] db5 bb4 [bb4,db5] db5 ~@5", // Bbm
  F: "~@3 [gb4,bb4]@2 eb4 [gb4,bb4] ~ eb4 [gb4,bb4] ~@2 [gb4,bb4] ~ [eb4,ab4,bb4,c5] ~@2 [eb4,gb4,bb4]@4 [gb4,bb4]@2 eb4", // Gb Ab Ebm Gb
  G: "[gb4,bb4]@2 eb4 [gb4,bb4]@2 eb4 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 [eb4,bb4,db5]@10 db5 bb4 [bb4,db5]", // Gb Ebm Ab Eb7 Bbm
  H: "db5 ~ [bb4,db5] db5 ~ [bb4,db5] db5 [bb4,db5] bb4 db5 bb4 [bb4,db5] db5 bb4 [bb4,db5] db5 bb4 [bb4,db5] db5 ~@2 ab4@2 eb4, ~@21 a4 ~@2", // Bbm
  I: "~@2 gb4 ~@2 eb4 [eb4,ab4]@2 ~ [eb4,gb4,bb4]@2 ~@13, ~@6 c5 ~@17", // Ab5 Ebm
  J: "[[gb4,bb4]@2 eb4 [gb4,bb4]@2 eb4 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 [eb4,bb4,db5]@7 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 [bb4,db5]@4 db5 bb4 [bb4,db5] db5 ~ [bb4,db5] db5 ~ [bb4,db5] db5 [bb4,db5] bb4 db5 bb4 [bb4,db5] db5 ~@2 [eb4,ab4,c5] ~ [eb4,gb4,bb4], ~@11 ab4 ~@11 eb4@19 ~@6]/2", // Gb Ebm Ab Eb7 Ebm Ab Bbm Ab …
  K: "~@2 [eb4,ab4,c5] ~@21", // Ab
  L: "[[gb4,bb4]@2 eb4 [gb4,bb4]@2 eb4 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 [eb4,bb4,db5]@7 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 a4 ab4@3 eb4 ~ db5!3 bb4 db5!2 bb4 db5 [bb4,db5] bb4 db5 bb4 db5@2 ~@2 [a4,bb4] ~ eb4, ~@23 db5@5 bb4@2 ~@11 bb4 ~@3 ab4@2 ~, ~@23 eb4@3 ~@22]/2", // Gb Ebm Ab Eb7 Ebm Ab Bbm Bbmaj7
  M: "~@2 [eb4,gb4,bb4] ~@12 [ab5,a5] bb5 [bb5,eb6] eb6 bb5 [bb5,eb6] eb6!2 ~", N: "a5@2 [gb5,ab5] eb5 ~@20",
  O: "[[gb4,bb4]@2 eb4 [gb4,bb4]@2 eb4 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 [eb4,bb4,db5]@7 [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@2 a4 bb4@3 db5 bb4 [bb4,db5] db5 ~ [bb4,db5] db5 ~ [bb4,db5] db5 [bb4,db5] bb4 db5 bb4 [bb4,db5] db5 bb4 [bb4,db5] ~ [bb4,db5] bb4 db5 [bb4,db5] ~ [bb4,db5] db5 bb4 db5 bb4 ~@2 bb4!2 ~@3 eb3@8 ~, ~@11 a4 ~@11 eb4@37 ~@12, ~@23 db5@4 ~@33 db5@6 ~@6]/3", // Gb Ebm Ab Eb7 Ebm Ab Bbm
})).s("gm_piano").gain(0.48).pan(0.6)

// chords · piano · "HONKY TONK" · soft notes
const piano_soft = note("<~@24 A ~@6 B ~@51 C ~ D ~ C ~ E ~@26 C ~ E F ~@2 C ~ G H ~@11>".pickRestart({
  A: "~@17 eb4 ~@6", B: "~ bb4 db5 ~@2 bb4 ~@18", C: "~@11 eb4 ~@12", D: "~ bb4 ~@2 bb4 ~@19",
  E: "~@7 bb4 ~@2 bb4 ~@13", F: "~@21 bb5@2 ~", G: "~@7 bb4 ~@2 bb4 ~@10 db5 ~@2",
  H: "~@2 bb4 ~@5 [bb4,db5] db5!2 ~@13", // Bbm
})).s("gm_piano").gain(0.24).pan(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E D E D F G F H F I F J K J F H F I F J K J C D E D E D F G F H F I F J K J F H F I F J K J F G F H L M N M O
  P O P O P O P O P O P Q R K S K T U T S V W T S X W T S X W T S Y W T S Z T@2 AA T AA T@3 E D E D F G@2 AB T AB T AB T
  AB T AB T AB T AB T AC AD T@2 AB D E D E D AE AF
>`.pickRestart({
  A: "~@23 eb2", B: "ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 bb1 ~ db2@3",
  C: "eb2@2 ~@3 db2 eb2 ~@7 db2 eb2 ~ eb2 ~@6", D: "eb2@2 ~@3 db2 eb2!2 ~@6 db2 eb2 ~@2 gb2 bb1 ~ db2@2 ~",
  E: "eb2@2 ~@3 db2 eb2 ~@7 db2 eb2 ~ eb2 ~@2 eb2 ~@3", F: "eb2@2 ~@6 db2 eb2 ~ eb2 ~@5 eb2 ~@2 db2 eb2 ~@2",
  G: "eb2@2 ~@6 db2 eb2 ~@4 db2 eb2 ~@2 gb2 bb1 ~ db2@2 ~",
  H: "eb2@2 ~@6 db2 eb2 ~ eb2 ~@2 db2 eb2 ~@2 gb2 bb1 ~ db2@2 ~",
  I: "eb2@2 ~@6 db2 eb2 ~@4 db2 eb2 ~ eb2 gb2 bb1 ~ db2@2 ~",
  J: "eb2@2 ~@3 db2 eb2 ~@7 db2 eb2 ~ eb2 gb2 bb1 ~ db2@2 ~", K: "eb2@2 ~@3 db2 eb2 ~@7 db2 eb2 ~ eb2 ~@2 db2 eb2 ~@2",
  L: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 db2 eb2 ~ eb2 ~@2 gb2 g2@3",
  M: "ab2@2 ~@3 gb2 ab2 ~ ab2 ~@5 gb2 g2 ~ ab2 ~@2 eb2 gb2 ~ g2", N: "ab2 ~@4 ab2!2 ~ ab2 ~@5 eb2 gb2 ~ ab2!2 ~@4 gb2",
  O: "ab2 ~@4 ab2!2 ~ ab2 ~@2 eb2 gb2!2 ~ g2 ab2 ~@3 eb2 gb2 ~ g2",
  P: "ab2@2 ~@3 ab2!2 ~ ab2 ~@2 eb2 gb2!2 ~ g2 ab2 ~@3 eb2 gb2 ~ g2",
  Q: "ab2 ~@4 ab2!2 ~ ab2 ~@2 eb2 gb2!2 ~ g2 ab2 ~@3 eb2 gb2@3",
  R: "ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2@2 bb1 db2@3",
  S: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 db2 eb2 ~@2 gb2 ~ bb1 db2@2 ~",
  T: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 db2 eb2 ~ eb2 gb2 ~ bb1 db2 ~ db2",
  U: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 db2 eb2 ~@2 g2 ~ bb1 db2@2 ~",
  V: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 db2 eb2 ~ eb2 g2 ~ bb1 db2 ~ db2",
  W: "eb2@2 ~@3 db2 eb2@2 ~@6 db2 eb2 ~@2 gb2 ~ bb1 db2@2 ~", X: "eb2@2 ~@3 db2 eb2 ~@7 db2 eb2 ~ eb2 gb2 ~ bb1 db2@3",
  Y: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@2 gb1 ab1 ~ bb1@2 ~ db2@2 ~ bb1 db2@3",
  Z: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 g2@3 ab2@2 ~ a2 bb2 ~@2",
  AA: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@2 eb2 g2 ~ ab2@2 ~ a2@2 ~ bb2 ~@2 db2",
  AB: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@3 g2 ~ ab2@2 ~ a2@3 bb2 ~@2 db2",
  AC: "eb2@2 ~@3 eb2 g2 ~ g2@2 ~ ab2@2 ~ a2@2 ~ bb2@2 ~ db2!2 ~ db2",
  AD: "eb2@2 ~@3 db2 eb2 ~ eb2 ~@5 db2 eb2 ~ eb2 gb2 ~ bb1 db2@3",
  AE: "eb2@2 ~@3 db2 eb2!2 ~@6 db2 eb2 ~@2 gb2 bb1 ~ db2@2 eb2", AF: "ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@2 ab2 ~@11",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · electric guitar muted · "+FUNK GTR" · Ab7 Gm7b5 Db Dbmaj7 Gm7b5 Db Dbmaj7 Gm7b5 …
const electric_guitar_muted = note(`<
  ~
  [[ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~@4]
  [[g3,db4,f4,bb4] ~@2 eb3 ~@2 [g3,db4,f4,bb4] ~@2 eb3 ~ [db4,f4] [db4,f4,c5]@4 ~ [g3,db4,f4,bb4] ~@3 [g3,db4,f4,bb4] ~ f4]!52
  [bb4 ~@2 eb3 ~@2 [g3,db4,f4,bb4] ~@2 eb3 ~ [db4,f4] [db4,f4,c5]@4 ~ [g3,db4,f4,bb4] ~@3 [g3,db4,f4,bb4] ~ f4]
  [[c4,gb4,bb4,f5] ~ [gb4,bb4,f5] [c4,gb4,bb4] ~ gb4 [c4,gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~@2 [bb3,e4,ab4,db5] ~@2 [b3,f4,a4,d5] ~@2 [c4,gb4,bb4,eb5] ~@2 c4 gb4 ~ c4]!16
  [[ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~@4]
  [[g3,db4,f4,bb4] ~@2 eb3 ~@2 [g3,db4,f4,bb4] ~@2 eb3 ~ [db4,f4] [db4,f4,c5]@4 ~ [g3,db4,f4,bb4] ~@3 [g3,db4,f4,bb4] ~ f4]!64
  [[ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4]@2 ~ [ab3,c4,gb4,bb4] ~@11]
>`).s("gm_electric_guitar_muted").gain(0.36)

// chords · electric guitar muted · "+FUNK GTR" · soft notes · Eb7 C7 Eb7
const electric_guitar_muted_2 = note(`<
  ~@2
  [~@20 eb3 ~@2 [eb3,db4]]!53
  [~@5 c4 ~@15 [c4,bb4] ~@2]!16
  ~
  [~@20 eb3 ~@2 [eb3,db4]]!64
  ~
>`).s("gm_electric_guitar_muted").gain(0.18)

// chords · alto sax · Ab7
const alto_sax = note(`<
  ~
  [[ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2]
  ~@69
  [[ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@5]
  ~@64
  [[ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@2 [ab3,c4,eb4,gb4] ~@11]
>`).s("gm_alto_sax").gain(0.72)

// chords · trumpet · Gb
const trumpet = note(`<
  ~
  [[gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2]
  ~@69
  [[gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@5]
  ~@64
  [[gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@2 [gb4,bb4] ~@11]
>`).s("gm_trumpet").gain(0.8)

// drums · kick
const kick = s("bd").struct("<~ [x!7 ~] [x ~@4 x ~@2]!69 [x!7 ~] [x ~@4 x ~@2]!64 [x!5 ~@3]>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  [~@23 x]
  [~@7 x]
  [~ x ~ x]!68
  [~@6 x ~@11 x ~@4 x]
  [~@7 x]
  [~ x ~ x]!63
  [~@6 x ~@11 x ~@4 x]
  ~
>`).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@2 [~@7 x ~@4]!69 ~ [~@7 x ~@4]!64 ~>").gain(0.32)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 [~@11 x ~@12]!69 ~ [~@11 x ~@12]!64 ~>").gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@52 B A C@15 D A@63 B ~>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~@3 x!3", C: "x!2 ~@3 x ~@2", D: "~@3 x",
})).gain(0.56)

// drums · splash
const splash = s("cr").struct("<~@54 x ~@15 x ~@64 x ~>").gain(0.64)

stack(
  piano, piano_soft, bass, electric_guitar_muted, electric_guitar_muted_2, alto_sax, trumpet, kick, snare, snare_soft,
  hihat, hihat_soft, open_hat, splash
)

More by James Brown