Strudelify
All I Want cover art

1991 · fear

All I Want

Toad the Wet Sprocket

KeyC majorTempo127 bpm
0:00/0:00
// All I Want — Toad the Wet Sprocket
// 127 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 5 "Guitar" named as a guitar, played on electric guitar clean (its harmonica patch is not one)
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B C D A B C D A B C E A F G H I J K L M J K L N@2 A B C D A B C D A B C E A F C D A O P@2 Q R K S Q T U V N@2 W
  X Y Z N X AA@2 AB@2 A B C D A B AC@2 Q R K S Q R K S Q R K S Q R K AD AE@2
>`.pickRestart({
  A: "d2@4 ~@2 d2@2 ~@2 d2 ~@3 e2 ~", B: "f2@4 ~@2 f2@2 ~@2 f2 ~@3 d2 ~", C: "c2@4 ~@2 c2@2 ~@2 c2 ~@3 d2 ~",
  D: "a1@4 ~@2 a1@2 ~@2 a1 ~@3 e2 ~", E: "a1@4 ~@2 a1@2 ~@2 a1 ~@3 a1 ~", F: "f2@4 ~@2 f2@2 ~@2 f2 ~@3 f2 ~",
  G: "a#1@2 ~ a#1@2 ~ a#1@2", H: "~@2 a#1@3 ~@3 a#1 ~@3 a#1 ~@3", I: "~ c2@4 ~ c2@6 e2@4",
  J: "a2@4 ~@2 a2@4 g2@2 e2@3 ~", K: "d2@2 ~ d2@2 ~ d2 ~", L: "g2@5 ~ g2@4 ~@2 g2@2 ~@2", M: "c2@4 ~@2 c2@4 ~@2 c2@3 ~",
  N: "f2@11 ~@5", O: "a1@4 ~@2 a1@2 ~@4 a1 ~@3", P: "[a#2@3 a2@3 g2@3 f2@3 e2 ~ d2 ~]/2", Q: "c2@2 ~ c2@2 ~ g2 ~",
  R: "a2@4 ~@2 a2@4 g2@2 ~ e2@2 ~", S: "g2@4 ~@2 g2@2 ~@2 f2 ~ d2@2 ~@2", T: "a2@3 ~@3 a2@4 g2 ~ e2@4",
  U: "d2@3 ~@3 d2@3 ~@2 d2@2 ~@3", V: "g2@4 ~@2 g2@4 ~@2 e2@3 ~", W: "g2@13 ~@3", X: "a2@3 ~ g2@3 ~", Y: "f2@15 ~",
  Z: "c3@5 ~@3 g2@6 ~@2", AA: "[d3@29 ~@3]/2", AB: "[f2@3 ~]/2", AC: "[a#2@6 ~ a2@5 g2@6 f2@6 e2@2 ~@2 d2@2 ~@2]/2",
  AD: "e2@2 ~ e2", AE: "[f2@15 ~]/2",
})).s("gm_electric_bass_finger").gain(0.64)

// other · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@15 A ~@2 B@2 C D E F G@2 E H I@2 J K L M@2 ~@10 N@2 ~ O@2 P Q R S P T U V W@2 X@2 Y Z AA AB AC@4 ~@3 AD@2 ~ AE@2 C T
  R S C AF@2 AG C Q R AG C AH@2 AI AJ@2
>`.pickRestart({
  A: "c4 b3 g3 [c4,g4]@5", B: "[a#3@7 a3@6 g3@5 f3@6 e3@4 d3@2 c4@2]/2", C: "~@2 c4@2 ~@2 c4@2 ~@2 c4 ~ c4 ~ b3@2",
  D: "~@2 c4 ~@4 c4@4 ~@3 e4@2", E: "~@2 d4@2 ~@2 c4@7 ~ e4@2", F: "~@2 f4@3 ~ e4@3 ~ d4 ~ c4 ~ c4@2",
  G: "[~@2 c4@2 ~@2 c4@5 ~ c4@2 b3@4 c4@2 ~@2 c4@4 ~@4 e4@2]/2", H: "~@2 f4@2 ~@2 e4@5 ~ d4 ~@3",
  I: "[~ d4@3 e4@2 c4@21 ~@5]/2", J: "~@2 f4@4 e4@4 d4@2 d3 ~ e3 ~, d3@11 ~@5", K: "~@3 c4@3 d4@4 e4@5 ~, f3@7 ~",
  L: "b3 c4@2 b3@2 g3@3", M: "[c4 b3 ~ g4@6 ~@7, ~ g3@4 ~@3]/2", N: "[c4 b3 ~ g4@7 ~@6, ~ g3@4 ~@3]/2",
  O: "[~ a#3@5 ~@6 g3@6 f3@6 e3@2 ~@2 d3@2 c4@2, ~@3 a3@6 ~@7]/2", P: "~@2 c4@2 ~@2 c4@2 ~@2 c4 ~ c4 ~ b3 ~",
  Q: "~@2 c4 ~@3 c4@2 ~@4 g3@2 e4@2", R: "~@2 d4 ~@3 c4@4 ~@4 e4@2", S: "~@2 f4@2 ~@2 e4@4 d4 ~ c4 ~ c4@2",
  T: "~@2 c4 ~@3 c4@4 ~@2 g3@2 e4@2", U: "~ e4 ~ d4 ~@2 c4@2 ~@6 e4@2", V: "~ f4 ~ e4 ~ d4 ~@2",
  W: "[d4@2 ~@2 e4 ~@2 c4@14 ~@9 g3!2]/2", X: "[~@10 d4@2 c4@2 ~ g4@9 d4@7 ~, ~ g3@14 ~@17]/2",
  Y: "~ a3 ~ f4@2 c4 a3@2, [f3,c4]@2 c4@3 ~@3", Z: "e4@2 f4@2 e4@2 d4@4 c4@5 ~", AA: "c4@5 d4 c4@2",
  AB: "~ g4@4 ~@3 e4 ~@2 d4 ~@2 c4@2",
  AC: "[d4@4 e4@2 d4@4 c4@4 a3@4 c4@11 ~ d4@4 e4@6 ~@2 c4@3 ~ a3@10 ~@8, ~@40 d4@5 ~@19]/4",
  AD: "[c4@2 b3@2 g3@2 [c4,g4]@15 ~@11]/2", AE: "[a#3@6 a3@6 g3@6 f3@6 e3@4 d3@3 c4]/2",
  AF: "[~@2 c4@2 ~@2 c4@5 ~@3 e4@4 d4 ~@3 c4@4 ~@4 e4@2]/2", AG: "~@2 f4@2 ~@2 e4@2 ~@2 d4 ~ c4 ~ c4@2",
  AH: "[~@2 c4 ~@3 c4@3 ~@3 g3@2 e4@4 d4@4 c4@6 ~@2 a3@2]/2", AI: "~@2 a3@2 ~@2 g#3@2 ~@2 g#3@3 ~@3", AJ: "[f3@15 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.25)

// other · reed organ · "Organ"
const reed_organ = note(`<
  ~@34 A B C D@2 E C F ~@8 G B H I G J K D ~@8 L@2 M@2 ~@8 G B K D G E K D G B K I G B K A N@2
>`.pickRestart({
  A: "g4", B: "a4", C: "e4", D: "g4@13 ~@3", E: "a4@15 ~", F: "c4@7 ~", G: "c4", H: "d4@7 ~", I: "g4@5 ~@3",
  J: "a4@7 ~", K: "d4", L: "[f#4@7 ~]/2", M: "[f4@7 ~]/2", N: "[~ e4@28 ~@3, c4@15 ~@17]/2",
})).s("gm_reed_organ").gain(0.45)

// other · overdriven guitar · "Solo"
const overdriven_guitar = note("<~@59 A B@2 C ~@5 D@2 E@3 F G H I@2 ~@18>".pickRestart({
  A: "~@14 g3!2", B: "[g3@25 ~@7]/2", C: "f3@13 ~@3", D: "[~@14 f4@4 e4@4 ~@4 c4 ~ c4 ~ c4@2, ~@11 d4@3 ~@2]/2",
  E: "[~@3 d4@3 ~@4 a3@4 ~@8 d4 ~@2 d4 ~ d4@2 ~ d4@4 e4@2 ~@2 e4@4 c4@3 ~@3, ~@3 c4@4 g3@17, ~@12 c4 ~@11]/3",
  F: "g4@10 ~ e4@3 f4@2, ~@5 f4 ~@2", G: "e4@10 c4@2 d4 ~ d4@2", H: "~ e4 ~ e4@2 c4@3",
  I: "[g4@3 f4@3 e4@3 d4@3 c4@3 ~]/2",
})).s("gm_overdriven_guitar").gain(0.72)

// other · acoustic guitar steel · "Acoustic"
const acoustic_guitar_steel = note(`<
  ~@4 A B C D E B C F G@2 C D H@2 I@2 J ~@9 A K C L ~@15 M@2 N@2 O P Q@3 R@2 ~@17 M@2 S@3 P T@3 P U@3 P Q@3 V@2
>`.pickRestart({
  A: "~@2 f4@4 e4@4 d4 ~ d3 ~ e3 ~, d3@11 ~@5", B: "~ c4@2 d4@2 e4@3, f3@15 ~", C: "b3 c4@2 b3@2 g3@3",
  D: "c4 b3 ~ g4@4 ~, ~ g3@2 ~", E: "~@2 f4@4 e4@4 d4@2 e3 ~@3, d3@11 ~@5", F: "c4@2 b3@2 ~@2 g4@7 ~@3, ~ g3@2 ~",
  G: "[~@2 f4@5 e4@3 ~@3 d3 ~ e3 ~@3 c4@3 d4@4 e4@6, d3@10 d4@7 f3@15]/2", H: "[d3@29 ~@3]/2",
  I: "[a#3@7 a3@5 g3@6 f3@6 e3@4 d3@2 ~@2]/2", J: "c3@3 ~", K: "~ c4@2 d4@2 e4@3, f3", L: "c4 b3 ~ g4@5, ~ g3@3",
  M: "[~@15 c4@2 ~ c4@2 ~@2 c4@2 ~@2 c4 ~ c4 ~ b3@2]/2", N: "[~@2 c4@2 ~@2 c4@3 ~@3 g3@2 e4@4 d4@4 c4@5 ~@3 e4@2]/2",
  O: "~@2 f4@3 ~ e4@4 d4@2 c4 ~ c4@2", P: "~@2 c4@2 ~@2 c4@2 ~@2 c4 ~ c4 ~ b3@2",
  Q: "[~@2 c4@2 ~@2 c4@3 ~@3 g3@2 e4@4 d4@4 c4@8 e4@4 f4@4 e4@4 d4@3 ~@3]/3", R: "[d4@4 e4@2 c4@23 ~@3]/2",
  S: "[~@2 c4@2 ~@2 c4@3 ~@3 g3@2 e4@4 d4@4 c4@8 e4@4 f4@3 ~ e4@4 d4@2 c4 ~ c4@2]/3",
  T: "[~@2 c4@2 ~@2 c4@3 ~@3 g3@2 e4@4 d4@4 c4@8 e4@4 f4@4 e4@4 d4@2 c4 ~ c4@2]/3",
  U: "[~@2 c4@2 ~@2 c4@5 ~ g3@2 e4@4 d4@4 c4@8 e4@4 f4@3 ~ e4@4 d4@2 c4 ~ c4@2]/3", V: "[d4@5 e4@2 c4@18 ~@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!94 ~@2>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!94 ~@2>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@9 A ~@19 A ~@9 A ~@17 A ~@3 B ~@3 B ~@3 A ~@3 B ~@2>".pickRestart({
  A: "~@7 x", B: "~@6 x!2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!20 ~@10 [x!8]!20 ~@28 [x!8]!8 ~@10>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@9 A ~@19 A ~@9 A ~@17 A ~@3 B ~@3 B ~@3 C ~@3 B ~@2>".pickRestart({
  A: "~@8 x ~@2 x!2 ~@3", B: "~@5 x ~@2", C: "~@5 x!2 ~",
})).gain(0.45)

// drums · ride bell
const ride_bell = s("rd").struct("<~@20 [x!4]!10 ~@20 [x!4]!28 ~@8 [x!4]!8 ~@2>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@12 A ~@7 A ~@9 A ~@11 A ~@7 A ~@9 A ~@17 A ~@3 A ~@3 A ~@3 A ~@3 B ~>".pickRestart({
  A: "x", B: "~ x ~@14",
})).gain(0.45)

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