Strudelify

Right Here Waiting for You

Marx Richard

KeyC majorTempo90 bpm
0:00/0:00
// Right Here Waiting for You — Marx Richard
// 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 1 "Piano" piano (copy of ch 2 "Elec. 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 · whistle · "Piano"
const whistle = note("<~@60 A@6 B@4 ~@20>".pickRestart({
  A: "[~@12 [e5,g5]@3 ~@12 [b4,d5]@17 [b4,d5]@4 ~@24 a4@4 ~@64 [e5,g5]@4 ~@11 d5@16 ~ [b4,d5]@4 ~@4 e5@3 ~@4 [c5,e5]@5, ~@15 g5@45 e5@24 [b4,d5]@8 c5@8 d5@24 g4@64 ~@4, ~@15 e5@8 [c5,e5]@25 d5@4 [c5,e5]@4 d5@4 c5@16 a4@24 b4@8 c5@36 g5@48, ~@20 f5@36 f5@52 a4@8 b4@28 e5@4 f5@28 d5@3 c5@4 [c5,e5]@2 [d5,f5]@7, ~@20 d5@7 ~@21 b4@28 c5@16 e5@28 a4@28 d5@4 [c5,e5]@24 b4@16]/6", // Em Bm Em Bm C Bm C Dm …
  B: "[~@7 [b4,d5]@8 ~, ~@2 a4@9 d5@2 [c5,e5]@16 ~@3, ~@2 c5@3 c5@2 f5@2 g5@16 ~@7, ~@3 b4@6 e5@2 f5@16 ~@5, ~@3 d5@2 e5@2 a5@16 ~@9]/4", // Bm C
})).s("gm_whistle").gain(0.3).pan(0)

