Strudelify
The Way It Is cover art

1986 · The Way It Is

The Way It Is

Bruce Hornsby

KeyG majorTempo112 bpm
0:00/0:00
// The Way It Is — Bruce Hornsby
// 112 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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.

// bass · synth bass 2 · "Bass"
const bass = note(`<
  ~@13 A B C D E B C D F G H I J G H I J K@8 B C D E G H I J G H I J K@8 B C D L M H I L M H I L M H I L M H I L M H I J
  N O N O G H I J G H I J K@8 B C D E K@2 P Q ~@5
>`.pickRestart({
  A: "~@6 e1 g1 a1 b1 a1 g1 a1 g1 e1 g1", B: "a1@5 ~ e2@5 ~ e2@3 ~", C: "d2@5 ~ g2@2 c2@3 ~ c2@3 ~",
  D: "g1@5 ~ g1@2 d2@5 ~ d2@2", E: "c2@5 ~ c2@2 c2@3 ~ g1@3 ~", F: "a1@5 ~ a1@2 a1@6 ~@2", G: "a1@5 ~ a1@2 e2@6 ~@2",
  H: "d2@5 ~ d2@2 c2@6 ~@2", I: "g1@5 ~ g1@2 d2@6 ~@2", J: "c2@5 ~ c2@8 ~@2",
  K: "[g1@5 ~ f1@5 ~ c2@6 ~@2 c2@3 ~ c2@3 ~ c2@3 ~]/2", L: "c2@5 ~ c2@5 ~ b1@3 ~", M: "a1@5 ~ e2@2 e2@6 ~@2",
  N: "g1@5 ~ f1@5 ~ c2@4", O: "~@2 c3@3 ~ c3@2 c3@3 ~ c3@3 ~", P: "g1@5 ~ f1@5 ~@5", Q: "~@8 c2@3 ~@5",
})).s("gm_synth_bass_2").gain(0.46)

// bass · synth bass 2 · "Bass" · soft notes
const bass_soft = note("<~@108 A@2 B@4 C>".pickRestart({
  A: "[~@12 c2@6 ~@2 c2@3 ~@5 c2@3 ~]/2", B: "[g1@5 ~ f1@5 ~ c2@6 ~@2 c2@3 ~ c2@3 ~ c2@3 ~]/2", C: "g1@5 ~@11",
})).s("gm_synth_bass_2").gain(0.07)

// chords · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
  A@3 B@5 C@5 ~ D E F G D E H G I J K G I L K M N@4 O@4 D E H G I J K G I L K M N@4 O@4 D E H G P Q R S P Q R S P Q R S
  P Q R S I J K G N@4 I J K G I L K M N@4 O@4 D E F G N@4 O@4 ~
