Strudelify

Jamaica Farewell

Harry Belafonte

KeyE majorTempo123 bpm
0:00/0:00
// Jamaica Farewell — Belafonte Harry
// 123 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(123/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(`<
  ~@3 A B C D E F C D E G B H I J B H I A B C D E F C D E G B H I J B H I A B C D E F C D E G B H I J B H I A B@2 K L M
  B K I J B H I J B H I A B H I J B H I A F@2 N@2
>`.pickRestart({
  A: "e2@2 e3 b2", B: "e2@2 g#2 b2", C: "e2", D: "a2", E: "b2@3 b1", F: "e2@2 b2 b1", G: "e2 e3",
  H: "a2@8 f#2@4 a2@3 ~", I: "b2 b1", J: "e2@8 b2@4 b1@3 ~", K: "a2@8 f#2@7 ~", L: "b2@6 f#3 ~ f#3@4 b2@4",
  M: "e3@8 e2@4 b2@3 ~", N: "[~ e2@27 ~@4]/2",
})).s("gm_acoustic_bass").gain(0.56)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D@2 E F G H I J G K L M N O P Q R D@2 E F G H I J G K L M N O P Q R D@2 E F G H I J G K L M N O P Q R D@2 E F G
  H I J G K L M N O P Q R S L M N O P Q R T@3 U@2
>`.pickRestart({
  A: "b4!2 a#4 b4 e5 c#5 b4 a#4", B: "~ f#3 a3 ~ e4 a4 ~ a4, [a2,a4]@3 c#4@3 [c#4,c#5]@2, ~@3 e3@2 a3@3",
  C: "g#4@2 b4@3 ~ [f#3,a4]@4 [a3,f#4]@2 [f#3,d#4]@4, b2@6 c#4@3 ~@7", // F#m D D#m
  D: "[[e3,g#3]@3 ~@11 [b2,b3]@2, e4@8 g#4@10 ~@6 g#4@7 ~, ~@3 [g#3,b3]@3 b2@2 e3@3 ~@5, ~@10 e4@7 ~ e4@7 ~ e4@6, ~@14 b3@7 ~ [g#3,b3]@6 ~@4]/2", // E B G#m
  E: "[e3,g#3]@3 ~@4 b3, e4 g#4, ~@3 [g#3,b3]@3 b2@2, ~@5 e4@3", // E G#m
  F: "[a3,f#4]@6 c#4@2 ~@6 f#4 ~, ~@3 e3@3 a3@2, ~@8 a4@7 ~, ~@5 c#4@3", // D
  G: "~@6 b3 f#4, [b3,f#4]@3 a4@5, ~@2 d#4@3 d#4@3, ~@3 f#3@3 ~@2", // B5
  H: "~@7 g#3, e4@5 e4@3, e3@3 g#4@5, ~ b3@2 ~, ~@3 g#3@3 [b2,b3]@2", // B
  I: "~@7 e4, e3@3 g#4@5, ~@2 b3@7 ~ b3@6, ~@2 e4@2 e4@3 ~, ~@3 g#3@3 b2@2",
  J: "~@3 a3, a3@3 e3@3 ~@2, ~ f#4@3 f#4@4, ~@2 c#4@3 c#4@3",
  K: "~@3 [b2,b4], e4@5 e4@3, e3@3 g#4@5, ~ b3@2 ~, ~@3 g#3@3 ~@2", // B
  L: "~@3 b2, e3@3 b3@5, ~ e4@7, ~@3 g#3@3 ~@2, ~ g#4", M: "a3@3 ~@3 a3@2, f#4@5 f#4@3, ~@6 c#4@9 ~, ~@3 e3@3 ~@2",
  N: "~@6 b2 d#4, b3@5 b3@3, b2@3 f#3@3 ~@2, ~ d#4@6 ~, ~@4 a4@11 ~",
  O: "e3@3 ~@4 g#3, e4@5 e4@3, ~@3 g#3@3 [b2,b3]@2, ~@8 g#4@7 ~", // B
  P: "~@7 b3, e3@3 g#4@5, ~ b3@6 ~, ~@2 e4@3 e4@3, ~@3 g#3@3 b2@2",
  Q: "~@7 f#4, a3@3 a4@5, ~ c#4@5 [a3,c#4]@2, ~@2 f#4@3 f#4@2 ~, ~@3 e3@3 ~@2", // A
  R: "~@2 a4 b4 ~@2 [b2,f#4]@2, b2@3 f#3@3 ~@2, ~@2 f#4@9 ~@5, ~ a4", // B5
  S: "[e3,g#3]@3 ~@4 b4, e4 g#4, ~@3 b3@4 ~, ~@3 g#3@3 b2@2, ~@5 e4@3", // E
  T: "[[e3,g#3]@6 ~@22 b2@3 ~@13 [b2,b4]@4, e4@8 g#4@10 ~@6 g#4@15 ~ g#4@8, ~@3 [g#3,b3]@3 b2@2 e3@3 ~@5 e3@3 ~@5, ~@10 e4@7 ~ e4@7 ~ e4@8 e4@7 ~ e4@6, ~@14 b3@7 ~ [g#3,b3]@6 b3@10 [g#3,b3]@6 ~@4]/3", // E B G#m
  U: "[~ [g#3,b3,e4]@31, [e2,b2,e3]@31 ~]/2", // E E5
})).s("gm_acoustic_guitar_nylon").gain(0.46)

