I have changed this when creating the new resampler patch but it&#39;s not really related to the main patchset.<br><br>---<br> dlls/dsound/mixer.c |   40 ++++++++++++++++++++++------------------<br> 1 files changed, 22 insertions(+), 18 deletions(-)<br>
<br>diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c<br>index 4e9e2c9..6e9fdf5 100644<br>--- a/dlls/dsound/mixer.c<br>+++ b/dlls/dsound/mixer.c<br>@@ -46,36 +46,40 @@ WINE_DEFAULT_DEBUG_CHANNEL(dsound);<br> void DSOUND_RecalcVolPan(PDSVOLUMEPAN volpan)<br>
 {<br>     double temp;<br>-    TRACE(&quot;(%p)\n&quot;,volpan);<br> <br>-    TRACE(&quot;Vol=%d Pan=%d\n&quot;, volpan-&gt;lVolume, volpan-&gt;lPan);<br>+    /* 0.01dB units: vol=100*20*log(amp); amp = 10^(vol/2000) */<br>
+    temp = pow(10.0, volpan-&gt;lVolume / 2e3);<br>+<br>     /* the AmpFactors are expressed in 16.16 fixed point */<br>-    volpan-&gt;dwVolAmpFactor = (ULONG) (pow(2.0, volpan-&gt;lVolume / 600.0) * 0xffff);<br>-    /* FIXME: dwPan{Left|Right}AmpFactor */<br>
+    volpan-&gt;dwVolAmpFactor = (DWORD)(temp*(DOUBLE)0x10000);<br>+    volpan-&gt;dwTotalLeftAmpFactor = volpan-&gt;dwVolAmpFactor;<br>+    volpan-&gt;dwTotalRightAmpFactor = volpan-&gt;dwVolAmpFactor;<br> <br>-    /* FIXME: use calculated vol and pan ampfactors */<br>
-    temp = (double) (volpan-&gt;lVolume - (volpan-&gt;lPan &gt; 0 ? volpan-&gt;lPan : 0));<br>-    volpan-&gt;dwTotalLeftAmpFactor = (ULONG) (pow(2.0, temp / 600.0) * 0xffff);<br>-    temp = (double) (volpan-&gt;lVolume + (volpan-&gt;lPan &lt; 0 ? volpan-&gt;lPan : 0));<br>
-    volpan-&gt;dwTotalRightAmpFactor = (ULONG) (pow(2.0, temp / 600.0) * 0xffff);<br>+    if (volpan-&gt;lPan &gt; 0) /* left channel attenuated */<br>+        volpan-&gt;dwTotalLeftAmpFactor = (DWORD)(temp*(DOUBLE)0x10000<br>
+                    * pow(10.0, -volpan-&gt;lPan / 2e3));<br> <br>-    TRACE(&quot;left = %x, right = %x\n&quot;, volpan-&gt;dwTotalLeftAmpFactor, volpan-&gt;dwTotalRightAmpFactor);<br>+    if (volpan-&gt;lPan &lt; 0) /* right channel attenuated */<br>
+        volpan-&gt;dwTotalRightAmpFactor = (DWORD)(temp*(DOUBLE)0x10000<br>+                    * pow(10.0, volpan-&gt;lPan / 2e3));<br> }<br> <br> void DSOUND_AmpFactorToVolPan(PDSVOLUMEPAN volpan)<br> {<br>     double left,right;<br>
-    TRACE(&quot;(%p)\n&quot;,volpan);<br> <br>-    TRACE(&quot;left=%x, right=%x\n&quot;,volpan-&gt;dwTotalLeftAmpFactor,volpan-&gt;dwTotalRightAmpFactor);<br>-    if (volpan-&gt;dwTotalLeftAmpFactor==0)<br>-        left=-10000;<br>
+#define LOG10(x) log(x)/log(10)<br>+<br>+    if (volpan-&gt;dwTotalLeftAmpFactor == 0)<br>+        left = -10000;<br>     else<br>-        left=600 * log(((double)volpan-&gt;dwTotalLeftAmpFactor) / 0xffff) / log(2);<br>-    if (volpan-&gt;dwTotalRightAmpFactor==0)<br>
-        right=-10000;<br>+    left = 2e3 * LOG10((DOUBLE)volpan-&gt;dwTotalLeftAmpFactor / 0x10000);<br>+<br>+    if (volpan-&gt;dwTotalRightAmpFactor == 0)<br>+        right =- 10000;<br>     else<br>-        right=600 * log(((double)volpan-&gt;dwTotalRightAmpFactor) / 0xffff) / log(2);<br>
+    right= 2e3 * LOG10((DOUBLE)volpan-&gt;dwTotalRightAmpFactor / 0x10000);<br>+<br>     if (left&lt;right)<br>     {<br>         volpan-&gt;lVolume=right;<br>-- <br>1.7.2.3<br><br><br>