Strudelify
I Get Around cover art

Endless Summer

I Get Around

The Beach Boys

KeyA minorTempo144 bpm
0:00/0:00
// I Get Around — The Beach Boys
// 144 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 83 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): MUTED GTR.
setcpm(144/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 · rock organ · "ORGAN 3"
const rock_organ = note("<~@5 A@8 ~@3 B C D E ~@3 F@8 G@8 H I ~@3 J K L M ~@3 N@8 O@2 P@2 ~@3 N@16 ~>".pickRestart({
  A: "[[d4,g4]@8 g#4@8 ~@8 f4@4 [d4,f#4]@3 ~, b4@16 a4@15 ~, ~ e4@2 ~, ~@4 c5@3 ~]/8", B: "~@5 d4 e4 f#4",
  C: "g4!2 a4 g4 a4 b4@2 g4", D: "b4 g4 e5 d5@2 b4 a4 g#4", E: "a4 ~@7",
  F: "[[d4,g4]@2 g#4@2 ~@2 f4 [f#4,d5], b4 a4, ~ e4@2 ~, ~@4 c5@3 ~]/8", // G5 D
  G: "[[g#4,b4] c#5 [f#4,d5] [e4,c#5], e4 ~, ~ a4@3]/8", H: "[g#4,b4]", I: "[f4,a4,c5]@15 ~", J: "~@5 d#4 f4 g4",
  K: "g#4!2 a#4 g#4 a#4 c5@2 g#4", L: "c5 g#4 f5 d#5@2 c5 a#4 a4", M: "a#4 ~@7",
  N: "[[d#4,g#4]@2 a4@2 ~@2 f#4 [g4,d#5], c5 a#4, ~ f4@2 ~, ~@4 c#5@3 ~]/8", O: "[f4,a4,c5]/2",
  P: "[[g4,a#4]@8 [g#4,c5] ~@7, d#4@9 ~@7]/2", // Gm G#
})).s("gm_rock_organ").gain(0.25).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@5 A@2 B@2 C D E F ~@3 G H I J ~@3 A@2 B@2 C D E F K L M N O P Q R S T U ~@2 V W X U ~@3 Y@2 Z@2 AA AB AC AD AE AF AG
  ~@4 Y@2 Z@2 AA AB AC AD Y@2 Z@2 AA AB AC AD ~
>`.pickRestart({
  A: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 b1@2 d2@2 b1@2", B: "e1 ~ e1 ~ e1 ~ e1 ~ e1@2 g#1@2 b1@2 g#1@2",
  C: "a1 ~ a1 ~ a1 ~ a1 ~ a1@2 c2@2 e2@2 c2@2", D: "a1 ~ a1 ~ a1 ~ a1 ~ a1@2 c2@2 e2@2 c2 ~",
  E: "f1 ~ f1 ~ f1 ~ f1 ~ f1@2 a1@2 c2@2 a1 ~", F: "d2 ~ d2 ~ d2 ~ d2 ~ d2@2 f#2@2 a2@2 f#2@2", G: "~@5 d2 e2 f#2",
  H: "g2 ~ g2@2 a2@2 g2@2 a2@2 b2@4 g2@2", I: "b2@2 g2@2 e3@2 d3@4 b2@2 a2 ~ g#2@2", J: "a2 ~@7",
  K: "e2@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", L: "e2 ~ e2 ~ f#2 ~ f#2@2 g2 ~ g2 ~ g#2@2 g#2 ~",
  M: "a2 ~ a2 ~ a2 ~ f#2 ~ e2 ~ e2 ~ f#2@2 e2@2", N: "a2 ~ a2 ~ a2 ~ f#2 ~ e2 ~ e2 ~ f#2 ~ e2@2",
  O: "d3 ~ d3 ~ d3@2 b2 ~ a2 ~ a2 ~ b2@2 a2@2", P: "d3 ~ d3@2 c3 ~ c3 ~ b2 ~ b2 ~ a#2 ~ a#2@2",
  Q: "a2 ~ a2 ~ a2@2 f#2 ~ e2 ~ e2@2 f#2@2 e2@2", R: "a2 ~ a2@2 g2 ~ g2@2 f#2 ~ f#2@2 f2 ~ f2@2",
  S: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2", T: "f2@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ a2@2", U: "a#2 ~@7",
  V: "~@5 d#2 f2 g2", W: "g#2 ~ g#2@2 a#2@2 g#2@2 a#2@2 c3@4 g#2@2", X: "c3@2 g#2@2 f3@2 d#3@4 c3@2 a#2 ~ a2@2",
  Y: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 c2@2 d#2@2 c2@2", Z: "f1 ~ f1 ~ f1 ~ f1 ~ f1@2 a1@2 c2@2 a1@2",
  AA: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1@2 c#2@2 f2@2 c#2@2", AB: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1@2 c#2@2 f2@2 c#2 ~",
  AC: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2 a#1@2 c#2@2 a#1 ~", AD: "d#2 ~ d#2 ~ d#2 ~ d#2 ~ d#2@2 g2@2 a#2@2 g2@2",
  AE: "f2@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", AF: "f2 ~ f2 ~ f2 ~ f2@2 f2 ~ f2 ~ f2@2 f2 ~",
  AG: "d#2 ~ d#2 ~ d#2 ~ d#2 ~ d#2 ~ d#2 ~ d#2@2 d#2@2",
})).s("gm_acoustic_bass").gain(0.38)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C ~@2 D@2 E@2 F@2 G H I J I J K L I J I M D@2 E@2 F@2 G H N O P Q R S T U V W X Y X Y Z AA X Y X AB AC@2 G@2 AD@2
  AE AF AG AH AI AJ ~@3 AC@2 G@2 AD@2 AE AF AC@2 G@2 AD@2 AE AF ~
>`.pickRestart({
  A: "~@12 [g2,d3] ~@3", B: "[g2,d3]", C: "[e2,b2]",
  D: "[g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~", // G5
  E: "[e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  F: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A5
  G: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  H: "[d2,a2] ~ [d2,a2] ~ [d2,a2] ~ [d2,a2] ~ [d2,a2] ~ [d2,a2] ~ [d2,a2] ~ [d2,a2] ~", // D5
  I: "[a1,a2] ~@2 [c#2,c#3] [d2,d3] ~@2 [g#1,g#2]", J: "[a1,a2] ~@2 [d2,d3] ~ [d2,d3] ~ [g#1,g#2]",
  K: "[g2,d3]@3 ~ [g2,d3] ~ [g2,d3] ~ [g2,d3]@3 ~ [g2,d3] ~ [g2,d3] ~", // G5
  L: "[g2,d3]@3 ~ [g2,d3] ~ [g2,d3]@3 ~ [g2,d3] ~ [g2,d3]@2 [g#1,g#2]@2", M: "[a1,a2] ~@2 [d2,d3] ~ [d2,d3] ~@2",
  N: "[e2,b2]@2 ~@4 [e2,b2]@4 [e2,b2] ~ [e2,b2]@2 [e2,b2]@2", // E5
  O: "[e2,b2]@2 ~@4 [e2,b2]@4 [e2,b2] ~ [e2,b2] ~ [e2,b2]@2", // E5
  P: "[a2,e3]@2 ~@2 [a2,e3] ~ [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3] ~ [a2,e3]@2", // A5
  Q: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3]@2 [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 [a2,e3]@2", // A5
  R: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3]@2 [d3,a3]@2 d3@2 [d3,a3] ~ [d3,a3] ~", // D5
  S: "[d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3]@2 [d3,a3]@2", // D5
  T: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3]@2 [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 [a2,e3] ~", // A5
  U: "[a2,e3]@2 [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A5
  V: "[e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2]@2", // E5
  W: "[f2,c3]@2 [f2,c3] ~ [f2,c3] ~ [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [a1,a2]@2", // F5 A
  X: "[a#1,a#2] ~@2 [d2,d3] [d#2,d#3] ~@2 [a1,a2]", Y: "[a#1,a#2] ~@2 [d#2,d#3] ~ [d#2,d#3] ~ [a1,a2]",
  Z: "[g#2,d#3]@3 ~ [g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3]@3 ~ [g#2,d#3] ~ [g#2,d#3] ~", // G#5
  AA: "[g#2,d#3]@3 ~ [g#2,d#3] ~ [g#2,d#3]@3 ~ [g#2,d#3] ~ [g#2,d#3]@2 [a1,a2]@2", // G#5 A
  AB: "[a#1,a#2] ~@2 [d#2,d#3] ~ [d#2,d#3] ~@2", // A# D#
  AC: "[g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3] ~ [g#2,d#3] ~", // G#5
  AD: "[a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~", // A#5
  AE: "[f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~", // F#5
  AF: "[d#2,a#2] ~ [d#2,a#2] ~ [d#2,a#2] ~ [d#2,a#2] ~ [d#2,a#2] ~ [d#2,a#2] ~ [d#2,a#2] ~ [d#2,a#2] ~", // D#5
  AG: "[f2,c3]@3 ~ [f2,c3] ~ [f2,c3]@3 ~ [f2,c3] ~ [f2,c3]@4", // F5
  AH: "[f2,c3]@4 [f2,c3] ~ [f2,c3]@4 [f2,c3] ~ [f2,c3]@3 ~", // F5
  AI: "[d#2,a#2]@3 ~ [d#2,a#2] ~ [d#2,a#2]@3 ~ [d#2,a#2]@2 [d#2,a#2] ~ [d#2,a#2] ~", AJ: "[d#2,g#2] ~@7",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.3)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@16 A B C D E D F ~@10 G H I J K L M N ~@3 O P Q R S R T ~@32>".pickRestart({
  A: "~@5 d3 e3 f#3", B: "g3 ~ g3@2 a3@2 g3@2 a3@2 b3@4 g3@2", C: "b3 g3 e4 d4@2 b3 a3 g#4", D: "a4 ~@2 c#5 d5 ~@2 g#4",
  E: "a4 ~@2 d5 ~ d5 ~ g#4", F: "a4@2 ~@4 d5@2 ~@2 d5@3 c#5 ~@2", G: "~@10 [a3,e4,a4] ~@3 e4@2",
  H: "c5@4 a4@2 g4@3 ~ a4@2 ~@4", I: "[a3,d4]@3 [a3,d4] [a3,c4] ~ [a3,d4]@4 c4@2 a3@2 c4 a4",
  J: "c5@2 ~ a4 g4@3 ~ e4@3 e4 d4 ~ c4 ~, ~@7 a4@2 ~@7",
  K: "[a2,e3,a3]@3 [e3,a3] e3@2 [e3,a3]@2 ~@2 a4 ~@3 c#5 ~, ~ a2 ~@2", // A5
  L: "[a4,d5]@3 [a4,d5] [a4,c#5] ~ [a4,e5]@6 [a4,c#5]@2 ~@2", M: "~@6 g#4@3 a4 g#4@2 [e4,g#4]@2 ~@2, ~@3 e4@3 ~@2",
  N: "~@6 a4@3 a#4 a4@2 [f4,a4]@2 ~@2, ~@3 f4@3 ~@2", O: "~@5 d#3 f3 g3", P: "g#3 ~ g#3@2 a#3@2 g#3@2 a#3@2 c4@4 g#3@2",
  Q: "c4 g#3 f4 d#4@2 c4 a#3 a4", R: "a#4 ~@2 d5 d#5 ~@2 a4", S: "a#4 ~@2 d#5 ~ d#5 ~ a4",
  T: "a#4@2 ~@4 d#5@2 ~@2 d#5@3 d5 ~@2",
})).s("gm_electric_guitar_clean").gain(0.44).pan(0.6)

