Strudelify
Who Can It Be Now cover art

1981 · Business As Usual

Who Can It Be Now

Men at Work

KeyE majorTempo120 bpm
0:00/0:00
// Who Can It Be Now — Men at Work
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · fretless bass · "Bass CH 2"
const bass = note(`<
  ~@2 A B C D E F G H I F J K I L M H N O P Q N O P Q E F C R S T J H U F C V A F J W X Y P Q X Y P Q Z AA AB AC AD AE
  AF AG AH AI L C AJ I L M K E F AK AL A L M AM G@2 AN AO G M AC AN AP AQ AC@2 AR AS AC AT AU AV AT@2 AA AR AW AX AY AZ
>`.pickRestart({
  A: "e2@6 e3@4 b2@2 e3 b2 e2!2", B: "d2@5 ~ a2 ~ c#3@2 d3@3 ~ a2 ~", C: "c#2@7 g#2!2 ~ g#2@5 g#2",
  D: "c#2@5 ~ c#2!2 c#2@4 b1@2 b1 ~", E: "e2@5 ~ b2 ~ e3@2 e3@3 ~ b2 ~", F: "d2@6 d3@4 a2@2 d3 a2 d2!2",
  G: "c#2@5 ~ g#2 ~ b2@2 c#3@3 ~ g#2 ~", H: "c#2@3 c#2 c#2@2 b1@2", I: "e2@7 b2!2 ~ b2@5 b2",
  J: "c#2@6 c#3@4 g#2@2 c#3 g#2 c#2 d#2", K: "c#2@5 ~ c#2@2 c#2@4 b1@2 b1 ~", L: "d2@7 a2!2 ~ a2@5 a2",
  M: "c#2@6 c#3@4 g#2@2 c#3 g#2 c#2!2", N: "c#2 ~ c#2@4 g#2!2 b2@2 c#3@3 ~ g#2 ~", O: "c#2@6 g#2@2 e3@2 d#3@2 c#3@3 ~",
  P: "b1@3 b2!2 b2@2 b2", Q: "b1@3 b2 g#3 f#3 b2@2", R: "c#2@7 g#2 c#2@4 b1@4", S: "e2@6 e3@4 b2@2 e3 b2 e2 d#2",
  T: "d2@6 d3@4 a2@2 d3 a2 d2 c2", U: "e2@6 e3@4 b2@2 e3 b2 e2 g#2", V: "c#2@7 g#2 c#2@4 b1@2 b1 ~",
  W: "c#2@6 c#2@2 c#2@2 c#2 ~ b1@2 b1 ~", X: "c#2@3 g#2 b2 c#3@2 g#2", Y: "c#2@3 g#2 e3 d#3 c#3@2",
  Z: "f#2@6 f#3@4 c#3@2 f#3 c#3 f#2!2", AA: "b1@7 f#2!2 ~ f#2@5 f#2", AB: "f#2@5 ~ f#2!2 f#2@2 f#2 ~ e2@4",
  AC: "b1@7 b2!2 ~ b2@5 b2", AD: "f#2@5 ~ c#3 ~ e3@2 f#3@3 ~ c#3 ~", AE: "b1@5 ~ f#2 ~ a2@2 b2@3 ~ f#2 ~",
  AF: "f#2@3 f#2 f#2@2 e2@2", AG: "b1@6 c#2@2 c#2@4 b1@2 b1 ~", AH: "e2@6 ~ b2 e3 ~ e3@2 a2@2 b2@2",
  AI: "e2@6 b2 ~ e3@4 e2@3 ~", AJ: "c#2@5 ~ c#2@2 c#2@4 b1@4", AK: "c#2@6 c#3@4 g#2 ~ c#3 g#2 c#2 ~, ~@6 c3 ~@9",
  AL: "c#2@7 g#2 c#2@2 c#2 ~ b1@2 b1 ~", AM: "c#2@5 ~ c#2 b1 c#2@2 c#2 ~ b1@2 b1 ~", AN: "b1@6 b2@4 b2@2 b2!2 b1!2",
  AO: "b1@6 b2@4 b2@2 b2!2 b1 d#2", AP: "b1@6 b2@4 f#2@2 b2 f#2 b1 a#1", AQ: "b1@5 ~ b1 c#2 b1@4 b1@4",
  AR: "b1@5 ~ f#2 ~ b2@2 b2@3 ~ f#2 ~", AS: "b1@6 b1@2 b1@4 b1 ~ b1 ~", AT: "b1@5 ~ b2 ~ b2@2 b2@3 ~ b2 ~",
  AU: "b1@6 b2@4 f#2@2 b2 f#2 b1!2", AV: "b1@7 f#2 b1@4 b1@2 b1 ~", AW: "b1@4 b1@4 b2 ~ b2@2 c#3@2 b1@2",
  AX: "b1@6 b2@4 c#3@2 b2 c#3 b1!2", AY: "f#2@6 c#3 ~ c#3 ~ c#3@3 ~ c#3 ~", AZ: "f#2",
})).s("gm_fretless_bass").gain(0.41)

