Head-Fi.org › Forums › Equipment Forums › Computer Audio › Vista's Sound
New Posts  All Forums:Forum Nav:

Vista's Sound - Page 2

post #16 of 55
Quote:
Originally Posted by zyxwvutsr View Post
how well would those diy dacs work with windows vista?
Just made a check: my Monica USB is recognized and working properly on Windows Vista.
post #17 of 55
Quote:
Originally Posted by Jigglybootch View Post
Well, let me explain a bit more. We're talking about the so called shared mode here, the equivalent of using DirectSound in XP. In XP you don't have a choice to select a global sample rate or bit depth. In Vista you can now.

A sound card cannot play multiple different sample rates at a time. It may be able to natively support more than one sample rate but that doesn't change that only one can be used at any given time.

So, why can you play material with different sample rates simultaneously? Because DirectSound makes the same thing as the shared mode in Vista: It resamples all sources to a common sample rate and sends the mix to the sound card. I'm not sure where the resampling takes exactly place (in DirectSound, in a "deeper" API of the OS, in the sound card's driver or in the sound card itself, but it must take place somewhere as it would not work otherwise.

So, what Vista gives you is the ability to select a sample rate of your choice rather than not having any control over this process like in XP.

If you want your "bit-perfect" playback you can still have it by using the so called exclusive mode where the sample rate of the source has to match a native sample rate of the sound card (because otherwise it would not work). The clear disadvantage of that is that other applications cannot output sound while the exclusive mode is used by another application. But the same applies to XP when you use ASIO or kernel streaming.
post #18 of 55
What player supports exlclusive mode? Does this work with all drivers?

If only one stream is playing in Vista and I have selected 44.1Khz with all DSP effects disabled. Volume at 100% for master and application.

What happens when playing a 16bit/44.1Khz stream? Why are the bits coming out the soundcard different from what I play?

Cheers

