Strudelify
KeyD minorTempo120 bpm
0:00/0:00
// Two Step — Dave Matthews Band
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Guitar 1" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 2 "Guitar-2" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 3 "Guitar 3" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 4 "Guitar 4" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 5 "Guitar 5" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 6 "Guitar 6" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 8 "Bass" named as a bass, played on electric bass finger (its piano patch is not one); ch 9 "Bari Sax" named as a reed, played on baritone sax (its piano patch is not one); ch 11 "Violin" named as a string part, played on violin (its piano patch is not one)
// note: Full arrangement: all 164 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(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.

// other · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C A B A B D E F G D E F G A@3 B D E F G D E F G F G H I H I H I H
  I F G A@3 B A@3 B A@3 B D E F G D E F G F G H I H I H I H I F G H I H I H I H I F G A@3 B A@3 B D E F G D E F G F G H
  I H I H I H I F G H I H I H I H I F G A@3 B A@3 B A@3 B
>`.pickRestart({
  A: "d4 d5 d4 d5 d4 d5 d4 d5 d4 d5 d4 d5 d4 d5 d4 d5", B: "d4 d5 d4 d5 d4 d5 d4 d5 d4 d5 d4 d5 f4 d5 g4 d5",
  C: "d4 d5 d4 d5 d4 d5 d4 d5 d4 d5 c5!2 bb4 [bb4,c5] a4!2", D: "a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 f4 bb4 f4 bb4",
  E: "g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5 g4 c5", F: "f4 a4 f4 a4 f4 a4 f4 a4 bb4 d5 bb4 d5 bb4 d5 bb4 d5",
  G: "a4 c5 a4 c5 a4 c5 a4 c5 g4 bb4 g4 bb4 g4 bb4 g4 bb4", H: "c5!2 f4!2 a4!2 c5!2 e4!2 g4!2 c5!2 g4!2",
  I: "d5!2 g4!2 bb4!2 d5!2 [bb4,d5] [bb4,d5]@3 [a4,c5] ~@3", // Bb Am
})).s("gm_electric_guitar_clean").gain(0.42)

// chords · electric guitar clean · "Guitar-2"
const electric_guitar_clean_2 = note(`<
  A@9 B C D E B C D E B C D E B C D E A@15 F G H I F G H I J@4 F G H I F G H I H I K L K L K L K L H I A@12 F G H I F G
  H I H I K L K L K L K L H I K L K L K L K L H I A@8 F G H I F G H I H I K L K L K L K L H I K L K L K L K L H I A@12
