Strudelify

Cool, Cool Water

The Beach Boys

KeyC majorTempo136 bpm
0:00/0:00
// Cool, Cool Water — The Beach Boys
// 136 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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 A B C D C D C D C D E F E G H@3 I@2 C D C D C D C D E F E G H@3 I@2 ~@24 J K@2 L J K@2 L J K@2 L M N O P J K@2 L Q
  K@2 L R S T U J K@2 L V W X Y Z@2 AA@2 ~@4 AB AC AB AC AD@2 AE@2 AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG
  AF AG AF AG AF AH@2 ~@3
>`.pickRestart({
  A: "[c4,d4,f4,a4]", B: "[a#3,d4,f4,g4]", C: "[d4,f4,a4,c5]!4", D: "[d4,f4,g4,a#4]!4", E: "[e4,g4,a#4]!4",
  F: "[f4,g4,a#4]!4", G: "[f4,g4,a#4]!2 [e4,g4,a#4]!2", H: "[c4,d#4,f4,a4]!4", I: "[[d4,e4,g4,a#4] [c4,d#4,f4,a4]@7]/2",
  J: "[c5,e5,g5] [c5,e5,g5,a5] [c5,e5,g5,c6] [c5,e5,g5,a5]", // C Am7 C Am7
  K: "[c5,e5,g5]@3 ~ [e5,g5]@4 [c5,e5,g5]@4 [c5,e5,g5,a5]@4, ~@3 c5@4 ~@9", // C Em C Am7
  L: "[c5,e5,g5,c6]@3 ~ [c5,e5,c6]@4 [c5,e5,g5,c6]@4 [c5,e5,g5,a5,c6]@4, ~@3 g5@4 ~@9", M: "[d5,g5,a5,d6]",
  N: "[a4,g5,a5,c6]", O: "[b4,e5,g5,b5]", P: "[a4,c5,f5,a5] [b4,d5,g5,b5]",
  Q: "[c5,e5,g5]@4 [c5,e5,g5,a5]@4 ~ g5@3 [c5,e5,g5,a5]@4, ~@2 [c5,e5,c6] ~", R: "[d5,g5,a5,d6] [e5,g5,a5,d6]!3",
  S: "~ [g5,a5]@3 [c5,e5,g5,a5,c6]@4 [c5,e5,g5,a5,c6]@4 ~ c6@3, [c5,e5,c6] ~@2 [c5,e5,g5,a5]", // Gsus2 Am7 C Am7
  T: "[b4,e5,g5,b5]!3 [b4,d5,g5,b5]", U: "[a4,c5,f5,a5]!2 [b4,d5,g5,b5]!2", V: "[a4,c5,e5,a5]@3 [g4,a#4,d5,g5]",
  W: "[f4,a4,c5,f5]@3 [g4,a#4,d5,g5]", X: "[c5,e5]@2 c5 [g4,a#4,d5,g5], [a4,a5]@3 ~", Y: "[f4,a4,c5,f5]@3 ~",
  Z: "[d5,e5,g5,b5]@7 ~ [d5,e5,g5,b5]@7 ~", AA: "[[d5,e5,g5,b5]@3 ~ [c5,d5,f5,a5]@28]/2", AB: "[e5,g5,b5,d6]!4",
  AC: "[e5,g5,a5,c6]!4", AD: "[~ [g4,a#4,d5,g5]@7]/2", AE: "[~ [d4,f4,g4,a#4]@7]/2", AF: "[b4,d5,e5,g5]!4",
  AG: "[a4,c5,e5,g5]!4", AH: "[[a4,c5,e5,g5]@4 [a4,c5,e5,g5]@4 [a4,c5,e5,g5]@4 [a4,c5,e5,g5] [a4,c5,e5,g5]@16 ~@3]/2",
})).s("gm_piano").gain(0.25).pan(0)

// bass · acoustic bass · "bass"
const bass = note(`<
  A B A C D@8 E@4 F@5 D@8 E@4 F@5 ~@28 G H G H G H G H I J K L G H G H G H G H I J K L G H G H M N M O@2 P Q@2 R@2 S R G
  R G R T U T V G H G H G H G H G H G H G H G H G H G H G H G W@2 ~@3
