Strudelify
Right Here Waiting cover art

1989 · Repeat Offender

Right Here Waiting

Marx Richard

KeyC majorTempo90 bpm
0:00/0:00
// Right Here Waiting — Richard Marx
// 90 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 2 "Elec. Piano" epiano1 (copy of ch 1 "Piano" piano)
// note: Full arrangement: all 90 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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@8 C@3 D@4 E@6 F G@8 C@3 D@4 H@6 F I@2 J@4 K@6 L@6 M@3 N@6 F I@2 J@4 O@8 P@3>".pickRestart({
  A: "~@3 g5 ~@3 d5, c4@5 f5 e5@2, ~ g4@7, ~ c5@3, ~ g5",
  B: "[~@12 d5@4 ~@92 g4@4 ~@27 d4@4 ~@109 e3@4, g3@28 e5@4 a3@36 d5@20 g3@3 g4@5 c3@36 d3@36 a3@32 c3@16 b3@4 c4@3 a2@5 e3@4 a3@4 [b3,e4]@8 c4@12, ~@4 d4@32 e4@35 c4@5 c5@24 g3@4 c4@32 g3@35 c4@9 d4@4 e4@4 f4@24 c4@4 g2@40, ~@8 g4@32 a4@4 c5@8 d5@8 e5@24 b4@28 g4@31 d4@4 e4@4 f4@5 e4@3 a2@33 f2@64, ~@16 d5@4 e5@3 f5@40 f3@24 a4@29 f4@4 e4@4 d4@4 g2@36 e3@32 e4@8 d4@52]/8", // E5
  C: "[~@23 e2, a2@5 c4@3 [c2,c3]@11 [d4,g4]@5, ~@4 e3@31 g3@5 c4@4 [d4,g4]@20 f2@32, ~@2 a3@13 e2@3 c4@6, ~@3 [b3,e4]@14 g3@7]/3", // C G5 E5
  D: "[~@31 e2, d2@35 g3@4 a3@37 [d4,g4]@19 f2@12 [d4,g4]@21, ~ a3@2 d4@4 f2@6 c4 d4@2 [c2,c3]@16, ~@7 c4@25 g2@36 g3@4 c4@19 e2@12 c4@25, ~@12 g4@27 d4@4 b3@56 g3@29]/4", // G5 C
  E: "[~@84 c4@12 ~@51 c4@12 ~@13 g2@8 g2@4 g2@8, d2@35 g3@37 a3@4 [b3,e4]@47 b2@36 [d2,f3,a3,c4]@33, ~@4 a3@8 d4@15 c3@37 a2@32 c4@31 a2@64 ~, ~@7 c4@24 b2@37 e3@28 a3@24 c3@15 a3@5 [b3,e4]@52, ~@12 g4@27 [a3,d4]@4 b3@9 c4@4 d4@40 [d2,f3]@35 e3@61]/6", // E5 Dm7 E5 D5 Dm
  F: "~@3 g4 ~@3 d4, c3@20 f4@3 e4@9, ~ g3@7, ~ c4@3, ~ g4",
  G: "[~@12 d4@4 ~@91 g4@4 ~@29 d4@4 ~@108 e3@4, g2@28 e4@4 a2@36 d4@19 g2@4 g3@4 c3@37 d3@36 a3@32 c3@16 b3@4 c4@4 a2@4 e3@3 a3@4 b3 e4@8 c4@12, ~@4 d3@32 e3@35 c3@5 c4@7 b3@28 g4@33 d4@4 e4@3 f4@5 e4@3 a2@33 f2@64, ~@8 g3@31 a3@4 c4@9 d4@7 e4@28 a3@28 f4@4 e4@4 d4@5 g2@35 e3@33 e4@8 d4@52, ~@16 d4@4 e4@4 f4@40 f2@36 g3@3 c4@33 g3@35 c4@9 d4@4 e4@4 f4@24 c4@4 g2@40]/8",
  H: "[~@84 c4@12 ~@51 c4@12 ~@13 g2@8 g2@4 g2@8, d2@35 g3@37 a3@4 [b3,e4]@48 b2@35 [d2,f3,a3,c4]@33, ~@4 a3@8 d4@15 c3@37 a2@32 c4@31 a2@64 ~, ~@7 c4@24 b2@37 e3@28 a3@24 c3@15 a3@5 [b3,e4]@52, ~@12 g4@27 [a3,d4]@4 b3@9 c4@4 d4@40 [d2,f3]@35 e3@61]/6", // E5 Dm7 E5 D5 Dm
  I: "[~@12 d4@4 ~@43 e4@5, g2@28 e4@4 a2@4 e3@3 a3@4 c4@9 d4@12, ~ d3@15, ~ g3@7, ~@4 d4 e4 f4@10]/2",
  J: "[~@43 g4@4 ~@29 d4@4 ~@44 f4@4, f2@36 g3@3 c4@33 g3@27 e3@5 a3@3 c4@9 d4@4 e4@8, ~@4 d4@19 g2@4 g3@4 c3@37 d3@60, ~@7 c3@12 b3@28 g4@33 d4@4 e4@3 f4@5 e4@3 a2@33, ~@12 c4@11 a3@28 f4@4 e4@4 d4@5 g2@64]/4",
  K: "[~@28 c4@4 [f3,a3,c4]@11 ~@20 e3@11 ~@21 [f3,a3,c4]@12 ~@52 [f3,a3,c4]@13 ~@16 d2@4, f2@20 c4@4 [g2,b3]@38 [e2,g3,c4]@12 [e3,g3,c4]@8 e2@4 [e3,g3]@37 f2@28 g4@8 d2@13 [f3,a3,c4]@20, ~@4 e4@28 d2@11 [f3,a3]@44 c4@4 e2@36 g2@54 d2@3 g4@8, ~@8 c3@35 c4@8 d2@4 g4@40 f2@12 [f3,a3,c4]@9 f2@4 f3@15 c5@57, ~@12 d4@46 d2@61 [a3,c4]@23 b4@50]/6", // F G C Em F Am
  L: "[[e3,g3,c4]@12 ~@20 [f3,a3,c4]@11 ~@21 g2@4 g2@4 g2@5 ~@3 a2@5 ~@3 b2@5 ~@15 [e5,g5]@4 ~@11 [b4,d5]@17 [b4,d5]@4 ~@24 a4@4 ~@16 [c5,e5]@4, e2@20 e2@8 e2@57 a2@31 d5@3 [c5,e5]@25 b4@12 c5@16 a4@20, ~@12 [e3,g3,c4]@12 [e3,g3]@53 g2@35 e5@4 f5@28 d5@4 c5 e5@3 f5@40, ~@24 c4@8 f2@20 f2@7 f2@53 g5@44 e5@24 [b4,d5]@12, ~@43 [f3,a3,c4]@12 [f3,a3,c4]@38 b2@59 d5@20 c5@16 ~@4]/6", // C F Em Bm C Em Bm F
  M: "[~@44 [e5,g5]@4 ~@11 d5@16 ~ [b4,d5]@4 ~@4 [c5,e5]@3 ~@4 [c5,e5]@5, ~ d5@6 g4@16 ~, ~@4 b4@16 b4@28 e5@4 f5@28 d5@7 [c5,e5]@2 [d5,f5]@7, ~ c5@3 g5@4, ~@3 a4@3 a4@7 d5 [c5,e5]@6 b4@4]/3", // Em Bm C Dm C
  N: "[~@84 c4@12 ~@51 c4@12 ~@13 g2@8 g2@4 g2@8, ~@8 a4@36 d5@8 e5@16 e3@28 a3@24 c3@15 a3@5 [b3,e4]@52, ~@8 c5@12 c5@8 f5@8 g5@24 c5@36 [d2,f3]@35 e3@61, ~@12 b4@24 e5@8 f5@20 a2@32 c4@31 a2@64 ~, ~@12 d5@8 e5@8 a5@24 c5@4 [b4,d5]@16 a3@4 [b3,e4]@47 b2@36 [d2,f3,a3,c4]@33]/6", // E5 Dm Bm E5 Dm7
  O: "[~@28 c4@4 ~@12 g5@4 ~@28 d5@4 ~@91 g4@5 ~@27 d4@4 ~@45 f4@4, f2@20 c4@4 [g2,b3]@28 f5@4 e5@4 d5@4 g3@28 e5@4 a3@36 d5@20 g3@3 g4@5 c3@36 d3@32 e3@4 a3@3 c4@9 d4@4 e4@8, ~@4 e4@28 c4@36 d4@32 e4@35 c4@5 c5@24 g3@4 c4@32 g3@56, ~@8 c3@32 c5@32 g4@32 a4@4 c5@8 d5@8 e5@24 b4@28 g4@31 d4@4 e4@4 f4@5 e4@3 a2@33, ~@12 d4@24 g4@12 g5@32 d5@4 e5@3 f5@40 f3@24 a4@29 f4@4 e4@4 d4@4 g2@64]/8", // G
  P: "[~@7 c4@16 ~, f2@5 c4 [g2,b3]@16 ~@2, ~ e4@16 ~@7, ~ c3@8 ~@3, ~@3 d4@16 ~@5]/3", // G
})).s("gm_piano").gain(0.6).pan(0)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@3 A@5 B@2 C@2 D@2 E@6 F@6 G@2 H@2 I J K@4 L@4 M@5 N O@2 P@6 Q@7 R J S T U V W X@6 Y@6 ~@3 Z@3 V S AA@2
>`.pickRestart({
  A: "[~@23 g2@8 c2@29 e2@3 g2@28 e2@4 a2@24 g2@8 f2@24 ~ g2@8]/5", B: "[a2@31 a1@32 ~]/2",
  C: "[c2@28 e2@3 f2@29 e2@4]/2", D: "[d2@28 f2@3 g2@23 ~@2 g2@8]/2",
  E: "[c3@27 ~ e2@3 f2@27 ~@2 e2@3 d2@28 ~ c3@3 b2@31 ~ a2@32 d2@11 ~@10 d2@3 ~ c3@4 b2@4]/6",
  F: "[a2@25 ~@2 c2@3 ~ d2@9 ~@3 g2@5 ~@3 g2@6 ~@3 g2@3 c3@28 e2@4 g2@28 e2@4 a2@28 g2@4 f2@24 g2@8 ~]/6",
  G: "[c3@4 c2@23 e2@4 g2@28 e2@4 ~]/2", H: "[a2@27 g2@4 f2@24 ~ g2@8]/2", I: "a2@31 ~, b2 ~@31", J: "a2",
  K: "[c3@3 c2@24 ~ e2@3 f2@28 ~ e2@3 d2@28 f2@4 g2@33]/4", L: "[c3@3 c2@24 ~ e2@3 f2@28 e2@4 d2@28 c3@4 b2@31 ~@2]/4",
  M: "[a2@26 ~@2 c2@2 ~ d2@24 ~ c3@3 b2@4 a2@26 ~@2 c2@4 d2@12 ~ g2@6 ~@2 g2@6 ~@2 g2@3 c3@29 c2@4]/5",
  N: "~ g2@26 e2@5", O: "[a2@28 g2@3 f2@24 g2@8 c3]/2",
  P: "[~@3 c2@24 f2@4 g2@28 e2@4 a2@28 ~ g2@3 f2@25 g2@7 d2@11 ~@2 d2@13 ~ d2@3 ~ e2@12 c2@12 e2@3 c2@4 f2@3]/6",
  Q: "[~@11 f2@14 ~@2 f2@4 g2@25 ~@3 g2@3 d2@11 ~@2 d2@15 ~@2 d2@3 e2@9 ~@3 e2@9 c2@3 e2@4 c2@4 f2@9 ~@3 f2@10 ~@2 f2@3 ~ f2@4 g2@17 a2@2 ~ a2@4 b2@3 ~ b2@4 c3@29 g2@2 ~@2]/7",
  R: "g2@27 e2@4 ~", S: "f2@23 ~ g2@8", T: "c3@3 ~ c2@24 f2@4", U: "g2@27 e2@5", V: "a2@7 g2", W: "f2 g2",
  X: "[a2@27 c2@3 d2@25 ~ c3@3 b2@4 a2@28 c2@3 d2@13 ~ g2@7 g2@7 ~@2 g2@3 c3@28 e2@4 g2@29 e2@4]/6",
  Y: "[a2@28 g2@3 f2@24 g2@8 c3@4 c2@24 f2@4 g2@28 e2@4 a2@24 g2@8 f2@25 g2@7 ~]/6",
  Z: "[~@24 g2@7 c3@4 ~ c2@24 f2@3 g2@24 e2@9]/3", AA: "[c3@19 ~@13]/2",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@3 A@7 ~@11 B@8 C@3 ~@7 D@4 E@8 F@4 G@4 H@8 I@4 J@8 K ~@3 L@7>".pickRestart({
  A: "[~@31 g4@32 d4@32 e4@32 c4@31 ~ c4@64 ~]/7",
  B: "[~@31 g4@32 b4@11 c5@12 d5@8 c5@29 c4@28 g4@39 ~ d5@12 ~ e5@9 [d5,f5]@8 [c5,e5]@33 ~ [a4,c5], ~@190 b4@11 ~@2 c5@12 ~@41]/8", // Dm C Am
  C: "[~@3 [a4,c5]@88 ~@5]/3", D: "[~@31 a4@32 d4@31 a4@32 e4@2]/4",
  E: "[~@12 f4@11 e4@7 g4@30 ~@2 g4@32 e4@57 g4@8 g4@31 [b4,d5]@12 ~ c5@9 ~@2 f5@7 ~@2 e5@33, ~@101 e5@6 d5@5 ~@16, ~@221 c5@35]/8", // Bm
  F: "[~@31 d4@23 ~ d4@7 c4@12 d4@11 c4@8 ~ c4@34]/4",
  G: "[~@7 c5@7 ~@4 g4@14 ~@43 e4@12 c4@41, ~@7 f4@69 ~@52, ~@7 [d4,b4]@8 ~@49]/4", // G
  H: "[~@15 c5@8 b4@8 g4@31 [d4,b4]@12 [e4,c5]@12 [f4,d5]@8 e5@24 c5@33 g5@7 ~ g5@31 [b4,d5]@12 [c5,e5]@12 [d5,f5]@7 [c5,e5]@34 ~]/8", // G C Dm Bm C Dm C
  I: "[[c5,e5]@11 [c5,e5]@12 d5@7 c5@32 f4@13 f4@19 c5@32 a4@2]/4", // C
  J: "[~@11 g4@20 g4@31 [b3,d4]@12 [c4,e4]@12 [d4,f4]@8 e4@56 g4@7 ~ g4@32 [b4,d5]@13 [c5,e5]@11 ~ f5@6 ~ c5@33 g4, ~@94 c4@63 ~@57 d5@7 e5@34 ~]/8", // Bm C Dm Bm C
  K: "~@11 f4@12 e4@9",
  L: "[~@31 g4@32 [b3,d4]@12 [c4,e4]@10 [d4,f4]@8 ~ e4@57 d4@7 ~ g3@41 ~@24, ~@47 g4@19 ~@13 [c4,e4]@21 ~@12]/7", // Bm C Dm C
})).s("gm_string_ensemble_1").gain(0.51).pan(1)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!8]!76 ~@4 [x!8]!4 ~@2>").gain(0.51)

stack(piano, bass, string_ensemble_1, hihat)

More by Marx Richard