>`.pickRestart({
  A: "~@2 [d4,d5] ~@3 [d4,d5] ~@3 [d4,d5] ~@3 [d4,d5] ~", // D
  B: "c4@2 [c4,c5] ~@3 [c4,c5] ~@3 [c4,c5] ~@3 [c4,c5] [bb3,b3,bb4,b4]", // C Bmaj7
  C: "[g3,a3,a4] ~ [g3,d4,g4] ~@3 [g3,d4,g4] ~@3 [g3,d4,g4] ~@3 [g3,d4,g4] ~", // Gsus2 G5
  D: "~@2 [g3,d4,g4] ~@3 [g3,d4,g4] ~@3 [g3,d4,g4] ~@3 [g3,d4,g4] [ab3,a3,ab4,a4]", // G5 Amaj7
  E: "[bb3,d4,bb4] ~ [d4,d5] ~@3 [d4,d5] ~@3 [d4,d5] ~@3 [d4,d5] ~", F: "d4@2 [d4,d5]!10 bb3@2 [bb3,d5]!2",
  G: "c4@2 [c4,c5]!14", H: "f3@2 [f3,c4,f4]!6 bb3@2 [bb3,d5]!6", I: "a3@2 [a3,c5]!6 g3@2 [g3,bb4]!6",
  J: "d4@2 [d4,f5]!14", K: "f3 [f3,c4,f4]!2 f3 c4 [c4,e5]!2 c4",
  L: "g3@3 ~ [g3,bb4]@2 g3@2 bb3@2 [bb3,d5]@2 a3@2 [d4,g4]@2", // Gm Bb G5
})).s("gm_electric_guitar_clean").gain(0.42)

// chords · electric guitar clean · "Guitar 3" · D5
const electric_guitar_clean_3 = note("<~@4 [d3@15 ~] [~@10 [d4,a4,d5,a5]!6] [d3@15 ~] ~@157>")
  .s("gm_electric_guitar_clean").gain(0.39)

// other · electric guitar clean · "Guitar 4"
const electric_guitar_clean_4 = note("<~@4 [~@10 a3 ~@5]!3 ~@157>").s("gm_electric_guitar_clean").gain(0.35)

// other · electric guitar clean · "Guitar 5"
const electric_guitar_clean_5 = note("<~@6 A B C ~@9 D E F G H I ~@2 J@2 K L M ~@133>".pickRestart({
  A: "g5 a5 e5 a5!3 e5 a5 e5 a5 e5 a5 g5 ~ e5 ~", B: "~@2 f5 [f5,a5] f5 a5 f5 a5 g5@2 e5@2 c5!2 f5 [a4,c5]",
  C: "d5 ~ f5 ~@13", D: "~@8 c6 d6 bb5 d6 c6 d6 g5@2", E: "~@6 a5 d6 g5 a5 f5 a5 e5 a5 a5@2",
  F: "~@8 c6 d6 bb5 d6 a5 d6 bb5 d6", G: "a5 d6 ~@10 c6 d6 bb5 d6", H: "a5 d6 ~ d6 d6@3 d6 c6 d6 ~ d6 d6@3 d6",
  I: "c6 d6 ~@14", J: "[~@10 a5@2 a5 d6 a5 d6@16 ~]/2", K: "~@10 a5@2 a5 d6 a5 d6", L: "d6@15 ~", M: "~@6 a5 d6 a5@7 ~",
})).s("gm_electric_guitar_clean").gain(0.35)

// other · electric guitar clean · "Guitar 6"
const electric_guitar_clean_6 = note("<~@7 A B@2 C@2 B@2 D@2 E F G H I J K L@2 M@2 N O P Q R S@2 ~@130>".pickRestart({
  A: "~@15 a4", B: "[d5@3 a4 e5@3 a4 f5@3 a4 e5@18 ~ g4]/2", C: "[d5@3 g4 e5@3 g4 f5@22 ~ a4]/2",
  D: "[d5@3 a4 e5@2 g4@2 f5@22 ~ a4]/2", E: "d5@3 a4 f5@3 a4 e5@3 a4 d5@3 a4", F: "e5@3 a4 f5@3 a4 e5@3 a4 d5@3 a4",
  G: "f5@3 a4 e5@3 ~ d5@7 ~", H: "g4 g5@2 g4 g5@3 ~ g5@3 ~@4 a4", I: "d5@3 a4 e5@3 a4 f5@3 a4 e5@3 a4",
  J: "d5@3 a4 e5@3 a4 e5@3 a4 d5@3 g4", K: "c5@3 g4 d5@3 g4 f5@3 g4 e5@3 g4",
  L: "[g5@3 g4 f5@3 g4 a5@3 ~ c6@2 a5@17 ~]/2", M: "[~@8 g5@2 ~@2 e5@2 g5 a5@17]/2",
  N: "~@6 a5 [g4,g5] g5 [g4,f5] e5@2 f5@2 g5@2", O: "a5@3 a5@12 ~", P: "~@6 a5 g5 f5@3 e5@2 d5@3",
  Q: "c5@2 ~@5 d4@3 a4@2 a4@2 f4@2", R: "f4 e4!2 d4!2 c4!2 a3", S: "[d4@31 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.35)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@24 A B A B A B A B C@2 ~@6 D E F G H E I J A ~@3 D E K L H M I E I N O P Q P Q P O R K N A S A B A B A B A B A B D E
  K L H M I E I N O P Q P Q P O R K N O P Q P Q P O R F J A R A R A R A R D E K L H M I E I N O P Q P Q P O R K N O P Q
  P Q P Q P K T A S A S A S A S A S A S
>`.pickRestart({
  A: "d2@15 ~", B: "g2@7 ~ a2@3 ~ f2@3 ~", C: "[d2@31 ~]/2", D: "d2@11 ~ bb1@3 ~", E: "c2@15 ~", F: "f2@7 ~ bb2@7 ~",
  G: "a2@7 ~ bb2@3 ~ g2@3 ~", H: "f2@11 ~ bb2@3 ~", I: "f2@7 ~ d2@7 ~", J: "a2@7 ~ g2@7 ~", K: "f1@7 ~ bb1@7 ~",
  L: "c2@7 ~ bb2@3 ~ g2@3 ~", M: "c3@15 ~", N: "c2@7 ~ bb1@3 ~ g1@3 ~", O: "f2@7 ~ c2@7 ~", P: "g1@7 ~ bb1@3 ~ a1@3 ~",
  Q: "f1@7 ~ c2@7 ~", R: "g2@7 ~ bb2@3 ~ a2@3 ~", S: "g1@7 ~ a1@3 ~ f1@3 ~", T: "a1@7 ~ bb1@3 ~ g1@3 ~",
})).s("gm_electric_bass_finger").gain(0.66)

