Olha eu de novo...

Estou envolvido em uma aplicação muito complexa (pra mim que sou aprendiz

Dividi em várias partes o software e estou finalizando etapas por conclusão de êxito em cada uma.
Estou usando um STM32F M0 e o compilador Mikroc arm.
O problema é o seguinte:
Eu estou reproduzindo um arquivo .PCM, com uma resolução de 16bits, jogo isso num DAC de 16bits, tudo OK...belezinha. Agora preciso controlar o volume desse PCM, e não estou conseguindo fazer isso de forma alguma.
Tenho utilizado a seguinte formula, mas o que acontece é uma forte distorção:
A variável "volume" é de 8bits.
var_16bit é uma int que contém o dado PCM.
O dac de saida é de 16bits.
var_16bit = ((var_16bit * volume) >>

// a = ((a * b) >> c) & 0xff
// a = constante.
// b = variável de volume.
// c = deslocamento a direita ( /256 ).