Strudelify
Many Too Many cover art

1978 · And Then There Were Three

Many Too Many

Genesis

KeyF♯ minorTempo60 bpm
0:00/0:00
// Many Too Many — Genesis
// 60 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · fretless bass · "Bass"
const bass = note(`<
  ~@6 A B C D E F G H I J K L K M N O P@2 D E F G H I J K L K M N O P@2 D E F G Q R S D E F G T ~
>`.pickRestart({
  A: "f#2 f2", B: "d#2@2 d2 g2", C: "f#2@12 f#2 f2 d#2 d2", D: "c#2@7 c#2 g#1@6 ~ g#1",
  E: "f#1@5 ~ f#1@2 g#1@3 ~ d#3@4", F: "c#3@6 c#2@2 g#1@6 ~ g#1", G: "f#1@6 ~ f#1 g#1@4 g#1@4",
  H: "f#1@6 f#1@2 f1@6 ~ f1", I: "d#1@6 ~ d#1 d2@4 g1@3 ~", J: "d2@8 d2@4 a1 b1 d2 b1", K: "d2@7 ~ d2@4 a3 g3 f#3 e3",
  L: "d3 a2 d2@6 d2@4 a1 b1 d2 b1", M: "d3 a2 d2@6 c#2@4 c#2@4", N: "b1@6 b1@2 f#1@7 f#1",
  O: "b1@5 ~ b1@2 f#1@4 f#3 e3 d#3 c#3", P: "[b2 f#2 b1@6 f#1@6 g#1@17 ~]/2", Q: "f#1@5 ~ f#1@2 f1@5 ~ f1@2",
  R: "d#1@3 d#1 d2@2 g1@2", S: "f#1@6 f#1 ~ f#1@4 f#2 f2 d#2 d2", T: "f#1@3 ~",
})).s("gm_fretless_bass").gain(0.4)

