Strudelify

Dance Dance Dance

The Beach Boys

KeyC minorTempo149 bpm
0:00/0:00
// Dance Dance Dance — The Beach Boys
// 149 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 79 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): MUTED GTR.
setcpm(149/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 · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@2 A B C B D E F@2 G@2 H@2 I J@2 K C L D M F@2 G@2 H@2 I J@2 K F@4 G@2 H@2 I J@2 K C B N O P@2 Q@2 R@2 J S@2 T P@2
  Q@2 R@2 J S@2 T P@2 Q@2 R@2 J S@2 T ~
>`.pickRestart({
  A: "f3@2 f3@2 e3 ~ e3@2 d3@2 g2@2 bb2@2 b2@2", B: "c3@2 c3@2 e3@2 d3@3 ~ bb2@2 b2@2 d3@2",
  C: "g3@2 g3@2 f3 ~ f3@2 d3@2 g2@2 bb2@2 b2@2", D: "f3 ~ f3@2 e3@2 e3@2 d3@2 g2@2 bb2@2 b2@2", E: "c3!2 e3 d3@3 ~@2",
  F: "[[g2,d3,g3,b3,d4,g4] [b3,d4,g4] [d4,g4] g4 [g3,g4] [g3,d4,g4] [d3,g3,d4,g4] [d3,g3,g4] g4!4 [b3,g4]!3 [d3,b3,d4,g4], ~ g3@3 ~@6 g3@6, ~ [g2,d3]@2 g2@3 [g2,b3]@2 [g2,g3,b3]@2 d3@5 ~, ~ b3@2 ~@2 [g2,b3] g2@2, ~@3 d4@2 ~@2 d4@2 d4@2 d4@2 d4@2 ~]/2", // G G5 G G5 Em G G5 G
  G: "[[e3,c4,e4]!2 [c4,e4]!2 e4!4 [e3,c4,e4]!2 e4!2 [c4,e4] [g3,c4,e4] [c4,e4]!2, g3 [e3,g3] ~ [e3,g3,c4] g3 e3@2 [e3,g3], ~@2 c3@5 ~ [c3,e3,g3,c4]@4 c3@20, ~@10 g3@3 ~@3, ~@5 c4 ~@2]/2", // C Em C Em C
  H: "[[b3,d4,g4]!2 [d3,b3,d4,g4] [b3,d4,g4]!3 [d3,g4]!2 [d4,g4]!3 [b3,d4,g4]!2 [g3,b3,d4,g4] [b3,d4,g4]!2, g2@12 [g2,b3]@6 [g2,b3]@5 ~ g2@7 ~, g3@4 g3@2 g3@7 ~ g3@2, d3 ~@2 d4 d3 d3@3]/2", // G G5 G
  I: "[b2,gb3]!2 [b2,gb3,b3]!6, b3 ~@3", J: "[c3,g3]!2 [c3,g3,c4]!6, c4 ~@3", K: "[d3,a3,d4]!6 [d3,a3,d4]@2",
  L: "c3@2 c3@2 eb3@2 d3@3 ~ bb2@2 b2@2 d3@2", M: "c3!2 eb3 d3@3 ~@2", N: "gb3 ~ gb3@2 f3@2 f3@2 eb3@2 ab2@2 b2@2 c3@2",
  O: "db3!2 f3 eb3@3 ~@2",
  P: "[[ab2,eb3,ab3,c4,eb4,ab4] [c4,eb4,ab4] [eb4,ab4] ab4 [ab3,ab4] [ab3,eb4,ab4] [eb3,ab3,eb4,ab4] [eb3,ab3,ab4] ab4!4 [c4,ab4]!3 [eb3,c4,eb4,ab4], ~ ab3@3 ~@6 ab3@6, ~ [ab2,eb3]@2 ab2@3 [ab2,c4]@2 [ab2,ab3,c4]@2 eb3@5 ~, ~ c4@2 ~@2 [ab2,c4] ab2@2, ~@3 eb4@2 ~@2 eb4@2 eb4@2 eb4@2 eb4@2 ~]/2", // Ab Ab5 Ab Ab5 Fm Ab Ab5 Ab
  Q: "[[f3,db4,f4]!2 [db4,f4]!2 f4!4 [f3,db4,f4]!2 f4!2 [db4,f4] [ab3,db4,f4] [db4,f4]!2, ab3 [f3,ab3] ~ [f3,ab3,db4] ab3 f3@2 [f3,ab3], ~@2 db3@5 ~ [db3,f3,ab3,db4]@4 db3@20, ~@10 ab3@3 ~@3, ~@5 db4 ~@2]/2", // Db Fm Db Fm Db
  R: "[[c4,eb4,ab4]!2 [eb3,c4,eb4,ab4] [c4,eb4,ab4]!3 [eb3,ab4]!2 [eb4,ab4]!3 [c4,eb4,ab4]!2 [ab3,c4,eb4,ab4] [c4,eb4,ab4]!2, ab2@12 [ab2,c4]@6 [ab2,c4]@5 ~ ab2@7 ~, ab3@4 ab3@2 ab3@7 ~ ab3@2, eb3 ~@2 eb4 eb3 eb3@3]/2", // Ab Ab5 Ab
  S: "[db3,ab3]!2 [db3,ab3,db4]!6, db4 ~@3", T: "[eb3,bb3,eb4]!6 [eb3,bb3,eb4]@2",
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.3)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@3 A B A C D E F G H I J K L M N ~ A C D I O G H I F K P Q R I E F@2 G S E F T U Q V ~ A W X Y Z AA AB AC AD AE AF AG
  AH Y Z AA AB AC AD AE AF AG AH Y Z AA AB AC AD AE AF AG AH ~
>`.pickRestart({
  A: "~@5 bb1 b1 d2", B: "g2 ~@7", C: "f2@2 ~@12 c2 ~", D: "c2 ~@2 d2 ~@4",
  E: "g1 ~ g1@2 b1@2 d2@2 g2 ~ g2@2 e2@2 d2@2", F: "g1@2 g1@2 b1@2 d2@2 g2 ~ g2@2 e2@2 d2@2",
  G: "c2@2 c2@2 e2@2 g2@2 c3 ~ c3@2 a2@2 g2@2", H: "c2@2 c2@2 e2@2 g2@2 c3 ~ c3@2 a2@2 g2 ~",
  I: "g1 ~ g1@2 b1@2 d2@2 g2@2 g2@2 e2@2 d2@2", J: "g1!2 b1 d2 g2!2 e2 d2",
  K: "b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2", L: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2@2 c2@2",
  M: "d2@2 d2@2 d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~", N: "d2@2 d2@2 d2 ~ d2 ~ d2@2 d2@2 d2@2 d2@2",
  O: "g1 ~ g1@2 b1@2 d2@2 g2 ~ g2@2 e2@2 d2 ~", P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  Q: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", R: "d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2",
  S: "c2 ~ c2@2 e2@2 g2@2 c3 ~ c3@2 a2@2 g2 ~", T: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1 ~ b1 ~",
  U: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", V: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2 ~", W: "gb2@2 ~@12 db2 ~",
  X: "db2 ~@2 eb2 ~@4", Y: "ab1 ~ ab1@2 c2@2 eb2@2 ab2 ~ ab2@2 f2@2 eb2@2",
  Z: "ab1@2 ab1@2 c2@2 eb2@2 ab2 ~ ab2@2 f2@2 eb2@2", AA: "db2@2 db2@2 f2@2 ab2@2 db3 ~ db3@2 bb2@2 ab2@2",
  AB: "db2@2 db2@2 f2@2 ab2@2 db3 ~ db3@2 bb2@2 ab2 ~", AC: "ab1 ~ ab1@2 c2@2 eb2@2 ab2@2 ab2@2 f2@2 eb2@2",
  AD: "ab1!2 c2 eb2 ab2!2 f2 eb2", AE: "c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  AF: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2@2 db2@2 db2@2", AG: "eb2@2 eb2@2 eb2@2 eb2 ~ eb2@2 eb2 ~ eb2@2 eb2 ~",
  AH: "eb2@2 eb2@2 eb2 ~ eb2 ~ eb2@2 eb2@2 eb2@2 eb2@2",
})).s("gm_acoustic_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@2 A B C D E F G@2 H I G J K L M N O P Q R G@2 H I G J K L M N S T U V W X Y Z AA AB AC@2 O AD AE AF AG@2 AH AI AG AJ
  AK AL AM AN AG@2 AH AI AG AJ AK AL AM AN AG@2 AH AI AG AJ AK AL AM AN ~
>`.pickRestart({
  A: "f4 ~ f4@2 e4@2 e4@2 d4@2 g3@2 bb3@2 b3@2", B: "c4 ~ c4@2 e4@2 d4@3 ~ bb3@2 b3@2 d4@2",
  C: "g4!2 f4!2 d4 g3 bb3 b3", D: "c4@2 c4@2 e4@2 d4@3 ~ bb3@2 b3@2 d4@2", E: "f4!2 e4!2 d4 g3 bb3 b3",
  F: "c4!2 e4 d4@2 ~@3", G: "g2 ~ g2@2 b2@2 d3@2 g3 ~ g3@2 f3@2 d3@2", H: "c3 ~ c3@2 e3@2 g3@2 c4 ~ c4@2 bb3@2 g3@2",
  I: "c3 ~ c3@2 e3@2 g3@2 c4 ~ c4@2 bb3@2 g3 ~", J: "g2@2 g2@2 b2@2 d3@2 g3 ~ g3@2 f3@2 d3@2",
  K: "[b2,gb3] b2!2 [gb3,b3]@2 [b2,gb3,b3]!2 [b2,gb3], b3@3 ~@5, ~ gb3@2 b2 ~@4", // B5
  L: "c3!2 [c3,g3] g3@2 [c3,g3] [c3,g3,c4]!2, c4@3 c4@3 ~@2, g3@2 ~ c3 ~@4", // C5
  M: "[c4,e4]@2 ~@2 [e3,c4]@2 [e3,g3,c4,e4]@3 c4 [e3,c4]@2 c4@2 [g3,c4]@2, g3@3 ~@2 g3@2 ~, e3@3 e4@3 ~@3 e4@3 ~@4, ~ [c4,e4] ~@4 [e3,e4]@2", // C C5 C E
  N: "[d4,gb4]@2 [d4,gb4]!2 [a3,d4,gb4]@2 [a3,d4,gb4]@2 [a3,d4,gb4]@2 [a3,d4,gb4]@2 [a3,gb4]@2 [a3,gb4]@2, d3@3 d3@5, a3 ~@2 d4", // D
  O: "g4 ~ g4@2 f4 ~ f4@2 d4@2 g3@2 bb3@2 b3@2", P: "c4 ~ c4@2 eb4@2 d4@4 bb3@2 b3@2 d4@2",
  Q: "f4 ~ f4@2 e4 ~ e4@2 d4@2 g3@2 bb3@2 b3@2", R: "c4!2 eb4 d4@4 ~", S: "[b3,d4]@2 d4@2 e4@4 e4@2 d4@2 bb3@3 ~",
  T: "d4 ~ d4@2 d4@2 e4@4 [d4,g4]@2 ~@4, b3@5 ~@11", U: "[b3,d4] e4@2 [b3,d4]!2 ~ g4 bb4, ~@11 d4@3 ~@2",
  V: "c5@2 c5 bb4 c5 bb4 g4 ~", W: "~ [c4,e4] ~ d4 e4@2 e4 ~",
  X: "e4@2 e4@2 ~@2 c4@2 d4 ~ d4@2 ~@2 bb3@2, c4@3 ~ bb3@3 ~, ~ e4 ~ d4",
  Y: "~@2 [f3,b3,d4,f4] ~@2 f4 ~@2 f4 ~@2 f4 ~@2 [d4,f4] ~, ~@4 [f3,b3,d4,f4]@2 ~ [f3,b3,d4,f4]@2 ~ [f3,b3,d4,f4]@2 ~ [f3,b3,d4,f4]@2 ~", // Bdim Dm Bdim
  Z: "~@2 [b3,d4,f4] ~@2 f4 ~@2 f4 ~@2 f4 ~ f4 f4@2, ~@4 [f3,b3,d4,f4]@2 ~ [f3,b3,d4,f4]@2 ~ [b3,d4,f4]@2 ~ [f3,b3,d4]@3", // Bdim
  AA: "~@2 eb4 ~ b4 ~ ab4@5 ~ ab4@2 ~ gb4", AB: "eb4@4 c5@2 a4@5 ~ a4@2 g4 ~",
  AC: "[a4@4 a4@4 a4@2 g4@2 e4@2 c5@5 ~ a4@4 a4 ~ g4@2 e4@2 ~@2]/2", AD: "c4 ~ c4@2 e4@2 d4@4 bb3@2 b3@2 d4@2",
  AE: "gb4 ~ gb4@2 f4 ~ f4@2 eb4@2 ab3@2 b3@2 c4@2", AF: "db4 ~ db4@2 f4@2 eb4@4 eb4@2 eb4@2 eb4@2",
  AG: "ab2 ~ ab2@2 c3@2 eb3@2 ab3 ~ ab3@2 gb3@2 eb3@2", AH: "db3 ~ db3@2 f3@2 ab3@2 db4 ~ db4@2 b3@2 ab3@2",
  AI: "db3 ~ db3@2 f3@2 ab3@2 db4 ~ db4@2 b3@2 ab3 ~", AJ: "ab2@2 ab2@2 c3@2 eb3@2 ab3 ~ ab3@2 gb3@2 eb3@2",
  AK: "[c3,g3] c3!2 [g3,c4]@2 [c3,g3,c4]!2 [c3,g3], c4@3 ~@5, ~ g3@2 c3 ~@4", // C5
  AL: "db3!2 [db3,ab3] ab3@2 [db3,ab3] [db3,ab3,db4]!2, db4@3 db4@3 ~@2, ab3@2 ~ db3 ~@4", // Db5
  AM: "[db4,f4]@2 ~@2 [f3,db4]@2 [f3,ab3,db4,f4]@3 db4 [f3,db4]@2 db4@2 [ab3,db4]@2, ab3@3 ~@2 ab3@2 ~, f3@3 f4@3 ~@3 f4@3 ~@4, ~ [db4,f4] ~@4 [f3,f4]@2", // Db Db5 Db F
  AN: "[eb4,g4]@2 [eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,g4]@2 [bb3,g4]@2, eb3@3 eb3@5, bb3 ~@2 eb4", // Eb
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.7)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@8 A B C D E F G H I J ~@4 A B C D E F G H I J A F A B C K E F G H I L ~@4 M N O P Q R I S T U M N O P Q R I S T U M
  N O P Q R I S T U ~
>`.pickRestart({
  A: "[g2,d3]!2 [g2,e3]!2 [g2,d3]!2 [g2,e3]!2", // G5 C G5 C
  B: "[g2,d3]@2 [g2,d3]@2 [g2,e3]@2 [g2,e3]@2 [g2,d3]@2 [g2,d3]@2 [g2,e3]@2 [g2,d3] ~", // G5 C G5 C G5
  C: "[c3,g3]!2 [c3,a3]!2 [c3,g3]!2 [c3,a3]!2", // C5 F C5 F
  D: "[c3,g3]@2 [c3,g3]@2 [c3,a3]@2 [c3,a3]@2 [c3,g3]@2 [c3,g3]@2 [c3,a3]@2 [c3,g3] ~", // C5 F C5 F C5
  E: "[g2,d3]@2 [g2,d3]@2 e3@2 e3 ~ [g2,d3]@2 [g2,d3]@2 e3@2 e3 ~, ~ g2 ~ g2", // G5
  F: "[g2,d3]!2 [g2,e3]!2 [g2,d3]!2 [g2,e3] [g2,d3]", // G5 C G5 C G5
  G: "[b2,gb3]@2 [b2,gb3]@2 [b2,ab3]@2 [b2,gb3]@2 [b2,gb3]@2 [b2,gb3]@2 [b2,ab3]@2 [b2,gb3] ~", // B5 E B5 E B5
  H: "[c3,g3]!2 [c3,a3] [c3,g3]!3 [c3,a3] [c3,g3]", // C5 F C5 F C5
  I: "[c3,g3]@2 [c3,g3]@2 [c3,a3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,a3]@2 [c3,g3] ~", // C5 F C5 F C5
  J: "[d3,a3]!2 [d3,b3] [d3,a3]!3 [d3,b3] [d3,a3]", K: "[c3,g3]!2 [c3,a3]!2 [c3,g3]!2 [c3,a3] [c3,g3]", L: "[d3,a3]!8",
  M: "[ab2,eb3]!2 [ab2,f3]!2 [ab2,eb3]!2 [ab2,f3]!2", // Ab5 Db Ab5 Db
  N: "[ab2,eb3]@2 [ab2,eb3]@2 [ab2,f3]@2 [ab2,f3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,f3]@2 [ab2,eb3] ~", // Ab5 Db Ab5 Db Ab5
  O: "[db3,ab3]!2 [db3,bb3]!2 [db3,ab3]!2 [db3,bb3]!2", // Db5 Gb Db5 Gb
  P: "[db3,ab3]@2 [db3,ab3]@2 [db3,bb3]@2 [db3,bb3]@2 [db3,ab3]@2 [db3,ab3]@2 [db3,bb3]@2 [db3,ab3] ~", // Db5 Gb Db5 Gb Db5
  Q: "[ab2,eb3]@2 [ab2,eb3]@2 f3@2 f3 ~ [ab2,eb3]@2 [ab2,eb3]@2 f3@2 f3 ~, ~ ab2 ~ ab2", // Ab5
  R: "[ab2,eb3]!2 [ab2,f3]!2 [ab2,eb3]!2 [ab2,f3] [ab2,eb3]", // Ab5 Db Ab5 Db Ab5
  S: "[db3,ab3]!2 [db3,bb3] [db3,ab3]!3 [db3,bb3] [db3,ab3]", // Db5 Gb Db5 Gb Db5
  T: "[db3,ab3]@2 [db3,ab3]@2 [db3,bb3]@2 [db3,ab3]@2 [db3,ab3]@2 [db3,ab3]@2 [db3,bb3]@2 [db3,ab3] ~", // Db5 Gb Db5 Gb Db5
  U: "[eb3,bb3]!2 [eb3,c4] [eb3,bb3]!3 [eb3,c4] [eb3,bb3]", // Eb5 Cm Eb5 Cm Eb5
})).s("gm_electric_guitar_muted").gain(0.44).pan(0.9)

