Strudelify

Proudest Monkey

Dave Matthews Band

KeyA♭ majorTempo64 bpm
0:00/0:00
// Proudest Monkey — Dave Matthews Band
// 64 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(64/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note("<A@3 B@54 C@2>".pickRestart({
  A: "[ab3@3 eb4@4 db4@2 ab4@2 ab3 ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3 ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3 ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3]/3",
  B: "[ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3 ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3 ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3 ab3@2 ab4 eb4@2 ab4@2 db4@2 ab4@2 ab3]/3",
  C: "[ab3@2 ab4 eb4@2 ab4@2 ~ db4@2 ab4@2 ~ ab3 ab3@11 ~@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.42)

// chords · electric guitar clean · "Guitar 2 (Electric)"
const electric_guitar_clean = note(`<
  ~@3 A B C D E F@4 G@2 H I@2 J K@3 L@3 M@2 N O@3 P Q R P Q R P Q R P Q R K@3 L@3 M@2 N O@3 P Q R S@2
>`.pickRestart({
  A: "~@3 [eb5,c6] ~ [eb5,ab5] ~ [ab4,f5] ~ [ab4,eb5]@3 ~@4", B: "~@11 [eb5,c6] ~ [eb5,ab5] ~ [ab4,f5]",
  C: "~ [ab4,eb5]@3 ~@12", D: "~@3 [eb5,c6]@8 ~@4 [eb5,c6]", E: "~ [eb5,ab5] ~ [ab4,f5]@2 [ab4,eb5]@2 [ab4,c5]@8 ~",
  F: "[~@3 eb4@4 ab4@4 [db4,f4]@4 [ab3,c4]@4 [c4,ab4]@4 [db4,f4]@4 ~ [c4,ab4]@3 [eb4,ab4]@4 [db4,f4]@4 ~ [ab3,c4]@3 [eb4,ab4]@4 [db4,f4]@4 ~ [c4,ab4]@3 [eb4,ab4]@4 [db4,f4]@4 ~]/4", // Db Ab Fm Db Fm Ab5 Db Ab …
  G: "[[ab3,c4]@3 [eb5,ab5]@4 ~@8 [eb5,c6]@2 [eb5,ab5] ~ [ab4,f5] ~ [ab4,eb5]@3 [ab4,eb5]@2 ~ [eb5,c6]@2 [eb5,ab5] ~ [ab4,f5]]/2", // Ab Ab5 Cm Ab5 Db Ab5 Cm Ab5 …
  H: "~ [ab4,eb5]@5 ~ [c5,ab5,c6]@2 [c5,f5] ~ [ab4,f5] ~ [ab4,eb5,ab5]@3", // Ab5 Fm F5 Db Ab5
  I: "[[ab4,eb5,ab5]@2 ~ [c5,ab5,c6]@4 bb4@4 ~@4 [c5,c6]@2 ab5 ~ [ab4,f5] ~ [ab4,eb5]@3 ~@8]/2", // Ab5 Fm C Db Ab5
  J: "~ [eb5,c6] ~ [c5,ab5] [ab4,f5] ~ [ab4,eb5] [c5,ab5]@4 ~@5", // Cm Fm Db Ab5 Fm
  K: "[ab3@3 ab4@2 eb4 ab4 [db4,f4]@2 [db4,f4]@2 [db4,f4] ab3@3 [ab4,c5]@2 [eb4,ab4]@2 [db4,f4]@4 ~ ab3@3 [eb4,ab4,c5]@2 [eb4,ab4,c5] ~ [db4,f4]@2 [c4,ab4]@3 ab3@3 [eb4,ab4,c5]@4 [db4,f4]@4 ~]/3", // Db Ab Ab5 Db Ab Db Fm Ab …
  L: "[ab3@2 eb4 [ab4,c5]@2 eb4@2 [db4,f4]@2 [c4,ab4]@3 ab3@2 eb4 [ab4,c5]@2 eb4@2 [db4,f4]@4 [f4,c5] [ab3,eb4,ab4,c5]@3 [ab3,eb4,ab4,c5]@2 [ab3,eb4,ab4]@2 [db4,f4]@4 ~ [ab4,c5]@3 [ab4,c5]@4 [db4,f4] [db4,f4]@2 [eb4,ab4]@2]/3", // Ab Db Fm Ab Db F5 Ab Ab5 …
  M: "[~@4 [eb5,c6] [c5,ab5] ~ [ab4,f5] ~ [ab4,eb5]@2 [ab4,eb5]@8 [db4,f4]@3 ~@6 [eb5,c6] [c5,ab5] ~ [ab4,f5]]/2", // Cm Fm Db Ab5 Db Cm Fm Db
  N: "~ [ab4,eb5]@2 [ab4,eb5]@8 [db4,f4]@3 ~@2", // Ab5 Db
  O: "[ab4!3 [ab3,ab4] [eb4,ab4,c5]@2 [db4,f4]@2 [db4,f4]@3 ~ [ab3,eb4]@3 [eb4,ab4]@4 [db4,f4]@4 ~ ab3@3 [eb4,ab4,c5]!2 eb4 ~ [db4,f4]@2 [c4,ab4]@3 ab3@2 [eb4,ab4] [eb4,ab4,c5]!2 [db4,f4]@6 ~]/3", // Ab Db Ab5 Db Ab Db Fm Ab5 …
  P: "~@4 [eb5,c6] [c5,ab5] ~ [ab4,f5] ~ [ab4,eb5]@3 ~@4", // Cm Fm Db Ab5
  Q: "[eb5,c6]!2 ~ [f5,db6] ~ [eb5,c6]@3 ~@4 [eb5,c6] [c5,ab5] ~ [ab4,f5]", // Cm Db Cm Fm Db
  R: "~ [ab4,eb5]@3 ~@4 [eb5,c6]!2 ~ [f5,db6] ~ [eb5,c6]@3", // Ab5 Cm Db Cm
  S: "[~@4 [eb5,c6]!2 ~@2 [f5,db6] ~ [eb5,c6]@4 ab3@11 ~@7]/2", // Cm Db Cm
})).s("gm_electric_guitar_clean").gain(0.44)

