Strudelify

These Eyes

The Who

KeyG majorTempo100 bpm
0:00/0:00
// These Eyes — The Who
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · epiano2 · "Elec Piano"
const epiano2 = note(`<
  ~ A B C@2 A B C@2 A B C@2 A B C D E F E F E F G H A B C@2 A B C@2 A B C D E F E F E F G H I@2 J@2 K L@2 M@2 N O@2 P@2
  Q R A B C@2 A B C S I@2 J@2 K L@2 M@2 N O@2 P@2 T U@2 V@2 W ~
>`.pickRestart({
  A: "~@4 [f4,a4,d5]!2 ~ [f4,a4,d5]!2 ~ [f4,a4,d5]@5 ~", B: "~@4 [f4,a4,d5]!2 ~ [f4,a4,d5]!2 ~ [f4,a4,d5]@6",
  C: "~@4 [e4,g4,c5]!2 ~ [e4,g4,c5]!2 ~ [e4,g4,c5]@5 ~", // C
  D: "~@4 [e4,g4,c5]!2 ~ [e4,g4,c5]!2 ~ [e4,g4,c5]@4 [d4,f4,b4]@2", // C Bdim
  E: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~", // A5
  F: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // C
  G: "[d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // G
  H: "[d4,f4,a4] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~", // Dm Dm7
  I: "[f4,a4]!2 ~ [f4,a4]!2 ~ [f4,a4] ~ [e4,g4]@6 ~@2", // F Em
  J: "[f4,a4]!2 ~ [f4,a4]!2 ~ [f4,a4] ~ [f4,a4]!2 ~ [f4,a4]!2 ~ [f4,a4] ~", K: "[d4,f#4,a4]",
  L: "[d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~ [d4,g4,b4] ~ [d4,f#4,a4]@6 ~@2", // G D
  M: "[d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~ [d4,g4,b4] ~ [d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~ [d4,g4,b4] ~", N: "[e4,g#4,b4]",
  O: "[e4,a4,c#5]!2 ~ [e4,a4,c#5]!2 ~ [e4,a4,c#5] ~ [e4,g#4,b4]@6 ~@2", // A E
  P: "[e4,a4,c#5]!2 ~ [e4,a4,c#5]!2 ~ [e4,a4,c#5] ~ [e4,a4,c#5]!2 ~ [e4,a4,c#5]!2 ~ [e4,a4,c#5] ~", // A
  Q: "[f#4,a#4,c#5]@13 ~ [f#4,a#4,c#5]@2", R: "[g4,b4,d5]@15 ~", S: "~@4 [e4,g4,c5]!2 ~ [e4,g4,c5]!2 ~ [e4,g4,c5]@6",
  T: "[f#4,a#4,c#5]", U: "[f#4,b4,d#5]!2 ~ [f#4,b4,d#5]!2 ~ [f#4,b4,d#5] ~ [f#4,a#4,c#5]@6 ~@2",
  V: "[f#4,b4,d#5]!2 ~ [f#4,b4,d#5]!2 ~ [f#4,b4,d#5] ~ [f#4,b4,d#5]!2 ~ [f#4,b4,d#5]!2 ~ [f#4,b4,d#5] ~", // B
  W: "[g#4,c5,d#5]", // G#
})).s("gm_epiano2").gain(0.57).pan(0.6)

