Strudelify
Iron Lion Zion cover art

Natural Mystic

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 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 35 ms ahead of the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: edit a riff to change every repeat.

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

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

// chords · percussive organ · "Organ"
const percussive_organ = note("<~ A B C D C D E F ~@2 G H G H G H C I J@2 C I K L M L M A B C D C D E N>".pickRestart({
  A: "[d4,f#4,a4]", B: "[e4,g4,b4]", C: "[f#4,a4,d5]", D: "[g4,b4,e5]", E: "[a4,d5,f#5]",
  F: "[b4,e5,g5]@2 [b4,e5,g5]!2", G: "~@4 [b4,d5,f#5] ~@7 [b4,d5,f#5] ~@3", H: "~@4 [b4,c#5,e5] ~@7 [b4,c#5,e5] ~@3",
  I: "[a4,c#5,e5]", J: "[f#4,b4,d5]/2", K: "[f#4,b4,d5]", L: "[c#5,f#5]!2 ~ [b4,e5]!2 ~ [a4,d5]!2",
  M: "~ [f#4,b4]!2 ~ [e4,a4]!2 [f#4,b4] ~", N: "[b4,e5,g5] ~",
})).s("gm_percussive_organ").gain(0.3).pan(0.6)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note("<~ A B A C D E D F ~@18 G A B A C D E D H>".pickRestart({
  A: "d3 ~ d3 ~ [d3,f#3,a3]@2 d3 ~ d3 ~ d3 ~ [d3,f#3,a3]@2 d3 ~", // D
  B: "e3 ~ e3 ~ [e3,g3,b3]@2 e3 ~ e3 ~ e3 ~ [e3,g3,b3]@2 e3 ~", // Em
  C: "e3 ~ [e3,g3,b3]@2 ~@2 e3 ~ [e3,g3,b3]@2 ~@2 [e3,g3,b3]@2 ~@2", // Em
  D: "d3 ~ d3 ~ [f#3,a3]@2 d3 ~ d3 ~ d3 ~ [f#3,a3]@2 d3 ~", E: "e3 ~ e3 ~ [g3,b3]@2 e3 ~ e3 ~ e3 ~ [g3,b3]@2 e3 ~",
  F: "e3 ~ [g3,b3]@2 ~@2 e3 ~ [g3,b3]@2 ~@2 [g3,b3]@2 ~@2", G: "~@2 b2 ~ b2 ~@3 a2 ~ a2 ~ b2 ~@3", H: "e3 ~@15",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.2)

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

// other · alto sax
const alto_sax = note("<A B@2 C@2 D E F@2 ~@15 G H G I J@2 K L M@2 N O>".pickRestart({
  A: "~@2 b2 ~ b2 ~@3 a2 ~ a2 ~ d3@2 e3 [f3,g3,a3], ~@12 b2 ~@3", B: "[[b3,c4] ~@29 b3@2, d4@29 ~@3]/2",
  C: "[a3@12 b3@7 ~@9 d3@2 e3 [f3,g3,a3]]/2", D: "[b3,c4] ~@5 b3@2 a3@6 g3@2, d4@3 ~@5", E: "f#3@6 e3@2 d3@6 d3 e3",
  F: "[d3@7 e3@4 ~@5]/2", G: "f#3 ~ f#3 ~@3 e3 ~ e3 ~@3 d3 ~ d3 ~", H: "~@2 b2 ~ b2 ~@3 a2 ~ a2 ~ b2 ~@3",
  I: "~@2 [b2,d3] e3 [b2,f#3] ~@3 a2 ~ a2 ~ a3@2 b3 [c4,d4,e4], ~@12 b2 ~@3", // Bm B5 C
  J: "[[f4,g4] ~@25 g4@3 f#4@3, a4@25 ~@7]/2", K: "d4@3 b3@3 ~@2", L: "~@14 a3 b3", M: "d4@6 b3@2 a3@5 ~ b3@2",
  N: "~@2 e3 f#3 g3 a3 b3 d4 b3@2 e3 f#3 g3 a3 b3 d4", O: "b3@3 ~@13",
})).s("gm_alto_sax").gain(0.45).pan(0.4)

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

// drums · kick
const kick = s("bd").struct("<~ [x!4]!34 x>").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: "~ x ~@2 x!3 ~", B: "~ x", C: "~ x ~@2 x ~@3",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<[~ x!7] [x!8]!34 x>").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: "~@4 x!3 ~", B: "~ x", C: "~ x ~@2",
})).gain(1.3)

// drums · congas
const congas = s("conga:13").struct("<A B C D E B C D E ~@8 B C D E B C D E B C D B C D E B C D F>".pickRestart({
  A: "~@3 x!4 ~", B: "x!2 ~ x ~ x!2 ~", C: "~@2 x ~@5 x!3 ~ x ~@3", D: "x!4 ~ x!2 ~", E: "x ~ x ~@5 x ~@2 x!2 ~ x ~",
  F: "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