>`.pickRestart({
  A: "a#2", B: "f2@6 ~ f2@5 g2@4", C: "f2@7 f2@5 g2@4",
  D: "[a#2@12 ~@4 f2@12 ~@4 a#2@12 ~@4 f2@12 ~@4 a#2@12 ~@4 f2@12 ~@4 a#2@12 ~@4 f2@12 ~@3 f2, ~@15 a#2@2 ~@14 f2@2 ~@14 a#2@2 ~@14 f2@2 ~@14 a#2@2 ~@14 f2@2 ~@14 a#2@2 ~@15]/8",
  E: "[c3@3 ~ d3 g2@2 ~ c3@3 ~ g2@2 c3@2, ~@15 c#3@2 ~@14 g2@2 ~@14 c3@2 ~@15]/4",
  F: "[f2@6 ~@2 g2@2 c3@4 ~@2 f2@6 ~@2 f2 ~ f2@14, ~@15 f2@2 ~@14 g2@2 ~@14 d#2@2 ~@2 c2@2 ~@27]/5", G: "c2 c3@2 a2",
  H: "g2@3 g2", I: "d2 d3@2 d2", J: "a2@3 a2", K: "e2@3 e2", L: "f2 g2", M: "f2@3 f2", N: "c3",
  O: "[c3@3 ~ e2@2 e2@2, ~@15 d2@2 ~@15]/2", P: "e2@2 e2 e3", Q: "[d3@3 d2]/2", R: "g2", S: "d2", T: "a#2@3 a#2",
  U: "c3@3 c3", V: "a#2@4 a#2@4 a#2@2 ~ a#2@5", W: "[g2@12 g2 g2@16 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.29).pan(0)

// other · banjo · Gmaj7
const banjo = note("<~@110 [~@4 d6!12] [c6 a#5 a5 a#5] [a5@4 f5@3 g5!9] [g5!3 [f#5,g5] ~ g5!2 ~@9] ~@28>")
  .s("gm_banjo").gain(0.18).pan(0)

// chords · string ensemble 2 · "strings"
const string_ensemble_2 = note("<~@39 A@2 B@2 A@2 C@15 D E@3 ~@78>".pickRestart({
  A: "[d4,e4,f#4,a4,b4]/2", B: "[[d4,e4,f#4,a4,b4]@5 [d4,e4,f#4,a4,b4]@3]/2", C: "[d4,e4,f#4,a4,b4]/5",
  D: "[d4,e4,f#4,a4,b4]", E: "[~ g5@16 ~@7, [b3,e4,g4,b4] ~@2, a4 ~@11]/3",
})).s("gm_string_ensemble_2").gain(0.19).pan(0.2)

// bass · acoustic bass · "sub bass"
const bass_2 = note("<~@38 A@8 ~@96>".pickRestart({
  A: "[e3 d3 c#3 b2 a2 g2 ~@2 e3 d3 c#3 b2 a2 g2 ~@2 e3 d3 c#3 b2 a2 g2 ~@2 e3 d3 c#3 b2 a2 g2 ~@2 e3 d3 c#3 b2 a2 g2 ~@2 e3 d3 c#3 b2 a2 g2 ~@2 e3 d3 c#3 b2 a2 g2 f#2@4 ~@6, ~@3 f#2@2 ~@2 f#2@2 ~@2 f#2@2 ~@2 f#2@2 ~@2 f#2@2 ~@2 f#2@2 ~@7]/8",
})).s("gm_acoustic_bass").gain(0.32).pan(0.7)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@7 B A B A@5 C A@4 B A@3 B A@3 B@3 D C ~@25 A@3 B A@3 B A@3 B A@3 B A@3 B A@7 B A@3 E ~@20 A@3 B A@3 B A@3 B A@3
  B A@3 B A@4 ~@4
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x!2 ~@2", D: "x ~@3 x ~@3 x ~@2 x!2 ~@2 x",
  E: "x ~@2 x ~@3 x ~@3 x ~@3 x",
})).gain(0.37)

stack(piano, bass, banjo, string_ensemble_2, bass_2, hihat)

More by The Beach Boys