// chords · piano · "Chords Acoustic Grand Piano CH4"
const piano = note(`<
  ~@2 A B C D A E C F A G C H I B C J C@2 K L C@2 K L M G C D I E C N O E C P I Q C F C@2 K L C@2 K L R S T U R V W X I
  Y G C P M Z C AA I G C P A Z C AB C@2 K M C@2 M A AC AD M K AE AF O M AG AD U O AE AH AI R AJ AK
>`.pickRestart({
  A: "[g#3,b3,e4]@13 ~@3", B: "[f#3,c#4,e4,a4]@13 ~@3",
  C: "c#3@4 [b3,e4,g#4]@3 c#3 [b3,e4,g#4] ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2", // E
  D: "c#3@4 [b3,e4,g#4]@3 c#3 [e3,c#4]@4 [b3,d#4,f#4,b4]@4, ~@8 g#4 ~@7", E: "[f#3,c#4,e4,a4]@3 [c#4,e4,f#4,a4]@4 ~",
  F: "[e3,g#3,c#4]@7 ~ [e3,g#3,c#4]@4 [b3,d#4,f#4,b4]@4", // C#m B
  G: "d3@4 [c#4,f#4,a4]@3 a3 [c#4,f#4,a4] ~ [c#4,f#4,a4]@4 [c#4,f#4,a4]@2, ~@14 a3 ~", // F#m
  H: "[e3,c#4,g#4]@5 ~ [g#3,c#4,e4] ~ [e3,c#4,g#4]@4 [b3,d#4,f#4]@4", // C#m B
  I: "e3@4 [e4,g#4,b4]@3 b3 [e4,g#4,b4] ~ [e4,g#4,b4]@4 [e4,g#4,b4]@2, ~@14 b3 ~", // E
  J: "[e3,c#4,g#4]@7 ~ [e3,g#3,c#4]@4 [b3,d#4,f#4,b4]@4", // C#m B
  K: "b2@4 [e4,g#4,b4]@3 b3 [e4,g#4,b4] ~ [e4,g#4,b4]@4 [e4,g#4,b4]@2, ~@14 b3 ~", // E
  L: "b2@4 [e4,g#4,b4]@3 b3 [e4,g#4,b4] ~ [e4,g#4,b4]@3 ~ [b3,e4,g#4,b4] ~, ~@4 a#4 ~@11", M: "[g#3,e4,b4]@13 ~@3",
  N: "[e3,g#3,c#4]@7 ~ [e3,c#4,g#4]@4 [b3,d#4,f#4,b4]@4", O: "[g#3,b3,e4]@3 [g#3,b3,e4]@4 ~",
  P: "[g#3,c#4,e4]@7 ~ [e3,g#3,c#4]@4 [b3,d#4,f#4,b4]@4", Q: "[f#3,a3,c#4,e4]@13 ~@3",
  R: "f#2@4 [e3,a3,c#4]@3 f#2 [e3,a3,c#4] ~ [e3,a3,c#4]@3 ~ [e3,a3,c#4]@2", S: "[a3,c#4,d#4,g#4]@13 ~@3",
  T: "[a3,c#4,f#4]@7 ~ [a3,f#4,c#5]@4 [g#3,b3,e4]@4", U: "[g#3,e4,b4]@3 [g#3,b3,e4]@4 ~", V: "[a3,d#4,g#4,c#5]@13 ~@3",
  W: "[a3,c#4,f#4]@7 ~ [a3,c#4,f#4]@4 [g#3,e4,b4]@4", X: "[b3,d#4,f#4]@7 ~ [b3,f4,a#4,d#5]@4 [a3,b3,d#4,f#4]@4",
  Y: "e3@4 [e4,g#4,b4]@3 b3 [e4,g#4,b4] ~ [e4,g#4,b4]@3 ~ [b3,e4,g#4,b4] ~, ~@4 a#4 ~@11", // E
  Z: "[f#3,a3,c#4,e4]@3 [c#4,e4,f#4,a4]@4 ~", AA: "[g#3,c#4,e4]@7 ~ [e3,c#4,g#4]@4 [b3,d#4,f#4,b4]@4",
  AB: "c#3@4 [b3,e4,g#4]@3 c#3 [e3,c#4]@4 [b3,d#4,f#4]@4, ~@8 g#4 ~@7", AC: "[b3,d#4,f#4,b4]@3 [b3,d#4,f#4]@4 ~",
  AD: "[f#3,b3,d#4]@7 ~ [b3,d#4,f#4,b4]@4 [g#3,d#4,f#4,b4]@4", // B G#m7
  AE: "b2@4 [b3,d#4,f#4]@3 f#3 [b3,d#4,f#4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2, ~@14 f#3 ~", // B
  AF: "[b3,d#4,f#4,b4]@7 ~ [b3,d#4,f#4]@4 [g#3,d#4,f#4,b4]@4", AG: "[b3,d#4,f#4,b4]@13 ~@3",
  AH: "[b3,d#4,f#4]@3 [f#3,b3,d#4]@4 ~", AI: "[a3,d#4,g4,c5]@4 [g#3,e4,b4]@4 ~@2 [a3,e4,g#4,c#5]@5 ~",
  AJ: "[f#5,c#6]@9 ~@3 c#6@2 f#6 ~, [c#4,e4,f#4,a4]@7 ~, f#6@5 f#5@2 ~", AK: "[c#4,e4,f#4,a4,f#5,c#6,f#6]@15 ~",
})).s("gm_piano").gain(0.36)

