OSDN Git Service

#37243 WASAPI排他/共有をどちらも不自然な挙動なく設定できるよう修正。更新間隔を排他時はminperiodに、共有時はdefperiodにしたうえで...
authoryyagi <yyagi.dtxmania@gmail.com>
Mon, 19 Jun 2017 14:24:22 +0000 (23:24 +0900)
committeryyagi <yyagi.dtxmania@gmail.com>
Mon, 19 Jun 2017 14:24:22 +0000 (23:24 +0900)
#xxxxx 演奏画面での各フレームの時間測定のためのテストコードを追加。(DTXManiaのプロジェクトでTEST_MEASUREFRAMEDRAWTIMEを有効にすることで、演奏画面を抜ける際にlogに出力する)
#xxxxx readmeを更新。

DTXMania/DTXMania.csproj
DTXMania/コード/ステージ/07.演奏/CStage演奏画面共通.cs
FDK/コード/03.サウンド/CSound.cs
FDK/コード/03.サウンド/CSoundDeviceWASAPI.cs
RuntimeResources/readme_en.txt
RuntimeResources/readme_jp.txt

index 3801c0f..3b52ec3 100644 (file)
@@ -42,7 +42,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;_TEST_ENGLISH TEST_Direct3D9Ex_ WindowedFullscreen</DefineConstants>
+    <DefineConstants>TRACE;DEBUG;_TEST_ENGLISH TEST_Direct3D9Ex_ WindowedFullscreen TEST_MEASUREFRAMEDRAWTIME_</DefineConstants>
     <DebugType>full</DebugType>
     <PlatformTarget>x86</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
index 60ee9a5..af50f99 100644 (file)
@@ -8,6 +8,8 @@ using System.Drawing.Imaging;
 using System.IO;
 using System.Diagnostics;
 using System.Threading;
+using System.Threading.Tasks;
+
 using SharpDX;
 using SharpDX.Direct3D9;
 using FDK;
@@ -102,6 +104,12 @@ namespace DTXMania
 
                STDGBSValue<CScoreIni.C演奏記録> record;
 
+#if TEST_MEASUREFRAMEDRAWTIME
+               Stopwatch sw = new Stopwatch();
+               List<long> swlist = new List<long>(100000);
+               List<long> tmlist = new List<long>(100000);
+#endif
+
                public CStage演奏画面共通()
                {
                        base.eステージID = CStage.Eステージ.演奏;
@@ -500,6 +508,15 @@ namespace DTXMania
                                        strPanel += " (" + strLabel + ")";
                                }
                                this.actPanel.SetPanelString( strPanel );
+
+#if TEST_MEASUREFRAMEDRAWTIME
+                               swlist.Clear();
+                               swlist.Capacity = 100000;
+                               sw.Reset();
+                               sw.Start();
+                               tmlist.Clear();
+                               tmlist.Capacity = 100000;
+#endif
                        }
                }
                public override void On非活性化()
@@ -523,6 +540,27 @@ namespace DTXMania
                                cInvisibleChip.Dispose();
                                cInvisibleChip = null;
                                base.On非活性化();
+
+#if TEST_MEASUREFRAMEDRAWTIME
+                               sw.Stop();
+                               Trace.TraceInformation("Freq={0:F10}", Stopwatch.Frequency);
+                               Trace.TraceInformation("IsHighResolution=" + Stopwatch.IsHighResolution);
+                               Trace.TraceInformation("Count=" + swlist.Count );
+                               double last_d = 0;
+                               long last_t = 0;
+                               int p = 0;
+                               foreach (long l in swlist)
+                               {
+                                       double d = (double)l / Stopwatch.Frequency;
+                                       double d2 = d - last_d;
+                                       long t = tmlist[p++];
+                                       long t2 = t - last_t;
+                                       Trace.TraceInformation("{0:F10}, {1:F10}, {2:d6}, {3:d3}", d, d2, t, t2);
+                                       last_d = d;
+                                       last_t = t;
+                               }
+                               swlist.Clear();
+#endif
                        }
                }
                public override void OnManagedリソースの作成()
@@ -779,6 +817,11 @@ namespace DTXMania
                                {
                                        this.tキー入力();
                                }
