Strudelify

I Just Wasn't Made for These Times

The Beach Boys

KeyF majorTempo95 bpm
0:00/0:00
// I Just Wasn't Made for These Times — The Beach Boys
// 95 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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 · acoustic bass
const bass = note(`<
  A@2 B C A@2 D E F G H I J K L M N O P Q R S P T U V W X ~ A@2 B C A@2 D E F G H I J K L M N O P Q R S P T U V W ~@2
  A@2 B C ~@16
>`.pickRestart({
  A: "~@2 d3 ~ bb3 ~ g3 ~ f3 ~ d3 ~ f3 ~ g3 ~", B: "~@2 eb3 ~ bb3 ~ ab3 ~ gb3@2 eb3@2 gb3@2 ab3@2",
  C: "~@2 d3 ~ bb3 ~ g3 ~ f3 ~ d3 ~ f3@2 g3@2", D: "~@2 eb3 ~ bb3 ~ ab3 ~ gb3 ~ eb3 ~ gb3@2 ab3@2",
  E: "~@2 d3@2 bb3 ~ g3 ~ f3 ~ d3 ~ f3 ~ g3 ~", F: "eb3@3 ~ eb3@3 ~ f3@3 ~ f3@3 ~", G: "d3@4 d3@3 ~ g3@3 ~ g3@4",
  H: "d3@3 ~ d3@3 ~ d3@4 g3@4", I: "d3@3 ~ d3@3 ~ d3@3 ~ d3@3 ~", J: "~@2 eb3 ~ g3@4 ~@2 bb3 ~ g3@2 eb3@2",
  K: "~@2 eb3@2 g3@4 ~@2 bb3 ~ g3 ~ eb3@2", L: "~@2 eb3@2 g3@4 ~@2 bb3 ~ g3@2 eb3@2",
  M: "~@2 eb3@2 g3@4 ~@2 bb3 ~ g3@2 eb3 ~", N: "f3@5 ~ f3@5 ~ f3 ~ f3@2", O: "g2@3 ~ g2@3 ~ g2 ~ g2@3 ~ g2@2",
  P: "f2@4 ~@2 f2@7 ~ f2@2", Q: "g2@5 ~ g2@6 ~@2 g2@2", R: "f2@5 ~ f2@6 ~@2 f2@2", S: "g2@2 ~ g2@3 ~ g2",
  T: "eb2@5 ~ eb2@2 f2@4 eb2@3 ~", U: "d2@5 ~ d2@2 g2@3 ~ g2@4", V: "c2@15 ~", W: "c2 f2", X: "bb2@3 ~",
})).s("gm_acoustic_bass").gain(0.8)

