Strudelify

Don't Worry Baby

The Beach Boys

KeyF majorTempo122 bpm
0:00/0:00
// Don't Worry Baby — The Beach Boys
// 122 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 11 "Strings" synth strings 1 (copy of ch 5 "Melody 2" piano)
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · fretless bass · "Bass"
const bass = note(`<
  A B A C A D E F A G E H I H J K L M N O L P Q R S A T U H A G V H W X Y O L P N Z L P AA R AB A T V X A C E AC AD F AE
  AF AG AH AI O AG AH AJ Z AK AL AI O AG AH
>`.pickRestart({
  A: "f2 ~ f2@4 c2@2 f2 ~ f2@4 c2@2", B: "f2 ~ f2@3 ~ f2@2 a1@2 bb1@2 b1@2 c2@2, ~@10 a1 ~@5",
  C: "f2 ~ f2@3 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", D: "f2 ~ f2@3 ~ f2 ~ f2 ~ e2 ~ d2 ~ c2 ~",
  E: "bb1 ~ bb1@4 bb1 ~ bb1 ~ bb1@4 bb1 ~", F: "c2 ~ c2@4 g1@2 c2@2 c2 ~ c2 ~ c2 ~",
  G: "f2 ~ f2@3 ~ f2@4 c2@2 f2 ~ f2 ~", H: "c2 ~ c2@4 g1 ~ e2@2 f2@2 gb2@2 g2 ~", I: "g2 ~ g2@4 d2@2 g2 ~ g2@4 d2 ~",
  J: "a1 ~ a1@4 a1 ~ a1 ~ a1@4 c2 a1", K: "d2 ~ d2@4 a1@2 d2@2 e2 ~ gb2 ~ d2 ~", L: "g2 ~ g2@4 d2@2 g2 ~ g2@4 d2@2",
  M: "g2 ~ g2@3 ~ g2 ~ g2 ~ g2 ~ d2 ~ g1 ~", N: "a1 ~ a1@4 a0@2 a1 ~ a1@4 e1@2, ~@14 a0 ~",
  O: "d2 ~ d2@3 ~ d2 ~ gb1@2 g1@2 a1@2 d2 ~", P: "g2 ~ g2@4 d2@2 b2@2 c3@2 db3@2 d3@2",
  Q: "a1 ~ a1@4 a1 ~ a1 ~ a1@4 a1 ~", R: "d2 ~ d2@4 a1@2 d2@2 d2 ~ d2 ~ d2 ~", S: "c2 ~ c2@4 c2 ~ c2 ~ c2@3 ~ c2 ~",
  T: "f2 ~ f2@4 c2@2 a2@2 bb2@2 b2@2 c3@2", U: "bb1 ~ bb1@4 bb1 ~ bb1 ~ bb1@3 ~ bb1 ~",
  V: "bb1 ~ bb1@4 bb0@2 bb1 ~ bb1@4 f1@2, ~@14 bb0 ~", W: "g2 ~ g2@4 g1@2 g2 ~ g2@4 d2@2, ~@14 g1 ~",
  X: "c2 ~ c2@3 ~ c2 ~ e1@2 f1@2 g1@2 c2 ~", Y: "a1 ~ a1@4 a1 ~ a1 ~ a1@4 e2 a1",
  Z: "d2 ~ d2@4 a1 ~ gb2@2 g2@2 ab2@2 a2 ~", AA: "a1 ~ a1@4 a1 ~ a1 ~ a1@3 ~ a1 ~", AB: "c2 ~ c2@4 g1@2 c2 ~ c2@4 g1 ~",
  AC: "c2 ~ c2@4 c2 ~ c2 ~ c2 ~ c2@2 g1 ~", AD: "g1 ~ g1@4 g1 ~ g1 ~ g1@3 ~ g1 ~", AE: "a1 ~ a1@5 a0 a1 ~ a1@4 a1 ~",
  AF: "d2 ~ d2@4 a1@2 d2@2 gb2 ~ d2 ~ d2 ~", AG: "g2 ~ g2@4 d2@2 g2 g1 g2@4 d2@2",
  AH: "g2 ~ g2@4 d2@2 g2 ~ g2 ~ g2@2 g2 ~", AI: "a1 ~ a1@4 e1@2 a1 ~ a1@4 e1 ~", AJ: "a1 ~ a1@4 e1@2 a1 ~ a1@4 c2 ~",
  AK: "g1 ~ g1@4 g1 ~ g1 ~ g1@4 g1 ~", AL: "g2 ~ g2@4 d2 ~ b2@2 c3@2 db3@2 d3 ~",
})).s("gm_fretless_bass").gain(0.31)

