Strudelify

Island in the Sun

Harry Belafonte

KeyD majorTempo98 bpm
0:00/0:00
// Island in the Sun — Belafonte Harry
// 98 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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
const bass = note(`<
  ~@9 A B C A D E C D C F A B C A D E G H A B C A D E C I A J A B C A D E G H A B C A D E C I A J K L M K N O K P K L M
  K N O M Q K L M K N R S ~@3
>`.pickRestart({
  A: "d2@3 f#2@3 a2@2", B: "g2@3 b2@3 d3@2", C: "a2@3 e2@3 a2@2", D: "d2@5 ~ a2@6 d2@4", E: "g2@6 d2@6 g2@3 ~",
  F: "d2@4 ~@2 d2@6 a1@3 ~", G: "a2@3 a1@3 a2@2", H: "a1@3 d2@3 d2@2", I: "d2@5 ~ f#2@6 a2@4",
  J: "d2@4 ~@2 f#2@6 a2@3 ~", K: "d#2@3 g2@3 a#2@2", L: "g#2@3 c3@3 d#3@2", M: "a#2@3 f2@3 a#2@2",
  N: "d#2@5 ~ a#2@6 d#2@4", O: "g#2@6 d#2@6 g#2@3 ~", P: "a#1@5 ~ d#2@6 a#2@4", Q: "d#2@5 ~ g2@6 a#2@4",
  R: "g#2@3 d#2@3 g#2@2", S: "~ a#2@15",
})).s("gm_acoustic_bass").gain(0.49)

// other · trumpet
const trumpet = note("<~@52 A B C D E F G ~@3 H I J K L M N O P ~@10>".pickRestart({
  A: "~@10 d4@2 f#4 ~ g4@2", B: "a4@2 a4 ~ a4 ~ a4@2 ~@2 f#4@2 a4@3 ~", C: "d5@2 a4 ~ e5@2 f#5@2 ~@2 e5@2 d5@2 ~@2",
  D: "~@2 g4@2 ~ a#4@2 ~ g5@2 ~ g5@2 f5 ~ g5", E: "f5@2 ~ d#5@2 d#5@3 ~@8",
  F: "~@2 f4@2 ~ g#4 d5 ~ f5@2 ~ d#5 ~ d5 c5 ~", G: "~ c5 ~ a#4@2 ~ a#4@4 ~@6", H: "~@14 g4 ~",
  I: "a#4!2 ~ a#4 d#5 ~ d#5 ~ g5@2 ~@3 f5 ~ g5", J: "~ f5 ~ d#5 ~@2 c5@2 ~@6 c5 ~",
  K: "f5 ~@2 f5 d#5 ~ f5 d5 ~ d#5 ~ c5 d5 ~ c5 ~", L: "c5 ~ a#4@2 ~ a#4@3 ~@5 a#4 ~ a#5",
  M: "~ a#5@2 g5 ~ g#5 ~ f5 g5 ~ d#5 f5 d5 ~ d#5 d5", N: "~ c5@2 g#4@2 f5@2 ~@2 g#4 ~ c5 ~ f5 ~ d#5",
  O: "d5 ~ c5 ~ a#4@2 ~@3 d4 ~ f4 a#4 ~ g#4 ~", P: "g4 ~ f4 ~ d#4@3 ~@9",
})).s("gm_trumpet").gain(0.39).pan(0.3)

// other · muted trumpet
const muted_trumpet = note(`<
  ~@34
  [~@10 d5 ~ e5 f#5 ~ g5]
  [a5 ~ a5!2 ~ g5 f#5 ~@2 d5 ~ e5 ~ d5 c#5 ~, ~@4 e5 ~@3]
  [b4 c#5 ~ a4 f#4 ~ g4 ~ a4@7 ~]
  ~@44
>`).s("gm_muted_trumpet").gain(0.39).pan(0.4)