// bass · acoustic bass
const bass = note(`<
  A B C D E F G H I J K H L J K H M N O P Q P R S T U G H V J K H L J K H M N O P Q P R S W X Y Z@2 AA AB AC AD@2 AE AF
  AG AH AI AJ AK J K H L J K H AL X Y Z@2 AA AB AC AD@2 AE AF AG AH AI AM AN AO AP AQ AR ~
>`.pickRestart({
  A: "~@7 a1", B: "d2@7 a1", C: "d2@7 g1", D: "c2@7 g1", E: "~@10 g2 ~@3 [a1,c3]@2, c2@12 ~ a2@2 ~",
  F: "[d2,d3]@12 g2 ~ [a1,c3]@2", G: "d3@6 ~@4 g2@2 ~ a2 [g1,d3]@2, d2@15 ~", H: "c3@10 d3@2 ~ a2 [g1,g2]@2, c2@15 ~",
  I: "~@9 a1@2 a1@2 g1 a1@2, c2@3 ~", J: "~@10 g2@2 ~ a2 [a1,c3]@2, d2@15 ~", K: "d3@9 ~ g2@2 ~ a2 [g1,d3]@2, d2@15 ~",
  L: "~@10 g1@2 ~ a1 [a1,c2]@2, c2@3 ~", M: "c2@5 c2@2 b1", N: "a1@4 e2@3 d2, ~ a0",
  O: "c2@4 e2 g2@2 g2, ~ c1, ~@8 c2 ~@7", P: "[a1,a2]@4 e2@3 d2, ~ a0", Q: "c2@8 e2@2 g2@3 e2 g2@2, ~ c1, ~@8 c2 ~@7",
  R: "~@5 f2@2 f#2, c2 c1, ~@3 e2@2 ~@3", S: "g2@3 g2 b1 b1@2 b1, g1@15 ~", T: "d2 d2@2 d2 g2 ~@2 a1, d1@7 ~, ~@5 g2@3",
  U: "~@10 g2 ~@3 [a1,c3]@2, d2@15 ~, ~@13 a2@2 ~", V: "c2@12 ~ g1 a1@2", W: "d2 d2@2 d2 g2 g2@3, d1@7 ~",
  X: "f1!2 ~ f1!2 ~ f1 ~ c2@7 ~", Y: "f2!2 ~ f2!2 ~ f2@2 c3@6 ~@2", Z: "f2!2 ~ f2!2 ~ f2 ~ f2!2 ~ f2!2 ~ f2 ~",
  AA: "d2", AB: "g1!2 ~ g1!2 ~ g1 ~ d2@7 ~", AC: "g2!2 ~ g2!2 ~ g2@2 d3@6 ~@2",
  AD: "g2!2 ~ g2!2 ~ g2 ~ g2!2 ~ g2!2 ~ g2 ~", AE: "e2", AF: "a2!2 ~ a2!2 ~ a2@2 e2@8", AG: "a2!2 ~ a2!2 ~ a2@2 e2@7 ~",
  AH: "a2!2 ~ a2!2 ~ a2 ~ a2!2 ~ a2!2 ~ a2 ~", AI: "a2!2 ~ a2!2 ~ a2 ~ a2!2 ~ a2!2 ~ a2@2", AJ: "f#2@13 ~ f#2@2",
  AK: "g2@7 ~", AL: "c2@5 c2@3", AM: "f#2", AN: "b2!2 ~ b2!2 ~ b2@2 f#2@8", AO: "b2!2 ~ b2!2 ~ b2@2 f#2@7 ~",
  AP: "b2!2 ~ b2!2 ~ b2 ~ b2!2 ~ b2!2 ~ b2 ~", AQ: "b2!2 ~ b2!2 ~ b2 ~ b2!2 ~ b2!2 ~ b2@2", AR: "g#2",
})).s("gm_acoustic_bass").gain(0.59).pan(0.3)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  ~@3 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C D C D C D E F G@2 H I G@2 H I G@2 H A C D C D C D E F J K L M N O P Q R S T U V W X
  Y G@2 H I G@2 H A J K L M N O P Q R S T U V W Z AA AB AC AD AE ~