// chords · harpsichord
const harpsichord = note(`<
  A B C@2 D E F G@2 H I J K L@3 M N O P Q R O S T ~@4 A B C@2 D E F G@2 H I J K L@3 M N O P Q R O S T ~@4 A B C@2 U V W
  X Y Z AA AB AC W AD AE AF AG ~@2
>`.pickRestart({
  A: "~@2 d4@2 ~@2 d4 ~@3 [f4,g4] ~@3 d4@2, ~@4 [f4,g4,bb4]@4 d4@5 ~@3, ~@5 bb4 [f4,g4,bb4]@2", // Fsus2 Gm7
  B: "~@2 d4@2 ~@2 d4 ~@3 [f4,bb4,c5] ~@3 d4@2, ~ [f4,bb4,c5] d4 [f4,bb4,c5]", // Fsus4
  C: "[~@2 eb4@2 ~@2 eb4 ~@3 [f4,ab4,c5] ~@3 eb4@3 ~ d4@2 ~@2 d4 ~@3 [f4,g4] ~@3 [g3,d4]@2, ~@4 [f4,ab4,c5]@4 eb4@4 c5@7 ~@5 d4@5 ~@3, ~@12 [f4,ab4]@4 ~@4 [f4,g4,c5]@5 ~ c5@2 [f4,g4,c5]@4]/2", // Fm Fsus2 G5 Fm Fsus2
  D: "d4 ~ d4@2 ~@2 d4 ~@3 [f4,g4,bb4] ~@3 d4@2, ~ [f4,g4,bb4] d4 [f4,g4,bb4]", // Gm7
  E: "~@2 d4@2 ~@2 d4 ~@3 [f4,c5] ~@3 d4@2, ~@4 [f4,bb4,c5]@4 d4@5 ~@3, ~@5 bb4 [f4,bb4,c5]@2", // F5 Fsus4
  F: "~@2 eb4@2 ~@2 eb4 ~@3 [f4,ab4] ~@3 eb4@2, ~@4 [f4,ab4,c5]@4 eb4@5 ~@3, ~@5 c5 [f4,ab4,c5]@2", // Fm
  G: "[~@2 d4@2 ~@2 d4 ~@3 [f4,g4,ab4,b4] ~@5 [g4,bb4]@3 ~ [g4,bb4]@2 eb4 ~ [f4,g4,bb4]@4 [g4,bb4]@2 eb4@2, ~@4 [f4,g4,c5]@4 d4@4 [f4,g4,ab4,b4]@3 f4@2 ~@15, ~@14 d4@2 eb4@4 ~@8 eb4 ~@3]/2", // Fdim Gm Gm7 Gm Fsus2 Fdim
  H: "[f4,a4,c5]@3 ~ [f4,a4,c5]@2 d4@2 [g4,bb4,f5]@3 ~ [g4,bb4,f5]@2 d4@2, d4 ~ d4 ~", // F Gm7
  I: "[f4,a4,c5]@3 ~ [f4,a4,c5]@3 ~ [f4,a4,c5]@2 d4@2 [f4,a4,c5]@2 d4 ~, d4@9 ~@7", // F
  J: "[g4,b4,f5]@3 ~ [g4,b4,f5]@3 ~ [g4,b4,f5]@2 d4@2 [g4,b4,f5]@2 d4@2, d4@9 ~@7", // G7
  K: "[eb4,g4,c5] ~@3 [eb4,g4,c5] ~ eb3 ~ [f3,f4,a4,d5] ~@3 [f4,a4,d5] ~ f3 ~, eb3 ~@7", // Cm Dm
  L: "[eb3,eb4,g4,c5] ~@3 [eb4,g4,c5] ~ eb3 ~ [f3,f4,a4,d5] ~@3 [f4,a4,d5] ~ f3 ~", // Cm Dm
  M: "[f3,f4,a4,eb5] ~@3 [f4,a4,eb5] ~ f3@2 [f4,a4,eb5] ~ f3@2 [f4,a4]@2 f3@2, ~@12 eb5 ~@3", // F7 F
  N: "[c4,eb4,g4,bb4]@3 ~ [c4,eb4,g4,bb4]@2 g3@2 [c4,eb4,g4,bb4]@2 g3@2 [c4,eb4,g4,bb4]@2 ~ c4, g3@2 ~@5 g3", // Cm7
  O: "[c4,f4,a4,c5]@3 ~ [c4,f4,a4,c5]@3 ~ [c4,f4,a4,c5]@2 f3@2 [c4,f4,a4,c5]@2 f3@2, f3@9 ~@7", // F
  P: "[c4,eb4,g4,bb4]@3 ~ [c4,eb4,g4,bb4]@3 ~ [c4,eb4,g4,bb4]@2 g3@2 [c4,eb4,g4,bb4]@2 ~ c4, g3@9 ~@5 g3@2", // Cm7
  Q: "[c4,f4,a4,c5]@3 ~ [c4,f4,a4,c5]@3 ~ [c4,f4,a4,c5]@2 f3@2 [c4,f4,a4,c5]@2 f3@2, f3 ~", // F
  R: "[c4,eb4,g4,bb4]@3 ~ [c4,eb4,g4,bb4]@3 ~ [c4,eb4,g4,bb4]@2 g3@2 [c4,eb4,g4,bb4]@2 g3@2, g3@9 ~@7", // Cm7
  S: "[eb4,g4,bb4]@2 ~@2 [eb4,g4,bb4]@2 eb3@2 [f3,g4,bb4]@4 [eb3,eb4,g4,bb4]@3 ~, eb3@2 ~@2 f4 ~@3", // Eb Gm7 Eb
  T: "[d4,f4,a4]@3 ~ [d4,f4,a4]@2 d3@2 [d4,g4,b4]@3 ~ [d4,g4,b4]@2 ~@2, d3@2 ~@2 g3@3 ~", // Dm G
  U: "[c5,eb5,g5]@2 ~@2 [bb4,c5,eb5,g5]@2 c4@2 [c5,d5,f5,a5]@2 ~@2 [c5,d5,f5,a5] ~ f4@2, c4 ~@3, [d4,bb4] ~@7 f4@4 ~@4", // Cm Cm7 Dm7 Gm
  V: "[bb4,c5,eb5,g5]@2 ~@2 [bb4,c5]@2 c4 ~ [c5,d5,f5,a5]@2 ~@2 [c5,f5,a5] ~ f4@2, c4@4 [eb5,g5] ~@3 f4@4 d5@2 ~@2", // Cm7 Bbsus2 Dm7 F Eb
  W: "[bb4,c5,eb5,g5] ~ [bb4,c5,eb5,g5] c4 [c5,d5,f5,a5] ~ [c5,d5] f4, c4@4 ~@4 f4@4 [f5,a5] ~@3", // Cm7 Dm7 Csus2 F
  X: "[bb4,c5,eb5,g5]@2 ~@2 [bb4,c5,eb5,g5]@2 c4@2 [c5,d5,f5,a5]@2 ~@2 [c5,d5]@2 f4 ~, c4@4 ~@4 f4@4 [f5,a5] ~@3", // Cm7 Dm7 Csus2 F
  Y: "[c4,c5,eb5,g5]@2 [bb4,c5,eb5,g5] c4 [c5,d5,f5,a5] ~ [c5,d5,f5,a5] f4, bb4@2 ~@2 gb5 ~@3 f4@4 ~@4", // Cm Cm7 Dm7
  Z: "[c5,d5,f5,a5] ~ [c5,d5,f5,a5] ab4 [d5,g5,b5] ~ [d5,eb5,g5,b5] g4, ab4 ~ [g4,eb5] ~", // Dm7 G Cm
  AA: "[bb4,c5,eb5,g5]@3 ~ [bb4,c5,eb5,g5]@2 gb4@2 [bb4,c5,eb5,g5]@2 gb4@2 [bb4,c5,eb5,g5]@2 gb4@2, gb4 ~@3", // Cm7
  AB: "[c5,d5,f5,a5] ~ [c5,d5,f5,a5] f4 [c5,d5,f5,a5] f4 [c5,d5,a5] f4, f4@4 ~@8 f5 ~@3", // Dm7 D7
  AC: "[bb4,c5,eb5,g5] ~ [bb4,c5] c4 [c5,d5,f5,a5] ~ [c5,d5,a5] f4, c4@4 [eb5,g5] ~@3 f4@4 f5 ~@3", // Cm7 Bbsus2 Dm7 D7 Eb
  AD: "[bb4,c5,eb5,g5]@2 ~@2 [c5,eb5,g5] ~ c4@2 [c5,d5,f5]@2 ~@2 [c5,d5]@2 f4@2, c4@2 bb4 ~ f4@2 ~@2, ~@8 a5 ~@3 [f5,a5] ~@3", // Cm7 Cm Dm7 Csus2 F
  AE: "[bb4,c5,eb5,g5] ~ [bb4,c5,eb5] c4 [c5,d5,f5,a5] ~ [c5,d5,a5] f4, c4@4 g5 ~@3 f4@4 f5 ~@3", // Cm7 Dm7 D7
  AF: "[bb4,c5,eb5,g5] ~ [bb4,c5] c4 [c5,d5,f5,a5] ~ [d5,f5] f4, c4@4 [eb5,g5] ~@3 f4@4 [c5,a5] ~@3", // Cm7 Bbsus2 Dm7 Dm Eb F
  AG: "[c5,d5,f5,a5]@3 ~ [d5,f5,a5] ~ ab4@2 [d5,eb5,g5,b5]@2 ~@2 [d5,eb5]@2 g4@2, ab4@4 c5@2 ~@2 g4@4 [g5,b5] ~@3, ~@8 f4 ~@7", // Dm7 Dm G Ebmaj7 G
})).s("gm_harpsichord").gain(0.43)

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T U T V ~@6 A B C D E F G H I J K L M N O P Q R S T U T V ~@6 A B C D W X Y Z AA
  AB AC AD AE X AF AG AH AI ~@2
