Strudelify

See You When I Get There

Lou Rawls

KeyC majorTempo123 bpm
0:00/0:00
// See You When I Get There — Lou Rawls
// 123 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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.

// other · flute
const flute = note("<~@84 A B ~@2 C D ~@2 E F ~@52>".pickRestart({
  A: "~@4 d6@9 ~ c6@2", B: "d6 ~ f6 ~ d6@10 ~@2", C: "f5@9 ~ g5@2 g#5@2 a#5@2", D: "b5@4 d6@4 f6@7 ~",
  E: "~@2 f6 e6 [d6,d#6] ~ d6 c#6 [b5,c6] ~ b5 a#5 [g#5,a5] ~ g5 f#5", F: "[e5,f5] d5@12 ~@3",
})).s("gm_flute").gain(0.4)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@11 A B@2 C@2 B@2 D@2 B@2 E F G H B@2 C@2 B@2 E F I J I K L M L M L N O P B@2 C@2 B@2 C@2 B@2 E F I J I K L M L M L Q
  R S T L T U T L T L T L T V B@2 C@2 B@2 C@2 B@2 E F I J I K L M L M L Q R S T L T U T L T L T L T K L M L M L Q R S T
  L T U T L T L T L T U T L T L T L T W
>`.pickRestart({
  A: "~@8 g2@2 ~ g2@2 g2@2 ~", B: "g#1@15 ~", C: "[d2@23 ~ g1@2 ~ g1 ~@2 g1 ~]/2", D: "[d2@23 ~ g1@2 ~ g1@2 g1@2 ~]/2",
  E: "d2@15 ~", F: "g1@7 ~ g1@3 ~ g1@3 ~", G: "c2@11 c2@4 ~", H: "c2@7 ~ g1@2 ~ g1@2 ~ g1@2",
  I: "c2@2 ~ c2 ~@2 g1@2 c2@2 ~ c2 ~@2 g1@2", J: "c2@2 ~ c2 ~@2 g1@2 c2@2 ~ c2 ~@2 g2@2",
  K: "c2@2 ~ c2 ~@2 g1 ~ c2@2 ~ d2@2 ~ e2@2", L: "f2@2 ~ f2 ~@2 c2 ~ f2@2 ~ f2 ~@2 c2 ~",
  M: "e2@2 ~ e2 ~@2 b1 ~ e2@2 ~ e2 ~@2 b1 ~", N: "d2@2 ~ d2 ~@2 a1 ~ d2@2 ~ d2 ~@2 a1 ~",
  O: "g1@2 ~ g1 ~@2 d2 ~ g1@2 ~ g1 ~@2 g1 ~", P: "g1!5 ~@3 g1@2 ~ g1@2 ~ g1@2", Q: "d2@2 d3 e3 ~ f3 f#3@4 d3@3 ~ d2@2",
  R: "g1@2 ~ g1 ~@2 d2@2 g1@2 ~ g1 ~@2 d2@2", S: "g1@3 d2@2 ~ g2@2 ~ g2 g1 ~ g1@2 g2 ~",
  T: "c2@2 ~ c2 ~@2 g1 ~ c2@2 ~ c2 ~@2 g1 ~", U: "f2@2 ~ f2 a#1 ~ c2 ~ f2@2 ~ f2 ~@2 c2 ~",
  V: "f1@7 ~ g1@2 ~ g1@2 ~ g1@2", W: "c2 ~@7",
})).s("gm_fretless_bass").gain(0.64)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@11 A B ~@23 C D E F E F E G H I ~@14 C D E F E F E G H J K L M L M N O N P N Q R S@2 ~@2 T U V@2 W X ~@4 C D E F E F
  E G H J Y Z AA Z AA AB AC AB AD AB AE D E F E F E G H J Y Z AA Z AA AB AC AB AD AB AE Z AA AB AC AB AD AB AF AG
>`.pickRestart({
  A: "~@8 [g4,b4,d5]@2 ~ [c5,d#5]@2 [g4,c5,d5,f5] ~@2, ~@11 g4 ~@4", B: "[g#4,d#5,g5]@9 ~@7", C: "[d#4,g4,a#4,c5]@15 ~",
  D: "[e4,g4,a#4,c5]@15 ~", E: "[f4,a4,c5,e5]@15 ~", F: "[e4,g4,b4,d5]@15 ~", G: "[a4,c5,d5,f#5]",
  H: "[g4,c5,f5]@9 ~ [a4,a5]@3 ~ c5@2, ~@14 c6 ~", I: "[g4,d5,g5,b5]!5 ~@11", J: "[d5,g5,b5]@3 ~",
  K: "[e4,g4,c5]@2 ~ [e4,g4,c5] ~@4 [e4,g4,c5]@2 [e4,g4] c5 ~@4", L: "[e4,a4,c5]@2 ~ [e4,a4,c5] ~@2 [e4,a4,c5]@9 ~",
  M: "[e4,g4,c5]@2 ~ [e4,g4,c5] ~@4 [e4,g4,c5]@2 ~ [e4,g4,c5] ~@4", N: "[e4,a4,c5]@2 ~ [e4,a4,c5] ~@2 [e4,a4,c5]@8 ~@2",
  O: "[e4,g4,c5]@2 ~ [e4,g4,c5] ~@4 [e4,g4,c5]@2 [e4,g4,c5] ~@5", // C
  P: "[e4,g4,c5]@3 [e4,g4,c5] ~@4 [e4,g4,c5]@2 ~ [e4,g4,c5] ~@4", // C
  Q: "[e4,g4,c5]@2 ~ [e4,g4,c5] ~@4 [e4,g4,c5]@2 e4 [g4,c5] ~@4", R: "[e4,a4,c5] ~",
  S: "[~@4 g4 ~ f4 ~ g4 ~ f4 ~ d#4 ~ c4 d#4@9 ~@8]/2", T: "~@4 g4 ~ f4 ~ g4 ~ f4 ~ d#4 ~ f4 ~",
  U: "g4@7 ~ f4@3 ~ d#4@3 ~", V: "[d4@3 ~]/2", W: "~@4 g4 ~ f4 ~ g4 ~ f4 ~ d#4 ~ c4 ~", X: "d#4@13 ~@3",
  Y: "[e4,g4,c5]@2 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@2 [e4,g4] ~ c5 ~@3", Z: "[e4,a4,c5]@2 ~@2 [e4,a4,c5] ~ [e4,a4,c5]@9 ~",
  AA: "[e4,g4,c5]@2 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@2 ~@2 [e4,g4,c5] ~@3", // C
  AB: "[e4,a4,c5]@2 ~@2 [e4,a4,c5] ~ [e4,a4,c5]@8 ~@2", // Am
  AC: "[e4,g4,c5]@2 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@2 [e4,g4,c5] ~@5", // C
  AD: "[e4,g4,c5]@3 ~ [e4,g4,c5] ~@3 [e4,g4,c5]@2 ~@2 [e4,g4,c5] ~@3", // C
  AE: "[e4,g4,c5]@2 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@2 e4 ~ [g4,c5] ~@3", AF: "[e4,g4,c5]@3 ~", AG: "[e4,g4,c5] ~@7",
})).s("gm_brass_section").gain(0.48)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@11 A B ~@9 C D E@2 ~ F G@2 H@2 I J K L M N ~@9 F G@2 ~ F G@2 H@2 I J K L M N ~@8 O P Q R Q S Q S Q S Q T ~ F G@2 ~ F
  G@2 H@2 I J K L M N ~@8 O P Q R Q S Q S Q S Q N ~@8 O P Q R Q S Q S Q S Q R Q S Q S Q S U V
