トップページ > 記事閲覧
再生周波数について
名前:Tir 日時: 2020/03/13 22:36

毎度お世話になっております。 毎回発生するわけでは無いのですが音楽を再生しながらSetFrequencySoundMemで再生周波数を変更して元に戻すと GetSoundCurrentTimeで取得する再生時間が飛んでしまう場合があります。 これは防ぐことが出来るのでしょうか?
メンテ

Page: 1 |

Re: 再生周波数について ( No.1 )
名前:Tir(解決) 日時:2020/03/14 07:49

済みません自己解決しました BGMを一度止めて周波数を変更後現在の再生位置から再生することで再生位置を飛ばさずに変更することが出来ました。
メンテ
Re: 再生周波数について ( No.2 )
名前:管理人 日時:2020/03/15 02:14

すみません、恐らく最近実装した『再生周波数を SetFrequencySoundMem で変更していなければ GetSoundCurrentTime 等で取得できる再生位置をより正確なものにする』という処理が悪さをしているのだと思います ( SetFrequencySoundMem で再生周波数が変更された場合とそうでない場合で再生位置の取得処理がかなり異なるので ) この『再生周波数を SetFrequencySoundMem で変更していなければ GetSoundCurrentTime 等で取得できる再生位置をより正確なものにする』 処理を OFF にするための関数を追加しましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 以下の関数を追加しました // GetSoundCurrentTime などを使用した場合に取得できる再生時間のタイプを設定する // Type : 再生時間のタイプ // DX_SOUNDCURRENTTIME_TYPE_LOW_LEVEL : 条件が揃う場合は低レベルAPIを使用してより正確な再生時間を取得する( デフォルト ) // DX_SOUNDCURRENTTIME_TYPE_SOFT : APIは使用せず、ソフトウェア処理レベルでの再生時間を取得する int SetSoundCurrentTimeType( int Type ) ; こちらの関数を DxLib_Init の前にでも SetSoundCurrentTimeType( DX_SOUNDCURRENTTIME_TYPE_SOFT ); として呼んでいただければ『再生周波数を SetFrequencySoundMem で変更していなければ GetSoundCurrentTime 等で取得できる再生位置をより正確なものにする』の機能がOFFになるので、 再生途中に SetFrequencySoundMem で再生周波数を変更しても GetSoundCurrentTime で取得する 再生時間が飛ぶことはなくなると思います
メンテ
Re: 再生周波数について ( No.3 )
名前:管理人 日時:2020/03/15 03:10

すみません、その後『音楽を再生しながらSetFrequencySoundMemで再生周波数を変更して元に戻すと GetSoundCurrentTimeで取得する再生時間が飛んでしまう』現象を手元の環境でも確認しました 想像していた以上に大きく飛んでいて、こちらは普通にバグとなります orz SetFrequencySoundMem を使用する前提でしたら SetSoundCurrentTimeType( DX_SOUNDCURRENTTIME_TYPE_SOFT ); を 呼んでおいた方が得られる値は安定しますが、とりあえず SetSoundCurrentTimeType( DX_SOUNDCURRENTTIME_TYPE_SOFT ); を 呼ばなくても激しく再生時間が飛ぶようなことは無いように修正しました m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: 再生周波数について ( No.4 )
名前:Tir(解決) 日時:2020/03/15 19:29

試してみたところ無事にSetSoundCurrentTimeType( DX_SOUNDCURRENTTIME_TYPE_SOFT );を呼ばなくても全く気にならないくらいになりました 正直再生時間が飛ぶのは仕様だと思っていたのでここまで気にならないレベルになった事に驚いています。有難うございました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存