Strudelify
Loser cover art

Loser

Beck

KeyD majorTempo86 bpm
0:00/0:00
// Loser — Beck
// 86 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(86/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 · "FRETLESS"
const bass = note(`<
  ~@4 A B A C ~@4 A B A B A B A B ~@4 A B A B A B A B A B A B A B A B ~@4 A B A B A B A C ~@8 A B A C A B A B A B A B A
  B A B A B A D ~
>`.pickRestart({
  A: "d1 ~ d1 ~ e1@2 d1 f#1 ~ f#1@2 d1 g1 f#1 f1 e1", B: "d1 ~ d1@2 e1@2 d1 f#1 ~ f#1@2 d1 g1 f#1 f1 e1",
  C: "d1 ~ d1@2 e1@2 d1 f#1 ~@8", D: "d1 ~ d1@2 e1@2 d1 ~@9",
})).s("gm_fretless_bass").gain(0.49)

// other · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel = note("<A@8 ~@8 A@6 B C A@8 ~@4 A@4 ~@4 A@8 ~@4 A@7 D A@15 E ~>".pickRestart({
  A: "d2@2 f#2@2 a2@2 f#2 a2@5 d2@4", B: "d2@2 f#2@2 f#2@2 f#2 f#2@5 d2@4", C: "d2@2 f#2@2 f#2@2 f#2 f#2@2 ~@7",
  D: "d2@2 f#2@2 a2@2 f#2 a2@5 ~@4", E: "d2@2 f#2@2 a2@2 f#2 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.7)

// other · acoustic guitar steel · "+12STR GTR" · soft notes
const acoustic_guitar_steel_2 = note("<A@8 ~@8 A@7 ~ A@8 ~@4 A@4 ~@4 A@8 ~@4 A@7 ~ A@15 ~@2>".pickRestart({
  A: "~@12 d3 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.04).pan(0.7)

// other · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel_3 = note("<A@2 B@6 ~@8 B@7 C B@8 ~@4 B@4 ~@4 B@8 ~@4 B@23 D ~>".pickRestart({
  A: "f#2@2 a2@2 d3@2 a2 d3@5 a2@4", B: "f#2@2 a2@2 d3@2 a2 d3@5 ~@4", C: "f#2@2 a2@2 d3@2 a2 d3@2 ~@7",
  D: "f#2@2 a2@2 d3@2 a2 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.3)

// other · acoustic guitar steel · "+12STR GTR" · soft notes
const acoustic_guitar_steel_4 = note("<A@2 B@6 ~@8 B@7 ~ B@8 ~@4 B@4 ~@4 B@7 ~@5 B@7 ~ B@15 ~@2>".pickRestart({
  A: "~@12 a3 ~@3", B: "~@3 a2, ~@12 a3 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.04).pan(0.3)

// other · sitar
const sitar = note(`<
  ~@8 A B A B A B A B A B A B ~@4 A B A B A B A B ~@12 A B A B A B A C ~@8 A B A C A B A B A B A B A B A B A B A D ~
>`.pickRestart({
  A: "d4@2 d4@2 e4@2 d4 f#4@2 f#4@2 d4 e4@2 d4@2", B: "d4@2 d4@2 e4@2 d4 f#4@2 f#4@2 d4 g4@2 d4@2",
  C: "d4@2 d4@2 e4@2 d4 f#4@2 ~@7", D: "d4@2 d4@2 e4@2 d4 ~@9",
})).s("gm_sitar").gain(0.27).pan(0.4)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@7 A@2 ~@2 A@2 ~@26 B@5 ~@14 C D E C D F ~@17>".pickRestart({
  A: "[~ [d3,a3], ~@15 [d2,a2]@17]/2", B: "[~@15 a3@3 c4@11 ~@2 a3@3 c4@8 d4@2 c4@2 a3 a3@3 c4@11 ~@2 a3@3 c4@8 ~@6]/5",
  C: "a3 d4 c4 a3 d4 c4 a3 d4", D: "c4 a3 d4 c4 a3 d4 c4 a3", E: "d4 c4 a3 d4 c4 a3 d4 c4", F: "d4 c4 a3 d4 ~@4",
})).s("gm_electric_guitar_clean").gain(0.37).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@2 A@5 B A@15 B A@19 B A@7 C A@11 C A@16 D>".pickRestart({
  A: "x ~ x ~@5 x ~@2 x ~ x!2 ~", B: "x!2 ~@6", C: "x!2 ~@2 x!4", D: "x!2 ~@2 x ~@3",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@2 A@5 B A@15 B A@19 B A@7 B A@11 B A@16 B>".pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@2 x", B: "~@4 x ~@2 x ~@8",
})).gain(0.6)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@5 B A@15 B A@19 B A@7 B A@11 B A@16 B>".pickRestart({
  A: "~@4 x!3 ~@2 x!2 ~ x!3 ~", B: "~@4 x!3 ~@9",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 A@5 ~ A@15 ~ A@19 ~ A@7 ~ A@11 ~ A@17>".pickRestart({
  A: "~ x",
})).gain(0.18)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@5 B A@15 B A@19 B A@7 B A@11 B A@16 B>".pickRestart({
  A: "x ~ x ~@4 x ~@3 x ~@3 x", B: "x ~ x ~@4 x ~@8",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 [x!16]!49 [x!8 ~@8] [x!16]!11 [x!8 ~@8] [x!16]!16 [x!9 ~@7]>").gain(0.36)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_steel_3, acoustic_guitar_steel_4, sitar,
  electric_guitar_clean, kick, snare, hihat, hihat_soft, open_hat, tambourine
)

More by Beck