// chords · piano
const piano = note(`<
  A B A B A C D E F G H I J K L M N O@2 P Q@2 R@2 S T S U K L M N O@2 P Q@2 R@2 A B A V@2 E F G H I J W@2
>`.pickRestart({
  A: "~@3 c#4@2 ~@2 c#3 ~@7 g#2, c#3@7 ~ [g#2,d#4]@4 g#2@3 ~, e4@5 ~@5 g#3@3 [g#3,b3,d#4]@3, [g#3,c#4]@2 g#3@3 [g#3,c#4,e4]@3 b3@3 b3@2 ~@3, ~ e3@5 e3@2 ~ d#3@5 d#3@2", // G#5 G#m C#5 C#m
  B: "~@3 a3@2 ~@2 f#2 ~@7 g#2, f#2@7 ~ g#2@6 [b3,d#4]@2, c#4@5 ~@3 [b3,d#4]@4 f#4@4, [f#3,a3]@2 f#3@3 [f#3,a3,c#4]@3 ~ g#3@2 g#3 [b3,d#4] g#3@3, ~ c#3@5 c#3@2 ~@2 [c#4,e4]@6", // B F#m B C#m
  C: "~@3 a3@2 ~@2 f#2 ~@7 g#2, f#2@7 ~ [g#2,g#3,b3]@4 ~ d#4@3, c#4@5 ~@3 d#4@2 d#4@2 c#4@2 c#4@2, [f#3,a3]@2 f#3@3 [f#3,a3,c#4]@3 ~ [c#4,e4]@3 g#3@4, ~ c#3@5 c#3@2 ~@3 g#2@4 ~", // G#m F#m C#m
  D: "~@7 f#2 ~@7 f2, [f#2,a#4]@8 f2@7 ~, [a#3,c#4]!2 [g#3,c#4]!2, ~ f#3@2 f#3 ~ f3@2 f3", // F# A#m C#5
  E: "f#3@2 ~@5 d#2 [d2,d3,g3,b3,d4]@4 [g2,g3,b3,d4,g4]@4, d#2@7 ~@9, [a#3,d#4]!2 ~@2, ~ f#3@2 f#3 ~@4", // G D#5
  F: "[f#3,a#3]@4 [f#3,a#3]@4 [f#3,a#3]@4 f#4 f4 d#4 d4, [f#2,d#4]@3 ~", // F# D#m
  G: "[e3,g#3,c#4]@4 e3@2 ~ c#3 [g#3,b3,d#4]@4 g#3@2 ~ g#2, c#2@8 g#2@7 ~, ~ [g#3,c#4] ~ [b3,d#4], ~@3 e3 ~@3 g#3", // C#m G#m C#5 B
  H: "~@7 f#2 [g#3,b3] g#3 c#4 ~@4 g#2, f#2@7 ~ g#2@7 ~, [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 d#4 e4 f#4@2, ~@2 c#3@4 c#3@2 ~@3 g#3@2 g#3@3, ~@6 b3 [b3,d#4]", // G#m F#m B
  I: "e3@2 ~@2 g#3@2 ~ c#3 g#3@2 g#3@2 g#3@2 ~ g#2, c#3@3 g#3 ~@3 g#3, [g#3,c#4] [c#4,e4] [b3,d#4]!2, ~@2 e3@6 g#2@7 ~", // C#5 C#m B
  J: "~@4 [f#3,a3,c#4]@2 c#3 f#2 ~@7 g#2, f#2@7 ~ [g#2,g#3,b3]@3 g#2@4 ~, [f#3,a3,c#4]@2 ~@2 d#4!2 g#3@2, ~@2 c#3@4 ~@3 e4@3 c#4@2 c#4@2, ~@13 d#4@3", // F#m G#m F#m
  K: "c#3@2 ~@5 f#2 f3@2 f3@2 f3@2 ~ f2, f#2@7 ~ f2@7 ~, [f#3,a#3,c#4]!2 [g#3,c#4]!2, ~ c#3@2 c#3 ~@3 f3", // F# C#5
  L: "f#3@2 ~@5 d#2 d3@2 ~@2 g3@2 g3@2, d#2@7 ~ d2@8, [a#3,d#4]@2 [a#3,d#4]@2 ~ d3@3, ~ f#3@2 f#3 [g3,b3,d4]@2 [g2,b3,d4,g4]@2", // D#5 G
  M: "~@6 d3@2 d3@2 d3@2 d3@2 ~ d2, d2@8 d2@7 ~, [f#3,a3,d4]!2 [g3,b3,d4]!2, ~ d3@2 ~@4 d3", // D G
  N: "d3@2 ~@4 d3@2 d3@2 ~@5 d2, d2@8 d2@7 ~, [f#3,a3,d4]!2 [g3,b3,d4]!2, ~ d3@2 ~@2 d3@2 d3", // D G
  O: "[~@6 d3@2 d3@2 d3@2 d3@2 ~@8 d3@2 d3@2 ~@5 d2, d2@8 d2@7 d2@9 d2@7 ~, [f#3,a3,d4]!2 [g3,b3,d4]!2 [f#3,a3,d4]!2 [g3,b3,d4]!2, ~ d3@2 ~@4 d3 ~ d3@2 ~@2 d3@2 d3]/2", // D G D G
  P: "d3@2 ~@4 d3@2 ~@7 c#2, d2@8 c#2@7 ~, [f#3,a3,d4]!2 [f#3,a3,c#4]!2, ~ d3@2 ~@2 c#3@2 c#3", // D F#m
  Q: "f#3@2 f#3@2 f#3@2 ~ b2 ~@7 f#2, [b1,b2]@8 f#2@7 ~, [b3,d#4]@2 [b3,d#4]@2 ~ c#3@2 c#3, ~@3 f#3 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2", // B F#m
  R: "[f#3@2 ~@5 b2 c#3@2 ~@2 [f#3,a3,c#4]@2 ~@16 [g#3,g#4]@2, [b1,b2]@4 f#2@3 [g#2,d#3,c4]@9, [b3,d#4]@2 [b3,d#4]@2 ~ c#3@2 d#4@5 g#4 [f#4,f#5]@3, ~ f#3@2 f#3 [f#3,a3,c#4]@2 ~ g#3@7 [d#4,d#5]@2, ~@3 g#5]/2", // F#m G# B G# B F# F#m D#
  S: "~@7 c#3 d#3@2 ~@5 g#2, c#3@7 ~ g#2@7 ~, [g#3,c#4]!2 [g#3,b3,d#4]!2, ~ e3@2 e3 ~ d#3@2 d#3", // C#5 G#m
  T: "c#3@2 ~@5 f#2 ~@7 g#2, f#2@7 ~ g#2@7 ~, [f#3,a3,c#4]!2 [g#3,b3,d#4]!2, ~ c#3@2 c#3 ~ d#3@2 d#3", // F#m G#m
  U: "~@7 f#2 ~@7 g#2, f#2@7 ~ [g#2,g#3,b3]@3 g#3@5, [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 d#4!2 [g#2,c#4] c#4, ~@2 c#3@4 c#3@2 ~ e4@3 ~ d#4@3", // G#m F#m C#5
  V: "[~@3 a3@2 ~@2 f#2 ~@15 f#2 ~@7 f2, f#2@7 ~ [g#2,g#3,b3]@4 ~ d#4@3 [a#3,c#4]@2 f#3@2 [a#3,c#4]@2 f#3@2 ~@2 f3@4 f3@2, c#4@5 ~@3 d#4@2 d#4@2 c#4@2 c#4@2 [f#2,a#4]@8 f2@7 ~, [f#3,a3]@2 f#3@3 [f#3,a3,c#4]@3 ~ [c#4,e4]@3 g#3@12 [g#3,c#4]@4 [g#3,c#4]@4, ~ c#3@5 c#3@2 ~@3 g#2@4 g#2@9 ~@8]/2", // G#m A#m F# F#m C#m C#5
  W: "[f#2,c#3,f#3,a#3,c#4]/2", // F#
})).s("gm_piano").gain(0.6)