// other · electric guitar clean · "CLEAN GTR" · soft notes · Cmaj7 A#maj7 C#maj7 Bmaj7
const electric_guitar_clean_2 = note(`<
  ~@22
  [~@14 [b4,c5] [a4,a#4]]
  ~@10
  [~@10 c#4 ~@5]
  ~@16
  [~@14 [c5,c#5] [a#4,b4]]
  ~@32
>`).s("gm_electric_guitar_clean").gain(0.22).pan(0.6)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note(`<
  ~@5 A@2 B@2 C@2 D E ~@10 A@2 B@2 C@2 D E ~@20 C@2 D@2 F@2 G H ~@7 C@2 D@2 F@2 G H C@2 D@2 F@2 G H ~
>`.pickRestart({
  A: "~@2 b2 ~", B: "~@2 g#2 ~", C: "~@2 c3 ~", D: "~@2 a2 ~", E: "~@2 f#3 ~", F: "~@2 c#3 ~", G: "~@2 a#2 ~",
  H: "~@2 g3 ~",
})).s("gm_electric_guitar_muted").gain(0.28).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@5 A@8 ~@2 A@2 ~@4 A@20 ~@2 A@2 ~@4 A@13 ~@4 A@16 ~>".pickRestart({
  A: "x!4",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A@3 B A@4 ~ C ~ C ~ C D C ~ C A@5 B A@12 ~ C ~ C ~ C ~ C ~ C A@11 ~@3 E A@3 B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x!3 ~ x ~", C: "~@7 x", D: "x", E: "~@3 x",
})).gain(0.49)

// drums · clap
const clap = s("cp").struct("<~@15 A@2 ~@4 A@2 ~@20 A@2 ~@4 A@2 ~@32>".pickRestart({
  A: "x!4",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A@3 B A@4 C@2 ~@2 D E C@2 ~@2 A@5 B A@2 D@10 C@2 ~@2 D F C@2 ~@2 A@8 D@3 G ~@3 D@3 H D H D I D H D H D I D I ~
>`.pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "~@3 x", D: "x!16", E: "x!15 ~", F: "x!14 ~@2", G: "x", H: "x!11 ~@5", I: "x!10 ~@6",
})).gain(0.27)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@4 [~ x] ~@78>").gain(0.08)

stack(
  rock_organ, bass, electric_guitar_muted, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_muted_2,
  kick, snare, clap, hihat, woodblocks
)

More by The Beach Boys