// chords · piano · "Elec. Piano"
const piano = note("<A B@8 C@3 D E F@8 G H@8 I@3 D E J@8 G K@6 L@6 M@5 ~@6 N O@3 G K@6 P@8 Q@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@4 c3@37 d3@35 a3@33 c3@16 b3@4 c4@3 a2@5 e3@4 a3@4 [b3,e4]@7 c4@13, ~@4 d4@32 e4@35 c4@5 c5@24 g3@3 c4@33 g3@35 c4@9 d4@4 e4@4 f4@24 c4@4 g2@40, ~@8 g4@31 a4@5 c5@8 d5@7 e5@24 b4@29 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@35 e3@33 e4@8 d4@52]/8", // E5
  C: "[~@23 e2, a2@5 c4@3 [c2,c3]@11 [d4,g4]@5, ~@4 e3@31 g3@4 c4@5 [d4,g4]@20 f2@32, ~@7 a3@53 e2@12 c4@24, ~@3 [b3,e4]@14 g3@7]/3", // C G5 E5
  D: "~@7 f2, d2@3 g4@5, ~ a3@7, ~@7 c4@25, ~@11 d4@21", E: "~@3 d4, g2@5 c4@3, ~@3 g3@29, ~@7 a3@25, ~@7 d4@4 b3@21",
  F: "[~@148 c4@12 ~@51 c4@12 ~@13 g2@8 g2@3 g2@9, [c2,c3]@43 [d4,g4]@20 d2@36 g3@37 a3@4 [b3,e4]@47 b2@36 [d2,f3,a3,c4]@33, ~@3 g3@24 e2@12 c4@21 e2@35 b2@37 e3@28 a3@24 c3@15 a3@5 [b3,e4]@52, ~@7 c4@24 f2@37 a3@8 g4@27 [a3,d4]@4 b3@9 c4@4 d4@40 [d2,f3]@35 e3@61, ~@12 [d4,g4]@23 g3@36 c4@5 d4@15 c3@37 a2@32 c4@31 a2@64 ~]/8", // C G5 E5 Dm7 E5 D5 Dm G5
  G: "~@12 g4@3 ~@12 d4@5, c3@20 f4@3 e4@9, ~ g3@7, ~ c4@3, ~@15 g4@17",
  H: "[~@12 d4@4 ~@91 g4@4 ~@29 d4@3 ~@109 e3@4, g2@28 e4@3 a2@37 d4@19 g2@4 g3@4 c3@37 d3@35 a3@33 c3@16 b3@4 c4@4 a2@4 e3@3 a3@4 [b3,e4]@9 c4@12, ~@4 d3@31 e3@36 c3@5 c4@7 b3@28 g4@32 d4@4 e4@4 f4@4 e4@4 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@39 f2@36 g3@4 c4@33 g3@35 c4@9 d4@4 e4@4 f4@24 c4@4 g2@40]/8", // E5
  I: "[~@23 e2, a2@5 c4@3 [c2,c3]@11 [d4,g4]@5, ~@4 e3@31 g3@4 c4@5 [d4,g4]@20 f2@32, ~@2 a3@13 e2@3 c4@6, ~@3 [b3,e4]@14 g3@7]/3", // C G5 E5
  J: "[~@148 c4@12 ~@51 c4@12 ~@13 g2@7 g2@4 ~ g2@8, [c2,c3]@43 [d4,g4]@20 d2@36 g3@37 a3@4 [b3,e4]@47 b2@36 [d2,f3,a3,c4]@33, ~@3 g3@24 e2@12 c4@21 e2@35 b2@37 e3@28 a3@24 c3@15 a3@5 [b3,e4]@52, ~@7 c4@24 f2@37 a3@8 g4@27 [a3,d4]@4 b3@9 c4@4 d4@40 [d2,f3]@35 e3@61, ~@12 [d4,g4]@23 g3@36 c4@5 d4@15 c3@37 a2@32 c4@31 a2@64 ~]/8", // C G5 E5 Dm7 E5 D5 Dm G5
  K: "[~@12 d4@4 ~@91 g4@4 ~@29 d4@3 ~@45 f4@4, g2@28 e4@3 a2@37 d4@19 g2@4 g3@4 c3@37 d3@31 e3@4 a3@4 c4@9 d4@4 e4@8, ~@4 d3@31 e3@36 c3@5 c4@7 b3@28 g4@32 d4@4 e4@4 f4@4 e4@4 a2@33, ~@8 g3@31 a3@4 c4@9 d4@7 e4@28 a3@28 f4@4 e4@4 d4@5 g2@64, ~@16 d4@4 e4@4 f4@39 f2@36 g3@4 c4@33 g3@56]/6",
  L: "[~@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]@41 g2@53 d2@4 g4@8, ~@4 e4@28 d2@11 [f3,a3]@43 c4@5 e2@44 c5@57, ~@8 c3@35 c4@8 d2@3 g4@41 f2@12 [f3,a3,c4]@8 f2@8 f2@28 g4@8 d2@13 [f3,a3,c4]@20, ~@12 d4@46 d2@61 [f3,a3,c4]@23 b4@50]/6", // F G C Em F
  M: "[[e3,g3,c4]@12 ~@20 [f3,c4]@11 ~@20 g2@4 ~ g2@4 g2@4 ~@4 a2@4 ~@4 b2@4 b2@64 ~@4, e2@20 e2@7 e2@57 a2@64 ~@12, ~@3 [e3,g3,c4]@3 [e3,g3]@13 g2@16 ~@5, ~@24 c4@7 f2@20 ~ f2@7 f2@64 ~@37, ~@31 a3@11 ~ [f3,a3,c4]@12 [f3,a3,c4]@64 ~@41]/5", // C F5 C Em F
  N: "~@5 c4@3, a2, ~ e3@7, ~ a3@3, ~@3 [b3,e4]@5", // E5
  O: "[~@51 c4@12 ~@13 g2@8 g2@3 g2@9, [d2,f3]@35 e3@61, c4@31 a2@64 ~, a3@9 b2@12 [d2,f3,a3,c4]@11, ~@24 c3@15 a3@5 [b3,e4]@52]/3", // Dm Dm7 E5
  P: "[~@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@4 c3@37 d3@31 e3@4 a3@4 c4@9 d4@4 e4@8, ~@4 e4@28 c4@36 d4@32 e4@35 c4@5 c5@24 g3@3 c4@33 g3@56, ~@8 c3@32 c5@32 g4@31 a4@5 c5@8 d5@7 e5@24 b4@29 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
  Q: "[~@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.34).pan(1)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@3 A@5 B@2 C@4 D@6 E@6 F@4 G@2 H@8 I@5 J K@2 L@6 M@7 N O P Q@2 R S T@6 U@6 ~@3 V@3 R W X@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@3 d2@28 ~ f2@3 g2@23 ~@2 g2@8]/4",
  D: "[c3@27 ~ e2@3 f2@27 ~@2 e2@3 d2@28 c3@3 ~ b2@31 ~ a2@32 d2@10 ~@11 d2@3 ~ c3@3 ~ b2@4]/6",
  E: "[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",
  F: "[c3@3 c2@24 e2@4 g2@28 e2@4 a2@27 ~ g2@4 f2@24 ~ g2@8]/4", G: "[a2@30 ~ a2@32 ~, b2 ~@63]/2",
  H: "[c3@3 c2@24 ~ e2@3 f2@28 ~ e2@3 d2@28 f2@4 g2@32 c3@4 c2@24 e2@4 f2@28 e2@4 d2@27 c3@4 ~ b2@31 ~@2]/8",
  I: "[a2@26 ~@2 c2@2 ~ d2@24 ~ c3@3 b2@4 a2@26 ~@2 c2@4 d2@12 g2@6 ~@3 g2@5 ~@3 g2@3 c3@29 c2@4]/5", J: "g2@26 ~ e2@5",
  K: "[a2@28 g2@3 f2@24 g2@7 ~ c3]/2",
  L: "[~@3 c2@24 f2@4 g2@28 e2@4 a2@28 ~ g2@3 f2@25 g2@7 d2@11 ~ d2@13 ~@2 d2@3 ~ e2@12 c2@12 e2@3 c2@4 f2@3]/6",
  M: "[~@11 f2@14 ~@2 f2@3 ~ g2@25 ~@2 g2@3 ~ d2@11 ~@2 d2@14 ~@3 d2@3 e2@9 ~@3 e2@9 c2@3 e2@4 c2@4 f2@9 ~@3 f2@10 ~ f2@3 ~@2 f2@3 g2@17 a2@2 ~ a2@4 b2@3 ~@2 b2@4 c3@29 g2@2 ~@2]/7",
  N: "g2@27 e2@4 ~", O: "a2", P: "f2@23 ~ g2@8", Q: "[c3@3 c2@24 ~ f2@3 g2@28 e2@5]/2", R: "a2@7 g2", S: "f2 g2",
  T: "[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@28 e2@4 ~]/6",
  U: "[a2@27 g2@4 f2@24 g2@8 c3@4 c2@24 f2@4 g2@28 e2@4 a2@24 g2@8 f2@25 g2@7 ~]/6",
  V: "[~@24 g2@7 c3@4 c2@25 f2@3 g2@24 e2@9]/3", W: "f2@23 g2@8 ~", X: "[c3@19 ~@13]/2",
})).s("gm_acoustic_bass").gain(0.29).pan(0.2)