// chords · vibraphone
const vibraphone = note("<~@21 A@2 B@5 C@8 D E F G H I G@2 H I J@8 K L@7 C@8 D M@8 K ~ N@2 ~>".pickRestart({
  A: "[~@16 g#5@12 ~@3 [c#5,e5], ~@15 [b4,e5]@13 ~@4]/2", // C#m E5
  B: "[~@16 a5@11 ~@5 b5@11 ~@5 g#5@11 ~@5 a5@12 ~@3 [d#5,f#5], ~@15 d#5@14 ~@2 [d#5,g#5]@13 ~@3 [b4,e5]@13 ~@3 [c#5,e5]@13 ~@4, ~@15 f#5@12 ~@53]/5", // D#m G#5 E5 C#m
  C: "[a5@8 ~@8 g#5@11 ~@5 g#5@11 ~@5 a5@12 ~@4 a5@8 ~@8 g#5@11 ~@5 b5 ~@11 e6 ~@3 c#6 ~@10 f#5 a5 ~@2 [b4,d#5], ~@15 [b4,e5]@12 ~@4 [b4,e5]@13 ~@3 [c#5,e5]@13 ~@3 [d#5,f#5]@10 ~@6 [b4,e5]@12 ~@4 [e5,g#5]@2 ~@10 [g#5,b5]@2 ~@2 [f#5,a5]@2 ~@10 c#5@2 ~@3]/8", // B E5 C#m D#m E5 E G#m F#m
  D: "g#5 ~@10 c#5 f#5 ~@2 [a4,c#5], ~@11 a4@2 ~@3", // A
  E: "f#5 ~@3 b4@2 ~@4 g#3@2 b3@2 g#4 ~, ~@3 g#4@2 ~@11, ~@4 e5 ~@11",
  F: "[a3,f#4] ~@2 [g#3,e4] ~@2 g#3 [g#3,e4] e4 [g#3,e4] g#3 [g#3,e4] e4 [g#3,e4] g#3 e4", // D C#m
  G: "b2 [b2,g#3] g#3 [b2,g#3] b2 [b2,g#3] g#3 [b2,g#3] b2 [b2,g#3] g#3 [b2,g#3] b2 [b2,g#3] g#3 b2", // E
  H: "c#3 [c#3,a3] a3 [c#3,a3] c#3 [c#3,a3] a3 [c#3,a3] c#3 [c#3,a3] a3 [c#3,a3] c#3 [c#3,a3] a3 c#3", // F#m
  I: "d#3 [d#3,b3] b3 [d#3,b3] d#3 [d#3,b3] b3 [d#3,b3] d#3 [d#3,b3] b3 [d#3,b3] d#3 [d#3,b3] b3 d#3", // G#m
  J: "[b2 [b2,g#3] g#3 [b2,g#3] b2 [b2,g#3] g#3 [b2,g#3] b2 [b2,g#3] g#3 [b2,g#3] b2 [b2,g#3] ~@2 g#5@11 ~@5 a5@12 ~@4 a5@8 ~@8 g#5@11 ~@5 b5 ~@11 e6 ~@3 c#6 ~@10 f#5 a5 ~@3 g#5 ~@10 c#5 f#5 ~@2 [a4,c#5], ~@15 [b4,e5]@13 ~@3 [c#5,e5]@13 ~@3 [d#5,f#5]@10 ~@6 [b4,e5]@12 ~@4 [e5,g#5]@2 ~@10 [g#5,b5]@2 ~@2 [f#5,a5]@2 ~@10 c#5@2 ~@2 [b4,d#5]@2 ~@10 a4@2 ~@3]/8", // E A E5 C#m D#m E5 E G#m …
  K: "f#5 ~@3 b4@2 ~@10, ~@3 g#4@2 ~@11, ~@4 e5 ~@11",
  L: "[~@16 g#5@12 ~@4 a5@12 ~@4 a5@11 ~@5 b5@11 ~@5 g#5@11 ~@5 a5@12 ~@3 [d#5,f#5], ~@15 [b4,e5]@13 ~@3 [c#5,e5]@13 ~@3 d#5@14 ~@2 [d#5,g#5]@13 ~@3 [b4,e5]@13 ~@3 [c#5,e5]@13 ~@4, ~@47 f#5@12 ~@53]/7", // D#m E5 C#m G#5 E5 C#m
  M: "[f#5 ~@3 b4@2 ~@10 g#5@11 ~@5 a5@12 ~@4 a5@8 ~@8 g#5@11 ~@5 b5 ~@11 e6 ~@3 c#6 ~@10 f#5 a5 ~@3 g#5 ~@10 c#5 f#5 ~@2 [a4,c#5], ~@3 g#4@2 ~@10 [b4,e5]@13 ~@3 [c#5,e5]@13 ~@19 [b4,e5]@12 ~@32 c#5@2 ~@2 [b4,d#5]@2 ~@10 a4@2 ~@3, ~@4 e5 ~@42 [d#5,f#5]@10 ~@22 [e5,g#5]@2 ~@10 [g#5,b5]@2 ~@2 [f#5,a5]@2 ~@31]/8", // A E5 C#m E5 B D#m E G#m …
  N: "[~@17 e6@11 ~@4, ~@15 g#5@13 ~@4, ~@4 b5@3 ~]/2",
})).s("gm_vibraphone").gain(0.46)

