Strudelify
Walk Of Life cover art

1985 · Brothers In Arms

Walk Of Life

Dire Straits

KeyE majorTempo170 bpm
0:00/0:00
// Walk Of Life — Dire Straits
// 170 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/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.

// other · drawbar organ · "Organ"
const drawbar_organ = note(`<
  A@4 B@2 C D E F G H E I G J E F G H E I G J E F G H E I G J E I G H E I G J ~@24 E I G H E I G J ~@24 E I G H E I G J
  E I G H E I G J ~@24 E I G H E I G J E I G H E I G J E I G H E I G J E I G ~
>`.pickRestart({
  A: "[g#4@3 f#4 e4@3 g#4, e5, [b4,g#5] [c#5,a5]]/4", B: "[f#4@3 d#4, [b4,d#5,f#5]]/2", C: "e4@3 g#4, [c#5,e5,a5]",
  D: "[f#4,b4,d#5], f#5@7 ~", E: "[b5,b6]@5 ~ [b5,b6]@2 ~@8",
  F: "~@2 [f#5,f#6] ~ [g#5,g#6] ~ [b5,b6]@3 ~ [g#5,g#6]@2 [f#5,f#6]@2 ~@2", G: "[e5,e6]@5 ~ [e5,e6]@2 ~@8",
  H: "~@6 [f#5,f#6] g#6, ~@14 g#5 ~", I: "~@2 f#6@2 [g#5,g#6] ~ [b5,b6]@3 ~ g#5@2 [f#5,f#6]@2 ~@2, ~@2 f#5 ~@7 g#6 ~@5",
  J: "~@4 [f#5,f#6]@2 [g#5,g#6] ~ [b5,b6]@2 [g#5,g#6]@2 [f#5,f#6] ~ [e5,e6] ~", // F# G# B G# F# E
})).s("gm_drawbar_organ").gain(0.36).pan(0.1)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  ~@40 A@8 B@2 C@2 B@2 D@2 E@6 F G ~@8 A@8 B@2 C@2 B@2 D@2 H@6 F G ~@16 A@8 B@2 C@2 B@2 D@2 E@6 F G ~@28
>`.pickRestart({
  A: "[b5@59 ~ a5@4 g#5@48 b5@11 ~ g#5@4, e4, [g#4,b4]@63 ~]/8", B: "[[c#5,a5], a4@15 ~]/2",
  C: "[b5@27 ~ g#5@4, [g#4,b4]@15 ~]/2", D: "[[g#4,b4]@15 ~, b5@15 ~@17]/2",
  E: "[[e4,g#4,b5,e6]@15 ~ [d#4,f#4,b5,d#6]@15 ~ [g#4,b5]@14 ~@2 [a4,c#5,c#6]@13 ~@3 b5@7 ~ [b5,e6] ~ [b5,e6] ~ [b5,e6]@3 ~ [d#4,f#4,b5,d#6]@15 ~, b4@47 ~@17 b4@31 ~, ~@16 e4@23 ~@9, ~@16 e6@19 ~@13, ~@64 g#4@15 ~@17]/6", // E B G#m A E5 B
  F: "~ e4@14 ~, [a4,c#5,b5,e6]@7 ~", G: "d#6@8 b5@4 g#5@3 ~, [f#4,b4]@7 ~, b5@3 ~@5, d#4@3 ~@13",
  H: "[[e4,g#4,b5,e6]@15 ~ [d#4,f#4,b5,d#6]@15 ~ [g#4,b5]@14 ~@2 [a4,c#5,c#6]@13 ~@3 b5@7 ~ [b5,e6] ~ [b5,e6] ~ [b5,e6]@3 ~ [d#4,f#4,b5,d#6]@15 ~, b4@47 ~@17 b4@31 ~, ~@16 f4 ~@15 e4@46 ~@18, ~@16 e6@19 ~@13, ~@64 g#4@15 ~@17]/6", // E B G#m A E5 B
})).s("gm_rock_organ").gain(0.36).pan(0.7)

// chords · percussive organ · "Organ"
const percussive_organ = note(`<
  ~@8 A@4 B@2 C D E@2 F@2 B@2 G D E@2 H@2 B@2 C D E@2 H@2 B@2 C D I@8 J@2 K@2 L@4 M N M O@2 N P N Q@2 R@2 B@2 C S I@8
  J@2 K@2 L@4 M N M O@2 N P N Q@2 R@2 B@2 C S Q@2 R@2 B@2 C S I@8 J@2 K@2 L@4 M N M O@2 N P N Q@2 R@2 B@2 C S Q@2 R@2
  B@2 C S Q@2 R@2 B@2 C S Q@2 T M