// other · woodblock · "Percussion"
const woodblock = note(`<
  ~@4 A B@2 A@2 B@2 A@3 B@13 A B@2 A@3 B@5 A B A B A@2 B@2 A B A@4 B@5 A B A@2 B A B@2 A B@4 A B A B@7 ~@4 B@4 ~@2
>`.pickRestart({
  A: "g#4@2 ~@2 g#4@3 ~ g#4@2 ~@2 g#4@2 ~@2 g#4@2 ~@2 g#4@2 ~@2 g#4@2 ~@2 g#4@2 ~@2",
  B: "g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~",
})).s("gm_woodblock").gain(0.03)

// 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@27 g4@40 ~ d5@12 [c5,e5]@10 [d5,f5]@8 [c5,e5]@33 ~ [a4,c5], ~@190 b4@11 ~@55]/8", // C Dm C Am
  C: "[~ [a4,c5]@29 ~@2]/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 ~@3 g4@13 ~@45 e4@12 c4@41, ~@7 f4@69 ~@52, ~@7 [d4,b4]@8 ~@49]/4", // G
  H: "[~@15 c5@8 b4@7 g4@32 [d4,b4]@12 [e4,c5]@12 [f4,d5]@8 e5@24 c5@33 g5@7 ~ g5@31 [b4,d5]@11 [c5,e5]@13 [d5,f5]@7 [c5,e5]@34 c5]/8", // G C Dm Bm C Dm C
  I: "[e5@10 ~ [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]@12 ~ c5@11 ~ f5@6 ~ c5@33 g4, ~@94 c4@63 ~@45 e5@12 d5@7 e5@34 ~]/8", // Bm C Dm Bm
  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.22)

stack(whistle, piano, bass, woodblock, string_ensemble_1)

More by Marx Richard