Strudelify
Surfin' Safari cover art

1962 · The Beach Boys - By The Sea Beginnings

Surfin' Safari

The Beach Boys

KeyA majorTempo155 bpm
0:00/0:00
// Surfin' Safari — The Beach Boys
// 155 bpm, 4/4, key A major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 9 "GtrJazz" electric guitar jazz (copy of ch 8 "GtrJazz" electric guitar jazz)
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GtrJazz.
setcpm(155/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar muted · "GtrMuted"
const electric_guitar_muted = note(`<
  ~ A B C D@2 E F G E@2 F G E H@4 I@2 H@2 A B J K@2 E F G E@2 F G E H@4 I@2 H@2 A B J L M N O P Q R S T U E F G E@2 F G
  E H@4 I@2 H@2 A B J V@2 W@4
>`.pickRestart({
  A: "[f4,c5,f5] ~@15", B: "[d#4,a#4,d#5] ~@15", C: "[c4,d#4,g4] ~@15",
  D: "[a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~@3 [a3,c4,f4,a4] ~@3", // F
  E: "[a#3,f4] ~ [a#3,f4] ~ [a#3,f4] ~ [f4,a#4,d5] ~@3 [a#4,d5] ~ [a#3,f4] ~ [a#3,f4] ~", // A#5 A# A#5
  F: "[d#4,a#4] ~ [d#4,a#4] ~ [d#4,a#4] ~ [a#4,d#5] ~@3 [a#4,d#5] ~ [d#4,a#4] ~ [d#4,a#4] ~", // D#5
  G: "[f4,c5] ~ [f4,c5] ~ [f4,c5] ~ [c5,f5] ~@3 [c5,f5] ~ [f4,c5] ~ [f4,c5] ~", // F5
  H: "[a#3,f4] ~ [a#3,f4] ~ [a#3,g4] ~ [a#3,g4] ~ [a#3,f4] ~ [a#3,f4] ~ [a#3,g4] ~ [a#3,g4] ~", // A#5 D# A#5 D#
  I: "[d#4,a#4] ~ [d#4,a#4] ~ [d#4,c5] ~ [d#4,c5] ~ [d#4,a#4] ~ [d#4,a#4] ~ [d#4,c5] ~ [d#4,c5] ~", // D#5 Cm D#5 Cm
  J: "[c4,g4,c5] ~@7 [c4,g4,c5] ~@7", K: "[f3,c4,f4]@3 ~ [f3,c4,f4]@3 ~ [f3,c4,f4]@3 ~ [f3,c4,f4]@3 ~",
  L: "[f3,c4] ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~", M: "f3 ~ f3 ~ f3 ~ f3 ~@3 f5@3 ~ [f5,g#5] ~",
  N: "f5 ~ [f5,g#5] ~ [f5,g#5] ~ [f5,g#5] ~ [f5,g#5] ~ [f5,g#5] ~ [f5,g#5] ~ f5@2", // Fm
  O: "~@2 d#5 ~ c#5 ~ a#4 ~ c#5 ~ a#4 ~ d5 ~ d#5 ~", P: "f5 ~ a#5 ~ f5 d#5 c#5 ~ [d#5,g5] ~ c#5 ~ a#4 ~ a#4@2",
  Q: "~@2 a#4 ~ g5@4 [d5,f5] ~ a#4 ~ [d5,f5] ~ [f5,a#5]@2, ~@4 d#5@3 ~@9", // Dm A#5
  R: "~@2 [g5,c#6]@3 ~ [g5,a#5] ~ [d#5,g5] ~ [c#5,f5] ~ [d#5,g5] ~ [c#5,f5] ~", // Gdim Gm D# C# D# C#
  S: "[d#5,g5] ~ [e5,g#5] ~ [d#5,g5] ~ [c#5,f5] ~ d#5 ~ c#5 ~ a#4 ~ f5 ~", // D# E D# C#
  T: "[g#5,a#5] ~ [g#5,a#5] ~ [g5,a#5] ~ [f5,a#5] ~ d#5 ~ d5 ~ a#4 ~ a#4@2", // G#sus2 Gm A#5
  U: "~@2 a#4 ~ [d#5,g5] ~ [d#5,g5] ~ [d5,f5] ~ [d5,f5] ~ [d#5,g5]@3 ~", // D# Dm D#
  V: "[f3,c4,a4]@3 ~ [f3,c4,a4]@3 ~ [f3,c4,a4]@3 ~ [f3,c4,a4]@3 ~", // F
  W: "[a#3,f4] ~ [a#3,f4] ~ [a#3,g4] ~ [a#3,f4]@3 ~ [a#3,f4] ~ [a#3,g4] ~ [a#3,g4] ~", // A#5 D# A#5 D#
})).s("gm_electric_guitar_muted").gain(0.17)

// chords · acoustic bass · "AcouBass"
const acoustic_bass = note(`<
  ~ A B C D@2 E F G E@2 F G H@2 E@3 F I H E J B K L@2 E F G E@2 I G E@5 F@2 E@2 A M N G@2 E F G E@2 I G E@2 F G E@2 I G
  E@5 F@2 E@2 A M C D G E@4
>`.pickRestart({
  A: "[a3,c4,f4] ~@15", B: "[g3,a#3,d#4] ~@15", C: "[g3,c4,e4] ~@15",
  D: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3", // F
  E: "[a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~", // A#
  F: "[g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~", // D#
  G: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  H: "[f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~ [f3,a#3,d4] ~", // A#
  I: "[a#3,d#4,g4] ~ [a#3,d#4,g4] ~ [a#3,d#4,g4] ~ [a#3,d#4,g4] ~ [a#3,d#4,g4] ~ [a#3,d#4,g4] ~ [a#3,d#4,g4] ~ [a#3,d#4,g4] ~", // D#
  J: "[a3,c4,e4] ~@15", K: "[g3,c4,e4] ~@7 [g3,c4,e4] ~@7",
  L: "[f3,c4,f4]@3 ~ [f3,c4,f4]@3 ~ [f3,c4,f4]@3 ~ [f3,c4,f4]@3 ~", M: "[a#3,d#4,g4] ~@15",
  N: "[g3,e4,g4] ~@7 [g3,e4,g4] ~@7", // C
})).s("gm_acoustic_bass").gain(0.16).pan(0.2)

// bass · acoustic bass · "AcouBass"
const bass = note(`<
  ~ A B C D E F G E F H G I F H F H F J G F@2 K L M N@2 F G I F O J E P O P F H Q J O P K L R E I P G E F H J E P F G I
  F O J E P O P F H Q J O P K L R S@2 O P O P
>`.pickRestart({
  A: "f2@3 ~@13", B: "d#2@3 ~@13", C: "c2@3 ~@13", D: "f2@3 ~ f2 ~@3 f2 ~@3 f2 ~@3", E: "f2@3 ~ d2@4 c2@4 d2@4",
  F: "a#1@3 ~ g1@4 f1@4 g1@4", G: "d#2@3 ~ c2@4 a#1@4 c2@4", H: "a#1@3 ~ d2@4 f2@4 d2@3 ~", I: "f2@2 a2@2 c3@2 a2 c3",
  J: "d#2@2 g2@2 a#2@2 g2 a#2", K: "f2 ~@3", L: "d#2 ~@3", M: "c2 ~ g2 ~", N: "f2@3 ~ f2@3 ~ f2@3 ~ f2@3 ~",
  O: "a#1 d2 f2 d2", P: "a#1@2 d2@2 f2@2 d2 f2", Q: "d#2 g2 a#2 g2", R: "c2@3 ~@5 c2@3 ~@5",
  S: "f2@4 f2@3 ~ f2@3 ~ f2@3 ~",
})).s("gm_acoustic_bass").gain(0.39).pan(0.4)

// chords · electric guitar jazz · "GtrJazz"
const electric_guitar_jazz = note("<~@50 [~@3 d#5 ~@4] ~@30>").s("gm_electric_guitar_jazz").gain(0.18).pan(0.2)

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

// drums · snare
const snare = s("sd").struct(`<
  A ~ B@2 C D E@16 B@2 F C D E@5 G E@4 H E@5 B@2 F C I E@16 H E@4 J E@2 B@2 F C@2 E@4
>`.pickRestart({
  A: "~@3 x", B: "x", C: "x!4", D: "x ~ x ~ x ~ x!2", E: "~ x ~ x", F: "x!2", G: "~@4 x ~@3 x ~@2 x!2 ~ x ~",
  H: "~@4 x ~@6 x!2 ~ x ~", I: "x ~@3 x ~@3 x ~@2 x!2 ~ x ~", J: "~@4 x ~@3 x ~@2 x!2 ~@3",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@69 [~@7 x] ~@11>").gain(0.21)

// drums · ride
const ride = s("rd").struct("<~@5 [x!8]!17 ~@4 [x!8]!17 ~@4 [x!8]!25 ~@5 [x!8]!4>").gain(0.21)

stack(electric_guitar_muted, acoustic_bass, bass, electric_guitar_jazz, kick, snare, mid_tom, ride)

More by The Beach Boys