+
+#if TEST_MEASUREFRAMEDRAWTIME
+                               swlist.Add(sw.ElapsedTicks);
+                               tmlist.Add(CSound管理.rc演奏用タイマ.n現在時刻ms);
+#endif
                        }
                        return 0;
                }
@@ -835,11 +878,17 @@ namespace DTXMania
                                                STMixer stm = queueMixerSound.Dequeue();
                                                if (stm.bIsAdd)
                                                {
-                                                       CDTXMania.Instance.Sound管理.AddMixer(stm.csound, db再生速度, stm.b演奏終了後も再生が続くチップである);
+                                               //      var task = Task.Run(() =>
+                                               //      {
+                                                          CDTXMania.Instance.Sound管理.AddMixer(stm.csound, db再生速度, stm.b演奏終了後も再生が続くチップである);
+                                               //      });
                                                }
                                                else
                                                {
-                                                       CDTXMania.Instance.Sound管理.RemoveMixer(stm.csound);
+                                               //      var task = Task.Run(() =>
+                                               //      {
+                                                               CDTXMania.Instance.Sound管理.RemoveMixer(stm.csound);
+                                               //      });
                                                }
                                        }
                                }
index 4a1b12a..ae565b4 100644 (file)
@@ -138,12 +138,12 @@ namespace FDK
                /// <para>排他WASAPIバッファの更新間隔。出力間隔ではないので注意。</para>
                /// <para>→ 自動設定されるのでSoundDelay よりも小さい値であること。(小さすぎる場合はBASSによって自動修正される。)</para>
                /// </summary>
-               public static int SoundUpdatePeriodExclusiveWASAPI = 6;
+               public static int SoundUpdatePeriodExclusiveWASAPI = 1;
                /// <summary>
                /// <para>共有WASAPIバッファの更新間隔。出力間隔ではないので注意。</para>
                /// <para>SoundDelay よりも小さい値であること。(小さすぎる場合はBASSによって自動修正される。)</para>
                /// </summary>
-               public static int SoundUpdatePeriodSharedWASAPI = 6;
+               public static int SoundUpdatePeriodSharedWASAPI = 10;
                /// <summary>
                /// WASAPI利用時に、サウンドバッファの更新をevent drivenにするか、pollingにするかの設定。
                /// デフォルト設定はpolling。event drivenにすることで、よりラグを小さくできるが、CPU負荷は若干上昇する。
index a31cd45..358f6fd 100644 (file)
@@ -227,17 +227,15 @@ namespace FDK
 
                                // Trace.TraceInformation( "Selected Default WASAPI Device: {0}", deviceInfo.name );
                                // Trace.TraceInformation( "MinPeriod={0}, DefaultPeriod={1}", deviceInfo.minperiod, deviceInfo.defperiod );
-                               //n更新間隔ms = (long) ( deviceInfo.minperiod * 1000 );
 
-                               n更新間隔ms = Convert.ToInt64(Math.Ceiling(deviceInfo.minperiod * 1000.0f));
+                               // n更新間隔ms = ( mode == Eデバイスモード.排他 )? Convert.ToInt64(Math.Ceiling(deviceInfo.minperiod * 1000.0f)) : Convert.ToInt64(Math.Ceiling(deviceInfo.defperiod * 1000.0f));
+                               // 更新間隔として、WASAPI排他時はminperiodより大きい最小のms値を、WASAPI共有時はdefperiodより大きい最小のms値を用いる
+                               // Win10では、更新間隔がminperiod以下だと、確実にBASS_ERROR_UNKNOWNとなる。
 
