At Absolute Software, we have successfully completed many USB projects ranging from simple HID USB devices, through to complex USB DJ mixing desks with audio, MIDI and control data over USB.
USB programming has become very straight forward these days. There are so many choices in silicon that allow for cost-effective solutions for any design. Keeping Bill-of-Material and design costs to a minimum.
In USB programming there are two sides to consider: how should you implemented the embedded device and what drivers should be used at the PC/MAC end?
The PC/MAC drivers have become much simpler over the past few years and the operating systems (Windows and MAC OS) have continually been extending their support. This means (provided you don't need to support old operating systems) that most hardware does not need a driver disk. Most hardware can now use standard drivers that have come with the operating system. Although this only holds if there are no special requirements.
For example, when we did the USB programming for the DJ mixing desk, it was very important to have very low latency on the audio stream. In this case we needed to use ASIO drivers at the PC/MAC end.
At the embedded end of your design, there are are so many choices for the USB programmer. Because there are so many choices, it is very important that you are clear on your requirements before you start.
FTDI chip provide the simplest solution. Their technology allows you use just a standard UART on your embedded processor. FTDI chip provide all the drivers for the PC/MAC end, so you simply don't need to worry about that. If you are new to USB, this is such an easy solution.
Microchip provide the lowest cost solutions. They processors with USB 2.0 built-in starting for as little as $2.99. These PIC processors would be perfectly adequate for most applications.
Texas Instruments provide some low cost USB audio products, such as the TUSB3200A. This provides four stereo audio streams over USB, in one low cost package.
Cypress provide some cutting edge silicon, including high speed USB and some highly integrated processors. These processors provide the USB programmer with the latest options, including USB OTG (On-The-Go) options.
Maxim provide some nice SPI USB devices, which provide another option for OTG (On-The-Go). On-The-Go allows an embedded device to be a USB host. For example, it allows a USB camera to print to a USB printer. OTG is a cut down version of USB making it feasible to make low cost USB host devices.
With this wide selection of silicon available
make USB programming so much straight forward than just 5 years ago.