>`.pickRestart({
  A: "~@12 [g4,c5,e5] ~@3", B: "~@12 [a4,d5,f5] ~@3", C: "~@4 [e4,a4,c5] ~@7 [e4,a4,c5] ~@3",
  D: "~@4 [e4,g4,c5] ~@7 [e4,g4,c5] ~@3", E: "[d4,g4,b4]@7 ~", F: "[d4,f4,a4]",
  G: "~@12 [a4,d5,f5] ~@3, [f3,a3,d4]@7 ~", H: "~@12 [g4,c5,e5] ~@3, [e3,g3]@7 ~, ~ c4@13 ~@2",
  I: "[e3,g3,c4]@12 [g4,c5,e5] ~@3", J: "[a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [a3,c4,f4] ~ [g3,c4,e4]@6 ~@2",
  K: "[a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [a3,c4,f4] ~ [g3,c4,e4]@7 ~", // F C
  L: "[a3,c4,f4] [a3,c4] ~ [a3,c4,f4] [a3,c4] ~ [a3,c4,f4] ~ [a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [a3,c4,f4] ~", // F Am F Am F
  M: "[a3,c4,f4]!2 ~ [a3,c4,f4] [a3,c4] ~ [a3,c4,f4] ~ [a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [a3,c4,f4] ~", N: "[d4,f#4,a4]",
  O: "[b3,d4,g4]!2 ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,d4,f#4]@6 ~@2", // G Bm
  P: "[b3,d4,g4]!2 ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [a3,d4,f#4]@7 ~", // G D
  Q: "[b3,d4,g4] [b3,d4] ~ [b3,d4,g4] [b3,d4] ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~", // G Bm G Bm G
  R: "[b3,d4,g4]!2 ~ [b3,d4,g4] [b3,d4] ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~", S: "[e4,g#4,b4]",
  T: "[c#4,e4,a4]!2 ~ [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [b3,e4,g#4]@6 ~@2", // A E
  U: "[c#4,e4,a4]!2 ~ [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [b3,e4,g#4]@7 ~", // A E
  V: "[c#4,e4,a4] [c#4,e4] ~ [c#4,e4,a4] [c#4,e4] ~ [c#4,e4,a4] ~ [c#4,e4,a4]!2 ~ [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~", // A C#m A C#m A
  W: "[c#4,e4,a4]!2 ~ [c#4,e4,a4] [c#4,e4] ~ [c#4,e4,a4] ~ [c#4,e4,a4]!2 ~ [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~", // A C#m A
  X: "[f#4,a#4,c#5]@13 ~ [f#4,a#4,c#5]@2", Y: "[g4,b4,d5]@13 ~@3", Z: "[f#4,a#4,c#5]",
  AA: "[d#4,f#4,b4]!2 ~ [d#4,f#4,b4]!2 ~ [d#4,f#4,b4] ~ [c#4,f#4,a#4]@6 ~@2", // B F#
  AB: "[d#4,f#4,b4]!2 ~ [d#4,f#4,b4]!2 ~ [d#4,f#4,b4] ~ [c#4,f#4,a#4]@7 ~", // B F#
  AC: "[d#4,f#4,b4] [d#4,f#4] ~ [d#4,f#4,b4] [d#4,f#4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4]!2 ~ [d#4,f#4,b4]!2 ~ [d#4,f#4,b4] ~", // B D#m B D#m B
  AD: "[d#4,f#4,b4]!2 ~ [d#4,f#4,b4] [d#4,f#4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4]!2 ~ [d#4,f#4,b4]!2 ~ [d#4,f#4,b4] ~", // B D#m B
  AE: "[g#4,c5,d#5]", // G#
})).s("gm_electric_guitar_clean").gain(0.5).pan(0.2)

// other · synth brass 1 · "Synth Brass"
const synth_brass_1 = note("<~@44 A ~@4 B C ~@3 D E ~@17 F G ~@3 D H ~@3 I J ~ K L M ~>".pickRestart({
  A: "b4 ~ a4@4 g4 a4 g4@8, ~ c4@4 ~@3, ~@3 [b3,d4]@4 ~", B: "~@10 [a3,d4,d5] ~ [d4,f#4,f#5] ~ [f#4,a4,a5] ~",
  C: "[d4,f#5]@13 ~@3, f#4 ~", D: "~@10 [e4,e5] ~ [g#4,g#5] ~ [b4,b5] ~", E: "[b3,e4,b4,e5]@3 ~, g#5@7 ~, g#4 ~",
  F: "~@10 d4 ~ f#4@2 a4 ~", G: "[a3,d4]@3 ~, f#4 ~", H: "[b3,e4,b4,e5]@3 ~, [g#4,g#5]", I: "~@10 f#4 ~ a#4 ~ c#5 ~",
  J: "[c#4,f#4]@13 ~@3", K: "f#4!5 ~ f#4 ~ f#4!2 ~ f#4!2 ~ f#4 ~", L: "f#4!2 ~ f#4!2 ~ f#4 ~ f#4!2 ~ f#4!2 ~ f#4 ~",
  M: "[f#4,g#4]@7 g#4@5 g#4@3 a#4", // F#sus2
})).s("gm_synth_brass_1").gain(0.29)

// other · melodic tom · "Mdly Tom Tom"
const melodic_tom = note(`<
  ~@16 A ~ B ~ B ~@2 B C ~@11 D ~ B ~ E ~@4 F G H I J K L@8 M N C@2 O B C B@3 P Q R@3 S R@3 T R@6 U V R W ~
