Strudelify

Tequila little big band

D.J. Hendricks

KeyD majorTempo175 bpm
0:00/0:00
// Tequila little big band — D.J. Hendricks
// 175 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5828196; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/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 · alto sax · "Alto Sax 1"
const alto_sax = note(`<
  A@2 B ~@3 C D C D C D C D C D C D C D C D C D C D E F E F E F G H I J K J I J K L@2 ~@7 C D C D M N M N ~@8 C D C D M
  N M ~@16 O P Q R Q S Q R T U V U V U V W X Y Z AA AB Y AC AD X ~ I J AE@2 Q R AF AG
>`.pickRestart({
  A: "[~ c5@7]/2", B: "f4@3 ~@13", C: "~@4 f4@3 ~ d#4@8", D: "f4!2 ~ d#4@4 ~", E: "~ f4 g#4 a#4 c5 a#4 g#4 f4",
  F: "a4 f4 d#4 f4@2 ~@3", G: "d4@2 d4@2 d#4@2 d#4@2 e4@4 f4@3 ~", H: "e4@3 ~@13", I: "~@7 c4",
  J: "f4@2 f4 d#4 g4 d#4 ~ f4", K: "~ c4 ~@5 c4", L: "[~ f4 ~ d#4 g4 d#4 ~ g4@3 ~@6]/2", M: "~@2 f4 ~ d#4@4",
  N: "f4@2 f4 ~@3 d#4@8 ~@2", O: "~@3 c4@2 c#4@3 d4@3 e4@2 f#4@3", P: "g4@3 ~@11 d4@2", Q: "g4@2 g4 f4 a4 f4 ~ g4",
  R: "~ d4 ~@5 d4", S: "~@7 d4", T: "g4@4 g4@2 f4@2 ~@2 e4@2 g4 ~@3", U: "a#4", V: "g4@4 ~@6 e4@2 g4 ~@3",
  W: "a4@2 a4@2 a4@2 a4@2 a4@2 ~@2 a4@3 ~", X: "a#4@3 ~@13", Y: "~@5 d4 e4 g4", Z: "a#4@2 g4 e4 g4@2 ~@2",
  AA: "~@5 c#5 c5 a#4", AB: "g4@2 a#4 e4 g4@2 ~@2", AC: "a#4@2 g4 e4 g4 d4 e4 g4",
  AD: "a4@2 a4@2 a4@2 a4@2 a4@4 a4@3 ~", AE: "[~ c4 ~@5 f#4@8 d4]/2", AF: "g4@3 ~ g4@2 f4@2 a4@2 f4@3 ~@3",
  AG: "~@8 g4@3 ~@5",
})).s("gm_alto_sax").gain(0.4)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  A@2 B ~@3 C D C D C D C D C D C D C D C D C D C D E F E F E F G H ~@7 I@2 ~@7 C D C D J K J K ~@8 C D C D J K J ~@16 L
  M N O N O N O P ~@14 Q R@6 S T U V
>`.pickRestart({
  A: "[~ c3@7]/2", B: "f2@3 ~@13", C: "~@4 a3@3 ~ g3@8", D: "a3!2 ~ g3@4 ~", E: "a#2 d2 d#2 e2", F: "f2 d#2 d2 c3",
  G: "g2@4 a2@4 a#2@4 b2@3 ~", H: "c3@3 ~@13", I: "[~@5 c3 ~ f2@3 ~@6]/2", J: "~@2 c4 ~ a#3@4",
  K: "c4@2 c4 ~@3 a#3@8 ~@2", L: "~@3 c2@2 c#2@3 d2@3 e2@2 f#2@3", M: "g2@3 ~@3 g2@2 f2@4 ~@2 d2@2",
  N: "g2@2 ~ g2 f2 d2 f2 f#2", O: "g2@2 ~ g2 f2@2 ~ d2", P: "g2@2 ~ g2 f2 d2 c#3@2", Q: "a2@4 b2@4 c3@4 c#3@3 ~",
  R: "[d3@3 ~ d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@4]/6", S: "g2 ~ g2 f2 a2 f2 ~ g2",
  T: "~ d2 ~@5 d3", U: "g3@3 ~ g3@2 f3@2 a3@2 f3@3 ~@3", V: "~@8 g2@3 ~@5",
})).s("gm_baritone_sax").gain(0.48)

// other · trumpet · "Trumpet 1"
const trumpet = note(`<
  A@2 B ~@16 C B C B C B D E F E F E G H I J K J L J K J M@2 ~@39 N O N O N O ~ P Q R S P S R S T U V U V U V W X Y Z Y
  Z Y Z W AA L J K AB@2 S R AC AD
