Strudelify

Come Baby Come (radio edit)

K7

KeyA minorTempo107 bpm
0:00/0:00
// Come Baby Come (radio edit) — K7
// 107 bpm, 4/4, key A 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(107/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// 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@12 B C D C A@7 E F@8 A@15 E F@8 A@4 B C D C A@8 ~@4 F@16 A@3 E>".pickRestart({
  A: "a1 ~ a1@4 ~ a1 g1 ~ a1@2 ~ g1 ~ g1", B: "a1 ~ a1@2 ~@2 a1 ~ b1 ~ b1@2 ~@2 b1 ~",
  C: "c2@2 c2@2 ~@2 c2@2 d2 ~ d2@2 ~@2 g1@2", D: "a1@2 a1@2 ~@2 a1 ~ b1 ~ b1@2 ~@2 b1 ~", E: "a1 ~ a1@4 ~ a1!2 ~@7",
  F: "a1 ~ a1 ~ c2@3 a1 e1 ~ e1@2 ~ e1 g1 e1",
})).s("gm_fretless_bass").gain(0.23)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<A@4 B@12 ~@4 B@7 C D@8 B@15 C D@8 B@4 ~@4 B@8 A@4 D@16 B@3 E>".pickRestart({
  A: "a3 ~@3 a3 ~@3 a3 ~@3 a3!2 ~ a3", B: "a3 ~ a3 ~@4 a3 g3 ~ a3 ~@2 g3 ~ g3", C: "a3 ~ a3 ~@4 a3 g3 ~@7",
  D: "a3 ~ a3 ~ c4 ~@2 a3 e3 ~ e3 ~@2 e3 g3 e3", E: "a3 ~ a3 ~@4 a3!2 ~@7",
})).s("gm_electric_guitar_muted").gain(0.09).pan(0.2)

// other · orchestra hit · "ORCH.HIT"
const orchestra_hit = note(`<
  A@3 B ~@2 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~ A
  ~ A ~@3 A@3 B A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "a4 ~@7", B: "a4@2 ~ a4@2 ~ a4@2 ~ a4@2 ~ a4@2 a4@2",
})).s("gm_orchestra_hit").gain(0.48)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note("<[c6@5 ~@11]!8 ~@16 [c6@5 ~@11]!4 ~@72>").s("gm_lead_3_calliope").gain(0.1).pan(0.8)

// other · brass section · "BRASS 1"
const brass_section = note("<~@11 A ~@3 A ~@20 B@4 ~@3 A ~@16 B@4 ~@11 A ~@23 A>".pickRestart({
  A: "~@8 d4!2 f4 a4@3 ~@2", B: "~@2 c5@2 a4 ~@5 c5@2 a4 ~@3",
})).s("gm_brass_section").gain(0.32).pan(0.3)

// other · alto sax
const alto_sax = note("<~@16 A B A B ~@16 A B A B A B A B ~@16 A B A B A B A B ~@32>".pickRestart({
  A: "a3!2 ~@2 a3@3 ~ b3!2 ~ b3@3 ~@2", B: "c4!2 ~ c4@3 ~@2 a4@2 ~ a4@3 ~@2",
})).s("gm_alto_sax").gain(0.28).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<~@4 A@12 ~@4 A@7 B A@15 C A@7 B A@12 ~@4 A@7 C ~@4 A@16 D@3 E>".pickRestart({
  A: "~@4 x ~@2 x ~@2 x ~ x!2 ~@2", B: "~@4 x ~@2 x ~@8", C: "~@4 x ~@2 x!2 ~ x ~ x!2 ~@2",
  D: "~@4 x ~@2 x ~ x!2 ~ x!2 ~@2", E: "~@4 x ~@2 x!4 ~ x!2 ~@2",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@4 A@12 ~@4 A@7 ~ A@23 ~ A@12 ~@4 A@8 ~@4 A@16 ~@4>".pickRestart({
  A: "~@9 x ~@6",
})).gain(0.18)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@21 A ~ A ~@5 A ~ A ~ A ~ A ~@9 A ~ A ~@5 A ~ A ~ A ~ A ~@16 B@3 ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6",
})).gain(0.48)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@11 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.36)

// drums · ht
const ht = s("ht").struct(`<
  ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@11 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "~@8 x!2 ~ x!2 ~@3",
})).gain(0.48)

// drums · mt
const mt = s("mt").struct(`<
  ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@11 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "~@7 x ~@2 x ~@5",
})).gain(0.24)

stack(
  bass, electric_guitar_muted, orchestra_hit, lead_3_calliope, brass_section, alto_sax, kick, snare, snare_soft, hihat,
  low_tom, open_hat, crash, ht, mt
)