Strudelify

The Dreaming Tree

Dave Matthews Band

KeyA majorTempo120 bpm
0:00/0:00
// The Dreaming Tree — Dave Matthews Band
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 6 "Dave Matthews" acoustic guitar steel (copy of ch 1 "Piano Aux" piano)
// note: Full arrangement: all 57 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · piano · "Piano Aux"
const piano = note("<A B@3 C@6 D@5 E@2 F@8 ~@32>".pickRestart({
  A: "~@27 e4@4 f#4, ~@11 a3@4 ~",
  B: "[~@91 f#4@5, ~@2 b3@7 ~@2 a3@22 a3@21 a3@21 ~ a3@20, ~@5 f#4@15 f#4@9 ~ f#4@12 f#4@6 f#4@15 ~ f#4@9 f#4@12 f#4@6 ~@5, ~@17 e4@22 e4@22 e4@21 e4@14, ~@24 b3@21 b3@22 b3@21 b3@8]/3",
  C: "[~@31 b3, ~ a3@21 a3@21 ~ a3@21 a3@22 a3@21 a3@22 a3@21 a3@22 a3@19, ~@7 e4@22 e4@21 e4@21 ~ e4@22 e4@21 e4@21 e4@21 ~ e4@22 e4@12, ~@10 f#4@9 f#4@13 f#4@6 f#4@15 f#4@9 f#4@13 f#4@6 f#4@16 f#4@8 f#4@13 f#4@6 f#4@15 f#4@8 ~ f#4@13 f#4@6 f#4@16 f#4@9, ~@13 b3@22 b3@22 b3@21 b3@22 b3@21 b3@21 b3@22 b3@22 ~@6]/6",
  D: "[~@141 f#4@4 ~@9 a3@6, f#4@12 f#4@6 f#4@15 f#4@9 ~ f#4@12 f#4@6 ~ f#4@15 f#4@9 f#4@13 f#4@6 f#4@15 f#4@9 f#4@12 ~@7 f#4@12, ~@3 a3@21 a3@22 a3@22 a3@21 a3@21 a3@22 a3@22 ~@6, ~@9 e4@21 e4@22 e4@21 ~ e4@21 e4@22 e4@21 e4@22, ~@15 b3@22 b3@21 b3@22 b3@21 b3@22 b3@22 b3@15]/5",
  E: "[~@29 a3@3, e4@21 e4@21 ~ e4@21, ~@3 f#4@9 f#4@12 f#4@7 f#4@15 f#4@9 f#4@9, ~@6 b3@22 b3@21 b3@15, ~@15 a3@22 a3@21 ~@6]/2",
  F: "[~@63 a3, e4@21 e4@22 e4@22 e4@21 e4@21 ~ e4@21 e4@21 e4@22 e4@21 ~ e4@21 e4@22 e4@17 ~@2, ~@4 f#4@6 f#4@14 f#4@9 ~ f#4@12 f#4@7 f#4@15 f#4@9 f#4@13 f#4@6 f#4@15 f#4@9 f#4@12 f#4@6 f#4@15 ~ f#4@9 f#4@12 f#4@6 ~ f#4@14 f#4@10 f#4@12 f#4@6 f#4@16 f#4@9 f#4@5 ~@2, ~@6 b3@21 ~ b3@21 b3@22 b3@21 ~ b3@21 b3@21 b3@22 b3@21 b3@22 b3@21 b3@22 b3@11 ~@2, ~@15 a3@21 ~ a3@22 a3@21 a3@22 a3@21 a3@21 a3@22 a3@21 a3@22 a3@21 a3@22 ~@4]/8",
})).s("gm_piano").gain(0.29)

// bass · electric bass finger · "Stefan Lessard"
const bass = note("<~@11 A@3 B@4 C@7 ~@32>".pickRestart({
  A: "[~@14 a1@43 g1@39]/3", B: "[~@4 f1@42 ~ d1@43 a1@38]/4", C: "[~@5 g1@42 d1@44 c2@21 a1@110 ~@2]/7",
})).s("gm_electric_bass_finger").gain(0.38)