>`.pickRestart({
  A: "[~@12 [e4,g4,c5]@7 [d4,g4,b4]@11 [f#4,a4,d5]@7 [c4,e4,g4]@11]/3", // C G D C
  B: "[[a3,d4]@18 ~ [g3,d4,e4]@18 [e5,g5,c6]@5 ~@2 [b4,d5,g5]@9 ~@2 [d5,f#5,a5]@5 ~@2 [g4,c5,e5]@9 ~@2 [b3,d4]@5 ~@2]/5", // D5 Em7 C G D C Bm
  C: "[~@3 [d4,g4]@5 ~@4 [d4,e4,g4]@66 ~@2]/5", D: "[e4,g4,c5]@3 [d4,g4,b4]@5", E: "[d4,f#4,a4]@3 [c4,d4,g4]@5",
  F: "[g3,b3,d4] [e4,a4,c5]", G: "[c4,d4,g4]", H: "[g3,b3,d4]@8 [e4,a4,c5]@3 [d4,g4,b4]@5", I: "[e4,g4] [d4,g4]",
  J: "[d4,f#4] [c4,d4]", K: "[b3,d4] [d4,f#4]", L: "[d4,f#4] [d4,e4]", M: "[g3,d4,e4]",
  N: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 g3@18]/2", O: "[a3 b3 g4@62]/4", P: "a3@3 e4@5", Q: "d4 c4", R: "g3 d4",
  S: "c4@3 b3",
})).s("gm_synth_strings_1").gain(0.09)

// other · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~@14 A B C D A B E F G H I J G K L M ~@8 N B O P Q H I R G K L M ~@8 N B O S ~@24 G H I J G K L M T@2 U@2 T@2 V@3 B O
  P ~@9
>`.pickRestart({
  A: "c5@3 c5@3 b4@7 ~ a4 g4", B: "a4@3 b4@3 g4@5 ~ e4@2 d4 c4", C: "d4@5 ~ b4@2 c5@3 b4@2 a4!2 ~",
  D: "g4@5 ~ g4@7 ~ a4 b4", E: "d4@5 ~ b4@2 c5@3 b4@2 a4 g4@2", F: "g4@5 ~ g4@5 ~ g3@3 ~", G: "[e4,g4]@7 ~ [d4,g4]@7 ~",
  H: "[d4,f#4]@7 ~ [c4,d4]@7 ~", I: "[b3,d4]@7 ~ [d4,f#4]@7 ~", J: "[c4,g4]@5 ~ [c4,g4]@5 ~ g3@3 e4",
  K: "[d4,f#4]@7 ~ [d4,e4]@7 ~", L: "[b3,d4]@5 ~@3 [d4,f#4]@7 ~", M: "[g3,e4]@13 ~@3", N: "b4@2 ~ a4@3 g4@7 ~ a4 g4",
  O: "d4@5 ~ b4@2 c5@2 b4@3 a4 g4@2", P: "g4@5 ~ g4@7 ~ b4@2", Q: "[e4,g4]@8 [d4,g4]@7 ~", R: "g4@5 ~ g4@5 ~ g3@3 e4",
  S: "g4@5 ~ g4@7 ~@3",
  T: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@5 e4@2 g4@2 a4 [c4,d4,b4]@2 b4 [c4,d4,b4]@4 ~, ~@7 g3@4 ~@5]/2", // G
  U: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@5 b4@2 c5@2 d5 [g4,c5,d5]@2 e5 [g4,c5,d5]@4 ~, ~@7 g3@4 ~@5]/2", // Gsus4
  V: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@4 b4@3 ~ a4@2 [c4,d4,b4]@2 a4@2 g4@2 b4@4 ~ a4@3 g4@7 ~ a4 g4, ~@7 g3@4 ~@13]/3", // G
})).s("gm_electric_guitar_clean").gain(0.12)

// chords · piano · "Grand Piano Solo"
const piano = note("<~@61 A B@4 C@2 D E F G@2 H I J@2 K L@4 ~@33>".pickRestart({
  A: "~@14 a5 b5",
  B: "[b5 g5@2 b5@3 [b4,d5,g5]@3 d5@3 g5@2 ~ [a4,f#5]@3 d5@3 a4@3 [e4,g4]@4 a4@2 b4 [b3,d4]@6 ~ d4 e4 [a3,f#4]@4 d4 e4 f#4 [d4,e4,g4]@3 e4 d4@8 ~ d4 e4 g4@2, [e5,c6]@3 ~@9 f#5 ~@51]/4", // G D Em Bm D Em7 C
  C: "[g4 e4@2 [d4,g4,b4]@3 [d4,g4,b4]@3 g4 c5@2 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,f#4,a4]@3 [d4,f#4,a4]@2 b4 [d4,f#4,a4]@3 [c4,e4,g4]@2 c4 [c4,e4,g4]@2, [a4,c5]@3 ~@6 [e4,a4]@3 ~@20]/2", // G D C Am A5
  D: "~ [b3,d4,g4]@3 [a3,d4,g4]@5 ~ [b3,d4,g4]@3 [a3,d4,f#4]@3", // G Dsus4 G D
  E: "[a3,d4,g4]@3 [b3,d4,g4]@3 [g3,d4,g4]@5 ~ [g3,d4,g4]@4", F: "~ a3 d4 e4@2 b4 e4 a4 b4 a4 e5 a4 d5 e5 d5 g5",
  G: "[b5@2 a5 a5@3 g5 [e5,g5]@3 e5 e5@3 d5@4 [a4,d5,f#5]@3 [b4,d5,g5]@3 [g4,b4,d5]@3 [g4,c5,e5]@3 [g4,b4,d5]@2, [d5,f#5]@6 ~@18 a4 ~@7]/2", // Em D G C G D
  H: "~ [e4,a4,c5]@3 [d4,g4,b4]@3 ~ [e4,a4,d5]@3 [c4,d4,g4]@3 [c4,d4,g4]@2", // Am G Dsus2 Csus2
  I: "c4 e4 a4 b4 a4 d5 e5!2 a5 b5!2 d6 g6 f#6 d6 b5",
  J: "[e6 d6 b5 [f#5,d6]@2 b5 g5 [d5,b5]@2 g5 d5 a5@2 g5 d5 [b4,g5]@2 d5@2 e5@2 b4@2 [d4,f#4,b4]@2 [d4,f#4,a4]@3 b4!2 a4 g4]/2", // D G Em Bm D
  K: "a4@2 b4 [g3,c4,d4]@5 ~ d5@2 e5 [d4,e4,g4]@4", // Gsus4 Em7
  L: "[b5@2 d6 g5@3 g5@2 b5 d5@3 e5@2 g5 b4@3 d5@2 g5 g4@3 a4 ~ d5 d4@3 d4 e4@3 g4 b3@3 b3@2 d4@4 a3@2 ~ g3@3 a3@3 b3@3 a3@4 g3@3 ~, ~@25 b4@2 ~@17 b3 ~@19]/4",
})).s("gm_piano").gain(0.55)