>`.pickRestart({
  A: "[g3,bb3,d4]@4 [g3,bb3,d4]@3 ~ [g3,bb3,d4]@2 c3@2 [g3,bb3,d4]@2 c3@2, c3@9 ~@7", // Gm
  B: "[bb3,d4,f4]@4 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 bb2@2 [bb3,d4,f4]@2 bb2@2, bb2@5 ~@3", // Bb
  C: "[ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@2 ab2@2 [ab3,c4,eb4]@2 ab2@2 [ab3,c4,eb4]@2 ab2 ~, ab2 ~@3", // Ab
  D: "[g2,d4,f4,a4]@2 [d4,f4,a4] g2 [d4,f4,a4] g2 [d4,f4,a4] g2", // Dm
  E: "[g3,bb3,d4]@3 ~ [g3,bb3,d4]@2 c3@2 [g3,bb3,d4]@2 c3@2 [g3,bb3,d4]@2 c3@2, c3 ~@3", // Gm
  F: "[bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 bb2@2 [bb3,d4,f4]@2 bb2@2 [bb3,d4,f4]@2 bb2@2, bb2@3 ~@5", // Bb
  G: "[ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@2 ab2@2 [ab3,c4,eb4]@2 ab2@2, ab2@9 ~@7", // Ab
  H: "[g2,d4,f4,a4]@4 [d4,f4,a4]@2 g2@2 [g4,b4,d5]@3 ~ [g4,b4,d5]@2 g2 ~, ~@8 g2 ~@7", // Dm G
  I: "[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4] eb3 [f3,eb4,g4,bb4]@2 [eb3,eb4,g4,bb4] eb3", // Eb
  J: "[d3,d4,f4,a4]@4 [d4,f4,a4]@2 d3@2 [g3,g4,bb4,d5]@3 ~ [bb4,d5] ~ g3@2, ~@6 g4 ~", // Dm Gm Bb
  K: "[d4,f4,a4]@3 ~ [d4,f4,a4]@2 d3@2 [d4,f4,a4]@2 d3@2 [d4,f4,a4]@2 d3@2, d3 ~@3", // Dm
  L: "[g4,b4,d5]@3 ~ [g4,b4,d5]@2 g3@2 [g4,b4,d5]@2 g3@2 [g4,b4,d5]@2 g3 ~, g3 ~@3", // G
  M: "[eb4,g4,bb4]@2 ~@2 [eb3,bb4]@2 ~@2 [f4,a4,c5]@2 ~@2 [f4,a4,c5] ~ f3 ~, eb3@4 [eb4,g4] ~@3 f3@4 ~@4", // Eb Eb5 F Eb
  N: "[eb4,g4,bb4] ~ [eb4,g4,bb4] eb3 [f4,a4,c5] f3 [f4,a4,c5] f3, eb3@4 ~@4 f3 ~@7", // Eb F
  O: "[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4] eb3 [f3,f4,a4,c5]@2 [f4,a4,c5] f3", // Eb F
  P: "[eb4,g4,bb4]@2 eb3@2 [eb4,g4,bb4]@2 eb3@2 [f4,a4,c5]@2 f3@2 [f4,a4,c5]@2 f3 ~, eb3 ~@7 f3 ~@7", // Eb F
  Q: "[f4,a4,c5]@3 ~ [f4,a4,c5]@2 f3@2 [f4,a4,c5]@2 f3@2 [f4,a4,c5]@2 f3@2, f3 ~@3", // F
  R: "[c4,eb4,g4]@3 ~@3 g2@2 [c4,eb4,g4]@2 g2 ~ [c4,eb4,g4]@2 g2@2, g2 [c4,eb4,g4] ~@2", // Cm
  S: "[f4,a4,c5]@3 ~ [f4,a4,c5]@2 ~@2 [f4,a4,c5]@2 f3@2 [f4,a4,c5]@2 [f2,f3]@2, f3@9 ~@7, f2@4 ~@2 f2@7 ~@3", // F
  T: "[c4,eb4,g4]@3 ~ [c4,eb4,g4]@2 ~@2 [c4,eb4,g4]@3 ~ [c4,eb4,g4]@2 g2@2, g2@4 ~@2 g2@7 ~@3", // Cm
  U: "[f2,f4,a4,c5]@2 [f4,a4,c5] ~ [f4,a4,c5] f3 [f4,a4,c5] [f2,f3], f3@5 ~@3, ~@6 f2@7 ~@3", // F
  V: "[f2,f4,a4,c5]@2 [f4,a4,c5] ~ [f4,a4,c5] f3 [f4,a4,c5] f3, f3@9 ~@7, ~@6 f2@7 ~@3", // F
  W: "[c4,eb4,g4] ~@3 [c4,g4] ~ c3@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~, c3@2 eb4 ~ f3@2 ~@2", // Cm C5 F
  X: "[c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3@2 [f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~, c3 ~@3", // Cm F
  Y: "[c3,c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3@2 [f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~", // Cm F
  Z: "[c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3 ~ [f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~, c3 ~@7", // Cm F
  AA: "[c3,c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3 ~ [f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~", // Cm F
  AB: "[ab3,d4,f4,a4] ~@3 [d4,f4,a4] ~ ab3 ~ [g3,d4,g4,b4] ~@3 [d4,g4,b4] ~ g3 ~", // Dm G
  AC: "[gb3,c4,eb4,g4] ~@3 [c4,eb4,g4] ~ gb3 ~ [c4,eb4,g4] ~ gb3 ~ [c4,eb4,g4] ~ gb3 ~", // Cm
  AD: "[f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~ [c4,f4,a4] ~ f3@2 [c4,f4,a4] ~ f3 ~", // F
  AE: "[c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~, c3@2 ~@2 f3 ~@3", // Cm F
  AF: "[c3,c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3@2 [f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ [f3,c4] ~", // Cm F F5
  AG: "[c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3@2 [f3,c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~, c3@4 ~@2 c4 ~@9", // Cm F
  AH: "[c4,eb4,g4] ~@3 [c4,eb4,g4] ~ c3@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~ f3 ~, c3 ~ f3 ~", // Cm F
  AI: "[d4,f4,a4] ~@3 [d4,f4,a4]@2 ab3 ~ [g3,b4]@2 ~@2 [g4,b4] ~ g3 ~, ab3@2 ~@6 [d4,g4] ~@3 d4@2 ~@2", // Dm G G5
})).s("gm_piano").gain(0.64)

// chords · tenor sax
const tenor_sax = note(`<
  A B C D E B C D ~@9 F G@3 H I ~@6 A B C D E B C D ~@4 J@4 K F G@3 H I ~@6 A B C D L@3 M N O P Q R N L M L O ~@2
