Strudelify
Josie cover art

Dude Ranch

Josie

blink-182

KeyB majorTempo201 bpm
0:00/0:00
// Josie — blink-182
// 201 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "Distorted" distortion guitar (copy of ch 2 "Overdrive" overdriven guitar)
// note: Full arrangement: all 167 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(201/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.

// chords · overdriven guitar · "Overdrive"
const overdriven_guitar = note(`<
  A@22 B@2 C D E F C G E F C D E F C G E F C H C D E F C G E F C D E F C G E F I@2 J@2 K@4 I@2 L@2 J@4 K I J M K I J M K
  H C D E F C G E F C D E F C G E F I@2 J@2 K@4 I@2 L@2 J@4 K I J M K I J M K I J M K I J M K H A@14 B@2 K I J M K I J M
  K I J M K I J M N
>`.pickRestart({
  A: "[[b3,f#4,b4]@31 ~]/2", B: "[[b3,f#4,b4]@9 ~@7]/2",
  C: "[b3,f#4,b4] [b3,f#4,b4]@2 [b3,f#4,b4]!2 [b3,f#4,b4]@2 [b3,f#4,b4]", // B5
  D: "[f#3,c#4,f#4] [f#3,c#4,f#4]@2 [f#3,c#4,f#4]!2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]", // F#5
  E: "[e3,b3,e4] [e3,b3,e4]@2 [e3,b3,e4]!2 [e3,b3,e4]@2 [e3,b3,e4]", F: "[e3,b3,e4] [e3,b3,e4]@2 [e3,b3,e4]!5",
  G: "[c#4,g#4,c#5] [c#4,g#4,c#5]@2 [c#4,g#4,c#5]!2 [c#4,g#4,c#5]@2 [c#4,g#4,c#5]", H: "[b3,f#4,b4] ~@7",
  I: "[f#3,c#4,f#4]!8", J: "[e3,b3,e4]!8", K: "[b3,f#4,b4]!8", L: "[c#4,g#4,c#5]!8",
  M: "[g#3,d#4,g#4]!4 [f#3,c#4,f#4]!4", N: "[b3,f#4,b4]@3 ~@13",
})).s("gm_overdriven_guitar").gain(0.24)

// other · electric guitar clean · "Clean"
const electric_guitar_clean = note(`<
  ~@8 A B C@2 A B C@2 A B C@2 A B C D ~@110 A B C@2 A B C@2 A B C@2 A B C D ~@17
>`.pickRestart({
  A: "b1@3 ~ e2@2 g2@2 b1@2 e2@2 b1@2 g2@2", B: "g#2@3 ~ a#2@2 b2@2 g#2@2 b2@2 g#2@2 b2@2",
  C: "e2@3 ~ g#2@2 b2@2 e2@2 b2@2 e2@2 b2@2", D: "e2 ~@7",
})).s("gm_electric_guitar_clean").gain(0.21)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A@8 B C D E B C D E B C F G B C D H I J K@2 I L K@2 I J M N I L K@2 I O I J K@2 I L K@2 I J M N I L K@2 J@2 K@2 I@4
  J@2 L@2 K@4 I J K P I J K P I O I J K@2 I L K@2 I J M N I L K@2 J@2 K@2 I@4 J@2 L@2 K@4 I J K P I J K P I J K P I J K
  P I O B C D E B C D E B C F G B C D H I J K P I J K P I J K P I J K P Q
>`.pickRestart({
  A: "[b1@31 ~]/2", B: "b1@3 b1 b1@3 b1", C: "g#2@3 g#2 g#2@2 g#2@2", D: "e2@3 e2 e2@3 e2", E: "e2@3 e2 e2@2 e2@2",
  F: "e2@3 e2 e2@4, d#3", G: "[b2,e3]", H: "e2 ~@7", I: "b1!8", J: "f#2!8", K: "e2!8", L: "c#2!8",
  M: "e2 e2@2 e2!2 e2@2 e2", N: "e2 e2@2 e2!5", O: "b1 ~@7", P: "g#2!4 f#2!4", Q: "b1@3 ~@13",
})).s("gm_electric_bass_pick").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  A@8 B@14 ~@2 A@3 C A@3 C A@3 C A@3 ~ A D A@3 C A@3 C A@3 C A@3 ~ A@7 C A@7 C A@9 D A@3 C A@3 C A@3 C A@3 ~ A@7 C A@7 C
  A@17 D B@14 ~@2 A@16 ~
>`.pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~@2 x", C: "x!2 ~@2", D: "x",
})).gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  A@22 B C A@3 D A@3 D A@3 D A@3 B A ~ A@3 D A@3 D A@3 D A@3 B A@7 D A@7 D A@9 ~ A@3 D A@3 D A@3 D A@3 B A@7 D A@7 D
  A@17 E A@14 B C A@16 ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x!16", C: "x", D: "~@2 x ~@3 x ~ x!8", E: "~@8 x!8",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@39 A ~@17 A ~@3 B ~@37 A ~@3 B ~@62 C>".pickRestart({
  A: "x ~ x!2", B: "~@5 x ~ x", C: "x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!8]!14 ~@112 [x!8]!14 ~@19>").gain(0.16)

// drums · crash
const crash = s("cr").struct(`<
  A@8 B ~@15 A@3 C A@3 C A@3 C A@3 ~ A B A@3 C A@3 C A@3 C A@3 ~ B ~@15 A@9 B A@3 C A@3 C A@3 C A@3 ~ B ~@15 A@8 ~@3 D
  ~@3 D ~@2 B ~@15 A@8 ~@3 D ~@3 D ~
>`.pickRestart({
  A: "x!8", B: "x", C: "x!4 ~@4", D: "x ~@4 x ~@2",
})).gain(0.16)

// drums · ride bell
const ride_bell = s("rd").struct("<~@58 A@7 B A@7 B ~@26 A@7 B A@7 B ~@8 A@9 C ~@24 A@8 ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "x",
})).gain(0.16)

stack(overdriven_guitar, electric_guitar_clean, bass, kick, snare, low_tom, hihat, crash, ride_bell)

More by blink-182