// chords · electric guitar clean · "Chords Electric Guitar CH 7"
const electric_guitar_clean = note(`<
  ~@2 A B C D A B C D A B C E A B C E C F A G C F A G A B C D A B C E A B C E A B C D C F A G C F A G H I J A H I J K A
  G B L E A B L E A B C E A B C E C@2 L A C@2 A@2 M N A@2 M N L A M N L A M@2 O P Q R
>`.pickRestart({
  A: "~@4 [b3,g#4,b4]@2 ~ b3 [b3,g#4] ~ [b3,g#4,b4]@3 ~ [b3,g#4,b4]@2", // E
  B: "~@4 [c#4,f#4,a4]@2 ~ c#4 [c#4,f#4] ~ [c#4,f#4,a4]@3 ~ [c#4,f#4,a4]@2", // F#m F#5 F#m
  C: "~@4 [g#3,e4,g#4]@2 ~ g#3 [g#3,e4] ~ [g#3,e4,g#4]@3 ~ [g#3,e4,g#4]@2", // C#m
  D: "~@2 [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [c#4,e4,g#4]@4 [b3,d#4,f#4]@4", // C#m B
  E: "~@4 [g#3,e4,g#4]@2 ~ [g#3,e4,g#4] [c#4,e4,g#4]@4 [b3,d#4,f#4]@4", // C#m B
  F: "~@4 [g#3,e4,g#4]@2 ~ g#3 [g#3,e4,g#4] ~ [g#3,e4,g#4]@3 ~ [g#3,e4,g#4]@2", // C#m
  G: "~@4 [b3,g#4,b4]@2 ~ b3 [b3,g#4,b4] ~ [b3,g#4,b4]@3 ~ [b3,g#4,b4]@2", // E
  H: "~@4 [a3,f#4,a4]@2 ~ a3 [a3,f#4] ~ [a3,f#4,a4]@3 ~ [a3,f#4,a4]@2", // D
  I: "~@4 [d#4,a4,b4]@2 ~ d#4 [d#4,a4] ~ [d#4,a4,b4]@3 ~ [d#4,a4,b4]@2", // B7 D#dim B7
  J: "~@4 [a3,f#4,a4]@2 ~ [a3,f#4,a4] [f#3,a3,c#4]@4 [e4,g#4,b4]@4", // D F#m E
  K: "~@2 [f#3,d#4,f#4] ~ [f#3,d#4,f#4] ~ [f#3,d#4,f#4] ~ [b3,f4,g#4]@4 [a3,d#4,f#4]@4", // D#m Fdim D#dim
  L: "e4 ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~ [g#3,e4,g#4] ~", // C#m
  M: "~@4 [d#4,b4,d#5]@2 ~ d#4 [d#4,b4] ~ [d#4,b4,d#5]@3 ~ [d#4,b4,d#5]@2", // G#m
  N: "~@4 [d#4,b4,d#5]@2 ~ [d#4,b4,d#5] [b3,d#4,f#4]@4 [g#3,d#4,f#4]@4", // G#m B G#7
  O: "[a3,d#4,f#4]@4 [e4,g#4,b4]@4 [a3,e4,f#4] ~ [a3,e4,f#4] ~@3 [a3,e4,f#4] ~", // D#dim E F#m7
  P: "~@4 [a3,e4,f#4]@2 ~ a3 [a3,e4] ~ [a3,e4,f#4]@3 ~ [a3,e4,f#4]@2", // F#m7 A5 F#m7
  Q: "~@4 [e3,a3,c#4]@2 ~ [e3,a3] [e3,a3,c#4] ~ [e3,a3,c#4] ~@3 [e3,a3,c#4] ~", R: "[e3,a3,c#4]",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · electric guitar clean · "Chords Electric Guitar CH 7" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@2 A B C ~ A B C ~ A B C ~ A B C ~ C D A E C D A E A B C ~ A B C ~ A B C ~ A B C ~ C D A E C D A E B F ~ A B F ~@2 A
  E B G ~ A B G ~ A B C ~ A B C ~ C@2 G A C@2 A@2 H ~ A@2 H ~ G A H ~ G A H@2 ~ I ~@2
>`.pickRestart({
  A: "~@7 [g#4,b4] b4 ~@7", B: "~@7 [f#4,a4] a4 ~@7", C: "~@7 [e4,g#4] g#4 ~@7", D: "~@7 [e4,g#4] ~@8",
  E: "~@7 [g#4,b4] ~@8", F: "~@7 [a4,b4] b4 ~@7", G: "[g#3,g#4] ~@15", H: "~@7 [b4,d#5] d#5 ~@7",
  I: "~@7 [e4,f#4] f#4 ~@7", // Esus2
})).s("gm_electric_guitar_clean").gain(0.15)

// chords · string ensemble 2 · "Chords Str Sect 2 CH 6"
const string_ensemble_2 = note("<~@99 A@2>".pickRestart({
  A: "[[e4,c#5]@31 ~]/2", // C#m
})).s("gm_string_ensemble_2").gain(0.2)

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

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@8 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@3
>`.pickRestart({
  A: "~@2 x ~@10 x ~@2", B: "~@3 x!2 ~@11",
})).gain(0.26)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~ B@2 ~
>`.pickRestart({
  A: "~@8 x ~@5 x!2", B: "~@14 x!2",
})).gain(0.36)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B C@2 ~
>`.pickRestart({
  A: "~@3 x", B: "~@4 x!4", C: "~@12 x!2 ~@2",
})).gain(0.41)

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B C@2 D
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@8 x ~ x ~ x!3 ~", C: "x ~@3 x ~@3 x ~ x!3 ~@3", D: "x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
  ~@2 A ~@5 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@6 B@2 ~@2 A
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4",
})).gain(0.36)

stack(
  bass, piano, electric_guitar_clean, electric_guitar_clean_2, string_ensemble_2, kick, rim, snare, snare_soft, low_tom,
  hihat, mid_tom, open_hat, high_tom, ride
)

More by Men at Work