Strudelify

Walk Like A Man

The Four Seasons

KeyB♭ majorTempo120 bpm
0:00/0:00
// Walk Like A Man — The Four Seasons
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level. 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.

// chords · piano · "Track 1"
const piano = note(`<
  ~@2 A B@2 A B C A B D@4 E F@6 G H I J K L M N O P A B C A B Q R E F@6 G H I J K L M N O P A B C B A B C B A B C B A B
  C B A B C S
>`.pickRestart({
  A: "[bb2,f4,bb4,d5]@5 ~ [bb2,f4,bb4,d5] ~ [eb2,g4,bb4,eb5]@5 ~@3", // Bb Eb
  B: "[bb2,f4,bb4,d5]@5 ~ [bb2,f4,bb4,d5] ~ [eb2,g4,bb4,eb5]@6 ~@2", // Bb Eb
  C: "[bb2,f4,bb4,d5]@5 bb2 [f4,bb4,d5] ~ [eb2,g4,bb4,eb5]@6 ~@2", // Bb Eb
  D: "[bb2@3 ~ bb2 ~ bb2 ~ bb2@4 bb2 ~ bb2 ~ bb2@5 ~ bb2 ~ bb2@4 bb2 ~ bb2 ~ bb2@5 ~ bb2 ~ bb2@4 bb2 ~ bb2 ~ a2@4 a2 ~ a2 ~ a2@3 ~ a2 ~ a2 ~, [f4,bb4,d5]@63 ~]/4", // Bb
  E: "~@4 [d4,f4] ~@7 [d4,f4,bb4] ~@3, ~@2 bb4 ~@5", F: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4] ~@3",
  G: "~@4 bb2@4 c3@4 d3@3 ~", H: "[g4,bb4,eb5] ~@3 bb4@2 g4@2 c5@2 ab4@2 eb4@2 ab4@2",
  I: "[eb4,bb4]@4 g4@2 eb4@2 ab4@2 eb4@2 c4@2 eb4 ~, g4 ~@15", // Eb5
  J: "[bb3,eb4,g4]@4 [bb3,g4]@2 eb4 ~ bb4 ~ d4@2 f4@2 bb4 ~", // Eb
  K: "[ab4,c5]@2 ~@2 ab4@2 c5 ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3, eb4@3 ~@5", // Ab Bb
  L: "[g4,bb4] ~@3 [g4,bb4] ~ g4 ~@3 ab4@2 eb4@2 ab4 ~, eb5@2 eb5 ~ c5@3 ~", // Gm
  M: "[eb4,g4,bb4]@3 ~ [g4,bb4] ~@3 f4@2 ~@2 f4@2 bb4 ~, ~@2 eb4 ~ bb4@2 ~@2, ~@8 d4 ~ d4@5 ~", // Eb Gm
  N: "[bb3,eb4,g4]@2 ~@2 [eb4,g4]@2 bb3 ~ [d4,f4,bb4]@2 ~@2 [d4,f4,bb4]@2 ~@2, ~@4 bb3 ~@11", // Eb Bb
  O: "[ab3,eb4]@4 [ab3,c4] ~@3 [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~@3, c4 ~ eb4 ~@5", // Ab5 Ab Bb
  P: "~@6 [bb2,f4,bb4,d5] ~ [eb2,g4,bb4,eb5]@6 ~@2", Q: "bb2@3 ~ bb2 ~ bb2 ~ bb2@4 bb2 ~ bb2 ~, [f4,bb4,d5]",
  R: "f2@3 ~ f2 ~ f2 ~ f2@4 f2 ~ f2 ~, [f4,a4,c5]", S: "[bb2,f4,bb4,d5]@5 ~@11",
})).s("gm_piano").gain(0.23).pan(0)

// other · percussive organ · "Track 5"
const percussive_organ = note("<~@14 A B C D E F G H ~@16 A B C D E F G H ~@29>".pickRestart({
  A: "d5@4 d5@2 bb4@2 c5@2 bb4@2 ~@2 c5 ~", B: "d5 ~ g5@2 f5 ~ d5@2 c5@2 bb4@2 ~@2 c5@2", C: "d5 ~ d5 bb4 c5 bb4 c5!2",
  D: "d5 ~@6 bb4", E: "d5@2 ~@2 d5 ~ bb4 ~ c5 ~ bb4@3 ~ c5 ~", F: "d5@2 g5@2 f5@2 d5@2 c5@2 bb4@5 ~",
  G: "d5@3 ~ d5@2 bb4@2 c5@2 bb4@2 bb4@2 bb4 ~", H: "bb4 ~@15",
})).s("gm_percussive_organ").gain(0.37).pan(0.2)

