OSDN Git Service

#34712 とマスターボリューム対応について、今までの試行錯誤の経過をを放出。ASIOでは動作するが、WASAPIでは動作せず。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Wed, 17 Dec 2014 14:57:05 +0000 (14:57 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Wed, 17 Dec 2014 14:57:05 +0000 (14:57 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@782 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CActConfigList.cs
FDK17プロジェクト/コード/03.サウンド/CSound.cs
FDK17プロジェクト/コード/03.サウンド/CSoundDeviceWASAPI.cs
実行時フォルダ(DTXCreator)/dll/FDK.dll
実行時フォルダ/DTXManiaGR.exe
実行時フォルダ/dll/FDK.dll

index 268ef46..a547005 100644 (file)
@@ -434,17 +434,17 @@ namespace DTXMania
                        this.list項目リスト.Add( this.iSystemSoundTimerType );\r
                        #endregion\r
                        // #33700 2013.1.3 yyagi\r
-                       //this.iSystemMasterVolume = new CItemInteger( "MasterVolume", 0, 100, CDTXMania.ConfigIni.nMasterVolume,\r
-                       //    "マスターボリュームの設定:\n" +\r
-                       //    "全体の音量を設定します。\n" +\r
-                       //    "0が無音で、100が最大値です。\n" +\r
-                       //    "(WASAPI/ASIO時のみ有効です)",\r
-                       //    "Master Volume:\n" +\r
-                       //    "You can set 0 - 100.\n" +\r
-                       //    "\n" +\r
-                       //    "Note:\n" +\r
-                       //    "Only for WASAPI/ASIO mode." );\r
-                       //this.list項目リスト.Add( this.iSystemMasterVolume );\r
+                       this.iSystemMasterVolume = new CItemInteger( "MasterVolume", 0, 100, CDTXMania.ConfigIni.nMasterVolume,\r
+                               "マスターボリュームの設定:\n" +\r
+                               "全体の音量を設定します。\n" +\r
+                               "0が無音で、100が最大値です。\n" +\r
+                               "(WASAPI/ASIO時のみ有効です)",\r
+                               "Master Volume:\n" +\r
+                               "You can set 0 - 100.\n" +\r
+                               "\n" +\r
+                               "Note:\n" +\r
+                               "Only for WASAPI/ASIO mode." );\r
+                       this.list項目リスト.Add( this.iSystemMasterVolume );\r
 \r
                        this.iSystemSkinSubfolder = new CItemList( "Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex,\r
                                "スキン切替:\n" +\r
@@ -1860,10 +1860,10 @@ namespace DTXMania
                }\r
                private void t要素値を上下に変更中の処理()\r
                {\r
-                       //if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemMasterVolume )                            // #33700 2014.4.26 yyagi\r
-                       //{\r
-                       //    CDTXMania.Sound管理.nMasterVolume = this.iSystemMasterVolume.n現在の値;\r
-                       //}\r
+                       if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemMasterVolume )                              // #33700 2014.4.26 yyagi\r
+                       {\r
+                               CDTXMania.Sound管理.nMasterVolume = this.iSystemMasterVolume.n現在の値;\r
+                       }\r
                }\r
 \r
 \r
@@ -2588,7 +2588,7 @@ namespace DTXMania
                private CItemList iGuitarSudHid;                                        // #32072 2013.9.20 yyagi\r
                private CItemList iBassSudHid;                                          // #32072 2013.9.20 yyagi\r
                private CItemBase iSystemReloadDTX;                                     // #32081 2013.10.21 yyagi\r
-               //private CItemInteger iSystemMasterVolume;                     // #33700 2014.4.26 yyagi\r
+               private CItemInteger iSystemMasterVolume;                       // #33700 2014.4.26 yyagi\r
 \r
                private int t前の項目( int nItem )\r
                {\r
@@ -2710,7 +2710,7 @@ namespace DTXMania
 //Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(true) );\r
 //Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
 //Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
-                       //CDTXMania.ConfigIni.nMasterVolume = this.iSystemMasterVolume.n現在の値;                                                   // #33700 2014.4.26 yyagi\r
+                       CDTXMania.ConfigIni.nMasterVolume = this.iSystemMasterVolume.n現在の値;                                                     // #33700 2014.4.26 yyagi\r
                        CDTXMania.ConfigIni.e判定表示優先度 = (E判定表示優先度) this.iSystemJudgeDispPriority.n現在選択されている項目番号;\r
                }\r
                private void tConfigIniへ記録する・Bass()\r
index e0c659a..563a2f1 100644 (file)
@@ -63,6 +63,7 @@ namespace FDK
                        //{\r
                        //    if ( SoundDeviceType == ESoundDeviceType.ExclusiveWASAPI )\r
                        //    {\r
+                       //                      // LINEARでなくWINDOWS(2)を使う必要があるが、exclusive時は使用不可、またデバイス側が対応してないと使用不可\r
                        //        bool b = BassWasapi.BASS_WASAPI_SetVolume( BASSWASAPIVolume.BASS_WASAPI_CURVE_LINEAR, value / 100.0f );\r
                        //        if ( !b )\r
                        //        {\r
index fadeec1..12a9be6 100644 (file)
@@ -71,8 +71,16 @@ namespace FDK
                        }\r
                        set\r
                        {\r
-                               bool b = Bass.BASS_SetVolume( value / 100.0f );\r
-                               // hMixerに対するBASS_ChannelSetAttribute()でBASS_ATTRIB_VOLを変更: 出力音量に反映されず\r
+                               // bool b = Bass.BASS_SetVolume( value / 100.0f );\r
+                               // →Exclusiveモード時は無効\r
+\r
+//                             bool b = BassWasapi.BASS_WASAPI_SetVolume( BASSWASAPIVolume.BASS_WASAPI_VOL_SESSION, (float) ( value / 100 ) );\r
+//                             bool b = BassWasapi.BASS_WASAPI_SetVolume( BASSWASAPIVolume.BASS_WASAPI_CURVE_WINDOWS, (float) ( value / 100 ) );\r
+                               bool b = Bass.BASS_ChannelSetAttribute( this.hMixer, BASSAttribute.BASS_ATTRIB_VOL, (float) ( value / 100.0 ) );\r
+                               // If you would like to have a volume control in exclusive mode too, and you're using the BASSmix add-on,\r
+                               // you can adjust the source's BASS_ATTRIB_VOL setting via BASS_ChannelSetAttribute.\r
+                               // しかし、hMixerに対するBASS_ChannelSetAttribute()でBASS_ATTRIB_VOLを変更: なぜか出力音量に反映されず\r
+\r
                                // Bass_SetVolume(): BASS_ERROR_NOTAVIL ("no sound" deviceには適用不可)\r
 \r
                                // Mixer_ChannelSetEnvelope():\r
@@ -87,8 +95,8 @@ namespace FDK
                                }\r
                                else\r
                                {\r
-                                       //int n = this.nMasterVolume;   \r
-                                       //Trace.TraceInformation( "WASAPI Master Volume Set Success: " + value );\r
+                                       int n = this.nMasterVolume;     \r
+                                       Trace.TraceInformation( "WASAPI Master Volume Set Success: " + value );\r
 \r
                                }\r
                        }\r
index ed47459..d93d243 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/dll/FDK.dll and b/実行時フォルダ(DTXCreator)/dll/FDK.dll differ
index 075d757..e42975d 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ
index ed47459..d93d243 100644 (file)
Binary files a/実行時フォルダ/dll/FDK.dll and b/実行時フォルダ/dll/FDK.dll differ