Re: SetSoundCurrentTimeの使い方について ( No.1 ) |
- 名前:管理人 日時:2008/09/22 06:57
私の手元でも簡単なテストプログラムを組んでみましたが
とりあえず補正後のズレが30以上になることはありませんでした
ソースと実行ファイルをアップしてみましたので宜しければ
Dixqさんの環境でも正常に動作するかお試しになってみてください
(テストプログラムを実行するには test.wav というファイル名の
wavファイルをご用意ください)
http://homepage2.nifty.com/natupaji/temp/SetSoundCurrentTimeTest.zip
|
Re: SetSoundCurrentTimeの使い方について ( No.2 ) |
- 名前:ディッション 日時:2008/09/23 16:54
サウンド関係でちょっと興味を持ったので、
試しにやってみたところ自分も補正後は10前後に収まりました。
しかし、管理人さんのプログラムにSetLoopPosSoundMemを追加したところ、
-5000前後に変化しました。(ちなみにこれは無圧縮PCM、MP3ともに)
どうやら、GetStreamSoundCurrentTimeを呼び出すまでに内部の変数が書き換えられてしまうようです。
|
Re: SetSoundCurrentTimeの使い方について ( No.3 ) |
- 名前:ディッション 日時:2008/09/23 17:34
追記というか原因(おそらく)突き止めました。
dxsound.cpp(1764行前後)の
if( UpdateFlag == 0 )
{
if( sd->Stream.PrevCheckPlayPosition < CurPosition )
{
sd->Stream.CompPlayWaveLength += CurPosition - sd->Stream.PrevCheckPlayPosition ;
}
else
{
//ここ sd->Stream.CompPlayWaveLength += ( sd->Stream.SoundBufferSize - sd->Stream.PrevCheckPlayPosition ) + CurPosition ;
}
}
の部分でStream.CompPlayWaveLengthに対して+5000ずらしを行っていました。
この行をコメントアウトしてライブラリをリビルドしたところ、ずれはなくなりました。
しかし、ほんとうに必要になるタイミングがあるかもしれないので正直危険です。
あと、最後まで読み込んだ後、ループで戻るとズレが愉快なことになります。
|
Re: SetSoundCurrentTimeの使い方について ( No.4 ) |
- 名前:管理人 日時:2008/09/23 22:26
ご報告ありがとうございます
ただ、私の手元で試した限りでは SetLoopPosSoundMem を使用しても
特にライブラリのソースを変更しなくても問題は発生しませんでしたので、
やはりここ最近の機能追加の際にサウンド関連のバグも修正していたようです
こちらが最新バージョンのソースですので、もし宜しければお試しに
なってみて下さい m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe
あと、サンプルプログラムではループ以降は考慮していませんので、
表示される数値は正常ではなくなると思います
( SetSoundCurrentTime で指定する値がサウンドファイルの長さ
以上になってしまうので )
|
Re: SetSoundCurrentTimeの使い方について ( No.5 ) |
- 名前:Dixq 日時:2008/09/25 03:42
ありがとうございます。
確かに私の実行結果も5000msほどずれていますね。
頂いたソースコードは
DXライブラリダウンロードの改造用をダウンロードして
ファイルを置き換えてコンパイルすればいいのでしょうか?
コンパイルしてみたところ
>cl : コマンド ライン error D8016 : コマンド ライン オプション '/O2' と '/RTC1' は同時に指定できません
と表示されてしまうのですが、何を直せばいいでしょうか;
|
Re: SetSoundCurrentTimeの使い方について ( No.6 ) |
- 名前:管理人 日時:2008/09/27 03:50
あ、DxLibMakeTest.exe はディッションさんに向けたものですので、
もしお確かめ頂けるのでしたらこちらのライブラリファイルを
お使いください
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
こちらのバージョンでしたら不具合は解消されていると思います
|
Re: SetSoundCurrentTimeの使い方について ( No.7 ) |
- 名前:Dixq 日時:2008/09/30 08:29
ご用意くださりありがとうございました。
ダウンロードさせていただきました。
|