Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: My tests over kmixer effects (Read 99084 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

My tests over kmixer effects

Reply #25
I finally got my DAC back and repeated my tests via playback of encoded DTS 44.1Khz DTS wav files. I installed the latest Winamp 2.81 and again tried the Waveout, Direct Sound and ASIO output plugins. This is now a true end to end test which removes the potential of introducing problems via the loopback.

Again the result is that only the use of the ASIO plugin let me play these wav files unmodified so my processor can figure out the DTS encoding.

I tried to set force hardware mixing in the Direct Sound output plugin and get the same error message about not being able to create a buffer.

I am using the M-audio DIO24/96 with the consumer driver 5.10.0.5031 dated 10/15/2002 on XP-SP1. This is a non resampling card and it seems there is still some bit mangling going on in kmixer.

Has anyone else on this forum been able to play 44.1 Khz wav files with DTS encoding using Waveout or DirectSound on Windows XP. What card are you using? 

(I know this is possible with the USB connected M-audio Sonica and the RME Digi 24/96 since they both bypass kmixer).

Cheers

  Thomas

My tests over kmixer effects

Reply #26
Are you sure that all volume levels are set to maximum? I noticed that the ASIO plugin ignores the volume setting in Winamp while the other plugins don't.

My tests over kmixer effects

Reply #27
Yes, that could happen, but depends also on the settings of the card control panel.

thomaspf, make sure that you M-Audio card control panel is properly set when playing the files: internal clock, 44.1 KHz freq., Hw. Out spdif to Wave out sdpif out, and try the different digital output format and data type settings just in case. Disable volume control at Winamp (just in case, in mine doesn't work). Make sure you are not using a SSRC output plugin, DSP plugin or the like.

My tests over kmixer effects

Reply #28
I set everything up as it shoud and also consulted with one of the distributors of the M-audio cards in the US to no avail.

If kmixer is in the middle there is no bit transparent playback with these cards on Windows XP. ASIO and supposedly Kernel streaming are the two solutions that work. In fact, I got more communication from users of other cards seeing the same problem. AC97 cards are out of luck to begin with but even a Lynx Studio 2 has the same behavior. At his point people should really try this out and refrain from pointing to volume control, effects processsing etc.

So, I am really interested what other cards if any people have been using to make this work correctly on Windows XP.

Cheers

    Thomas

My tests over kmixer effects

Reply #29
Here is another tidbit. I had a conversation with a user who uses a C-Media 8738 sound card with the M-audio DIO 24/48 driver.  Coincidentally he has a surround sound receiver , so he performed the quick test of playing DD/DTS encoded files to check for the kmixer problem.

He gets exactly the same behavior as I see on my M-audio DIO24/96 and for that matter anyone else using native WDM audio drivers on WinXP that I have heard of. Waveout and DirectSound modify the bit stream in a way that the surround receiver can't detect the surround streams any more.

This leaves the M-audio Sonica and the RME Digi 24/96 as the only cards I have heard about that work on W2K/XP to playback unmodified bits with Waveout or DirectSound.

Sorry, to burst the bubble but it seems it's time to change the headline on this thread.

My tests over kmixer effects
    Seem to be real .....


Thanks for all the help to get at the bottom of this

    Thomas

My tests over kmixer effects

Reply #30
This is strange, I hope I had a DTS decoder to make some tests. However I'm 100% sure that in case of my CMI8738 with DIO 2448 drivers, the spdif output is bit-perfect, there are no changed bits at all.

My tests over kmixer effects

Reply #31
I get bit perfect digital playback-record in loopback, but with WaveOut only, not with DirectSound.

Windows XP
Winamp 2.81
Marian Marc 2 digital out soundcard

32 kHz wave file
DirectSound output : the outside DAC gets 44.1 kHz streaming instead of 32 kHz !
WaveOut : the outside DAC gets 32 kHz streaming.

44.1 kHz wavefile. Optical out looped back into optical in. Digital out source is "application program".  Clock is slaved to the digital in (otherwise I get "an unknown error occured trying to open the device" when I want to begin recording).
SoundForge 4.5, recording device = Marc 2 digital in.
The recorded wav is identical to the original.

My tests over kmixer effects

Reply #32
I think the relevant results here would be for 44.1 and 48 KHz KHz data. So, for those, does it work ok both with waveout and directsound, or just with directsound?

 

My tests over kmixer effects

Reply #33
I just checked the Marian WEB site. It looks like the drivers for the Marian are similar to what RME is doing for the DIGI 24/96. Their windows XP drivers are not native WDM audio drivers but Win9x/NT style MME drivers with some additional glue (power mgmt, PNP) to make it run under W2K and XP. One of the open issues for them is to support native WDM applications.

Can you try kernel streaming?

The Marian card has a control panel that let's you lock in the format when using Diretcsound. Have you set this correctly for 44.1Khz and 48Khz.

The next OS release is supposed to address the problems with WDM audio / kmixer interaction. For the time being if yoo have a card with native WDM audio drivers you are out of luck.

Cheers

    Thomas

My tests over kmixer effects

Reply #34
OK, I've performed several RMAA (RightMark Audio Analyzer) measurements over all these things. They show how analog performance with directsound and waveout are virtually identical to ASIO output, both in 16 and 24 bit output mode, for my Audiophile card.

I've also compared analog output with and without kmixer resampling kicking in, and a digital measurement of kmixer resampling.

All them are accesible at http://www.kikeg.arrakis.es/measurements

My tests over kmixer effects

Reply #35
Well, a couple of months ago I managed to get mi CMI8738 based card digital input to work.

Using it, and bit-perfect recording the digital output of my Audiophile card at 44.1 KHz mode, I've been able to verify that kmixer indeed does something to the data passed to it. The change is very subtle, so it was not detectable on my analog measurements of the soundcard output. What I've verified that kmixer does to 16-bit audio data, is just mangle the last bit of the data. It does like some kind of re-dithering of the signal, adding a very little amount of spectrally uniform noise to the signal, so that it is no longer bit-perfect. It also adds a very little amount (around -120 dB amplitude) of distortion that can be considered negligible.

I have measured this noise but I don't have the results at hand right now, but with this noise added, the dynamic range of the 16-bit signal is still better than 90 dB.

I haven't been able to do same tests with 24-bit audio, because I can't get a 24-bit recorded data, but I think this is a problem of my testing configuration, because on analog measurements, the analog output of the card with kmixer processing was able to produce an analog signal with better dynamic range than the possible with 16-bit audio. I'm trying to fix this.

When using kernel streaming and ASIO, the output is bit-perfect in 16-bit mode, as it was supposed. There's some evidence that using directsound acceleration (also called hardware mixing) does same thing as using kernel streaming, and enables getting bit-perfect output. However, I haven't been able to verify this, since my Audiophile card doesn't support it.

Note that when kmixer is acting and you play 44.1 KHz data, it can do do two different things depending on the driver implementation. The first is just this relatively bening bit mangling I've talked about in this post. But on some cards and modes (wave output instead of directsound, for example), it will resample the signal to 48 KHz, and this is a greater change to the signal. I haven't done very detailed tests over this resampling, but it worsens a little bit more the SNR of the signal, causes some low-level distortion and causes a very slight HF rollof. At first I don't think this is audible under usual listening conditions, but I haven't done any listening tests.

Note also that there are some professional-oriented cards that use special WDM drivers that don't suffer from any of those kmixer issues. These drivers don't fully conform to the WDM standard, and can't use kernel streaming, but, on the other side, they don't need it. RME cards for example, use this kind of non-standard, kmixer-free, WDM drivers.

My tests over kmixer effects

Reply #36
Well, I just did a few more tests. I own now both a Revo and an Audiophile, so I can play all types of data on the digital output of the Revo and record them with the digital input of the Audiophile. I just did some RMAA 4.3 measurements, that uses WDM (directsound) drivers, and here are the results:

I will give results without A weighting, I like it better.

1st figure is reference, best possible value. 2nd is kmixer bit-mangled output.

Frequency response is totally flat in all cases, so is omitted.

16 bit, 44.1 KHz:
============
Noise: -96.4 dB, -93.4 dB
Dynamic range: 94 dB, 90.9 dB
THD: 0.000%, 0.001%
THD+N: 0.003%, 0.004%
IMD+Noise: 0.006%, 0.008%
Crosstalk @1KHz: -94 dB, -90 dB

The distortion product that appears at the THD measurement is at -110 dB, not -120 as I said previously. It is still a negligible value in my opinion. The biggest difference is the slight increase of the noise floor. As you see, even here the difference is quite small.

24 bit, 44.1 KHz:
============
Noise: -146.3 dB, -141.5 dB
Dynamic range: 139.5 dB, 137.3 dB
THD: 0.000%, 0.000%
THD+N: 0.000%, 0.000%
IMD+Noise: 0.000%, 0.000%
Crosstalk @1KHz: -141.8dB, -137.2 dB

For 32-bit audio, results are slightly better but very similar.

Taking into account that due to real-world constraints of electronics the best hardware available can't have a dynamic range better than around 120 dB, the effect of kmixer bit-mangling in this case is totally negligible.

And, if you play your 16-bit data as 24 bit or 32 bit, the result is that in practice the full 16-bit resolution is retained, even if you don't use kernel streaming, because the bit-mangling effects are much below 16-bit resolution. In a RMAA measurement, the results in this case were identical to the 16-bit reference results. But this will be true just if your card is a true 24-bit card.

Even when the differences are small or very small and quite possibly inaudible even in the the worst case, this bit-mangling will prevent from bit-perfect digital transfers in any case.

Again, note that this measurements are about this kmixer bit-mangling, which I don't think is any kind of resampling. Measurements of real kmixer resampling (that happens at my card when for example both a stream at 48 KHz and 44.1 KHz are played at same time, or when the output is locked at 48 KHz and you play a 44.1 KHz stream), and its effects are much more evident, see link at a previous post. Resampling produces a worse THD & IMD, easy to see at the THD spectrum, and a slight but measurable difference in frequency response. The effects measured here are just due to some kind of partial "re-dithering" of the signal, probably performed at some stage of kmixer software mixing. But it's not resampling.

As I said at a previous post, on some cards (not Revo) resampling will happen whenever you play a 44.1 KHz stream, or when you use waveout instead of directsound... it depends on the card and its drivers, but in better cards this resampling happens just when it's unavoidable (simultaneous playback of both a 48 and 44.1 stream, or lock of the sampling rate at 48 KHz).

So, the bit-mangling measured here, always, always happens when you play 44.1 KHz data on WinXP (and same seems to happen with Win2K), which is something that AFAIK Microsoft doesn't say. It can be avoided just if you use kernel streaming or ASIO audio interfaces, or your card supports hardware mixing (same as directsound acceleration) and it is enabled.

Note that Creative cards support hardware mixing and kernel streaming, but they internally resample all 44.1 KHz data, so in practice the result is probably even worse that if they use kmixer resampling.

My tests over kmixer effects

Reply #37
I understand that you need to use something like ASIO or kernel streaming to get bit-perfect digital output.  But what does it take to get bit-perfect recording from a digital input?  Can I use standard recording software?  Is there such a thing as recording from ASIO?  If so, what software supports that?  My Cool Edit Pro apparently does not.

Does the standard C-Media 8738 driver support bit-perfect recording, or must I use the DIO 2448 driver?

Jacob

My tests over kmixer effects

Reply #38
I already answered at the AVS thread. I did all my tests using regular Windows recording interface, and got bit-perfect results when using kernel streaming and ASIO playback  interfaces.

So, no ASIO recording is needed for bit-perfect playback.

My tests over kmixer effects

Reply #39
Quote
There's some evidence that using directsound acceleration (also called hardware mixing) does same thing as using kernel streaming, and enables getting bit-perfect output. However, I haven't been able to verify this, since my Audiophile card doesn't support it.

I've tested hardware mixing today on a Terratec DMX 6fire 24/96 and can't confirm this evidence.

I used foobar2000 v0.667 for playback and CEP2.00 for recording; OS is Win2k SP3, Terratec driver version is 5.00.2000.128.

Setting kernel streaming in foobar, recording in digital loopback was bit perfect. So, I concluded CEP was fine as a recording interface.

Then I selected Directsound, and ticked 'Allow hardware mixing'. In Windows Sound&Multimedia Settings, there's a Hardware Acceleration slider. I tried all settings. In the higher two, foobar reports 'Hardware mixing available, 33 streams total'. In the lower two foobar says 'Hardware mixing not available'. In both cases, loopback was not bit-perfect: spectrally flat 1-bit dithering was present (and dithering in foobar was disabled, as were all dsp's, ofcourse).

I found the same using Waveout.

My tests over kmixer effects

Reply #40
I suppose they just perform mixing/resampling at higher resolution (such as 32bit) internally, then downsample with dithering. Just like I would do if I had to design such thing.
Meh.
Only thing wrong here is that dithering shouldn't be happening when no mixing/resampling is done. Of course, dithering done properly should NOT be audible (ABX anyone ? I'm tired of BS talk about KS sounding "better").
Microsoft Windows: We can't script here, this is bat country.