// other · synth strings 1 · "Track 7"
const synth_strings_1 = note(`<
  ~@4 A B C@3 D E F ~ G ~@16 A B C@3 D E H ~@16 A B I@3 B I@3 B I@3 B I@3 B J@3
>`.pickRestart({
  A: "~ f4 f5 d5", B: "c5@3 bb4@4 c5@5 d5@4", C: "[f5@33 ~@3 f4@3 f5@5 d5@4]/3", D: "c5@3 bb4@4 c5@4 ~ d5@4",
  E: "bb4@15 ~", F: "bb4@7 ~ bb4@7 ~", G: "a4@15 ~", H: "a4", I: "[f5@33 ~@3 f4@4 f5@4 d5@4]/3", J: "[f5@11 ~@5]/3",
})).s("gm_synth_strings_1").gain(0.29).pan(0.4)

// chords · electric guitar clean · "Track 8"
const electric_guitar_clean = note(`<
  ~@2 A@7 B C ~@3 D@7 E F G H I J K L M N A@4 B C ~ D@7 E F G H I J K L M N A@19 O
>`.pickRestart({
  A: "[f3,bb3,d4] ~@5 [f3,bb3,d4] ~ [g3,bb3,eb4] ~@7", B: "[f3,bb3,d4] ~@5 [f3,bb3,d4] ~ [g3,bb3,eb4] ~@6 bb3",
  C: "[f3,d4] ~@15", D: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4] ~@3", E: "~@4 bb2@4 c3@4 d3@3 ~",
  F: "~@4 [g4,bb4,eb5] ~@7 [eb4,ab4,c5] ~@3", G: "~@4 [d4,f4,bb4] ~@7 [c4,eb4,ab4] ~@3",
  H: "~@4 [eb4,g4,bb4] ~@7 [d4,f4,bb4] ~@3", I: "~@4 [e4,ab4,c5] ~@7 [f4,bb4,d5] ~@3",
  J: "~@4 [g4,bb4,eb5] ~@7 [eb4,ab4,c5]@4", K: "~@4 [eb4,ab4,bb4] ~@7 [d4,f4,bb4] ~@3",
  L: "~@4 [eb4,g4,bb4] ~@7 [f4,bb4,d5] ~@3", M: "~@2 [c4,e4,ab4]@3 ~ [bb3,d4,f4]@2",
  N: "~@6 [f3,bb3,d4] ~ [g3,bb3,eb4] ~@7", O: "[f3,bb3,d4] ~@15",
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.3)

// bass · electric bass pick · "Track 9"
const bass = note(`<
  ~@2 A@4 B A@3 C@2 D E F G@3 H G@2 I J K L M N O L P A@2 B A@3 C ~ F G@3 H G@2 I J K L M N O L P A@2 B A@3 B A@3 B A@3
  B A@3 B A ~
>`.pickRestart({
  A: "bb1@5 ~ bb1@2 eb2@8", B: "bb1@3 bb1 eb2@4", C: "bb1@5 ~ bb1 ~ bb1@7 ~",
  D: "bb2@2 ~@2 bb2 ~ bb2 ~ bb2@3 ~ bb2 ~ bb2 ~", E: "a2@3 ~ a2 ~ a2 ~ a2@3 ~ a2 ~ a2 ~",
  F: "bb1@4 ~@2 bb1 ~ f1@5 ~ f1 ~", G: "bb1@5 ~ bb1 ~ f1@5 ~ f1 ~", H: "bb1@5 ~ bb1 ~ f1@4 ~@2 f1 ~", I: "bb1 ~@7",
  J: "eb2@2 eb2 bb1 c2@4", K: "bb1@2 bb1!2 ab1@4", L: "g1 bb1", M: "c2@3 c2 d2@4", N: "eb2 c2", O: "bb1@3 ~ f1@4",
  P: "eb1 f1",
})).s("gm_electric_bass_pick").gain(0.27).pan(0.4)

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

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

// drums · clap
const clap = s("cp").struct("<~@2 A@19 B C@3 B C@3 B A@15 B C@3 B C@3 B A@20 ~>".pickRestart({
  A: "x ~@2 x!2 ~ x ~", B: "x", C: "x!4",
})).gain(0.18)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@2 A@19 B ~@3 B ~@3 B A@15 B ~@3 B ~@3 B A@20 ~>".pickRestart({
  A: "x!8", B: "x",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<A@2 B@20 ~@3 B ~@3 B@17 ~@3 B ~@3 B@21 ~>".pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.18)

// drums · high tom
const high_tom = s("ht").struct("<[x!13 ~@3]!2 ~@73>").gain(0.11)

stack(
  piano, percussive_organ, synth_strings_1, electric_guitar_clean, bass, kick, snare, clap, pedal_hat, mid_tom, high_tom
)

More by The Four Seasons