クロスフェードするには?

解決


いはら  2005-09-14 21:25:53  No: 92246  IP: [192.*.*.*]

現在mci関連のAPIを用いて音楽のプレーヤーを作成しています。
普通に1曲とか連続でとかの再生はできるようになりました。
次に、音量がクロスフェードして曲が変わるような機能を付けたい
と思っています。
単にフェードアウトならボリュームをタイマーとかで制御して
小さくすればいいのかなと思いますが、クロスフェードすると
なるとどのようにすれば良いのか方針が浮かんできません。
これを実現するための助言をいただけますでしょうか?
よろしくお願いします。

開発環境はVB6、WindowsXPです。

編集 削除
通ってみた  2005-09-14 21:54:07  No: 92247  IP: [192.*.*.*]

mciって複数の音を同時に鳴らせたっけ?(私が使っていた頃はできなかったですが)

DirectShowを使えばできそうですね
DirectSoundなら間違いなくできますが、wavしか対応していない気がするし

やり方は単にタイマーでフェードアウトしながらフェードインするだけだから簡単ですよね?

編集 削除
我龍院忠太  2005-09-15 09:09:57  No: 92248  IP: [192.*.*.*]

MicrosoftのWAVEMIX.DLLを使うと出来る。
http://www.compuphase.com/wavemix.htm

編集 削除
いはら  2005-09-15 20:58:37  No: 92249  IP: [192.*.*.*]

情報ありがとうございます。

どちらにせよ、再生部分は作り直しということですね。
うむむ。。。

DirectShowが比較的楽そうでしたので、とりあえずDirectShowを使ってみようと思います。

DirectShowを使う場合、IMediaControlのインスタンスを2つ作成し
IBasicAudioインタフェースで独立して、それぞれインスタンスのボリューム
を調整するというやり方でできるんでしょうか?

編集 削除
いはら  2005-09-16 21:23:35  No: 92250  IP: [192.*.*.*]

案ずるより生むが易しでした。
無事クロスフェードの機能を実装できました。

殆ど作り直しでしたが。
解決とします。

編集 削除