// other · violin · "Boyd Tinsley"
const violin = note("<~@6 A@5 B@5 C@8 ~@33>".pickRestart({
  A: "[~@4 a5@81 ~@2 a4@73]/5", B: "[~@5 a4@3, ~@14 a5@95 ~@51, ~@57 e5@64 ~@39]/5",
  C: "[~@175 a4@64 ~@17, ~@13 a5@32 ~@12 e5@32 ~@39, ~@69 a4@64 ~@22 a5@64 ~@37]/8",
})).s("gm_violin").gain(0.08)

// other · synth strings 2 · "Boyd Aux"
const synth_strings_2 = note("<~@11 A@7 B@6 ~@33>".pickRestart({
  A: "[~@14 [a1,a2]@43 ~@4 g1@39 ~ f1@42 [d1,d2]@44 ~ a1@36, ~@57 g2@43 f2@43 ~@44 a2@37]/7", // A D
  B: "[~@5 [g1,g2]@43 [d1,d2]@43 [c2,c3]@21 [a1,a2]@64 ~@16]/6", // G D C A
})).s("gm_synth_strings_2").gain(0.22)

// bass · fretless bass
const bass_2 = note("<~@24 A B@2 C@4 D E F@2 G H I@2 J K L@2 M N O P@2 Q@2 R S T U V@2 W>".pickRestart({
  A: "~@7 d2",
  B: "[~@3 a3@2 d2@4 a2@3 e3@4 ~@2 f3@4 ~@2 a3@3 a2@4 e3@4 ~@2 f3@3 d2@6 a3@2 d2@3 ~ a2@3 e3@4 ~@2 f3@3]/2",
  C: "[~@3 a3@3 a2@3 e3@4 ~@2 f3@3 ~ d2@5 a3@3 ~ d2@3 a2@3 e3@4 ~@2 f3@4 ~@2 a3@3 a2@3 e3@4 ~@2 f3@3 ~ d2@5 a3@3 ~ d2@3 a2@3 e3@4 ~@2 f3@4 ~@2 a3@3 a2@3 e3@5 ~ f3@3 ~ d2@5 a3@3 d2@3 a2@3 e3@4 ~@2 f3@3]/4",
  D: "~@3 a3@3 a2@3 e3@4 ~@2 f3@3 ~ d2@5 a3@3 d2@3 a2@2", E: "~ e3@4 ~@2 f3@4 ~@2 a3@3 a2@3 e3@5 ~ f3@3 d2@4",
  F: "[~@2 a3@2 d2@4 a2@3 e3@4 ~@2 f3@5 ~ a3@3 a2@3 e3@5 ~ f3@3 d2@6 a3@3 d2@3 a2@3 e3@4 ~@2 f3@4 ~]/2",
  G: "~ a3@3 a2@3 ~ e3@5 ~ f3@3 d2@5 ~ a3@3 d2@3 a2@3", H: "e3@4 ~@2 f3@4 ~@2 a3@3 a2@2 ~ e3@5 ~ f3@3 ~ d2@4",
  I: "[~@2 a3@3 d2@3 a2@3 e3@4 ~@2 f3@5 ~ a3@3 a2@3 ~ e3@5 ~ f3@3 d2@5 ~ a3@2 d2@4 a2@3 e3@4 ~@2 f3@4]/2",
  J: "~@2 a3@3 a2@3 ~ e3@5 ~ f3@3 d2@6 a3@3 d2@3 a2@2", K: "~ e3@4 ~@2 f3@5 ~ a3@3 a2@3 e3@4 ~@2 f3@2 ~ d2@4",
  L: "[~@2 a3@3 d2@3 a2@3 e3@4 ~@2 f3@4 ~@2 a3@3 a2@3 ~ e3@5 ~ f3@3 d2@5 a3@3 d2@3 a2@3 e3@4 ~@2 f3@4 ~]/2",
  M: "~@2 a3@2 ~ a2@3 e3@3 ~@3 f3@3 d2@6 a3@3 d2@3 a2@3", N: "e3@3 ~@3 f3@4 ~@2 a3@3 a2@3 e3@4 ~ f3@3 ~ d2@5",
  O: "a3@3 d2@3 a2@3 e3@3 ~@3 f3@4 ~@2 a3@3 a2@3 e3@4 ~",
  P: "[~ f3@3 ~ d2@5 a3@3 d2@3 a2@3 e3@4 ~@2 f3@4 ~@2 a3@3 ~ a2@3 e3@4 ~@2 f3@3 d2@5 a3@3 d2@3 a2@3 e3@3]/2",
  Q: "[~@3 f3@5 ~ a3@3 ~ a2@3 e3@4 ~@2 f3@3 d2@6 a3@3 d2@2 a2@4 e3@3 ~@3 f3@5 ~ a3@3 a2@3 e3@4 ~@2]/2",
  R: "f3@3 d2@5 a3@3 d2@3 a2@3 e3@4 ~@3 f3@4 ~ a3@3", S: "~ a2@3 e3@4 ~@2 f3@3 d2@6 a3@2 ~ d2@3 a2@3 e3@4",
  T: "~@2 f3@4 ~@2 a3@2 ~ a2@3 ~ e3@5 ~ f3@3 d2@5 a3@2 ~", U: "d2@3 a2@3 e3@4 ~@2 f3@5 ~ a3@2 ~ a2@3 e3@4 ~@2 f3@2",
  V: "[~@2 d2@5 a3@2 ~ d2@3 a2@3 e3@3 ~@3 f3@4 ~@2 a3@3 a2@3 e3@4 ~@2 f3@3 d2@6 a3@2 d2@3 ~ a2@3 e3@4 ~@2]/2",
  W: "f3@4 ~ a3@3 ~ a2@3 e3@4 ~@2 f3@3 ~@11",
})).s("gm_fretless_bass").gain(0.27)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@24 A@6 B@6 ~@21>".pickRestart({
  A: "[~@29 f4@39 ~@4 d4@37 ~@5 [a3,e4]@38 ~@6 c4@34, ~@28 [a3,d4]@40 ~@3 a3@37 ~@49 a3@35]/6", // A5 D5
  B: "[~@9 f4@39 ~@3 d4@37 ~@4 [a3,e4]@40 ~@2 [a3,c4]@42 ~@16, ~@8 [a3,d4]@40 ~@2 a3@37 ~@105]/6", // A5 Am D5
})).s("gm_electric_guitar_jazz").gain(0.08)

