トップページ > 記事閲覧
ASIOを使用する際の不具合?
名前:was-blue.0793 日時: 2022/10/10 17:14

いつもお世話になっております。 音楽ゲームの制作において「SetEnableASIOFlag」関数を使ってのASIO対応を行っておりますが、複数のASIOドライバが入っているとASIOのセットアップに失敗することがあります。 特に、楽曲制作ソフトである「Cubase」を導入していて「Generic Low Latency ASIO Driver」というASIOドライバがあると確実にASIOのセットアップが失敗するようです。 現状ではDxLib側から使用するASIOドライバを選択できない仕様のようですが、DxLib側から使用するASIOドライバを指定することは可能でしょうか? 参考として、以下にDxLibのログに記されている音声関連の処理のログを載せます: 620: ASIO の初期化を行います 622: ASIOドライバの列挙を開始します 624: ASIOドライバのレジストリ階層を取得しました 626: ASIOドライバNo.0 のドライバキー名は Donner USB Audio Device です 628: ASIOドライバNo.0 のドライバキー階層の取得に成功しました 630: ASIOドライバNo.0 のCLSIDは {5fc1a528-b0cb-4ed9-ad02-50502054ed59} です 635: ASIOドライバNo.0 のCLSIDの情報を発見しました 639: ASIOドライバNo.0 のCLSIDの情報階層の取得に成功しました 642: ASIOドライバNo.0 のドライバのパスキーの取得に成功しました 646: ASIOドライバNo.0 のドライバのパスは c:\donner\usb audio device driver\w10_x64\donnerusbaudioasio_x64.dll です 648: ASIOドライバNo.0 のドライバDllの存在が確認できました 650: ASIOドライバNo.0 のドライバをリストに追加しました 653: ASIOドライバNo.1 のドライバキー名は Generic Low Latency ASIO Driver です 655: ASIOドライバNo.1 のドライバキー階層の取得に成功しました 657: ASIOドライバNo.1 のCLSIDは {52ebae30-47e4-483f-b87b-770314306005} です 662: ASIOドライバNo.1 のCLSIDの情報を発見しました 664: ASIOドライバNo.1 のCLSIDの情報階層の取得に成功しました 666: ASIOドライバNo.1 のドライバのパスキーの取得に成功しました 668: ASIOドライバNo.1 のドライバのパスは C:\Program Files\Steinberg\Asio\asioglld.dll です 670: ASIOドライバNo.1 のドライバDllの存在が確認できました 673: ASIOドライバNo.1 のドライバをリストに追加しました 675: ASIOドライバNo.2 のドライバキー名は US-HR Series ASIO Driver です 677: ASIOドライバNo.2 のドライバキー階層の取得に成功しました 679: ASIOドライバNo.2 のCLSIDは {0b895135-3e37-418f-86f4-688ed2789606} です 681: ASIOドライバNo.2 のCLSIDの情報を発見しました 684: ASIOドライバNo.2 のCLSIDの情報階層の取得に成功しました 686: ASIOドライバNo.2 のドライバのパスキーの取得に成功しました 688: ASIOドライバNo.2 のドライバのパスは c:\program files\tascam\us-hr\x64\us_asio.dll です 691: ASIOドライバNo.2 のドライバDllの存在が確認できました 693: ASIOドライバNo.2 のドライバをリストに追加しました 695: ASIOドライバの列挙が完了しました 697: ASIOドライバをロードします 701: ASIOドライバをロードに成功しました 704: ASIOを初期化します 706: ASIOの初期化に失敗しました 708: DirectSound の初期化を行います 710: DirectSound インターフェースの取得を行います.... 成功 718: 引き続きインターフェースの初期化処理... 成功 742: DirectSound デバイスを列挙します 744: Module Name : Description : プライマリ サウンド ドライバー 746: Module Name : {0.0.0.00000000}.{166df215-2db3-4510-82fb-216a0790525c} Description : スピーカー (US-1x2 HR) 751: Module Name : {0.0.0.00000000}.{095e8b32-d916-428c-8997-082abb6d09d1} Description : CABLE Input (VB-Audio Virtual Cable) 757: Module Name : {0.0.0.00000000}.{15d1daf1-aacd-4b91-a233-7a4522d253fe} Description : SHARP HDMI (NVIDIA High Definition Audio) 761: Module Name : {0.0.0.00000000}.{6ca2b4e5-c987-43c6-a48f-53206c714c72} Description : PL2561H (NVIDIA High Definition Audio) 766: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 770: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 775: 利用可能サンプリング精度 779: Primary 16bit = OK 8bit = OK 783: Secondary 16bit = OK 8bit = OK 787: 利用可能チャンネル 790: Primary MONO = OK STEREO = OK 794: Secondary MONO = OK STEREO = OK 798: DirectSound の初期化は正常に終了しました
メンテ

Page: 1 |

Re: ASIOを使用する際の不具合? ( No.1 )
名前:管理人 日時:2022/10/11 12:33

ASIOドライバの初期化失敗ですか… コードを見てみましたが引数はメインウィンドウのハンドルのみで、 『理解が難しい引数が複数あって、サンプル通りに書いているが実は間違っていた』 といった類のものもないので何故失敗するか謎です( ↓初期化の行 ) // ASIOを初期化 if( SoundSysData.PF.ASIO_Driver[ SoundSysData.PF.ASIO_DriverUseIndex ]->init( GetMainWindowHandle() ) == 0 ) { > 現状ではDxLib側から使用するASIOドライバを選択できない仕様のようですが、DxLib側から使用するASIOドライバを指定することは可能でしょうか? 現状では最初に見つかったASIOドライバを固定で使用していましたので、ドライバを番号で指定する関数を追加しました その関数を追加したバージョンをこちらにアップしましたので、よろしければダウンロードしてください 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/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 以下の関数を追加しました // サウンドの再生に使用するASIOドライバーの番号を設定する( デフォルトでは 0 ) int SetUseASIODriverIndex( int Index ) ; こちらの引数で指定する番号は、ログに出力されている 626: ASIOドライバNo.0 のドライバキー名は Donner USB Audio Device です 653: ASIOドライバNo.1 のドライバキー名は Generic Low Latency ASIO Driver です 675: ASIOドライバNo.2 のドライバキー名は US-HR Series ASIO Driver です ↑ こちらの No.0〜2 となります 例えば Generic Low Latency ASIO Driver を指定されたい場合は SetUseASIODriverIndex( 1 ); を DxLib_Init の呼び出し前に記述してください m(_ _)m
メンテ
Re: ASIOを使用する際の不具合? ( No.2 )
名前:was-blue.0793 日時:2022/10/12 21:57

>管理人さん ご対応ありがとうございます。 ただ、リビルドしようとすると以下の警告が出てくるようです: 「C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用\DxLib.h(2573,1): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」 また、別スレッドに書き込みましたがDxLibの不具合とみられる動作が確認されているので、こちらも確認していただけると幸いでございます。
メンテ
Re: ASIOを使用する際の不具合? ( No.3 )
名前:管理人 日時:2022/10/13 09:42

> ただ、リビルドしようとすると以下の警告が出てくるようです: ご指摘ありがとうございます 修正したものをアップしましたので、よろしければお使いください 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/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ

Page: 1 |

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

   クッキー保存