// other · baritone sax · "Bari Sax"
const baritone_sax = note("<~@32 A@2 B ~@13 C D C D ~@112>".pickRestart({
  A: "[d4@29 bb3 a3 eb3]/2", B: "d3@15 ~", C: "ab3 g3@2 g3@3 f3@2 ab3 g3@2 g3@3 f3@2",
  D: "ab3 g3@2 g3@2 g3 f3@2 d3@3 ~@5",
})).s("gm_baritone_sax").gain(0.4)

// other · violin
const violin = note(`<
  ~@47 A B C D E ~@19 F G H I J K L M N O P Q R ~@20 S T U V W T W V X ~ Y Z@2 Y Z@2 Y AA ~@42
>`.pickRestart({
  A: "~@6 d5 f5", B: "g5@3 a5 bb5@2 c6@2 d6@2 c6@2 bb5@3 ~", C: "a5@3 g5@3 f5@2 g5@2 a5@2 bb5@2 a5@2",
  D: "g5@3 d5 f5@2 g5@2 a5@2 bb5@2 c6@2 d6@2", E: "d6 a6@3 g6@3 f6 e6@2 f6@2 e6@2 d6@2", F: "~@7 a5",
  G: "d5 d6!2 a6 d6!2 d5 c6", H: "c6 d5 c6!2 d5 bb5!2 d5", I: "bb5!2 d5 a5!2 d5 a5!2", J: "d5 bb5 a5 g5 a5 g5 f5 e5",
  K: "d5 d6!2 a5 d6 e6 f6 e6", L: "c6 d6!2 c6 d6 c6 bb5 a5", M: "a5 bb5 a5 g5 a5 g5 f5 e5",
  N: "f5 e5 d5 c5 d5 c5 bb4 a4", O: "a6@3 ~ g6@3 ~ a6@2 a6@2 g6@3 ~", P: "a6!2 g6 a6 bb6 a6 g6 bb6",
  Q: "a6@3 ~ g6@3 f6 e6@2 f6@2 e6@3 e6", R: "e6 f6 e6 d6 c6 d6!3, f6 ~@15",
  S: "~@2 a6@2 g6@2 f6 e6@2 d6 c6@2 bb5@2 a5@2", T: "bb5@2 bb5@2 bb5@2 a5 bb5@2 a5 g5@2 f5@2 d5@2",
  U: "f5!2 a6@2 g6@2 f6 e6@2 d6 c6@2 bb5@2 a5@2", V: "bb5@2 c6@2 d6@3 bb5@2 a5 g5@2 f5@2 d5@2",
  W: "f5@2 a6@2 g6@2 f6 e6@2 d6 c6@2 bb5@2 a5@2", X: "f5 ~@7", Y: "[a5,a6]@3 ~@3 [a5,a6]@4 ~@2 [a5,a6]@3 ~",
  Z: "[~@2 [a5,a6]@3 ~@3 [a5,a6]@3 ~@3 [a5,a6]@4 ~@2 [a5,a6]@3 ~@3 [a5,a6]@3 ~@3]/2", AA: "~ a6!2 g6 a6 g6 f6 e6",
})).s("gm_violin").gain(0.72)

stack(
  electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, electric_guitar_clean_4,
  electric_guitar_clean_5, electric_guitar_clean_6, bass, baritone_sax, violin
)

More by Dave Matthews Band