Strudelify
Misunderstanding cover art

1980 · Duke

Misunderstanding

Genesis

KeyC majorTempo86 bpm
0:00/0:00
// Misunderstanding — Genesis
// 86 bpm, 4/4, key C major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 64 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(86/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 · piano
const piano = note(`<
  A B A C A D E A C A C A C F A C A C A C G H I@2 J K L M N O P A C Q C R C G H I@2 J K L M N O P A C Q C A C Q C A C Q
  C A C Q C
>`.pickRestart({
  A: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [e4,g4,b4,d5] ~ [e4,g4,b4,d5] ~ [e4,g4,b4,d5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [g4,b4,d5] ~", // Dm Em7 F Am G
  B: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~, ~@6 c5 ~@2 c5 ~@2", // G G5 G G5 G
  C: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  D: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~, ~@6 e5 ~@2 e5 ~@2", // G
  E: "[c4,e4,g4]@5 ~", F: "[c2,c3,c4,e4,g4]@7 ~", G: "[c4,e4,g4]@19 ~@5, [c2,c3]@17 ~@7",
  H: "[g#4,c5,d#5]@5 ~ [g#4,c5,d#5]@4 ~@2 [a#4,d5,f5]@6 [a#4,d5,f5]@5 ~", // G# A#
  I: "[g#4,c5,d#5]@5 ~ [g#4,c5,d#5]@5 ~ [a#4,d5,f5]@5 ~ [a#4,d5,f5]@5 ~", // G# A#
  J: "[g#4,c5,d#5]@5 ~ [g#4,c5,d#5]@5 ~ [a#4,d5,f5]@5 ~ [a#4,d5,f5]@3 ~@3, ~@12 e5 ~@11", // G# A#
  K: "[g4,a#4,d5]@5 ~ [g4,a#4,d5]@5 ~ [g4,a#4,d5]@5 ~ [g4,a#4,d5]@5 ~", // Gm
  L: "[f4,g#4,c5]@5 ~ [g#4,c5]@6 f4 ~ [f4,g#4,c5]@3 ~ [f4,g#4,c5]@5 ~, ~@6 f4@5 ~@13", // Fm G# Fm
  M: "[g4,a#4,d5]@5 ~ [g4,a#4,d5]@6 ~@2 [a#4,d5]@3 ~ [g4,a#4,d5]@5 ~, ~@12 g4@5 ~@7", // Gm A# Gm
  N: "[f4,g#4,c5]@5 ~ [f4,g#4,c5]@6 ~@2 [g#4,c5]@3 ~ [f4,g#4,c5]@5 ~, ~@12 f4@5 ~@7", // Fm G# Fm
  O: "[g4,a#4,d5]@5 ~ [g4,a#4,d5]@5 ~ [g4,a#4,d5]@6 [g4,a#4,d5]@5 ~", // Gm
  P: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a3,a4,c#5,e5] ~ c4 ~", // A
  Q: "[d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [e4,g4,b4,c5] ~ [e4,g4,b4,c5] ~ [e4,g4,b4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [g4,b4,d5] ~", // Dm7 Cmaj7 F Am G
  R: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [e4,g4,b4,d5] ~ [e4,g4,b4,d5] ~ [e4,g4,b4,d5] ~ [f4,a4,c5,d5] ~ [f4,a4,c5,d5] ~ [f4,a4,c5,d5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [g4,b4,d5] ~", // Dm Em7 Dm7 Am G
})).s("gm_piano").gain(0.3).pan(0.7)

// bass · electric bass finger
const bass = note(`<
  A@6 B C@4 D@2 B C@4 D@2 B E F E G H I H J H K C@2 L@2 D@2 B E F E M H J H J H N O@2 D@2 P@2 L@2 P@8
>`.pickRestart({
  A: "[d2@6 e2@6 f2@6 a2@3 ~ g2@23 ~@3]/2", B: "c2@11 ~ e2@4 g2@4 c2@4", C: "[d2@6 e2@6 f2@6 a2@3 ~ g2@22 a1@2 c2@2]/2",
  D: "[d2@6 e2@6 f2@6 a2@3 ~ g2@16 e2@2 g2@2 a2@2 g2@2 e2@2]/2",
  E: "g#1@2 ~@2 g#1@2 g#2@4 g#1 ~ g#1@2 ~@2 g#1@2 g#2@4 g#1 ~",
  F: "g#1 ~@3 g#1@2 g#2@4 g#1 ~ g#1@2 ~@2 g#1@2 g#2 ~ f#1@2 g1@2",
  G: "g#1@2 ~@2 g#1@2 g#2@4 g#1 ~ g#1@2 ~@2 g#1 ~ g#1 ~ g#1 ~ g#1@2",
  H: "g1@2 ~@2 g1@2 g2@4 g1 ~ g1@2 ~@2 g1@2 g2@4 g1@2", I: "f1@2 ~@2 f1@2 f2@4 f1 ~ f1@2 g1@2 f1@2 g#1 ~ g1@2 f1@2",
  J: "f1@2 ~@2 f1@2 f2@4 f1 ~ f1@2 ~@2 f1@2 f2@4 f1@2",
  K: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a1@2 c2@2",
  L: "[d2@6 e2@6 f2@6 a2@3 ~ g2@14 a2@2 g2@2 e2@2 a2@2 g2@2 c2@2]/2",
  M: "g#1@2 ~@2 g#1@2 g#2@4 g#1 ~ g#1@2 ~@2 g#1@2 g#2@4 g#1@2",
  N: "a2@2 a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a1@2 c2@2", O: "[d2@6 e2@6 f2@6 a2@3 ~ g2@20 a2@2 g2@2 e2@2]/2",
  P: "[d2@6 e2@6 f2@6 a2@3 ~ g2@5 ~ g1@2 a1@4 b1@5 ~ c2@3 ~ c#2@4]/2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · pad metallic
const pad_metallic = note("<~@21 A B A B C D E F C G H@4 I@2 J A B A B C D E F C G H@8 K@8>".pickRestart({
  A: "[g#4,c5,d#5]@11 ~ [g#4,d5,f5]@12", B: "[g#4,d#5,g5]@11 ~ [g#4,d5,f5]@11 ~", C: "[a#4,d5,g5]",
  D: "[g#4,c5,f5]@23 ~", E: "[a#4,d5,g5], g2 ~@2", F: "[g#4,c5,f5]", G: "[c#5,e5,a5]@11 ~",
  H: "[[f4,a4,d5]@5 ~ [g4,b4,d5,e5]@5 ~ [a4,c5,f5]@5 ~ [c5,e5,a5]@4 [b4,d5,g5]@22 ~@4]/2", // Dm Em7 F Am G
  I: "[[f4,a4,d5]@5 ~ [g4,b4,d5,e5]@5 ~ [a4,c5,f5]@5 ~ [c5,e5,a5]@4 [b4,d5,g5]@14 [d5,g5,c6]@4 ~@8]/2", // Dm Em7 F Am G Csus2
  J: "g4@5 ~, c5@3 ~, e4 ~", K: "[[a4,d5,f5]@5 ~ [b4,d5,e5,g5]@5 ~ [c5,f5,a5]@5 ~ [e5,a5,c6]@4 [d5,g5,b5]@22 ~@4]/2",
})).s("gm_pad_metallic").gain(0.26)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A@6 B C@4 D@2 B C@4 D@2 B E F G@2 H I H I H J C@4 D@2 B E F G@2 H I H I H J K@2 D@2 L@2 C@2 L@8
>`.pickRestart({
  A: "[d3@6 e3@6 f3@6 a3@3 ~ g3@23 ~@3]/2", B: "c3@11 ~ e3@4 g3@4 c3@4", C: "[d3@6 e3@6 f3@6 a3@3 ~ g3@22 a2@2 c3@2]/2",
  D: "[d3@6 e3@6 f3@6 a3@3 ~ g3@16 e3@2 g3@2 a3@2 g3@2 e3@2]/2", E: "g#2@6 g#3@5 ~ g#2@6 g#3@6",
  F: "g#2@5 ~ g#3@6 g#2@6 g#3@6", G: "g#2 g#3 g#2 g#3", H: "g2 g3 g2 g3", I: "f2 f3 f2 f3",
  J: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a2@2 c3@2", K: "[d3@6 e3@6 f3@6 a3@3 ~ g3@20 a3@2 g3@2 e3@2]/2",
  L: "[d3@6 e3@6 f3@6 a3@3 ~ g3@6 g2@2 a2@4 b2@6 c3@4 c#3@4]/2",
})).s("gm_overdriven_guitar").gain(0.19).pan(0.3)

// other · soprano sax
const soprano_sax = note(`<
  ~@21 A B C D E F G H I J ~@7 K L M N O F P H Q R S T S U S T S V W X W X Y X W X
>`.pickRestart({
  A: "~@6 g#4@2 g#4@2 g#4 ~ a#4@2 ~@2 a#4@3 ~@5", B: "~@6 g4 ~ f4 ~ g4@3 ~ f4@6 ~@4",
  C: "~@4 g#4 ~ g#4@3 ~ g#4@2 a#4@2 ~@2 a#4 ~ g4@2 ~@2 g4 ~", D: "a#3@3 ~@3 g4@2 ~@2 g4@2 f4@6 ~@6",
  E: "~@4 f4 ~ f4@3 ~ f4 ~ f4 ~ f4 ~ f4@4 ~@2 f4 ~", F: "f4@2 ~@2 d#4@5 ~@15",
  G: "~@8 f4 ~ d4 ~ f4 ~ d4 ~ f4@5 ~ a#4 ~", H: "a#4 ~ g#4 ~ f4@2 ~@6", I: "~@8 f4 ~ d4 ~ f4 ~ d4 ~ g4@4 ~@4",
  J: "~@4 a4 ~ a4 ~ a4 ~ a4@3 ~@3 a4@3 ~@5", K: "~@4 g#4 ~ g#4@2 g#4@2 g#4 ~ a#4 ~ a#4 ~ a#4@2 a#4@4 ~@2",
  L: "~@6 g4@2 ~@2 g4@3 ~ f4@6 ~@4", M: "~@4 g#4 ~ g#4 ~ g#4@2 g#4@2 a#4@2 ~@2 g4@2 ~@2 d#4@2 ~@2",
  N: "c4@3 ~@3 g4@2 ~@2 g4@2 f4@6 ~@6", O: "~@4 f4 ~ f4@3 ~ f4 ~ f4@4 ~@2 f4@3 ~ f4 ~",
  P: "~@6 f4 ~ f4 ~ f4 ~ f4@5 ~@3 a#4 ~ a#4 ~", Q: "~@6 f4 ~ f4 ~ d4 ~ g4@3 ~ f4@4 ~@4",
  R: "~@6 a4 ~ a4 ~ a4@2 a4@6 ~@6", S: "~@11 a4", T: "~@3 g4@7 ~@14", U: "g4@5 ~@7", V: "g4@10 ~@12 f4 ~",
  W: "a4 ~ f4 a4 ~ f4 a4 ~ e4 f4 c4 d4", X: "g4@4 ~@2 d3 ~ d3@2 c3@2 e3@3 ~ d3@4 c3@2 f4@2, ~@22 a2 ~",
  Y: "a4@2 ~@2 f4@2 a4@2 ~@2 f4@2 a4@2 ~@2 e4@2 f4@2 c4 ~ d4@2",
})).s("gm_soprano_sax").gain(0.22)

// other · electric guitar clean
const electric_guitar_clean = note("<~@28 A B ~@13 C D E F G ~@16>".pickRestart({
  A: "~@3 f4 c4 g#3", B: "g3@11 ~@13", C: "~@5 f4@3 c4@2 g#3@2", D: "g3@11 ~@5 d4@7 ~, ~@3 a#3@2 ~",
  E: "~@4 c4 g#3, ~@5 f4@4 ~@3", F: "g3@11 ~@5 g4@7 ~, ~@6 a#3@5 ~, ~@7 d4@4 ~",
  G: "~@12 a4@11 ~, ~@2 c#4@5 ~, ~@4 e4@7 ~",
})).s("gm_electric_guitar_clean").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A B A C A B D E A F C A C A@2 F C A C F A E B@3 E B E F B G A C F C F@2 H A B F B E B I J B G A K F J L K M N A O F O
  P Q F Q
>`.pickRestart({
  A: "x ~@4 x!2 ~ x ~@2 x", B: "x ~ x ~@2 x!2 ~ x ~ x!2", C: "x ~ x ~@2 x!2 ~ x ~@3", D: "x ~@4 x!2 ~ x ~@3",
  E: "x ~@4 x!2 ~ x ~ x!2", F: "x ~ x ~@2 x!2 ~ x ~@2 x", G: "x!12", H: "x ~ x ~ x!2 ~ x!2 ~ x ~",
  I: "x ~ x ~@2 x!2 ~ x ~ x ~", J: "~@2 x ~ x!3 ~ x ~ x!2", K: "~@2 x ~@2 x!2 ~ x ~ x ~", L: "x ~ x ~@3 x ~ x ~@2 x",
  M: "x!2 ~@3 x!2 ~ x ~@2 x", N: "~@2 x ~ x!3 ~ x!2 ~ x", O: "~@2 x ~@2 x!2 ~ x ~@3", P: "x ~@4 x!2 ~@4 x",
  Q: "~@2 x ~@2 x!2 ~ x ~@2 x",
})).gain(0.28)

// drums · snare
const snare = s("sd").struct("<A@6 B A@5 C D A@6 E A@5 C A@3 F A@6 G A@3 H A@3 H A I A@7 J A@3 C A@4>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@13 x!3 ~", C: "~@3 x ~@5 x ~ x", D: "~@3 x ~@6 x ~", E: "~@6 x ~@7 x ~@3 x ~@2 x ~@2",
  F: "x ~@5 x!3 ~ x!2", G: "~@3 x ~@2 x ~@2 x ~ x", H: "~@3 x ~@3 x ~ x!2 ~", I: "x ~@2 x ~ x!7",
  J: "~ x!3 ~@3 x ~@2 x ~",
})).gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 [~ x!5 ~@3 x ~@2] ~@16 [~ x!2 ~ x ~@7] ~@16>").gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@24 [~@10 x!2] ~@3 [~@10 x!2] ~@16 [~@5 x] ~@18>").gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B@2 C B@2 D A B@4 E D A B F B@3 G ~@10 A C B C B@3 ~@10 H I J K J I J L ~@8
>`.pickRestart({
  A: "~@2 x!10", B: "x!12", C: "x!10 ~ x", D: "~@2 x!4 ~@6", E: "x!8 ~ x!3", F: "x ~ x!10", G: "~ x!5 ~@6",
  H: "~@2 x!9 ~", I: "~ x!9 ~ x", J: "x!11 ~", K: "~ x!11", L: "~ x!8 ~ x!2",
})).gain(0.32)

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

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~@16 A ~@11 A ~ A ~@14 A ~@3 A ~ B ~@8>".pickRestart({
  A: "~@5 x", B: "~@3 x",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  A ~@5 B A ~@5 B A ~@5 B A ~@3 A ~ A ~@3 A ~@6 A ~@3 A ~@3 A ~ C ~ D ~ D ~ D ~ C ~ D ~ E ~ D ~
>`.pickRestart({
  A: "x", B: "x ~@2 x!2 ~", C: "x ~@10 x", D: "~@11 x", E: "x ~@5 x ~@4 x",
})).gain(0.28)

// drums · ride
const ride = s("rd").struct("<~@21 A B@3 C B D B@3 ~@7 A B@3 A C E C F B G ~@7 H D I D J D I D>".pickRestart({
  A: "~@2 x!10", B: "x!12", C: "x ~ x!10", D: "~ x!11", E: "~ x!3 ~ x!7", F: "~ x!4 ~ x!6", G: "x", H: "~@2 x!9 ~",
  I: "x!11 ~", J: "~@2 x!4 ~@2 x!3 ~",
})).gain(0.28)

stack(
  piano, bass, pad_metallic, overdriven_guitar, soprano_sax, electric_guitar_clean, kick, snare, snare_soft, low_tom,
  pedal_hat, mid_tom, open_hat, crash, ride
)

More by Genesis