Strudelify

Waiting In Vain

Bob Marley

KeyG majorTempo84 bpm
0:00/0:00
// Waiting In Vain — Marley Bob
// 84 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 7 "Mute Guitar" named as a guitar, played on electric guitar muted (its electric bass pick patch is not one)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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"
const bass = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D C E A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B F
>`.pickRestart({
  A: "g1 ~@2 g1 ~ a1 g1 ~@3 g1 ~ a1 g1 ~@2", B: "c2 ~@2 c2 ~ d2 c2 ~@3 c2 ~ d2 c2 ~ e1", C: "c2@3 d2@5",
  D: "b1@6 a1@7 ~ a1 b1", E: "b1@6 ~@2 b1 ~@7, ~@3 a1@4 ~", F: "g1",
})).s("gm_fretless_bass").gain(0.43)

// chords · percussive organ · "Chords"
const percussive_organ = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D C E A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@2 [d4,f#4,g4,b4] ~@3 [d4,f#4,g4,b4] ~@3 [d4,f#4,g4,b4] ~@3 [d4,f#4,g4,b4] ~", // Gmaj7
  B: "~@2 [c4,e4,g4,b4] ~@3 [c4,e4,g4,b4] ~@3 [c4,e4,g4,b4] ~@3 [c4,e4,g4,b4] ~", C: "[c4,e4,g4]@5 ~ [d4,f#4,a4]@9 ~",
  D: "[b3,d4,f#4]@5 ~ [a3,c4,e4]@9 ~", E: "[b3,d4,f#4]@5 ~ [a3,c4,e4]@7 ~@3",
})).s("gm_percussive_organ").gain(0.57)

// other · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@3 A ~@21 B C B C ~@18 D@3 ~@9 B ~ B ~ B ~ B ~ E F G H I J K L M N O L P L M N Q ~
>`.pickRestart({
  A: "[g3,b3,c4,e4]@2 ~ [g3,b3,c4,e4] ~@2 [g3,b3,c4,e4]@10", B: "~@6 b4 ~ a4 ~ g4 ~ e4 d4 ~ b3", C: "d4 ~@15",
  D: "[~@15 d4@29 ~@4]/3", E: "~@6 b3 ~ a3 ~ g3 ~ e3 d3 ~ [b2,f#3]", F: "f#3@12 ~@3 b3, g3 ~@15",
  G: "b3@14 ~ f#3, c4 ~@15", H: "f#3@13 ~@2 b3, g3 ~@15", I: "b3@12 ~@3 [f#3,g3], c4 ~@15", J: "f#3@13 ~@2 b3",
  K: "b3@13 ~@2 [f#3,g3], c4 ~@15", L: "f#3@12 ~@3 [b3,c4]", M: "b3@12 ~@3 [f#3,g3]", N: "f#3@13 ~@2 [b3,c4]",
  O: "b3@13 ~@2 [f#3,g3]", P: "b3@11 ~@4 [f#3,g3]", Q: "b3@3 ~",
})).s("gm_electric_guitar_clean").gain(0.57)

// other · electric guitar muted · "Mute Guitar"
const electric_guitar_muted = note(`<
  ~@8 A B A B A B A B C B A B C B A B C B A B C B D ~@11 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B D
>`.pickRestart({
  A: "d4 ~@2 d4 ~ e4 d4 ~@3 d4 ~ e4 d4 ~@2", B: "g4 ~@2 g4 ~ a4 g4 ~@3 g4 ~ a4 g4 e4 b3",
  C: "~@3 d4 ~ e4 d4 ~@3 d4 ~ e4 d4 ~@2", D: "d4 ~@15",
})).s("gm_electric_guitar_muted").gain(0.5)