>`.pickRestart({
  A: "[~ g#5@7]/2", B: "f5@3 ~@13", C: "~@6 f5 ~@3 f5 ~@3 f5 ~", D: "~@10 d5@2 f5@3 ~", E: "g#5",
  F: "f5@4 ~@6 d5@2 f5@3 ~", G: "f5@4 ~@6 d5@2 f5 ~@3", H: "~@8 g5@2 ~@2 g5@3 ~", I: "c6@3 ~@11 c5@2",
  J: "f5@2 f5 d#5 g5 d#5 ~ f5", K: "~ c5 ~@5 c5", L: "~@7 c5", M: "[~ f5 ~ d#5 g5 d#5 ~ f5@3 ~@6]/2",
  N: "~@2 d5@2 d5!2 ~@2", O: "f5@3 ~@3 f5 ~@9", P: "~@7 d5", Q: "g5@3 ~ g5@2 f5@2 a5@2 f5@2 ~@2 g5@2", R: "~ d5 ~@5 d5",
  S: "g5@2 g5 f5 a5 f5 ~ g5", T: "~@10 e5@2 g5 ~@3", U: "a#5", V: "g5@4 ~@6 e5@2 g5 ~@3", W: "~@8 a5@4 a5@3 ~",
  X: "a#5@3 ~@7 d5@2 e5@2 g5@2", Y: "a#5@2 g5 e5 g5@2 ~@2", Z: "~@5 d5 e5 g5", AA: "a#5@3 ~@13",
  AB: "[f5@4 f5@2 d#5@2 g5@2 d#5@2 ~@2 f#5@4 c5 ~ c#5 ~ d5 ~ d#5 ~ e5 ~ f5 ~ f#5 ~]/2",
  AC: "g5@3 ~ g5@2 f5@2 a5@2 f5@3 ~@3", AD: "~@8 b5@3 ~@5",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "Trumpet 1" · soft notes
const trumpet_soft = note("<~@32 [g5!4 ~@4] ~@71 [a5!4 ~@4] ~@7 [a5!4 ~@4] ~@10>").s("gm_trumpet").gain(0.2)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
  A@2 B ~@16 C D C D C D E F G F G F H I J K L K M K L K N@2 ~@39 O P O P O P ~ Q R S T Q T S T U V W V W V X Y Z AA AB
  AA AB AA AB Y AC M K L AD@2 T S AE AF
>`.pickRestart({
  A: "[~ d5@7]/2", B: "d5@3 ~@13", C: "~@6 f5 ~@3 f5 ~@3 f5 ~", D: "f5@3 ~@13", E: "~@10 c5@2 c#5@3 ~", F: "f5",
  G: "d5@4 ~@6 c5@2 c#5@3 ~", H: "d5@4 ~@6 c5@2 d5 ~@3", I: "~@8 g5@4 g5@3 ~", J: "e5@3 ~@11 c5@2",
  K: "f5@2 f5 d#5 g5 d#5 ~ f5", L: "~ c5 ~@5 c5", M: "~@7 c5", N: "[~ f5 ~ d#5 g5 d#5 ~ d5@3 ~@6]/2",
  O: "~@2 c5@2 c5!2 ~@2", P: "d5@3 ~@3 d5 ~@9", Q: "~@7 d5", R: "g5@3 ~ g5@2 f5@2 a5@2 f5@2 ~@2 g5@2", S: "~ d5 ~@5 d5",
  T: "g5@2 g5 f5 a5 f5 ~ g5", U: "~@10 d5@2 d#5 ~@3", V: "g5", W: "e5@4 ~@6 d5@2 d#5 ~@3", X: "e5@4 ~@6 d5@2 e5 ~@3",
  Y: "~@8 a5@4 a5@3 ~", Z: "f#5@3 ~@7 d5@2 e5@2 g5@2", AA: "a#5@2 g5 e5 g5@2 ~@2", AB: "~@5 d5 e5 g5", AC: "f#5@3 ~@13",
  AD: "[f5@4 f5@2 d#5@2 g5@2 d#5@2 ~@2 d5@4 a#4 ~ b4 ~ c5 ~ c#5 ~ d5 ~ d#5 ~ e5 ~]/2",
  AE: "g5@3 ~ g5@2 f5@2 a5@2 f5@3 ~@3", AF: "~@8 g5@3 ~@5",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "Trumpet 2" · soft notes
const trumpet_soft_2 = note("<~@32 [g5!4 ~@4] ~@71 [a5!4 ~@4] ~@7 [a5!4 ~@4] ~@10>").s("gm_trumpet").gain(0.2)

// other · trombone · "Trombone 1"
const trombone = note(`<
  A@2 B ~@6 C D E D C D E D C D E D C D E D F G H G H G I J K ~@39 F G H G H G I J L G H G H G I ~@16 M N O P O P O Q R
  S ~@4 T U V W X
>`.pickRestart({
  A: "[~ d#4@7]/2", B: "f3@3 ~@13", C: "~@7 c3", D: "f3@2 f3 d#3 g3 d#3 ~ f3", E: "~ c3 ~@5 c3", F: "~@3 c#4", G: "d4",
  H: "c4@2 ~ c4 ~ c4 c#4@2", I: "c4@2 ~ c4 ~ c4 c4@2", J: "~@4 c4@4 c#4@4 d4@3 ~", K: "c4@3 ~@13", L: "c4@3 ~@9 c#4@4",
  M: "~@4 d4@4 d#4@4 e4@3 ~", N: "d4@3 ~@9 d#4@4", O: "e4", P: "d4 ~@2 d4 ~ d4 d#4@2", Q: "d4 ~@2 d4 ~ d4!2 ~",
  R: "~@12 e4@3 ~", S: "f4@3 ~@13", T: "~@4 c#4 ~ c4 ~ b3 ~ a#3 ~ a3 ~ g#3 ~", U: "b3@2 g3 f3 a3 f3 ~ g3",
  V: "~ d3 ~@5 d3", W: "g3@3 ~ g3@2 f3@2 a3@2 f3@3 ~@3", X: "~@8 d4@3 ~@5",
})).s("gm_trombone").gain(0.41)

// other · trombone · "Trombone 1" · soft notes
const trombone_soft = note("<~@32 A ~@47 A ~@7 B C D E F E F E F G H I H I H J K ~@7 L ~@5 M ~@4>".pickRestart({
  A: "b3 ~@3", B: "a#3@4 c4@4 c#4@4 d4@3 ~", C: "~@3 a#3@2 b3@3 c4@3 d4@2 e4@3", D: "g4@3 ~@3 b3@2 ~@8",
  E: "b3 ~@2 b3 ~ a3@2 a#3", F: "b3 ~@2 b3 ~@4", G: "b3 ~@2 b3 ~@2 d#4@2", H: "e4", I: "d4 ~@2 d4 ~ d4 d#4@2",
  J: "d4 ~@2 d4 ~ d4!2 ~", K: "c#4 ~@3", L: "c#4 d4 d#4 ~", M: "~@2 d4 ~@13",
})).s("gm_trombone").gain(0.2)

// chords · piano
const piano = note(`<
  A@2 B ~@7 C@7 D E D E D E D E D ~@8 F D F D F D F D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D
  ~@16 G H G H G H G H I J I J I J ~@2 K L K L K L M ~@5 N O P Q R
>`.pickRestart({
  A: "[~@4 [d#3,g3,a#3,d#4,g#4,d5]@27 ~]/2", B: "[f2,f3,f4,f5]@3 ~@13", C: "[c4,d#4,a4] [a#3,d4,g4]",
  D: "[c4,d#4,a4]@4 ~ [f5,f6]@3, ~ [a#3,d4,g4]", E: "[c4,d#4,a4] [a#3,d4,g4], [f5,f6] ~@3",
  F: "[c4,d#4,a4] [a#3,d4,g4], [f5,f6] ~@7", G: "[d4,f4,b4] [c4,e4,a4], [g5,g6] ~@3",
  H: "[d4,f4,b4]@4 ~ [g5,g6]@3, ~ [c4,e4,a4]", I: "[c4,g4,a#4,e5,a5]@2 ~ [c4,g4,a#4,e5,a5] ~@2 [c4,g4,a#4,e5,a5]@2",
  J: "[b3,f4,a4,d5,g5]@2 ~ [b3,f4,a4,d5,g5] ~@2 [b3,f4,a4,d5,g5]@2", // Bm7b5
  K: "[a#3,e4,a4,g5,g6]@2 ~ [a#3,e4,a4] [g5,g6]@2 [a#3,e4,a4,g5,g6]@2, ~ [g5,g6] ~@2", // Edim A G Edim G
  L: "[a3,d4,g4,g5,g6]@2 ~ [a3,d4,g4] [g5,g6]@2 [a3,d4,g4,g5,g6]@2, ~ [g5,g6] ~@2", M: "[a5,a6]!4, [a3,c#4,g4]@15 ~",
  N: "~@7 [d2,d3,d4,d5]", // D
  O: "[g2,g3]@2 [g2,g3,g4,g5] [f2,f3,f4,f5] [a2,a3,a4,a5] [f2,f3,f4,f5] ~ [g2,g3,g4,g5], [g4,g5] ~@7", // G F A F G
  P: "~ [d2,d3,d4,d5] ~@5 [d2,d3,d4,d5]", // D
  Q: "[g2,g3,g4,g5]@3 ~ [g2,g3,g4,g5]@2 [f2,f3,f4,f5]@2 [a2,a3,a4,a5]@2 [f2,f3,f4,f5]@3 ~@3", // G F A F
  R: "~@8 [g1,g2,g5,b5,d6,g6]@3 ~@5", // G
})).s("gm_piano").gain(0.2)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A@2 B C B C B C B C B C B C B C B D B C B C B C B E F G F G F H I J B C B C B C B K B C B C B C B K B C B C B C B K B
  C B C B C B K B C B C B C B E F G F G F H I L F G F G F H I M N O N O N O N P Q R Q R Q S T U Q R Q R Q S V W@6 X Y Z
  AA
>`.pickRestart({
  A: "[~@2 c3@10 ~ d2 d#2 e2]/2", B: "f2@2 ~ c3 c2@2 ~ c3", C: "f2@2 ~ c3 c2 d2 d#2 e2", D: "f2@2 ~ c3 c2@2 d#2 e2",
  E: "f2@2 ~ c3 c2@2 b1@2", F: "a#1 d2 d#2 e2", G: "f2 d#2 d2 c2", H: "f2@2 d#2@2 d2@2 c2 ~",
  I: "g2@4 a2@4 a#2@4 b2@3 ~", J: "c3@3 ~@13", K: "f2@2 ~ c3 g2@2 c2@2", L: "c3@3 ~@9 b1@4",
  M: "~@3 c2@2 c#2@3 d2@3 e2@2 f#2@3", N: "g2@2 ~ g2 f2@2 ~ d2", O: "g2@2 ~ g2 f2 d2 f2 f#2",
  P: "g2@2 ~ g2 f2 d2 c#2@2", Q: "c2 e2 f2 f#2", R: "g2 f2 e2 d2", S: "g2@2 f2@2 e2@2 d2 ~",
  T: "a1@4 b1@4 c2@4 c#2@3 ~", U: "d2@3 ~@9 c#2@4", V: "a2@4 b2@4 c3@4 c#3@3 ~",
  W: "[d3@3 ~ d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@8 d2@4]/6", X: "g2@2 g2 f2 a2 f2 ~ g2",
  Y: "~ d2 ~@5 d2", Z: "g2@3 ~ g2@2 f2@2 a2@2 f2@3 ~@3", AA: "~@8 g1@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.19)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@32 A ~@47 A ~@7 B C ~@14 A ~@7 B@6 A ~@4>".pickRestart({
  A: "x", B: "x ~@2 x!2 ~@3", C: "~ x",
})).gain(0.08)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@88 [~@4 x ~@5 x!3 ~ x ~] ~@23 [~@4 x ~@5 x!3 ~ x ~] [~ x ~ x]!5 ~@5>").gain(0.08)

// drums · low tom
const low_tom = s("lt").struct("<x ~@88 [~@8 x ~@2 x ~ x ~@2] ~@30 [~@3 x] ~ [~ x ~@2]>").gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<~@119 [~@7 x] [~ x ~@6] ~@2>").gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~@89 [~@8 x ~@2 x ~ x ~@2] ~@29 [~@4 x!2 ~@2]!2 [~@5 x ~@2] [x!3 ~@13]>").gain(0.18)

// drums · high tom
const high_tom = s("ht").struct("<~@121 [~@6 x ~ x ~@3 x!3 ~] ~>").gain(0.18)

// drums · crash
const crash = s("cr").struct("<A ~@5 B ~@19 B ~@6 C B@7 ~ B@7 ~ B@7 ~ B@7 ~ B@7 ~@17 B ~@14 D E@6 ~@10 D>".pickRestart({
  A: "~ x ~@2", B: "x", C: "~@3 x", D: "~ x", E: "~ x ~ x",
})).gain(0.1)

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

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@32 A ~@47 A ~@7 B ~@15 A ~@7 B C@5 A ~@4>".pickRestart({
  A: "x", B: "x!2 ~@2", C: "x!4",
})).gain(0.08)

// drums · cowbell
const cowbell = s("cb").struct("<~@2 [x ~ x ~ x!2 ~ x] [~ x ~ x!2 ~ x!2] [x ~ x ~ x!2 ~ x] [~ x ~ x!2 ~ x!2] ~@117>")
  .gain(0.12)

stack(
  alto_sax, baritone_sax, trumpet, trumpet_soft, trumpet_2, trumpet_soft_2, trombone, trombone_soft, piano, bass, kick,
  kick_soft, snare, snare_soft, low_tom, hihat, mid_tom, high_tom, crash, ride, ride_soft, cowbell
)