>`.pickRestart({
  A: "c3@15 ~", B: "bb2@13 ~ bb2@2", C: "ab2@13 ~ ab2@2", D: "g2", E: "c3@13 ~ c3@2", F: "[bb2,c3,eb3,g3]",
  G: "[[f3,a3]@15 ~ [bb2,eb3,g3]@16 ~@7 bb2 ~@8, c3@47 ~, ~@32 [f3,a3]@15 ~]/3", H: "[f2,bb2,c3,eb3,g3]",
  I: "[c3,f3,a3]", J: "[eb3,g3] [f3,a3]", K: "[f3,a3]@15 ~", L: "[c2,eb2] [c2,f2]", M: "eb2 f2, c2@3 ~ c2@3 ~",
  N: "eb2 [c2,f2], c2@3 ~@5", O: "[ab2,c3] [g2,b2]", P: "[gb2,bb2]", Q: "[f2,a2]", R: "[c2,eb2] f2, ~@4 c2@3 ~",
})).s("gm_tenor_sax").gain(0.38)

// chords · tenor sax · soft notes
const tenor_sax_soft = note("<~@23 [eb3 f3] [d3 g3] ~@27 [eb3 f3] [d3 g3] ~@24>").s("gm_tenor_sax").gain(0.23)

// other · ocarina
const ocarina = note("<~@56 A B A B C@2 ~@16>".pickRestart({
  A: "f4@3 bb4@2 bb4@3", B: "d5 f5@4 d5@2 bb4", C: "[d5@5 bb4@2 c5@5 f4@3 ~]/2",
})).s("gm_ocarina").gain(0.8)

// bass · fretless bass · "Bass"
const bass_2 = note(`<
  A B C D A E F D G H I J K L@2 M N O P Q R S T ~@2 U V W X A B C D A E F D G H I J K L@2 M N O P Q R S T ~@2 U V ~@2 A
  B C D Y@5 Z AA AB AC Y AC Y@2 AD ~@2
