Strudelify

Jesse Hold On

B*Witched

KeyD majorTempo228 bpm
0:00/0:00
// Jesse Hold On — B*Witched
// 228 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "Bass" fretless bass (copy of ch 3 "Bass" fretless bass); ch 8 "Strings" string ensemble 1 (copy of ch 7 "Strings" string ensemble 1)
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(228/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 · banjo
const banjo = note(`<
  A B A C A B A C A B A C A B A C ~@40 D E F ~@7 A B A C ~@56 A B A C A B A C A B A C A B A C A B A C A B A C ~@38
>`.pickRestart({
  A: "a3 ~@3 d4 ~ d4 ~@3 d4 ~ d4 ~ d4 ~", B: "c#4@2 ~@2 b3@2 ~@2 a3 ~@7", C: "e4@2 ~@2 c#4@2 ~@2 a3 ~@7",
  D: "b3 [b3,a4]!2 g3!2 [b3,a4] [d4,a4] b3", E: "b3 a4!2 ~ b3 a4!2 [b3,a4]", F: "[b3,b4] ~@7",
})).s("gm_banjo").gain(0.49).pan(0.3)

// other · banjo · soft notes
const banjo_soft = note("<~@16 A B ~@6 A B ~@6 A B ~@36 A B ~@6 A B ~@6 A B ~@100>".pickRestart({
  A: "[d3,f#3]!2 ~ [d3,f#3]", B: "[e3,g3] ~@3",
})).s("gm_banjo").gain(0.29).pan(0.3)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  A@16 ~@3 B ~@7 B ~@7 B ~@4 A@16 ~@6 A@8 ~@3 B ~@7 B ~@7 B ~@4 A@56 ~@38
>`.pickRestart({
  A: "[~@15 e4, d3 g3@2 [a3,d4] d3 g3@2 [a3,d4], ~ f#4@2 e4@2 e4@2 e4@2 f#4@2 e4@2 e4@2 ~, ~@2 d4 ~@3 d4 ~]/8", // D5
  B: "d4 c#4 a3 ~",
})).s("gm_electric_guitar_clean").gain(0.39).pan(0.7)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@7 A B C D E B C D E B C D E B C D E B C D E B C D E F@2 G@2 H@2 I ~ B C D E B C D E B C D E B C D E J K L@2 M@2 N
  ~@7 B C D E B C D E B C D E B C D E F@2 G@2 H@2 I ~ B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E
  ~@15 O B C D E B C D P C Q E R C Q E R C Q E R C Q E R C Q E R C Q E R C Q E R C Q E R ~@6
>`.pickRestart({
  A: "~@8 [g3,g#3,a3] [d#3,e3,f3,f#3] [b2,c3,c#3,d3] [g2,g#2,a2,a#2] [d#2,e2,f2,f#2] [b1,c2,c#2,d2] [g1,g#1,a1,a#1] [d#1,e1,f1,f#1]",
  B: "d1@3 ~@3 d1@2", C: "e1@3 ~@3 e1@2", D: "g1@3 ~@3 g1@2", E: "a1@3 ~@3 a1@2", F: "[g1@5 ~ g1@8 g1@2]/2",
  G: "[a1@5 ~ a1@8 a1@2]/2", H: "[g1@5 ~ g1@6 f#1@2 e1@2]/2", I: "a1 ~", J: "g1@2 b1 d2", K: "a1@3 ~ a1@4 c#2@4 e2@4",
  L: "[b1@2 d2 f#2@3 b1@2]/2",
  M: "[a1@24 [g3,g#3,a3] [d#3,e3,f3,f#3] [b2,c3,c#3,d3] [g2,g#2,a2,a#2] [d#2,e2,f2,f#2] [b1,c2,c#2,d2] [g1,g#1,a1,a#1] [d#1,e1,f1,f#1]]/2",
  N: "d1 ~@15", O: "~@3 a1",
  P: "a1@6 ~@2 [a3,a#3,b3] [f3,f#3,g3,g#3] [c#3,d3,d#3,e3] [a2,a#2,b2,c3] [f2,f#2,g2,g#2] [c#2,d2,d#2,e2] [a1,a#1,c2] [f1,f#1,g1,g#1], ~@6 b1!2", // Am
  Q: "f#1@3 ~@3 f#1@2", R: "b1@3 ~@3 b1@2",
})).s("gm_fretless_bass").gain(0.59).pan(1)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@8 A B A B A B A B ~@134 C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D ~@6
>`.pickRestart({
  A: "a4 ~@3 b4 ~@3", B: "a4 ~@3 f#4 g4 a4 ~", C: "b4 ~@3 c#5 ~@3", D: "b4 ~@3 g#4 a4 b4 ~",
})).s("gm_string_ensemble_1").gain(0.31).pan(0.7)

// other · fiddle
const fiddle = note(`<
  ~@20 A B C D ~@4 A B C D E F E F E F G H ~@22 I J I K I J I K ~@4 A B C D ~@4 A B C D E F E F E F G H ~@94
>`.pickRestart({
  A: "f#4@4 g4@4 a4@2 ~@2 d4@3 ~", B: "~@4 d4@2 ~@6 d4@3 ~", C: "c#4@4 d4@4 e4@2 ~@2 a3@3 ~", D: "~@4 a3@2 ~@6 a3@3 ~",
  E: "a4 ~@3 b4@2 a4 ~", F: "a4 ~@3 f#4 g4 a4 ~", G: "a4 ~@3 f#4 ~@3", H: "f#4@4 a3@4 b3@4 d4@3 ~",
  I: "a3@2 ~@2 d4 ~ d4@2 ~@2 d4 ~ d4 ~ d4 ~", J: "c#4 ~ b3 ~ a3 ~@3", K: "e4 ~ c#4 ~ a3 ~@3",
})).s("gm_fiddle").gain(0.39)

// other · muted trumpet · "Shout sound"
const muted_trumpet = note(`<
  ~@8 A ~@7 A ~@7 B ~@7 B ~@7 A ~@21 A ~@7 A ~@7 B ~@7 B ~@7 A ~@15 A ~@15 A ~@7 A ~@53
>`.pickRestart({
  A: "d4 ~@7", B: "a4 ~@7",
})).s("gm_muted_trumpet").gain(0.8)

// chords · piano
const piano = note("<~@60 A@2 ~@5 B@2 ~@119>".pickRestart({
  A: "[~ a3@23 ~@8, [c#3,e3]@3 ~]/2", B: "[~@3 a5@4 ~]/2",
})).s("gm_piano").gain(0.39)

// drums · kick
const kick = s("bd").struct("<~@8 x!48 ~@6 x!120 ~@6>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@8 [~ x]!48 x ~@5 [~ x]!120 ~@6>").gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 [x!4]!48 ~@6 [x!4]!120 ~@6>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7
  A ~@7 A ~@7 A ~@13
>`.pickRestart({
  A: "x",
})).gain(0.8)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 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 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@6
>`.pickRestart({
  A: "~@6 x!2",
})).gain(4.06)

stack(
  banjo, banjo_soft, electric_guitar_clean, bass, string_ensemble_1, fiddle, muted_trumpet, piano, kick, snare,
  pedal_hat, crash, cabasa
)

More by B*Witched