Strudelify

I Got to Give It Up

Masterboy

KeyA minorTempo134 bpm
0:00/0:00
// I Got to Give It Up — Masterboy
// 134 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@2 A@3 B A B A B A B A B A B A ~ 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@3 B A@3 B A@3 B A@3 ~ 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@3 B A@3 B A@3 B A@3 ~ A B A B A B A B A B A B A B A B A B A B ~@5
>`.pickRestart({
  A: "a1!2 ~ a1!2 ~ a1 ~ a1 ~@2 a1 ~@2 a1 ~", B: "f1!2 ~ f1!2 ~ f1 ~ g1 ~@2 g1 ~@2 g1 ~",
})).s("gm_synth_bass_1").gain(0.32).pan(0.4)

// bass · synth bass 1 · "SYN BASS 1" · soft notes
const bass_soft = note(`<
  ~@2 A@3 B A B A B A B A B A B A ~ 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@3 B A@3 B A@3 B A@3 ~ 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@3 B A@3 B A@3 B A@3 ~ A B A B A B A B A B A B A B A B A B A B ~@5
>`.pickRestart({
  A: "~@10 a1 ~@2 a1 ~ a1", B: "~@10 g1 ~@2 g1 ~ g1",
})).s("gm_synth_bass_1").gain(0.14).pan(0.4)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@6 A B A B A B A B A B A ~@17 A B A B A B A B ~@32 A B A B A B A B ~@16 A B A B A B A B A B A B A B A B A B A B A B A
  B ~
>`.pickRestart({
  A: "a2!7 ~ a2!3 ~ a2!3 ~", B: "f2!7 ~ g2!3 ~ g2!3 ~",
})).s("gm_lead_2_sawtooth").gain(0.48).pan(0.6)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth_2 = note(`<
  ~@14 A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B ~@8 C@7 ~ A B A B A B A B A B A B A B A B A B A B A B A B
  ~@8 C@7 ~ A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "a2@2 a3@2 a2@2 a3@2 a2@2 a3 a2 ~ a2 a3@2", B: "f2@2 f3@2 f2@2 f3@2 g2@2 g3 g2 ~ g2 g3@2",
  C: "a3!4 e4 ~ a3 c4 ~ a3 c4 ~ d4 ~ a3 ~",
})).s("gm_lead_2_sawtooth").gain(0.29)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth_3 = note(`<
  A B A B A B A B A B A B A B ~@12 A B A B A B A B A B A B A B A B ~@24 A B A B A B A B A B A B A B A B ~@24 A B A B A B
  A B A B A B A B A B ~
>`.pickRestart({
  A: "a4@2 a5@2 a4@2 e5@2 a4@2 c5 a4 ~ a4 c5@2", B: "f4@2 f5@2 f4@2 f5@2 g4@2 g5 g4 ~ g4 g5@2",
})).s("gm_lead_2_sawtooth").gain(0.35)

// chords · piano · "A.PIANO 3"
const piano = note(`<
  ~@18 A B A C A B A C A B A C A B A C A B A C A B A C ~@16 A B A C A B A C A B A C A B A C A B A C A B A C ~@16 A B A C
  A B A C A B A C A B A C ~@9
>`.pickRestart({
  A: "~@2 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~", // Am
  B: "~@2 [a4,d5,f5] ~@3 [a4,d5,f5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // Dm G
  C: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // F G
})).s("gm_piano").gain(0.29)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@10 A@7 ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@3 B A@3 ~ A@3 B A@3 B A@3 B A@3 B A@3 B ~@5
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@2 A B A B C@11 ~ C@39 ~ C@39 ~ C@24 ~>".pickRestart({
  A: "x!2 ~ x!2 ~ x ~ x ~ x!2 ~ x!2 ~", B: "x!2 ~ x!2 ~ x ~ x ~@2 x ~@2 x ~", C: "x!4",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@17 [~@6 x ~@2 x!2 ~@5] ~@39 [~@6 x ~@2 x!2 ~@5] ~@39 [~@6 x ~@2 x!2 ~@5] ~@25>")
  .gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<~@6 A@11 ~ A@39 ~ A@39 ~ A@24 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 [x ~@2 x ~@12] ~@39 [x ~@2 x ~@12] ~@39 [x ~@2 x ~@12] ~@25>").gain(0.42)

// drums · tambourine
const tambourine = s("tb").struct("<~@6 [x!16]!51 ~ [x!16]!39 ~ [x!16]!20 ~@5>").gain(0.24)

// drums · splash
const splash = s("cr").struct("<~@6 A ~@10 B ~@32 A ~@6 B ~@32 A ~@6 B ~@24 C>".pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~@2 x!2 ~ x ~@3", C: "x!4",
})).gain(0.24)

stack(
  bass, bass_soft, lead_2_sawtooth, lead_2_sawtooth_2, lead_2_sawtooth_3, piano, kick, clap, hihat, low_tom, open_hat,
  mid_tom, tambourine, splash
)

More by Masterboy