Strudelify

Iron Lion Zion

Bob Marley

KeyD majorTempo71 bpm
0:00/0:00
// Iron Lion Zion — Marley Bob
// 71 bpm, 2/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 on channels 1, 4, 6, 7, 8, 9, 11 is ignored: the parts fit General MIDI, not the Roland MT-32 map it names
// note: Full arrangement: all 36 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(71/2)

// 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.

// other · clavinet · "Clavinette"
const clavinet = note("<~@9 A B C D E B F G@8 H I@2 J@8 ~>".pickRestart({
  A: "~@7 b3@3 ~@13 b3@3 ~@6", B: "~@3 b2@3 ~@5 b2@3 ~ e4@3 ~ d4@3 ~ e4@3 ~ d4@3 ~@2",
  C: "~@3 b2@3 ~ b2@3 ~@5 b2@3 ~@9 b2@3 ~@2", D: "~@3 b3@3 ~@5 b2@3 ~ e4@3 ~ d4@3 ~ e4@3 ~ d4@3 ~@2",
  E: "~@3 b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~@5 b3@3 ~ b2@3 ~@2", F: "~@3 b2@3 ~ b2@3 ~@5 b2@3 ~@9 b3@3 ~@2",
  G: "[~@3 b2@3 ~@5 b2@3 ~ e4@3 ~ d4@3 ~ e4@3 ~ d4@3 ~ d3@8 ~@4 d3@4 d3@4 d3@4 d4@8 a2@8 ~@4 a2@4 e4@4 d4@4 e4@4 d4@4 b2@8 ~@4 b2@4 b3@4 b2@4 d4@4 b3@4 b2@8 ~@4 b2@4 b2@4 b2@4 d4@4 b3@4 d3@8 ~@4 d3@4 d3@4 d3@4 d4@8 a2@8 ~@4 a2@4 e4@4 d4@4 e4@4 d4@4 b2@8 ~@4 b2@4 b2@4 b2@4 d4@4 b3@4 f#3]/8",
  H: "~@3 f#3@4 ~@4 e3@4 e3@4 ~@4 d3@4 d3@4 ~",
  I: "[~@3 b2@4 b2@4 ~@4 a2@4 a2@4 b2@4 ~@4 f#3@4 f#3@4 ~@4 e3@4 e3@4 ~@4 d3@4 d3@4 ~]/2",
  J: "[~@3 b2@4 b2@4 ~@4 a2@4 a2@4 b2@4 ~@4 d3@3 ~ d3@3 ~ d4@3 ~ d3@3 ~ d3@3 ~ d4@3 ~ d3@3 ~ d4@3 ~ e3@3 ~ e3@3 ~ e4@3 ~ e3@3 ~ e4@3 ~ d4@3 ~ e4@3 ~ d4@3 ~ d3@3 ~ d3@3 ~ d4@3 ~ d3@3 ~ d3@3 ~ d4@3 ~ d3@3 ~ d4@3 ~ e3@3 ~ e4@3 ~@5 e3@3 ~ e4@3 ~ d4@3 ~ e4@3 ~ d4@3 ~ d3@3 ~ d3@3 ~ d4@3 ~@5 d3@3 ~ d4@3 ~ d3@3 ~ e3@3 ~ e3@3 ~ e3@3 ~ e4@3 ~@5 e3@3 ~ e4@3 ~ e4@3 ~ d3@3 ~ d3@3 ~ d3@3 ~ d4@3 ~@5 d3@3 ~ d4@3 ~ d3@3 ~ e3@3 ~@2]/8",
})).s("gm_clavinet").gain(0.35).pan(0.1)

