Strudelify

Don't Talk (Put Your Head on My Shoulder)

The Beach Boys

KeyD♭ majorTempo110 bpm
0:00/0:00
// Don't Talk (Put Your Head on My Shoulder) — The Beach Boys
// 110 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · "Bass"
const bass = note(`<
  A@2 B C D E F G H I J@2 K@2 L@2 M N L O P@2 Q@2 R S K F A@2 B C D E F G H I J@2 K@2 L@2 M N L O P@2 Q@2 R S K F T K U
  V W X L Y Z AA T W K@2 L@2 M N L O K@2 L@2 M N L O K@2 L@2 M N L O ~@2
>`.pickRestart({
  A: "eb2/2", B: "gb2", C: "f2", D: "b2", E: "bb2", F: "db2", G: "c2", H: "b1", I: "bb1", J: "[ab1@11 ab1@3 ab1@2]/2",
  K: "db2@3 db2", L: "ab1@3 ab1", M: "db2@5 ~ db2 ~", N: "db2@2 db2!2", O: "ab1@2 ab1!2", P: "e2@3 e2", Q: "b2@3 b2",
  R: "b2 gb2", S: "e2 d2", T: "db2@11 ~ db2@3 ~", U: "eb2@11 ~ eb2@4", V: "ab2@11 ~ ab2@4", W: "db2@11 ~ db2@4",
  X: "a1@3 a1", Y: "ab1@11 ~ ab1@3 ~", Z: "bb1@11 ~ bb1@4", AA: "b1@11 ~ b1@4",
})).s("gm_acoustic_bass").gain(0.8)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  A@3 B@2 C D E F G H@2 I@2 J@2 I@2 J@2 K@2 L@4 M@2 A@3 B@2 C D E F G H@2 I@2 J@2 I@2 J@2 K@2 L@4 M@2 ~@2 N O P Q R@2 S
  T U@4 J@2 I@2 J@2 I@2 J@2 I@2 J@2 I@2 J@2 I@2 J@2 ~@2
