Strudelify
No Rain cover art

1992 · Blind Melon

No Rain

Blind Melon

KeyE majorTempo149 bpm
0:00/0:00
// No Rain — Blind Melon
// 149 bpm, 149/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 4 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24.
setcpm(149/149)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.

// bass · electric bass finger · E Dmaj7 C#m Dmaj7 E7 A E7 Dmaj7 …
const bass = note(`<
  [~@2 e2 e2@2 [e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,g#2,e3] [a1,c#2,d2,a2,b2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [a1,d2,f#2,g#2,a2,b2,e3] [c#2,d2] ~ d2 a2 ~ [e2,g2] e2!2 [e2,b2,e3] [d2,a2]!2 e2 [e2,g2,e3] [b2,d3,e3] [e2,a2] e2 [d2,f#2,g#2,a2,b2,e3] [a1,c#2,d2,e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,g#2,e3], ~@6 e2 ~@9]
  [[a1,c#2,d2,a2,b2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [a1,d2,f#2,g#2,a2,b2,e3] [c#2,d2,e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,a2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,a2] ~ d2 a2!2 [e2,g2] e2!2 [b2,e3] [d2,e2] [d2,a2] [e2,a2] [e2,g2] ~ e2@2 e2 e2@2 [e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,a2], ~@9 e2@2 ~@21]
  [[d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [a1,d2,f#2,g#2,a2,b2,e3] [c#2,d2,e2,f#2,e3] [a1,c#2,d2,g#2,a2,b2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [d2,f#2,g#2,a2,b2,e3] [a1,c#2,d2,e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [e1,c#2,d2,e2] ~@2 a2 ~ [e2,g2] e1 e2 e2@2 [e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,g#2,e3] [a1,c#2,d2,a2,b2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [f#2,g#2,a2,b2,e3] [e2,f#2,a2,b2,d3,e3] [a1,c#2,d2,g#2,a2,b2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [d2,f#2,g#2,a2,b2,e3], ~@6 d2 ~@9]
  [[a1,c#2,d2,e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,e3] [a1,c#2,d2,g#2,a2,b2] [d2,e2,f#2,g#2,b2,e3] [a1,c#2,d2,e2,a2] [a1,d2,f#2,g#2,a2,b2,e3] [c#2,d2,e2,e3] [a1,c#2,d2,f#2,g#2,a2,b2] [c#2,d2,e2,f#2,g#2,b2,e3] d2 [d2,e2,f#2,g#2,b2,e3] [e2,e3] [d2,f#2,g#2,b2] [e2,f#2,e3] [d2,g#2,b2] ~@16]
>`).s("gm_electric_bass_finger").gain(0.45)

// other · synth brass 1 · Bm Asus2 Bm7 Esus2 F#m7 Amaj7 E C#m …
const synth_brass_1 = note(`<
  [~@7 b4 [b4,d5] [a4,b4] [a4,b4,d5] ~ e4 [e4,f#4] [e4,f#4,g#4,a4] [e4,g#4,a4] [e4,f#4,g#4] [c#4,e4,g#4] [b3,c#4] e4 [e4,f#4,g#4] [e4,f#4,g#4,a4] [g#4,a4] [c#4,e4,f#4,g#4] [b3,c#4,e4,g#4] d4 [d4,e4] [a#3,b3] [e4,g#4,a4] [g#4,a4,b4] [d4,e4,g4] e4]
  [[e4,g#4,a4,b4] [d4,e4,g#4] [c#4,d4,e4] [b3,e4,g#4,a4] [e4,g#4,a4,b4] [d4,e4] [b3,e4] [f#4,g#4,a4] e4!3 [f#4,g#4,a4] [e4,g#4] [e4,f#4,g#4,a4] [c#4,e4,g#4] [e4,f#4] e4 [e4,f#4] [e4,f#4,g#4,a4] [e4,g#4] [e4,f#4,g#4,a4] [c#4,e4,g#4] [b3,c#4] [d4,e4] e4 [d4,e4] e4 [a#3,b3,d4] b3 ~@3]
  [~@10 e4!2 [d4,e4] d4 [c#4,d4] [b3,c#4] d4 [d4,e4]!2 [b3,d4] [a#3,b3,c#4,e4] [e4,g#4,a4] [e4,g#4,b4] [d4,e4,g#4] [e4,a4] [e4,g#4,a4,b4] [d4,e4] [c#4,e4] [e4,g#4,a4,b4] [e4,g#4] [d4,e4] [b3,e4,a4]]
  [[e4,f#4,g#4] ~ [d4,e4] [f#4,g4,g#4] e4 [d4,e4,g4] [c#4,e4] [c#4,e4,g#4] [e4,g#4] e4 ~ b3 [b3,c#4,d4,e4] e4 [b3,c#4,d4] [c#4,d4,e4] b3@2 ~@14]
>`).s("gm_synth_brass_1").gain(0.4).pan(0.4)

