Strudelify
Fun, Fun, Fun cover art

Endless Summer

Fun, Fun, Fun

The Beach Boys

KeyE majorTempo157 bpm
0:00/0:00
// Fun, Fun, Fun — The Beach Boys
// 157 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): tk9.
setcpm(157/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 · "tk1"
const piano = note(`<
  ~ A@4 B C D@2 E F G E D@2 H I D@2 J@2 D@2 K L M N O P D@2 Q R D@2 J@2 D@2 S T M N U V W@2 X@2 Y Z AA W X@2 Q R X@2
  AB@2 X@2 S T AC AD AE AF AC AD AG AH AI AJ X AK ~@4
>`.pickRestart({
  A: "[[e3,g#3,b3]@31 ~]/2", // E
  B: "[e3,a3]@2 [e3,a3] ~ [c#3,e3,a3]@2 [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~, c#3 ~ c#3@2 ~@12", // A5 A
  C: "[c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~", // A
  D: "[b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~", // E
  E: "[b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~", // B
  F: "[a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~", // A
  G: "[b2,e3,g#3] ~ [b2,e3,g#3] ~ [e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~, ~@2 b2 ~@5", // E
  H: "[c#3,e3] ~ [c#3,e3,a3] ~ [c#3,f#3,a3]@2 [c#3,e3] ~ [c#3,e3,a3] ~ [c#3,e3] ~ [f#3,a3]@2 [c#3,e3] ~, a3@2 ~@4 a3@2 ~@2 a3@2 c#3 ~ a3@2", // C#m A F#m C#m A C#m F#m C#m
  I: "[c#3,e3] ~ [c#3,e3,a3] ~ [c#3,f#3] ~ [c#3,e3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [f#3,a3]@2 [c#3,e3] ~, a3@2 ~@2 a3@2 a3@2 ~@4 c#3 ~ a3@2", // C#m A F#5 C#m A F#m C#m
  J: "[b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,g#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,g#3] ~ [b2,d#3,f#3] ~", // B G#m B G#m B
  K: "[c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,a3] ~ [c#3,e3] ~ [c#3,e3] ~ [c#3,e3] ~ [f#3,a3]@2 [c#3,e3] ~, ~@4 f#3@2 a3@2 a3@2 a3@2 c#3 ~ a3@2", // A F#m C#m F#m C#m
  L: "[c#3,e3] ~ [c#3,e3] ~ [f#3,a3]@2 [c#3,e3] ~ [c#3,e3] ~ [c#3,e3] ~ [f#3,a3]@2 [c#3,e3] ~, a3@2 a3@2 c#3 ~ a3@2 a3@2 a3@2 c#3 ~ a3@2", // C#m F#m C#m F#m C#m
  M: "[b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3] ~ [b2,e3,g#3] ~ [b2,d#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~, ~@2 g#3 ~ f#3 ~@3", // E E5 E B
  N: "[a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [a2,c#3,e3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~", // A B
  O: "[b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3] ~ [c#3,e3] ~, ~@6 a3!2", // E A5 A C#m
  P: "[b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [e3,g#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [b2,d#3,f#3] ~ [d#3,f#3]@2, ~@6 b2@2 ~@6 b2 ~", // E B D#m
  Q: "[c#3,e3] ~ [c#3,e3,a3] ~ [c#3,f#3,a3]@2 [c#3,e3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [f#3,a3]@2 [c#3,e3] ~, a3@2 ~@4 a3@2 ~@4 c#3 ~ a3@2", // C#m A F#m C#m A F#m C#m
  R: "[c#3,e3] ~ [c#3,e3,a3] ~ [c#3,f#3] ~ [c#3,e3] ~ [c#3,e3] ~ [c#3,e3,a3] ~ [f#3,a3]@2 [c#3,e3] ~, a3@2 ~@2 a3@2 a3@2 a3@2 ~@2 c#3 ~ a3@2", // C#m A F#5 C#m A F#m C#m
  S: "[c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,f#3,a3] ~ [c#3,e3] ~ [c#3,e3] ~ [c#3,e3] ~ [c#3,f#3,a3]@2 [c#3,e3] ~, ~@3 a3!3 ~ a3", // A F#m C#m F#m C#m
  T: "[c#3,e3] ~ [c#3,e3] ~ [f#3,a3]@2 [c#3,e3] ~ [c#3,e3] ~ [c#3,e3] ~ [c#3,f#3] ~ [c#3,e3] ~, a3@2 a3@2 c#3 ~ a3@2 a3@2 a3@2 a3@2 a3@2", // C#m F#m C#m F#5 C#m
  U: "[b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3] ~, ~@7 a3", // E A5 A C#m
  V: "[b2,g#3] ~ [b2,e3,g#3] ~ [b2,e3,g#3] ~ [c#3,f#3]@4 [c#3,f#3]@3 ~ [c#3,f#3]@2, e3 ~@7", // E F#5
  W: "[d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~", // B
  X: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~", // E
  Y: "[d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~, ~@2 b3 ~@5", // B D#m B
  Z: "[d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3] ~ [d#3,f#3,b3] ~ [d#3,f#3] ~ [d#3,f#3,b3] ~, ~@4 b3 ~ b3 ~", // B D#m B D#m B
  AA: "[c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~", // F#
  AB: "[d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,g#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,g#3,b3] ~ [d#3,f#3,b3] ~", // B G#m B G#m B
  AC: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,b3] ~ [e3,g#3,b3] ~ [d#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~, ~@2 g#3 ~ f#3 ~@3", // E E5 E G#m B
  AD: "[c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~", // A B
  AE: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3] ~, ~@7 a3", // E A5 A C#m
  AF: "[e3,g#3]@2 [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3]@2, b3 ~@13 b3 ~", // E B D#m
  AG: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~", // E A5 A
  AH: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [c#3,f#3]@4 [c#3,f#3]@3 ~ [c#3,f#3]@2", // E F#5
  AI: "[d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3] ~ [d#3,f#3,b3] ~ [d#3,f#3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~, ~@2 b3 ~ b3 ~@3", // B D#m B D#m B
  AJ: "[d#3,f#3] ~ [d#3,f#3] ~ [d#3,f#3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~ [d#3,f#3,b3] ~, b3!3 ~@5", // D#m B
  AK: "[c#3,e3,a3] ~ [c#3,e3,a3] ~ [c#3,a3] ~ [c#3,e3,a3] ~ [c#3,e3] ~ [c#3,e3] ~ [c#3,e3,a3] ~ [c#3,e3,a3] ~, ~@2 e3 ~ a3!2 ~@2", // A F#m A C#m A
})).s("gm_piano").gain(0.28)

// bass · electric bass finger · "tk2"
const bass = note(`<
  ~ A@2 B C D E F@2 G H F I F@2 J@2 F K I@2 F@2 J@2 L M N O F@2 J@2 F K I@2 F@2 J@2 L M N O I@2 P@2 I@2 Q I K F J@2 K@2
  I@2 K F J@2 L M N O L M N O G@2 P@2 ~@4
>`.pickRestart({
  A: "[e1@15 ~]/2", B: "e1", C: "e2!2 d2!2 c#2!2 b1!2", D: "a1!3 a2!3 g2 e2", E: "a1!4 a2!2 g2 e2",
  F: "e2!4 d3!2 c#3 b2", G: "b1!8", H: "a1!8", I: "b2!8", J: "a2!8", K: "e2!4 d3!2 c#3!2", L: "e2!4 g#2!4",
  M: "a2!4 b2!4", N: "e2!4 a2!4", O: "g#2!4 f#2!4", P: "e2!8", Q: "f#2!8",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · electric guitar clean · "tk3"
const electric_guitar_clean = note("<A B C D E F G F H I J K L ~@32 M N O P Q R S T ~@28>".pickRestart({
  A: "~@5 g#4 b4 c#5", B: "[b4,e5]!8", C: "[b4,e5] [d5,g5]@2 [a4,c#5]@2 e4 [g#4,b4]!2", D: "[e4,g#4]!8",
  E: "[e4,g#4] ~ [g4,b4]@2 [g4,b4]@2 e4@2 [g4,b4]@2 [g4,b4]@2 e4@2 [g4,b4]@2", F: "a4 ~ b4 a4 ~ b4 a4 ~",
  G: "b4 a4 ~ b4 a4 ~ b4!2", H: "b4 a4 ~ b4 a4 ~ b4 e5", I: "g5@2 e5 d5 b4 [a4,c#5]@2 e4",
  J: "[g4,b4] [a4,c#5] [a4,c#5]@2 [a4,c#5] [g4,b4] ~ [e4,g#4]", K: "~ e4 [a4,c#5] e4 [g#4,b4] e4 [a4,c#5] [g#4,b4]",
  L: "~ [d#4,a4,b4]!2 ~ [d#4,a4,b4]!2 ~ [d#4,a4,b4]", M: "~@5 [f#4,b4]!2 d5", N: "b4 a4@2 e4@2 b3 [d4,f#4] [e4,g#4]",
  O: "[e4,g#4]@2 [d4,f#4] b3 a3@2 a3 b3", P: "~ b3 d4 e4 [e4,g#4]@2 [e4,g#4]@2", Q: "[e4,g#4]@2 d4 b3 ~ [f#4,b4] ~ b4",
  R: "d5 ~ e5@3 d5 b4 ~", S: "f#3 ~ [f#4,a#4] c#4 [e4,g#4] f#4@2 f#4, ~@5 a#4 ~@2",
  T: "b3@2 ~@2 [f#4,b4]@2 f#4@2 a4@2 b4@3 ~@3", // B5
})).s("gm_electric_guitar_clean").gain(0.45).pan(0.8)

// other · piccolo · "tk6"
const piccolo = note(`<
  ~@25 A B@5 C D E@2 C F G@2 C F A H@5 ~@6 I@2 J F I@2 J K I@2 C F A L@3 A M@3 N O@2 P N Q@2 R
>`.pickRestart({
  A: "b5@3 ~ b5@3 ~ b5@3 ~ b5 ~ b5 ~",
  B: "[a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5@2 f#5 ~ f#5@4 e5@21 ~ e5 ~ e5 ~ e5 ~ g#5@29 ~@3 g#5 ~]/5",
  C: "a5 ~ a5 ~ a5 ~ a5@3 ~ a5@3 ~ a5 ~", D: "a5 ~ a5 ~ a5 ~ a5@6 ~@4", E: "[g#5@29 ~ g#5 ~]/2",
  F: "a5 ~ a5 ~ a5 ~ a5@5 ~@5", G: "[g#5@29 ~@3]/2",
  H: "[a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5@2 f#5 ~ f#5@4 e5@21 ~ e5 ~ e5 ~ e5 ~ f#5@22 ~@12]/5", I: "[g#5@29 ~ g#5@2]/2",
  J: "a5@2 a5 ~ a5 ~ a5@3 ~ a5@3 ~ a5 ~", K: "a5 ~ a5 ~ a5 ~ a5@4 ~@6",
  L: "[a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5@2 f#5 ~ f#5@4 e5@16 ~@2 b4@4 c#5@4 b4@4]/3",
  M: "[a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5@2 f#5 ~ f#5@4 e5@19 ~@5 f#5@6]/3", N: "f#6@13 ~ f#5@2",
  O: "[f#6@2 f6@2 e6 d#6@2 g#5@9]/2", P: "b5@9 ~ f#5@6", Q: "[f#6@4 f6@4 e6@2 d#6@4 g#5@17 ~]/2", R: "b5@3 ~",
})).s("gm_piccolo").gain(0.22).pan(0.8)

// chords · drawbar organ · "tk7"
const drawbar_organ = note("<~@45 A B C D E F G H ~@28>".pickRestart({
  A: "~@2 b5@2 [d#6,f#6] ~ [e6,g#6] ~ [d#6,f#6]@2 b5@2 [d#6,f#6] ~ [b5,e6,g#6] ~, ~@8 b5 ~@7", // D#m E D#m E
  B: "[b5,f#6,g#6,a6] ~ [b5,e6,g#6]@3 ~ [b5,d#6,f#6]@3 ~ [b5,e6,g#6] ~ [b5,d#6,f#6]@3 ~", // B7 E B E B
  C: "~@2 e6@2 [e6,a#6,b6,d7] ~ [e6,a6,c#7] ~ [g#6,b6]@2 e6 ~ [e6,g#6,b6] ~ [e6,a6,c#7] ~, ~@8 e6 ~@7", // E7 A G#m E A
  D: "[e6,a#6,b6,d7] ~ [e6,a6,c#7]@3 ~ [e6,g#6,b6]@3 ~ [e6,a6,c#7] ~ [e6,g#6,b6]@4", // E7 A E A E
  E: "~@2 b5 ~ [d#6,f#6]@2 b5 ~ [b5,f#6,a6] ~ [b5,e6,g#6] ~ [b5,d#6,f#6]@2 b5 ~, ~@4 d6 ~@11", // D#m B7 E B
  F: "[b5,f#6,a6] ~ [b5,e6,g#6]@3 ~ [b5,d#6,f#6]@3 ~ [b5,e6,g#6] ~ [b5,d#6,f#6]@3 ~", // B7 E B E B
  G: "~@2 f#6 ~ [a#6,c#7]@2 f#6 ~ [f#6,b6,d#7] ~ [f#6,a#6,c#7]@6, ~@4 f#6 ~@11", // A#m B F#
  H: "~@2 b6@2 [d#7,f#7]@2 b6 ~ [b6,e7,g#7] ~ [b6,d#7,f#7]@6, ~@4 b6 ~@11", // D#m E B
})).s("gm_drawbar_organ").gain(0.49)

// chords · acoustic guitar steel · "tk8"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C@2 D@2 E C D E D@2 C@2 D@2 E@2 D@2 C@2 F G H F D@2 C@2 D@2 E@2 D@2 C@2 F G H I E@2 D@2 E@2 J K D@2 C@2 D@2
  E@2 D@2 C@2 F G H F@2 G H I E@2 D C ~@4
>`.pickRestart({
  A: "[[g#3,b3,e4]@15 ~]/2", B: "[[g#3,b3,e4]@29 ~@3]/2", C: "[a3,c#4,e4]!8", D: "[g#3,b3,e4]!8", E: "[f#3,b3,d#4]!8",
  F: "[g#3,b3,e4]!4 [f#3,b3,d#4]!4", G: "[a3,c#4,e4]!4 [f#3,b3,d#4]!4", H: "[g#3,b3,e4]!4 [a3,c#4,e4]!4",
  I: "[g#3,b3,e4]!4 [a#3,c#4,f#4]!4", J: "[a#3,c#4,f#4]!8", K: "[b3,d#4,f#4]!8",
})).s("gm_acoustic_guitar_steel").gain(0.16)

// chords · electric guitar muted · "tk9"
const electric_guitar_muted = note(`<
  A B C D E F G H I J K L ~@3 M@2 ~@2 N@2 ~@2 M@2 ~@6 M@2 ~@2 N@2 ~@2 M@2 ~@14 M@2 ~@2 N@2 ~@2 M@2 ~@16
>`.pickRestart({
  A: "~@5 g#4 b4 c#5", B: "~ [b4,e5]!5 b4!2", C: "b4 ~ d5@2 b4@2 [a4,c#5]@2 g4@2 e4@2 [g#4,b4]@2 [g#4,b4]@2",
  D: "~ [e4,g#4]!7", E: "[e4,g#4] ~ [g4,b4]@2 [g4,b4]@2 e4@2 [g4,b4]@2 [g4,b4]@2 e4@2 [g4,b4]@2",
  F: "~@4 [g4,b4]@2 ~@4 b4 ~@5", G: "b4 ~@2 b4 ~@2 b4!2", H: "a4 ~@2 a4 ~@2 a4 ~", I: "~ a4 ~@6",
  J: "g5 ~ e5 [d5,e5] e5 a4@2 e4", K: "[g4,b4] ~@4 [g4,b4] ~ g#4", L: "~@2 [a4,c#5] ~@3 [a4,c#5] ~",
  M: "~@4 f#3 ~@7 f#3 ~@3", N: "~@4 g#3 ~@7 g#3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ A ~ A ~ B@7 ~ B@15 A B@15 ~ B@31 ~@5>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.32)

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

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@7 A ~@31 A ~@23 B ~@7 C ~@4>".pickRestart({
  A: "~@12 x!4", B: "~@8 x ~ x!3 ~ x ~", C: "x!13 ~@3",
})).gain(0.25)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A ~@3 B ~@3 A ~@3 C ~@3 C ~@5 C ~@5 C ~@3 D ~ E ~ E ~ C ~ A ~@3 F ~@15 E ~ C ~@14
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "~@7 x", C: "~@10 x!3 ~ x ~", D: "~@4 x!4", E: "~@11 x!2 ~ x ~", F: "~@8 x ~@2 x!2 ~ x ~",
})).gain(0.25)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@38 A ~ A ~@7 A ~@15 A ~@16>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.13)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A ~@7 A ~@3 A ~@5 A ~@5 A ~@5 A ~ A ~@11 B ~@11 A ~ A ~@14>".pickRestart({
  A: "~ x", B: "~ x ~ x!5",
})).gain(0.19)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A ~ A ~@7 A ~@7 A ~@5 A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~@5
>`.pickRestart({
  A: "x",
})).gain(0.22)

// drums · high tom
const high_tom = s("ht").struct("<~@80 [x!4 ~@2 x ~@9]>").gain(0.16)

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

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@9 A B ~@20 C ~@3 D ~@2 C ~@3 C E ~@3 E ~@3 E ~ F C F C F D ~@2 C ~@4 E ~@2 E ~@2 E ~ E G H I@2 ~@2
>`.pickRestart({
  A: "~@5 x ~ x", B: "x!2 ~@6", C: "~@5 x ~@2", D: "~@3 x ~@4", E: "~ x ~@6", F: "~ x ~@3 x ~@2", G: "~ x ~ x ~ x ~@2",
  H: "~ x ~ x!3 ~ x", I: "x!8",
})).gain(0.1)

stack(
  piano, bass, electric_guitar_clean, piccolo, drawbar_organ, acoustic_guitar_steel, electric_guitar_muted, kick, snare,
  low_tom, hihat, mid_tom, mid_tom_soft, open_hat, crash, high_tom, tambourine, tambourine_soft
)

More by The Beach Boys