-                               //n更新間隔ms = Convert.ToInt64((deviceInfo.minperiod + 0.0005) * 1000.0f);   // Win10では、更新間隔がminperiod以下だと、確実にBASS_ERROR_UNKNOWN
-                               //n更新間隔ms = Convert.ToInt64((deviceInfo.defperiod + 0.0005) * 1000.0f);   // Win10では、更新間隔がminperiod以下だと、確実にBASS_ERROR_UNKNOWN
-
-                               if ( n希望バッファサイズms <= 0 || n希望バッファサイズms < n更新間隔ms + 1 )
-                               {
-                                       n希望バッファサイズms = n更新間隔ms + 1; // 2013.4.25 #31237 yyagi; バッファサイズ設定の完全自動化。更新間隔=バッファサイズにするとBASS_ERROR_UNKNOWNになるので+1する。
-                               }
+                               //if ( n希望バッファサイズms <= 0 || n希望バッファサイズms < n更新間隔ms + 1 )
+                               //{
+                               //      n希望バッファサイズms = n更新間隔ms + 1; // 2013.4.25 #31237 yyagi; バッファサイズ設定の完全自動化。更新間隔=バッファサイズにするとBASS_ERROR_UNKNOWNになるので+1する。
+                               //}
                        }
                        else
                        {
@@ -273,10 +271,29 @@ namespace FDK
                        }
                        n周波数 = deviceInfo.mixfreq;
                        nチャンネル数 = deviceInfo.mixchans;
-               Trace.TraceInformation("n希望バッファサイズms=" + n希望バッファサイズms);
-               Trace.TraceInformation("n更新間隔ms=" + n更新間隔ms);
-                       float f希望バッファサイズsec = (n希望バッファサイズms > 0) ? (n希望バッファサイズms / 1000.0f) : deviceInfo.minperiod * 4;
-                       float f更新間隔sec = (n更新間隔ms > 0)? (n更新間隔ms / 1000.0f) : deviceInfo.minperiod;
+
+                       Trace.TraceInformation("n希望バッファサイズms=" + n希望バッファサイズms);
+                       Trace.TraceInformation("n更新間隔ms=" + n更新間隔ms);
+
+
+                       // 更新間隔として、WASAPI排他時はminperiodより大きい最小のms値を、WASAPI共有時はdefperiodより大きい最小のms値を用いる
+                       float fPeriod = (mode == Eデバイスモード.排他) ? deviceInfo.minperiod : deviceInfo.defperiod;
+                       Trace.TraceInformation("fPeriod=" + fPeriod);
+                       float f更新間隔sec = (n更新間隔ms > 0) ? (n更新間隔ms / 1000.0f) : fPeriod;
+                       if (f更新間隔sec < fPeriod)
+                       {
+                               f更新間隔sec = fPeriod;     // Win10では、更新間隔がminperiod以下だと、確実にBASS_ERROR_UNKNOWNとなる。
+                       }
+                       // バッファサイズは、更新間隔より大きくする必要あり。(イコールだと、WASAPI排他での初期化時にBASS_ERROR_UNKNOWNとなる)
+                       // そのため、最低でも、更新間隔より1ms大きく設定する。
+                       float f希望バッファサイズsec = (n希望バッファサイズms > 0) ? (n希望バッファサイズms / 1000.0f) : fPeriod + 0.001f;
+                       if (f希望バッファサイズsec < fPeriod)
+                       {
+                               f希望バッファサイズsec = fPeriod + 0.001f;
+                       }
+                       Trace.TraceInformation("f希望バッファサイズsec=" + f希望バッファサイズsec);
+                       Trace.TraceInformation("f更新間隔sec=" + f更新間隔sec);
+
                        Trace.TraceInformation("Start Bass_Wasapi_Init(device=" + nDevNo + ", freq=" + n周波数 + ", nchans=" + nチャンネル数 + ", flags=" + flags + "," +
                                " buffer=" + f希望バッファサイズsec + ", period=" + f更新間隔sec);
                        if (BassWasapi.BASS_WASAPI_Init(nDevNo, n周波数, nチャンネル数, flags, f希望バッファサイズsec, f更新間隔sec, this.tWasapiProc, IntPtr.Zero))
index ab8eb0a..2828b2f 100644 (file)
@@ -1,11 +1,11 @@
 ============================================================\r
   DTXMania .NET style\r
-  (C) 2000 2016 DTXMania Group\r
+  (C) 2000 2017 DTXMania Group\r
 ============================================================\r
 \r
 * Requirements\r
 \r
