My post was just for someone looking for this info can find it useful, and tried not to be too technical at all. If it had some incorrect info, I apologize. Given that I still think architecture makes a difference.
Quote:
| Except that you can. With ASIO4ALL you can handily bypass the Windows mixer. And applications can use the new audio APIs in Windows Vista to request exclusive use of a device which also bypasses the Windows mixer. And there are other kludgy ways to get around the kmixer if you don't have Vista. |
That's right, and that's one of the reason you'd use ASIO.
Quote:
| And mixing by itself doesn't degrade the sound terribly much - I bet most would be hard pressed to detect the difference in a double blind test. |
Yes I agree by itself its not. But its the win kmixer w/ it's inferior algorithm that degrades the sound, not the act of mixing it. Otherwise there are no need for ASIO.
Quote:
| And BTW, the Windows HAL is a different beast than the audio device drivers that talk to audio devices (but that's probably getting too deep). |
Correct me if I'm wrong, but the Hardware Abstraction Layer is the API that calls the audio device driver, and beside the team in Redmond who design the audio portion of that, no one else know the true performance of that piece of layer. ALSA, OTOH you can dl the source in 30 mins and trace the whole signal path if up for it.
Quote:
| Windows has 32 priority levels underneath, 16 of which are kind-of reserved. Yes, you can only specify SIX different levels through the UI, but you can specify all 16 (or 32) programmatically. And Windows does a fairly decent job under most circumstances of dynamically modifying priority levels in response to user input so that UIs remain responsive without requiring the app presenting the UI to remain at a permanently high priority. Yes, there are situations where it doesn't do what you want - but the same applies to Linux (I say that after waiting 20s for my MythTV box to skip ahead 30s during video playback last night.) |
I was incorrect in pointing out the "user priorities" in the first place as it does not matter in audio anyway. (And I'm forturnate enough to only needed to touch the spaghetti API MFC for couple projects.)
So lets focus on the audio signal path. The 16 priority are your APPLICATION's priority, once it's handed to ASIO (which you can set its own priority, thank god), it gives to HAL->drive->device. Now if someone beside the guys from Redmond can tell us how the kernel's scheduler instruct priorities of the audio stream through this part of the pipe without a lawsuit, we can then know how good it is.
OTOH, I can tell you the current 2.6 kernel is using the "complete-fair scheduler"(creative isn't it...) that is assigning the priorities between the ALSA and the device drivers (it does go through the kernel), and anyone+world+dogs can find out how it assign the priorities regarding the audio streaming from the app to the ALSA, and from the ALSA to the driver, pretty much the whole pipeline.
(As for MythTV, I totally agree the user app stacks of linux is still short of windows, but that's not the issue here, plus players can/will only becomes better.)
Quote:
| It depends which process is generating that signal, because that process has to feed data to ALSA at a reasonable rate. Renicing that process would indeed have an effect. |
The "process" you said. I believe you mean the app or thread. 95% of the code (say amarok) running in the memory have absolutely nothing to doing with feeding data to ALSA, they're busy showing GUI, spawning processes under this same thread to read/write the disk, loading codecs. etc etc. If this is a pure audio server, then that's no problem, like previous post from LnxPrgr3 said, just get the audio earlier. Most users however got other things running, and my post just wanted to point out to others that they need to understand how players don't actually play out the sound, it's the ALSA that play the sound. And sure I'd nice it -11 if I'm building audio server. This is a difference concept than in windows, where u boost the heck out of anything that touches the signal path.
Quote:
| And if you don't do that, you have a mixer enabled - just like Windows! |
Yes again you're right, the dmixer. But like the creators of ASIO and your post said, the mixing itself does not degrade the sound. It's the method/code they use that degrades it. And I'll take the dmixer code anyone can see/test, and has been through scrutiny any day.
Quote:
| It's simply not true that the architecture of the OS is what makes the difference - it's the configuration of the audio stack and apps! |
True. You can achieve the same goal with both, and I never said windows cannot anywhere.
But when I read from other people's posts, seems they were applying windows apps notion in Linux (boosting priorities, inserting extra layers of API/app to get extra performance), which to me does not work the same.
I mean some posts still asking ASIO in Linux, because they never understand why ASIO exist in the first place (a bug fix, bypass). To me Linux simply is more straight forward, overall less cluttered, more scrutinized, thus no need for all the tweaks/hacks in windows. Read first line of my post, that was my post's only intention :
"From this thread it seems alot of people misunderstand the architecture between windows and Linux." and the last "
I believe Linux gives you the shortest path, with highest priority handling of signal in audio without much tweaking"
To me in Linux, you install the OS, config your ALSA, disable the dmixer,
BAM....you are done, and use any players you like, and get the best sound possible.
And if someone telling me architecture does not make a difference in term of...anything...that happens in a computer. Well, that's fine too, I'll forget whatever I learned from college CS301_computer_architecture class, and pick the one that has spinoffs in NASA, NSA, real-time OS, cellphones, medical devices, and carrier-grade routers over a blue screen (did they change the color in vista?)....