// other · drawbar organ · "Organ"
const drawbar_organ = note("<A@2 B@2 ~@11 C D ~@2 C D ~@13 D ~@2 C D ~@10 C D ~@2 C D ~@30>".pickRestart({
  A: "[f#5@13 e5@2 ~ g5@13 a5@2 b5, ~@15 f#5@2 ~@15]/2", B: "[f#5@13 e5@2 ~ g5@15 ~, ~@15 f#5@2 ~@15]/2",
  C: "~@5 d5 g5 b5", D: "d6",
})).s("gm_drawbar_organ").gain(0.3)

// other · electric guitar jazz · "Gutar Solo"
const electric_guitar_jazz = note("<~@34 A@2 B C D E F G ~@43>".pickRestart({
  A: "[~@5 g3 ~ b3 d4 ~ e4@2 g4 a4 ~ a4@8 ~@7 g4 a4]/2", B: "[a4,b4] g4 a4 g4 e4 g4 e4 d4@2 e4 d4 b3@2 c4 b3 g3",
  C: "c4 ~ c4 e4 g4 ~ e4 g4 a4 ~ a4 c5 ~ c5 ~@2", D: "~ b4 d5 e5 g5 [d5,e5] e5 d5@2 b4 a4 g4 a4 b4 a4 g4",
  E: "a4 g4 e4 d4 e4 g4 a4 a#4 b4 d5 e5 g5@4 ~, ~@11 f#5 ~@4",
  F: "~@2 b3 [d4,e4] g4 e4 a4 [e4,a4] ~ a4 b4!2 d5 b4 e5 b4", G: "a5@2 [g5,a5] e5 g5 a5 ~ g5@5 ~@4",
})).s("gm_electric_guitar_jazz").gain(0.64)

// other · electric guitar jazz · "Gutar Solo" · soft notes · Am
const electric_guitar_jazz_2 = note(`<
  ~@35
  [~@8 a4 ~@7]
  ~
  [~ b3 ~@3 c4 ~@3 g4 ~@6]
  ~@2
  [~@5 d4 ~ g4 [a4,b4,c5] ~@7]
  ~@44
>`).s("gm_electric_guitar_jazz").gain(0.32)

// drums · kick
const kick = s("bd").struct("<A@29 B C D E F A@49 G H>".pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "x ~@2 x ~@6 x ~@5", D: "x ~@2 x ~@2 x ~ x ~@7", E: "x ~ x ~@2 x ~ x",
  F: "x ~@2 x!2 ~ x ~", G: "~@4 x ~@7 x ~@2 x", H: "x",
})).gain(0.57)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!30 ~@4 [~ x ~ x]!50 ~>").gain(0.57)

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

// drums · low tom
const low_tom = s("lt").struct("<~@30 [~@7 x] ~@2 [~@12 x!3 ~] ~@51>").gain(0.43)

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 [~@12 x!3 ~] [~@11 x!2 ~ x ~] [~@10 x!6] ~ [~@2 x ~ x!2 ~ x ~ x!4 ~ x ~] ~@51>")
  .gain(0.43)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 B@50 ~
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@7 x",
})).gain(0.57)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@29
  [~@10 x ~ x!3 ~]
  [~@10 x!2 ~@4]
  [~@9 x ~@3 x ~ x]
  [~@7 x!8 ~]
  [x ~ x ~@3 x!3 ~@7]
  ~@51
>`).gain(0.43)

// drums · crash
const crash = s("cr").struct("<~@30 [x ~@2 x ~@4]!3 [x!2] ~@49 [~@15 x] x>").gain(0.71)

// drums · congas
const congas = s("conga:33").struct("<~@29 [~@13 x ~@2] ~@55>").gain(1.37)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@43 [~@4 x!3 ~] ~@41>").gain(1.04)

stack(
  bass, percussive_organ, electric_guitar_clean, electric_guitar_muted, drawbar_organ, electric_guitar_jazz,
  electric_guitar_jazz_2, kick, rim, hihat, low_tom, mid_tom, open_hat, high_tom, crash, congas, woodblocks
)

More by Bob Marley