>`.pickRestart({
  A: "~@10 c4 ~ a3@2 g3@2, ~@11 b3@3 ~@2", B: "~@10 c4 b3 a3@2 g3@2", C: "~@10 c4 b3 a3@2 g3 ~",
  D: "~@9 c4 b3 a3@2 ~ g3@2", E: "~@10 c4 a3@2 ~ g3@2, ~@11 b3 ~@4", F: "g3 ~ g3@2 ~@2 g3@2 c4@3 ~@5",
  G: "g3@3 ~ c4@3 ~ g3@4 c4@3 ~", H: "g3@4 c4@3 ~ g3@3 ~ c4@3 ~", I: "g3@4 c4@2 ~@2 g3@4 c4@3 ~",
  J: "g3@3 ~ c4 ~ g3 ~@3 g3@2 c4@2 g3 ~", K: "g3@4 ~@2 g3@3 ~ g3@2 ~@2 g3@2", L: "~ g3 ~ g3 ~ g3 ~ g3",
  M: "~@2 g3@2 ~@2 g3@2 ~@2 g3@2 ~@2 g3 ~", N: "g3@3 ~ g3@2 ~@4 c4 a3@2 ~ g3 ~, ~@5 b3 ~@2, ~@11 g3 ~@4",
  O: "~@10 [b3,c4] ~ a3@2 g3@2", P: "~@9 g3 ~@6", Q: "g3@2 ~@2 g3@3 ~ g3@2 ~@2 g3@2 ~@2", R: "g3 ~ g3 ~ g3 ~ g3 ~",
  S: "g3@2 ~@2 g3@2 ~@2 g3@3 ~ g3@2 ~@2", T: "g3@3 ~ g3@2 ~@2 g3@2 ~@2 g3@2 ~@2",
  U: "g3@2 ~@2 g3@2 ~@2 g3@2 c4 b3 a3@2 g3@2", V: "~@4 g3@3 ~ g3@2 ~@2 g3@2 ~@2", W: "g3@3 ~ g3@2 ~@2 g3 ~@7",
})).s("gm_melodic_tom").gain(0.8)

// other · french horn
const french_horn = note("<~@18 A@2 B C@2 ~ D@2 ~@12 E@2 F G ~@2 H ~@45>".pickRestart({
  A: "[~@8 e4 ~ d4@4 c4@16 ~@2]/2", B: "~@8 e4 ~ d4 ~@3 c4 ~", C: "[c4@7 ~]/2", D: "[b4 ~ a4@4 g4 a4 g4@10 ~@14]/2",
  E: "[~@8 e4 ~ d4@3 ~ c4@15 ~@3]/2", F: "~@8 e4 ~ d4@3 ~ c4 d4", G: "c4", H: "b4 ~ a4@4 g4 a4 g4@8",
})).s("gm_french_horn").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A B C@2 A D E@2 F@2 G F@9 H@5 I E D J K L M E N@2 E O E@3 P Q E@2 F@2 R F@4 S T J@3 E U@2 V O E U J@3 E J@2 V O W
  ~
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~ x", B: "~ x ~ x ~ x ~ x", C: "x!2 ~ x ~ x ~ x", D: "~ x ~ x!3 ~ x", E: "x ~@2 x ~ x ~ x",
  F: "x ~@3 x!2 ~ x", G: "x ~@3 x!2 ~@2", H: "x!2 ~ x!3 ~ x", I: "x!2 ~ x!3 ~@2", J: "x!2", K: "x ~ x!3 ~@3",
  L: "x ~ x!3 ~ x ~", M: "x!4", N: "x ~@2 x ~ x ~@2", O: "~ x ~ x!2 ~@2 x", P: "x ~@2 x!2 ~@2 x",
  Q: "~@2 x ~@4 x!2 ~@5 x ~", R: "x ~@6 x ~@2 x ~@3 x ~", S: "x ~@3 x!3 ~", T: "x!2 ~@2 x ~@3", U: "x ~@2 x!2 ~@3",
  V: "x ~@3 x ~@2 x", W: "x",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct(`<
  ~@28
  [~ x ~ x]!6
  [~@4 x ~@2 x ~@4 x ~@3]
  [~ x ~ x]
  [~@4 x ~@2 x ~@4 x ~@3]
  [~ x ~ x]
  ~@52