// bass · electric bass finger · "Bass"
const bass = note("<A@8 B@8 C@7 D@8 E@5>".pickRestart({
  A: "[~@3 b1@12 a1@4 a1@4 b1@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2@4 e2@8 b2@4 e2@4 e2@4 b2@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2@4 e2@8 b2@4 e2@4 e2@4 b2@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2@4 e2@8 b2@4 e2@4 e2@4 b2@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2]/8",
  B: "[~@3 e2@8 b2@4 e2@4 e2@4 b2@8 b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1]/8",
  C: "[~@3 b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ a2@3 ~ a2@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ c#2@3 ~ c#2@3 ~ e2@3 ~ e2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ a2@3 ~ a2@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ c#2@3 ~ c#2@3 ~ e2@3 ~ e2@3 ~ b1]/7",
  D: "[~@3 b1@3 ~ b1@3 ~ b1@3 ~ d2@3 ~ d2@3 ~ f#2@3 ~ f#2@3 ~ f#2@4 f#2@8 e2@4 e2@8 d2@4 d2@8 b1@12 a1@4 a1@4 b1@8 f#2@4 f#2@8 e2@4 e2@8 d2@4 d2@8 b1@12 a1@4 a1@4 b1@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2@4 e2@8 b2@4 e2@4 e2@4 b2@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2]/8",
  E: "[~@3 e2@8 b2@4 e2@4 e2@4 b2@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2@4 e2@8 b2@4 e2@4 e2@4 b2@8 d2@4 d2@8 a2@4 d2@4 d2@4 a2@8 e2@4 ~@29]/5",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · percussive organ · "Organ"
const percussive_organ = note("<A@8 B ~@2 C D C D C E@8 F G@2 H@8 ~>".pickRestart({
  A: "[~@31 [d4,f#4,a4]@32 [e4,g4,b4]@32 [f#4,a4,d5]@32 [g4,b4,e5]@32 [f#4,a4,d5]@32 [g4,b4,e5]@32 [a4,d5,f#5]@32 [b4,e5,g5]]/8", // D Em D Em D Em D Em
  B: "~@15 [b4,e5,g5]@8 [b4,e5,g5]@8 ~", C: "~@7 [b4,d5,f#5] ~@15 [b4,d5,f#5] ~@8",
  D: "~@7 [b4,c#5,e5] ~@15 [b4,c#5,e5] ~@8", // C#m7
  E: "[~@7 [b4,c#5,e5] ~@15 [b4,c#5,e5] ~@7 [f#4,a4,d5]@32 [a4,c#5,e5]@32 [f#4,b4,d5]@64 [f#4,a4,d5]@32 [a4,c#5,e5]@32 [f#4,b4,d5]@32 [c#5,f#5]]/8", // C#m7 D A Bm D A Bm F#5
  F: "~@3 [c#5,f#5]@4 ~@4 [b4,e5]@4 [b4,e5]@4 ~@4 [a4,d5]@4 [a4,d5]@4 ~", // F#5 E5 D5
  G: "[~@3 [f#4,b4]@4 [f#4,b4]@4 ~@4 [e4,a4]@4 [e4,a4]@4 [f#4,b4]@4 ~@4 [c#5,f#5]@4 [c#5,f#5]@4 ~@4 [b4,e5]@4 [b4,e5]@4 ~@4 [a4,d5]@4 [a4,d5]@4 ~]/2", // B5 A5 B5 F#5 E5 D5
  H: "[~@3 [f#4,b4]@4 [f#4,b4]@4 ~@4 [e4,a4]@4 [e4,a4]@4 [f#4,b4]@4 ~@4 [d4,f#4,a4]@32 [e4,g4,b4]@32 [f#4,a4,d5]@32 [g4,b4,e5]@32 [f#4,a4,d5]@32 [g4,b4,e5]@32 [a4,d5,f#5]@32 [b4,e5,g5]]/8", // B5 A5 B5 D Em D Em D …
})).s("gm_percussive_organ").gain(0.3).pan(0.6)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note("<A@8 B ~@18 C@8 ~>".pickRestart({
  A: "[~@31 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 e3@2 ~@2 e3@2 ~@2 [g3,b3]@4 e3@2 ~@2 e3@2 ~@2 e3@2 ~@2 [g3,b3]@4 e3@2 ~@2 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 e3@2 ~@2 [g3,b3]@4 ~@4 e3@2 ~@2 [g3,b3]@4 ~@4 [g3,b3]@4 ~@4 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 e3@2 ~@2 e3@2 ~@2 g3@4 e3@2 ~@2 e3@2 ~@2 e3@2 ~@2 g3@4 e3@2 ~@2 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 e3, ~@39 d3@2 ~@14 d3@2 ~@14 e3@2 ~@14 e3@2 ~@14 d3@2 ~@14 d3@2 ~@10 e3@2 ~@10 e3@2 ~@6 e3@2 ~@14 a3 ~@15 a3 ~@15 b3 ~@15 b3 ~@15 a3 ~@15 a3 ~@8]/8", // F#m G F#m G
  B: "~@3 g3@4 ~@4 e3@2 ~@2 g3@4 ~@4 g3@4 ~@5, ~@3 b3 ~@11 b3 ~@7 b3 ~@8",
  C: "[~@3 b2@3 ~ b2@3 ~@5 a2@3 ~ a2@3 ~ b2@3 ~@5 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 e3@2 ~@2 e3@2 ~@2 [g3,b3]@4 e3@2 ~@2 e3@2 ~@2 e3@2 ~@2 [g3,b3]@4 e3@2 ~@2 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 [f#3,a3]@4 d3@2 ~@2 e3@2 ~@2 [g3,b3]@4 ~@4 e3@2 ~@2 [g3,b3]@4 ~@4 [g3,b3]@4 ~@4 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 e3@2 ~@2 e3@2 ~@2 g3@4 e3@2 ~@2 e3@2 ~@2 e3@2 ~@2 g3@4 e3@2 ~@2 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 f#3@4 d3@2 ~@2 e3, ~@39 d3@2 ~@14 d3@2 ~@14 e3@2 ~@14 e3@2 ~@14 d3@2 ~@14 d3@2 ~@10 e3@2 ~@10 e3@2 ~@6 e3@2 ~@14 a3 ~@15 a3 ~@15 b3 ~@15 b3 ~@15 a3 ~@15 a3 ~@8]/8", // F#m G F#m G
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.2)

// other · brass section · "Brass"
const brass_section = note("<A ~@3 B ~@3 B ~@14 C@2 D@2 A ~@3 B ~@4>".pickRestart({
  A: "~@3 b3@3 ~ b3@3 ~@5 a3@3 ~ a3@3 ~ b3@3 ~@6", B: "~@15 e4@3 ~@5 f#4@3 ~@6",
  C: "[~@31 f#4@3 ~ f#4@3 ~@5 e4@3 ~ e4@3 ~@5 d4@3 ~ d4@3 ~@2]/2",
  D: "[~@3 b3@3 ~ b3@3 ~@5 a3@3 ~ a3@3 ~ b3@3 ~@5 f#4@3 ~ f#4@3 ~@5 e4@3 ~ e4@3 ~@5 d4@3 ~ d4@3 ~@2]/2",
})).s("gm_brass_section").gain(0.5).pan(0.7)

// other · alto sax
const alto_sax = note("<A@4 B C@4 ~@14 D@2 E@2 F@4 G@3 H@2>".pickRestart({
  A: "[~@3 b2@3 ~ b2@3 ~@5 a2@3 ~ a2@3 ~ d3@5 e3 [f3,g3] ~ [b3,c4] ~@59 b3@4 a3@23 ~ b3@9, ~@23 b2@3 ~@4 a3@2 ~@96, ~@31 d4@59 ~@38]/4", // Fsus2 Cmaj7
  B: "~@23 d3@5 e3 [f3,g3] ~ [b3,c4], ~@15 a3", // Fsus2 Cmaj7
  C: "[d4@11 b3@3 ~ a3@11 ~ g3@4 f#3@12 e3@4 d3@12 d3@2 e3@2 d3@27 ~ e3@16 ~@21]/4",
  D: "[~@31 f#3@3 ~ f#3@3 ~@5 e3@3 ~ e3@3 ~@5 d3@3 ~ d3@3 ~@2]/2",
  E: "[~@3 b2@3 ~ b2@3 ~@5 a2@3 ~ a2@3 ~ b2@3 ~@5 f#3@3 ~ f#3@3 ~@5 e3@3 ~ e3@3 ~@5 d3@3 ~ d3@3 ~@2]/2",
  F: "[~@3 [b2,d3]@2 e3@2 [b2,f#3]@3 ~@5 a2@3 ~ a2@3 ~ a3@5 b3 [c4,d4] ~ [f4,g4] ~@51 g4@6 f#4@6 d4@12 b3@13 ~@8, ~@23 b2@3 ~@4 e4@2 ~@96, ~@31 a4@51 ~@46]/4", // Bm B5 Csus2 Fsus2
  G: "[~@27 a3@2 b3@2 d4@11 ~ b3@3 ~ a3@11 ~ b3@4 d4@12 b3@3 ~ a3@11 ~ b3@5]/3",
  H: "[~@3 e3@2 f#3@2 g3@2 a3@2 b3@2 d4@2 b3@4 e3@2 f#3@2 g3@2 a3@2 b3@2 d4@2 b3@5 ~@28]/2",
})).s("gm_alto_sax").gain(0.45).pan(0.4)

// other · alto sax
const alto_sax_2 = note("<A ~@3 B ~@3 B ~@14 C@2 D@2 A ~@3 B ~@4>".pickRestart({
  A: "~@3 f#3@3 ~ f#3@3 ~@5 e3@3 ~ e3@3 ~ f#3@3 ~@6", B: "~@15 a3@3 ~@5 b3@3 ~@6",
  C: "[~@31 c#4@3 ~ c#4@3 ~@5 b3@3 ~ b3@3 ~@5 a3@3 ~ a3@3 ~@2]/2",
  D: "[~@3 f#3@3 ~ f#3@3 ~@5 e3@3 ~ e3@3 ~ f#3@3 ~@5 c#4@3 ~ c#4@3 ~@5 b3@3 ~ b3@3 ~@5 a3@3 ~ a3@3 ~@2]/2",
})).s("gm_alto_sax").gain(0.45).pan(0.3)

// drums · kick
const kick = s("bd").struct("<[~@31 x] [~@7 x ~@7 x ~@7 x ~@7 x]!34 ~>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<A B C B C B C B C B C B C B C B C B C B C B C B C B@2 C B C B C B C B ~>".pickRestart({
  A: "~@3 x ~@11 x ~@3 x ~@3 x ~@8", B: "~@15 x ~@16", C: "~@3 x ~@11 x ~@16",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<[~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x]!35 ~>").gain(0.5)

// drums · bongos
const bongos = s("bongo:18").struct("<A B C B C B C B C ~@8 B C B C B C B C B C B@2 C B C B C B ~>".pickRestart({
  A: "~@15 x ~@3 x ~@3 x ~@8", B: "~@15 x ~@16", C: "~@7 x ~@24",
})).gain(1.3)

// drums · congas
const congas = s("conga:13").struct("<A B C D E B C D F ~@7 G B C D E B C D E B C D B C D E B C D ~>".pickRestart({
  A: "~@11 x ~@3 x ~@3 x ~@3 x ~@7 x", B: "~@3 x ~@7 x ~@7 x ~@3 x ~@8", C: "~@3 x ~@11 x ~ x ~ x ~@3 x ~@7 x",
  D: "~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@7 x", E: "~@3 x ~@11 x ~@5 x ~ x ~@3 x ~@3 x",
  F: "~@3 x ~@11 x ~@5 x ~ x ~@3 x ~@4", G: "~@31 x",
})).gain(1.59)

stack(
  clavinet, bass, percussive_organ, electric_guitar_clean, brass_section, alto_sax, alto_sax_2, kick, snare, hihat,
  bongos, congas
)

More by Bob Marley