Strudelify

I've Got a Crush on You

Oscar Peterson

KeyA majorTempo100 bpm
0:00/0:00
// I've Got a Crush on You — Oscar Peterson
// 100 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 69 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · piano · "A.PIANO 1"
const piano = note("<A B@3 C@4 D@8 E@5 F@4 G@7 H@8 I@4 J@7 K@2 L@3 M@8 N@5>".pickRestart({
  A: "~@5 a4@11",
  B: "[~@68 a3@11 ~@5 c4@12, ~@7 b4@34 d3@11 a4@3 c#5@4 e5@4 c#5@17 ~@16, ~@21 c5@21 ~ f#3@6 f#4@16 f#3@15 ~ a3@15, ~@38 c#5@9 c#4@19 ~@30, ~@45 a3@21 ~@13 f3@17]/3",
  C: "[~@50 f#7@18 ~@2 d2 ~@15 c#5@3 ~@4 e5@3 e5@4 ~@5 c#5@6 ~@15 g4@2, ~ e3@10 b4 d4@3 b4@6 f#5@17 c#5 f#5@4 c#6 f#6@2 g6@2 c#7@21 ~@13 c#4@2 a4@5 c#5@11 [f#3,c#5]@5 f#4@13 e3@8 ~@2, ~@3 g3@20 ~@4 e3@42 ~@10 d3@23 ~@9 f3@11 ~@2 d4@4, ~@4 b3@14 d5@5 ~@10 c#4@36 ~@11 f#3@3 f#4@19 ~@2 c#4@7 ~@4 c4@4 g3@9, ~@6 d4@2 g4@12 e3@2 ~@2 a2@45 ~@12 a3@21 a3@9 ~ a3@9 ~ b3@6]/4", // F#5
  D: "[~@6 [b3,d5]@6 ~@23 a2@3 ~ a4@9 ~@11 f#3@3 ~@79 e5@4 ~@38 e3@2 ~@52 a7@19, ~ b4@11 a2@10 c#4@5 g4@4 f#5@7 f#5@4 ~@7 d3@7 [a4,c#5,f#5]@6 [b4,e5]@11 a3@3 [f#4,f#5]@3 b2@4 g#4@8 c#5@8 g#3@5 g#4@3 c#5@7 g#5@3 c#6@18 c#5@3 d5@7 e2@24 d4@2 c#5@2 b3@3 d5@2 b3@2 e5@5 [a2,c#5]@16 e4@8 a4@13 f6@3 a6@3 c#7@4 f7@24, ~@2 d4@10 [c#5,g5]@27 [d2,a5]@23 b2@8 f#3@12 d4@10 ~@3 e3@50 c#5@14 g3@27 ~@3 e3@15 a3@7 c#5@45, ~@12 g4@7 a3@20 c#5@12 f#3@2 c#4@9 f#4@6 d5@16 c#5@5 b2@57 ~@2 b2@19 b4@19 f#5@19 c#4@51, ~@15 e3@10 e4@15 ~@8 a4@4 a3@11 ~@3 d3@18 ~ e2@17 d4@44 ~@8 [g4,b4]@3 e3@5 [b3,d4]@3 g4@21 ~@6 a3@5 c#4@2 e5@9 f4@48]/8", // Bm F#m E5 F# A C#dim D5 G …
  E: "[~@57 b4@4 ~@11 e3@3 ~@41 d3@2 ~@7 c#5@4 ~@3 e5@3 ~@8 a4@5 ~@10 [d4,g4,b4]@2, ~ d1@14 c#4@2 f#4@3 c#5@4 e5@4 c#5@11 f4@2 a4@3 c5@17 d4@15 ~@10 c#4@25 ~@8 f#3@3 c#4@13 e5@2 f#3@5 c#4@9 a3@2 c4@5 ~@2, ~@12 d3@19 f3@16 e3@4 d4@3 g4@10 b4@12 [c#5,f#5]@19 a4@25 a3@3 f#4@15 c#5@5 [f#4,c#5]@13 e3@4, ~@13 f#3@19 ~@4 c4@13 g3@27 ~@3 e3@31 ~@8 d3@6 a4@5 [a4,c#5]@11 a3@9 [f4,g4,a4,c5]@9 ~@2, ~@14 a3@18 ~@2 a3@16 b3@19 d5@6 a2@35 ~ d2@29 ~@8 f3@10 ~@2]/5", // G F#5 A F
  F: "[~@3 [d4,g4,b4]@4 ~@8 e3@3 ~@17 a2@3 a4@8 ~@14 f#3@2 ~@41 b3@20 b3@5, g3@18 g4@6 a3@3 c#4@3 e4@2 f#5@6 [d2,a5]@14 c#5@10 b2@7 f#3@3 a3@3 f#3@4 [f#4,f#5]@3 b2@4 [e2,c#5]@42, ~@2 b3@7 d4@3 [b3,d5]@7 ~@2 e3@17 c#5@11 [f#3,a3]@2 [c#4,f#5]@5 a3@7 f#4@6 d5@16 g#4@14 g#3@29, ~@7 b4@11 g5@20 f#5@4 ~@5 d3@16 ~@3 d3@19 d4@10 e3@33, ~@8 g4@10 [a2,c#5]@8 g4@13 ~@7 a4@17 [b4,e5]@24 ~@4 b2@37]/4", // G D5 F# C#m Bm F#m F#5 A …
  G: "[~ a2@4 ~@21 a3@4 ~@69 f5@5 ~@37 a2@4 e4@10 ~@16 f#3@8 ~@41 b7@4, ~@5 d2@25 ~@29 d5@9 ~@12 g3@5 [f4,g4]@2 b4@4 d5@4 [b3,e5]@9 f#5@5 ~ a5@8 a4@5 c#4@5 a4 e4@4 c#4@12 d2@26 b2@8 f#3@12 b4@7 b2@6 b4@2 d5@2 g5 b5@2 [e3,d6]@2 g6@2 b6@2 [d7,e7]@2 g7@5, ~@5 [d4,f#4]@17 [f#4,a4]@8 ~@15 a3@23 ~@9 e3@28 a2@5 ~@4 a3@31 [a4,c#5]@18 ~@4 b1@30 e2@27, ~@10 a2@21 ~@7 f#3@14 f#3@8 d#5@2 e5 f5@2 f#5@16 b3@2 d4@23 ~@2 e3@38 ~@13 d3@11 ~ d4@13 b2@5 d5@4 g4@7 ~ d4@23, ~@18 f#3@12 [b2,d4,f#4,b4]@38 e2@38 ~@12 [c#5,f#5]@28 ~@9 e4@8 [e4,a4,c#5]@8 b3@23 [b2,d4]@6 e3@2 g4@22]/7", // Fsus2 E5 E7 Dsus2 D F#m A Bm …
  H: "[~@21 a2@4 c#4@8 ~@16 d4@9 ~@12 b2@4 ~@40 f3@4 ~@8 d2@4 ~@16 e6@6 ~@13 e4@7 ~@28 [d5,d6]@5 ~@14 [a3,c#4]@13 d2 ~@19 e5@4, a2@13 g3@12 [d2,f#4]@20 b2@25 ~@4 e2@21 g4 a2@30 c#6@16 c#6@11 ~@23 e3@10 g4@19 [a2,g3]@27 ~@24, ~@4 e3@22 ~@7 [a3,c#4,a4]@16 f#4@13 a3@12 ~@8 d5 g4@8 b4@9 f3@13 ~@5 f3@6 c6@4 ~@11 [d3,a3]@15 ~@18 e4@8 b3@6 d5@10 [b4,b5]@10 ~@42 [c#5,f#5,a5,c#6]@8, ~@8 a3@9 e4@9 ~@11 f#3@11 ~ a3@9 d4@8 d4@8 ~@8 b4@5 [e3,d5]@14 [c#4,f4]@27 ~@10 [f#3,c#4]@14 [f#3,c#4,e4]@13 [f#3,c#4]@14 g3@8 g5@19 f#5@17 ~@33, ~@12 c#4@8 f4@6 ~@15 b4@7 ~ d5@23 ~@10 f#5@18 ~@21 a5@6 ~@8 a5@18 [a5,c#6]@27 ~@2 d4@10 [e3,g3,b3,d4]@14 [e3,f#6]@26 ~@12 [d3,f#3,a3,c#4]@12]/8", // D A D A7 A D5 B F#m …
  I: "[~ [c#5,c#6]@7 ~@19 [g4,b4,d5,g5]@7 b4@5 ~@10 e3@4 ~@21 a2@5 ~ a5@9 ~@34 [f#5,f#6]@4 b2, ~ [f#3,c#4,f#5]@24 g3@15 [b4,b5]@5 [d5,d6]@8 [g3,g5,c#6,g6]@27 ~@13 f#3@13 f#3@12 f#3@10, ~ a5@18 [c5,f5,a5]@4 e3@6 ~@5 d5@5 e4@14 a2@21 ~@5 f#6@4 ~@20 b2@24 ~, ~ a3@13 [f3,a3,c4]@12 b3@28 ~@12 e3@14 [d2,c#6,a6]@28 ~@6 d5@14, ~@8 [c#5,c#6]@20 ~@6 [g4,g5]@20 ~@16 [f#5,f#6]@10 ~@18 [f#5,f#6]@9 [a3,e5,e6]@21]/4", // C# G F# F#5 B D Gdim F …
  J: "[~@25 d4@5 ~@22 b2@3 ~@7 b5@5 ~@13 e5@3 ~@65 a6@7 ~@4 a2@4 ~@58 d5@2 e3, ~@3 c#6@27 d4@25 ~@7 e5@11 b3@35 a2@10 g3@2 [e5,e6]@3 a3@3 [e5,e6] c#4@3 f4@3 [c#6,f6]@3 a4@3 [a5,c#6,f6]@4 c#5@4 [f5,c#7,f7]@8 a6@8 d2@12 f#4@3 a4@8 f#3@14 a3@2 c4@2 f#4 b3@2 e3@5 d4@6 d4@6, ~@3 c#5@3 ~@6 e3@23 [c#5,c#6]@7 [d5,d6]@6 [e5,e6]@7 ~@7 g5@13 d4@2 b4@6 [b4,e5,g5,b5]@4 [c#5,f#5,a5,c#6]@4 b5@17 [f#5,f#6]@7 [f#5,f#6]@50 ~@9 c#4@14 ~@3 a3@4 f#4@3 f3@11 g3@5 ~@2 b4@8, ~@4 e2@51 [e2,c#5,c#6]@12 ~ e3@42 ~ c#3@53 ~@5 d3@11 c#5@3 e5@5 ~@5 c#4@17 b3@10 b3@4, ~@16 g#3@24 [e3,g#3]@14 ~@8 b4@8 g3@21 [d5,d6]@3 [c#5,c#6]@3 [d5,d6]@2 [d#5,d#6]@3 [e5,e6]@3 [f5,f6]@5 ~@3 e3@51 ~@8 [f#3,a3]@13 c#5@25 ~@4 g4@10]/7", // E C# Aaug C# D E Em F#m …
  K: "[~@19 c2@3 ~@11 f#4@2 ~@3 e5@3 ~@20 a4@3, ~@2 f#5@14 c#5@6 ~@8 d3@5 [f#4,c#5] a4@5 e5@3 c#5@5 [f#4,a4,c#5]@5 c#5@2 ~@8, ~@2 a2@4 ~@3 c#4@10 d2@24 f#3@4 c#4@8 f3@9, ~@4 e3@17 ~ d1@23 ~@7 b3@3 c5@5 [f4,c5]@4, ~@11 e4@10 ~@7 c#3@3 [f#3,a3] [a4,c#5] c#4@12 a3@11 ~ a3@7]/2", // F#5 F#m F5 F#m A
  L: "[b3@3 ~@6 d4@3 ~@8 g5@4 e3@2 ~@56 c#4@7 ~@3 b2@3 d3, ~@3 [g4,b4]@24 c#5@15 c#4@4 e4@5 c#4@8 f#5 g5@2 a5@11 c#4@4 f#5@12 e5@2 e5@5, ~@3 e3@12 d5@2 b3@9 ~@5 e3@30 g#5@2 ~@7 a3@20 f#5@2 ~@4, ~@3 d4@6 b3@3 d4@14 ~ g5@8 a3@28 d3@28 ~@5, ~@6 g3@20 a2@12 g4@25 ~@4 f#3@24 ~@5]/3", // G
  M: "[~@13 b2@4 ~@55 a2@3 ~ c#4@8 ~@3 f#3@4 f#3@3 b2@4 ~@77 f5@6 ~@37 a4@38, ~@2 d5@16 ~@3 b2@19 g#4@4 c#5@25 b4@6 d2@20 ~@10 a3@9 f#3@6 [d4,d5]@10 [g#4,b4,d5,f#5]@51 f5@3 ~@16 c#4@56, ~@4 f#3@13 e2@59 ~@18 [b3,b4]@29 b2@7 ~@4 b2@48 f#5@2 a5@23 e4@49, ~@7 a3@10 g#4@12 g#3@47 ~@8 [a3,c#4,a4]@11 ~@3 d3@10 b2@9 a3@13 ~@23 g#3@30 ~@7 e3@64 ~@2, ~@10 f#5@7 c#5@16 b3@43 f#4@19 ~@6 f#3@10 d3@16 e2@56 a2@20 f#5@53]/8", // D G#m7b5 B A
  N: "[~@22 c#5@6 ~@2 f#5@2 ~@5 c#6@2 ~ f#6@2 ~@6 c#7@2 ~@2 f#7@4 ~@29 d1@53 ~@22, ~@7 d3@11 f#4@2 a4@7 ~ c#5@15 f#6@17 a7@64 ~@36, ~@5 f#3@11 f#5@6 a6@32 ~@26, ~@13 a3@21 a5@16 c#7@64 ~@46, ~@15 c#4@24 c#6@17 f#7@64 ~@40]/5",
})).s("gm_piano").gain(0.26)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@3 A@4 ~@3 B@3 ~ C ~@3 D@2 ~@2 E ~ F@2 ~@3 G@2 H I ~ J K L@2 M@2 N@2 O@2 P@2 ~@2 Q@2 R S T@3 ~@2 U@2 ~ V@2 W@5 ~@2
>`.pickRestart({
  A: "[~@30 c5@5 ~@39 g5@27 ~@27, ~@7 c#4@28 ~@27 a3@39 ~@27, ~@9 f#4@26 ~@93, ~@6 f4@3 ~@23, ~@26 a4@9 ~@93]/4",
  B: "[~@28 [d4,g#4]@12 ~@6 d5@28 ~@14 e3@5 ~@3]/3", C: "~@3 g4@13 ~@16", D: "[~@19 a3@27 ~@18, ~@11 g4@34 ~@19]/2",
  E: "~ c#5@5 ~@26", F: "[~@23 d4@14 ~@17 d4@8 ~@2, ~@11 d4@12 ~@23 d3@16 ~@2, ~@16 g#4@21 ~@27]/2",
  G: "[~@18 e5@25 ~@21]/2", H: "~@5 e6@3", I: "~@25 a3@7", J: "~ f#4@4 ~@11", K: "~@27 b5@4 ~, ~@5 a3@26 ~",
  L: "[~@14 f#5@11 f#5@27 ~@12]/2", M: "[~@31 f#5@9 ~@24]/2", N: "[~@14 f5@13 ~@5]/2",
  O: "[~@15 d3@7 ~@10, ~@25 a5@18 ~@21, ~@29 [a3,c#4]@14 ~@21]/2", P: "[~@21 b3@19 b3@14 ~@10]/2",
  Q: "[~@23 c#5@13 ~@28]/2", R: "~@25 g3@7", S: "~@14 g4@7 ~@11", T: "[~@23 a4@6 c4@7 ~@23 g4@11 ~@26]/3",
  U: "[~ d4@10 ~@5]/2", V: "[~@20 b3@35 ~@9, ~@11 e3@45 ~@8, ~@15 g#3@10 ~@39]/2",
  W: "[~@59 d2@14 ~@69 d1@7 ~@11, ~@3 a3@64 ~@21 f#4@64 ~@8, ~@91 a4@64 ~@5]/5",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)

More by Oscar Peterson