Strudelify

Horizon's

Genesis

KeyG majorTempo104 bpm
0:00/0:00
// Horizon's — Genesis
// 104 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 5, 2/4 at bar 10, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 47 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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.

// chords · acoustic guitar nylon · "Harmonics (Nylon)"
const acoustic_guitar_nylon = note("<A@4 ~@24 B C ~@2 D@2 E@4 ~@2 F G@3 ~@3>".pickRestart({
  A: "[~@43 b4@4 e4@4 ~@8 g4@4 ~@11 b4@4 ~@29 b4@6 ~@15, ~@30 b3@14 ~@19 b3@31 ~ b3@17 ~@16, ~@35 d4@11 ~@9 d4@8 ~@23 d4@11 ~@2 d4@15 ~@14, ~@39 g4@8 ~@4 g4@7 ~@13 g4@8 ~@3 g4@7 ~ g4@12 ~ g4@13 ~@12]/4",
  B: "~@7 d5", C: "~@11 d5@4 ~@13 d5@4", D: "[~@19 b4@11 d5@4 a4@6 ~@2 d5@6 ~@2 g4@6 ~@2 d5@6]/2",
  E: "[~@30 b4@4 e4@4 ~@8 g4@4 ~@11 b4@4 ~@28 b4@6 ~@29, ~@2 a4@24 g4@8 ~@4 g4@7 ~@13 g4@7 ~@4 g4@7 ~ g4@12 g4@13 ~@26, ~@10 d5@17 ~@101, ~@18 b3@14 ~@18 b3@31 b3@17 ~@30, ~@22 d4@11 ~@9 d4@8 ~@23 d4@11 ~ d4@15 ~@28]/4",
  F: "~@7 b4, ~@8 b3@7 ~, ~@20 d4@11 ~, ~@3 g4",
  G: "[e4@4 ~@8 g4@4 ~@12 b4@4 ~@3 g4@5 ~@23 b4@9 ~@24, ~@4 g4@7 ~@13 g4@7 ~@9 d4@12 ~ d4@20 ~@23, ~@8 d4@8 b3@32 ~ b3@22 ~@25, ~@22 g4@7 g4@9 ~@10]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.28)

// chords · acoustic guitar nylon · "Harmonics (Nylon)" · soft notes
const acoustic_guitar_nylon_2 = note("<~@2 A ~@32 B C ~@4 D E ~@4>".pickRestart({
  A: "~@3 d4@12 e4@6 ~@11", B: "~@11 d4@5", C: "~ e4@3 ~@12", D: "~@5 d4@3", E: "e4@3 ~@13",
})).s("gm_acoustic_guitar_nylon").gain(0.16)

// chords · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note("<~@3 A@8 B C@3 D@4 E@7 F@2 G H I@4 ~@3 J@3 K ~@2 L@4>".pickRestart({
  A: "[~@22 b3@4 ~@4 b3@5 ~@27 b3@4 ~@8 g3@4 ~@9 c4@2 ~ b3@2 ~@2 c4@4 ~@4 c4@4 g2@3 ~@14 b3@3 ~@4 d3@4 ~@12 d3@4 ~@17 a3@3 b3@3 ~ [a3,c4]@8 ~@18 b3@4 ~@48 g3@4, ~@14 g2@28 g3@15 ~ a3@14 ~@14 a3@3 ~@29 a3@8 ~@8 a3@20 d3@7 ~ d3@34 d3@14 ~@2 d3@15 ~ d3@14 ~@2 d3@12, ~@19 d3@14 ~@2 d3@15 d3@15 ~ d3@14 ~@2 e3@14 ~@2 e3@9 ~@7 d3@15 ~@9 d3@7 ~@5 e4@9 ~@49 b3@7 ~ b3@14 ~@2 b3@7 ~ b3@7 ~ b3@8, ~@26 a3@12 b3@14 ~@2 b3@7 ~@10 b3@7 ~@48 b3@13 ~@3 b3@15 ~@26 [g3,b3]@16 ~@5 a3@14 ~@2 g3@15 ~ a3@14 ~@6, ~@46 g2@29 ~@3 a2@15 ~ g2@11 ~@5 f#2@15 ~ g2@27 ~@5 [f#2,d4]@11 ~@23 g2@30 ~@2 g2@28 ~@4]/8", // Am G D
  B: "~@8 [a3,c4]@3 ~ b3@3 ~ c4@4 ~@4 c4@3 ~ e2@3 ~, a2@15 ~ g2@10 ~@6, ~@4 e3@14 ~@2 e3@7 ~@5", // Am
  C: "[~@12 b3@3 ~@13 d3@4 ~@4 d3@4 ~@16 a3@3 ~ b3@3 ~ [a3,c4]@7 ~ [g3,b3]@16 [c3,e4]@4 g3@4, f#2@15 ~ g2@27 ~ d3@7 ~ d3@37 ~@7, ~@4 d3@15 ~ d3@7 ~@13 e4@8 ~@48, ~@8 a3@8 b3@14 ~@2 b3@15 ~@49, ~@24 a3@19 ~@5 [f#2,d4]@10 ~@38]/3", // Am G C D
  D: "[~@8 f#4@3 ~ d4@3 ~ [b2,d4,g4]@2 ~@6 [c3,e4,a4]@2 ~@6 b4@2 ~@5 d5@5 ~@3 [d#3,d#4,f#4]@2 ~@2 e3@3 ~ [f#3,a4]@2 ~@2 [d#3,f#4] ~@7 b3@4 [e4,g4]@4 b3@4 ~@4 b4@2 ~@2 g4 a4 g4 ~ f#4@3 ~@17 b3@3 ~ e3@2 ~@2 e3@2 f#3 g3@2 b3@2 ~ e4, [f#2,d4]@8 ~@23 [d4,g4]@3 ~@29 [e4,g4]@7 ~ e3@9 e2@36 ~@12, ~@4 a3@11 ~@15 d3@17 ~@16 e2@15 ~ [e4,g4]@3 ~@5 d3@7 ~ c3@18 ~@15, ~@95 e4@7 ~ e4@11 ~@12 d4@2, ~@99 b3@8 g3@8 ~@13]/4", // G Am D#m F#m D#m Em D G5 …
  E: "[~ f#4@2 ~ g4@2 ~@5 c#4@4 f#4@4 c#4@4 d4@2 ~ d4@4 g4@4 ~@15 d4@2 ~@27 g4@4 c#4@4 f#4@4 d4@4 g4@4 d4@2 ~@2 f#4@4 ~@3 g4@4 d4@2 ~@2 f#4@4 ~@4 g4@5 ~@4 [a#2,f#4]@4 c#4@2 ~@2 g#2@4 b3@3 ~@9 a3@3 b3@3 ~@9 d4@4 a3@4 ~@7 g3@3 ~ a3@2 ~@2 f2@2 ~@2 f#2@2 ~@6 b3@2 ~@10 a3@3 ~, ~@8 a#2@13 ~@2 b2@11 d4@6 ~ d4@7 ~@9 c#4@7 ~@2 c#4@7 ~ c#4@7 ~@5 d4@3 ~@17 d4@6 ~@9 c#4@7 ~@2 c#4@7 ~@13 c4@10 ~@5 c4@7 ~@24 b3@11 ~@5 a3@4 ~@8, ~@8 f#4@7 ~@8 f#4@6 ~ g3@14 ~ g3@14 ~@3 g3@14 ~@2 g3@14 ~@2 g3@14 ~ g3@14 ~@2 g3@17 ~@12 e3@7 ~@8 d3@14 ~@2 d3@27 ~@4 e3@7 ~, ~@37 b2@14 ~@3 a#2@14 ~@2 a#2@15 ~ b2@13 ~@3 b2@14 ~ a#2@15 ~@19 a2@15 f#2@8 ~@7 [g2,b3]@14 ~@10 g#2@7 ~ [a2,c4]@11, ~@37 f#4@7 ~ g4@7 ~ f#4@6 ~@2 g4@6 ~@3 f#4@7 ~@65 e4@8 ~@54 e4@7 ~@13]/7", // D#m G Am
  F: "[b3@3 ~@8 d4@3 ~ a3@4 ~@8 g3@2 ~@2 a3@3 ~@4 g3@5 c3@4 g3@3 ~@9 f#4@4 d4, ~@3 c4@4 d3@12 b3@10 ~@6 b3@15 ~@5 a3@9, ~@4 f#2@7 ~@8 g2@15 ~@17 f#2@13, ~@23 d3@17 ~@3 e4@7 ~ d4@10 ~@3]/2",
  G: "~@3 [b2,d4,g4]@3 ~@5 [c3,e4,a4]@3 ~@7 b4@3 ~@8, ~@19 d3@4 ~@9, ~@20 [d4,g4]@3 ~@9", // G Am G5
  H: "~@4 [f#4,a4]@5 ~@11 g4@7 ~@5, ~@3 d3@6 ~@10 [d3,d4]@7 ~@6", // F#m D
  I: "[~@4 a4@8 ~@11 d5@4 ~@8 a4@7 ~ d5@4 ~@3 g4@8 d5@5 ~@3 a4@10 ~@52, ~@3 [d3,f#4]@10 ~@7 d3@80 ~@28, ~@21 b4@3 ~@104, ~@11 g3@4 ~@49]/4", // D
  J: "[~@9 b3@4 ~@4 b3@4 ~@20 b3@4 ~@4 b3@4 ~@8 g3@4 ~@8 c4@2 ~ b3@3 ~ c4@4 ~@4 c4@3 ~ e2@3 ~, ~ g2@31 ~ g2@27 ~@5 a2@15 g2@11 ~@5, ~@5 d3@16 d3@15 ~ d3@14 ~@2 d3@14 ~@2 e3@14 ~ e3@7 ~@5, ~@13 a3@12 b3@14 ~@6 a3@14 ~@13 a3@3 ~@21, ~@29 g3@15 ~@13 b3@7 ~@32]/3",
  K: "~@3 b3 ~@4, f#2@15 ~@17, ~@4 d3@13 ~@15, ~@8 a3@7 ~@17", L: "[~@5 g2@94 ~@29]/4",
})).s("gm_acoustic_guitar_steel").gain(0.46)

stack(acoustic_guitar_nylon, acoustic_guitar_nylon_2, acoustic_guitar_steel)

More by Genesis