2012-05-07 10 views
5

私は単純な「仮想スクラッチャー」を作ろうとしていますが、その背後にある理論はわかりません。 Googleで役に立つものは何も見つかっていないので、私はここでそれを求めています:オーディオ処理でビニールスクラッチエフェクトをエミュレートするにはどうすればよいですか?

  • 私はスクラッチ(トラックを前方に移動)するとどうなりますか?サンプルのピッチやレートを上げますか?
  • この現象をオーディオ処理アルゴリズムでどのようにエミュレートできますか?あなたがスクラッチすると

サンプルコード/チュートリアルがreeeally

+0

Q:オーディオトラックを今どのように編集していますか?どのようなソフトウェアを使用していますか?私は、必要に応じていくつかの "スクラッチ"、 "ヒス"または "ポップ"エフェクトを混ぜるだけです。例:http://free-loops.com/5174-short-record-scratch.html – paulsm4

+0

私はAndroidアプリケーションとして開発しているので、Javaを使用しています。 デフォルトのJavaオーディオ処理またはOpenSLを使用すべきかどうかはまだ分かりません。これは、「スクラッチ」をエミュレートすると、ピッチ/レートやJavaにはないその他の機能が変更されることになります。 編集:私のアプリは、実際のビニールのようなトラックのコントロールをユーザーにさせます。再生中に前後に動かして「スクラッチ」エフェクトを取得させる – user1118094

+0

Androidはオーディオサンプルに直接アクセスできないため、少し難しいかもしれません(免責事項:私はAndroidデベロッパーではありませんが、これは私が聞いたことです。私はこれについて間違っているかもしれません)。つまり、あなたが探している特定の効果は「Varispeed」と呼ばれ、研究を開始するのに十分な情報を与えるはずです。エフェクトを完成させるために余分なノイズを加えたいと思うでしょう。 – admsyn

答えて

5

私はスクラッチ(トラックを前方に移動)するとどうなりますか? サンプルのピッチやレートを上げますか?

実際に起こっていることを考えてみましょう。レコードにはオーディオデータが含まれています。レコード針はレコードからオーディオデータを読み込みます。レコードが回転すると、再生位置が変わります。

物理的にスピンを速くスピンさせると、再生速度が上がります。再生スピードを上げると、再生スピードが速くなります。オーディオは、ピッチがより速く、より高い。再生速度を2倍にすると、オーディオは1オクターブ上で再生されます。

物理的にスロー再生すると再生速度が遅くなります。音声はピッチが遅く、ピッチも低くなります。再生速度を2倍にすると、オーディオは1オクターブ下がります。

レコードは、物理レコードを高速化または減速することによってオーディオ再生を変更することができます。これは、ピッチと再生レートの両方に影響します。一部のオーディオソフトウェアでは、ピッチとレートを個別に変更できます。レコードプレーヤーはできません。

(それはのような音を聞くためにレコードプレーヤーと実験を取得します。)

私はオーディオ処理アルゴリズムと、この現象をエミュレートできますか?

レコードをスクラッチするDJをエミュレートするには、ユーザーが「スクラッチ」しているときにオーディオの再生レートを調整できる必要があります。

ユーザーがレコードの速度を上げると、再生速度が速くなります。ユーザーがレコードを遅くすると、再生速度が遅くなります。

ユーザーがレコードを停止すると、再生をすべて停止します。

ユーザーがレコードを逆に回転させると、再生を元に戻します。

オーディオの音程を変更する必要はありません。再生レートを変更すると自動的に再生レートが変更されます。音程をさらに調整すると、音が間違って聞こえます。

私はライブラリに関するアドバイスはありませんが、このようなことは時間がかかりすぎると実装するのが難しくありません。

1

:-)いただければ幸いです、あなただけの針の下で前後のレコードを移動しています。したがって、オーディオファイルの同じ部分を繰り返して前後にループするのと同じです。私は速度が正弦波と三角波の間のどこかにあると思います。サンプルに対して線形補間を行う必要があります。

モバイルアプリでは、画面の1軸をオーディオファイルの時間範囲にマッピングすることから始めます。最後にMotionEventを含むバッファーを保管してください。次のMotionEventが到着したら、(X,Y)の座標に基づいて、マップされた開始位置と終了位置を計算します。次に、2つの間の経過時間を計算しますMotionEvents。これにより、適切な位置と速度でファイルから再生するための十分な情報が得られ、常に各モーションイベントで更新されます。

データのスムージングを行う必要があるかもしれませんが、これが出発点です。

1

可変レートリサンプラーが適切かもしれません。これにより、再生率が上がり、同じ比率で音程が上がります。

"スクラッチ"の動きの角速度と通常のプラッタの回転速度の比を追跡し、それをローカルリサンプリング率として使用します。

可変幅Sinc補間カーネルを使用するなど、線形補間よりもレートリサンプリングを行うDSPの方がはるかに優れています(オーディオ品質が向上します)。

関連する問題