// other · acoustic guitar steel · "Guitar 3"
const acoustic_guitar_steel_2 = note("<~@30 A B C D E F G H I J K L ~@12 M N O P@2>".pickRestart({
  A: "~@4 ab4 eb4 c5@2 ab4 f4 eb5@2 bb4 eb4 bb4@2", B: "ab4 eb4 ab4@2 f4 c5 bb4 ab4@4 eb4 ~ eb4 bb4@2",
  C: "~ eb5@6 f5 [eb5,f5]@2 ~ db5 [c5,db5]@2 ~@2", D: "~@3 eb5 bb5 [eb5,ab5] ~ f5 db5 eb5 c5 [ab4,bb4] ~ f4 ~@2",
  E: "~ [f4,bb4] c5@2 ~ [f4,bb4] ab4 c5@2 c5 [ab4,bb4] f4 ab4!2 bb4@2", // Bb5 Absus2
  F: "ab4 c5 eb5 f5 ~ c5 eb5 c5 bb4 ab4 eb5 ab4 ab5 [ab4,eb5] f5 ~", // Ab5
  G: "~@2 eb5 [f5,g5] ab5 db6 eb6 ab5 eb5 ab5@2 ab5 ~ ab5 [f5,ab5] c5", // Fsus2 Fm
  H: "f5 ~ gb5 [eb5,f5] db5 c5 eb5 ab4 eb5 c5 ab4 eb5 ab4 eb4 eb5 c5", // Ebsus2
  I: "ab4 eb5 db4 c5@2 c5@2 c5@2 c5!2 [db5,eb5]!2 [c5,eb5] ~ [db5,eb5]", J: "c5@3 eb4 ab4 bb4 c5 db5 c5 bb4!3 ~@3 eb4",
  K: "ab4 bb4 c5 db5 c5 bb4!2 [eb5,ab5] ~@2 eb5 [c5,eb5] [db5,f5]@2 [c5,eb5] [f5,bb5]", // Ab5 Cm Db Cm Bb5
  L: "[eb5,ab5]@2 [ab5,c6]!2 [f5,bb5] [eb5,ab5] db5 [db5,f5] [c5,eb5] [ab4,c5]!3 [c5,eb5] [db5,f5] [eb5,ab5]@2", // Ab5 Ab Bb5 Ab5 Db Cm Ab Cm …
  M: "[ab4,c5,eb5]@2 ~@2 [eb5,c6] [c5,ab5] ~ [ab4,f5] ~ [ab4,eb5]@2 [ab4,eb5] ~@4", // Ab Cm Fm Db Ab5
  N: "[eb5,c6] [c5,ab5] ~ [ab4,f5]@4 ~ [ab4,c5,eb5]@2 ~@2 [eb5,c6] [c5,ab5] ~ [ab4,f5]", // Cm Fm Db Ab Cm Fm Db
  O: "~ [ab4,eb5]@2 [ab4,eb5] ~@4 [eb5,c6] [c5,ab5] ~ [ab4,f5]@4 ~", // Ab5 Cm Fm Db
  P: "[~@4 [eb5,c6] [c5,ab5] ~@2 [ab4,f5]@6 ab3@11 ~@7]/2", // Cm Fm Db
})).s("gm_acoustic_guitar_steel").gain(0.72)

// drums · clap
const clap = s("cp").struct("<~@3 [~@3 x ~@3 x ~@3 x ~@3 x]!54 [~@3 x ~@4 x ~@4 x ~@2] ~>").gain(0.72)

// drums · china
const china = s("cr").struct("<~@57 [~@14 x!2] [x!10 ~@6]>").gain(0.72)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@3 A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C D ~
>`.pickRestart({
  A: "x!2 ~ x", B: "x ~ x!2", C: "~ x!2 ~", D: "x!2 ~@2",
})).gain(1.89)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@3 A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C D ~
>`.pickRestart({
  A: "~ x", B: "~ x ~@2", C: "x ~@2 x", D: "~@9 x ~@6",
})).gain(1.89)

stack(acoustic_guitar_steel, electric_guitar_clean, acoustic_guitar_steel_2, clap, china, bongos, bongos_2)

More by Dave Matthews Band