>`.pickRestart({
  A: "c2@15 ~", B: "bb1@15 ~", C: "ab1@15 ~", D: "g1", E: "bb1", F: "ab1", G: "eb2@5 ~ eb2@2 f2@4 eb2@4",
  H: "d2@3 d2 g2@3 g2", I: "d2@7 ~@3 d2@3 ~ d2@2", J: "g2@5 ~ g2@3 ~ g2@3 ~ g2@2", K: "eb2@5 ~ eb2@2 f2@5 ~ f2@2",
  L: "eb2@4 ~@2 eb2@2 f2@5 ~ f2@2", M: "eb2@5 ~ eb2@2 f2@5 ~ f2 ~", N: "f2@4 ~@2 f2@3 ~ f2@3 ~ f2@2",
  O: "g1@7 ~ g1@7 ~", P: "f1@7 ~ f1@7 ~", Q: "g1@3 ~ g1@3 ~", R: "f1@7 ~ f1@6 ~@2", S: "g1 ~ g1 ~ g1 ~ g1 ~",
  T: "f1 ~ f1 ~ f1 ~ f1 ~", U: "c2@7 ~ c2@7 ~", V: "c2@7 ~ f2@8", W: "c2 bb1", X: "ab1 g1", Y: "c2 ~ c2 ~ c2 ~ c2 ~",
  Z: "ab1 ~ ab1 ~ g1 ~ g1 ~", AA: "gb1!4", AB: "f1@2 f1@2 f1 ~ f1!2", AC: "c2 ~ c2 ~ c2 ~ c2@2",
  AD: "ab1@2 ab1@2 g1@2 g1 ~",
})).s("gm_fretless_bass").gain(0.49)

// other · oboe
const oboe = note("<~@19 A B A B C D E@2 F@2 ~@19 A G H@2 C I ~@2 J K ~@6 L M@2 ~ N O@2 ~ P Q@2 ~@3>".pickRestart({
  A: "~@2 g3@2 c4@5 ~ g3@2 c4@4", B: "~@2 a3@2 a3@2 g3 ~ g3@2 f3 ~ f3@2 g3@2", C: "bb4@4 a4 g4 f4 g4",
  D: "~@2 eb3 ~@13, d4@15 ~", E: "[eb3@7 ~ f3@7 ~ eb3@8 f3@7 ~, c3]/2", F: "[~@2 f3@5 ~, [bb2,d3]@7 ~]/2",
  G: "~@2 a3 ~ a3 ~ g3 ~ g3@2 f3 ~ f3@2 g3@2", H: "[~@2 g3@2 c4@5 ~ g3 ~ c4@6 a3@2 a3@2 g3 ~ g3@2 f3 ~ f3@2 g3@2]/2",
  I: "d4@15 ~", J: "[f3,bb3,f4] [g3,c4,g4]@2 [bb3,d4,bb4]@2 [bb3,f4,bb4] [c4,g4,c5] [bb3,f4], ~@14 bb4 ~",
  K: "[d4,bb4,d5] [g4,c5,g5]@2 [f4,bb4,f5]@2 [d4,bb4,d5] [c4,g4,c5] [bb3,f4,bb4]", L: "g3@4 c4@3 ~ c4@4 d4@3 ~",
  M: "[f4 ~ f4@2 d4@3 ~ bb3 ~ c4@4 g3@18]/2", N: "f3@4 bb3@3 ~ bb3@3 ~ c4@4",
  O: "[d4 ~ d4 ~ bb3@3 ~ g3@2 c4@4 bb3@18]/2", P: "g3@4 c4@3 ~ c4@3 ~ d4@3 ~", Q: "[f4 ~ f4 ~ d4@4 bb3@2 c4@4 g3@18]/2",
})).s("gm_oboe").gain(0.68)

// other · flute
const flute = note("<~@21 A B C D E@2 F@2 ~@21 A G C D E@2 F@2 ~@20>".pickRestart({
  A: "~@2 a5@2 bb5@5 ~ g5@2 c6@4", B: "~@2 bb5@2 bb5@2 a5 ~ a5@2 g5 ~ g5@2 f5@2",
  C: "[bb4,bb5]@4 [a4,a5] [g4,g5] [f4,f5] [g4,g5]", D: "[d4,d5]@15 ~",
  E: "[[c4,eb4]@7 ~ [c4,f4]@7 [c4,eb4]@8 ~ [c4,f4]@7 ~]/2", F: "[[bb3,d4]@29 ~@3]/2",
  G: "~@2 bb5 ~ bb5@2 a5 ~ a5@2 g5 ~ g5@2 f5@2",
})).s("gm_flute").gain(0.8)

// other · timpani
const timpani = note(`<
  A B@4 C B D E ~@7 F G H I@4 ~@5 J K L M@2 N O P Q R ~@7 S T U V@3 W ~@5 J X O M O Y Z AA@6 AB AC AD AC AA AE ~@2