Thomas
post #19 of 55
The exclusive mode is used when you use ASIO or WaveRT (Vista's new low latency sound API). foobar2000 has an ASIO plugin and Winamp should also have one.

If the bits really are different then it should have something to do with the conversion from 16 bit integer (source) to 32 bit float (for mixing) and back to 16 bit integer (sound card). In that case rounding errors will occur and it's also likely that dithering is applied to counteract any harmonic distortions. But be aware that if you converted your CDs to MP3 or any other lossy format, the material already is in float and therefore it's advisable that you don't let the player convert it back to 16 bit integer values. I set foobar2000 to use DirectSound in Vista and set the bit depth to 32 bit. Vista is set to 24 bit.
post #20 of 55
Quote:
Originally Posted by Hancoque View Post
That you set a fixed sample rate in Vista is an advantage to XP because there are many sound cards that let you use arbitrary sample rates but in fact all these sample rates but one (48 kHz) are internally resampled by the sound card (to 48 kHz) and that most often in a very poor manner.
Yeah, but what if you have a sound card that actually CAN do all the rater sample rates in hardware without resampling, like the one I and many head-fiers have?

Bit perfect is not theoretical and it is much easier to attain in XP.
post #21 of 55
Quote:
Originally Posted by Hancoque
The exclusive mode is used when you use ASIO or WaveRT (Vista's new low latency sound API). foobar2000 has an ASIO plugin and Winamp should also have one.
I believe you might have mixed up things a little. The exlusive mode API is the Windows Audio Session API (WASAPI) and that is only being used by applications exlicitely written to it. The only one I know of is ntrack at this point but that is a recording app. ASIO works completely different and needs an ASIO driver. Some soundcards support this natively but there are of course some shim driver like ASIO4all that expose an ASIO driver to the system and in turn send that data to the sound card via kernel streaming.

foobar has a kernel streaming and ASIO plugin but these are not using WASAPI.


WaveRT is a new driver model for sound cards that complements the WaveCyclic and WavePCI driver models from XP. Unfortunately to gain the full benefit cards need hardware support and so very few drivers exist. To the end user there is no visible difference other than latency wich is not really an issue for playback applications.

Quote:
Originally Posted by Hancoque
If the bits really are different then it should have something to do with the conversion from 16 bit integer (source) to 32 bit float (for mixing) and back to 16 bit integer (sound card). In that case rounding errors will occur and it's also likely that dithering is applied to counteract any harmonic distortions.
That all sounds a little weird. For a single stream there is no mixing. Converting a 16 bit integer into a 32bit float (which has a 24bit mantissa!)is lossless. Dithering the top 16 bits in a 24 bit mantissa will not change anyhting either unless of course these conversions are programmed poorly.

You only dither when you reduce word length to smoothen the artefacts from that but that is not happening here at all.

Very few people on this forum do use mp3 or any other lossy compression. The question remains why Vista modifies the bits.

There must be something else ....
post #22 of 55
Quote:
Originally Posted by thomaspf View Post
That all sounds a little weird. For a single stream there is no mixing. Converting a 16 bit integer into a 32bit float (which has a 24bit mantissa!)is lossless. Dithering the top 16 bits in a 24 bit mantissa will not change anyhting either unless of course these conversions are programmed poorly.

You only dither when you reduce word length to smoothen the artefacts from that but that is not happening here at all.
If you convert 16 bit integer to 32 bit float and convert it back to 16 bit integer and apply dithering you surely have a different signal. Triangular dithering adds +1 or -1 to every 16 bit sample of the signal. And I think it doesn't matter if you have one sound source or 100. They all are processed the same.

Quote:
Originally Posted by thomaspf View Post
I believe you might have mixed up things a little. The exlusive mode API is the Windows Audio Session API (WASAPI) and that is only being used by applications exlicitely written to it.
Are you sure that ASIO and kernel streaming don't utilize WaveRT through a compatibility layer? When I use the kernel streaming plugin I cannot utilize audio in any other application. Also I have to take care of the proper sample rate inside an application for both ASIO and kernel streaming or I get an error that the sample rate is not supported by the sound card.
post #23 of 55
Quote:
Originally Posted by thomaspf View Post
Bit-perfect is a purely theoretical thing.

what do you mean by that? It is not theoretical for me anywhere expect for my Vista machines of course. I wager that very few people on this forum use sound cards that don't support native 44.1Khz. All HD audio chips seems to natively support 44.1, 48, 88.2, 96, 192.

The fixed frequency is a real pain in the ...
...
A logical way to do this would have been to switch the rate along with the stream being played and resort to some resampling frequency if the card being used does not support a requested rate.


Cheers

Thomas
That was the old method. One problem is you can't generally switch frequencies in the middle playing things. So if you have some output at a 22khz (feedback from somewhere, a windows sound, or whatever) and you start playing 24/99khz stuff, you don't want it resampled to 22khz which is what used to happen... not that it would tend to happen much.

For me the resampling is great because you can set the sound card to a high frequency and have everything resample to that. Many dac chips operate at a high frequency (192khz say) and resample anything else internally anyway, so you can send them resampled sound with a better software resampling method.

Simpler for drivers also. I know my sound card (E-MU 1920m) only copes with one sampling rate at once. You can't have 44khz playback through one analogue output and 96khz recording through the microphone in. Sampling rate needs to be set globally and manually. So having a fixed sampling rate coming from windows will really simplify things.
post #24 of 55
Quote:
That was the old method. One problem is you can't generally switch frequencies in the middle playing things. So if you have some output at a 22khz (feedback from somewhere, a windows sound, or whatever) and you start playing 24/99khz stuff, you don't want it resampled to 22khz which is what used to happen... not that it would tend to happen much.
Right, not that it happened much. It did the right thing for most of the time. Now it does the wrong thing the most of the time.

Quote:
For me the resampling is great because you can set the sound card to a high frequency and have everything resample to that. Many dac chips operate at a high frequency (192khz say) and resample anything else internally anyway, so you can send them resampled sound with a better software resampling method.
There is nothing great about upsampling. There is no DAC chip yet that does not have lower performance at 192Khz compared to lower bit rates and whether the resampling algorithm is in software makes no difference. You might subjectively like the euphonic distortions but the absolute quality is lower.

Sorry, but in my opinion this a lot of FUD. It's ike having the word processor change your text for youwithout asking. I just want straight out what I send in.



Cheers

Thomas
post #25 of 55
Quote:
Originally Posted by Hancoque View Post
If you convert 16 bit integer to 32 bit float and convert it back to 16 bit integer and apply dithering you surely have a different signal. Triangular dithering adds +1 or -1 to every 16 bit sample of the signal. And I think it doesn't matter if you have one sound source or 100. They all are processed the same.
Don't you think that is broken? You only use the top 16 bits in a 24 bit floating point mantissa and then you dither and randomly change the samples for the original 16 bit signal. So instead of reducing the effects of a truncation you effectively add distortion to a perfectly clean signal.

I am not sure that is the best way to implement that...

Quote:
Originally Posted by Hancoque View Post
Are you sure that ASIO and kernel streaming don't utilize WaveRT through a compatibility layer? When I use the kernel streaming plugin I cannot utilize audio in any other application. Also I have to take care of the proper sample rate inside an application for both ASIO and kernel streaming or I get an error that the sample rate is not supported by the sound card.
WaveRT is a model for implementing a sound card driver. Kernel streaming, WASAPI, and ASIO are application layer APIs for software players to playback music.

ASIO is from Steinberg and many pro sound cards have drivers that expose an ASIO top end directly.

If you happen to have a sound card that implements an WaveRT driver then all audio data sent via a WAV, DirectSound, Kernel Streaming, or WASAPI application will have to go through that. If your sound card driver happens to be a WavePCI driver than there is no WaveRT at all.

For ASIO applications it depends on whether your sound card driver exposes a native ASIO driver or whether you are using a shim like ASIO4all. As explained before ASIO4all looks like a native ASIO driver to the system but actually sends the data on via kernel streaming allowing many standard sound cards to be used with ASIO applications. See the paragraph above for the handling of kernel streaming.

Cheers

Thomas
post #26 of 55
Quote:
Originally Posted by thomaspf View Post
Don't you think that is broken? You only use the top 16 bits in a 24 bit floating point mantissa and then you dither and randomly change the samples for the original 16 bit signal. So instead of reducing the effects of a truncation you effectively add distortion to a perfectly clean signal.

I am not sure that is the best way to implement that...
I don't think it's broken because having only one source is a special case. In the case that two signals have to be processed it makes perfect sense again.

I don't exactly get what you mean by 24 bit floating point mantissa. Well, IEEE 754 states that the mantissa has 23 bits. Do you mean that an IEEE 754 float number can hold any division of a number from 0 to 32768 by the divisor 32768 without losing any decimal precision? In that case it would really be lossless. But if not then there would be rounding errors.

Quote:
Originally Posted by thomaspf View Post
WaveRT is a model for implementing a sound card driver. Kernel streaming, wik, and ASIO are application layer APIs for software players to playback music.
Well, then I might have misunderstood what WaveRT really is. I read this on Wikipedia:
Quote:
Originally Posted by Wikipedia
Windows Audio Session API - Very low level API for rendering audio, render/capture audio streams, adjust volume etc. This API also provides low latency for audio professionals through WaveRT.
That's why I thought that WaveRT is some kind of Microsoft's own implementation of an ASIO-like interface. I use Sonar 6 and I can have very low latency sound in Vista without using ASIO. I thought Sonar was using WaveRT to accomplish this because in XP using DirectSound introduced very long delays.

Quote:
Originally Posted by thomaspf View Post
For ASIO applications it depends on whether your sound card driver exposes a native ASIO driver or whether you are using a shim like ASIO4all.
My sound card has a native ASIO driver (Edirol UA1-EX). I think that explains why it behaves differently from kernel streaming (audio from other applications isn't blocked with ASIO).
post #27 of 55
Quote:
Originally Posted by Hancoque View Post
I don't think it's broken because having only one source is a special case. In the case that two signals have to be processed it makes perfect sense again.

I don't exactly get what you mean by 24 bit floating point mantissa. Well, IEEE 754 states that the mantissa has 23 bits. Do you mean that an IEEE 754 float number can hold any division of a number from 0 to 32768 by the divisor 32768 without losing any decimal precision? In that case it would really be lossless. But if not then there would be rounding errors.
IEEE floating point is a 23 bit mantissa plus a sign bit which makes 24 if you compare it to an Integer presentation where the highest bit is also used to store the sign of the Integer. You can indeed store all possible values of a 24 bit integer in a 32 bit float without any loss.

If you start with a 16 bit integer extend it into the sign bit and the top 15 bits of the mantissa, then reduce it back to 16 bits, the operation should preserve the fidelity and not uncessarily reduce it. You still have 8 additional bit to deal with mixing.

You should only ever apply lossy dithering if you can hope to achieve what dithering is meant to do. Reduce the artefacts of cutting the word lenght. If there is no reduction happening like when dithering a float with only the top 15 bit mantissa used to a 16bit integer then you should not reduce your signal to noise ratio by adding dither anyhow. This is simply reducing audio quality for no apparent reason.

Cheers

Thomas
post #28 of 55
Quote:
Originally Posted by thomaspf View Post
There is nothing great about upsampling. There is no DAC chip yet that does not have lower performance at 192Khz compared to lower bit rates and whether the resampling algorithm is in software makes no difference. You might subjectively like the euphonic distortions but the absolute quality is lower.
That sounds very odd. If the dac oversamples to that frequency anyway why would quality be reduced by feeding it that frequency? Any measurements of oversampling dacs to show this? It seems illogical.
Quote:
Sorry, but in my opinion this a lot of FUD. It's ike having the word processor change your text for youwithout asking. I just want straight out what I send in.
But what is sent in is a a digital audio file, and what is sent out is analog... that is what we are talking about I think.
post #29 of 55
@thomaspf: What I wanted to ask you the whole time is: What difference did you exactly measure and how? Did you connect a digital output to a digital input? What does the difference show? Is it just dithering? Can you provide me with a test sample?
post #30 of 55
Quote:
Originally Posted by CSMR View Post
That sounds very odd. If the dac oversamples to that frequency anyway why would quality be reduced by feeding it that frequency? Any measurements of oversampling dacs to show this? It seems illogical.
I don't know about illogical but here are the DNR plots from the AD1955 with 96Khz and 192Khz source signals. Whatever upsampling DAC do to process the signal before they feed it to a D/A converter in the end almost all DACs use standard chips and are limited by their abilities.

http://cid-9798175bc4b358d7.skydrive.../Public/96.JPG

http://cid-9798175bc4b358d7.skydrive...Public/192.JPG

Dynamic range is reduced with a 192Khz source. Dan Lavry made some comments about that on his forum a while back. He found highest performance with current generation chips to be at 96 Khz.

Quote:
Originally Posted by CSMR View Post
But what is sent in is a a digital audio file, and what is sent out is analog... that is what we are talking about I think.
Not quite. In my case we are talking about the path from a CD to a digital output on a sound card. Somehow I can't get out what I read from a CD and that does not seem right. To pick a better comparison its like loading a picture from the WEB and someone is making slight changes to that picture before I get it.

Cheers

Thomas
New Posts  All Forums:Forum Nav:
  Return Home
  Back to Forum: Computer Audio
Head-Fi.org › Forums › Equipment Forums › Computer Audio › Vista's Sound