>`.pickRestart({
  A: "[[eb2,eb4,db5]@2 [gb2,eb4,db5], [gb4,bb4]]/3", B: "[[f2,a4] [b2,ab4], [f4,c5,eb5]]/2", C: "[bb2,f4,bb4,db5,ab5]",
  D: "[db3,eb4,gb4,bb4,db5]", E: "[c3,c4,eb4,g4,bb4]", F: "[b2,b3,d4,gb4,ab4]", G: "[bb2,bb3,db4,gb4]",
  H: "[ab2,ab3,b3,eb4,gb4]/2", I: "[db3,db4,f4,ab4,db5]/2", J: "[ab2,b3,eb4,ab4,b4]/2", K: "[e3,b3,e4,ab4,e5]/2",
  L: "[b2,b3,d4,gb4,a4]/4", M: "[gb2,bb3,db4,gb4]/2", N: "eb1", O: "gb1", P: "ab1", Q: "a1", R: "ab1/2", S: "bb1",
  T: "b1", U: "[~ [db3,db4,f4,ab4,db5], db2@35 ~@29]/4",
})).s("gm_drawbar_organ").gain(0.18)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@7 A B C@7 D@4 E@6 F@6 G@3 A B C@7 D@4 E@6 H@4 I@2 J K L M N O P@6 Q@16 R@6
>`.pickRestart({
  A: "[c5,eb5,g5,bb5]", B: "[b4,d5,gb5,ab5]",
  C: "[~@24 db6@15 ~ [ab4,b4,eb5]@16, [bb4,db5,gb5,bb5]@8 [b4,eb5,gb5]@16 ~@15 gb5@17, ~@7 ab4@17 ~@32, ~@23 [db5,f5,ab5]@17 ~@16]/7", // Abm Gb B Db
  D: "[~@31 [e5,ab5], [db5,f5,ab5,db6] [eb5,gb5], ~@15 [ab4,b4]@17]/4", // E Db Ebm Abm
  E: "[e6@32 ~@32 b3@7 gb3@8 ~@9 d3@8, b4, ~ [d5,a5]@2, ~@32 gb5@44 ~@3 e3@9 ~@8, ~@7 gb5]/6", // D5
  F: "[[db3,bb4,db5,gb5]@32 [eb4,db5]@31 eb5 [db5,eb5]@15 ~ [f4,a4,eb5]@15 ~, ~@32 [gb4,bb4]@47 c5@16 ~]/6", // Gb Eb7 Dbsus2 F7 Gb
  G: "[[f4,ab4,c5,eb5]@15 ~ ab5@15 ~ [eb4,bb4,db5]@16, ~@15 [f4,bb4,d5]@16 gb4@16 ~]/3", // Fm7 Eb7 Bb
  H: "[[db3,bb4,db5,gb5]@32 f4@4 gb4@11 f4@4 gb4@13]/4", // Gb
  I: "[f4@4 ~@7 gb6 ~@4 [gb4,ab5,c6,gb6]@16, eb5, [eb4,gb5,bb5] ~]/2", J: "[ab4,f5,ab5,db6]",
  K: "~@2 ab4 ~@13, [a4,gb5,b5,eb6,a6]", L: "[e4,e5,b5,e6,ab6]", M: "[ab4,f5,ab5,b5]", N: "[bb4,gb5,bb5,db6]",
  O: "[b4,b5,d6,gb6,ab6]", // Abm7b5
  P: "[e6@15 ~@49 [ab4,b4,eb5]@32, ab5@2 ~, [db5,db6,b6] [ab4,db5,f5,db6] ~, ~ f6@3 ~@2, ~@31 gb5@17]/6", // Abm Db7 Db
  Q: "[~@32 db6@15 ~ [ab4,b4,eb5]@16, [db5,f5,ab5,db6]@16 [eb5,gb5]@16 ~@15 gb5@17, ~@15 b4@17 ~@32, ~@15 ab4@16 [ab4,db5,f5]@16 ~@17]/8", // Abm Db Ebm Db
  R: "[~@31 [ab4,db5,f5]@16 ~, [db5,f5,ab5,db6] [eb5,gb5] ~, ~@15 b4@17 ~@16, ~@15 ab4@16 ~@17]/6", // Db Ebm
})).s("gm_string_ensemble_2").gain(0.48)

// other · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~@10 A B C@2 A D E@2 A D F@2 ~@4 G H I ~@9 A B C@2 A D E@2 A D F@2 ~@20 J D E@2 A D ~@2 A D E@2 A D ~@2 A D E@2 A D
  ~@2
