Strudelify

I Only Have Eyes for You

Oscar Peterson

KeyG majorTempo120 bpm
0:00/0:00
// I Only Have Eyes for You — Oscar Peterson
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 108 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "A.PIANO 1"
const piano = note("<A@8 B C@5 D@6 E F@8 G@6 H@3 I@8 J K@8 L@7 M@5 N@8 O P@3 Q@2 R@8 S@6 T U V@2 W@8 ~>".pickRestart({
  A: "[~@5 g4@3 ~@111 g2@7 ~@8 f3@4 ~@110 g4@7 f#4, ~@11 g4@19 c4@18 f5@8 a6@3 d7@2 f7 [a7,c8]@34 d4 f4@4 c4 e4@5 a3@31 f3@9 b3@9 f3@5 e4@6 f3@6 g4@10 a2@5 d3@4 f3@4 a4@4 a3@3 g4@5 a2@48, ~@16 d3@19 d4@15 a5@57 b3@19 g2@46 f4@40 ~ [g3,f4]@43, ~@20 f3@18 f4@15 [c6,d6]@54 f3@6 g1@39 d4@20 a3@6 d2@34 ~@44, ~@26 a3@19 d5@10 f6@53 d4@22 d3@43 c4@39 [a3,c#4]@44]/8", // Am G7 Csus2 A
  B: "~@3 d#4@2 ~@24 d4@3, f4@5 d4@20 a3@7, ~ e4@2 ~@4 a2@9, ~@9 d3@7, ~@21 f3@11",
  C: "[~@6 b3@24 [b3,d#4]@17 ~@5 g2@4 ~@100 b4@4, ~@2 d3@14 ~@14 g4@25 ~ e4@15 c3@9 [g4,b4]@7 b3@10 e5@9 g6 b6@3 [d7,e7]@3 g7@39 c5@8, ~@6 g#3@50 ~@6 c3@4 [g4,b4]@7 a4@17 e4@10 g5@60, ~@6 g2@46 ~@4 [c2,b3]@17 c5@3 e3@16 g4@10 b5@58, ~@47 [b3,d#4,a4]@8 ~ [g4,b4]@10 [d4,d5]@14 e4@4 g3@10 b4@10 e6@56]/5", // B G Dsus2 G Cmaj7 B7 G D
  D: "[~@116 a2@4 ~@41 c4@5 [g3,b3,c4,e4]@5 ~@16 f3@5, b2@22 f#4@4 a3@2 d#5@2 f#5@3 a5@2 d#6@2 f#6 a#2@10 ~ f4@12 a#5@16 d7@5 f#7 f7@6 a#7@20 g#4 g#3@10 d2@51 [a3,b3]@21, ~@4 d#3@21 a4@16 f3@11 a#4@12 d6@8 a#6@48 g4@14 f3@3 a3@4 c4@4 f4@4 g4@23 d4@20, ~@8 f#3@36 g#3@11 d5@13 f6@52 f4@10 d3@23 a3@4 f3@4 [a3,d4,f4]@11 f3@10 g2@10, ~@14 a3@4 d#4@26 ~@2 d4@12 f5@62 [a3,c4]@6 a2@47 ~@4 g1@15]/6", // Cmaj7 Asus2 Dm Am
  E: "~@11 d4@5 ~ [c4,e4]@7 ~@5 d3@3, a3@3 [a3,c4,f4,g4], f3@2 f3 ~, b3@10 ~ [d3,b3]@13 ~@8, ~@6 g2@18 ~ d2@7", // C F G
  F: "[~@21 g3@8 ~@17 a1@5 ~@9 f3@7 ~@21 g2@24 ~@18 g2@5 ~@9 e4@8 ~@99 c#5@5, ~ c4@18 a1@27 ~@5 [d1,d4]@36 ~ [g1,f3,g#3,b3]@47 [e4,b4]@9 d5@8 e4 g4@4 c3@13 b3@15 g5@7 b6@50 a#4@5 c5@9, ~@2 [f4,a4]@18 c#4@9 c#4 g3@6 a2@15 f3@9 ~@7 [f3,a3]@21 ~@38 a4@10 ~@5 g2@19 b4@2 e3@18 b4@9 d6@7 g7@60, ~@11 [b3,d4,e4,g4]@10 f4@19 [g3,c#4,f4]@13 ~@23 d2@59 c2@25 e4@17 g4@10 b5@7 d7@62, ~@21 a2@9 [e4,g4]@22 a3@15 ~@49 g4@18 ~ g4@9 b4@8 c5@14 g3@16 d5@9 g6@6 b7@59]/8", // D Fdim E5 F Em7 Gm7b5 Em
  G: "[~@65 c#5@4 ~@12 f4@4 ~@13 a3@4 ~@7 c3@5 ~@37 [g#3,c4,d4]@7 ~@28 d4@4 e4@2, ~@15 e3@16 e4@11 e3@8 c#4@4 e4@4 g4@3 a4@8 c#5@2 d2@7 ~@10 d3@6 [d4,f4,a4,c5]@8 a3@2 [c4,a4] f4@9 [f2,g4]@20 g#3 c4@6 g#3@5 d3@12 [c2,e4,g4]@20 g3@4 b3@10, ~@19 g#3@16 g#4@40 ~@10 d5@29 c4@10 f4@34 d4@15 e3@19, ~@23 b3@14 a2@9 g3@29 d1@39 g#3@5 d3@5 [g#3,c4]@4 d3@6 [e3,e4]@24 b3@11 c3@23, ~@27 d4@48 ~@10 [f4,a4]@7 f3@23 d#4@43 g3@6 g2@28]/6", // Dm7b5 Dm7 F Fsus2 C G# E F
  H: "[~@41 a#3@12 ~@34 d4 ~@5 f2@3, ~@3 g4@50 a3@16 d4@5 f3@3 [f4,a4] c5@9 [a3,c4,f4,a4]@9, ~@7 c2@46 f2@25 c4@4 f3@14, ~@8 e4@46 c4@14 f3 [g4,b4,d5]@27, ~@13 c3@5 a#3@6 e3@6 g3@6 e3@18 ~@8 c3@34]/3", // F G
  I: "[~ c4@12 ~@18 g#3@6 ~@6 d4@6 ~@57 c4@15 ~ g#4@34 ~@68 d2@5 ~@24 a3@3, ~ [d#4,g4]@42 d3@6 d4@14 e3@6 g3@9 d4@4 e4@6 d#2@64 ~@4 [d1,g4]@22 f4 a4@6 a5@4 f6 a6 b6 c7@21 a3@4 [d4,f4]@5 c4 e4@6 [g1,b3]@27, ~ d3@12 g#3@6 d3@18 [e3,g#3,c4,e4]@13 g4@44 [a#2,f#4,a#4]@62 ~@14 d3@59 [f3,a3]@23 ~@4, ~ g#3@9 ~@3 f4@37 [g3,b3]@7 b2@37 c4@12 ~@15 c4@9 ~@26 [c4,f4]@18 a3@2 c4@5 c5@49 d4@26, ~@13 c4@12 f3@24 e2@24 b3@24 ~@3 d#3@56 a3@17 f3@11 f5@46 ~@17 g2@9]/8", // D# G5 Dm G Eaug D#m F G …
  J: "~@25 g2@5 [d4,d5]@2, ~@2 g2@23 ~@7, ~@7 f3@25, ~ g1@3", // D
  K: "[~@3 [e4,e5]@6 ~ [d3,g4,d5]@4 ~@56 d2@5 ~@27 f3@5 ~@28 g2@6 b5@10 ~@22 [e5,g5]@11 ~@69 g3@3, ~@10 a2@21 [g4,g5]@5 a3@7 [c4,f4,f5]@10 [g4,g5]@6 a3@5 [f4,f5]@11 [g1,g#4,b4]@38 g#3@5 b3@6 [d4,a4,f5,a5]@17 g5@3 ~@7 [d5,d6]@22 [b3,b4,b5]@11 g5@8 b6@14 c2@15 c3@5 e3@5 g3@6 b3@19, ~@10 g5@10 d5@6 d3@49 d4@32 [g4,d5,g5]@33 ~ [b4,e5]@21 [e3,c5,a5,c6]@26 e6@7 g7@61, ~@20 [a4,a5]@55 d5@21 d3@44 ~ c2@26 g3@23 [g6,a6]@6 b7@60, ~@20 f5@11 [f3,d5,e5]@45 ~@15 g2@17 f3@33 ~@10 b5@6 c3@30 b5@7 e7@62]/8", // E G5 Em G F5 G F G …
  L: "[~@3 [c5,c6]@10 ~@123 [g1,g2]@8 d2 ~@32 d5@35 ~@5 c5@5 a4@2, ~@13 a1@28 e3@37 [a4,c#5] g4@49 [a1,a2]@16 [f4,a4]@27 a3@41 d5@12, ~@13 c#5@12 ~@5 a2@27 c#4@5 e4@43 c#5@7 a2@5 a4@27 d1@33 [d4,f4,a4]@47, ~@14 [g5,a5,c#6]@38 a3@32 a4@5 c#5@6 c#4@50 ~@16 d3@63, ~@35 c#3@43 e5@44 c#5@23 ~@21 f3@58]/7", // C G A F Dm A7
  M: "[~@5 d3@17 g5@7 ~@128 g4@3, ~@4 g#3@35 g5@5 g#3@6 g#4@6 d4@5 [g#4,f5]@11 e3@31 d6@3 g6 [b6,d7]@2 a7@13 b3@5 g4@5 g3@5 c3@13 a#3@3 e4@7, ~@5 [f2,c4,d#4,g4]@45 [c5,g5]@16 [b3,e5]@6 g5@17 d4@3 g4@5 d5@41 a#4@22, ~@22 d3@49 d5@12 b3@12 b4@4 g5@6 d4@33 g4@9 g3@13, ~@39 f3@32 b4 g4@7 g3@22 b5@37 e4@4 e3@18]/5", // C# Bm Cm C5 E5
  N: "[~@32 c8@7 ~@25 c4@4 ~ [a3,c4]@6 ~@11 c3@4 ~@24 g#3@5 ~@11 [d4,d5]@6 ~@45 f5@5 a#4@9 ~@53 d1@8, ~ a#4@13 g#4@4 e5@2 g#5@2 c6@2 e6 g#3 g#6 c7@2 e7 g#7@9 [f2,d3]@29 [f3,a5]@7 [a3,c4] f3@5 [a4,f5,a5]@10 ~@8 d3@10 f3@10 g#3 b3@4 c5 [e4,e5]@11 g5@13 b3@2 d4@9 [e4,g6,a6,b6] d7 [f7,g7]@7 g4@4 b3 b4@3 d5@9 [d#1,d#2,a#5]@25 [a#3,g#4]@6 c#4@6 a#3 g#4@9 a1@4 f4@4 [f5,g5]@15, ~@4 c3@37 ~@13 [f3,a3]@14 [e4,c5,c6]@23 ~ [g#2,c3,g4,g5]@44 d5@11 g3@4 [e4,g4] b4 d5@3 g5@31 ~@18 g3@33 a4@5 ~@13, ~@6 e3@35 ~@13 d4@37 [f2,d#5]@45 g4@9 e3@13 e6@29 ~@24 [d#5,g#5]@28 c5@5 ~@12, ~@9 g#3@3 e4@29 ~@8 d5@5 c4@5 [d5,g5,b5,d6]@32 ~ c5@12 [f4,f5]@32 b4 e2@50 ~@13 d#3@40 d2@16]/8", // Am D Dm F Am Dm E Em …
  O: "~@25 [f4,f5]@5 [e4,e5]@2, d3@15 f4@5 [g4,d5,g5]@12, [g4,d5]@3 c4@5, ~@5 f3@27, ~ a3@3", // F E G5
  P: "[~@3 g1 ~@5 g2@5 ~@11 f3@7 ~@11 [e4,a4,c5,e5]@7 ~@16 [g4,c5,e5,g5]@9 ~ g4@8 ~@9 [g4,c#5,f5]@3, ~@3 [d4,b4,d5]@29 f3@18 [g4,d5,g5]@3 ~@5 [a4,d5,f5,a5]@17 c#5@8 ~ [e5,g5]@12, ~@4 e4@33 [g3,d4,g4,b4,d5]@14 d1@25 a2@20, ~@14 g2@37 e5@15 ~@9 f5@14 c#4@7, ~@19 d3@33 ~@12 d3@13 ~@7 [g4,c#5]@9 ~@3]/3", // Am C Gm7b5 G G5 Dm Em G …
  Q: "[~@2 a1@4 ~@19 f3@5 f3@13 ~ d4@11 ~@3 [g4,g5]@5 d4, ~@6 [d4,f4,a4,d5]@24 e5@3 ~@11 [g#3,b3]@20, ~@7 d1@25 ~@23 d4@8 ~, ~@7 g2@8 [g2,f4,g#4,b4]@17, ~@20 d3@12 ~@11 f3@21]/2", // G Dm G#m Fdim
  R: "[~@3 [a4,f5,a5]@8 ~@233 e6@5 ~@3 d6@3 d3, ~@11 [b4,e5,g5]@11 d6@39 e3@10 e4@3 b4@21 [c5,c6]@50 g3@14 g4@10 g5@12 c#7@64 ~@4 d6@3 ~@4, ~@11 b5@10 d5@18 [b4,e5,g5]@5 e4@5 b4@8 c3@21 e5@50 e7@24 c#4@12 c#5@11 e6@18 a7@61 ~@2, ~@12 c3@10 b5@4 g3@9 b3@4 b5@29 b3@22 e4@50 e3@16 e4@11 e5@10 g6@61 f6@17 ~, ~@18 e3@12 [c5,a5,c6]@35 g3@18 g5@45 e6@21 a3@12 a4@11 c#6@14 e7@64 e6@4 ~@2]/8", // Dm Em C Em F
  S: "[~@40 c5@3 ~@68 c6@4 f3@3 ~@21 g4@36 c6@17, ~@4 e6@30 a5@4 f5@5 c5@2 a4@2 f4@4 [b3,c4]@2 a3@3 f3 c4@2 a3@9 [f1,f2]@38 g#5@9 [c5,g5,b5,d6]@62 ~@15, ~@4 f3@15 f4@4 a4@4 c5@4 c6@30 f3@9 ~@4 f3@10 f3@8 f4@7 c5@4 f5@12 d5@19 f4@43 ~@15, ~@8 a3@8 d4@48 c3@7 ~@7 g#3@8 g#3@31 ~@3 g3@50 ~@22, ~@12 c4 d6@52 c2@7 ~@9 c4@8 ~@2 d4@26 ~@7 b3@53 ~@15]/6", // Cmaj7 F G
  T: "~ e4@29 c6@2", U: "~@29 g4@3, ~ g3@3, ~@3 c4@5, ~@16 e4@9 e4@7, ~@20 g4@9 ~@3",
  V: "[~@2 c6@5 c6@5 c6@6 ~@43 f4@2 [g#4,g#5], ~@18 g#2@19 [c5,g#5,c6]@4 f4@4 [c5,c6] g#5@4 f4@2 a#4 a#5@3 f4@2 [c5,c6]@6, ~@19 [g#5,c6]@12 g#3@33, ~@19 c5@10 c5@5 c4@30, ~@3 f3@5]/2", // G# Fm C G#
  W: "[~@7 g3@3 [g4,d5,g5]@4 ~@17 [c5,d5,f5]@10 f3@2 ~@28 [b3,g5,g6]@20 ~@25 e7@3 ~@2 b6@2 ~@3 g6@2 ~@2 e6@2 e6@4 ~@3 g5@2 ~@3 e5@3 ~@2 b4@4 ~@3 g4@3 ~@4 e4@3 e4@9 ~@6 g3@7 ~ g3@24 g3@43, ~@4 [g#4,g#5]@6 d3@31 [f5,a5]@9 [f5,a5,d6]@41 b5@21 g7@7 g7@17 b5 e6@16 b4@6 b4@64 ~@33, ~@14 f3@9 [f5,a5]@5 [d4,f4]@15 ~@3 g3@14 g5 d4@30 e6@21 b7@16 g6@4 g6@15 e5@6 e5@64 ~@39, ~@16 [g4,g5]@27 ~@11 b3@6 [e5,e6] b5@30 c2@28 e7@4 b6 e7@17 b5@19 g4@7 ~@8 e4@64 ~@17, ~@16 d5 a5 a3@12 [a5,c6]@11 c6@50 [g6,b6] c1@36 a6@13 g5@6 g5@29 b3@12 b3@64 ~@4]/8", // G5 Dm7 Em G# F Dm F Dm …
})).s("gm_piano").gain(0.36)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~ A@5 ~@2 B@3 ~@9 C ~ D@2 E F G@5 ~@5 H I ~@3 J@2 ~@2 K@5 ~ L M@3 N@3 O P@3 Q@2 ~ R@2 S@2 ~@2 T@2 U@2 V ~@2 W@2 ~@2
  X@2 Y@4 ~@3 Z@2 AA@5 ~ AB@2 ~@2 AC@5
