Strudelify

In Your Eyes

Peter Gabriel

KeyA majorTempo175 bpm
0:00/0:00
// In Your Eyes — Peter Gabriel
// 175 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 268 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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
const bass = note(`<
  ~@8 A@2 ~@2 B@2 C@2 B@2 ~ D B@2 E@2 B@2 E@2 B@2 F@2 B@2 G@2 B@2 G@2 B@2 F@2 B@2 H@2 I@2 J@2 I@2 K@2 L@2 M@2 N@2 K@8
  O@2 P Q R@2 P S T@2 P U O@2 V Q T@2 V U W@2 V X Y@6 Z@2 A@2 ~@2 B@2 C@2 B@2 ~ D B@2 E@2 B@2 E@2 B@2 F@2 B@2 G@2 B@2
  G@2 B@2 F@2 B@2 H@2 I@2 J@2 I@2 K@2 L@2 M@2 N@2 K@8 O@2 P Q R@2 P S T@2 P U O@2 V Q T@2 V U W@2 V X O@2 P Q R@2 P S
  T@2 P U O@2 V Q T@2 V U W@2 V X O@2 P Q R@2 P S T@2 P U O@2 V Q T@2 V U W@2 V X O@2 P Q R@2 P S T@2 P U O@2 V Q T@2 V
  U W@2 V X AA@8
>`.pickRestart({
  A: "[d2@21 ~@11]/2", B: "[d2@5 f#2@3]/2", C: "[g2@5 a2@3]/2", D: "~ a2", E: "[g2@3 ~]/2", F: "[g2@25 ~@7]/2",
  G: "[g2@3 a2]/2", H: "[g2@24 a2@7 ~]/2", I: "[a2@3 b2]/2", J: "[g2@29 ~@3]/2", K: "g2/2", L: "[a2@23 ~ a2@8]/2",
  M: "[g2@31 ~]/2", N: "[a2@11 ~ a2@4]/2", O: "[e2@11 ~ e2@4]/2", P: "c#2@13 ~ c#2@2", Q: "d2@13 ~ d2 ~",
  R: "[e2@21 ~ e2 ~ f#2@7 ~]/2", S: "d2@13 ~ d2@2", T: "[e2@21 ~ e2 ~ f#2@8]/2", U: "d2@6 ~ d2", V: "c#2@6 ~ c#2",
  W: "[e2@21 ~@3 e2@8]/2", X: "d2@11 ~@3 d2@2", Y: "[e2@15 ~]/2", Z: "[e2@31 ~]/2", AA: "e2/8",
})).s("gm_fretless_bass").gain(0.6).pan(0.7)

// bass · fretless bass · soft notes
const bass_soft = note(`<
  ~@9 A B@2 ~@6 C@2 ~@3 D ~@3 D ~@3 E ~@11 E ~@59 A B@2 ~@6 C@2 ~@3 D ~@3 D ~@3 E ~@11 E ~@130
>`.pickRestart({
  A: "~ f#2@3", B: "[g2@3 a2]/2", C: "[g2@25 ~@7]/2", D: "~ a2", E: "~@8 a2@7 ~",
})).s("gm_fretless_bass").gain(0.36).pan(0.7)

// other · percussive organ · "Organ 2"
const percussive_organ = note(`<
  ~@94 A@8 ~@102 B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D E@2 C D B@2 C D
  F@2 ~@10
>`.pickRestart({
  A: "[e6@125 ~@3]/8", B: "b5/2", C: "c#6", D: "d6 c#6", E: "[b5@31 ~]/2", F: "[b5@15 ~]/2",
})).s("gm_percussive_organ").gain(0.56).pan(0.6)

// other · marimba
const marimba = note("<~@61 A B@8 ~@85 A B@8 ~@104>".pickRestart({
  A: "~@8 f#4@3 ~ g4@3 ~", B: "a4/8",
})).s("gm_marimba").gain(0.64)

// chords · kalimba
const kalimba = note(`<
  ~@94 A ~ A ~ A ~ A ~ B C@6 D C@2 E D C@3 D C@3 D C@4 D C@2 D C@3 D C@3 D C@4 ~@126
>`.pickRestart({
  A: "c#5 ~ c#5 b4 ~ a4 ~ b4", B: "~@2 [b4,d5] ~@3 [b4,d5] ~", C: "~@4 [b4,d5] ~@7 [b4,d5] ~@3",
  D: "~@4 [b4,d5] ~@7 [b4,d5] ~ [b4,d5] ~", E: "~@4 [b4,d5] ~@7 [b4,d5]@2 ~@2",
})).s("gm_kalimba").gain(0.36).pan(0.3)