// chords · piano
const piano = note(`<
  A@2 B C D@2 E F G H I J K L M N O P Q R S T Q R U V@2 W L A@2 X J K L Y Z AA@2 AB N AC@2 AB AD U D@2 AE J AF@2 AE AG
  AH AI AJ R AA@2 AK R AL@2 AB AM AN S AK R AL@2
>`.pickRestart({
  A: "[~@2 [a3,c4,f4]@6 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@8 f3@2 [a3,c4,f4]@2 f3@2 [a3,c4,f4] ~@3]/2", // F
  B: "~@2 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4]@5 f3", // F
  C: "[a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@8 ~@2", D: "[[a3,c4,f4]@22 ~@2 f4@2 a4@2 c5@2 f5 ~]/2",
  E: "~@2 [bb3,d4,f4]@6 [bb3,d4,f4] ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2", // Bb
  F: "~@2 [bb3,c4,e4,g4]@5 ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4]@6", // C7
  G: "[a3,c4,f4] ~ [a3,c4,f4]@4 f3@2 [a3,c4,f4] ~ [a3,c4,f4]@4 f3@2", // F
  H: "[a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@4 f3 ~ [a3,c4,f4] ~@3", // F
  I: "~@2 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4]@5 bb2", J: "[bb3,c4,e4,g4]",
  K: "[bb3,d4,f4,g4]", L: "[bb3,c4,e4,g4]@4 ~@2 g4 c5, ~@4 bb3@3 ~, ~@5 e4@2 ~",
  M: "[a3,c4,e4]@8 ~@2 [c4,e4,g4,a4] ~ [c4,e4,g4,a4] ~ [c4,e4,g4,a4] ~", // Am Am7
  N: "~@2 gb4@2 a4@2 [c4,d4,gb4,a4]@3 ~ [c4,d4,gb4,a4]@3 ~ [c4,d4,gb4,a4]@2, c4 ~@3", // D7
  O: "~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]@4 g2@2", // G
  P: "[g3,b3,d4] ~ [g3,b3,d4]@4 [g3,b3,d4]@4 g2@2 [g3,b3,d4] ~@3", // G
  Q: "~@2 c4@2 e4@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@3 ~ [a3,c4,e4]@2, a3 ~@3", // Am
  R: "~@2 [c4,d4,gb4,a4] ~ [c4,d4,gb4,a4] ~ [c4,d4,gb4,a4] ~ [c4,d4,gb4,a4] ~ [c4,d4,gb4,a4]@4 d3@2", // D7
  S: "[g3,b3,d4] ~ [g3,b3,d4]@4 g2@2 [g3,b3,d4] ~ [g3,b3,d4]@4 g2@2", // G
  T: "[g3,b3,d4] ~ [g3,b3,d4]@3 ~ [g3,b3,d4]@4 g2 ~ [g3,b3,d4] ~@3", // G
  U: "~@2 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4]@5 c3", // C7
  V: "[~@2 a4@2 c5@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@8 f3@2 [a3,c4,f4]@2 f3@2 [a3,c4,f4] ~@3, f4 ~@7]/2", // F
  W: "[bb3,d4,f4] ~ [bb3,d4,f4]@4 bb2@2 [bb3,d4,f4] ~ [bb3,d4,f4]@4 bb2@2", // Bb
  X: "~@2 [bb3,d4,f4]@5 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@6", Y: "[a3,c4,e4]@4 a3 ~ c4 e4 [c4,e4,g4,a4] ~ [c4,e4,g4,a4]@5 ~",
  Z: "[c4,d4,gb4,a4]@4 ~@2 a4 d5, ~@4 c4@3 ~, ~@5 gb4@2 ~", AA: "[[g3,b3,d4]@22 ~@2 g3@2 b3@2 d4@2 g4 ~]/2",
  AB: "[a3,c4,e4]", AC: "[[g3,b3,d4]@25 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~]/2", AD: "[c4,d4,gb4,a4]",
  AE: "~@2 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4]@4 bb2@2", // Bb
  AF: "[[a3,c4,f4]@25 ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~]/2", // F
  AG: "[bb3,c4,e4,g4] ~ [bb3,c4,e4,g4]@4 c3@2 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4]@4 c3@2", // C7
  AH: "~@2 [bb3,d4,f4,g4]@6 [bb3,d4,f4,g4] ~ [bb3,d4,f4,g4]@3 ~ [bb3,d4,f4,g4]@2", // Gm7
  AI: "~@2 e4@2 g4@2 [bb3,c4,e4,g4]@3 ~ [bb3,c4,e4,g4]@3 ~ [bb3,c4,e4,g4]@2, bb3 ~@3", // C7
  AJ: "[a3,c4,e4]@4 a3 ~ c4 e4 [c4,e4,g4,a4]@8", AK: "~@2 [a3,c4,e4]@6 [a3,c4,e4] ~ [a3,c4,e4]@3 ~ [a3,c4,e4]@2",
  AL: "[~@2 b3@2 d4@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~ [g3,b3,d4]@8 g2@2 [g3,b3,d4]@2 g2@2 [g3,b3,d4] ~@3, g3 ~@7]/2", // G
  AM: "~@2 [c4,d4,gb4,a4]@6 [c4,d4,gb4,a4] ~ [c4,d4,gb4,a4]@3 ~ [c4,d4,gb4,a4]@2", // D7
  AN: "~@2 [g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@6", // G
})).s("gm_piano").gain(0.22).pan(0.4)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  A B C D A E F G A E F H I J K L M N O P Q R S T U A E F G A E F H I J K L M N O P Q R S T U A E F G A E F H I J K L M
  N O P Q R O P Q R O P Q R
