Strudelify

Don't Wanna Be a Player

Joe

KeyG♯ minorTempo80 bpm
0:00/0:00
// Don't Wanna Be a Player — Joe
// 80 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · electric bass finger
const bass = note("<~@4 A@96>".pickRestart({
  A: "[b2@2 ~@2 g#2@2 ~@2 f#2@2 ~ g#2@2 ~ c#3@4 g#2 b2 c#3@2 ~@2 d#3 ~ b2 c#3@3 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.31)

// chords · epiano1
const epiano1 = note(`<
  ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@12
>`.pickRestart({
  A: "[[f#4,g#4,b4,d#5]@3 ~@5 [f#4,a#4,c#5]@2 ~ [f#4,g#4,b4,d#5]@2 ~ [g#4,b4,c#5,e5]@11 ~ [e4,g#4,b4,c#5] ~@2 [g#4,b4,c#5]@2 ~, ~@29 e4 ~@2]/2", // G#m7 F# G#m7 C#m7 C#7
  B: "[[f#4,g#4,b4,d#5]@7 ~ [f#4,a#4,c#5] ~@2 [f#4,g#4,b4,d#5] ~@2 [g#4,b4,c#5,e5]@7 ~ [g4,a#4,c#5,d#5]@9 ~]/2", // G#m7 F# G#m7 C#m7 D#7
})).s("gm_epiano1").gain(0.36)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@6 A@2 B C D@2 B C D@2 ~@7 E B C D@2 B C D@2 B C D@2 B C D@2 ~@7 E B C D@2 B C D@2 B C D@2 B C D@2 B C D@2 B C D@2 B
  C D@2 B C D@2 B C D@2 B C D@2 ~@12
>`.pickRestart({
  A: "[~@14 [g#4,b4]@6 ~@2 [a#4,c#5]@9 ~]/2", B: "d#5", C: "c#5",
  D: "[[b4,d#5]@13 ~ [g#4,c#5]@7 ~ [a#4,c#5]@5 ~ [a#4,d#5]@3 ~]/2", E: "~@12 [a#4,d#5]@3 ~",
})).s("gm_string_ensemble_2").gain(0.26)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  [~@8 g#2@2 ~@4 g#2 f#3]
  [f#3 d#3 g#3 g#2 ~@4 g#2@2 ~@4 g#2 f#3]
  [b3 g#3 b3 g#3 ~@4 g#2 ~@5 g#2 f#3]
  [f#3 d#3 g#3 g#2 ~@4 g#2 ~@5 g#2 f#3]
  ~@96
>`).s("gm_lead_2_sawtooth").gain(0.31).pan(0.6)

// other · whistle
const whistle = note(`<
  ~@8 A@2 B C A@2 B C ~@16 A@2 B C A@2 B C ~@16 A@2 B C A@2 B C ~@8 A@2 B C A@2 B C A@2 B C A@2 B C ~@12
>`.pickRestart({
  A: "[f#4@12 b4@2 g#4@11 ~@3 d#5@4]/2", B: "b4@5 ~@3", C: "~@6 f#5 e5@3 d#5 c#5@3 b4@2",
})).s("gm_whistle").gain(0.31).pan(0.4)

// drums · kick
const kick = s("bd").struct("x").gain(0.46)

// drums · snare
const snare = s("sd").struct("<[~ x ~@2]!40 ~ [~ x ~@2]!55 ~ [~ x ~@2]!3>").gain(0.46)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A B C B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B D B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B E B A B
>`.pickRestart({
  A: "x ~@5 x!2", B: "~@7 x", C: "~@6 x!2", D: "x ~@2 x", E: "x",
})).gain(0.26)

// drums · guiro
const guiro = s("guiro:0").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(7.57)

// drums · guiro
const guiro_2 = s("guiro:4").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@3 x",
})).gain(7.57)

// drums · shaker
const shaker = s("sh").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~ B A B
>`.pickRestart({
  A: "~ x!3 ~@4", B: "~ x!7", C: "~@3 x",
})).gain(0.26)

stack(bass, epiano1, string_ensemble_2, lead_2_sawtooth, whistle, kick, snare, hihat, open_hat, guiro, guiro_2, shaker)

More by Joe