>`.pickRestart({
  A: "~@8 [d4,d5]@2 [d#4,d#5]@2 ~ [f4,f5]@2 ~", B: "[g4,g5]@7 ~@9", C: "~@10 [g4,g5]@3 [c5,c6]@3",
  D: "~ [g4,d5,f5,g5], [b4,b5]", E: "[[c4,e5,g5,b5]@21 ~@3 [d4,d5]@3 [d#4,d#5]@3 [f4,f5]@2]/2", F: "f5",
  G: "[[f#4,d5]@23 ~ [g4,b4,d5]@3 d#5@3 [g4,f5]@2, ~@27 g4 ~@4]/2", // D G G7
  H: "[[g#4,d#5,g5]@16 [d#5,f5]@10 ~@3 f5@2 ~, c5, ~@16 g#4@15 ~]/2", I: "~@10 [g4,g5]@3 [c5,c6]@3, d5@3 ~",
  J: "[b4,b5]@13 ~@3", K: "~@8 [g4,g5]@2 a5@3 [g4,g5]@3", L: "e5", M: "d#5@8 [g4,g5]@2 [a4,a5]@3 [g4,g5]@3",
  N: "[c5,e5,a#5,c6]", O: "~@5 g4@3 [c5,c6]@4 [d5,d6]@4, ~@4 g5@3 ~@9",
  P: "[e5,e6] ~ [d5,d6] [e5,e6] ~ [d5,d6] [e5,e6]@6 ~@4", Q: "~ [g4,g5] [c5,c6] [d5,d6]",
  R: "[e5,e6] ~ [d5,d6] [e5,e6] ~ [d5,d6] [e5,e6]@4 ~@6", S: "[e5,e6] ~ [d5,d6] [e5,e6] ~ [d5,d6] [e5,e6]@3 ~@7",
  T: "[a5,c6,e6]@5 ~@3 [g2,b3,d4]@3 [a2,b3,d#4]@3 [b2,b3,d4,f4]@2", U: "[e5,g5,c6] ~@15", V: "[c4,c5] ~@7",
})).s("gm_string_ensemble_1").gain(0.48)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@24 A@2 B@2 C@2 ~ D E ~ F G H ~@9 B@2 C@2 B@2 C@2 ~ D E ~ F G H ~@20 I B@2 C@2 B@2 C@2 ~ D E ~ F G H ~@49
>`.pickRestart({
  A: "[c5@21 ~@11]/2", B: "[[g#4,c5,d#5], g5@17 ~@15]/2", C: "[a#4@23 ~@4 b4@4 ~]/2", D: "~@10 d#5@3 ~@3",
  E: "[f#4,a#4]@3 ~", F: "[b4,e5]@9 ~ a4@3 ~@3, c4, g5@7 ~@9", G: "e4", H: "d#4 ~", I: "f5@5 ~@11",
})).s("gm_string_ensemble_1").gain(0.24)

// drums · kick
const kick = s("bd").struct("<A@11 B C@33 D C@80 E F@9 G C@8 H>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x ~@2 x ~ x ~@2", C: "x!4", D: "x ~@3 x ~@3 x ~@2 x ~@2 x ~",
  E: "x ~@3 x ~@3 x!2 ~@2 x!2 ~@2", F: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", G: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~@3", H: "x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@11 A B@33 C B@23 D B@35 D B@19 D A ~@19>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "x!5 ~@11", D: "~@4 x ~@4 x!7",
})).gain(0.64)

stack(flute, bass, brass_section, string_ensemble_1, string_ensemble_1_soft, kick, snare)

More by Lou Rawls