「サウンドにおけるGPU作ろうぜ!」
という話をたまに聞くんだけど、それってどうなの?
例えばこんなの。(以下、シェーダー(?)ソース)

// result(i) = s(i)*0.5 + s(i-1)*0.3 + s(i-2)*0.2 + s(i-3)*0.1;
// ( result は最終的な再生音 )
// ( s(i)はi番目のサンプル )
//
// この手順をすべてのサンプルに対して適用する。
// r はs(i)と同義
r *= 0.5;
t = sample(-1); // t に一つ前のサンプルを代入
r += t * 0.3;
r += sample(-2) * 0.2;
r += sample(-3) * 0.1;
return r;

プログラム上ではこんな感じに展開される。
switch (channels や bits_per_sample とか適当に) {
case 8ビットモノラル: {
 dst = (uint8_t *)dst_ptr;
 src = (const uint8_t *)src_ptr;
 for (i = 0; i < size; ++i) {
  dst[i] = (uint8_t)(src[i]*0.5 + src[i-1]*0.3 + src[i-2]*0.2 + src[i-3]*0.1);
 }
 } break;
case 16ビットモノラル: {
 dst = (uint16_t *)dst_ptr;
 src = (const uint16_t *)src_ptr;
 ...
}