// bass · electric guitar muted · "MUTED GTR"
const bass_2 = note("<[g2 ~ g2@2 f2 ~ f2@2 d2@2 g1@2 bb1@2 b1@2] [c2@2 c2@2 e2@2 d2@3 ~ bb1@2 b1@2 d2@2] ~@77>")
  .s("gm_electric_guitar_muted").gain(0.49)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note("<~@4 A B C D ~@10 A B C D ~@22 A B E F ~@31>".pickRestart({
  A: "g6 ~ g6@2 f6 ~ f6 ~ d6 ~ g5@2 bb5@2 b5 ~", B: "c6 ~ c6 ~ e6 ~ d6 ~@3 bb5@2 b5@2 d6@2",
  C: "f6 ~ f6@2 e6 ~ e6@2 d6 ~ g5@2 bb5@2 b5 ~", D: "c6 ~ c6 ~ e6 ~ d6 ~@9",
  E: "gb6 ~ gb6@2 f6 ~ f6@2 eb6 ~ ab5@2 b5@2 c6 ~", F: "db6 ~ db6 ~ f6 ~ eb6 ~@9",
})).s("gm_glockenspiel").gain(0.27).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@5 A B ~ C@10 ~ A B ~ C@22 B ~@3 C@30 ~>".pickRestart({
  A: "~@7 x", B: "x", C: "x!4",
})).gain(0.44)

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

