New Product: Audio Hacker shield

The sample rate would be limited to around 30 kHz I think.

not too bad

The main constraint is the time required to do a floating point operation (over 300 clock cycles on an int), but it can be done if the sample rate is low enough.

if the float is a constant there might be some tricks to speed it up. E.g. multiply by PI

uint32_t mulPI(uint32_t in)
{
  // -1,0,3,6,11,12,13,14,15,16,18,19,21,23
  // 11,12,13,14,15,16, == +10 -16
  uint32_t q = (in<<1) + in + (in>>3) + (in>>6) + ((in>>2) - (in>>8))>>8;
  return q;
}

see also - divu5() and divu3(). Fast replacements for unsigned division by 3, 5, 6, 10, 15 - Libraries - Arduino Forum - and - divmod10() : a fast replacement for /10 and %10 (unsigned) - Libraries - Arduino Forum - if you are interested in optimizing