// drums · kick
const kick = s("bd").struct("<~@11 A B ~ C D E ~ F G H I ~@35>".pickRestart({
  A: "~@10 x ~@2 x ~@18", B: "~@22 x ~@2 x ~@6", C: "~ x ~@6", D: "~@3 x!2 ~@3", E: "~@23 x ~@2 x ~@5",
  F: "~ x ~@3 x ~@26", G: "~@13 x ~@2 x ~@15", H: "~@24 x ~@2 x ~@4", I: "~ x",
})).gain(0.27)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@35
  [~@17 x ~@5 x ~@2 x ~@3 x ~]
  [~ x ~@5 x ~@10 x ~@5 x ~@3 x ~@3]
  [~@2 x ~@5 x ~@2 x ~@6 x ~@4 x ~@3 x ~@4]
  [~@7 x ~@5 x ~@5 x ~@2 x ~@5 x ~@3]
  [~@3 x ~@4 x ~@2 x ~@2 x ~@3 x ~@5 x ~@5 x ~]
  [~ x ~@6 x ~@7 x ~@3 x ~@4 x ~@6]
  ~@16
>`).gain(0.23)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@37 [~@5 x ~@26] [~ x] [~@5 x ~@21 x ~@4] ~@17>").gain(0.1)

// drums · open hat
const open_hat = s("oh").struct("<~@35 [~ x] ~ [~@15 x] [~ x ~@6] ~ [~@13 x ~@18] ~@16>").gain(0.27)

// drums · crash
const crash = s("cr").struct("<~@11 A B ~ C D E ~ F G B G ~@35>".pickRestart({
  A: "~@13 x ~@18", B: "~@13 x ~@2", C: "~ x ~@6", D: "~@15 x ~@16", E: "~@27 x ~@4", F: "~@5 x ~@26", G: "~ x",
})).gain(0.27)

// drums · high tom
const high_tom = s("ht").struct("<~@11 [~@5 x ~ x ~@24] ~@45>").gain(0.27)

// drums · ride
const ride = s("rd").struct("<A B C D E F G H I J K L M N O P Q R S T U V W X Y ~@5 Z ~@26>".pickRestart({
  A: "~@22 x ~@5 x ~@2 x", B: "~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~@3 x ~@4 x ~@2",
  C: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@6 x ~@5 x ~@2", D: "x ~@2 x ~@5 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@4",
  E: "~ x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@5 x ~@3", F: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~",
  G: "~ x ~@5 x ~@3 x ~@2 x ~@2 x ~@5 x ~@5 x ~@2", H: "x ~@2 x ~@6 x ~@2 x ~@4 x ~@3 x ~@2 x ~@2 x ~@3",
  I: "~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@5 x ~@2", J: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@3 x ~@2 x ~@5",
  K: "x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@5 x ~@5 x ~", L: "~ x ~@2 x ~@5 x ~@3 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2",
  M: "~@3 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@5 x", N: "~@2 x ~@2 x ~@2 x ~@6 x ~@5 x ~@2 x ~@2 x ~@4",
  O: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@5", P: "x ~@2 x ~@2 x ~@5 x ~@2 x ~@5 x ~@3 x ~@2 x ~@2 x",
  Q: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@5", R: "x ~@2 x ~@2 x ~@3 x ~@5 x ~@4 x ~@2 x ~@3 x ~@3",
  S: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@5 x ~@5", T: "x ~@2 x ~@2 x ~@6 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x",
  U: "~@5 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@4", V: "~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~@2 x ~@3",
  W: "~@2 x ~@3 x ~@5 x ~@2 x ~@2 x ~@2 x ~@6 x ~@3", X: "~@3 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~",
  Y: "~ x ~@5 x ~@5 x ~@2 x ~@2 x ~@5 x ~@3 x ~@2", Z: "x",
})).gain(0.23)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@2 A ~@22 B C D E F G H I J K L ~@21>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~@2 x ~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~@3 x",
  C: "~@5 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2", D: "~@3 x ~@2 x ~@2 x ~@5 x ~@3 x ~@5 x ~@2 x ~@2 x",
  E: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~", F: "~@4 x ~@2 x ~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~@3",
  G: "~@5 x ~@3 x ~@4 x ~@3 x ~@2 x ~@2 x ~@5 x ~", H: "~@3 x ~@3 x ~@2 x ~@5 x ~@2 x ~@5 x ~@2 x ~@2 x",
  I: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4 x ~@3 x ~@2", J: "~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~@2 x ~@2",
  K: "~@3 x ~@2 x ~@5 x ~@2 x ~@3 x ~@2 x ~@4 x ~@4", L: "~ x ~@2 x ~@3 x ~@5 x ~ x ~@15",
})).gain(0.13)

stack(
  piano, bass, violin, synth_strings_2, bass_2, electric_guitar_jazz, kick, hihat, hihat_soft, open_hat, crash,
  high_tom, ride, ride_soft
)

More by Dave Matthews Band