// chords · flute
const flute = note("<~@39 A B C D E F G H I J K L@2 M N O ~@13 P Q R S ~@12>".pickRestart({
  A: "~@2 e4 [d#4,f#4] [c#4,e4]@2 [b3,d#4]@2, ~ g#4@2 ~@5", B: "[a3,c#4]@15 ~", C: "[d#4,f#4]@15 ~", D: "[g#3,b3]",
  E: "[e4,g#4]@8 [d#4,f#4]@2 ~ [c#4,e4]@2 [b3,d#4]@2 ~", F: "[a3,c#4]@3 [f#4,a4]@5", G: "[b3,d#4]@13 e4@2 f#4",
  H: "[g#3,e4]@15 ~", I: "~@2 g#4 e4", J: "c#4 a4", K: "~@2 a3@3 ~ c#4 f#4 d#4@2 d4@2 c#4@2 c4@2",
  L: "[b3@8 g#4@15 ~ b4@4 e4@4, ~@3 g#4]/2", M: "c#5@3 f#4@4 c#5, a4", N: "[g#4,b4]@12 [f#4,a4]@3 ~",
  O: "f#4 e4@3, g#4", P: "~@2 b4 g#4", Q: "c#5@3 b4 a4@3 c#5", R: "b4@3 a4", S: "g#4",
})).s("gm_flute").gain(0.4)

// other · oboe
const oboe = note("<~@64 A@2 B C D E F G ~@12>".pickRestart({
  A: "[~@2 g#5@8 f#5@3 e5@2 d#5@2 c#5@14 ~]/2", B: "~@3 f#5@7 e5@2 d#5@2 c#5@2", C: "b4", D: "~ b4 g#5 e5",
  E: "a5@3 g#5 f#5@3 e5", F: "d#5@3 c#5", G: "f#5@4 e5@11 ~",
})).s("gm_oboe").gain(0.38)

// drums · kick
const kick = s("bd").struct("<~@3 A@5 B A@3 B@10 A@3 B A@3 B@10 A@3 B A@3 B@10 A@3 B A@3 B@19 C ~>".pickRestart({
  A: "x", B: "x!2", C: "~ x ~@14",
})).gain(0.53)

// drums · rim
const rim = s("rim").struct("<~@3 [~ x ~ x]!79 ~@2>").gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@82 [~ x ~@14] ~>").gain(0.53)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@3 A B C A@2 B C A@2 B A B C A@2 B C A@2 C A@2 B C A@2 B C A@2 B C A@2 B A C A@2 B C A@2 B C A@2 B C A@2 B A C A@2 B
  C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B A@2 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@2 x ~@4 x",
})).gain(1.68)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@3 A@2 B A@3 B A@5 B A@3 B A@2 B A@3 B A@3 B A@3 B A@4 B A@3 B A@3 B A@3 B A@4 B A@3 B A@3 B A@3 B A@3 B A@3 B A@5
  ~@2
>`.pickRestart({
  A: "x", B: "x ~@2 x",
})).gain(1.68)

// drums · congas
const congas_3 = s("conga:33").struct("<~@3 [~@3 x ~ x ~@2]!79 ~@2>").gain(1.68)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@3 [x!8]!78 [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x] ~@2>").gain(2.28)

stack(bass, acoustic_guitar_nylon, vibraphone, flute, oboe, kick, rim, ride, congas, congas_2, congas_3, cabasa)

More by Harry Belafonte