Strudelify
I'm Walking cover art

I'm Walking

I'm Walking

Fats Domino

KeyA majorTempo108 bpm
0:00/0:00
// I'm Walking — Domino Fats
// 108 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level. 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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@2 A B C@2 A B C@2 D@2 E F A B C@2 A B C@2 A B C@2 D G E F A B C@2 A B C@2 A B C@2 D@2 E F A B C@2 A B C@2 A B C@2 ~
>`.pickRestart({
  A: "a1@2 ~@4 c#2@3 ~@3 e2@3 ~@2 f#2@4 e2@2 ~", B: "d2@3 ~@3 f#2@3 ~@3 a2@3 ~@2 b2@4 a2@3",
  C: "a1@3 ~@3 c#2@3 ~@3 e2@3 ~@2 f#2@4 e2@2 ~", D: "d2 e2 d2 e2 a1 b1 a1 b1",
  E: "d2@3 e2@2 ~ d2@3 e2@2 ~ a1@3 b1@3 a1@3 b1@3", F: "e2@3 f#2@3 e2@3 f#2@3 e2@2 ~ d2@2 ~ c#2@2 ~ b1@2 ~",
  G: "d2@3 e2@3 d2@3 e2@3 a1@3 b1@3 a1@3 b1@2 ~",
})).s("gm_acoustic_bass").gain(0.3)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B C D E F C D G H I J K F C L M N C O P Q C R E S T U V Q C D M F C R M Q W O G X Y J Z F C O G Q W D E F C R AA@2
>`.pickRestart({
  A: "~@18 g#6 [e6,f#6] [b5,c#6,d6] [e5,f#5,g#5,a5] [a4,b4,c#5,d5] [d4,e4,f#4,g#4]", // Esus2 Bm F#m7 Dmaj7 E7
  B: "[a1,b3,c#4] ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] ~ [f#3,c#5,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@9 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A F#m7 A
  C: "d2 ~ d3 [d5,f#5,a5] ~ d3 f#2 ~ f#3 [d5,f#5,a5] ~ f#3 a2@2 a3 [d5,f#5,a5] ~ [b3,d5,f#5,a5] b2@2 ~ [d5,f#5,a5] ~ a3, ~@3 d2@2 ~@4 f#2@2 ~@4 a2@2 ~@3 b3@2 ~@2, ~@21 a2@2 ~", // D Bm7 D
  D: "a1 ~ a2 [c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [b4,e5,b5] ~ [f#3,b4,e5,b5] f#2@2 f#3 [b4,e5,b5] ~ e3, ~@3 a1@2 ~@4 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A E5 Esus2 E5
  E: "a1@2 a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#2,c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] ~ [f#3,c#5,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@15 e2@2 ~@4 e2@2 ~", // A F#m7 A
  F: "a1 ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] c#5 [f#3,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@9 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A F#m7 A
  G: "a1 ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#2,c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] c#5 [f#3,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@15 e2@2 ~@4 e2@2 ~", // A F#m7 A
  H: "d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] d2 ~ d3 [e2,d5,f#5,a5] d5 [e3,f#5,a5] a1 ~ a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5] a1 ~ a2 [c#5,e5,a5] c#5 [b2,e5,a5], ~@21 b1@2 ~", // D F#m7 A Esus4
  I: "d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] a1@2 a2 [b1,c#5,e5,a5] c#5 [b2,e5,a5] a1 ~ a2 [a1,b1,c#5,e5,a5] ~ [b2,c#5,e5,a5]", // D A Esus4 A
  J: "d2 ~ d3 [e2,d5,f#5,a5] d5 [e3,f#5,a5] d2 ~ d3 [d5,f#5,a5] ~ [e3,d5,f#5,a5] a1 ~ a2 [b1,c#5,e5,a5] c#5 [b2,e5,a5] a1 ~ a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5], ~@9 e2@2 ~@13", // D F#m7 D A Esus4 A
  K: "e2 ~ e3 [e5,g#5,b5] ~ [f#3,e5,g#5,b5] e2 ~ e3 [e5,g#5,b5] e5 [f#3,g#5,b5] e2 ~ e3 [d2,e5,g#5,b5] ~ [d3,e5,g#5,b5] c#2 ~ c#3 [b1,e5,g#5,b5] ~ [b2,e5,g#5,b5], ~@3 f#2@2 ~@4 f#2@2 ~@13", // E G#m7 E7 E
  L: "a1@2 a2 [c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [b4,e5,b5] b4 [f#3,e5,b5] f#2@2 f#3 [b4,e5,b5] ~ e3, ~@3 a1@2 ~@4 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A E5 Esus2 E5
  M: "a1 ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#2,c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] ~ [f#3,c#5,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@15 e2@2 ~@4 e2@2 ~", // A F#m7 A
  N: "a1 ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2@2 e3 [c#5,e5,a5] ~ [f#3,c#5,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@9 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A F#m7 A
  O: "a1@2 a2 [c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [b4,e5,b5] ~ [f#3,b4,e5,b5] f#2@2 f#3 [b4,e5,b5] ~ e3, ~@3 a1@2 ~@4 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A E5 Esus2 E5
  P: "a1@2 a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#2,c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] c#5 [f#3,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@15 e2@2 ~@4 e2@2 ~", // A F#m7 A
  Q: "a1 ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] ~ [f#3,c#5,e5,a5] f#2@2 f#3 [c#5,e5,a5] ~ e3, ~@9 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A F#m7 A
  R: "a1 ~ a2 [c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#5,e5,a5] ~ c#3 e2 ~ e3 [b4,e5,b5] b4 [f#3,e5,b5] f#2@2 f#3 [b4,e5,b5] ~ e3, ~@3 a1@2 ~@4 c#2@2 ~@4 e2@2 ~@4 e2@2 ~", // A E5 Esus2 E5
  S: "d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] a1 ~ a2 [b1,c#5,e5,a5] c#5 [b2,e5,a5] a1 ~ a2 [c#5,e5,a5] ~ [b2,c#5,e5,a5], ~@21 b1@2 ~", // D A Esus4 A
  T: "d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] a1@2 a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5] a1 ~ a2 [a1,b1,c#5,e5,a5] c#5 [b2,e5,a5]", // D A Esus4
  U: "d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] d2 ~ d3 [d5,f#5,a5] d5 [e3,f#5,a5] a1 ~ a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5] a1 ~ a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5], ~@9 e2@2 ~@13", // D F#m7 A
  V: "e2 ~ e3 [e5,g#5,b5] ~ [f#3,e5,g#5,b5] e2 ~@2 [e5,g#5,b5] ~ [f#3,e5,g#5,b5] e2 ~ e3 [d2,e5,g#5,b5] e5 [d3,g#5,b5] c#2 ~ c#3 [b1,e5,g#5,b5] ~ [b2,e5,g#5,b5], ~@3 f#2@2 ~@3 e3@2 ~@14, ~@9 f#2@2 ~@13", // E E7 G#dim E
  W: "d2 ~ d3 [d5,f#5,a5] ~ d3 f#2 ~ f#3 [d5,f#5,a5] ~ f#3 a2@2 a3 [d5,f#5,a5] d5 [b3,f#5,a5] b2@2 ~ [d5,f#5,a5] ~ a3, ~@3 d2@2 ~@4 f#2@2 ~@4 a2@2 ~@3 b3@2 ~@2, ~@21 a2@2 ~", // D B7 D
  X: "d2 ~ d3 [e2,d5,f#5,a5] d5 [e3,f#5,a5] d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] a1 ~ a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5] a1 ~ a2 [c#5,e5,a5] c#5 [b2,e5,a5], ~@21 b1@2 ~", // D F#m7 D A Esus4
  Y: "d2 ~ d3 [e2,d5,f#5,a5] ~ [e3,d5,f#5,a5] d2 ~ d3 [e2,d5,f#5,a5] d5 [e3,f#5,a5] a1@2 a2 [b1,c#5,e5,a5] ~ [b2,c#5,e5,a5] a1 ~ a2 [a1,b1,c#5,e5,a5] ~ [b2,c#5,e5,a5]", // D F#m7 A
  Z: "e2 ~ e3 [e5,g#5,b5] ~ [f#3,e5,g#5,b5] e2 ~ e3 [e5,g#5,b5] e5 [f#3,g#5,b5] e2 ~ e3 [d2,e5,g#5,b5] ~ [d3,e5,g#5,b5] c#2 ~ c#3 [b1,e5,g#5,b5] e5 [b2,g#5,b5], ~@3 f#2@2 ~@4 f#2@2 ~@13", // E G#m7 E7 E
  AA: "[a1 ~ a2 [a1,c#5,e5,a5] ~ a2 c#2 ~ c#3 [c#2,c#5,e5,a5] ~ c#3 e2 ~ e3 [c#5,e5,a5] ~ [f#3,c#5,e5,a5] f#2@2 f#3 [e2,a5]@6 ~@21, ~@15 e2@2 ~@4 [c#5,e5] ~@26]/2", // A F#m7 A5 C#m
})).s("gm_piano").gain(0.25)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@2 A B C A@2 B C A D E@2 F A B C A@2 B C A@2 B C A D E@2 G A B C A@2 B C A@2 B C A D E@2 F A B C A@2 B C A@2 B C A ~
>`.pickRestart({
  A: "a2@2 ~@4 c#3@2 ~@4 e3@2 ~@3 f#3@4 e3@2 ~", B: "d3@2 ~@4 f#3@2 ~@4 a3@2 ~@3 b3@4 a3@2 ~",
  C: "a2@2 ~@4 c#3@3 ~@3 e3@3 ~@2 f#3@4 e3@2 ~",
  D: "d3@2 ~ e3@2 ~ d3@2 ~ e3@2 ~ a2@2 ~ b2@2 ~ a2@2 ~ b2 ~ b2, ~@2 d3@2 ~ e3@2 ~ d3@2 ~ e3@2 ~ a2@2 ~ b2@2 ~ a2@2 ~@2",
  E: "[d3@2 ~ e3@2 ~ d3@2 ~ e3@2 ~ a2@2 ~ b2@2 ~ a2@2 ~ b2@2 ~ d3@2 ~ e3@2 ~ d3@2 ~ e3@2 ~ a2@2 ~ b2@2 ~ a2@2 ~ b2 ~ b2, ~@2 d3@2 ~ e3@2 ~ d3@2 ~ e3@2 ~ a2@2 ~ b2@2 ~ a2@2 ~ b2@2 ~ d3@2 ~ e3@2 ~ d3@2 ~ e3@2 ~ a2@2 ~ b2@2 ~ a2@2 ~@2]/2",
  F: "e3 ~ e3 f#3@2 ~ e3@2 ~ f#3@2 ~ e3@2 ~ d3@2 ~ c#3 ~ c#3 b2 ~ b2, ~@5 f#3@2 ~ e3@2 ~ f#3@2 ~ e3@2 ~ d3@2 ~@5",
  G: "e3 ~ e3 f#3@2 ~ e3@2 ~ f#3@2 ~ e3@2 ~ d3@2 ~ c#3 ~@2 b2 ~ b2, ~@5 f#3@2 ~ e3@2 ~ f#3@2 ~ e3@2 ~ d3@2 ~ c#3@2 ~@2",
})).s("gm_electric_guitar_clean").gain(0.3)

// drums · kick
const kick = s("bd").struct("<[x ~@5 x ~@5 x ~@4 x!2 ~@2 x ~@2] [x ~@4 x!2 ~@4 x!2 ~@2 x ~@2 x ~@2 x ~@2] [x!4]!56 ~>")
  .gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!17
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!7]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!31
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!7]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!7
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@2]
  ~
>`).gain(0.3)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x ~ x ~ x]!58 ~>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@3 A ~@27 A ~@3 A ~@4>".pickRestart({
  A: "x",
})).gain(0.4)

stack(bass, piano, electric_guitar_clean, kick, snare, clap, crash)

More by Fats Domino