Strudelify
Walk Like A Man cover art

Big Girls Don't Cry

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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "Track 1"
const piano = note("<~@2 A@8 B@4 C@7 D E F G H I J K L M A@5 N O C@7 D E F G H I J K L M A@19 P>".pickRestart({
  A: "[bb2,f4,bb4,d5]@5 ~ [bb2,f4,bb4,d5] ~ [eb2,g4,bb4,eb5]@6 ~@2", // Bb Eb
  B: "[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
  C: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4] ~@3", D: "~@4 bb2@4 c3@4 d3@3 ~",
  E: "[g4,bb4,eb5] ~@3 bb4@2 g4@2 c5@2 ab4@2 eb4@2 ab4@2", F: "[eb4,bb4]@4 g4@2 eb4@2 ab4@2 eb4@2 c4@2 eb4 ~, g4 ~@15",
  G: "[bb3,eb4,g4]@4 [bb3,g4]@2 eb4 ~ bb4 ~ d4@2 f4@2 bb4 ~", // Eb
  H: "[ab4,c5]@2 ~@2 ab4@2 c5 ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3, eb4@3 ~@5", // Ab Bb
  I: "[g4,bb4] ~@3 [g4,bb4] ~ g4 ~@3 ab4@2 eb4@2 ab4 ~, eb5@2 eb5 ~ c5@3 ~", // Gm
  J: "[eb4,g4,bb4]@3 ~ [g4,bb4] ~@3 f4@2 ~@2 f4@2 bb4 ~, ~@2 eb4 ~ bb4@2 ~@2, ~@8 d4 ~ d4@5 ~", // Eb Gm
  K: "[bb3,eb4,g4]@2 ~@2 [eb4,g4]@2 bb3 ~ [d4,f4,bb4]@2 ~@2 [d4,f4,bb4]@2 ~@2, ~@4 bb3 ~@11", // Eb Bb
  L: "[ab3,eb4]@4 [ab3,c4] ~@3 [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~@3, c4 ~ eb4 ~@5", // Ab5 Ab Bb
  M: "~@6 [bb2,f4,bb4,d5] ~ [eb2,g4,bb4,eb5]@6 ~@2", N: "bb2@3 ~ bb2 ~ bb2 ~ bb2@4 bb2 ~ bb2 ~, [f4,bb4,d5]",
  O: "f2@3 ~ f2 ~ f2 ~ f2@4 f2 ~ f2 ~, [f4,a4,c5]", P: "[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 B D E ~ F ~@16 A B C@3 B D F ~@16 A B C@3 B C@3 B C@3 B C@3 B G@3
>`.pickRestart({
  A: "~ f4 f5 d5", B: "c5@3 bb4@4 c5@5 d5@4", C: "[f5@33 ~@3 f4@4 f5@4 d5@4]/3", D: "bb4@15 ~", E: "bb4@7 ~ bb4@7 ~",
  F: "a4@15 ~", G: "[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@8 B ~@3 C@7 D E F G H I J K L M A@5 B ~ C@7 D E F G H I J K L M A@19 B
>`.pickRestart({
  A: "[f3,bb3,d4] ~@5 [f3,bb3,d4] ~ [g3,bb3,eb4] ~@7", B: "[f3,bb3,d4] ~@15", C: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4] ~@3",
  D: "~@4 bb2@4 c3@4 d3@3 ~", E: "~@4 [g4,bb4,eb5] ~@7 [eb4,ab4,c5] ~@3", F: "~@4 [d4,f4,bb4] ~@7 [c4,eb4,ab4] ~@3",
  G: "~@4 [eb4,g4,bb4] ~@7 [d4,f4,bb4] ~@3", H: "~@4 [e4,ab4,c5] ~@7 [f4,bb4,d5] ~@3",
  I: "~@4 [g4,bb4,eb5] ~@7 [eb4,ab4,c5]@4", J: "~@4 [eb4,ab4,bb4] ~@7 [d4,f4,bb4] ~@3",
  K: "~@4 [eb4,g4,bb4] ~@7 [f4,bb4,d5] ~@3", L: "~@2 [c4,e4,ab4]@3 ~ [bb3,d4,f4]@2",
  M: "~@6 [f3,bb3,d4] ~ [g3,bb3,eb4] ~@7", // Bb Eb
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.3)

// bass · electric bass pick · "Track 9"
const bass = note("<~@2 A@8 B@2 C D E@7 F G H I J K L I M A@6 B ~ E@7 F G H I J K L I M A@20 ~>".pickRestart({
  A: "bb1@5 ~ bb1@2 eb2@8", B: "bb1@5 ~ bb1 ~ bb1@7 ~", C: "bb2@2 ~@2 bb2 ~ bb2 ~ bb2@3 ~ bb2 ~ bb2 ~",
  D: "a2@3 ~ a2 ~ a2 ~ a2@3 ~ a2 ~ a2 ~", E: "bb1@5 ~ bb1 ~ f1@5 ~ f1 ~", F: "bb1 ~@7", G: "eb2@2 eb2 bb1 c2@4",
  H: "bb1@2 bb1!2 ab1@4", I: "g1 bb1", J: "c2@3 c2 d2@4", K: "eb2 c2", L: "bb1@3 ~ f1@4", M: "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