- 240 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:10:42 ]
- >>238-239
書き方が悪くてすみません。 「音程を変化させずに速度変化をした」 処理です。 >>239 いいえ、3度以上の繰り返しについても問題なく実装しているはずです。 DirectSound+C#なので、部分抜き出しが難しいですが・・、 0.5以上1倍以下ではどれだけ細かい指定をしても平気なので、 ここにバグがあるわけでは無い・・・とは思うのですが。 decimal readCount = 0; decimal readSpeed = 0.4; for(writePoint=0;writePoint<(一秒分のバッファ長);writePoint+=(0.1秒分のバッファ長)) { readCount += (double)readSpeed; for(i=0;i<readCount;i++) { /* [readBufferに0.1秒分読み込み] */ } /* [readBufferから書き込み用バッファにwritePoint位置でコピー] */ readCount -= (int)readCount; } /* [書き込み用バッファを再生バッファにコピー] */ という感じでの実装です。 なんだっけ、グラフィックとかで良く使う「斜めの直線を整数型のみで計算するアルゴリズム」を応用した感じなのですが。
|

|