My tests over kmixer effects

Reply #41
It depends on the card and its drivers.
TerraTec Aureon 7.1, for example, doesn't support hardware mixing,
but does provide bit-perfect playback of a single stream without it.
On the contrary, with Sensaura on, it resamples everything lower up to 48kHz,
even with Kernel Streaming. Only ASIO passes unmodified.
I could try to ABX Kmixer vs normal playback...
(it's easy to get this with my card, I can just use samplerate lock)
ruxvilti'a

My tests over kmixer effects

Reply #42
Quote
(ABX anyone ? I'm tired of BS talk about KS sounding "better").

True, but if SPDIF is your only means of getting something transferred to some other device, it would be nice to have no signal degradation, right?

My tests over kmixer effects

Reply #43
No sane engineer seriously takes the possibility of pushing non-PCM data through such system.
Would you want to sacrifice the performance of the mixer for all people doing regular tasks to correct "problems" some people are having with bit-exact playback ?
Microsoft Windows: We can't script here, this is bat country.

My tests over kmixer effects

Reply #44
The test was brain-damaged.
Mangled sample and non-mangled in my test were both bit identical.
How can I force Kmixer to mangle something without making it resample?
(which I've ABXed agains non-resampled sample)
ruxvilti'a

My tests over kmixer effects

Reply #45
Quote
The test was brain-damaged.
Mangled sample and non-mangled in my test were both bit identical.
How can I force Kmixer to mangle something without making it resample?
(which I've ABXed agains non-resampled sample)

Good Astralstorm, you shouldn't stay up so late. I can't make anything of what you're saying! The test was brain-damaged? Mangled sample was bit-identical - then it wasn't mangled, or?

Edit: uhm, never mind. I get it now. I shouldn't get up so early...

My tests over kmixer effects

Reply #46
External hardware decoding of 44.1 KHz PCM-encoded AC3/DTS-CD files is impossible thanks to kmixer bit-mangling.

My tests over kmixer effects

Reply #47
And, even when hardware directsound acceleration could avoid kmixer bit-mangling, it's possible that the soundcard does its own mangling of  the digital signal. That happens for example with Creative cards when playing 44.1 KHz data.

So, in practice, I know no card that take advantage of the directsound acceleration kmixer bypassing at 44.1 KHz, for this reason.

My tests over kmixer effects

Reply #48
That's because kernel mixer was designed to play sounds, not to let random noise get through untouched.
Microsoft Windows: We can't script here, this is bat country.

My tests over kmixer effects

Reply #49
Yes. But if I play something, I'd better prefer it being sent untouched to the DACs or digital outs than not. I agree it's not a big issue when just listening to music, but it can be under other special circumstances (measurements, data interchange, etc).

Edit: and it would be good too to shut people's mouths, you know.