// chords · piano · "Bright Grand Piano"
const piano_2 = note(`<
  A@2 B C@5 D@6 E F G H E F I J K L M N K O P Q R@2 S@2 R@2 T@3 U V W K L M N K O P Q R@2 S@2 R@2 T@3 U V X ~@20 Y@4 K L
  M N K O P Q R@2 S@2 R@2 T@3 U V W R@2 S@2 ~@5
>`.pickRestart({
  A: "[~@9 a4 ~ b4 [e4,g4,c5]@3 [e4,g4,c5]@3 ~ [d4,g4,b4]@9 [d4,a4] [d4,g4] [a4,d5]@2, ~@30 g4 ~]/2", // C G D5 G5 D5
  B: "[e4,g4,d5]@2 ~ [d4,f#4,d5]@2 [c4,e4,g4]@2 [e4,g4]@2 [d4,g4]@2 ~ [c4,g4]@2 [b3,g4]@2, ~@7 d4 ~@8", // Em7 D C Em G5 C5 Em
  C: "[a3@2 ~ b3@2 g3@4 ~@3 f#4@2 ~ e4@3 ~ e4@2 ~ d4@13 a5 b5 [e5,g5,c6]@4 b5 ~ a5 [b4,d5,g5]@9 a5 b5 [d5,f#5,a5]@5 g5 f#5 [g4,c5,e5]@9 d5 c5 d5@2 ~ d4@2 [b3,g4]@2, d4@9 f#3@4 ~@8 [g3,e4]@14 ~@45, ~@11 d4@2 ~ d4@2 ~@64]/5", // C G D C Em C
  D: "[[d4,b4]@2 [g4,d5] a4@2 [e4,g4]@2 [d4,f#4]@2 e4@2 g4 e4@2 ~ d4 c4 b3@2 ~ d4@26 [e4,g4,c5]@16 [d4,g4,b4]@16 [c4,d4,g4]@16 a4 b4, ~@3 d5@8 d4@2 ~@83, ~@6 g4@17 ~@25]/6", // G G5 Em D C G Csus2
  E: "[e4,g4,c5]@3 [e4,g4,c5]@3 [d4,g4,b4]@7 ~ a4 g4", F: "[d4,a4]@3 [d4,g4,b4]@3 [c4,d4,g4]@5 ~ e4@2 d4 c4",
  G: "[b3,d4]@5 ~ [d4,g4,b4]@2 [e4,a4,c5]@3 [d4,g4,b4]@2 a4 g4@2, ~@14 a4 ~", H: "[c4,d4,g4]@5 ~ [c4,d4,g4]@7 ~ a4 b4",
  I: "[b3,d4]@5 ~ [d4,g4,b4]@2 [e4,a4,c5]@3 [d4,g4,b4]@2 a4 g4@2", J: "[c4,d4,g4]@5 ~ [c4,d4,g4]@5 ~ g3@3 ~",
  K: "[e4,g4]@7 ~ [d4,g4]@7 ~", L: "[d4,f#4]@7 ~ [c4,d4]@7 ~", M: "[b3,d4]@7 ~ [d4,f#4]@7 ~",
  N: "[c4,d4,g4]@5 ~ [c4,d4,g4]@5 ~ g3@3 e4", O: "[d4,f#4]@7 ~ [d4,e4]@7 ~", P: "[b3,d4]@5 ~@3 [d4,f#4]@7 ~",
  Q: "[g3,d4,e4]@13 ~@3", // Em7
  R: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@5 e4@2 g4@2 a4 [c4,d4,b4]@2 b4 [c4,d4,b4]@4 ~, ~@7 g3@4 ~@5]/2", // G
  S: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@5 b4@2 c5@2 d5 [g4,c5,d5]@2 e5 [g4,c5,d5]@4 ~, ~@7 g3@4 ~@5]/2", // Gsus4
  T: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@4 b4@3 ~ a4@2 [c4,d4,b4]@2 ~@2 g4@2 [c4,e4,g4,b4]@4 ~ [c4,e4,g4,a4]@3 [b3,d4,g4]@7 ~ a4 g4, ~@7 g3@4 ~@13]/3", // G Cmaj7 Am7 G
  U: "[d4,f#4,a4]@3 [d4,g4,b4]@3 [c4,d4,g4]@5 ~ e4@2 d4 c4", V: "[b3,d4]@5 ~ [d4,g4,b4]@2 a4@2 [d4,g4]@3 a4 g4@2",
  W: "[c4,d4,g4]@5 ~ [c4,d4,g4]@7 ~ b4@2", X: "[c4,d4,g4]@5 ~ [c4,d4,g4]@7 ~@3",
  Y: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 g3@8 ~@10]/2",
})).s("gm_piano").gain(0.4)