>`.pickRestart({
  A: "[~@9 a4@64 ~@18 f3@11 ~@8 g3@32 ~@18]/5", B: "[~@9 d2@29 ~@17 f3@33 ~@8, ~@40 f3@15 ~@41, ~@6 d3@5 ~]/3",
  C: "~@18 d4@7 ~@7", D: "[~@5 d2@6 ~@5]/2", E: "~ g2", F: "~@22 c3@7 ~@3",
  G: "[~@14 d4@64 ~@7 b4@10 ~@13 a3@27 ~@25, g4@17 ~@64 a4@14 b2@19 ~@46, ~@49 d#3@8 ~@23, ~@104 f#3@11 ~@45]/5",
  H: "~@15 c3@15 ~@2, ~@9 g3@13 ~@10", I: "~@3 d4", J: "[~@34 c4@11 ~@9 a1@6 ~@4, ~@25 g#3@35 ~@4, ~@45 c4@15 ~@4]/2",
  K: "[~@6 g2@17 ~@6 f3@10 b3@33 ~@2 c#5@64 ~ g2@16 ~@5, ~@37 d2@30 ~@13]/5", L: "~ b3@5 ~@10",
  M: "[~@28 b3@49 ~@19, ~@21 b4@64 ~@11, ~@23 e5@64 ~@9]/3",
  N: "[~@73 a4@5 ~@18, ~@8 a2@22 ~@38 g4@11 ~@17, ~@25 c#5@53 ~@18]/3", O: "~@5 a4@16 ~@11", P: "[~@17 c5@64 ~@15]/3",
  Q: "[~@29 g5@10 ~@12 b3@13]/2", R: "[~@8 b4@3 ~@5, ~@31 e5@13 ~@20]/2", S: "[e4@7 ~@9 c5@25 ~@23]/2",
  T: "[~@7 f5@6 ~@3]/2", U: "[~@3 a#4@46 ~ d1@6 ~@8]/2", V: "g5@5 ~@3", W: "[~@5 f3@8 ~@3 g3@22 ~@26]/2",
  X: "[~@21 b3@15 ~@28]/2", Y: "[~@37 a2@64 ~@27, ~@8 e3@35 ~@85]/4", Z: "[~@31 g#4@21 ~@12, ~@25 c4@27 ~@12]/2",
  AA: "[~@100 c3@49 ~@11, ~@17 b4@32 ~@11 c4@27 g5@62 ~@11, ~@25 d5@25 ~@20 g4@46 ~@44, ~@42 g3@8 ~@4 g3@27 e5@64 ~@15, ~@46 c3@29 c5@64 ~@21]/5",
  AB: "[~@29 a4@12 d6@9 ~@14]/2", AC: "[~@21 c1@16 ~@3, [b6,c7]@2 ~@3, ~@39 g4@64 ~@57, ~@15 e3@16 ~@9]/5",
})).s("gm_piano").gain(0.21)

stack(piano, piano_soft)

More by Oscar Peterson