Strudelify
Tequila cover art

Tequila

Tequila

Champs

KeyE majorTempo91 bpm
0:00/0:00
// Tequila — Champs
// 91 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "STEEL GTR" acoustic guitar steel (copy of ch 3 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(91/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note("<~@2 A@14 B C D E A@12 B C D E A@9 F ~@2>".pickRestart({
  A: "e1@2 b1 b0 e1@2 b1 b0", B: "e2 d#2 d2 c#2 b1 a1 e1 g#1", C: "e2 d#2 d2 c#2 b1 a1 g#1 e1",
  D: "e2 d#2 d2 c#2 b1 a1 e1 c#1", E: "f#1 g#1 f#1 g#1 b1@4", F: "e1@4 b1@2 b0@2 e1@4 b1@2 b0 ~",
})).s("gm_acoustic_bass").gain(0.39)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B A B A B A B A B A B A B A B C@3 D A B A B A B A B A B A B C@3 D A B A B A B A B A B A E
>`.pickRestart({
  A: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [a3,d4,f#4]!3 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] [a3,d4,f#4]!3 ~", // E D E D
  B: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [a3,d4,f#4]!3 [b3,e4,g#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4]!4 ~", // E D E D
  C: "[e3,g3,c#4]!2 ~ [e3,g3,c#4] ~ [e3,g3,c#4] ~ [e3,g3,c#4] [e3,b3,e4]!2 ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4]", // C#dim E5
  D: "[c#3,f#3,a#3]!2 ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] ~ [c#3,f#3,a#3] [d#3,f#3,b3] ~@7", // F# B
  E: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [a3,d4,f#4] ~ [b3,e4,g#4] ~@9", // E D E
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.2)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes · D
const acoustic_guitar_steel_2 = note("<[~@15 [a3,d4,f#4]]!16 ~@4 [~@15 [a3,d4,f#4]]!12 ~@4 [~@15 [a3,d4,f#4]]!11 ~>")
  .s("gm_acoustic_guitar_steel").gain(0.11).pan(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@6 A B A B A B A B A B ~@4 A B A B A B A B A B A B ~@4 A B A C A B D ~@5
>`.pickRestart({
  A: "e3 ~ b3 b2 d3 e3 ~ e3 f#3!2 ~ f#3 e3 d3 b2 d4", B: "e4 ~@3 b3 ~ c#3 d3 ~ e3 ~ f#3 e3 d3 b2 ~",
  C: "e4 ~@3 b3 ~ c#3 d3 ~ e3 ~ f#3 e3 d3 b2 d3", D: "e3 ~@15",
})).s("gm_electric_guitar_muted").gain(0.43)

// other · baritone sax · "BARITONSAX" · E A E
const baritone_sax = note(`<
  ~@19
  [~@10 b1 ~ e2 b1 ~@2]
  ~@15
  [~@10 b1 ~ e2 b1 ~@2]
  ~@11
  [~@10 [e3,e4] [a3,a4] [e3,e4] ~@3]
>`).s("gm_baritone_sax").gain(0.41)

// other · baritone sax · "BARITONSAX"
const baritone_sax_2 = note("<~@11 A B C D E F@2 G H ~@11 E F@2 G H ~@12>".pickRestart({
  A: "~@15 b3", B: "e4 ~ e4 d4 f#4 d4 ~ e4 ~ b3 ~@5 b3", C: "e4 ~ e4 d4 f#4 d4 ~ e4 ~@7 b3",
  D: "e4 ~ e4 d4 f#4 d4 ~ e4 ~ b3 ~@6", E: "~@13 [e2,f2] [f#2,g2] [g#2,a2]", F: "[a#2,e3]@7 [g#2,e3] ~@8",
  G: "a#2@7 g#2 [f2,f#2,g2] e2 ~@6", H: "~@8 b2 ~@7",
})).s("gm_baritone_sax").gain(0.47)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@16 A@2 B C ~@12 A@2 B C ~@12>".pickRestart({
  A: "[e4,g4,c#5] ~@6 [e4,g#4,b4] ~@3 [g#4,b4,e5] [f4,f#4,g4,g#4,a4,a#4,c#5,d5,d#5] ~@3", // C#dim E
  B: "[e4,g4,c#5] ~@6 [e4,g#4,b4]@2 ~@7", C: "f#2!5 ~ f#2 ~ b2 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.4).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 A@12 B@3 C A@12 B@3 C A@7 ~@5>".pickRestart({
  A: "x!4", B: "x!8", C: "x!5 ~@3",
})).gain(0.51)

// drums · clap
const clap = s("cp").struct("<A@17 B A C A@13 B A C A@11 D>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x ~@4 x ~@2 x ~@3 x ~", C: "~ x ~ x!2 ~@3", D: "~ x!3 ~@4",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct("<~@4 A@13 B A C A@13 B A C A@8 ~@4>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x ~@3 x!2 ~@2 x ~@3 x ~", C: "~ x ~ x!2 ~@3",
})).gain(0.58)

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 A B@3 A B@3 A B@3 C@3 D A B@3 A B@3 A B@3 C@3 D A B@3 A B@3 ~@4>".pickRestart({
  A: "x ~@3 x!2 ~ x ~ x ~ x!2 ~ x ~", B: "x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~", C: "x!16", D: "x!9 ~@7",
})).gain(0.44)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct("<~@4 A B@3 A B@3 A B@3 ~@4 A B@3 A B@3 A B@3 ~@4 A B@3 A B@3 ~@4>".pickRestart({
  A: "~@2 x ~@10 x ~ x", B: "~@13 x ~ x",
})).gain(0.29)

// drums · rim
const rim = s("rim").struct(`<
  [~ x ~@3 x ~@2]!19
  [~ x ~@2 x ~@3]
  [~ x ~@3 x ~@2]!15
  [~ x ~@2 x ~@3]
  [~ x ~@3 x ~@2]!11
  [~ x!3 ~@4]
>`).gain(0.51)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_muted, baritone_sax, baritone_sax_2,
  electric_guitar_jazz, kick, clap, snare, ride_bell, ride_bell_soft, rim
)