// drums · kick
const kick = s("bd").struct("<A ~ A ~ A ~ A ~ B@83 C B@93 C B@23 C B@23 C B@23 C B@3 D A ~@5>".pickRestart({
  A: "x", B: "x!2", C: "x!2 ~@2 x ~@3", D: "x ~ x!2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@48 A B A B A B A B A B A B A B A B A B A B A B C B A B A B A@3 B A B A B A B A B A B A B A B A B A B A B A B ~@40 A
  B A B A B A B A B A B A B A B A B A B A B C B A B A B A@3 B A B A B A B A B A B A B A B C B A B A B A@3 B A B A B A B
  A B A B A B A B C B A B A B A@3 B A B A B A B A B A B A B A B C B A B A B A@3 B A B A B A B A B A B A B A B@2 D ~@6
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x", C: "~@3 x ~ x ~@2", D: "~@15 x",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@48 A B C D C D C E C B A F A B A B A B A B A F A B ~@2 G B C A H B I B A B C D C D C E C B A F A B A B A B A B ~@40
  A B C D C D C E C B A F A B A B A B A B A F A B ~@2 G B C A H B I B A B C D C D C I C B A F A B ~@2 G B C A H B I B A
  B C D C D C I C B A F A B ~@2 G B C A H B I B A B C D C D C I C B A F A B ~@2 G B C A H B I B A B C D C D C I C B A F
  I J ~@6
>`.pickRestart({
  A: "~@2 x ~@4 x", B: "~@3 x ~@4", C: "~ x ~@2", D: "~@6 x ~@8 x", E: "~@3 x", F: "~@3 x ~@3 x", G: "~@5 x ~@2",
  H: "~@2 x ~@2 x ~ x", I: "~@7 x", J: "~@11 x ~@4",
})).gain(0.8)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct(`<
  ~@72 A ~@7 B ~@85 A ~@7 B ~@15 A ~@7 B ~@15 A ~@7 B ~@15 A ~@7 B ~@21
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~ x ~@2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A@8 B A@39 B A@14 C A@10 D A@3 D A@18 C A@4 B A@39 B A@14 C A@10 D A@3 D A@19 D A@3 D A@19 D A@3 D A@19 D A@3 D A@15
  ~@8
>`.pickRestart({
  A: "x!8", B: "~ x!7", C: "x!7 ~", D: "x!3 ~ x!4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@48 A B C B D B D E D F A G A F A B A H A B A G@2 I H J K F D L A F A G A B C B D B D E D F A G A F A F A F A B ~@40
  A B C B D B D E D F A G A F A B A H A B A G@2 I H J K F D L A F A G A B C B D B D E D F A G@2 I H J K F D L A F A H A
  B C B D B D E D F A G@2 I H J K F D L A F A G A B C B D B D E D F A G@2 I H J K F D L A F A H A B C B D B D E D F A G
  M N ~@6
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@6 x!2", C: "~@5 x!2 ~", D: "~@5 x ~ x", E: "~@3 x ~@4", F: "~@12 x ~ x!2", G: "~@3 x",
  H: "~@7 x", I: "~@12 x!3 ~", J: "~@3 x ~@2 x!2", K: "~@2 x ~@4 x", L: "~@2 x!2", M: "~ x!3 ~@4",
  N: "~@5 x ~ x ~ x ~@3 x ~@2",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@63 A ~@10 B ~@3 B ~@18 A ~@59 A ~@10 B ~@3 B ~@19 B ~@3 B ~@19 B ~@3 B ~@19 B ~@3 B ~@23
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@39 A ~@7 A ~@7 A ~@9 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@39 A ~@7 A ~@7 A ~@9 A ~@3 A ~@7 A ~@11 A ~@3 A ~@7 A
  ~@2 B A ~@3 A B A ~ A ~ A ~ A B A ~ A B A ~ A B A ~ A ~ A ~ A B A B A B A B A B A ~ A B A ~ A B A B A B A B A C A ~@5
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@2 x!2",
})).gain(0.72)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@70 A ~@17 A ~@75 A ~@17 A ~@5 A ~@17 A ~@5 A ~@17 A ~@23 A ~@13>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  A@48 ~@54 A@40 ~@66 B C@4 D C@7 D C@3 D C@3 D C@7 D C D C D C D C D C@3 D C@3 D C D B D C D ~@8
>`.pickRestart({
  A: "x!2", B: "~@3 x", C: "~ x ~ x", D: "~ x ~@2",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 [x!4]!40 ~@54 [x!4]!40 ~@126>").gain(0.64)

// drums · congas
const congas = s("conga:18").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@55 A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@127
>`.pickRestart({
  A: "~@2 x!2 ~@4",
})).gain(2.05)

// drums · congas · soft notes
const congas_soft = s("conga:18").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@55 A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@127
>`.pickRestart({
  A: "~@7 x",
})).gain(1.28)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@55 A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@127
>`.pickRestart({
  A: "x ~@4 x ~@2",
})).gain(2.05)

// drums · congas · soft notes
const congas_soft_2 = s("conga:33").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@55 A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@126
>`.pickRestart({
  A: "~@3 x!2 ~@3",
})).gain(1.28)

// drums · triangle
const triangle = s("triangles:35").struct("<[~ x ~ x]!48 ~@54 [~ x ~ x]!40 ~@126>").gain(2.79)

stack(
  bass, bass_soft, percussive_organ, marimba, kalimba, kick, snare, low_tom, low_tom_soft, hihat, mid_tom, open_hat,
  crash, crash_soft, ride, tambourine, congas, congas_soft, congas_2, congas_soft_2, triangle
)

More by Peter Gabriel