>`.pickRestart({
  A: "~@2 c3 d3@2 c3@3", B: "~@2 c3!2 d3@2 c3@2", C: "~@2 f3 g3@2 f3@3", D: "~@2 f3!2 g3@2 f3@2", E: "f2@2 f2 d2",
  F: "bb1 bb2", G: "c3@4 c3 bb2 a2 g2", H: "c3@4 c3 bb2 a2 ab2", I: "g2!2", J: "c3@5 g2 c3 bb2", K: "a2!2",
  L: "d3@3 d2", M: "~@2 d3 e3@2 e3 d3@2", N: "g2 ~@7", O: "~@2 c3 g3@2 g3 e3 g3", P: "d3 d2", Q: "g3@4 gb3 g3 gb3 d3",
  R: "e3 ~@3", S: "~@2 e3 g3@2 g3 e3!2", T: "d3 d2@2 d2 d3 d2@2 d2", U: "c3 c2@2 c2 c3 c2@2 c2",
})).s("gm_electric_bass_finger").gain(0.31)

// bass · synth bass 2 · "Bass"
const bass_3 = note(`<
  A@2 B@2 A ~@2 C ~@3 C ~@4 D ~ E F G@2 E ~@2 A ~@2 C ~@3 C ~@4 D ~ E F G@2 E ~@2 A ~@2 C ~@3 C ~@4 D ~ E F G@2 E F G@2
  E F G@2
>`.pickRestart({
  A: "f2", B: "bb2", C: "bb3", D: "g2", E: "a2", F: "gb3", G: "[g2@5 ~@3]/2",
})).s("gm_synth_bass_2").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B C A B A B A B A B A B A B A B A B A B A B D A B A B A B A B A B A B A
  B A B A B A B A B A B A B
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x!3 ~ x", C: "~@9 x ~@6", D: "~ x ~@6",
})).gain(0.26)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!24 [x!2 ~ x!2 ~ x!2 ~@2 x!3 ~@3] [~ x ~ x]!20 [x ~@2 x ~@2 x!2] [~ x ~ x]!26>")
  .gain(0.26)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~ A ~@13 B ~@14 A ~@14 A ~@17>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x",
})).gain(0.18)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 [~@13 x ~@2] ~@20 [~@4 x!2 ~@2] ~@26>").gain(0.26)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~@5 A ~@3 A ~@7 A ~ A ~@2 A ~ A ~ A ~@4 B ~ C A ~ A C ~@5 A ~@5 A ~@7 A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@7 x", B: "~@10 x ~@4 x", C: "~@15 x",
})).gain(0.22)

// drums · high tom
const high_tom = s("ht").struct("<~@45 [~ x ~@2] ~@26>").gain(0.26)

// drums · crash
const crash = s("cr").struct("<x ~@24 x ~@20 x ~@25>").gain(0.26)

stack(bass, piano, bass_2, bass_3, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash)

More by The Beach Boys