// chords · string ensemble 2 · "stringsyn"
const string_ensemble_2 = note(`<
  ~@2 A B A B C D E F@4 G H I J I J K L@2 M@2 F@4 G H I J I J K L@2 M@2 N@4 G H O P@4 Q ~
>`.pickRestart({
  A: "[c#4,e4] [b3,d#4], g#4@15 ~", B: "[a3,c#4,e4] [g#3,b3,d#4]", C: "[f#3,a#3,c#4] [c#4,f4,g#4]",
  D: "[d#4,f#4,a#4]@7 ~ [g3,b3,d4,g4]@7 ~", E: "[f#3,a#3,c#4,f#4]@3 ~",
  F: "[[g#3,c#4,e4]@7 ~ [g#3,b3,d#4]@7 ~ [f#3,a3,c#4,e4]@7 ~ [g#3,b3,d#4]@8 [g#3,c#4,e4]@8 [g#3,b3,d#4]@8 [f#3,a3,c#4,e4]@7 ~ [g#3,b3,d#4]@8, g#5]/4", // C#m G#m F#m7 G#m C#m G#m F#m7 G#m
  G: "[f#3,a#3,c#4,f#5] [f3,g#3,c#4,g#5]", H: "[f#3,a#3,d#4,a#5] [g3,b3,d4,g5]", I: "[f#3,a3,d4,a5] [g3,b3,d4,b5]",
  J: "[f#3,a3,d4,d6] [g3,b3,d4,b5]", K: "[f#3,a3,d4,a5] [f#3,a3,c#4,f#5]", L: "[f#3,b3,d#4,f#5] [f#3,a3,c#4,a5]",
  M: "[[f#3,b3,d#4,f#5]@4 [f#3,a3,c#4,a5]@3 [g#3,c4,d#4,g#5]@3 ~@6]/2", // B F#m G#
  N: "[[g#3,c#4,e4]@7 ~ [g#3,b3,d#4]@7 ~ [f#3,a3,c#4,e4]@7 ~ [g#3,b3,d#4]@7 ~ [g#3,c#4,e4]@7 ~ [g#3,b3,d#4]@8 [f#3,a3,c#4,e4]@7 ~ [g#3,b3,d#4]@8, g#5]/4", // C#m G#m F#m7 G#m C#m G#m F#m7 G#m
  O: "[f#3,a#3,c#4,f#5]@13 ~@3", // F#
  P: "[[g#3,c#4,e4]@8 [g#3,b3,d#4]@7 ~ [f#3,a3,c#4,e4]@7 ~ [g#3,b3,d#4]@7 ~ [g#3,c#4,e4]@7 ~ [g#3,b3,d#4]@8 [f#3,a3,c#4,e4]@7 ~ [g#3,b3,d#4]@8, g#5]/4", // C#m G#m F#m7 G#m C#m G#m F#m7 G#m
  Q: "[f#3,a#3,c#4]@3 ~", // F#
})).s("gm_string_ensemble_2").gain(0.28)

// drums · kick
const kick = s("bd").struct("<~@9 A@5 B A@4 C A B D ~ A@5 B A@4 C A B D ~ A@11 E ~>".pickRestart({
  A: "x ~@6 x!2 ~@6 x", B: "x ~@6 x!2 ~@7", C: "x!2", D: "x ~@6 x!2 ~@5 x ~", E: "x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@9 A@5 B A@4 C A@3 ~ A@5 B A@4 D A@3 ~ A@11 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x ~@2", C: "~ x!3 ~@4", D: "~@2 x ~ x ~ x!2 ~@8",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@5 B ~@4 C ~ B D A ~@5 B ~@4 E ~ B D A ~@13>".pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@6 x ~@8 x", D: "~@13 x ~@2", E: "~@6 x ~@4 x ~@3 x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@9 A B@4 C ~@9 B@5 C ~@9 B@11 ~@2>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4",
})).gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@5 B ~@4 C ~ B A B ~@5 B ~@4 D ~ B A B ~@13>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@2 x ~ x ~@5 x!2 ~ x!3", D: "~@2 x ~@2 x ~ x",
})).gain(0.4)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@21 A ~ B ~@12 A ~ B ~@13>".pickRestart({
  A: "~@13 x ~@2", B: "~@12 x!2 ~@2",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<~@14 [~ x] ~@14 [~ x] ~@22>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@14 A ~@4 B ~@3 C ~@5 A ~@4 D ~@3 C ~@13>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@10 x!2 ~ x!2 ~", C: "~@13 x ~@2", D: "~@9 x ~@2 x ~@3",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@5 B C@4 B C D ~@7 B C@4 B C D ~@12 A ~>".pickRestart({
  A: "x", B: "x!2 ~@2", C: "~ x ~@2", D: "x ~ x ~@4 x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<~@15 A B@3 C A B D ~@7 A B@3 C A B D ~@14>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!5 ~@3", D: "~ x!6 ~",
})).gain(0.4)

stack(
  bass, piano, string_ensemble_2, kick, snare, low_tom, hihat, mid_tom, mid_tom_soft, open_hat, high_tom, crash, ride
)

More by Genesis