// drums · hihat
const hihat = s("hh").struct("<~@8 A@6 ~@8 A@6 ~@4 A@11 B ~@4 A@6 ~@4 A@6 ~@4 A@6 ~@5>".pickRestart({
  A: "x!8", B: "x!5 ~@3",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@14 A@3 B ~@10 A@3 B ~@22 A@3 B ~@6 A@3 B ~@6 A@3 B ~>".pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x!4 ~ x ~ x",
})).gain(0.22)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@6 A B ~@6 C@3 D ~@2 A B ~@6 C@3 D ~@13 A E B ~@6 C@3 D ~@6 C@3 D ~@6 C@3 D ~
>`.pickRestart({
  A: "~@7 x", B: "x", C: "x!4", D: "x ~@3 x ~@8 x ~@2", E: "x ~@6 x",
})).gain(0.44)

// drums · tambourine
const tambourine = s("tb").struct("<A@8 B@6 ~@4 A@4 B@6 ~@4 C@12 A@4 B@9 C B@9 C B@9 C ~>".pickRestart({
  A: "x!4", B: "x!16", C: "x!8",
})).gain(0.33)

// drums · claves
const claves = s("clave:2").struct("<~@14 A B C ~@11 A B C ~@23 A B C ~@22>".pickRestart({
  A: "~@14 x!2", B: "x ~@13 x!2", C: "x",
})).gain(2.68)

stack(
  acoustic_guitar_steel, bass, electric_guitar_clean, electric_guitar_muted, bass_2, glockenspiel, kick, snare, hihat,
  low_tom, mid_tom, tambourine, claves
)

More by The Beach Boys