>`).gain(0.72)

// drums · clap
const clap = s("cp").struct("<~@25 [~ x ~@2] ~@60 [~ x ~@2] ~@3>").gain(0.64)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A ~ A B C@15 D C@3 E C E C E C E C E C E C F C@2 G C@8 E C E C@2 E@2 H E I E C E C E C@3 J E C@9 E C@4 K ~
>`.pickRestart({
  A: "x", B: "~@2 x!6", C: "x!8", D: "x!5 ~ x!2", E: "x!7 ~", F: "x!6 ~ x", G: "x!2 ~ x!5", H: "x!2 ~ x!3 ~ x",
  I: "x ~ x ~ x ~ x ~ x!2 ~@2 x ~ x ~", J: "x!3 ~ x!4", K: "x!5 ~@3",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A ~ A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~ A ~ A ~ B ~@11 A ~ A ~@2 A@2 C A ~ A ~ A ~ A ~@3 D A ~@9 A ~@6
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~ x ~ x", D: "~@3 x ~@4",
})).gain(0.72)

// drums · china
const china = s("cr").struct("<~@25 A ~@3 A ~@3 A ~@9 A@2 B@8 C D B@4 E ~@9 B@2 F G B@5 A B@8 H A ~>".pickRestart({
  A: "x", B: "x!2", C: "x ~@3 x ~ x!2", D: "~ x", E: "~ x ~@14", F: "x ~@2 x", G: "~ x ~ x", H: "x!2 ~ x",
})).gain(0.64)

// drums · ride bell
const ride_bell = s("rd").struct("<~@17 A B@7 ~@12 B@8 C ~@8 D ~@16 E C ~@3 D ~@10 F ~@2>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x!2", D: "x", E: "~ x", F: "x ~@8 x ~@6",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [~ x ~ x]!3 [~@4 x ~@7 x!2 ~@2] [~ x ~ x]!9 ~@73>").gain(0.72)

stack(
  epiano2, bass, electric_guitar_clean, synth_brass_1, melodic_tom, french_horn, kick, rim, clap, snare, hihat,
  open_hat, china, ride_bell, tambourine
)

More by The Who