-(1) OS ...  Windows Vista / 7 (x86, x64) / 8 (x86, x64) / 10 (x86, x64)\r
+(1) OS ...  Windows 7 (x86, x64) / 8 (x86, x64) / 10 (x86, x64)\r
 (2) .NET Framework ... Version 4.5.1\r
    (You'll need to install .NET Framework 4.5.1 additionaly on Win8.1 or before)\r
 (3) DirectX End User Runtime ... June 2010 Version or later\r
index 0bc3f9a..8009b83 100644 (file)
@@ -1,11 +1,11 @@
 ============================================================\r
   DTXMania .NET style\r
-  (C) 2000 2016 DTXMania Group\r
+  (C) 2000 2017 DTXMania Group\r
 ============================================================\r
 \r
 \81¡\93®\8dì\82É\95K\97v\82È\82à\82Ì\r
 \r
-(1) OS ...  Windows Vista / 7 (x86, x64) / 8 (x86, x64) / 10 (x86, x64)\r
+(1) OS ...  Windows 7 (x86, x64) / 8 (x86, x64) / 8.1 (x86, x64) / 10 (x86, x64)\r
 (2) .NET Framework ... 4.5.1\r
 \81@(Win8.1\88È\91O\82ÌOS\82Å\82Í\81A.NET Framework 4.5.1\82Ì\92Ç\89Á\83C\83\93\83X\83g\81[\83\8b\82ª\95K\97v\82Å\82·)\r
 (3) DirectX \83G\83\93\83h\83\86\81[\83\83\89\83\93\83^\83C\83\80 ... June 2010 \88È\8d~\r
@@ -43,29 +43,31 @@ DTXMania 
 \r
 \81¡\8bÈ\83f\81[\83^\82Ì\83C\83\93\83X\83g\81[\83\8b\r
 \r
-\8bÈ\83f\81[\83^\81iDTX, GDA\82È\82Ç\81j\82Í\96{\83A\81[\83J\83C\83u\82É\82Í\8aÜ\82Ü\82ê\82Ä\82¢\82Ü\82¹\82ñ\82Ì\82Å\81A\r
-\8f\89\8aú\8fó\91Ô\82Å\82Í\8bÈ\82ª\82P\82Â\82à\95\\8e¦\82³\82ê\82Ü\82¹\82ñ\81B\r
+\8bÈ\83f\81[\83^(DTX, GDA\82È\82Ç)\82Í\96{\83A\81[\83J\83C\83u\82É\82Í\8aÜ\82Ü\82ê\82Ä\82¢\82Ü\82¹\82ñ\82Ì\82Å\81A\r
+\8f\89\8aú\8fó\91Ô\82Å\82Í\8bÈ\82ª1\82Â\82à\95\\8e¦\82³\82ê\82Ü\82¹\82ñ\81B\r
 \8ae\8e©\81A\82¢\82ë\82¢\82ë\82È\8eè\92i\82Å\93ü\8eè\82µ\82Ä\89º\82³\82¢\81B\81i\8a¾\r
 \r
 \93ü\8eè\82µ\82½\8bÈ\83f\81[\83^\82Í\81ADTXManiaGR.exe \82Æ\93¯\82\83t\83H\83\8b\83_\82Ì\92\86\82É\r
-\93K\93\96\82È\96¼\91O\81i\89½\82Å\82à\82æ\82¢\81j\82Ì\83t\83H\83\8b\83_\82ð\8dì\82è\81A\82»\82Ì\92\86\82É\83R\83s\81[\82µ\82Ä\r
+\93K\93\96\82È\96¼\91O(\89½\82Å\82à\82æ\82¢)\82Ì\83t\83H\83\8b\83_\82ð\8dì\82è\81A\82»\82Ì\92\86\82É\83R\83s\81[\82µ\82Ä\r
 \89º\82³\82¢\81B\r
 \r
-DTXMania \82Í\81AConfig.xml\81iDTXMania\82ð1\89ñ\82Å\82à\8bN\93®\82·\82é\82Æ\8e©\93®\93I\82É\r
-\8dì\90¬\82³\82ê\82Ü\82·\81j\82Ì strSongDataPath \82Å\8ew\92è\82³\82ê\82½\83t\83H\83\8b\83_\82ð\83\8b\81[\83g\83t\83H\83\8b\83_\r
-\82Æ\82µ\82Ä\8bÈ\83f\81[\83^\82ð\8c\9f\8dõ\82µ\82Ü\82·\81B\r
+DTXMania \82Í\81A\92Ê\8fí\81ADTXManiaGR.exe\82ª\82 \82é\83t\83H\83\8b\83_\82ð\83\8b\81[\83g\83t\83H\83\8b\83_\82Æ\r
+\82µ\82Ä\81A\8bÈ\83f\81[\83^\82ð\8c\9f\8dõ\82µ\82Ü\82·\81B\r
+\r
+\83\8b\81[\83g\83t\83H\83\8b\83_\82©\82ç\82Ì\8aK\91w\82Ì\90[\82³\82Í\96â\82¢\82Ü\82¹\82ñ\81B\82Ç\82±\82Ü\82Å\82à\90[\82­\92T\82µ\82É\r
+\8ds\82«\82Ü\82·\81B\r
+\r
+Config.xml\81iDTXMania\82ð1\89ñ\82Å\82à\8bN\93®\82·\82é\82Æ\81ADTXManiaGR.exe\82Æ\93¯\82\r
+\83t\83H\83\8b\83_\82É\8e©\93®\93I\82É\8dì\90¬\82³\82ê\82Ü\82·\81j\82Ì strSongDataPath \82Ì\93à\97e\82ð\95Ï\8dX\r
+\82·\82é\82±\82Æ\82Å\81A\83\8b\81[\83g\83t\83H\83\8b\83_\82ð\95Ï\8dX\82Å\82«\82Ü\82·\81B\r
+(\82±\82Ì\8dÛ\82É\81A\83\8b\81[\83g\83t\83H\83\8b\83_\82Í\81A\83Z\83~\83R\83\8d\83\93\82Å\8bæ\90Ø\82Á\82Ä\81A\95¡\90\94\8ew\92è\82Å\82«\82Ü\82·)\r
 \r
-\83\8b\81[\83g\83t\83H\83\8b\83_\82©\82ç\82Ì\8aK\91w\82Ì\90[\82³\82Í\96â\82¢\82Ü\82¹\82ñ\81B\r
-\82Ç\82±\82Ü\82Å\82à\90[\82­\92T\82µ\82É\8ds\82«\82Ü\82·\81B\r
 \r
-\81y\92\8d\88Ó\81z\r
-\8f\89\8aú\8fó\91Ô\82Å\82Í\81AstrSongDataPath \82É\82Í DTXManiaGR.exe \82Ì\91\8dÝ\82·\82é\83t\83H\83\8b\83_\82ª\r
-\8ew\92è\82³\82ê\82Ä\82¢\82Ü\82·\81B\r
 \r
 DTXMania \82Í\81A\8bÈ\82Ì\89\89\91t\8c\8b\89Ê\82ð\81A\8bÈ\83f\81[\83^\82Ì\91\8dÝ\82·\82é\83t\83H\83\8b\83_\93à\82É\r
 socre.ini \83t\83@\83C\83\8b\82Æ\82µ\82Ä\8fo\97Í\82µ\82Ü\82·\81B\82»\82Ì\82½\82ß\81A\r
-\81u\8bÈ\83f\81[\83^\82Ì\91\8dÝ\82·\82é\83t\83H\83\8b\83_\82É"\8f\91\82«\8d\9e\82Ý\8c \8cÀ"\82ª\96³\82¯\82ê\82Î\81ADTXMania \82ª\r
-\81@\83G\83\89\81[\8fI\97¹\82·\82é\82©\81A\82Ü\82½\82Í\8bL\98^\82ª\8ec\82³\82ê\82Ü\82¹\82ñ\81B\81v\r
+\8bÈ\83f\81[\83^\82Ì\91\8dÝ\82·\82é\83t\83H\83\8b\83_\82É"\8f\91\82«\8d\9e\82Ý\8c \8cÀ"\82ª\96³\82¯\82ê\82Î\81ADTXMania \82ª\r
+\83G\83\89\81[\8fI\97¹\82·\82é\82©\81A\82Ü\82½\82Í\8bL\98^\82ª\8ec\82³\82ê\82Ü\82¹\82ñ\81B\r
 \r
 \82æ\82Á\82Ä\81APC \82Ì\8aÇ\97\9d\8eÒ\88È\8aO\82Ì\90l\82ª DTXMania \82Å\97V\82Ô\8fê\8d\87\82Í\81A\8bÈ\83f\81[\83^\82Ì\94z\92u\r
 \8fê\8f\8a\82É\82²\92\8d\88Ó\82­\82¾\82³\82¢\81B\r
@@ -73,26 +75,23 @@ socre.ini 
 \r
 \81¡WASAPI/ASIO\91Î\89\9e\82É\82Â\82¢\82Ä\r
 DTXMania\82Í\81ARelease 096\88È\8d~\81AWASAPI/ASIO\82É\91Î\89\9e\82µ\82Ä\82¢\82Ü\82·\81B\r
-\8f]\97\88\82Ì\83o\81[\83W\83\87\83\93\82Æ\94ä\82×\82Ä\81A\83p\83b\83h\82ð\92@\82¢\82Ä\82©\82ç\89¹\82ª\8fo\82é\82Ü\82Å\82Ì\83\89\83O\82ð\r
-\8f¬\82³\82­\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B(\93Á\82ÉVista\88È\8d~\82ÌOS\82Å\82Ì\8cø\89Ê\82ª\8c°\92\98\82Å\82·\81B)\r
+\82Ü\82½\81ARelease 109\88È\8d~\82Å\82Í\81AWASAPI\82Í\81AWASAPI-Exclusive(WASAPI\94r\91¼)\82Æ\r
+WASAPI-Shared(WASAPI\8b¤\97L)\82Ì\97¼\95û\82É\91Î\89\9e\82µ\82Ü\82µ\82½\81B\r
+(Release 096\81`108\82ÌWASAPI\91Î\89\9e\82Í\81AWASAPI\94r\91¼\82Ì\82Ý\82Å\82µ\82½)\r
+\r
+WASAPI\94r\91¼\96\94\82ÍASIO\82ð\8eg\97p\82·\82é\82±\82Æ\82Å\81A\8f]\97\88\82Ì\83o\81[\83W\83\87\83\93\82Æ\94ä\82×\82Ä\81A\r
+\83p\83b\83h\82ð\92@\82¢\82Ä\82©\82ç\89¹\82ª\8fo\82é\82Ü\82Å\82Ì\83\89\83O\82ð\8f¬\82³\82­\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\r
 \r
-Vista\88È\8d~\82ÌOS\82Å\82Í\81A\8f\89\8aú\8fó\91Ô\82Å\82ÍWASAPI\82Å\83T\83E\83\93\83h\82ð\8dÄ\90\82·\82é\90Ý\92è\82É\r
-\82È\82Á\82Ä\82¢\82Ü\82·\81BASIO\82É\95Ï\8dX\82·\82é\8fê\8d\87\82Í\81ACONFIGURATION\82Å\81ASoundType\82ð\r
-ASIO\82É\95Ï\8dX\82µ\82Ä\89º\82³\82¢\81B\r
+\8f\89\8aú\8fó\91Ô\82Å\82ÍWASAPI\94r\91¼\82Å\83T\83E\83\93\83h\82ð\8dÄ\90\82·\82é\90Ý\92è\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B\r
+ASIO\82É\95Ï\8dX\82·\82é\8fê\8d\87\82Í\81ACONFIGURATION\82Å\81ASoundType\82ðASIO\82É\95Ï\8dX\82µ\82Ä\89º\82³\82¢\81B\r
 (XP\82ð\82¨\8eg\82¢\82Ì\8fê\8d\87\82Í\81A\8f\89\8aú\90Ý\92è\82ÍDirectSound(\8f]\97\88\82Æ\93¯\82¶)\82Å\82·\81B)\r
 \r
-WASAPI\82ð\8eg\97p\82·\82é\82æ\82¤\82É\90Ý\92è\82µ\82Ä\82à\81AWASAPI\82ª\8eg\97p\82Å\82«\82È\82¢\82Æ\82«\82Í\81A\r
-\8e©\93®\93I\82ÉASIO\82ð\8eg\82¤\82æ\82¤\8e\8e\82Ý\82Ü\82·\81B\r
-\93¯\97l\82É\81AASIO\82ª\8eg\97p\82Å\82«\82È\82¢\82Æ\82«\82Í\81ADirectSound\82ð\8eg\82¢\82Ü\82·\81B\r
 \r
-****************\8fd\97v\82È\92\8d\88Ó********************************\r
-WASAPI/ASIO\8eg\97p\8e\9e\82Í\81A\8f]\97\88\82Æ\82Í\88Ù\82È\82é\89\89\91t\83^\83C\83}\81[\82ð\8eg\82¤\82½\82ß\81A\r
-\8aù\91\82Ì\8bÈ\83f\81[\83^\82Å\89¹\83Y\83\8c\82ª\94­\90\82·\82é\82±\82Æ\82ª\82 \82è\82Ü\82·\81B\r
-(\93Á\82ÉWindows7\82ÆDTXCreator(DTXView)\82Ì\91g\82Ý\8d\87\82í\82¹\82Å\8dì\82Á\82½\r
\8bÈ\83f\81[\83^\82Å\8bN\82±\82é\89Â\94\\90«\82ª\8d\82\82¢\82Å\82·)\r
-\8c»\8e\9e\93_\82Å\81A\82±\82ê\82É\91Î\82·\82é\97L\8cø\82È\8cÝ\8a·\90«\88Û\8e\9d\82Ì\91Î\8dô\82ð\8c©\82¢\82¾\82¹\82Ä\r
-\82¨\82è\82Ü\82¹\82ñ\81B\8bÈ\83f\81[\83^\82Ì\8dÄ\92²\90®\82ª\95K\97v\82Å\82·\81B\r
-**********************************************************\r
+ASIO\82ð\8eg\97p\82·\82é\82æ\82¤\82É\90Ý\92è\82µ\82Ä\82à\81A\82±\82ê\82ª\8eg\97p\82Å\82«\82È\82¢\8fê\8d\87\82Í\81A\8e©\93®\93I\82É\r
+WASAPI_Exclusive(WASAPI\94r\91¼)\82ð\8eg\82¤\82æ\82¤\8e\8e\82Ý\82Ü\82·\81B\8dX\82ÉWASAPI\94r\91¼\82ª\8eg\97p\r
+\82Å\82«\82È\82¢\8fê\8d\87\82ÍWASAPI_Shared(WASAPI\8b¤\97L)\82ð\81AWASAPI\8b¤\97L\82ª\8eg\97p\82Å\82«\82È\82¢\r
+\82Æ\82«\82Í\81ADirectSound\82ð\8eg\82¢\82Ü\82·\81B\r
+\r
 \r
 \83E\83C\83\93\83h\83E\82Ì\83^\83C\83g\83\8b\82É\81A\8eg\97p\82µ\82Ä\82¢\82é\83T\83E\83\93\83h\8fo\97Í\95û\8e®\82Æ\81A\r
 \83o\83b\83t\83@\83T\83C\83Y\82ð\95\\8e¦\82µ\82Ä\82¢\82Ü\82·\81B\r
@@ -105,24 +104,28 @@ WASAPI/ASIO
 \88È\89º\82Ì\92\8d\88Ó\8e\96\8d\80\82ð\82æ\82­\93Ç\82ñ\82Å\81A\90³\82µ\82­\90Ý\92è\82µ\82Ä\82²\8eg\97p\89º\82³\82¢\81B\r
 \r
 \r
-\81¡WASAPI\8eg\97p\8e\9e\82Ì\92\8d\88Ó\r
+\81¡WASAPI\94r\91¼/\8b¤\97L\8eg\97p\8e\9e\82Ì\92\8d\88Ó\r
 WASAPI\82Í\81AVista\88È\8d~\82Å\8eg\97p\82Å\82«\82Ü\82·\81BXP\82Å\82Í\8eg\97p\82Å\82«\82Ü\82¹\82ñ\81B\r
 \r
 \81¡ASIO\8eg\97p\8e\9e\82Ì\92\8d\88Ó\r
 ASIO\82Í\81AXP\82Å\82à\8eg\97p\89Â\94\\82Å\82·\82ª\81AASIO\82É\91Î\89\9e\82µ\82½\83T\83E\83\93\83h\83J\81[\83h\82ª\r
-\95K\97v\82Å\82·\81B\r
+\95K\97v\82Å\82·\81BASIO\82É\91Î\89\9e\82µ\82Ä\82¢\82È\82¢\83T\83E\83\93\83h\83J\81[\83h\82ÅASIO\82ð\8eg\82¤\r
+\8fê\8d\87\82Í\81A\83t\83\8a\81[\83\\83t\83g\82Ì"ASIO4ALL"\82ð\83C\83\93\83X\83g\81[\83\8b\82µ\82Ä\82¨\82­\82±\82Æ\82Å\81A\r
+\82 \82é\92ö\93xASIO\82Ì\90«\94\\82ð\97\98\97p\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\r
 \r
 ASIO\8eg\97p\8e\9e\82Í\81AASIO\82Ì\83o\83b\83t\83@\83T\83C\83Y\82ð\93K\90Ø\82É\90Ý\92è\82µ\82Ä\89º\82³\82¢\81B\r
 \82±\82Ì\83o\83b\83t\83@\83T\83C\83Y\82Í\81ADTXMania\82Å\90Ý\92è\82·\82é\82Ì\82Å\82Í\82È\82­\81A\r
 \83T\83E\83\93\83h\83f\83o\83C\83X\91¤\82Å\90Ý\92è\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\r
 (\83T\83E\83\93\83h\83f\83o\83C\83X\82É\90Ý\92è\83c\81[\83\8b\82ª\95t\91®\82µ\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\81A\r
  \83t\83\8a\81[\83\\83t\83g\82Ì"ASIO caps"\82È\82Ç\82ª\8eg\97p\89Â\94\\82Å\82·)\r
-\90Ý\92è\82ª\93K\90Ø\82Å\82È\82¢\8fê\8d\87\81ADTXMania\82ÍASIO\82Å\93®\8dì\82Å\82«\82¸\81A\r
-\91ã\82í\82è\82ÉDirectSound\82Å\93®\8dì\82µ\82Ü\82·\81B\r
 \r
 \82Ü\82½\81AASIO\82ð\8eg\82¤\8fê\8d\87\82Í\81A\8dX\82É\83T\83E\83\93\83h\8fo\97Í\83f\83o\83C\83X\82ð\r
-ASIODevice\82Å\91I\91ð\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\r
+CONFIGURATION/System/Sound Options/ASIODevice\82Å\91I\91ð\82·\82é\95K\97v\82ª\r
+\82 \82è\82Ü\82·\81B\r
 (WASAPI\82ÆDirectSound\82Ì\8fê\8d\87\82Í\81AOS\82Ì\8aù\92è\82Ì\83T\83E\83\93\83h\83f\83o\83C\83X\82ð\r
\8eg\82¢\82Ü\82·\82Ì\82Å\81A\83T\83E\83\93\83h\8fo\97Í\83f\83o\83C\83X\82Ì\91I\91ð\82Í\95s\97v\82Å\82·\81B)\r
\8eg\82¤\82½\82ß\81A\83T\83E\83\93\83h\8fo\97Í\83f\83o\83C\83X\82Ì\91I\91ð\82Í\95s\97v\82Å\82·\81B)\r
 \82±\82±\82Å\91\8dÝ\82µ\82È\82¢\83f\83o\83C\83X\82È\82Ç\82ª\8ew\92è\82³\82ê\82Ä\82¢\82é\8fê\8d\87\82Í\81A\r
 DTXMania\82ª\8bN\93®\82µ\82È\82¢\82±\82Æ\82ª\82 \82è\82Ü\82·\81B\r
+\r
+ASIO\82Ì\90Ý\92è\82ª\93K\90Ø\82Å\82È\82¢\8fê\8d\87\81ADTXMania\82ÍASIO\82Å\93®\8dì\82Å\82«\82¸\81A\r
+\91ã\82í\82è\82ÉWASAPI(\94r\91¼/\8b¤\97L)\82âDirectSound\82Å\93®\8dì\82µ\82Ü\82·\81B\r