// chords · piano · "Bright Grand Piano" · soft notes
const piano_soft = note("<~ A ~@6 B ~@6 C ~@3 C ~@17 D ~@2 E ~@16 D ~@2 E ~@40 D ~@2 E ~@5 F@2 G@3>".pickRestart({
  A: "~@7 f#4", B: "~@3 f#4@2 ~@11", C: "f#4@3 ~@13", D: "~@5 a4 ~@2", E: "~@8 [e4,c5]@2 b4@3 ~@3",
  F: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@5 e4@2 g4@2 a4 [c4,d4,b4]@2 b4 [c4,d4,b4]@4 ~, ~@7 g3@4 ~@5]/2", // G
  G: "[a3 b3 g4@3 ~ g3 a3 e4@3 ~ d3 e3 ~@4 b4@3 ~ a4@2 [c4,d4,b4]@2 a4@2 g4@2 [c4,e4,g4,b4]@6 ~@12, ~@7 g3@4 ~@13]/3", // G Cmaj7
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@10 [x ~@2 x!2 ~ x ~ x ~@5 x ~]!104 x>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@10 [~ x ~ x]!99 ~@6>").gain(0.27)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@109 [~ x ~ x]!5 x>").gain(0.09)

// drums · hihat
const hihat = s("hh").struct("<~@10 [x!16]!96 [x!11 ~ x ~ x!2] [x!3 ~ x ~ x!5 ~ x ~ x!2] [x!7 ~] [x!4] ~@5>").gain(0.15)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@106
  [~@11 x ~ x ~@2]
  [~@3 x ~ x ~@5 x ~ x ~@2]
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x!3]
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]
  [x!16]!4
  x
>`).gain(0.03)

stack(
  bass, bass_soft, synth_strings_1, electric_guitar_clean, piano, piano_2, piano_soft, kick, snare, snare_soft, hihat,
  hihat_soft
)

More by Bruce Hornsby