Not yet actually. USB audio specifies synchronization endpoints that can be paired with isochronous one to give the host timing informations to adjust the rate of in/outgoing samples on the paired endpoint. I think that with some buffering (which could be made at block and at sample level) and using those synch endpoints, we could achieve seamless, lag-free usb streaming. The thing that worries me most right now is the routine that copies audio data and puts it in USB packets; I'd like to see a function that uses buffer pointers to create USB packets around existing buffers, rather than having to manually copy one buffer inside a packet. The USB module supports this kind of addressing with the Buffer Descriptor Tabel entries, and it already has DMA access to the table entries; having to manually copy data for every packet (which could happen every millisecond) is a big overhead. And, a new bdt handling could allow for dynamic, non fixed size packets. I'd really like to see something like a USB static class, with functions to create packets on the fly around a premade buffer (to avoid the copying overhead), to add these packets to in/out queues, but also with functions to set the contents of the descriptors to achieve the same degree of freedom given by the Audio lib inside the USB environment (to create specific audio functions on the fly). This is just a few of the things that should be made to get a nice USB audio lib, but this may take a very long time to get together.