// chords · flute
const flute = note(`<
  ~@16 A B C ~@7 D E F G H I J K L ~@2 M N O P Q R S T E F G H I J K L U V W ~@5 X Y Z AA AB AC AD AE AF AG ~@10
>`.pickRestart({
  A: "~@10 f#5 ~ a5 ~ d6 ~", B: "c#6 ~ e6 f#6 g6 ~ b6@3 ~ g6 ~ e6@2 c#6 ~", C: "e6@2 d6@3 ~ d6@8 ~@2",
  D: "~@10 [a4,d5] e5 f#5 ~ [e5,g5] ~", E: "f#5@5 d6@3, a5", F: "[g5,b5]@3 [b5,d6]@2 [e5,g5] [g5,b5] [e5,g5]",
  G: "[a4,c#5]@4 [a4,c#5]@3 ~ [a4,c#5]@2 [g4,b4]@4 [a4,c#5]@2", H: "[c#5,e5] [a4,d5]@2 [d5,f#5]@5",
  I: "[d5,f#5]@3 ~ [d5,f#5] ~ [d5,f#5]@4 [e5,g5] ~ [f#5,a5]@2 g5 [a5,b5]", J: "[b5,c#6,d6] ~@3 [b5,d6] ~ [g5,b5]@5 ~@5",
  K: "[c#5,e5]@5 ~ [c#5,e5]@4 [b4,d5]@2 [c#5,e5]@3 ~", L: "[e5,g5] [d5,f#5] ~ [d5,f#5]@3 ~@2",
  M: "[f#4,a4]@3 [f#4,a4]@2 [a4,d5]@3", N: "[g4,b4]@3 [b4,d5]@5", O: "[a4,c#5]@5 ~ [a4,c#5]@4 [g4,b4]@3 [a4,c#5]@3",
  P: "[g4,b4]@3 a4@2 ~ [f#4,a4]@4 ~@2 [f#4,a4]@2 [g4,g#4,a4,b4,c5,c#5] [a#4,b4,c5,d5,d#5,e5], ~@3 f#4 ~@12", // G F#m
  Q: "[d5,f#5]@7 ~@9, [c#5,f5] ~@15", R: "~@3 [g4,b4]", S: "[e4,a4]@4 ~@2 [a4,d5]@9 ~",
  T: "[a4,c#5]@5 ~ [a4,d5]@4 [a4,d5] e5 f#5 ~ [e5,g5] ~", U: "[f#5,a5] [a5,d6] [f#5,a5] [d5,f#5] ~ [a4,d5]!2 [c#5,e5]",
  V: "[d5,f#5]@3 ~@7 [a4,d5] ~ [a4,d5]@4", W: "[a#4,d#5]@5 ~@3", X: "g4@4 f4@2 d#4@2 a#4@3 ~ a#4@3 ~",
  Y: "g#4@2 f4 d#4@3 ~@2", Z: "g5@5 d#6@3, a#5", AA: "[g#5,c6]@3 [c6,d#6]@2 [f5,g#5] [g#5,c6] [f5,g#5]",
  AB: "[a#4,d5]@4 [a#4,d5]@3 ~ [a#4,d5]@2 [g#4,c5]@4 [a#4,d5]@2", AC: "[d5,f5] [a#4,d#5]@2 [d#5,g5]@5",
  AD: "[d#5,g5]@3 ~ [d#5,g5] ~ [d#5,g5]@4 [f5,g#5] ~ [g5,a#5]@3 ~", AE: "[g#5,c6]@3 ~ [g#5,c6] ~ [g#5,c6]@5 ~@5",
  AF: "[d5,f5]@5 ~ [d5,f5]@4 [c5,d#5]@2 [d5,f5]@3 ~", AG: "[f5,g#5] [d#5,g5] ~ [d#5,g5]@3 ~@2",
})).s("gm_flute").gain(0.24).pan(0.7)

// other · marimba
const marimba = note("<~@9 A B C D E F G H ~@64>".pickRestart({
  A: "~@11 a5 [a5,d6]!4", B: "[g5,b5]!12 [b5,d6]!4", C: "[a5,c#6]!12 [g5,b5]!4", D: "[f#5,a5]!16",
  E: "[d5,f#5]!10 [e5,g5]!2 [f#5,a5]!4", F: "[g5,b5]!6 [b5,d6]!4 [a5,c#6]!2 [g5,b5]!4",
  G: "[a5,c#6]!6 [c#5,e5]!4 [d5,f#5]!2 [e5,g5]!4", H: "[e5,g5]!2 [d5,f#5]!14",
})).s("gm_marimba").gain(0.24).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C@2 D E F G@2 H I J H@2 I J H J H@2 I J H@2 I H K H I J H@2 I J H@4 I J H@2 I H K H I J H@2 I J H@3 L M N L@2 M L
  O L M N L@2 M N L@2 M N L@2 P@3 ~@2