>`.pickRestart({
  A: "[g#4@3 f#4 e4@3 g#4, e5@63 ~, [b4,g#5]@31 ~ [c#5,a5]@31 ~]/4", B: "[f#4@3 d#4, [b4,d#5,f#5]@15 ~]/2",
  C: "e4@11 ~ g#4@4, [c#5,e5,a5]@15 ~", D: "[f#4,b4,d#5,f#5]", E: "[g#4@3 f#4, [b4,e5,g#5]@31 ~]/2",
  F: "[e4@3 g#4, [c#5,e5,a5]@31 ~]/2", G: "e4@3 g#4, [c#5,e5,a5]@15 ~", H: "[e4@27 ~ g#4@4, [c#5,e5,a5]@31 ~]/2",
  I: "[[g#4,b4]@63 ~, e5]/8", J: "[[a4,c#5]@31 ~]/2", K: "[[g#4,b4]@15 ~]/2",
  L: "[a4@31 ~ [g#4,b4]@30 ~@2, e5@63 ~, c#5@29 ~@35]/4", M: "[g#4,b4,e5]@7 ~", N: "[b4,d#5,f#5]@15 ~",
  O: "[[a4,c#5]@7 ~ [g#4,b4]@7 ~, e5@31 ~]/2", P: "[a4,c#5,e5]@7 ~", Q: "[~@3 f#4, e5@15 ~, g#4@3 ~, ~ [b4,g#5]@15]/2",
  R: "[e4@23 ~ g#4@8, [c#5,e5,a5]@15 ~]/2", S: "[f#4,b4,d#5,f#5]@15 ~", T: "[a4,c#5,e5]@7 ~ [b4,d#5,f#5]@6 ~@2",
})).s("gm_percussive_organ").gain(0.36).pan(0.2)

// other · electric guitar clean · "Guitar"
const electric_guitar_clean = note("<~@55 A ~@4 B C ~@25 A ~@4 B C ~@33 A ~@4 B C ~@30>".pickRestart({
  A: "e4@4 a4@2 e4@3 ~ c#4@2 b3@2 a3@2", B: "~@4 e2 ~ e2 ~ b2 ~ b2 ~@2 g#2@3", C: "~ b2@3 ~@12",
})).s("gm_electric_guitar_clean").gain(0.72).pan(0.1)

// chords · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  ~@24 A B C@2 D@2 C D A B E C D@2 C D A B@7 F G B@2 C@2 H@2 B D B C B D I D A B C@2 D@2 C D A B@7 F G B@2 C@2 H@2 B D B
  C B D I D A B C@2 D@2 C D A B C@2 D@2 C D A B@7 F G B@2 C@2 H@2 B D B C B D I D A B C@2 D@2 C D A B C@2 D@2 C D A B
  C@2 D@2 C D A B J K
>`.pickRestart({
  A: "~@2 [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~", // E5 C#m E5 C#m E5
  B: "[e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~", // E5 C#m E5 C#m E5
  C: "[a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~", // A5 D A5 D A5
  D: "[b2,f#3] ~ [b2,f#3] ~ [b2,g#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,g#3] ~ [b2,f#3] ~", // B5 E B5 E B5
  E: "[a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3,f#3] ~ [a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~", // A5 D F#m7 A5 D A5
  F: "[a2,b2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~", // Asus2 A5 D A5 D A5
  G: "[a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3,f#3] ~", // A5 D A5 D F#m7
  H: "[e2@19 ~@13, b2@13 ~@19]/2",
  I: "[a2,f#3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~", // D A5 D A5 D A5
  J: "e3 ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,g#3] ~ [b2,f#3] ~", K: "[b2,f#3] ~ [b2,f#3]@2 ~@12",
})).s("gm_distortion_guitar").gain(0.4).pan(0.6)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@24 A B C D E F G H A I C D J K C K A L A M A L A N O P A L O Q R ~ A S A T U V W X A I C D J K C K A L A M A L A N O
  P A L O Q R ~ A S A T U V W X A I C D J K C K A I C D J K C K A L A M A L A N O P A L O Q R ~ A S A T U V W X A I C D
  J K C K A I C D J K C K A I C D J K C K ~@4
