Strudelify
What I Got cover art

Sublime

What I Got

Sublime

KeyD majorTempo92 bpm
0:00/0:00
// What I Got — Sublime
// 92 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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.

// bass · fretless bass · "Bass"
const bass = note("<~@4 A@39 B@2 A@4 ~@4 A@7 C A@4 B@2>".pickRestart({
  A: "d2@2 d2@2 d2 g2 a2@2 d3@2 d3@2 d3@2 c2@2", B: "d2/2", C: "d2",
})).s("gm_fretless_bass").gain(0.43)

// chords · acoustic guitar steel · "acoustic"
const acoustic_guitar_steel = note(`<
  ~@8 A@2 B C D E F G H ~ A@2 B C A@2 B C A@2 I J K L A ~@3 A@2 B C A@2 B C ~ I J K L M@4 I J K L I J K N I J K L O@2
>`.pickRestart({
  A: "~ [a3,d4,f#4]@13 ~@2, d3@7 ~", B: "~ [a3,d4,f#4]@12 ~@3, d3@7 ~", C: "~ [a3,d4]@9 ~@6, d3 ~, ~ f#4@11 ~@4",
  D: "~ [a3,d4,f#4]@7 ~ [d4,g4]@7, d3@8 [g2,d3,g3]@7 ~", E: "~ [a3,d4,f#4]@6 ~@2 [g3,d4,g4]@7, d3@6 ~@2 [g2,d3]@7 ~",
  F: "~ [d4,f#4]@7 ~ [g3,d4]@5 ~@2, d3@7 ~ [g2,d3]@7 ~, ~ a3@4 ~@4 g4@7", // D G5
  G: "~ [a3,f#4]@7 ~ [d4,g4]@7, d3@7 ~ [g2,d3]@8, ~ d4@5 ~@2 g3@6 ~@2", H: "~ [d4,f#4]@14 ~, d3@11 ~@5, ~ a3@12 ~@3",
  I: "~ [a3,d4,f#4]@7 ~ [d4,g4]@7, d3 [g2,d3], ~@4 g3@3 ~", J: "~ [a3,d4,f#4]@7 ~ [g3,d4,g4]@7, d3 [g2,d3]",
  K: "~ [a3,d4,f#4]@7 ~ [g3,d4,g4]@7, d3@7 ~ [g2,d3]@7 ~", L: "~ [a3,d4]@12 ~@3, d3@3 ~, ~ f#4@15", M: "[d3@7 ~]/2",
  N: "[d3,a3]", O: "[[d3,a3]@7 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.27).pan(0.6)

// other · acoustic guitar steel · "acoustic lead"
const acoustic_guitar_steel_2 = note("<~@11 A B C D E@2 ~@10 A B C D F ~@35>".pickRestart({
  A: "~@12 g2@2 a#2 ~", B: "d3@2 ~ f3 ~ d3 ~ c3 d3@6 ~@2, ~@8 c3 ~@7",
  C: "[d4,f#4]@2 ~ [c4,e4]@2 ~ [g3,b3,d4] ~ [g3,b3,d4]@5 ~@2 f#4", // D C G
  D: "~ f#4 ~ a4 b4 d5 ~ b4 ~ a4 ~ c5 b4@2 a4@2, ~ g4 ~@6", E: "[~ g4@2 f4 g4 ~ g4 ~ f4@2 d4@14 ~@8]/2",
  F: "~ g4@2 f4 g4 ~ g4 ~ f4@2 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.48)

// other · electric guitar jazz · "clean el."
const electric_guitar_jazz = note("<~@53 A@2 B C D E A F ~@6>".pickRestart({
  A: "f#4@3 d4@3 a3@2 f#4@3 d4@3 a3@2", B: "f#4@5 ~ f#4@7 ~ f#4@2", C: "f#4@6 f#4 ~ f#4@3 e4@3 d4 ~",
  D: "d4@5 ~ d4@5 b3@3 a3 ~", E: "a3@7 ~ a3@3 b3@3 a3@2", F: "f#4@15 ~",
})).s("gm_electric_guitar_jazz").gain(0.36)

// other · overdriven guitar
const overdriven_guitar = note("<~@43 A@2 B ~@15 C D E F G@2>".pickRestart({
  A: "[~ b4@7]/2", B: "c5@13 ~@3", C: "d3@11 b2@3 a2@2", D: "a2@6 b2@2 c3@3 b2@3 a2@2", E: "d3@3 d4@5",
  F: "a#4@6 b4@2 b4@3 a4@3 g4@2", G: "[d3,a3]/2",
})).s("gm_overdriven_guitar").gain(0.32)

// chords · acoustic guitar steel
const acoustic_guitar_steel_3 = note("<A@16 ~@2 A@14 ~@4 A@7 ~@2 A@4 ~@4 A@7 ~ A@4 ~@2>".pickRestart({
  A: "[d3,a3]@2 [d3,a3]@2 [d3,a3]@4 [g2,b2,d3]@2 [g2,b2,d3]@2 [g2,b2,d3]@3 ~", // D5 G
})).s("gm_acoustic_guitar_steel").gain(0.19)

// chords · acoustic guitar steel
const acoustic_guitar_steel_4 = note("<A@16 ~@2 A@14 ~@4 A@7 ~@2 A@4 ~@4 A@7 ~ A@4 ~@2>".pickRestart({
  A: "[d4,f#4]@4 [d4,f#4]@5 [g3,d4]@3 [g3,d4]@2 a2 b2", // D G5
})).s("gm_acoustic_guitar_steel").gain(0.29)

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

// drums · clap
const clap = s("cp").struct("<~@49 [~ x ~ x]!4 ~@14>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@3 A B@11 C ~ D B@13 C ~@4 B@7 ~@2 B@3 C ~@4 B@3 C B@3 ~ B@3 C ~@2>".pickRestart({
  A: "~@12 x ~@2 x", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@3 x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@12 ~@2 A@14 ~@4 A@7 B ~ A@4 ~@4 A@7 B A@4 ~@2>".pickRestart({
  A: "x!7 ~", B: "x",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A@13 ~@2 A@14 ~@4 A@7 ~@2 A@4 ~@4 A@7 ~ A@4 ~@2>".pickRestart({
  A: "~@7 x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@12 A@4 ~@12 A@4 ~@4 A@3 B A@3 B ~ A@4 ~@4 A@7 B A@4 ~@2>".pickRestart({
  A: "x!5 ~ x!3 ~@2 x!5", B: "x!2 ~@14",
})).gain(0.32)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@12 A@4 ~@12 A@4 ~@4 A@3 ~ A@3 ~@2 A@4 ~@4 A@7 ~ A@4 ~@2>".pickRestart({
  A: "~@5 x ~@3 x!2 ~@5",
})).gain(0.24)

// drums · splash
const splash = s("cr").struct("<~@4 A ~@7 A ~@5 A ~@9 A ~@7 A ~@8 A ~@7 A ~@3 A ~@3 A ~@5>".pickRestart({
  A: "x",
})).gain(0.64)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_jazz, overdriven_guitar,
  acoustic_guitar_steel_3, acoustic_guitar_steel_4, kick, clap, snare, hihat, open_hat, tambourine, tambourine_soft,
  splash
)

More by Sublime