>`.pickRestart({
  A: "~@7 d3, [d3,a3,f#4]@2 d4 a3@2 d4@3, ~ a2@7, ~@3 f#4@5, ~@3 d3@3 a3@2", // D
  B: "~@7 g4, [g3,b3]@5 g3@3, d3!2, g2@3 g2@5, ~ g4@11 b3@4", // G
  C: "[~@6 c#4@4 ~@2 [c#4,e4]@3 ~ f#4@5 ~@9 d3@2, a2@10 a2@5 a2@16 ~, ~ g3@2 g3@5 a3@5 d4@3, ~@4 e3@11 ~ d3@12 a3@4, ~@8 d4@3 f#4@5]/2", // C#m
  D: "d4@3 ~@4 f#4, a2, d3@3 d3, a3@5 a3@3, ~@6 d4@9 ~", E: "b3@5 ~@7 g3@4, [b2,g4], g3@3 ~, d3@5 d3@3, ~@3 b3@5",
  F: "~@3 a3, a2@15 ~, d3@5 ~ d3@10, ~ f#4@14 ~, ~ a3@7 a3@2 d4@6",
  G: "[[a2,e3,c#4]@7 ~@2 f#4@23, ~ [a2,d3,a3,d4]@3]/2", // A D5
  H: "[a2,d3,a3,d4]@3 ~ [a3,d4,f#4]@2 ~@4 [a3,d4]@2 [a3,d4]@2 [a3,d4,f#4]@2, ~@3 [a2,d3]@5 [a2,d3]@8, ~@3 [a3,d4,f#4]@2 f#4@2 ~", // D5 D D5 D D5 D
  I: "[b2,d3,g3,b3]@3 ~ [g3,b3,g4]@2 ~@4 [g3,b3]@2 [g3,b3]@2 [g3,b3,g4]@2, ~@3 [b2,d3]@5 [b2,d3]@8, ~@3 [g3,b3,g4]@2 g4@2 ~", // G Bm G
  J: "[a2,e3,a3,c#4]@3 ~ [a3,c#4,e4]@2 ~@4 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4,e4]@2, ~@3 [a2,e3]@5 [a2,e3]@8, ~@3 [a3,c#4,e4]@2 e4@2 ~", // A A5 A
  K: "g4@2 f#4@3 ~@5 [a3,d4]@2 [a3,d4]@2 [a3,d4,f#4]@2, [a2,e3,a3,c#4]@5 [a2,d3]@3 [a2,d3]@8, ~@3 [a3,d4,f#4]@2 f#4@2 ~", // D5 D A D5 D
  L: "[a#2,d#3,a#3,d#4]@3 ~ [a#3,d#4,g4]@2 ~@4 [a#3,d#4]@2 [a#3,d#4]@2 [a#3,d#4,g4]@2, ~@3 [a#2,d#3]@5 [a#2,d#3]@8, ~@3 [a#3,d#4,g4]@2 g4@2 ~", // D#5 D# D#5 D# D#5 D#
  M: "[c3,d#3,g#3,c4]@3 ~ [g#3,c4,g#4]@2 ~@4 [g#3,c4]@2 [g#3,c4]@2 [g#3,c4,g#4]@2, ~@3 [c3,d#3]@5 [c3,d#3]@8, ~@3 [g#3,c4,g#4]@2 g#4@2 ~", // G# Cm G#
  N: "[a#2,f3,a#3,d4]@3 ~ [a#3,d4,f4]@2 ~@4 [a#3,d4]@2 [a#3,d4]@2 [a#3,d4,f4]@2, ~@3 [a#2,f3]@5 [a#2,f3]@8, ~@3 [a#3,d4,f4]@2 f4@2 ~", // A# A#5 A#
  O: "[a#2,f3,a#3,d4]@3 ~ [a#3,d4,f4]@2 d#3@2 ~@2 [a#3,d#4]@2 [a#3,d#4]@2 [a#3,d#4,g4]@2, ~@3 a#2@5 [a#2,d#3]@8, ~@3 f3@2 ~ [a#3,d#4,g4]@4 g4@4 ~@2", // A# D#5 D# D#5 D#
  P: "[[c3,d#3,g#3,c4]@3 ~ [g#3,c4,g#4]@2 ~@4 [g#3,c4]@2 [g#3,c4]@2 ~ [g#3,c4,g#4]@2 [a#2,f3,a#3,d4]@18 ~@13, ~@3 [c3,d#3]@5 [c3,d#3]@9 ~@31, ~@3 [g#3,c4,g#4]@2 g#4@2 ~@17]/3", // G# A# Cm G#
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.4)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@11 A B@2 ~ C ~@3 D E F G H I J K ~ L M N O P Q R ~ S T E F G H I J K ~ L M U O P Q R ~ S V ~@15 W X Y Z AA AB AC ~@3
>`.pickRestart({
  A: "~ c#4 e4 c#4 a4 a3@2 ~", B: "[~@2 a3@6 ~@2 a3@3 ~ a3@6 ~@12]/2", C: "~@6 g4@4 e4@2 c#4@3 ~",
  D: "~ a3@2 ~@2 a3 d4 f#4", E: "~@2 g3 b3 ~ g4 g3 b3", F: "~@3 e4 a3 c#4 ~@2", G: "~ f#4 a3 e4 a3 a4 d4 a3",
  H: "~@5 d4@2 a3", I: "~@3 g3 b3 ~ g4 d4", J: "~@2 f#4 d4 ~ a3 d4 ~", K: "e4@2 c#4@2 ~@2 d4@2 a3@2 f#4@2 a3@3 ~",
  L: "~@4 b3 g4 d4 b3", M: "c#4@3 ~@3 e4@4 ~@2 a3@2 ~@2", N: "~@2 d4@4 f#4@3 ~ a4@2 b4 ~ c#5 ~",
  O: "d5@4 ~@2 a4@3 ~ f#4@2 a3 ~@3", P: "~@4 b3@2 d5@3 ~ d5@2 d5@2 d4 ~", Q: "c#4@3 a3@2 ~ e4@2 ~@2 a3@2 g4@3 ~",
  R: "e4@2 ~ f#4@2 ~ f#4@5 ~@5", S: "~@10 f#4@2 ~ g4@3", T: "~ a3@2 ~@2 a3 d4 f#4, f#4@3 ~@5",
  U: "~@2 d4@4 f#4@3 ~ f#4@2 d5@2 d5 ~", V: "f#4@3 ~@5", W: "d#5@4 a#4 ~ g4@3 ~ a#4 ~ g4@2 a#4 ~",
  X: "g#4@2 c5 ~ d#5 ~ d#5@2 c5@2 g#4@2 d#5@2 c5 ~", Y: "d5@2 f5@2 ~@2 f5@3 ~ d#5@2 d5@2 ~@2",
  Z: "a#4@5 ~ a#4@2 ~@2 d#5 ~ d#5 ~ d#5@2", AA: "d#5@3 ~ a#4@2 g4@2 ~@2 g4@2 a#4@2 g4 ~",
  AB: "g#4@2 ~ g#4@2 ~ c5@2 d#5 ~ d#5@2 c5@2 ~ g#4", AC: "~ a#4@3 ~@12",
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.3)

// other · acoustic guitar steel · soft notes
const acoustic_guitar_steel_3 = note("<~@20 A B ~@2 C D ~@3 B ~@8 A B ~@2 C D ~@3 B ~@33>".pickRestart({
  A: "~@4 g3 ~@3", B: "~@2 a3 ~@5", C: "~@10 g3 ~@5", D: "~@14 a3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@9 [x ~@2 x!2 ~@3]!68 [~ x ~@14] ~@3>").gain(0.59)

// drums · rim
const rim = s("rim").struct("<~@19 [~ x ~ x]!8 ~@10 [~ x ~ x]!8 ~@36>").gain(0.52)

// drums · snare
const snare = s("sd").struct("<~@9 [~ x ~ x]!10 ~@8 [~ x ~ x]!10 ~@8 [~ x ~ x]!32 ~@4>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 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 A B A B A B A
  B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3",
})).gain(0.39)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ B C ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~ x ~@14",
})).gain(0.33)