>`.pickRestart({
  A: "~@2 gb4 ab4", B: "bb4@6 b4@4 bb4@3 ab4@3", C: "[eb5@2 db5@3 ~@3]/2", D: "bb4@6 b4@4 bb4@3 ab4@2 ~",
  E: "[db5@9 ~@7]/2", F: "[ab4@13 ~@3]/2", G: "~@3 gb4", H: "~ f4@5 gb4@6 ab4@4", I: "gb4@13 ~@3", J: "~@3 ab4",
})).s("gm_acoustic_guitar_steel").gain(0.48)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@7 A B@2 C@2 D E F@2 G E H I J@2 K@2 L@2 F@2 M@2 N@2 O@2 P Q R S@3 T@2 F@2 U@4 V@2 W@2 L@2 X@3 ~ Y@2 Z AA AB AC AD AE
  AF@2 AG@2 AH@2 AI@2 AJ@6 AK@2 AH@2 AI@2 AL@2 AK@2 AM@2 ~@2
>`.pickRestart({
  A: "gb4", B: "gb4@15 ~", C: "[gb4@31 ~]/2", D: "f4@3 f4", E: "f4@3 gb4@3 ab4@2", F: "gb4/2", G: "f4@11 ~ f4@4",
  H: "gb4@11 gb4@4 ~", I: "gb4@3 gb4", J: "[ab4@11 ab4@4 ab4@12 ~ ab4@4]/2", K: "a4@11 a4@4 ~", L: "b4/2",
  M: "[gb4@23 ~ gb4@3 ~ gb4@3 ~]/2", N: "[gb4@11 gb4@4 f4@17]/2", O: "[b3@15 bb3@16 ~]/2", P: "db4", Q: "c4", R: "b3",
  S: "[bb3@5 ab3@11]/3", T: "f4/2", U: "[f4 gb4]/4", V: "ab4/2", W: "a4/2", X: "[gb4@17 ~@7]/3",
  Y: "[~@11 gb4 ~@4 [gb2,ab3,c4,gb4]@16, eb3, [eb2,gb3,bb3] ~]/2", Z: "[ab2,f3,ab3,db4]",
  AA: "~@2 ab2 ~@13, [a2,gb3,b3,eb4,a4]", AB: "[e2,e3,b3,e4,ab4]", AC: "[ab2,f3,ab3,b3]", AD: "[bb2,gb3,bb3,db4]",
  AE: "[b2,b3,d4,gb4,ab4]", AF: "[e4@15 ~ f4@16, [db3,ab3,db4,b4]]/2", AG: "[[ab3,db4,f4,b4], db3 ~]/2",
  AH: "[[ab3,b3,eb4]@31 ~]/2", AI: "[ab3,db4,f4]/2",
  AJ: "[[b3,eb4]@32 ~@15 db4@16 ~ eb4@31 ~, ab3@95 ~, ~@33 f4@30 b3@32 ~]/6", AK: "[[ab3,db4,f4]@31 ~]/2",
  AL: "[ab3,b3,eb4]/2", AM: "[[ab3,b3]@27 ~@5, eb4@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.15)

// other · cello · "Violin"
const cello = note(`<
  ~@24 A B C@2 ~@10 D@2 E@2 F G H@2 I G J ~@3 K L M@2 ~@2 N@2 O P@2 Q@2 R S@3 ~ I T@3 I U V@2 I G W@2 I X@3 Y@4 Z ~@3
>`.pickRestart({
  A: "b5@7 ~ gb5@8, ~@7 gb4@9", B: "[e4,e5] [d4,d5]", C: "[db4,gb4,db5]/2",
  D: "[~@7 gb4@4 ~@5 bb4@6 b4@4 bb4@3 ab4@3, ~@6 ab4@3 ~@7]/2", E: "db5/2", F: "~@7 gb4@5 ab4@4",
  G: "bb4@6 b4@4 bb4@3 ab4@3", H: "[db5@23 ~@9]/2", I: "~@2 gb4 ab4", J: "ab4", K: "b4 gb4", L: "e4 d4", M: "db4/2",
  N: "[[eb3,db5]@15 [ab3,c5]@17]/2", O: "[db3,db5]", P: "[~ e5, b2@15 e3@17, ~ eb5@16 ~@15]/2",
  Q: "[~ f3@14 ~ bb2@16, f5@15 gb5@17]/2", R: "[b2,ab5]", S: "[ab5 ab5@2, db3]/3",
  T: "[bb4@5 b4@5 bb4@2 ab4@3 db5@24 ~@9]/3", U: "bb4@5 b4@5 bb4@3 ab4@3", V: "[db5@3 ~]/2", W: "[db5@7 ~]/2",
  X: "[bb4@5 b4@4 bb4@3 ab4@3 ~@24 gb4 ~@8, ~@15 db5@28 ~@5]/3",
  Y: "[~@8 gb4@4 ab4@3 bb4@6 b4@5 bb4@3 ab4@2 db5@28 ~@5]/4", Z: "~@7 gb4@4 ab4@4 ~",
})).s("gm_cello").gain(0.16)

// other · timpani
const timpani = note("<~@66 [~@8 db2@5 ~ db2!2] [db2!16] [db2 ~@15] ~@25>").s("gm_timpani").gain(0.59)

// drums · ride
const ride = s("rd").struct("<[x!2]!92 ~@2>").gain(0.4)

stack(bass, drawbar_organ, string_ensemble_2, acoustic_guitar_steel, string_ensemble_1, cello, timpani, ride)

More by The Beach Boys