オーディオ トラックにエンベロープを適用するために、オーディオ アンプをコーディングしています。オーディオは、生の 44100 KHz 16 ビット ステレオ サンプルを含むファイルから取得されます。以下のようなコードを書きました。例を単純化するために、増幅率は一定ですが、実際のプロジェクトでは変化しています。
<?php
$arrRawSamples = unpack('s*', fread($resAudio, 4096));
$fltAmpFactor = 0.8;
foreach (array_keys($arrSamples) as $intKey) {
$arrRawSamples[$intKey] = $arrRawSamples[$intKey] * $fltAmpFactor;
}
$strAmpSamples = call_user_func_array('pack', array_merge(array('s*'), $arrRawSamples));
php>
これはうまく機能し、乗算係数が適用された後にオーディオを再生できますが、ループは大量の CPU を消費します (増幅ループを使用しないアンパック/パックのみで約 2%、ループを使用すると 25% の CPU)。CPUの消費量が少ないソリューションを知っているかどうか教えてください。