オーディオ コンピューティングの世界の皆さん、こんにちは。
録音を表すサンプルの配列があります。44100Hzで5秒としましょう。ピッチを上げてこれを再生するにはどうすればよいですか? また、ピッチを動的に増減することは可能ですか? ピッチをゆっくり上げて速度を 2 倍にしてから下げるようにします。
言い換えれば、DJ によって「スクラッチ」されているかのように、録音して再生したいのです。
疑似コードは常に歓迎されます。これをCで書きます。
ありがとう、
編集1
私の意図をはっきりさせてください。再生を 44100Hz に保ちたいので、再生前にサンプルを操作する必要があります。これは、ピッチを上げたオーディオと通常の速度で実行されているオーディオをミックスしたいからでもあります。
別の言い方をすれば、どうにかして同じサンプル数でオーディオを縮小する必要があるのでしょうか? そうすれば再生すると速くなるのでは?
編集2
また、これは自分でやりたいと思っています。ライブラリは使用しないでください (コードを調べて興味深いものを見つけることができると思わない限り)。
編集3
2 つの引数 (サンプルの配列とピッチ係数) を取り、新しいオーディオの配列を返す C で書かれたサンプル コードは素晴らしいでしょう!
PS私は、すでに与えられた答えが有効ではないとは思わないからではなく、これについて報奨金を開始しました。このテーマについてもっと多くのフィードバックを得ることができれば良いと思いました。
報奨金の授与
正直なところ、非常に役立つと思った回答がかなり多かったので、いくつかの異なる回答に報奨金を分配できればと思います。いくつかのコードを渡してくれた Daniel と、そのような詳細な応答を提供してくれた AShelly と Hotpaw2 に特別な感謝の意を表します。
最終的には、datageist によって参照された別の SO の質問からの回答を使用したため、賞は彼に与えられます。
みんなありがとう!