Strudelify

Pantala Naga Pampa

Dave Matthews Band

KeyD majorTempo120 bpm
0:00/0:00
// Pantala Naga Pampa — Dave Matthews Band
// 120 bpm, 8/16, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 8/16 at bar 3) are rendered on a constant 8/16 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Track02.
setcpm(120/2)

// 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 · "Track01"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K L M@2 N O P@2 Q@2 R@2 S@2 T@2 U V W X Y@2 Z AA AB@3 ~@3
>`.pickRestart({
  A: "[d3,f#3,f#4]@2 ~@10 [d3,f#3,f#4] ~ [d3,f#3,f#4] ~", B: "~@4 [d3,f#3,f#4] ~ [d3,f#3,f#4] ~@3 [d3,f#3,f#4] ~@5",
  C: "[d3,f#3,f#4] ~@11 [d3,f#3,f#4] ~ [d3,f#3,f#4] ~", D: "~@2 [d3,f#3,f#4] ~@5 [d3,f#3,f#4] ~@7",
  E: "[c#3,c#4]@3 ~ [a2,c#3] ~ [a2,c#3] ~ [a2,c#3]@3 ~ [c#3,c#4]@4", // C# A C#
  F: "~@2 [c#3,c#4] ~ [c#3,c#4]@3 ~ [c#3,c#4] ~ [c#3,c#4]@3 ~ [c#3,c#4] ~", // C#
  G: "[b2,b3]@2 [b2,b3]@2 ~@2 [b2,b3]@5 ~ [a#2,a#3] ~ [b2,b3]@2", // B A# B
  H: "~@2 [g#2,b2,b3]@2 ~@2 [g#2,b2,b3] ~ [g#2,b2,b3]@2 ~@2 [b2,b3]@3 ~", I: "[d3,f#3,f#4] ~@15",
  J: "~@4 [f#4,a4] ~ [f#4,a4] ~@3 [f#4,a4] ~@5", K: "[f#4,a4] ~ [f#4,a4] ~@9 [f#4,a4] ~ [f#4,a4] ~",
  L: "~@2 [f#4,a4] ~@5 [f#4,a4] ~ [f#4,a4] ~@5", // F#m
  M: "[[c#3,c#4]@3 ~ [c#3,c#4] ~ [c#3,f#3,c#4]@3 ~@3 [c#4,e4] ~ [f#3,c#4]@5 ~ [f#3,c#4] ~ [f#3,c#4] ~ [f#3,c#4] ~ [c#4,e4] ~ [f#3,c#4] ~ [f#3,c#4] ~]/2", // C# F#5 C#m F#5 C#m F#5
  N: "[f#3,c#4]@3 ~ g2 ~ [e3,a3]@2 [e3,b3]@4 [e3,b3]@2 ~@2, ~@6 b3 ~@9", // F#5 A5 E5
  O: "[g2,b2,e3,b3] ~ [g2,b2,e3,b3] ~ [g2,b2,e3,b3] ~@3 [g2,b2,e3,b3] ~ [g2,b2,e3,b3] ~@5", // Em
  P: "[~@6 [d4,g4]@4 ~@6 [g3,d4,g4]@5 ~ [g3,d4,g4]@6 [g3,d4,g4]@3 ~, e2@31 ~, ~@6 g3 ~@3 [g3,d4,g4]@5 ~@17, ~@12 e3@19 ~]/2", // G5
  Q: "[~@16 [e3,g3,d4,e4]@5 ~@7 a2@4, a2@11 ~ a2@15 ~@5, ~@6 [e3,g3,d4]@9 ~@7 [e3,g3,d4,e4]@9 ~]/2", // Em7
  R: "[~@16 [a3,d4,f#4]@5 ~ [a3,d4,f#4]@5 ~ [a3,d4,f#4]@3 ~, d3@11 ~ [f#2,d3]@19 ~, ~@6 [a3,d4,f#4]@9 ~@17]/2", // D
  S: "[~@6 [g3,b3,g4]@4 [g3,b3,g4]@2 ~@2 g4 ~ [g3,b3,f#4]@5 ~ [g3,b3,f#4]@5 ~ [g3,b3,f#4]@4, g2@11 ~ g2@20]/2", // G Gmaj7
  T: "[e2@5 ~ e2@5 ~@5 [g3,d4,g4]@5 ~ [g3,d4,g4]@4 [d4,g4]@2 [g3,d4,g4] ~ [g3,d4,g4]@2, [b2,e3]@31 ~, ~@3 e2@5, ~@16 a3 ~@15]/2", // G5 E5
  U: "~@12 e3@3 ~, a2@15 ~, e3@11 ~@5, ~@6 a3@9 ~",
  V: "g3@2 [a3,d4,g4]@3 ~ [a3,d4,g4]@2 g3@2 [a3,d4,g4]@3 ~ [a3,d4,f#4]@2", // Dsus4 D
  W: "~@3 f#2, d3, f#2@11 ~@5, ~@6 [d4,f#4]@9 ~", X: "g3@2 a3@2 [d4,f#4] ~ [d4,f#4]@2 g3@2 a3@2 [d3,a3,d4,f#4]@4",
  Y: "[~@6 [g3,b3,g4]@4 ~@6 [g3,b3,g4]@5 ~@7 g2@3 ~, g2@10 [g3,b3,g4]@5 ~@7 [g3,b3,g4]@9 ~, ~@12 g2@15 ~@5]/2", // G
  Z: "[b2,b3]@4 ~@2 [a2,c#3,c#4]@4 [a2,c#3,c#4] ~ [a2,c#3,c#4] ~ [a2,c#3,c#4]@2", // B A
  AA: "~@2 [g2,b2,b3] ~ [g2,b2,b3] ~ [g2,b2,b3] ~ [g2,b2,b3]@2 ~@6", AB: "[[d4,f#4,a4]@13 ~@3]/3",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.7)

// chords · acoustic guitar steel · "Track02"
const acoustic_guitar_steel_2 = note("<~ A B ~@2 C ~ D E F G H I ~ J K ~@18 L@5 ~@2>".pickRestart({
  A: "~@3 [d3,f#3] ~@4", B: "~@10 d#3 ~@5", C: "~@7 [c#3,c#4]", D: "[c#3,c#4] ~@3",
  E: "[b2,b3] ~@3 [b2,b3]@2 ~@2 [a2,d3]@7 ~", F: "~@3 [d3,f#3] ~@2 [d3,d4,f#4] ~", G: "~@2 d3 ~@2 d3 ~@2",
  H: "[d3,d4]@2 ~@10 d3@3 ~", I: "~ d3 ~@2 [d3,d4] ~@3", J: "~@2 [c#3,c#4] ~@13", K: "~@7 [g2,b2,b3]",
  L: "[~@15 [d4,f#4] ~@64, ~@13 d3@53 ~@14, ~@15 a3@52 ~@13]/5", // D
})).s("gm_acoustic_guitar_steel").gain(0.56).pan(0.3)

// bass · electric bass finger · "Track03"
const bass = note("<~ A@2 B@2 C@2 D E F@2 G@2 H@2 I J K L M@2 N O P Q R S T@2 U V W X Y@2 Z@4 ~@2>".pickRestart({
  A: "[d2@8 d3@4 g2@8 d2@6 f#2@5 ~]/2", B: "[d2@8 d3@4 g2@8 d2@6 f#2@2 d2@3 ~]/2", C: "[a2@12 c#3@12 e3@7 ~]/2",
  D: "g2@5 ~ g2@2", E: "~@2 b2@4 ~@2 a2@3 ~ f#2@4", F: "[~@8 d3@4 g2@8 d2@6 f#2@5 ~, d2@11 ~@21]/2",
  G: "[d2@7 ~ d3@4 d2@6 g2@6 f#2@4 e2@2 ~@2]/2", H: "[a2@3 c#3@4 d3]/2", I: "g2@3 b2", J: "a2@3 g2@3 f#2@2",
  K: "e2@5 b2@7 a2@4", L: "g2@5 f#2@7 d2@4", M: "[a2@20 b2@6 ~ c#3@3 ~@2]/2", N: "d3@3 d2", O: "d3@6 d2@5 a2@4 ~",
  P: "g2@15 ~", Q: "a2@5 g2@6 f#2@4 ~", R: "e2@5 a2@7 g2@4", S: "e2@3 d2@3 b2@2", T: "[a2@5 d3 a2 b2]/2",
  U: "f#2@3 d3@3 f#2@2", V: "d3@11 ~ a2@4", W: "g2@11 ~ g2@4", X: "a2@7 g2@8 ~", Y: "[a2@8 ~@2 a2@5 g2@8 ~ g2@8]/2",
  Z: "[d2@55 ~@9]/4",
})).s("gm_electric_bass_finger").gain(0.4)

// other · viola · "Track04"
const viola = note("<~@16 A B@4 C@4 D@3 E@7 F@6>".pickRestart({
  A: "~@7 d4 d4@7 a4", B: "[a4@58 b4@2 a4@2 ~ a4, ~@31 b4]/4", C: "[a4@59 b4 b4@3 a4]/4", D: "a4/3",
  E: "[~@10 b4@2 ~ b4 ~@58 d4@7 a4@32 ~, ~@6 a4 b4 ~@48, ~@15 a4@64 ~@33]/7", F: "[d4@85 ~@11]/6",
})).s("gm_viola").gain(0.23).pan(0.8)

// other · soprano sax · "Track05"
const soprano_sax = note("<~@16 A@4 B@8 C@7 D@5 ~>".pickRestart({
  A: "[~@7 d4@8 a4@49]/4", B: "[~@10 b4@2 a4@2 b4 a4@60 b4@4 a4@49]/8",
  C: "[~@10 b4@2 a4@2 ~ a4@56 d4@8 a4@33, ~@7 b4 ~@48]/7", D: "[d4@77 ~@3]/5",
})).s("gm_soprano_sax").gain(0.2).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  A B C B D E F G ~ B H B D E D B ~ I J K ~ I ~ K ~ I ~ K ~ I J K ~ L J L ~@5
>`.pickRestart({
  A: "~@5 x ~@2", B: "x ~@2 x ~@2 x ~", C: "~ x ~ x", D: "~ x ~ x ~@2 x ~", E: "x ~@2 x ~@4", F: "~ x ~@6",
  G: "x ~ x!2 ~@2 x!2", H: "~@2 x ~@2 x ~@2", I: "x ~@5 x!2", J: "~@7 x", K: "x ~ x ~@3 x!2", L: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<A@3 B A C A@2 D A B A@2 C A B E ~ F ~ F ~ F ~ G ~ F ~ H ~ F ~ I ~ F ~@6>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@4 x!4", D: "~ x ~@2 x ~ x!2", E: "~@2 x!2 ~ x!2 ~", F: "x", G: "x ~ x ~ x!3 ~",
  H: "x ~@6 x", I: "x ~@3 x!2 ~@2",
})).gain(0.8)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A ~@7 A ~ A ~@2 A ~@26>".pickRestart({
  A: "~@7 x",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!15 ~@25>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@13 [~ x ~@2] ~@27>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@6 [~ x ~@6] ~@7 [~ x ~@6] ~@26>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 [~ x] ~@17 [~@4 x!2 ~@2] ~@6>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~ A ~@6 B A ~@6 B A ~@3 A ~@2 B A ~@3 A ~@3 A B A ~@5>".pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.72)

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

// drums · ride
const ride = s("rd").struct("<~@8 A ~@6 A ~ B C@3 D C@2 E B C@3 D C@2 F D G ~@6>".pickRestart({
  A: "~ x ~ x ~@4", B: "~@2 x!2", C: "x!4", D: "~ x!3", E: "x!3 ~", F: "x!2 ~ x", G: "~ x ~@2",
})).gain(0.72)

// drums · cowbell
const cowbell = s("cb").struct("<~@2 A ~ B ~ A ~@3 A ~ A ~@28>".pickRestart({
  A: "~@7 x", B: "~ x ~@5 x",
})).gain(0.64)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~ [x!2]!2 [x ~@3 x ~@2 x] [~ x] [x!2]!11 ~@25>").gain(1.16)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, viola, soprano_sax, kick, snare, snare_soft, hihat, low_tom,
  open_hat, mid_tom, crash, high_tom, ride, cowbell, woodblocks
)

More by Dave Matthews Band