hardware and software for electronic music 
Wed, Sep 21, 2016, 00:24

How exactly do USB audio interfaces interface with a computer? (specifically ADC)

I have seen the likes of M-Audio fast track and similar devices that somehow covert an analogue voltage audio signal to a digital data stream which you can connect via USB to your computer. If I open something like Garageband it just appears as another input without any special configuration. I am interested in building my own.

An example application would be; record guitar onto a computer software e.g. Garageband, Logic Pro etc.

I understand that there is a ADC (Analogue to Digital Converter) which will convert the analogue audio levels to digital.

What I am trying to figure out is, how does this interface with the computer?

All of these devices seem to work without needing specific drivers and such so, there I'm guessing there may be a specific protocol they all follow? I can't seem to find something exact.

If there is a protocol that they follow, does anyone have any info or any idea about this? Is this the same universal protocol that is used by the likes of USB audio speakers etc? Is this similar to SPDIF and the like? Is this conversion from output of ADC to USB data stream something which we can do, say, with a microcontroller?

I know that its much easier just to build an analogue preamp or the like to connect it to the audio input port on a PC but as I said, I am interested in how they make the USB interface.

Wed, Sep 21, 2016, 01:35

USB has protocols for various types of devices, if the device supports that protocol it is said to be 'class compliant'

there are quite a few, but the most useful ones for music are:

  • Audio Interface - as per this topic

  • Midi - USB midi

  • Mass Storage - appears as a 'hard disk'

the protocol details are all detailed on the usb specification pages:

I think midi and audio interface class compliance have become a lot more common recently due to iOS (iPads/iPhones) which are 'class compliant hosts' , and are also impossible to add propriety drivers... i.e. hardware devices don't have a choice if they want to support iOS