// other · electric guitar jazz · A Dmaj7 A
const electric_guitar_jazz = note("<~ [~@2 [e4,a4,c#5,d5] ~@29] [~@26 [c#5,d5] [e4,a4,c#5] ~@4] ~>")
  .s("gm_electric_guitar_jazz").gain(0.35)

// other · distortion guitar · C#m Dmaj7 C#m F#7 C#m Dmaj7 F#m Amaj7 …
const distortion_guitar = note(`<
  ~
  [~@30 [c#5,d5,e5] [c#5,d5]]
  [[c#5,e5] [c#5,d5,e5] [c#5,e5,f#5] [e4,f#4,g#4,c#5,e5] [c#4,d4,e4,f#4] [f#4,g#4,a4,c#5] [e4,g#4,a4,c#5,d5,e5] [b3,d4,e4,f#4,g#4] [d4,e4,f#4,a4,b4] [f#3,a3,b3,d4,e4,f#4] [b3,d4,e4] ~@21]
  [~@4 [c#5,d5,e5]!2 [c#5,e5] [c#5,d5,e5] [c#5,e5,f#5] [c#5,e5] ~@22]
>`).s("gm_distortion_guitar").gain(0.45).pan(0.8)

// chords · acoustic guitar steel · E E7 Bm7 E7 E E7 Dmaj7 A …
const acoustic_guitar_steel = note(`<
  [~@2 [e2,b2,e3,b3,e4,g#4] [e2,b2,e3,b3,e4,g#4]@2 [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4]!2 [d3,e3,a3,b3,d4,e4,f#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,a3,c#4,d4,e4,f#4,a4] [a3,c#4,e4,a4] [e3,g3,b3,d4,e4,g4,g#4] [e3,b3,e4,g#4]!3 [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,a3,c#4,d4,e4,f#4,a4] [a3,c#4,e4,a4] [e3,g3,b3,d4,e4,g4,g#4] [e3,b3,e4,g#4] [e2,b2,e3,b3,e4,g#4] [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4]!2]
  [[d3,e3,a3,b3,d4,f#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4]!2 [d3,a3,d4,f#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,a3,d4,f#4] [a3,c#4,d4,e4,f#4,a4] [e3,g3,a3,b3,c#4,d4,e4,g4,g#4,a4] [e3,b3,e4,g#4]!3 [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,a3,d4,f#4] [a3,c#4,e4,a4] [e3,g3,a3,b3,c#4,d4,e4,g4,g#4,a4] [e3,b3,e4,g#4] [e2,b2,e3,b3,e4,g#4]@2 [e2,b2,e3,b3,e4,g#4] [e2,b2,e3,b3,e4,g#4]@2 [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4]!3]
  [[d3,e3,a3,b3,d4,e4,f#4,g#4]!10 [d3,e3,a3,b3,d4,e4,f#4,g#4]@2 ~ [a3,c#4,e4,a4] ~ [e3,g3,b3,d4,e4,g4,g#4]@2 [e3,b3,e4,g#4] [e3,b3,e4,g#4]@2 [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4]!2 [d3,e3,a3,b3,d4,e4,f#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4]!4 [d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4], ~@6 [d3,a3,d4,f#4] ~@9]
  [[d3,e3,a3,b3,d4,e4,f#4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,e3,a3,b3,d4,e4,f#4,g#4]!7 [d3,e3,a3,b3,d4,e4,f#4,g#4,a4] [d3,a3,d4,f#4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4] [e3,b3,e4,g#4] [d3,e3,a3,b3,d4,e4,f#4,g#4] ~@16]
>`).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [~@28 x!4] [x!11 ~@9 x!12] [x!10 ~@22]>").gain(0.45)

// drums · rim
const rim = s("rim").struct("<[~ x!12 ~@19] ~@2 [~@9 x!9 ~@14]>").gain(0.35)

// drums · snare
const snare = s("sd").struct("<~ [~@28 x!4] [x!11 ~@9 x!12] [x!10 ~@22]>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~ [~@28 x!4] [x!11 ~@9 x!12] [x!10 ~@22]>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~ [~@7 x] [x ~@2 x ~@2 x ~@3 x ~@9 x ~@3 x ~@2 x ~@2 x ~] [~@2 x ~ x!2 ~ x ~ x ~@22]>")
  .gain(0.4)

// drums · ride bell
const ride_bell = s("rd").struct("<~@2 [~@23 x!2 ~@2 x ~@4] ~>").gain(0.45)

stack(
  bass, synth_brass_1, electric_guitar_jazz, distortion_guitar, acoustic_guitar_steel, kick, rim, snare, hihat, crash,
  ride_bell
)