>`.pickRestart({
  A: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5", B: "[b3,e4,g#4]@2 ~@4 [b3,e4,g#4]@7 ~@3",
  C: "~@4 [a3,c#4,e4] ~@5 [a3,c#4,e4]@2 ~@4", D: "[a3,c#4,e4]@3 ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~",
  E: "~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4] ~@5", F: "[b3,d#4,f#4]@3 ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@4 ~@2",
  G: "~@4 [a3,c#4,e4]@2 ~@4 [a3,c#4,e4]@2 ~@2 d#4 ~", H: "[b3,d#4,f#4]@4 ~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@6",
  I: "[b3,e4,g#4]@3 ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4]@4 ~@2", J: "~@4 [b3,d#4,f#4] ~@5 [b3,d#4,f#4]@2 ~@4",
  K: "[b3,d#4,f#4]@4 ~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@5 ~", L: "[b3,e4,g#4]@4 ~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4]@5 ~",
  M: "g#4 ~ g#4@2 ~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4]@5 ~, [b3,e4] ~@3", // E E5
  N: "[b3,e4,g#4] ~@5 [b3,e4,g#4] ~@3 [b3,e4,g#4]@5 ~", O: "~@4 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5",
  P: "[a3,c#4,e4] ~@5 [a3,c#4,e4] ~@3 [a3,c#4,e4]@6", Q: "[a3,c#4,e4] ~@5 [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 ~@4",
  R: "[b3,e4,g#4]@15 ~", S: "[b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@6",
  T: "[a3,c#4,e4] ~@5 [a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~", U: "~@4 [b3,e4,g#4] ~@5 [b3,e4]@4 ~@2, ~@5 g#4 ~@2",
  V: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@5 ~ [b3,d#4,f#4] ~@5", W: "[a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~ [a3,c#4,e4] ~@3 d#4 ~",
  X: "[b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@4 ~@2", // B
})).s("gm_overdriven_guitar").gain(0.36).pan(0.3)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@16 A@2 B@2 C@2 D E F G H I J K I L F G M I J K I L F@7 G M N F G M N O P G K G I G K I K F G M I J K I L F@7 G M N F
  G H N O P G K G I G K I Q F G M I J K I L F G M I J K I L F@7 G M N F G M N O P G K G I G K I K F G M I J K I L F G M
  I J K I L F G M I J K I L F G R S
>`.pickRestart({
  A: "[e2@27 ~ b1@4]/2", B: "[a1@31 ~]/2", C: "[b1@31 ~]/2", D: "a1@15 ~", E: "b1@7 ~", F: "e2@5 ~ e2 ~ b1@7 ~",
  G: "e2@5 ~ e2 ~ b1@4 e2@4", H: "a1@5 ~ a1 ~ e1@8", I: "a1@5 ~ a1 ~ e1@4 a1@3 ~", J: "b1@4 ~@2 b1 ~ f#1@7 ~",
  K: "b1@4 ~@2 b1 ~ f#1@4 b1@3 ~", L: "b1@4 ~@2 c#2@4 ~@2 d#2@3 ~", M: "a1@5 ~ a1@2 e1@7 ~",
  N: "a1@5 ~ a1 ~ e1@4 a1@2 ~@2", O: "e2", P: "e2@7 ~", Q: "b1@4 ~@2 b1@2 f#1@3 ~ b1@2 ~@2",
  R: "a1@5 ~ a1 ~ b1@3 ~ c#2@3 ~", S: "e2@3 ~",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · pizzicato strings · "Strings"
const pizzicato_strings = note(`<
  ~@8 A B C D A B C E F G H I J K H L F G H I J K H L F G M I J K H L ~@24 F G M I J K H L ~@24 F G M I J K H L F G M I
  J K H L ~@24 F G M I J K H L F G M I J K H L F G M I J K H L F G N ~
>`.pickRestart({
  A: "b5@2 ~ b5 ~@4", B: "~@2 f#5 ~ g#5 ~ b5@3 ~ g#5@2 f#5@2 ~@2", C: "e5@5 ~ e5@2 ~@8", D: "~@6 f#5 g#5",
  E: "~@4 f#5@2 g#5 ~ b5@2 g#5@2 f#5 ~ e5@2", F: "[e5,b5]@5 ~ [e5,b5]@2 ~@8",
  G: "~@2 b4@2 [c#5,g#5] ~ [e5,b5]@3 ~ [c#5,g#5]@2 [b4,f#5]@2 ~@2, ~@2 f#5 ~@13", H: "[a4,e5]@5 ~ [a4,e5]@2 ~@8",
  I: "~@6 [c#5,f#5] g#5, ~@14 d#5 ~", J: "[f#5,b5]@5 ~ [f#5,b5]@2 ~@8",
  K: "~@2 [c#5,f#5] ~ [d#5,g#5] ~ [f#5,b5]@3 ~@3 f#5@2 ~@2, ~@5 [d#5,g#5] ~@2, ~@11 c#5@2 ~@3", // F#5 G#5 B5 G#5
  L: "~@4 [c#5,f#5]@2 [d#5,g#5] ~ [f#5,b5]@2 [d#5,g#5]@2 [c#5,f#5] ~ [a4,e5] ~", M: "[a4,e5]@5 ~ [a4,e5]@3 ~@7",
  N: "[a4,e5]@5 ~@11", // A5
})).s("gm_pizzicato_strings").gain(0.28).pan(0.8)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note("<~@8 A@2 B@2 C@2 D E F@2 G@2 C@2 D E ~@140>".pickRestart({
  A: "[[e3,g#3,b3]@27 ~@5]/2", B: "[[e3,a3,c#4]@13 ~@3]/2", C: "[[d#3,f#3,b3]@27 ~@5]/2", D: "[e3,a3,c#4]@3 ~",
  E: "[d#3,f#3,b3]@7 ~", F: "[[e3,g#3,b3]@29 ~@3]/2", G: "[[e3,a3,c#4]@27 ~@5]/2",
})).s("gm_acoustic_guitar_steel").gain(0.71).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@20 A@4 B@30 A@2 B@30 A@2 B@38 A@2 B@34 C D>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~@9 x ~", D: "x",
})).gain(0.64)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@162 [~@6 x!2] ~>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@162 [~@4 x!2 ~@2] ~>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@39 A ~@31 A ~@15 A ~@23 A ~@26 B>".pickRestart({
  A: "x", B: "x ~@4 x ~@2",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@24 A@15 ~ A@7 ~ A@6 ~@2 A@3 ~ A@3 ~ A@7 ~ A@7 ~ A@6 ~@2 A@3 ~ A@3 ~ A@7 ~ A@7 ~ A@7 ~ A@6 ~@2 A@3 ~ A@3 ~ A@7 ~ A@7
  ~ A@7 ~ A@2 ~@2
>`.pickRestart({
  A: "~ x",
})).gain(0.64)

stack(
  drawbar_organ, rock_organ, percussive_organ, electric_guitar_clean, distortion_guitar, overdriven_guitar, bass,
  pizzicato_strings, acoustic_guitar_steel, kick, snare, hihat, mid_tom, high_tom, crash, tambourine
)

More by Dire Straits