0

斜めの音の 5 秒の .wav ファイルがあります [0 秒 - 低音と 4 秒 - 高音]。この .wav ファイルからトーンを抽出し、それを再生して、範囲 [0 - 250] 値のプログレス バー値と共に速度制御についてユーザーに警告します。

したがって、速度値 = 0 の場合、プログレス バーは空で、.wav からのトーンは低いピッチ [0 秒] である必要があります。速度の値が 10 の場合、プログレス バーの値は 10 になり、.wav からのトーンのピッチはわずかに高くなります [たとえば 0.10 秒]。速度値 = 20 の場合、プログレス バーの値は 20 で、.wav からのトーンのピッチはわずかに高くなります [たとえば 0.20 秒] など、速度値 = 250 まで続きます。プログレス バーの値は 250 で、.wav からのトーンは最大になります。インピッチ [4 秒と言う]

私は.wavからのトーンのメディア抽出に不慣れで、プログレスバーの値に基づいてc#で再生します。プロセスをガイドしてください。

.wav カッターを使用して、.wav ファイルをバイト配列ストリームに変換しようとしました。しかし、プログレスバーの値に基づいて連続して再生することを理解していませんでした。より良い実装ロジックを手伝ってください。

前もって感謝します

4

1 に答える 1

0

WAV ファイルには PCM オーディオが含まれています。つまり、各サンプルはその瞬間の圧力レベルの測定値です。44.1kHz (CD オーディオの標準サンプリング レート) でサンプリングされた 1kHz の正弦波が 5 秒間あり、その 5 秒間の再生を 10 秒間に引き延ばしたいとします。これらのサンプルを単純にゆっくり再生して WAV ファイルを長持ちさせると、可聴ピッチを効果的に 1 オクターブ下げて 500Hz に下げ、サンプル レートを半分に下げて 22.05kHz に下げます。この例を取り上げて、周波数スイープの WAV について考えてみてください。事前に再生時間がわかっていても、スイープのピッチと長さを変更するだけです。これは本当にやりたいことではありません。

あなたはピッチを同じに保つことを求めていますが、時間を変えてください。これを行うには、PCM オーディオを時間領域から周波数領域に変換する必要があります。フーリエ変換 (ソフトウェアで FFT として実装) がこれを行います。これはMP3がどのように機能するかです。基本的に、波形の山と谷を測定する代わりに、さまざまな周波数帯域のレベルを測定し、それらを短い時間 (通常は約 8 ミリ秒) 再生します。いずれにせよ、これはあなたがしなければならないことにとって非常に面倒なことです。

プログレスバーが上がるので、自分で周波数スイープを生成することをお勧めします。単純な正弦波を生成し、プログレス バーが増加すると、生成している正弦波の周波数も増加します。はるかに簡単です。

于 2012-04-30T00:37:30.823 に答える