>`.pickRestart({
  A: "f2@4 ~@4 a2@2 ~ e2 d2@2 c2@2", B: "~@8 a2@3 e2 d2@2 c2@2", C: "~@8 a2@3 e2 d2@2 c2 ~",
  D: "~@8 a2@2 e2 ~ e2 ~ f2!2, ~@7 e2", E: "f2 ~@15", F: "~@4 a2@3 ~ b2@2 ~ g2 f2 ~ c2 ~",
  G: "f2 ~@3 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2", H: "f2 ~@3 f2@2 ~@2 f2@2 ~@2 f2 ~@3", I: "f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3",
  J: "~@6 g2!4 ~ g2 f2!2 d2 ~", K: "c2@3 ~@9 [a2,b2] ~ e2 d2", L: "c2 ~@11 a2 ~@2 [d2,e2]", M: "c2 ~@11 a2 ~ e2 d2",
  N: "c2@4 ~@8 a2@2 e2 d2", O: "c2@4 ~@8 a2 ~ e2 d2", P: "c2@4 ~@8 a2 ~@2 [d2,e2]", Q: "c2@4 ~@8 a2 ~ [e2,f2] [d2,f2]",
  R: "c2@3 ~@13, f2 ~@15", S: "~@4 a2@3 ~ [a2,b2]@2 ~ [e2,g2] d2@2 c2 ~, ~@12 f2 ~@3",
  T: "e2@3 ~ [e2,f2]@3 ~ [e2,f2]@3 ~ [e2,f2]@3 ~, f2 ~@15", // Fmaj7
  U: "e2@2 ~@2 [e2,f2]@3 ~ [e2,f2]@2 ~@2 e2@2 ~@2, f2 ~@11 f2 ~@3", // Fmaj7
  V: "e2 ~ e2 ~ e2 ~ e2 ~, f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3",
  W: "e2@2 ~@2 e2@3 ~ e2@3 ~ e2@2 ~@2, f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3", X: "~@12 a2@2 e2 d2",
  Y: "c2@4 e2@3 ~ e2@2 ~@2 e2@2 ~@2, e2 ~@7", Z: "e2@2 ~@2 e2@3 ~ e2@2 ~@2 e2@3 ~", AA: "e2 ~ e2 ~ e2 ~ e2 ~",
  AB: "e2@2 ~@2 e2@2 ~@2 e2@3 ~ e2@3 ~", AC: "e2@3 ~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2",
  AD: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@3 ~", AE: "e2 ~@7",
})).s("gm_timpani").gain(0.64)

// other · woodblock
const woodblock = note(`<
  ~@12 A B C@2 A B C@2 A B C ~@2 B C@2 A ~@12 A B C@2 A B C@2 A B C ~@2 B C ~@14 A B C@2 A B ~@2
