Strudelify

I'm a Man Not a Boy

Chesney Hawkes

KeyA majorTempo154 bpm
0:00/0:00
// I'm a Man Not a Boy — Chesney Hawkes
// 154 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 6 "Ch  6" Sax 3 -> tenor sax; ch 2 "Ch  2" Syn Mallet -> marimba
// note: Full arrangement: all 149 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(154/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 · tenor sax · "Ch  6"
const tenor_sax = note(`<
  ~@8 A B@3 C D@3 ~@38 A B@3 C D@3 ~@46 A B@3 C D@3 ~@8 A B@3 C D@3 A B@3 C D@3 A B@3 C D@3 E
>`.pickRestart({
  A: "e4@12 ~ e4@2 ~", B: "[e4@5 ~ e4@2 e4@6 c#4 e4@19 ~@3 e4@2 ~ e4@6 c#4 ~]/3", C: "e4@6 ~ e4",
  D: "[e4@5 ~ e4 ~ e4@5 c#4 ~ e4@29 ~@4]/3", E: "a3@3 ~@5",
})).s("gm_tenor_sax").gain(0.6)

// other · baritone sax · "Ch 11"
const baritone_sax = note(`<
  ~@8 A B@3 C D@3 ~@38 A B@3 C D@3 ~@46 A B@3 C D@3 ~@8 A B@3 C D@3 A B@3 C D@3 A B@3 C D@3 E
>`.pickRestart({
  A: "e3@12 ~ e3@2 ~", B: "[e3@5 ~ e3@2 e3@6 c#3 e3@19 ~@3 e3@2 ~ e3@6 c#3 ~]/3", C: "e3@6 ~ e3",
  D: "[e3@5 ~ e3 ~ e3@5 c#3 ~ e3@29 ~@4]/3", E: "a2@3 ~@5",
})).s("gm_baritone_sax").gain(0.66)

// chords · synth brass 1 · "Ch  1" · E5
const synth_brass_1 = note(`<
  ~@49
  [~@5 [b4,e5,b5] ~ [b4,e5,b5]]
  ~@3
  [~@5 [b4,e5,b5] ~ [b4,e5,b5]]
  ~@41
  [~@5 [b4,e5,b5] ~ [b4,e5,b5]]
  ~@53
>`).s("gm_synth_brass_1").gain(0.8)

// other · acoustic guitar steel · "Ch  3"
const acoustic_guitar_steel = note("<A B C@2 A B C@2 ~@141>".pickRestart({
  A: "c#4@3 ~", B: "d4@11 ~ f#4@3 ~", C: "[e4@21 ~@11]/2",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// chords · string ensemble 1 · "Ch  5"
const string_ensemble_1 = note(`<
  A B A B A B A B A C D C A C D C A C D C A C E D A C D C A C D C F D A G C D A E H D A E H D F D C E F D C E A C D C A
  C D C A C D C A C E D A C D C A C D C F D A G C D A E H D A E H D F D C E F D C E ~@2 I J@2 ~ I K@2 C D C A C D C A E
  H D A E H D A C D C A C D C A C D C A C D C A C D C A C D C ~
>`.pickRestart({
  A: "[a3,c#4,e4]@7 ~", B: "[a3,d4,e4]@7 ~", C: "[a3,d4,f#4]@7 ~", D: "[b3,e4,g#4]@7 ~", E: "[b3,d4,f#4]@7 ~",
  F: "[c#4,f#4,a4]@7 ~", G: "[c#4,e4,g#4]@7 ~", H: "[d4,f#4,a4]@7 ~", I: "a4@5 ~ b4@5 ~ e5@3 ~", J: "[e5@31 ~]/2",
  K: "[~@8 [a3,c#4,e4]@7 ~, e5@23 ~@9]/2", // A
})).s("gm_string_ensemble_1").gain(0.4)

// bass · slap bass 2 · "Ch  7"
const bass = note(`<
  A@8 B C D E B C D E B C D E B C F G B C D E B C D E H G I J K L M N O G M N O G H D O P H Q O R B C D E B C D E B C D
  E B C F G B C D E B C D E H G I J K L M N O G M N O G H D O P H Q O R S T U V S T U V B C D E B C D E M N O G M N O G
  B C D E B C D E B C D E B C D E B C D E B C D E W
>`.pickRestart({
  A: "a1@13 ~ a1@2", B: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 b1 ~ c#2@2", C: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 f#2 ~ d2@2",
  D: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2", E: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ e2@2 d2 ~ c#2@2",
  F: "b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2", G: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2 d2 ~ c#2@2",
  H: "f#2 ~ f#2@2 f#2 ~ f#2@2 f#2 ~ f#2@2 f#2 ~ f#2@2", I: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2",
  J: "c#2 ~ c#2@2 c#2 ~ c#2@2 c#2 ~ c#2@2 c#2 ~ c#2@2", K: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 c#2 ~ d2@2",
  L: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2 f#2 ~ e2@2", M: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 d2 ~ a1@2",
  N: "b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 a1 ~ b1@2", O: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2",
  P: "b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~ e2@2", Q: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2 e2 ~ b1@2",
  R: "b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 d2 ~ b1@2", S: "f#2@13 ~ f#2@2", T: "e2@13 ~ e2@2", U: "d2@13 ~ d2@2",
  V: "b1@13 ~ b1@2", W: "[a1,a2]@3 ~@5",
})).s("gm_slap_bass_2").gain(0.69)

// drums · kick
const kick = s("bd").struct(`<
  A@8 B@8 A B A B A B A B A B A B A B A B C@3 D C D E@3 F E@3 F B@3 F B@3 F B@8 A B A B A B A B A B A B A B A B C@3 D C
  D E@3 F E@3 F B@3 F B@3 F A@8 B@8 E@3 F E@3 F B@24 G
>`.pickRestart({
  A: "x ~@6 x", B: "x ~@2 x ~@3 x", C: "x ~@3 x!2 ~@2", D: "x ~@2 x ~@4", E: "x ~@3 x!2 ~ x", F: "x ~@2 x ~ x ~ x",
  G: "x",
})).gain(0.78)

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

// drums · low tom
const low_tom = s("lt").struct("<~@7 [~ x ~@6] ~@99 [~ x ~@6] ~@41>").gain(0.78)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A C A B A C B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A@2 B A C A B A C B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~
>`.pickRestart({
  A: "x!8", B: "x!5 ~ x!2", C: "x!3 ~ x ~ x!2",
})).gain(0.78)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@7 B ~@45 B ~@45 A ~@7 B ~@15 B ~@7 B ~@7 B ~>".pickRestart({
  A: "~@2 x ~@2 x!2 ~", B: "~@5 x ~@2",
})).gain(0.7)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ B ~ A ~ B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ B ~ A ~ B A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~ x ~@2",
})).gain(0.7)

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

stack(
  tenor_sax, baritone_sax, synth_brass_1, acoustic_guitar_steel, string_ensemble_1, bass, kick, snare, low_tom, hihat,
  mid_tom, open_hat, crash
)

More by Chesney Hawkes