Tim, Robert, and Jerry Many thanks for your replies, and sorry for my slow response. I will do some more research and see if I can get away with not having to write a driver, otherwise I may be back with some more questions. Regards, Daire On Fri, Jul 2, 2010 at 2:56 AM, Jerry Evans <jerry@xxxxxxxxxxx> wrote: > Hello Daire > > I think you've got a classic need for compromise here :) > > Assuming your USB device is playback only .... > > Streaming using KS from user mode on XP will give you ~10ms latency (best > case) with the XP driver. However I don't think you'll get anything more > than stereo working. Not sure the XP class driver groks multi-channel > hardware. Certainly did not work back in '05 with custom 6 channel board > here. H/W worked with OSX ... > > USB performance is, I believe, much better on W7. Recent postings in this > group indicated you can reduce USB bus latency to 4ms. Favourite would have > to be KS as well for compatibility. > > As Tim has pointed out, ASIO4ALL provides an industry standard (and simpler) > API for any Windows compatible hardware. Performance is good and Michael may > still be amenable to bundling if modestly rewarded. Not sure if XP > multi-channel limitations apply as faults we encountered may have been > problems with my KS interface. > > All of that said, there are a couple of other options. If your hardware uses > Cypress parts (for example) you can use their own driver with which you > could implement your own device communication. On XP and W2K (why?) you > might get better performance than the in-box driver, esp. with multi-channel > audio, but probably not on W7. There are also 3rd party USB drivers from > outfits like this: http://www.thesycon.de/eng > > I'd strongly recommend *not* writing anything from scratch unless you want > to turn the project into a career. > > Clearly YMMV considerably. It's unclear whether your project is > research/commercial/consumer? with your own hardware or third party? level > of price sensitivity? All will clearly impact the decision making process. > > Finally 20 ms is *not* low latency. It is easily heard when monitoring a > recording or playing software instruments. > > HTH > > Jerry > > On 01/07/2010 13:42, Daire O'Neill wrote: > > Hi Tim, many thanks for your reply. > > > > > ASIO also operates like this for low-latency, does this mean that ASIO > is essentially an audio driver that follows the WDM-KS format? > > > Well, not really. ASIO is mostly a user-mode framework. It allows > applications to bypass the intermediate layers and talk directly to the > manufacturer's audio driver, much like DirectKS. An ASIO "driver" is a > (thin) user-mode wrapper around an existing kernel-mode driver. It > would be possible, I suppose, to create a separate kernel-mode driver > that pairs directly with an ASIO driver, but to my knowledge no one does > that. > > > > DirectKS is an API that can be used to write kernel streaming drivers, > with similarly low latency to ASIO. > > > No. DirectKS is a user-mode API that allows applications to access > kernel streaming drivers. It is not used to WRITE kernel streaming drivers. > > > So, I need to write a "wrapper" around the existing kernel-mode driver > (eg usbaudio.sys), possibly > using the DirectKS API? How does DirectKS relate to the AVStream class? > > The DDK docs mention that WDMAud.sys performs I/O for the WaveIn / Out > APIs, so I can use > those APIs to send audio directly to the driver kernel? > > > > > Nothing. If your device meets USB Audio Class, you don't write > anything. Microsoft provides usbaudio.sys, and ASIO4ALL provides the > ASIO layer for ASIO applications. > > > However, doesn't this assume that the end user will have ASIO4ALL installed? > What if I want my hardware to operate independently of ASIO4ALL, then > I need to write a > "wrapper" driver similar to ASIO4ALL, as mentioned above? > > > > > USB audio device manufacturers don't write drivers. > > > Really? Even in the absence of an ASIO4ALL driver on the users PC? > What about for pro-audio products, which is what I am developing for? > For example this company provides their own USB drivers: > http://www.esi-audio.com/ > > I have read the same as what you are saying from the DDK docs: > "When an audio device identifies itself as USB Audio-compliant > during Plug and Play device enumeration, > the system automatically loads the USBAudio driver to drive the > device. USBAudio drives the device directly, > without the aid of a proprietary adapter driver. This means that a > device that complies with the USB audio specifications > requires no proprietary adapter driver." > > But, if thats the case, why do companies such as above provide > drivers? This confuses me, so if you could explain it would be great. > > > > > Up to this point, you have not defined what "low latency" means to you. > > > I'm estimating about 20ms. > > Could you recommend the most sensible way to approach writing for multiple > OS, > namely Win2K, XP, Vista, 7? I would like to re-use as much code as possible. > Do you think 6 months is a reasonable estimate for development time? > > Many thanks, its really appreciated. > > Daire > ****************** > > WDMAUDIODEV addresses: > Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx > Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe > Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe > Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx > > URL to WDMAUDIODEV page: > http://www.wdmaudiodev.com/ > > > ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/