>`.pickRestart({
  A: "~@2 a4 ~ a5@4 ~ a5 f5!2 d5!2 a4 ~", B: "~@2 a4 ~ a5@3 ~@2 a5 f5!2 d5!2 a4 ~",
  C: "~@2 a4 ~ a5 ~@4 a5 f5!2 d5!2 a4 ~",
})).s("gm_woodblock").gain(0.8)

// other · woodblock · soft notes
const woodblock_soft = note("<~@57 A B C D E F G F H G I G J ~@8>".pickRestart({
  A: "~@8 a5 ~ a5 [f5,a5] [f5,g5] ~ c6 ~", B: "~@2 d6 ~ g5 ~@6 d6 e5 ~ d6 ~", C: "~@2 d6 ~ e5 ~@3 e5 ~@2 e5 a5 ~ d6 ~",
  D: "~@4 d6 ~@6 d6 a5 ~ [e5,f5] ~", E: "~@2 e5 ~ d6 ~@3 e5 ~@2 d6 a5 ~ e5 ~", F: "~@2 d6 ~ e5 ~@3 d6 ~@2 d6 e5 ~@3",
  G: "~@2 e5 ~ d6 ~@3 d6 ~@2 d6 e5 ~@3", H: "~@3 e5 ~ d6 ~@2 d6 ~@2 d6 e5 ~@3", I: "~@2 e5 ~ d6 ~@3 e5 d6 ~ d6 e5 ~@3",
  J: "~@2 e5 ~ d6 ~ d6 ~ d6 ~@2 d6 e5 d6 e5 ~",
})).s("gm_woodblock").gain(0.48)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@59 [x!4]!8 x ~@2 [x!4]!5 x ~@2>").gain(0.48)
// … 19 more lines

More by The Beach Boys