// drums · tambourine
const tambourine = s("tb").struct("<~@9 A@10 B C@7 A@10 B C@7 A@31 D E ~@3>".pickRestart({
  A: "x!16", B: "x!5 ~@7 x ~@3", C: "~ x ~ x", D: "x!13 ~ x!2", E: "x!2 ~@14",
})).gain(0.13)

// drums · congas
const congas = s("conga:13").struct("<~@9 [~@6 x!2]!9 [~@12 x!3 ~] [~@6 x!2]!57 [~@12 x ~@2 x] ~@4>").gain(1.26)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@9
  [x ~@2 x ~ x ~@2]!9
  [x ~@5 x ~@3 x ~@4 x]
  [x ~@2 x ~ x ~@2]!58
  [~ x ~@14]
  ~@3
>`).gain(1.26)

// drums · congas
const congas_3 = s("conga:33").struct("<~@8 A B C@17 B C@17 B C@9 B C@7 B C@7 B C@5 ~@4>".pickRestart({
  A: "~@12 x!4", B: "x ~ x!2 ~@12", C: "~@2 x!2 ~@12",
})).gain(1.26)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@9 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 A B A B A B A
  B A B A B A B A B A C D ~@3
>`.pickRestart({
  A: "x!4 ~ x ~ x", B: "x!4 ~ x!3", C: "x ~ x ~ x ~ x ~@3 x ~ x ~@2 x", D: "~ x ~@14",
})).gain(1.33)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
  ~@9 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 A B A B A B A
  B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "~@2 x!2", B: "~ x",
})).gain(0.67)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@9 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 A B A B A B A
  B A B A B A B A B A B C ~@3
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~@2 x ~@2 x ~@2", C: "~ x ~@14",
})).gain(1.93)

stack(
  bass, trumpet, muted_trumpet, flute, marimba, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_steel_3,
  kick, rim, snare, hihat, open_hat, tambourine, congas, congas_2, congas_3, cabasa, cabasa_soft, claves
)

More by Harry Belafonte