電子書籍の厳選無料作品が豊富!

VC++でwavの倍速再生(タイムストレッチ)を行いたいと思っています。
ロジックを組むには、かなり高度な知識と技術がいるようです…。
そこで、APIの『waveOutSetPlaybackRate』を使ってみようと思いましたが、
デバイスがサポートされていなければいけないようで、実現できませんでした。
『waveOutSetPlaybackRate』の使用できるデバイスをご存知の方、
『waveOutSetPlaybackRate』のわかる方、ご教授をよろしくお願いします。

A 回答 (2件)

デバイスは知らないのですが、比較的簡単に再生速度を変える方法に、OLA(Overlap-and-Add)があります。

やったことはないですが音質はあまりよくないようです。
その一種であるPICOLAに関する記事です。
http://keizai.yokkaichi-u.ac.jp/~ikeda/research/ …

この回答への補足

ご回答ありがとうございます。
サンプルソースもあるようですし、早速、勉強してみようと思います。
『音質はあまりよくない』そうですが、どの程度なんでしょうね。
試行錯誤してみて、後ほど報告したいと思います。

補足日時:2004/11/07 18:52
    • good
    • 0
この回答へのお礼

倍速再生できました!!
今回扱うwavデータが『PCM 8kHz 16ビット モノラル』とあまり音質の良いデータではないため、音質の劣化は気になりませんでした。
本当にありがとうございました。

※引き続き、『waveOutSetPlaybackRate』についての情報をもう少し待ってみたいと思います。

お礼日時:2004/11/10 09:02

メモリー上にwavファイルを展開して凝縮しては?


wavファイルのフォーマット自体は単純です。
倍速で再生するには偶数番目のデータを削れる単純な方法で良いかと。
(もちろん音は高くなりますけど)
音を高くしない方法になると、私には分かりません。

参考URL:http://www.graffiti.jp/pc/p030506a.htm

この回答への補足

ご回答ありがとうございます。
お察しの通り、音の高さはそのままに倍速再生を実現させたいのです。
音が高くなってもよければ、単純に順番にデータを削ったり、サンプリングレートを変えたりという方法でよいのですが…。

補足日時:2004/11/05 17:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!