Jeff Meng, Paul Sliwowicz, Gerald Maffeo - IO Cancellation

Great video, really.
I have a question though. Do third party applications appear in the volume control window ( like WMP)? I mean, if you download RealPlayer (annoying today, since it controls the system volume), does it appear in the list?
gaelhatchue wrote:Great video, really.
I have a question though. Do third party applications appear in the volume control window ( like WMP)? I mean, if you download RealPlayer (annoying today, since it controls the system volume), does it appear in the list?
gaelhatchue wrote:Great video, really.
I have a question though. Do third party applications appear in the volume control window ( like WMP)? I mean, if you download RealPlayer (annoying today, since it controls the system volume), does it appear in the list?
Minh wrote:Interesting stuff! I wonder if per-application sound driver works the same way as DirectSound where an app is given a virtual buffer to stuff sound data in. But there is still a system-level driver that mixes all the application-level buffers for the sound card.
Manip wrote:I'm sure I guessed per-application volume control, I might have posted it here or on Larry's blog.
Looks very cool.
Quick Question: if I have an application, I set it on mute, then I exit the application, restart, reload the application will the OS remember my mute setting? I am just thinking about stopping flash animation in my browser from making ANY sounds.
mycroft wrote:One potential issue that I see is that an application will have its volume control and Windows will also have its own separate volume control associated with that application which could potentially make things even more confusing unless the two are linked together bidirectionally. I don't know if you could force an application to change its internal volume level when adjusting it from the windows volume control.
Another thing i'd like to see is improved microphone callibration so you don't have to fiddle with the mic and line in levels manually, and perhaps support for changing audio ports between input and output. Hopefully they bring in all the features that are now included in the numerous crappy sound card control panels that come with the hardware into Windows itself so I can do away with those altogether.
Very cool. But kinda glanced over the API stuff. I see a need to raise the bar for audio for the .Net developer. Say I want to create a ~simple DJ app that has at least two mp3/wma streams. So I need to be able to manage and mix the two streams, have
cue points, some kinda event callbacks to update the audio graph with fine detail. Simple way to enum and select ouput devices and input devices, etc. So simple Load() and Play() on a Media player control does not really cut it anymore. Is the API going
to be "at least" this rich for us for .Net? Thanks much.
--
William Stacey [MVP]
cregdan wrote:The sound arch was moved from kern to user, will that slow it down any?
staceyw wrote:Very cool. But kinda glanced over the API stuff. I see a need to raise the bar for audio for the .Net developer. Say I want to create a ~simple DJ app that has at least two mp3/wma streams. So I need to be able to manage and mix the two streams, have cue points, some kinda event callbacks to update the audio graph with fine detail. Simple way to enum and select ouput devices and input devices, etc. So simple Load() and Play() on a Media player control does not really cut it anymore. Is the API going to be "at least" this rich for us for .Net? Thanks much.
--
William Stacey [MVP]
AIM48 wrote:Are you going to have a per application sound meter?
Thanks for fielding these great questions, Larry. Quick reiteration:
1. per-app metering: coming for RTM
2. all apps currently playing audio: show up in App mixer
3. slider interactions: up to the app to manage
4. mic controls: ideally, user never needs them! we're working on this.
And this is only part of the story. The old 'Sounds and Audio Devices' CPL is also being re-written from the ground up. You'll see this in B2, and perhaps again here on Ch9 when we're ready to show off the rest of our Audio UX work.
In addition, we did a review w/ JimAll and MFreed a few weeks ago, and we are going to be going back to vertical sliders (vs. the horizontal sliders shown in this early B2 build.)
I did feel bad after Robert left becasue I realized we only mentioned the names of a small fraction of the people who have contributed to our User Mode Audio (audio engine), Universal Audio Architecture (class driver), Device Topology (allows device management
via 'endpoints' like actual speakers and microphones), and 'Flat Volume Control' over the past four years.
For the record, in addition to myself, LarryO, StephSm, and NoelC in this video, here are some other names of those who've contributed immensely to this multi-year effort: FrankYe, DennisFl, TrudyC, MartinP, KirkSc, AnnetteC, MitchR, AlexGoye, HakonS, AlperS, StRowe,
SSwensen, JHoekman, JHudak, ClintonH, BrentM, PMac, JoeNunn, MSavage, AlexGrigg, ElliotO, PBaudisch, JPruitt, TjeerdH, JKundsen, and HillelC.
And, I'm sure I'm still leaving a few people out.
* * *
staceyw wrote:Very cool. But kinda glanced over the API stuff. I see a need to raise the bar for audio for the .Net developer. Say I want to create a ~simple DJ app that has at least two mp3/wma streams. So I need to be able to manage and mix the two streams, have cue points, some kinda event callbacks to update the audio graph with fine detail. Simple way to enum and select ouput devices and input devices, etc. So simple Load() and Play() on a Media player control does not really cut it anymore. Is the API going to be "at least" this rich for us for .Net? Thanks much.
Tom Servo wrote:
staceyw wrote: Very cool. But kinda glanced over the API stuff. I see a need to raise the bar for audio for the .Net developer. Say I want to create a ~simple DJ app that has at least two mp3/wma streams. So I need to be able to manage and mix the two streams, have cue points, some kinda event callbacks to update the audio graph with fine detail. Simple way to enum and select ouput devices and input devices, etc. So simple Load() and Play() on a Media player control does not really cut it anymore. Is the API going to be "at least" this rich for us for .Net? Thanks much.
Wouldn't you want to use Managed DSound in this case, anyway?
--edit: Not to rain on anyone's parade, but why was that WAVE stuff required for audio? I've yet to see an audio application glitch, outside scenarios like a hardware driver or failure temporarily locking up my system. If an audio application was shitty playback code, no system side code will fix it.
Manip wrote:Sorry, I thought of another question... This question is admittedly unfair (because it has little or nothing to do with the audio stack) -- I have a 'mute' button on my keyboard, the default action for Explorer (without a driver installed) is to mute the system audio, will it be possible to change this to mute the "in focus" audio stream though the use of something like TweakUI?
And, if I have three applications loaded, all with windows, am I correct in assuming at only those that use the audio sub-system are listed at the time in the volume control? Interestingly however it is setup it is a royal pain, if you don't list everything that means you can't preempt things like Internet Explorer that fire sounds depending on the content, and if you *do* list everything it is a cluttered interface. In either case I'm writing a UI bug report for the beta 2
LarryOsterman wrote:As I said, I think we've covered everything
Manip wrote:Sorry, I thought of another question... This question is admittedly unfair (because it has little or nothing to do with the audio stack) -- I have a 'mute' button on my keyboard, the default action for Explorer (without a driver installed) is to mute the system audio, will it be possible to change this to mute the "in focus" audio stream though the use of something like TweakUI?
Great questions - all fair. We've considered the idea of 'audio focus' but find that it is simply too subjective for us to assume we know what that is at any given time. This is one reason we built the per app mixer WITH a single, always pinned "Windows Sounds" slider through which we route all system and app registered sound events so that users can set their mix preferences (in real time) between apps and all other notificiations and system sounds.
Regarding a request for a powertoy to customize mute (and or other vol behaviors): not a bad idea, and since Larry is also likely reading this, we'll discuss and consider what some useful powertoy settings might be, and see what Raymond thinks.
There is more subtle complexity in this UX than most people realize at first glance, especially when you consider multi-device scenarios, even simple ones like speakers + headset (not to mention all of the multi-streaming scenarios made possible by our new audio class driver. We're still studying these multi-device scenarios, and frankly, I expect some churn during B2 as we get usability feedback from many people who will certainly have many diverse wishes, intentions and scenarios than we have anticipated thus far. That said, this default UX is designed and optimized with one primary scenario in mind: let me adjust the relative mix of only those apps that are currently playing audio.
And, if I have three applications loaded, all with windows, am I correct in assuming at only those that use the audio sub-system are listed at the time in the volume control? Interestingly however it is setup it is a royal pain, if you don't list everything that means you can't preempt things like Internet Explorer that fire sounds depending on the content, and if you *do* list everything it is a cluttered interface. In either case I'm writing a UI bug report for the beta 2
JChung2006 wrote:It's funny -- if you think about it, the per-application volume control is like the audio equivalent of Vista glass.
Hello everybody!
I have a user case (my case) for you:
In the evening and even at night I use my computer to play music till certain time (like radios sleep function). Then the computer will be shut down so I can take it with me to work/university in the morning. And it is extremely important for me to have
the sound muted when I start the computer there (I shouldn't disturb others with sounds). So I wrote an application that works almost like any other timed shutdown programs with an option to mute sound before shutting the computer down. The program is freely
available on the web and has proven to be very popular in Estonia .
Now can I use the same kind of functionality in Vista? And will it be difficult to port this application to Vista or will it work without modifications? I guess modifications will be nessecary as otherwise the program would mute just itself.
Siim Karus
androidi wrote:All I want is easy playback of music through loudspeakers/hifi equipment, while making it easy to redirect every other sound except the music come through headphones. For example I could be playing music file, and watching channel 9 video interview. I'd like the interview video come through headphones in this case. Or it could be a voip call. Of course this needs to be easy to change so if I am watching a movie I want that to use loudspeakers and not the headphones.
BenZila wrote:Nobody notice the Mac box
Tom Servo wrote:Since the audio guys are monitoring the thread right now, I was wondering if KS runs in usermode, too, now. Just asking because I'm trying to figure out why DSound based playback glitches like hell under stress while KS based playback does just fine.
LarryOsterman wrote:
BenZila wrote:Nobody notice the Mac box
Why? Is it somehow surprising that people at Microsoft have Mac's in our offices?
LarryOsterman wrote:
For example, how do you express that audio from videos rendered through the WMP OCX should go to the headphones, while audio from WMP should be rendered through the desktop speakers without involving the application in the discussion?
BenZila wrote:
LarryOsterman wrote:
BenZila wrote: Nobody notice the Mac box
Why? Is it somehow surprising that people at Microsoft have Mac's in our offices?
Why do you have it stapled to the wall?
Anyway, heres a serious question.
What about legacy drivers? Will they all just stop working? Or how will they retain compatibility?
LarryOsterman wrote:
BenZila wrote:
Why do you have it stapled to the wall?
Anyway, heres a serious question.
What about legacy drivers? Will they all just stop working? Or how will they retain compatibility?
Oh, why is it on the wall? You'd have to ask Steve
Legacy drivers should work, but they won't necessarily be glitch resistant.
Fun video. Nice work again, Robert, and congrats to the audio team. It was interesting to see different personalities walking into and through the interview.
Funny edit at 45:30:
Scoble: "Anything you want to tell developers about the new API?"
Larry: "Hopefully nothing changes. That is really truly our intent. That if you are using the existing API that your experience won't be degraded significantly."
[EDITED OUT MATERIAL]
Steve: "I'll take a crack at that..."
LOL. Gotta love impromptu videos.
LarryOsterman wrote:
androidi wrote: All I want is easy playback of music through loudspeakers/hifi equipment, while making it easy to redirect every other sound except the music come through headphones. For example I could be playing music file, and watching channel 9 video interview. I'd like the interview video come through headphones in this case. Or it could be a voip call. Of course this needs to be easy to change so if I am watching a movie I want that to use loudspeakers and not the headphones.
It turns out that this is a scenario we've considered. It turns out that it's somewhat harder than you'd think, we've made some significant steps towards this for Vista, but it requires that applications opt-in to the functionality (it's unfortunate, but there are limits to how smart we can make the system, some of what you're asking for is a determination of user intent).
For example, how do you express that audio from videos rendered through the WMP OCX should go to the headphones, while audio from WMP should be rendered through the desktop speakers without involving the application in the discussion?
Today many computers have several audio outputs. On my machine I have my 5.1 audio, and one sound card out going to the kitchen and bluetooth headset. Is there any simple possibility to control the outputs from the different programs to different cards in vista? I control it via the programs or change default sound device today.
staceyw wrote:Very cool. But kinda glanced over the API stuff. I see a need to raise the bar for audio for the .Net developer. Say I want to create a ~simple DJ app that has at least two mp3/wma streams. So I need to be able to manage and mix the two streams, have cue points, some kinda event callbacks to update the audio graph with fine detail. Simple way to enum and select ouput devices and input devices, etc. So simple Load() and Play() on a Media player control does not really cut it anymore. Is the API going to be "at least" this rich for us for .Net? Thanks much.
Great video and replies, and it looks like many of my "but what about..." questions are already answered. So I'll just have to make a request instead. What are the chances of getting audio setting snapshots? By this, I mean that I can have a couple
of different snapshots where particular settings are tweaked, and I can jump back and forth between them.
Let's say that I'm on my work machine. Sometimes I'm listening to music as I'm coding, and that's ALL that I want to hear-- nothing else. Sometimes I'm listening to a #9 video, and I wouldn't mind hearing various small notifications (IM, email, etc.). Sometimes I just want notifications, but I'm browsing noisey websites (and thus want to turn off browser audio). It would be nice to have snapshots of these different settings that I can select at a glance, rather than tweak a bunch of different settings (and miss many that hadn't run in the last 30 seconds) if I want to go between different "modes".
Thoughts?
Cheers guys!
The reason for question 1 is that sometimes your listening equipment is not up to par, and you want to compensate for this by using eq. Not all programs have the same possibilities here, hence a system wide control of this would be much better.
I agree, this would be a nice feature to have. It's very similar actually to the Power Schemes used for laptop and tablets. You can set the different settings such as turning off the monitor and hard drives or going to Stand-by. I'd very much like to see this feature added!object88 wrote:What are the chances of getting audio setting snapshots? By this, I mean that I can have a couple of different snapshots where particular settings are tweaked, and I can jump back and forth between them.
Are there going to be new featuers in Vista that would allow me to pipe audio out of one application directly into another .. sort of like virtual patch cables from the "output" of one app to the "input" of another audio app.
Many audio production and recording applications use ReWire to accomplish this - each application has to be ReWire aware and the applications act as ReWire hosts or ReWire clients or both. Will the OS support something like this natively?
Glad to see what I've seen so far.
Steve Ball is a great. You can hear the years of experience he has. I like when he talks from a general user perspective. I also agree when he says that MS should be carefull using PR-Speak ('glitch-free'). Steve and Larry talk about things everybody as
a user has experienced (incl. Bluescreens, Hang-ups, etc), so "per-app-volume" is a huge step that adds to the user-xp(erience).
It must have been hard to convince the kernel-team to give audio the low-level-priority-access they need for high-quality audio. Not only pro-audio-customers will be excited.
thx for the video - and BTW, the sound was ok
Just catching up to these threads and questions... It's been a busy time in Building 50 lately. So... "why is there an OSX box stapled to the wall in the hall outside my office ?" What a strange question? Is it not obvious?
Here's one answer (among many): inspiration and motivation.
Let's face it: many things that Apple has done recently have been beautiful and well-executed. Certain products, like certain people, have an intangible charisma which, in itself, can be a source of energy and inspiration. This cannot be
captured in a spec - it is something that is transmitted via direct experience. Hanging this box is not about copying features or parroting an existing set of functions (as vulgar "Redmond, start you copiers" banners have proclaimed in the past)
although, those are easy assumptions.
Whether you love or hate Microsoft, the fact is that, there are hundreds (if not thousands) of innovations, insights, and brilliant ideas, designs, and products born within Microsoft people and teams every year, a fraction of which make it (often without
high-falutin' theatrical press events or magic shows) into the huge line-up of MS products. If find it rather naive to assume that engineers or artists who are educated in technology or arts should intentionally avoid exploring the products and aspirations
of the opposite brain or competitors or explore areas that appear to be outside of that which we like or dislike to avoid 'noise' or 'pollution' or influence or ideas that challenge our own sense of value. Okay, that sentence was a mess. Let me try that
again.
I want to experience and be influenced by and inspired by all that is beautiful, graceful, elegant and excellent in the world - including people and/or products who one might assume are our 'enemies' or competitors. Even the idea of 'enemies'
is sooo 'chair-throwingly' 90s and out of tune with what is required for long-term, sustainable success. The world is a huge place, and the quantity and quality of opportunities are only increasing as we continue to mature as a world society of
billions and billions of network-conected, media-based people. Is there anyone alive who is not inspired by the absolute magic in the possibility of a 50" plasma HD home theatre connecting them to every person, meeting, genius, book, lecture, concert,
film, song, class, thought or media event that has ever occurred or is occurring right now? Okay, there may be a few monks who prefer to practice their meditation or run symmetrical scales on their guitar in the corner rather than jack-in to these streams. We're
surrounded today by so many mundane miracles that we've become numb to the incredible options we have at our fingertips as we sit at these hypnotizing screens.
While, 'getting there first' may have some buzz, biz, and brand value, it's only a small fraction of what really matters. Who reading this believes that there is no one at Apple who runs or owns a Windows machine, smartphone, xbox, or whose
lives are never ever touched by any MS product? More importantly, don't you want us (in Redmond) to learn from obvious examples of excellent product design? Of course, we all have to be extremely careful about IP. But those concerns are orthogonal to the
idea that inspiration is, itself, a virus worth passing to your friends and neighbors.
* * *
So, coming back to the first question: "why is there an OSX box stapled to the wall in the hall outside my office ?" Here's one more shorter answer: last year, I went to the Apple store and bought a G5 with my own money. I use a Mac at home for
my own music work. I've been recording music on Apple machines since 1992. I also work in parallel on music on Windows machines. I live in both worlds. Until late 2001, there was not sufficient will (read: defensible business justification) within MS to
address Windows audio and video performance, quality, fidelity, latency. We are now in a different landscape.
In my self-acknowledged, kool-aid driven view, it is the beginning of new era for Windows Audio and Video. Perhaps more precisely, it is also the beginning of a new era for Windows users (consumers, prosumers, and pros) who wish to work and
play with audio and video in their daily lives. Certainly, we also still have a long, long way to go. Perhaps, not as long as we think if you believe Ray Kurzweil. But what a great time to be alive and working in this medium.
* * *
I'll keep it simple. Thank you! I hope it can be kept separate, i.e. Music/Windows/Nonfictions/Programs all have sound controls. That would be great!
Putting a slider in each app:
a) is not practical - does not work for legacy apps, and certainly would never be done in a 'discoverable' way in all apps that make sound
b) would be confusing because app volume controls are not standardized - where do users look for slider and mute control in 10,000 different apps that make sound?
c) does not actually solve the real problem this UI solves: quick mixing of levels between apps that are currently playing sound
-- this design enables two simple problem solving scenarios in one, easy to find, always-on place in the Windows desktop: set 'Windows Sounds' level relative to the other app that is playing audio, and 'set App A level compared to App B' level.
* * *
We occaisionally hear about users who claim to regularly use more than two or three apps at a time that are all simultaneously playing audio. This UI is not designed for fringe cases where users are playing audio consistently from more than 2 or 3 apps at
once (ex. someone who needs a professional mixing console.)
This UI is meant to be a quick means of solving common 'desktop' volume problems in real time without requiring apps to 'opt in' or do anything -- Vista does the heavy lifting to make it easy for even novices to quickly customize the relative level settings
between apps.
* * *
I've quite amazed by the new audio stack,
though,I miss :
* to be able to output to my both soundcards at the same time ( thinking about playing same music for different rooms connected to speakers and HIFI amplifier )
* use a per display based sound config so if I move wmp on my video projector it outputs on the hifi amp and if wmp is on my lcd screen, the sounds pops out of desktop speakers.
* Control of surround (PRO LOGIC 2, AC3) so I can get the center chan on center when I'm using spdif output with my audigy 2 zs (no ac3 live encoding) or the nforce live ac3 encoding. Though I'm not sure it's windows dependant.
In Vista, is there a way to programmatically or through the registry set the sound device for playback . In XP, you could set the SoundMapper registry setting “Playback” key to the name of the device you wanted the program to use as long as you set it before program startup. Once the program started, you could set the “Playback” key to a different device and have all the other applications use that device. This helps keep sound secluded for recording audio calls and things of that nature.
The only caveat is that you couldn’t use the mmsys.cpl to reset the device otherwise the program would default back to the device you set it back to once the program stopped outputting audio.
Does anyone know if there is a registry key or a programmatic way (as long as it doesn't reset all other applications to that device) in Vista that will do the same thing as in XP?
Thanks,
John
I just found this on the web. Very cool video with a large amount of cool information.
Ok, i just bought a brand new computer and put windows vista on it
I am using the program Ventrilo and i cannot use a microphone to talk, in a short question how do i use a microphone with ventrilo in windows vista. I can hear in this program but i cant talk.. please help im getting frustrated