Strudelify

So Much to Say

Dave Matthews Band

KeyA minorTempo115 bpm
0:00/0:00
// So Much to Say — Dave Matthews Band
// 115 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 118 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): Guitar-4.
setcpm(115/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 · "Guitar1"
const acoustic_guitar_steel = note(`<
  ~@2 A@4 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 D E F E D E F
  E A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 D E F E D E F E A@2 G C A@2 B C A@2 B C A@2 B C A@2 H ~ I J
>`.pickRestart({
  A: "[g3,g#3] a3 ~@2 [c5,e5,a5]@2 [c5,c#5] ~ a4@2 e3@2 b3@2 [g#3,a3] [e3,f3]", // G#maj7 Am C#maj7 Amaj7 Fmaj7
  B: "[g3,g#3] a3 ~@2 [c5,e5,a5]@2 [c5,c#5] ~ a4@2 f3@2 c4@2 g4@2", // G#maj7 Am C#maj7
  C: "[c4,c#4] d4 ~@2 [a4,f5]@2 ~@2 g3@2 d4@2 a4@2 d6@2", // C#maj7 Dm
  D: "[a3,c#4,e4,a4,e5,a5] ~@2 [a3,c#4,e4,a4,e5,a5] ~@2 [a3,c#4,e4,a4,e5,a5] ~ [a3,c#4,e4,a4,e5,a5] ~@2 [a3,c#4,e4,a4,e5,a5] ~@2 [a3,c#4,e4,a4,e5,a5] ~", // A
  E: "[d4,f#4,a4,d5,f#5,a5] ~@2 [d4,f#4,a4,d5,f#5,a5] ~@2 [d4,f#4,a4,d5,f#5,a5] ~ [d4,f#4,a4,d5,f#5,a5] ~@2 [d4,f#4,a4,d5,f#5,a5] [d4,f#4,a4,d5,f#5,a5]@2 [d4,f#4,a4,d5,f#5,a5]@2", // D
  F: "[g3,b3,d4,g4,d5,g5] ~@2 [g3,b3,d4,g4,d5,g5] ~@2 [g3,b3,d4,g4,d5,g5] ~ [g3,b3,d4,g4,d5,g5] ~@2 [g3,b3,d4,g4,d5,g5] ~@2 [g3,b3,d4,g4,d5,g5] ~", // G
  G: "g#3 a3 ~@2 [c#5,e5,a5]@2 c#5 ~ a4@2 f3@2 c4@2 g4@2", H: "[a3,a4] ~@7", I: "~@7 e5", J: "a3@3 ~@13",
})).s("gm_acoustic_guitar_steel").gain(0.72)

// chords · electric guitar clean · "Guitar 2"
const electric_guitar_clean = note(`<
  ~@22 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C D E F G H I J K B C A@2 B C A@2 B C A@2 B C A@2 B
  C A@2 B C A@2 B C D E F G H I J K B C L@2 B C A@2 B C A@2 B C A@2 B C M ~ N O
>`.pickRestart({
  A: "[~@4 [g4,c5]@2 [g4,c#5]@2 a4 ~ g4 ~ a4@6 ~@2 [g4,c5]@2 [a4,d5]@2 ~@2 [a4,c5]@2 [a4,c5]@2 ~@2]/2", // C5 Gdim C5 D5 Am
  B: "[g4,c5]@2 [g4,c5]@2 [g4,c5]@2 [g4,c#5]@2 a4 ~ g4 ~ a4@3 ~", // C5 Gdim
  C: "a4@2 ~@2 [g4,c5]@2 [g4,c#5]@2 ~@2 a4@2 a4 g#4 g4 f#4", D: "[a4,e5]@5 ~ a5@9 ~", E: "[a4,d5]@5 ~ a5@9 ~",
  F: "[g4,d5]@5 ~ a5@9 ~", G: "[a4,d5]@5 ~ a5@4 d5@5 ~", H: "[a4,d5] e5@5 a5@4 a5@5 ~", I: "[a4,e5] f#5@5 a5@9 ~",
  J: "[g4,d5]@5 ~ b5@4 d5@2 b5@3 ~", K: "[a4,e5]@3 ~ d5@2 a5@9 ~",
  L: "[~@4 [g4,c#5]@2 [g4,c#5]@2 a4 ~ g4 ~ a4@6 ~@2 [g4,c5]@2 [a4,d5]@2 ~@2 [a4,c5]@2 [a4,c5]@2 ~@2]/2", // Gdim C5 D5 Am
  M: "[a3,a4] ~@7", N: "~@7 e5", O: "a3@3 ~@13",
})).s("gm_electric_guitar_clean").gain(0.72)

// other · violin
const violin = note(`<
  ~@32 A B ~@2 A B ~@10 A B ~@2 A B ~@8 A B ~@10 A B ~@2 A B ~@2 A B ~@2 A B ~@8 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@3
  C
>`.pickRestart({
  A: "~@2 [a4,a5] ~@5", B: "a5 g5 e5 d5 c5@2 a4@2 ~@8", C: "[a4,a5] ~@7",
})).s("gm_violin").gain(0.72)

// other · baritone sax · "Sax"
const baritone_sax = note(`<
  ~@32 A B ~@2 A B ~@10 A B ~@2 A B ~@8 A B ~@10 A B ~@2 A B ~@2 A B ~@2 A B ~@8 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@3
  C
>`.pickRestart({
  A: "~@2 [a2,a3] ~@5", B: "a3 g3 e3 d3 c3@2 a2@2 ~@8", C: "[a2,a3] ~@7",
})).s("gm_baritone_sax").gain(0.72)

// chords · distortion guitar · "Guitar-4"
const distortion_guitar = note("<~@32 A B ~@2 A B ~@60 C ~@7 D E@4 F G@2 ~@4>".pickRestart({
  A: "~@2 [a4,a5] ~@5", B: "~ g5 e5 d5 ~@2 a4@2 ~@8", C: "~@2 c5 ~@5", D: "[f#4,g4] a4@9 ~@2 d5@2 f#5@2, ~ g#4 ~@14",
  E: "[e5@2 f5@4 e5 b4 b4@2 g4@2 g#4 ~ e5@4 d5@3 ~ c5 ~@3 a3@2 f#4@2 a4@5 ~@5 a4@3 ~ [d4,e4] ~ a4@4 a4@2 a3@2 ~@4 e5@2 ~@2 f5@2]/4", // Dsus2
  F: "e5@2 b4@2 e5@2 c5@2 b4@2 b4@3 ~ [g3,g#3] a3", // G#maj7
  G: "[g#3 a3 a3@3 ~ a4@2 [b4,c5,e5] [c#5,d5] [d#5,c#6]@2 e6@2 c#6@4 e6@2 c#6@3 ~ e6@2 c#6@3 ~ a3@2]/2", // Cmaj7 Dmaj7 D#7
})).s("gm_distortion_guitar").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~@23 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@6 x ~@2 x!3 ~@2 x ~",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct(`<
  ~@22 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@6 x ~@2 x!3 ~@2 x ~",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@21 [~@5 x!3] [~ x ~ x]!96>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@22 [x ~@2 x!6 ~ x!2 ~ x!3]!96>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@22 [x ~ x ~@6 x ~@2 x ~@3]!96>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@22 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@21 [~@7 x] [x!5 ~ x!5 ~ x!4]!96>").gain(0.72)

// drums · cowbell
const cowbell = s("cb").struct("<~@22 [x ~ x ~ x ~@2 x ~ x!4 ~ x ~]!96>").gain(0.72)

stack(
  acoustic_guitar_steel, electric_guitar_clean, violin, baritone_sax, distortion_guitar, kick, rim, snare, hihat,
  open_hat, crash, tambourine, cowbell
)

More by Dave Matthews Band